- 博客(48)
- 收藏
- 关注
原创 多卡多机训练任务调度系统:从梯度平均到拓扑感知调度
一个任务要占 8 台机器 64 张卡,少一张都开不了;另一个模型单卡装不下,必须把一层矩阵劈成四份分别算。本文把「为什么要这么切」「切完怎么同步」「调度器到底管什么、不管什么」一层层拆开,最后给出一套可落地的调度器设计。
2026-10-16 22:04:48
361
原创 大模型架构演进史:从 Transformer 到 Jev
回到开头的问题。从 Transformer 到今天,主流模型的骨架没有变过:ChatGPT 与推理模型改变的,是训练方式;DeepSeek 与 Qwen 改变的,是内部组件;Jev 保留了这套骨架的读取部分和 LLM 级的理解能力,去掉了生成部分。而 Laya 的对照说明了一件很值得记住的事:去掉生成这一步本身并不难,难的仍是底层网络的理解能力。最后留一条判据判断一个模型属于哪条路线,看名字没用,只看两点:① 注意力是不是因果掩码;② 结果是不是逐 token 生成出来的。
2026-09-26 09:10:37
283
原创 进程、线程、协程到底有什么区别?一文彻底搞懂三者关系
进程、线程、协程是后端开发与并发编程面试的必考题。本文用生活化比喻 + 6 张示意图 + 对比表格,讲透三者的概念、差异与典型开销,并深入 Go 的 GMP 调度实战(hand-off / work-stealing / 连续栈扩容 / SIGURG 异步抢占),附 9 道高频与进阶面试题。
2026-09-12 09:15:11
221
原创 如何让 Agent 在垂直领域真正脱颖而出
垂直领域 Agent 的竞争力不在模型大小,而在「地基 + 决策 + 进阶」三层十维度的工程能力。本文系统梳理十个能力维度,给出落地路径与 7 条常见误区。
2026-09-05 15:10:23
207
原创 MCP 实战指南:如何在项目中使用 Model Context Protocol 及其通信原理
一句话总结:MCP 是一套「参与者模型(Host/Client/Server)+ 三类意图原语(Tools/Resources/Prompts)+ 基于 JSON-RPC 2.0 的可协商生命周期 + 可插拔传输(stdio / Streamable HTTP)」的开放协议。它把 AI 应用与外部工具的连接从 N×M 降到 N+M,但只标准化了通道,不标准化信任与治理——安全与治理责任在你。通信内容:JSON-RPC 2.0(请求 / 响应 / 错误 / 通知)。initialize。
2026-08-22 09:33:52
409
原创 Agent 上下文管理方案全景汇总:四大框架 × 主流产品组合
系统梳理主流 Agent 产品的上下文管理方案:从 Anthropic 四大操作框架(Write/Select/Compress/Isolate)出发,逐类拆解摘要压缩、上下文编辑、五级自适应压缩、交接班模式等 20+ 种方案,并对比 Claude Code、Codex、OPENDEV、Manus、Cursor 等产品的组合形态。
2026-08-08 16:35:06
317
原创 Agent Skill 体系全解:从渐进式披露到生产级管控
在没有 Skill 之前,Agent 工程里最常见的「领域能力复用」就是把一段固定的 Prompt 拼到 System Message 末尾、或者封装成一个 Go/Python 工具函数。上下文爆炸:每个领域 SOP 几百行,10+ 领域一次性全部塞进 system prompt,首轮 token 就爆了。模型选择刚性:文档解析、代码生成、数据清洗三种工作流可能各自需要不同的模型,但 System Prompt 级别的拼法无法做到"某段流程切模型"。版本管理混乱。
2026-08-01 21:21:57
364
原创 TCP 完全指南:从连接建立到流量控制的全方位解析
用网络带宽的冗余和时间的等待,换取应用层的“零丢包、零乱序”错觉。阶段核心机制一句话总结建立连接三次握手 + 超时重传交换随机序列号,确认双方收发正常。丢包了就重传,直到成功或超时。数据传输序列号 + 累积确认 + 快速/超时重传给每个字节编号,接收方按序拼接。丢包了靠冗余 ACK 或超时精准补发。速度控制流量控制(rwnd)+ 拥塞控制(cwnd)接收方说“吃不下”就逼停(零窗口探测保活);网络说“堵了”就减速(慢启动+线性增长)。双向通信全双工 + 独立序列号/窗口。
2026-07-25 17:02:26
312
原创 MySQL索引与性能调优完全指南
在数据库的世界里,索引是性能优化的核心武器。一个设计良好的索引能让查询速度提升成百上千倍,而一个错误的索引设计则可能让数据库陷入全表扫描的泥潭。本文将系统性地梳理MySQL索引的完整知识体系,从最底层的B+树存储结构,到索引的分类、使用策略,再到EXPLAIN性能调优实战和索引失效场景,力求让你一文搞懂索引的“前世今生”。
2026-07-17 21:57:31
326
原创 Go Map 扩容机制完全解析:从底层设计到渐进式迁移
Go 语言的 map 是日常开发中最常用的数据结构之一,但其底层的扩容机制却隐藏着许多精妙的设计。本文将从底层数据结构开始,逐步深入,系统性地剖析 Go map 的扩容机制,包括为什么需要溢出桶、渐进式迁移的详细流程,以及在扩容期间如何正确查找到目标值。本文基于 Go 源码进行分析,涉及核心数据结构与函数包括hmapbmapgrowWork()evacuate()等。负载因子 = 总元素数 / 总桶数,阈值 6.5 是全局平均值。但在哈希表中,数据分布绝不均匀。例如B=4。
2026-07-09 20:00:00
411
7
原创 Transformer 架构与自注意力机制详解
Transformer的核心创新在于完全基于注意力机制处理序列数据,摒弃了传统的循环结构。其架构包含编码器(双向处理输入)和解码器(单向生成输出),核心组件包括多头自注意力(并行计算词间关系)、位置编码(注入顺序信息)、前馈网络和残差连接。编码器通过自注意力建立全局上下文表示,解码器则结合掩码自注意力和交叉注意力逐步生成输出。这种设计实现了:1)任意距离词直接交互;2)全序列并行计算;3)通过多层堆叠捕获复杂模式。现代变体如GPT(纯解码器)和BERT(纯编码器)针对不同任务简化了原始结构。Transfor
2026-06-27 21:15:48
380
原创 从 SSE 到 Streamable HTTP:看懂 MCP 最新传输协议演进
SSE(Server-Sent Events,服务器发送事件)是一种基于 HTTP 的实时推送技术。传统 HTTP 的工作方式是:连接结束而 SSE 的工作方式是:Client → 建立连接Server → 持续推送数据Server → 持续推送数据Server → 持续推送数据服务器保持连接不断开,并不断向客户端发送事件。
2026-06-20 17:32:24
818
原创 RAG的介绍及应用场景
RAG(检索增强生成)是一种结合外部知识检索与大语言模型生成能力的技术,通过"检索-生成"双阶段流程解决传统大模型的三大痛点:知识时效性不足、事实性偏差和私有数据缺失。其核心流程包括数据处理(分块/向量化)、检索(混合检索/权限过滤)和生成(上下文注入/答案溯源)三个阶段。在企业应用中,RAG通过智能分块、混合检索和生成溯源等机制,确保回答的准确性、合规性和可验证性,典型应用于企业知识库、智能客服等场景。随着技术进步,RAG正从基础版本向具备自主决策能力的智能体驱动方向发展。
2026-06-14 17:29:57
377
原创 HTTP 协议版本演进:从 TCP 连接到 QUIC
HTTP/1.1 解决的是连接成本,HTTP/2 解决的是请求顺序,HTTP/3 解决的是传输层的生死依赖。每一次升级都在剥离上一代的隐含假设:网络不再可靠,延迟不再固定,而你的应用必须感知这一切。
2026-06-07 16:25:26
503
1
原创 skill、tool、MCP之前的区别和联系
你可以把它想象成AI世界的"USB-C接口",只要符合协议,任何设备(MCP Server)都可以即插即用地接入任何主机(MCP Host)。:模型在收到你的问题后,会查看可用的Tool列表及其描述,然后自主决定是否需要调用某个Tool,并从问题中提取参数来执行它。:一个"订单处理技能",内部可能包含检查库存、计算价格、生成工单、发送确认邮件等多个步骤,并处理"库存不足"等异常情况。:一个MCP Server写好后,Claude、Cursor、Continue、所有支持MCP的工具都能用。
2026-05-31 17:07:50
434
原创 Claude Code 完整使用指南 + Superpowers 实战
在项目根目录创建CLAUDE.md# 项目规范## 技术栈- Docker 部署## 代码规范- 错误处理必须用 %w 包装- 所有公共函数必须有 godoc 注释- 数据库操作必须在 repository 层- 不允许在 handler 层写业务逻辑## 测试要求- 单元测试覆盖率 > 80%- 使用 testify 断言- Mock 外部依赖用 gomock## Git 规范- commit message 使用 conventional commits 格式。
2026-05-20 15:13:59
769
原创 GORM——基础介绍与CRUD
GORM的"全功能ORM"意味着它是一个功能完备、特性丰富的Go语言对象关系映射库,不仅实现了基础的CRUD操作,还提供了从关联关系、事务管理到自动迁移等全方位的数据库操作支持,让开发者能以面向对象的方式高效处理数据库交互。模型是使用普通结构体定义的。这些结构体可以包含具有基本Go类型、指针或这些类型的别名,甚至是自定义类型(只需要实现包中的Scanner和Valuer接口)。考虑以下user模型的示例:ID uint 主键的标准字段。
2026-04-24 16:38:36
433
原创 go定时器的底层原理和应用
Go 定时器的设计体现了语言对高性能与易用性的平衡。从早期的全局锁到 Per-P 私有堆,再到 Go 1.23 的 GC 友好重构,每一次演进都旨在解决实际工程痛点。作为开发者,理解其底层机制不仅能帮助我们写出更健壮的代码,也能在性能调优和故障排查中游刃有余。记住:善用定时器,更要懂得如何“放手”。
2026-04-04 15:49:59
467
原创 JWT详细介绍
基于 JSON,多语言通用可以存储非敏感信息占用很小,便于传输服务端无需存储,利于分布式拓展Token 刷新问题一旦签发则无法主动控制JWT 全名 JSON Web Tokens,它是一种开放的,安全的,紧凑的,以 JSON 对象为载体在服务双方之间传输信息的方式,它的特点就是安全性高,内容防篡改,消耗低。结构Header 头部Payload 载荷Signature 签名然后每一个部分用一个点来分隔,最后组成一个字符串,格式就是。
2026-01-26 14:15:37
1090
原创 GO Web开发详细流程(无框架,restful风格,MVC架构)
/ User 用户实体(对应数据库表结构)DTO(Data Transfer Object):用于请求 / 响应的数据格式(与实体解耦,避免直接暴露数据库字段)// CreateUserRequest 创建用户请求DTO// UpdateUserRequest 更新用户请求DTO// UserResponse 用户响应DTO。
2025-12-15 15:34:56
825
6
原创 Cookie,Session的介绍和如何保持TCP连接
方式特点场景数据存在 Cookie(签名加密)小项目(推荐)数据存在 Redis,支持分布式大型网站、后台map 手写 Session理解机制学习用服务端生成 SessionID → 写入 Cookie → 客户端每次访问带上 → 服务端查 Session 数据。
2025-12-08 20:47:36
1023
原创 HTTPS详解,及与HTTP的差异
HTTP:超文本传输协议(HyperText Transfer Protocol),是互联网上应用最广泛的无状态、明文传输协议,用于客户端(浏览器 / APP)与服务器之间的数据交互,默认端口为 80。HTTPS:超文本传输安全协议(HyperText Transfer Protocol Secure),是 HTTP 的加密增强版,通过 SSL/TLS 协议对传输数据进行加密,默认端口为 443。本质是 “HTTP + SSL/TLS”,在 HTTP 基础上增加了安全层。
2025-12-01 11:30:38
2919
原创 TCP与UDP的区别
TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的传输层协议。它确保数据包按顺序且无误地传送到接收方。
2025-11-23 09:34:19
1263
原创 go-context创建及使用详细概括
Context(上下文)是Go语言中一个非常重要的概念,它主要用于在多个goroutine之间传递。Context在Go 1.7版本中被正式引入标准库,现已成为处理并发控制和请求作用域数据的标准方式。Context的核心思想是提供一种统一的方式来管理goroutine的生命周期,特别是在处理传递截止时间和取消信号的场景中。
2025-11-15 19:39:53
818
原创 链表算法---基本算法操作(go语言版)
首先:假设慢结点走了b步,则快结点走了2b步,设环长为c,快结点比慢结点在相遇时在环中走了多走了k圈,则2b-b=kc。方法二:用快,慢结点。快结点走两个结点,慢结点走一个,如果是环形链表肯定会相遇,如果不是在快结点走到尾返回。,若存在相交节点,两指针会在同一节点相遇(即交点)。最后:慢结点在走a步就能到达入环点(初始位置),并且头结点到达入环点的位置也是a。其次:设从头结点到入环点的长度为a,则b-a就是慢结点在环中走的路程=kc-a。在力扣环形链表Ⅱ中,判断是否有环形链表,及找到入环点。
2025-11-09 16:34:42
1180
原创 将go-tcp项目部署到docker容器下运行
在本机终端运行以下命令,将本地项目传输至虚拟机指定目录:-rusernameyour_vm_ip。
2025-11-02 17:01:27
895
原创 go-stream(一些常用命令介绍,以及在go-tcp中使用)
在 Go 中使用 go-redis 时,XAck()用于确认一条或多条消息已被消费,是消费组模式下的关键操作。基本用法示例if err!= nil {fmt.Printf("确认了 %d 条消息\n", ackCount)参数说明"mystream":目标流名称。"mygroup":消费组名称。:消息 ID(支持传递多个 ID)。返回值ackCount表示成功确认的消息数量。
2025-10-26 17:19:23
922
原创 Redis位域详细介绍
特性 描述本质 对字符串类型的扩展操作,将其视为整数位段数组。核心价值 紧凑存储、原子操作、灵活的类型定义。关键命令 BITFIELD,包含 GET, SET, INCRBY 子命令。原子性 一个 BITFIELD 命令中的所有子操作是原子执行的。溢出控制 WRAP(默认), SAT, FAIL,为 INCRBY 操作提供保护。
2025-10-18 11:22:43
833
原创 关系型数据库与非关系型数据库
成熟稳定: 技术非常成熟,有强大的社区和企业支持。数据完整性: ACID事务保证了数据的强一致性和可靠性。标准化: SQL是通用语言,学习和迁移成本低。复杂查询: 强大的JOIN和复杂查询能力,适合做数据分析。关系型数据库像是一个严谨的图书馆管理员,一切都按规矩办事,确保每一本书都准确无误地放在正确的位置。而非关系型数据库则像一个灵活的仓库管理员,他可以用各种方式快速堆放和取出货物,以应对巨大的物流压力。没有最好的数据库,只有最合适的数据库。
2025-10-12 17:31:45
928
1
原创 mysql常见错误问题
备份表数据: mysqldump -u username -p dbname old_table > old_table_dump.sql 这将导出名为 old_table 的表的结构和数据到一个名为 old_table_dump.sql 的 SQL 文件。还原到新的数据库: mysql -u username -p new_dbname < old_table_dump.sql 这将在新的数据库(new_dbname)中创建一个名为 old_table 的表,并将之前导出的结构和数据导入到新表中。
2025-10-04 11:38:52
717
原创 MySQL索引基础详细介绍
/在创建表中定义唯一索引,主键索引,单值索引,复合索引age int,primary key(id), //主键索引unique index `ind_name` (name) //或者unique 索引名(字段名) 唯一索引key 索引名(字段名), //单值索引key 索引名(字段名1,字段名2) //复合索引 );
2025-09-27 11:37:29
973
1
原创 MySQL查询详细介绍
select 100;select 'jonw';select 100%98;select VERSION();select id,name as 名字 from stu;select id 编号,name 名字 from stu;注:变名尽量加双引号,或者单引号。select distinct id from stu; //一次只能去重一个字段只有充当运算符的功能select '123'+90 ; 结果为213select 'jos'+90; 结果为90select null +90; 结果为null注:
2025-09-22 21:26:56
761
原创 MySQL三范式详细解析
目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。即在满足第一范式的基础上,还要满足数据表里的每一条数据记录,都是可唯一标识的,而且所有非主键字段,都必须完全依赖主键,不能只依赖主键的一部分。问题:在上述该表中主键为姓名与部门名称组合的复合主键,而部分地址与姓名没有关系,只与部门名称存在关联,即部分依赖。改进:1.创建一个职位表,其中含有职位编号作为主键,职位名称,最低月薪,最高月薪。
2025-09-19 21:01:23
866
原创 Linux,docker知识补充
首先。创建一个test.txt 文件,在里面写如创建信息,格式如下:字段说明:username:用户名password:加密后的密码(可以用 openssl passwd -6 "密码" 生成)UID:用户ID(可选,留空则自动分配)GID:组ID(可选,留空则自动分配)User Full Name:用户全名(可选)/home/username:家目录/bin/bash:默认 shell(可选)然后,newusers test.txt。
2025-08-12 17:29:18
915
原创 Docker大全
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。原理:Docker镜像是由特殊的文件系统叠加而成最底端是bootfs,并使用宿主机的bootfs(内核)
2025-08-09 16:06:15
831
6
原创 go-Context
Go1.7加入了一个新的标准库context,它定义了Context类型,专门用来简化 对于处理单个请求的多个 goroutine 之间与请求域的数据、取消信号、截止时间等相关操作,这些操作可能涉及多个 API 调用。对服务器传入的请求应该创建上下文,而对服务器的传出调用应该接受上下文。它们之间的函数调用链必须传递上下文,或者可以使用WithCancel、WithDeadline、WithTimeout或WithValue创建的派生上下文。当一个上下文被取消时,它派生的所有上下文也被取消。
2025-07-29 10:30:48
511
原创 Go 并发(协程,通道,锁,协程控制)
互斥锁是完全互斥的,但是实际上有很多场景是读多写少的,当我们并发的去读取一个资源而不涉及资源修改的时候是没有必要加互斥锁的,这种场景下使用读写锁是更好的一种选择。M:线程想运行任务就得获取 P,从 P 的本地队列获取 G,当 P 的本地队列为空时,M 也会尝试从全局队列或其他 P 的本地队列获取 G。无缓存通道:只要通道的容量大于零,那么该通道就属于有缓冲的通道,通道的容量表示通道中最大能存放的元素数量。P 的本地队列:同全局队列类似,存放的也是等待运行的G,存的数量有限,不超过256个。
2025-07-22 16:33:17
1257
2
原创 MongoDB简介
索引支持在 MongoDB 中高效地执行查询.如果没有索引, MongoDB 必须执行全集合扫描, 即扫描集合中的每个文档, 以选择与查询语句 匹配的文档.这种扫描全集合的查询效率是非常低的, 特别在处理大量的数据时, 查询可以要花费几十秒甚至几分钟, 这对网站的性能是非常致命的.如果查询存在适当的索引, MongoDB 可以使用该索引限制必须检查的文档数.
2024-11-01 21:30:15
1670
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅