全部文章

文章列表保留总览角色,核心主题通过稳定的分类 hub 承接,减少 query 参数页成为主索引入口。

所有文章

83 篇文章,按主题快速筛选阅读。

2025年12月20日

从Coding到Thinking:参加Force原动力大会有感

昨天,我参加了火山引擎的Force原动力大会。上午听了5个演讲,有一个瞬间让我印象深刻:agentkit的产品负责人现场演示,使用trae和agentkit,仅用8分钟就完成了一个Agent从创建到部署的完整流程。 更让我思考的是,在上午的…

2025年12月20日

业财通识08:企业赚钱的第一步,从"潜在客户"到"销售合同"

在前面的文章中,我们深入探讨了企业如何"花钱"——从采购申请到采购订单,再到收货入库、发票校验,最终付款给供应商。这套流程,我们称之为 P2P(Procurement to Pay,采购到付款)。 今天,我们要探讨的是它的"镜像"——企业如…

2025年12月19日

业财通识07:业财难点之"暂估入账"与冲销"

在之前的文章中,我们已经一起理解了收货入库、发票校验的完整流程。现在,让我们面对一个经典的财务难题: 如果不处理,9月份的资产负债表就不准确:库存明明增加了,但账上没记录。如果处理,没有发票怎么记账?这违反了"有票才能入账"的原则吗? 这就…

2025年12月17日

业财通识05:商品世界的基石——SPU与SKU

你一定在电商平台上买过东西。当你打开某个商品页面,比如"iPhone 17 Pro"时,你会发现页面下方有多个选项: 颜色:银色、深空黑、原色钛金属、蓝色钛金属 存储容量:256GB、512GB、1TB 当你选择了"银色 256GB"后,系…

2025年12月17日

业财通识06:什么是采购在途?它对库存预测的价值

在上一篇文章中,我们理解了SPU和SKU的概念。现在,让我们回到采购流程中一个常见但容易被忽视的场景: 你作为采购员,刚刚向供应商下达了一份采购订单:采购100台"iPhone 17 Pro 银色 256GB",预计3天后到货。订单已经审批…

2025年12月17日

告别大仓困境:Go Workspace 让多模块开发更优雅

在多模块 Go 项目中,你是否遇到过这样的困扰:项目包含多个独立模块(如主服务、公共库、第三方客户端封装),它们之间可能需要相互引用,但在开发阶段,并不想每次都把修改推送到远程仓库才能测试。 传统的做法是在 go.mod 中使用 repla…

2025年9月21日

业财通识01:企业花钱的第一步,从"购物清单"到"法律合同"

作为一名工程师,我们每天都在与系统打交道。我们为系统定义API,设计数据结构,编排工作流,用代码将混乱的世界变得井然有序。那么,你是否想过,一家公司本身,尤其是它的"花钱"行为,是如何被"编码"和"执行"的? 当我们为新项目申请几台云服务器…

2025年9月21日

业财通识02:当货物上门,系统里发生了什么?

在上一篇文章中,我们发出了一份采购订单(PO),这相当于我们与供应商签订了一份具有法律效力的"购买合同"。至此,公司在法律层面做出了花钱的承诺。 但此时,这笔交易在公司的账本上,除了一个"在途订单"的记录外,并没有留下太多痕迹。我们的资产负…

2025年9月21日

业财通识03:收到供应商账单,能直接付款吗?

在上一篇文章中,我们成功将一批"口红礼盒"收货入库,并通过"暂估入账"在财务上确认了这笔资产。现在,万事俱备,供应商的发票也寄到了财务部。 发票,就是供应商发来的正式"账单",白纸黑字写着我们应该付多少钱。那么问题来了:既然账单都来了,我们…

2025年9月21日

业财通识04:万事俱备,如何优雅地"打款"给供应商?

经过层层审批、收货入库和严格的三单匹配,我们终于确认:供应商的发票无误,这笔钱,该付了。 至此,P2P(从采购到付款)的"P2P"(Procurement to Pay)的前半段——Procurement(采购)环节已经完美收官。现在,我们…

2025年8月21日

为什么有的人学了很多年的编程,还是只会【增删改查】?

为什么你写了多年代码,技术栈还停留在"增删改查"? 我们不妨从一个常见的开发者画像开始:工作数年,日常任务是理解需求、实现业务逻辑、提供数据接口。在熟悉的框架下,每天熟练地进行着数据库的增、删、改、查(CURD)操作,周而复始。 这套流程看…

2025年8月21日

解构 Coze Studio:为 AI Agent 实现微型 DBaaS 的架构艺术

在我之前的文章中,从宏观上领略了 Coze Studio 优雅的架构设计。今天,我们将深入其中的数据存储模块——memory。 如何让 AI Agent 拥有长期、结构化且可扩展的记忆?一个简单的键值存储显然无法满足复杂的业务需求。我们希望…

2025年8月21日

解构 Coze Studio:AI Agent 连接万物的架构艺术

在上一篇《解构 Coze Studio:为 AI Agent 实现微型 DBaaS 的架构艺术》中,我们深入了 Agent 的"记忆系统"。但一个强大的 Agent 不仅要能"记住",更要能"做到"——它需要具备行动的能力,与外部世界进行交…

2025年8月21日

BEVDet 算法详细解读 - 全网最全攻略

BEVDet 算法是鉴智机器人21年开源的 BEV 感知算法。该论文研究将LSS算法应用到BEV 3D目标检测中。提出四阶段的范式:图像编码器、视图转换器、BEV编码器、3D目标检测头。并针对3D实际场景,开先河的提出BEV 数据增强和Sc…

2025年8月21日

解构 Coze Studio:DDD 与整洁架构的 Go 语言最佳实践

Make Open Source Great Again! 字节在上个月将 AI IDE 平台 Trae Agent 项目开源后,在上周又将 AI Agent 平台 Coze Studio 开源了!作为主要使用 Golang 的服务端研发,…

2025年8月21日

Go 泛型"黑话":any 和 interface{} 完全一样吗?

上周在团队中无意听到一位同学说:"Go语言里的 any 和 interface{} 是完全一样的。" 这句话瞬间勾起了我的思考:在泛型(Generics) 之外的场景中,我在日常编码中还真没用过 any 这个关键字。 于是周末我进行了求证,…

2025年8月21日

Coze 源码解析:代码块节点是如何设计与运行的?

最近在研究研发提效,和同事聊到了低代码平台,而这其中一个较难实现的部分就是"代码块"节点:用户在前端输入一段代码,服务端就能动态执行并返回结果,这要怎么实现代码块的执行以及如何保证它的安全和稳定,一直让我深感困惑。 但我的运气也是极好,就在…

2025年8月21日

解构 Coze 工作流:可中断、可恢复的架构艺术

在 AI Agent 与大模型应用蓬勃发展的今天,我们面临一个全新的工程挑战:如何构建能够与用户进行长周期、多轮深度交互的系统? 传统的、无状态的请求-响应模式在这种场景下显得力不从心。一个耗时的任务、一次需要用户中途确认的流程,都可能让后…

2025年8月21日

Trae SOLO: 一句话复刻红白机的快乐!

最近想做点轻松愉快的事情,脑海中不禁想起了童年那台插着黄卡的红白机——那段时光,可以说无忧无虑,是我最纯粹的快乐源泉。 在众多红白机游戏中,"打蜜蜂"占据着一个特殊的位置,那是我最早接触到电子游戏。简单的像素画面、紧张刺激的音效,打开了我对…

2025年8月21日

解构 Coze 工作流引擎:从可视化画布到可中断执行的源码之旅

在探索 Coze Studio 的过程中,除了其优雅的 DDD 与整洁架构外,最令我着迷的莫过于它的核心——工作流(Workflow)引擎。我们只需要在前端画布上通过拖拽连接不同的节点(大模型、代码、知识库...),就能创造出一个强大的 A…

2025年8月21日

AI 浪潮下,持续学习:拥抱变化,掌控未来

最近有小伙伴问我如何学习使用AI才能跟上时代的步伐,结合我最近2年对AI的使用,有些感悟。 在 AI 技术飞速发展的当下,想要不被时代淘汰,拥抱变化、持续学习是核心准则(这里的学习我指的是如何使用) AI 工具的迭代速度极快,保持敏感度是关…

2025年8月21日

DDD思维觉醒:当代码开始"说人话"的架构革命

在我的程序员生涯中,DDD(领域驱动设计)对于我的改变起到了巨大的帮助。下面我介绍下DDD的核心理念: 事件风暴并非传统意义上的 "头脑风暴",而是以业务事件为锚点的结构化协作方法。其核心价值在于打破开发者与业务人员的认知壁垒,通过可视化工…

2025年7月21日

三国鼎立!魏蜀吴争霸AI编程江湖,谁是真正的性价比之王?

"滚滚长江东逝水,浪花淘尽英雄..." 年的AI编程江湖,正上演着现代版三国演义! 上个月,魏国Cursor的$20账单又来了,用了一半就限速,那个转圈圈让我想起曹操晚年的多疑... 吴国Trae派来使者:"主公,3刀600次不限速,可联合…

2025年7月21日

代码生成质量大PK:限速的Cursor还香吗?

避坑指南:Cursor限速的真实影响数据 效率提升:每个工具的最佳使用场景 省钱攻略:性价比之王的发现过程 上期我们初步体验了三大AI编程工具,这期要深入测试了。但在开始之前,我必须先聊聊Cursor的限速问题,因为这真的太影响体验了。 我…

2025年7月21日

智能体大战:通义灵码能逆袭吗?

前沿认知:理解智能体AI的技术本质和应用边界 实战数据:基于真实项目的智能体能力评估 选择策略:什么时候用传统AI,什么时候用智能体 未来趋势:AI编程发展方向的深度洞察 前两期我们测试了基础功能,Trae凭借性价比登顶,Cursor被限速…

2025年7月21日

真枪实战:给我的博客系统加个评论功能,看AI工具谁最给力?

前三篇我们测试了各种场景,但说实话,总感觉有点像在实验室里做实验。这次我决定来点真的:给我的 Heimdall Blog(一个基于 Go-Zero 的博客系统)加个评论功能。 就是那种最常见的需求:用户可以在文章下面评论,支持回复,有个简单…

2025年7月21日

别光盯着700TOPS!小米汽车真正的护城河,是一个技术人都说"妙"的云边协同架构

作为一个服务端研发,我一直对智能驾驶系统是怎么实现那么快的响应速度的感到很好奇。毕竟在服务端,我们为了优化几十毫秒的延迟,就已经要想尽各种办法了。 很巧,我之前在研究技术方案时,正好接触过"云边协同"的架构设计。所以当我看到小米Yu7发布,…

2025年7月21日

我把90%的代码"外包"给了AI,然后……

最近有个很奇妙的感觉,我发现自己越来越像一个"产品经理"。我的团队成员有点特殊:Gemini、Claude、豆包、通义灵码... 我每天的工作,就是给他们"提需求"、"审代码",而我自己的精力,则更多地放在了"做什么"(What)和"为什么…

2025年7月21日

"废掉"一个程序员的,从来不是AI,而是…

作为一个写了8年服务端研发,我一直觉得自己在服务端这块儿还算驾轻就熟。但我的"阿喀琉斯之踵",就是前端。这么多年,我愣是没把 JavaScript 的 this 和 Promise 彻底搞明白。 上周,我想给自己的一个博客写个界面。我决定把…

2025年7月21日

为什么你的AI用着像"人工智障",而我的像"专家"?秘密就在…

用AI辅助编程的这一年半,我走过一条崎岖的进化之路。坦白说,很长一段时间里,我手下的AI,表现得就像个"人工智障"。 我曾对着它抓狂,也曾一度怀疑是不是自己不适合这个新时代。但最终,我发现问题不出在AI身上,而出在"我"身上——是我和它"说…

2025年7月21日

API 设计的终极拷问:接口到底该"大"还是"小"?

大家好,我是十三! 今天看到了一篇关于API设计的讨论摘要,不禁回想起被背包接口折腾的痛苦经历,所以想和大家聊聊接口设计这件"小事"。 年前我接手过一个项目,里面有一系列处理背包业务的接口,它的请求体大概是这样:map 。对,就是 map…

2025年7月21日

gRPC vs RESTful:AI 时代,我的 API 技术选型"思辨"

大家好,我是十三! 我一直很好奇当我们在豆包或者元宝里持续对话,AI应用是如何传输我们的对话记录的,这有可能是是几万字的记录,如果是代码模式,这个数据量可能还要再翻几翻。AI 是用了什么样的协议,Restful 还是 grpc ? AI 又…

2025年7月21日

我扒了几个AI应用的API,发现了一个"反常识"的秘密……

作为一名服务端研发,实时通信这块我自认还算有点心得。提到 Web 上的实时技术,WebSocket 几乎是我脑子里唯一的答案。它支持双向通信、性能强悍,几乎成了所有"实时"场景的标配。过去几年,我在项目里用它解决过无数问题,从即时聊天到状态…

2025年7月21日

不止是代码补全:MCP,重新定义"AI 开发助手"

相信每个工程师都体会过一种痛:AI 助手很能干,但总感觉差点意思。它不"认识"咱们在 Figma 里的设计稿,也不"理解"团队的组件库规范。结果就是,它生成的代码往往是"空中楼阁",咱们还得苦哈哈地当"人肉编译器",在设计稿和代码之间来回适…

2025年7月21日

活动架构的"第一性原理":万变不离其宗的三大核心基石

在本文中,我们将回归问题的本源,探讨支撑所有复杂活动玩法的"第一性原理"——无论玩法如何迭代,其核心都离不开对"用户行为"、"参与门槛"和"价值激励"的定义与管理。我们将从零开始,构建出万变不离其宗的三大核心基石:任务、资格与奖品中心,为上…

2025年7月21日

活动架构(二):告别if-else地狱,用"策略模式"构建可插拔的玩法引擎

在上一篇 《活动架构的"第一性原理"》 中,我们回归本质,建立了任务、资格、奖品三大核心基石。它们如同三块坚固的"乐高积木",为我们提供了稳固的原子能力。 但只有零件还不够。当业务方带着层出不穷的新玩法("大转盘抽奖"、"签到领积分"、"玩…

2025年7月21日

活动架构(三):你的系统能抗住百万QPS吗?架构可靠性的灵魂三问

欢迎来到《玩法活动架构设计》系列的终章。在 第一篇 我们用"第一性原理"搭建了三大核心基石,在 第二篇 我们用"策略模式"构建了可插拔的玩法引擎。至此,我们的系统在功能和扩展性上已经堪称优雅。 但,一个只能在"实验室"里优雅运行的系统,是脆…

2025年7月21日

Claude 实战圣经:从终端命令到自动化工作流

一切始于终端。熟练运用 CLI 命令,是掌控 Claude 的第一步。这不仅是启动工具,更是为你的每一次任务设定精确的初始状态。 启动参数是你控制 Claude 行为的"拨禾轮",在启动时就微调它的行为模式。 进入交互会话后,效率就是一切。…

2025年7月21日

SuperClaude 硬核指南:将你的 AI 助手锻造成专业开发战友

最近看到了一个非常棒的项目SuperClaude,在这里介绍给大家 想象一下:普通 Claude 是拿着瑞士军刀的新兵,而 SuperClaude 则是装备了智能作战系统的特种部队。这种蜕变的核心在于知识框架的深度注入——不是简单安装,而是…

2025年7月21日

破局与重构:关于 UGC 平台多身份账号体系的架构思考

当 UGC 业务让用户体系不堪重负,如何优雅破局? 最近一周我都在思考这个问题,是的,我们目前遇到了这个问题,直到我们的资深产品架构专家提出「角色」的概念,让我有了破局这道,所以在此分享下我们的痛点、目标以及迁移蓝图 在平台型业务的演进过程…

2025年7月21日

从MTSC2025思考AI如何重塑研发质效

在7月的第二周中国互联网测试开发大会(MTSC2025)在上海召开。我们部门的质量大佬送我了一张门票让我有幸能够参与这场大会。 MTSC 本次的主题是"质效革新,智领未来",在这一天多个专场中有AI在字节链路追踪中的问题分析、有在淘系端到端…

2025年7月21日

AI Agent 的制胜之道:上下文工程深度解析

最近在 Vibe Coding 的过程中,尝试了很多款 AI IDE,遇到了一个让我很疑惑的问题:为什么同样是 Claude 4,在 Claude Cli 或者 Cursor 中使用要比在 Trae 中使用的体验要好? 比如更准确的理解上下…

2025年6月21日

让AI成为你的测试工程师(上篇):从此告别测试代码的痛苦!

各位程序员朋友,有没有这样的经历: 又是一个凌晨3点,我盯着屏幕上那600行的业务代码,旁边放着一杯已经凉透的咖啡。项目要上线了,但测试覆盖率只有可怜的45%... 测试代码为什么这么难写? Mock复杂:各种依赖注入,Mock代码比业务代…

2025年6月21日

让AI成为你的测试工程师(下篇):从新手到专家的进阶之路!

最多的3个问题: "AI写的测试质量不稳定":有时候很完美,有时候很糟糕 "如何让AI发现我遗漏的测试场景":总担心覆盖不全 "AI会犯一些低级错误":过度Mock、数据假设等 上周我在给一个电商项目写测试时,AI给了我这样的代码: 看到这…

2023年12月21日

Golang-常用限流算法实现

常用的限流算法有一下4中实现方式: 令牌桶 漏桶 计数器 滑动窗口 令牌桶以恒定的速度向桶里加入令牌,桶满了则不再加入令牌。当服务收到请求时尝试从桶中取出一个令牌,如果可以获取到令牌,则继续执行后续的业务,否则返回超限错误码或对应的错误页面…

2023年12月21日

Redis:数据结构

Redis有5种基本的数据类型: String(字符串)对象、List(列表)对象、Hash(哈希)对象、Set(集合)对象和 Zset(有序集合)对象 下图为数据类型对应的底层数据结构 list对象 在3.2版本后由quicklist实现

2023年12月21日

Redis:主从复制

为避免单机故障,需要将数据复制到其他服务器上,这样即使一台服务出现了问题,其他服务器也可以快速对外提供服务,Redis 提供了主从复制模式来保证多台服务器之间的数据一致性 主从服务器间的第一次同步的过程可分为三个阶段: 第一阶段是建立链接、…

2023年12月21日

Redis:哨兵

在 Redis 的主从架构中,由于主从模式是读写分离的,如果主节点(master)挂了,那么将没有主节点来服务客户端的写操作请求,也没有主节点给从节点(slave)进行数据同步了。哨兵的作用是实现主从节点故障转移 哨兵其实是一个运行在特殊模…

2023年12月21日

操作系统:计算机基本结构

计算机基本结构为 5 个部分,分别是运算器、控制器、存储器、输入设备、输出设备, 即冯诺依曼模型 程序和数据都是存储在内存,存储的区域是线性的 计算机数据存储中,存储数据的基本单位是字节(byte) ,1 字节等于 8 位(8 bit)。每…

2023年12月21日

操作系统:CPU缓存一致性

CPU 和内存的访问性能相差大,于是就在 CPU 内部嵌入了 CPU Cache(高速缓存),CPU Cache 离 CPU 核心相当近,因此它的访问速度是很快的,于是它充当了 CPU 与内存之间的缓存角色 CPU Cache 通常分为三级…

2023年12月21日

操作系统:内核(Linux)

计算机是由各种外部硬件设备组成的,比如内存、cpu、硬盘等,如果每个应用都要和这些硬件设备对接通信协议,那这样太累了,所以这个中间人就由内核来负责,让内核作为应用连接硬件设备的桥梁,应用程序只需关心与内核交互,不用关心硬件的细节 内核的能力…

2023年12月21日

操作系统:内存管理

如果 CPU 直接操作内存的「物理地址」,想在内存中同时运行两个程序是不可能的 如何解决: 操作系统会提供一种机制,将不同进程的虚拟地址和不同内存的物理地址映射起来。 如果程序要访问虚拟地址的时候,由操作系统转换成不同的物理地址,这样不同的…

2023年12月21日

操作系统:内存分配

在 Linux 操作系统中,虚拟地址空间的内部又被分为内核空间和用户空间两部分 每个进程都各自有独立的虚拟内存,但是每个虚拟内存中的内核地址,其实关联的都是相同的物理内存。这样,进程切换到内核态后,就可以很方便地访问内核空间内存 用户空间分…

2023年12月21日

操作系统:进程

我们编写的代码只是一个存储在硬盘的静态文件,通过编译后就会生成二进制可执行文件,当我们运行这个可执行文件后,它会被装载到内存中,接着 CPU 会执行程序中的每一条指令,那么这个运行中的程序,就被称为「进程」(Process) 当进程要从硬盘…

2023年12月21日

操作系统:线程

线程是进程当中的一条执行流程 同一个进程内多个线程之间可以共享代码段、数据段、打开的文件等资源,但每个线程各自都有一套独立的寄存器和栈,这样可以确保线程的控制流是相对独立的 线程的优点: 一个进程中可以同时存在多个线程; 各个线程之间可以并…

2023年12月21日

操作系统:进程间通信

管道传输数据是单向的 所谓的管道,就是内核里面的一串缓存 缺点:效率低,FIFO 消息队列是保存在内核中的消息链表 在发送数据时,会分成一个一个独立的数据单元,也就是消息体(数据块),消息体是用户自定义的数据类型,消息的发送方和接收方要约定…

2023年12月21日

操作系统:零拷贝

直接内存访问(Direct Memory Access) 在进行 I/O 设备和内存的数据传输的时候,数据搬运的工作全部交给 DMA 控制器,而 CPU 不再参与任何与数据搬运相关的事情,这样 CPU 就可以去处理别的事务 用户进程调用 r…

2023年12月21日

MySQL:数据的存储和读取

MySQL 的架构共分为两层:Server 层和存储引擎层 连接的过程需要先经过 TCP 三次握手,因为 MySQL 是基于 TCP 协议进行传输的 完成 TCP 连接的建立后,连接器就要开始验证你的用户名和密码,如果用户名或密码不对,就收…

2023年12月21日

go-zero 使用 Consul 作为注册中心

go-zero 默认使用etcd作为注册中心,如果我们的业务使用的consul, 可以使用zero-contrib中的consul包进行替代 文件位置:ect/**.yaml 增加consul配置 服务启动后即可在conusl/ui上查看到…

2023年12月21日

go-zero:zrpc

zrpc是go-zero的rpc部分,简单易用可直接用于生产的企业级rpc框架 zRPC底层依赖gRPC,内置了服务注册、负载均衡、拦截器等模块,其中还包括自适应降载,自适应熔断,限流等微服务治理方案 zRPC主要有以下几个模块组成: di…

2023年12月21日

MySQL:慢查询优化

最左前缀匹配原则 \=和in可以乱序 尽量选择区分度高的列作为索引,区分度的公式是count(distinct col)/count(*) 索引列不能参与计算,保持列"干净" 尽量扩展索引,不要新建索引 先运行看看是否真的很慢,注意设置SQ…

2023年12月21日

Go 设计模式:对象池模式

Object pool Pattern, 对象被预先初始化并存储于对象池中,当需要时,客户端可以从对象池中请求一个对象并使用,然后将其返回对象池中 组成: 对象池: 类,主要用于维护可用对象的列表和已从对象池中请求的对象集合 客户端:调用对…

2023年12月21日

Go 设计模式:适配器

Adpater Pattern 是指将一个类的接口转换成客户端希望的另一个接口,使原本因接口不兼容而不能一起工作的类可以一起工作 组成如下: 目标:定义客户端所需的接口 适配器:适配器可以调另一个接口,是一个转换器,主要用于对适配器类和目标…

2023年12月21日

MySQL:buffer pool

Innodb 存储引擎设计了一个缓冲池(Buffer Pool) ,来提高数据库的读写性能,当数据从磁盘中取出后,缓存内存中,下次查询同样的数据的时候,直接从内存中读取 有了缓冲池后: 当读取数据时,如果数据存在于 Buffer Pool…

2023年12月21日

go-zero:workergroup

goroutine 太多仍会导致调度性能下降、GC 频繁、内存暴涨, 引发一系列问题。在面临这样的场景时, 限制 goroutine 的数量、重用 goroutine 显然很有价值 主要是用chan来控制goruntine的数量 lang.…

2023年12月21日

MySQL:日志

undo log(回滚日志) :是 Innodb 存储引擎层生成的日志,实现了事务中的原子性,主要用于事务回滚和 MVCC。 redo log(重做日志) :是 Innodb 存储引擎层生成的日志,实现了事务中的持久性,主要用于掉电等故障恢…

2023年12月21日

网络:TCP(1)

TCP 是面向连接的、可靠的、基于字节流的传输层通信协议 面向连接:一定是「一对一」才能连接,不能像 UDP 协议可以一个主机同时向多个主机发送消息,也就是一对多是无法做到的; 可靠的:无论的网络链路中出现了怎样的链路变化,TCP 都可以保…

2023年12月21日

网络:TCP(2)

在 TCP 中,当发送端的数据到达接收主机时,接收端主机会返回一个确认应答消息,表示已收到消息 常见的重传机制: 超时重传 快速重传 SACK D-SACK 重传机制的其中一个方式,就是在发送数据时,设定一个定时器,当超过指定的时间后,没有…

2023年12月21日

Service Mesh:如何屏蔽服务治理细节

微服务需要解决的问题和对应的中间件 用 RPC 框架解决服务通信的问题; 用注册中心解决服务注册和发现的问题; 使用分布式 Trace 中间件,排查跨服务调用慢请求; 使用负载均衡服务器,解决服务扩展性的问题; 在 API 网关中植入服务熔…

2023年12月21日

MySQL:数据迁移如何实现

简单的实现方案: 通过 MySQL 主从同步的方式做到准实时的数据拷贝 通过 mysqldump 工具将源库的数据导出再导入到新库 存在的问题: 这两种方式只能支持单库到单库的迁移,无法支持单库到多库多表的场景 迁移的同时还有数据写入 平滑…

2023年12月21日

静态资源加速

在我们的系统中存在着大量的静态资源请求: 对于移动 APP 来说,这些静态资源主要是图片、视频和流媒体信息; 对于 Web 网站来说,则包括了 JavaScript 文件、CSS 文件、静态 HTML 文件等等 读请求量极大并且对访问速度的…

2023年12月21日

一场 ChatGPT 模拟面试

最近体验了下chatgpt, 真的太强了,体验了下使用chatgat进行一场服务端的面试,以下是chatgpt的发挥~ 微服务是一种面向服务架构(SOA)的一种变体,指的是将业务应用按照业务领域拆分成多个自治的服务单元,通过服务之间的协作来…

2023年12月21日

go-zero:链路追踪

横跨几十个分布式组件的慢请求要如何排查,我们可能会想到用request_id将多个服务器上的日志串起来,但仅仅依靠 requestId 很难表达清楚服务之间的调用关系,所以从日志中就无法了解服务之间是谁在调用谁 因此,我们采用 traceI…

2023年12月21日

go-zero:Prometheus 监控

Prometheus是一款最受欢迎的开源监控系统之一,它由SoundCloud开发,目的是收集各种应用程序的度量数据并将其存储在时间序列数据库中,从而可以进行数据可视化和警报 数据模型 Prometheus数据模型的关键组件是时间序列。时间…

2023年12月21日

MySQL:大表在线更新字段

某一日 大厂面试官:线上有一张数据量级为几千万的表,需要新增一个字段,该如何处理呢 葫芦:目前还没有接触过类似的场景,大概的想法是建一张新表,双写的形式... 大厂面试官: 回去等通知 稀碎.... ps: 以下内容为参考网上大佬们的实现方…

2023年12月21日

关于 ChatGPT 辅助读源码的那些事

chatgpt的出现可以说对程序员这个职业造成了很大的冲击,除了可以自动生成代码外,也可以理解代码,尝试了下用chatgpt去辅助阅读源码 以kratos的limit为例 下面我会将bbr limit 中的每个方法直接复制给chatgpt,…

2023年12月21日

关于hotkey的那些事儿

某一日, 葫芦去面试,面试官-十三 十三: 你们项目中的热key是如何处理的 葫芦: 热key我们会放到缓存中,如果不存在,用单飞从redis获取,在加载到缓存,缓存用的go-cache 十三: 那你了解go-cache的实现原理吗 葫芦:…

2023年12月21日

关于 ChatGPT 辅助代码质量的那些事

最近 chatgpt 大火,加上最近几日使用chatgpt辅助阅读一些开源项目的源码参考此文章,体验很好,所以葫芦尝试下使用chatgpt来发现代码中的问题,提高代码质量 代码段一 下面是葫芦以前写极验sdk中的一段代码,功能很简单,就是一…

2023年12月21日

关于内存逃逸那些事儿

又某一日,葫芦被十三问的Golang基础知识吊打 十三: 葫芦你知道Golang的内存逃逸么,举几个栗子,以及你在项目中如何优化的 葫芦: Golang会自己进行内存分配,开发者不需要关系内存分配到哪了。内存逃逸指的是内存从栈上逃到了堆上…

2023年12月21日

关于连接池的那些事儿

某一日,葫芦正在写一个简单的CURD代码,十三不知何时悄悄的来到身后 十三: 葫芦,你知道db的 conn 如何管理的 葫芦一哆嗦 葫芦: 通过池化技术,通过maxIdleConns 和 maxOpenConns 参数来决定池子的大小 十三…

2023年12月21日

Go 设计模式:策略模式

策略模式可以让开发者定义一系列算法,并且将每种算法分别放入独立的类,从而使得算法的对象可以相互替换 组成; 上下文(Context): 维护指向具体策略引用的类,并且仅通过策略接口与该引用进行交流 策略(Stategy): 实现上下文所用算…

2023年12月21日

Go 设计模式:责任链

责任链模式允许开发者将请求沿着链进行发送,直至其中一个处理者对象对其进行处理。 责任链模式可以将请求的发送者和接收者解耦 责任链模式允许多个处理者对象对请求进行处理,无须让发送者类与具体的接收者类相耦合 组成: 处理者(handler):…

2023年12月21日

敏捷故事-背景一

基本原则: 不要在项目开始阶段就做一套完善的,包罗万象的决策 把各个决策分散在项目过程中 用户故事描述了对用户、软件或软件购买者有价值的功能 由以下三个方面组成: 一份书面的故事描述,用于做计划和提示 有关故事的对话,用于具体化故事细节 测…