技术栈
go
ylj_dev
9 小时前
go
·
react
·
开源项目
·
工作流
·
ai agent
从 0 构建 AI Workload Platform(九):真实场景、最小控制台与开源发布
AI Workload Platform 的前六个模块已经完成了工作流内核、可靠控制面、Agent Runtime、独立 Worker、可观测性和受限执行器。此时系统可以通过 CLI、JSON 和 HTTP API 工作,但新用户仍然需要记住很多命令,也看不到一条连续的产品流程。HTTP API 是通过 HTTP 请求访问服务能力的接口;PostgreSQL 是保存这些业务状态的关系型数据库。
tyung
11 小时前
后端
·
网络协议
·
go
znet 数据编解码:字节流怎么变成消息
znet 读路径拿到的是一段 Ring Buffer 里的字节流(上一篇讲了零拷贝读)。这一篇只聊一件事:这一串没有边界的字节,怎么变成一个结构化的消息——协议头长什么样、PeekHeader12 怎么一次把头读出来、ParseFromRingBuffer 怎么逐帧切出来,以及 ParseData 怎么复用才不抖。
leeyi
13 小时前
go
·
aigc
·
agent
数据库迁移不翻车:golang-migrate 实战,143 个 DDL 有序执行(第97篇-E83)
上一篇 讲了 Agent 怎么测试。但还有一个更基础的问题:数据库 schema 怎么变?手动跑 SQL 总有人忘了加列、忘了写 down、忘了更新 CI。版本号撞车。dirty 状态没人管。DeepFlux 的答案是:golang-migrate + embed.FS + CI 链守卫 + 哨兵探针。这篇拆解 143 个迁移(000001~000143)是怎么做到不翻车的。
用户33014486763
14 小时前
go
mheap:全局堆管理器
前几篇 Wiki 我们层层向上:mcache 是 Per-P 的无锁缓存,mcentral 是每种 size class 的中心缓存。但它们都有枯竭的时候——当 mcentral 手里也没有空闲 span 时,就得找mheap 要。
用户33014486763
14 小时前
go
10. Large 对象分配:直接路径
摘要:本文深入剖析 Go 运行时大对象(>32KB)的分配路径。大对象分配跳过 mcache 与 mcentral 的缓存,直接从 mheap 按整页分配,span 采用"一个对象一个 span"的特殊结构(sizeclass=0、nelems=1)。文章依次讲解 mallocgcLarge 入口、c.allocLarge 的四步关键操作、大对象 span 的特殊性、绕过缓存的三点意义、GC 扫描与黑色分配、largeType 类型信息的原子发布、延迟清零与可抢占设计,最后给出完整调用链与 MemStat
yinchnag
15 小时前
设计模式
·
go
CRTP:奇异递归模板模式在 Go 模块系统中的实现
CRTP 的全称是 Curiously Recurring Template Pattern,中文通常译为“奇异递归模板模式”。它最早常见于 C++,典型写法是:
ylj_dev
1 天前
go
·
prometheus
·
可观测性
·
opentelemetry
·
故障注入
从 0 构建 AI Workload Platform(七):可观测性、故障注入与性能验证
我正在从零开发 AI Workload Platform:一个面向 Agent 与确定性程序任务的可靠运行时和调度平台。Agent(智能体) 是能够调用模型和工具、根据执行结果继续决定后续动作的程序;确定性程序任务则按照预先定义的代码和输入执行。工作流(Workflow) 是按依赖关系组织的多步骤执行定义,平台负责管理两类任务共有的工作流依赖、状态、重试、取消、恢复和执行节点。
我的div丢了肿么办
2 天前
后端
·
go
go语言中基本数据类型的转换
解决办法:转换为相同的类型注意:转换的时候建议从低位转换成高位(int8 -> int16 -> float32 -> float64) 高位转换成低位的时候如果转换不成功就会溢出,出现精度丢失的问题
newerp
3 天前
后端
·
程序员
·
go
语法分析与 AST:Parser 与 go/ast
词法分析把字符流切成了 Token 流,但 Token 流是"扁平"的——一串线性的 Token 序列。语法分析(Syntax Analysis)的任务是把这些 Token 组织成一棵抽象语法树(AST),赋予它们层次结构和语义关系。
newerp
3 天前
后端
·
程序员
·
go
Go 编译过程全景
你敲下 go build,几秒钟后一个静态二进制文件就出现了。但在这几秒钟里发生了什么?Go 编译器(gc,注意不是 GC 垃圾回收,而是 Go Compiler 的缩写)走过了一条完整的流水线:
stark张宇
3 天前
后端
·
go
Go语言runtime全景图:从编译到GC,带你彻底吃透Go的底层血脉
runtime 就是 Go 语言运行时,是 Go 自带的一套 C+Go 写的底层库,不是操作系统,介于你的 Go 业务代码和操作系统内核之间。 我们写的 Go 代码,编译之后会把 runtime 打包进可执行文件,程序跑起来时 runtime 就在后台工作。
名字还没想好☜
3 天前
开发语言
·
后端
·
算法
·
golang
·
go
Go 用 slices/maps 标准库泛型函数:告别手写 Contains、Sort、去重(Go 1.21)
你有没有在每个 Go 项目里都复制粘贴过一份 sliceContains、sortByField、uniqueStrings 的工具函数?Go 泛型落地前,这些代码只能靠手写,一个项目一份,还容易写错。从 Go 1.21 开始,标准库正式收纳了 slices 和 maps 两个泛型包,把这些高频操作一次性补齐。这篇就把最常用的函数过一遍,顺便讲清楚几个容易踩的坑。
运维开发笔记
4 天前
go
5.2 Go 数组进阶学习笔记(多维、排序、搜索)
多维数组是"数组的数组",Go 通过 [行][列] 语法定义:执行结果:要点:用嵌套 range 遍历多维数组更简洁:
newerp
5 天前
后端
·
程序员
·
go
Redis 操作与缓存策略
Redis 是高性能内存键值存储,在 Web 架构中承担缓存、分布式锁、限流、消息队列等多重角色。Go 生态中主流的 Redis 客户端是 github.com/redis/go-redis/v9。
newerp
5 天前
后端
·
程序员
·
go
GORM ORM 基础
GORM 是 Go 生态中最流行的 ORM 框架。它的设计哲学是:用 Go 结构体描述数据库表,用方法链表达查询逻辑,让开发者用面向对象的方式操作数据库,同时保留逃生通道(Raw SQL)。
newerp
5 天前
后端
·
程序员
·
go
CRUD 操作与预处理语句
CRUD(Create/Read/Update/Delete)是数据库操作的基本功。在 database/sql 体系下,除了直接拼 SQL 字符串,还有**预处理语句(Prepared Statement)**这一利器。预处理将 SQL 模板和参数分离,带来三个好处:
程序员爱钓鱼
5 天前
后端
·
google
·
go
Go 编程实战:闭包 Closure——函数如何记住外部变量
上一篇我们学习了匿名函数 Anonymous Function,知道函数不仅可以拥有名字,也可以直接写成:
橘bird
5 天前
go
Go 语言学习教程 万字精讲(新手完整版)
本文档是一份面向零基础/初学者的 Go 语言系统学习资料。从环境搭建开始,逐步覆盖基础语法、函数、复合数据类型、指针、结构体、接口、错误处理、包管理、并发编程、标准库、测试、泛型等全部核心主题,并配有大量可运行的代码示例(标注为”完整可运行程序“的代码块可以直接复制运行),最后附一个综合实战项目和常见坑清单。
用户33014486763
6 天前
go
08. mcentral:中心缓存的 span 管理
摘要:mcentral 是 TCMalloc 内存分配器的中心缓存层,作为 mcache(线程缓存)和 mheap(全局堆)之间的桥梁。它通过 partial[2]/full[2] 双缓冲设计实现零数据搬移的角色互换,采用四级查找策略(partialSwept → partialUnswept → fullUnswept → grow)高效分配 span,并通过 spanBudget=100 机制平衡清扫开销与空间浪费。mcentral 的核心价值在于为同 size class 的所有 P 提供共享的 s
用户33014486763
6 天前
go
07. mcache.refill:缓存补充与 span 归还
摘要:本文深入剖析 Go 语言内存管理中 mcache 的 refill 机制,这是连接本地无锁分配与中心化 span 管理的关键桥梁。当 mcache 中的 span 完全分配完毕时,refill 负责将旧 span 归还给 mcentral 并获取新 span。文章详细讲解了触发条件、完整流程、sweepgen +3 标记、allocCountBeforeCache 跨代统计、heapLive 乐观更新策略以及 mcache 的刷新机制(prepareForSweep 与 releaseAll)。理解