自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(63)
  • 收藏
  • 关注

原创 AI Agent需要什么样的数据库?

Databricks 在 2025 年 5 月 14 日正式宣布以 10 亿美元收购开源数据库初创公司 Neon[1][2],它的产品是一款兼容 PostgreSQL 的 Serverless 数据库。Neon 的 slogan 是 “”,其最初的目的是为应用开发者提供一个低成本、开发高效的数据库底座。回顾 Databricks 近两年的收购策略,Databricks 正围绕其 Data + AI 战略迅速补强 AI 短板,所收购的产品已几乎可组成一条完整的 AI 工作流水线。

2025-06-02 23:08:38 975

原创 走技术路线需要些什么?

程序员的发展,总会遇到一个分叉路口,走技术路线,或者管理路线。程序员总有股技术情怀,相信很多人最初都有坚定走技术路线的想法,但走着走着,最后都走上管理路线。一方面,管理路线是清晰的,且有着大量成功的案例。对于沟通能力强、临危不乱、善于帮助周边同事成长的人来说,似乎成为管理者是一个常见,也是默认的职业发展规划。另一方面,走技术路线,在很多人的理解里,就是不断提升技术能力。但是,这样走了一段路后,很可能就会遇到了向上发展的瓶颈,而转向管理路线。于是就有了所谓“不能一直搞技术”的结论。

2025-03-09 22:35:13 633

原创 为什么CPU不能有更多的核?

为什么CPU不能有更多的核呢?这是一个系统工程的问题,涉及到多种因素的权衡。本文将结合AMD Zen 5 EPYC 9005系列(下文简称Zen 5)的架构,从CPU制造流程讲起,带读者理解现代CPU架构的同时,解释为什么CPU不能有更多的核。

2025-03-02 19:02:54 1148

原创 快速了解生成式AI

随着大模型LLM的大热,生成式AI(GenerativeAI,GenAI)近年来获得了越来越多的关注和普及。如下图所示,生成式AI是AI的一个子领域,演变自深度学习。传统的机器学习基于统计学对数据进行预测;深度学习基于神经网络模拟人脑行为,去执行复杂的任务;而生成式AI则可以从数据中创作,就像我们人类一样。传统AI生成式AI用途专注预测和分类任务从原始数据中创造不存在的内容硬件所需算力较少,能够在各种硬件上运行需要大量算力,通常运行在大规模的计算集群上。训练数据较小的标记数据集。

2025-01-19 15:37:10 1177

原创 深入理解分支预测原理,揭开AMD Zen 5的高性能秘诀

今年,AMD Zen 5架构随着AMD旗下锐龙、霄龙等新一代处理器的发布而亮相。Zen 5对比上一代架构 Zen 4在性能上有了大幅提升,其中,IPC(每时钟周期执行的指令数量)更是提升了16%。在Zen 5 高性能的背后,分支预测器的优化功不可没,其中,对2-ahead分支预测的支持尤为重要。本文将从CPU分支预测原理讲起,试图带大家理解Zen 5在分支预测上的优化,揭开性能提升的秘密。分支预测大体可以分成两部分,分支方向的预测和分支目的地址的预测,本文主要介绍前者。

2024-11-11 22:54:10 1364 1

原创 深入理解单元测试

如果有人问你,“什么是单元测试?”,你可能会想到测试金字塔:测试金字塔从下往上分别是单元测试、集成测试和端到端测试,单元测试通常是面向类或方法级别的测试方法;集成测试则面向服务或模块级别;端到端测试是从最终用户的角度进行测试,测试对象为整个系统。在一个设计良好的系统中,这三类测试的占比就像它们在金字塔中的面积,越往下越高;测试执行速度越往下越快。测试金字塔所表达的意思是,单元测试的执行效率更高,因此我们应依靠大量的单元测试、辅助以少量的集成测试和端到端测试,来保证系统的功能正确。

2024-09-08 21:18:16 3064

原创 深入理解Lambda架构

本文要介绍的是 2015 年 O'Reilly 出版的书籍 [Big Data: Principles and best practices of scalable realtime data systems](https://learning.oreilly.com/library/view/big-data/9781617290343/),书中主要介绍一种常见的大数据架构 —— **Lambda 架构**。Lambda 架构通过批处理和流处理相结合的方法,有效处理了大数据场景下的工作负载。相比以关系型数

2024-07-21 16:11:15 1111

原创 软件架构,一切尽在权衡

本文要介绍的是 2021 年 O'Reilly 出版的书籍 Software Architecture: The Hard Parts

2024-06-16 23:09:59 909

原创 【Go实现】实践GoF的23种设计模式:桥接模式

桥接模式将抽象部分和实现部分进行解耦,使得它们能够各自往独立的方向变化

2024-04-13 12:17:19 1008

原创 【Go实现】实践GoF的23种设计模式:解释器模式

解释器模式主要运用于简单的语法解析场景,比如简单的领域特定语言(DSL)。

2024-03-23 22:11:30 988 1

原创 合作 or 背叛,你怎么选?

《合作的进化》是罗伯特·阿克塞尔罗德的一本博弈论经典之作,作者以“重复囚徒困境”游戏作为切入点,讲述了在与他者的持续交往中,应该选择怎样的合作策略才能得到较好的收益。本书的一个重要结论是,人们相互作用越频繁,合作的可能性就越大。

2023-12-28 23:27:55 1106

原创 【Go实现】实践GoF的23种设计模式:适配器模式

**适配器模式让原本因为接口不匹配而无法一起工作的两个类/结构体能够一起工作**。

2023-12-28 23:26:18 1038

原创 【Go实现】实践GoF的23种设计模式:适配器模式

**适配器模式让原本因为接口不匹配而无法一起工作的两个类/结构体能够一起工作**。

2023-12-10 11:42:46 1036

原创 【Go实现】实践GoF的23种设计模式:备忘录模式

在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外进行保存,以便在未来将对象恢复到原先保存的状态。

2023-11-26 08:33:41 1120

原创 【Go实现】实践GoF的23种设计模式:命令模式

命令模式可将请求转换为一个包含与请求相关的所有信息的对象, 它能将请求参数化、延迟执行、实现 Undo / Redo 操作等

2022-12-22 22:21:42 794

原创 善于使用二阶思维

事情往往不是你想象的那样,有时候,看似解决了问题,却在不经意间,引发了更严重的后果。帮助我们思考、决策、解决问题的最有效方法是,运用二阶思维。

2022-11-20 18:59:30 506

原创 【Go实现】实践GoF的23种设计模式:代理模式

代理模式为一个对象提供一种代理以控制对该对象的访问。

2022-10-16 18:59:23 633

原创 【Go实现】实践GoF的23种设计模式:访问者模式

访问者模式的目的是,解耦数据结构和算法,使得系统能够在不改变现有代码结构的基础上,为对象新增一种新的操作。

2022-10-06 16:27:37 551 1

原创 深入理解计算机系统的数值类型

数值类型是计算机编程的基础,用的很多,也很重要,理解它的底层原理,有助于写出正确的代码,避免一些意料之外的错误

2022-08-19 21:38:48 686

原创 【Go实现】实践GoF的23种设计模式:迭代器模式

迭代器模式主要用在访问对象集合的场景,能够向客户端隐藏集合的实现细节

2022-08-01 22:39:31 327

原创 【Go实现】实践GoF的23种设计模式:观察者模式

当你需要监听某个状态的变更,且在状态变更时,通知到监听者,用观察者模式吧。

2022-07-23 19:23:42 318

原创 深入理解 SQL 中的 Grouping Sets 语句

本文首先简单介绍 Grouping Sets 的用法,然后以 Spark SQL 作为切入点,深入解析 Grouping Sets 的实现机制

2022-07-03 14:29:12 5144 2

原创 【Go实现】实践GoF的23种设计模式:装饰者模式

装饰者模式通过组合的方式,提供了能够动态地给对象/模块扩展新功能的能力。理论上,只要没有限制,它可以一直把功能叠加下去,具有很高的灵活性。

2022-06-29 07:50:04 247

原创 【Go实现】实践GoF的23种设计模式:原型模式

原型模式(Prototype Pattern)主要解决对象复制的问题,它的核心就是 Clone() 方法,返回原型对象的复制品。

2022-06-02 23:03:01 263

原创 【Go实现】实践GoF的23种设计模式:抽象工厂模式

上一篇:【Go实现】实践GoF的23种设计模式:工厂方法模式简单的分布式应用系统(示例代码工程):https://github.com/ruanrunxue/Practice-Design-Pattern–Go-Implementation简述上一篇我们介绍了工厂方法模式,本文,我们继续介绍它的兄弟,抽象工厂模式(Abstract Factory Pattern)。在工厂方法模式中,我们通过一个工厂方法接口来创建产品,而创建哪类产品,由具体的工厂对象来决定。抽象工厂模式和工厂方法模式的功能很类似.

2022-05-29 16:17:15 195

原创 【Go实现】实践GoF的23种设计模式:工厂方法模式

工厂方法模式(Factory Method Pattern)将对象创建的逻辑封装起来,为使用者提供一个简单易用的对象创建接口,常用于不指定对象具体类型的情况下创建对象的场景。

2022-05-21 16:07:35 293

原创 用Keynote画出手绘风格的配图

好的配图对文章是一个巨大的加分项,能够让人有看下去的欲望。本文介绍如何使用 Keynote 画出手绘风格的配图。

2022-05-07 23:39:13 1456

原创 【Go实现】实践GoF的23种设计模式:建造者模式

在程序设计中,我们会经常遇到一些复杂的对象,针对这种对象成员较多,创建对象逻辑较为繁琐的场景,非常适合使用建造者模式来进行优化。

2022-05-06 08:12:22 295

原创 从分层架构到微服务架构(五)之服务化架构

SBA 可以看成是单体架构和微服务架构之间的一个折中方案,它也是按照业务领域进行服务划分,但服务划分的粒度相比微服务要更粗。从单体架构演进到 SBA,会比直接演进到微服务架构更加容易。

2022-04-08 22:37:12 3229

原创 【Go实现】实践GoF的23种设计模式:单例模式

单例模式虽然简单易用,但也是最容易被滥用的设计模式。它并不是“银弹”,在实际使用时,还需根据具体的业务场景谨慎使用。

2022-04-05 23:41:21 453

原创 【Go实现】实践GoF的23种设计模式:SOLID原则

如果把设计模式类比为武侠世界里的武功招式,那么SOLID原则就是内功内力。通常来说,先把内功练好,再来学习招式,会达到事半功倍的效果。

2022-03-14 07:38:04 470

原创 假如让你来设计SSL/TLS协议

本文将从设计者的视角介绍如何一步步设计出一个简易版的 SSL/TLS 的过程,在文章的最后,再简单介绍 TLS 1.2 版本的工作机制,以此帮助大家对 SSL/TLS 协议的基本原理有一个更深入的理解。

2022-03-05 23:55:38 11425

原创 实践GoF的23种设计模式:SOLID原则

如果把设计模式类比为武侠世界里的武功招式,那么SOLID原则就是内功内力。通常来说,先把内功练好,再来学习招式,会达到事半功倍的效果

2022-02-26 14:29:38 946

原创 探索OS的内存管理原理

从最简单的内存管理原理说起,带大家一起窥探OS的内存管理机制,由此熟悉底层的内存管理机制,写出高效的应用程序

2022-01-09 17:19:52 749

原创 实现DCI架构

前言在面向对象编程的理念里,应用程序是对现实世界的抽象,我们经常会将现实中的事物建模为编程语言中的类/对象(“是什么”),而事物的行为则建模为方法(“做什么”)。面向对象编程有三大基本特性(封装、继承/组合、多态)和五大基本原则(单一职责原则、开放封闭原则、里氏替换原则、依赖倒置原则、接口分离原则),但知道这些还并不足以让我们设计出好的程序,于是很多方法论就涌现了出来。近来最火的当属领域驱动设计(DDD),其中战术建模提出的实体、值对象、聚合等建模方法,能够很好的指导我们设计出符合现实世界的领域模型。但

2021-10-10 14:02:55 3023

原创 探索CPU的调度原理

前言软件工程师们总习惯把OS(Operating System,操作系统)当成是一个非常值得信赖的管家,我们只管把程序托管到OS上运行,却很少深入了解操作系统的运行原理。确实,OS作为一个通用的软件系统,在大多数的场景下都表现得足够的优秀。但仍会有一些特殊的场景,需要我们对OS进行各项调优,才能让业务系统更高效地完成任务。这就要求我们必须深入了解OS的原理,不仅仅只会使唤这个管家,还能懂得如何让管家做得更好。OS是一个非常庞大的软件系统,本文主要探索其中的冰山一角:CPU的调度原理。说起CPU的调度原

2021-07-27 02:40:31 546 1

原创 《认知觉醒》的读后感

《认知觉醒》是前些日子在微信读书上无意中点开,然后利用碎片时间读完的一本关于个人成长的书籍。作者周岭结合自己的成长经历,对现代年轻人普遍的成长困扰给出了自己的一些看法,并提出了能够帮助大家正确、高效地成长的一些实用方法。以前读过的关于个人成长的书籍还有李笑来的《财富自由之路》,《认知觉醒》的不同之处在于它更加的接地气。书中提到的很多高效成长的方法,在我看来,绝大部分人都可以做到。其中的一些方法,本人也一直在使用,效果确实很明显,这本书值得大家去翻一翻。关键是“专注”在这个信息爆炸的年代,专注一件事情变

2021-06-14 16:27:42 3001

原创 教你写好技术文章

前言对于软件工程师来说,编码能力的重要性自不必说,技术写作的能力也相当重要。一篇好的设计文档能够指导需求的开发测试,提升软件质量;一篇好的用户文档能够帮助用户迅速熟悉软件的使用方法;一篇好的技术博文可以让人耳目一新,受益匪浅;一篇好的经验总结可以让新手们少走弯路。技术写作的目的是让读者能够顺利地使用一个软件或理解一项技术或弄懂业务流程。它与创作型写作的最大区别在于,技术写作并非为了取悦读者,而是追求以简洁和精确的文字去阐明事实。一篇好的技术文章应该能够让符合条件的读者,在良好的阅读体验下,理解甚至掌

2021-05-02 18:02:34 1053 3

原创 从分层架构到微服务架构(四)之微内核架构

《从分层架构到微服务架构》是一系列介绍《Fundamentals of Software Architecture》中提到的8种架构模式的文章,这里不会事无巨细地介绍所有的细节,而是会挑选其中关键内容,更多详情请阅读原书。往期精彩:从分层架构到微服务架构(一)从分层架构到微服务架构(二)之分层架构从分层架构到微服务架构(三)之管道架构前言微内核架构(Microkernel Architecture),也被称为插件式架构(plug-in architecture),作为一个在几十年前就被创.

2021-04-24 10:32:27 645

原创 从分层架构到微服务架构(三)之管道架构

《从分层架构到微服务架构》是一系列介绍《Fundamentals of Software Architecture》中提到的8种架构模式的文章,这里不会事无巨细地介绍所有的细节,而是会挑选其中关键内容,更多详情请阅读原书。往期精彩:从分层架构到微服务架构(一)从分层架构到微服务架构(二)之分层架构前言管道架构(Pipeline Architecture),通常也被称为管道-过滤器架构(Pipes and Filter Architecture),是最常用的架构模式之一。大部分软件工程师都是.

2021-04-06 00:09:13 745

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除