- 昨日不在
- 9/2501.10 泛型与可复用算法:什么时候为 IM 代码加类型参数
- 9/2501.11 反射与底层边界:读懂消息编解码的运行期检查
- 9/2502.09 加权路径与状态空间:最少跳数不等于最低代价
- 9/2502.10 动态规划与贪心:有限处理预算怎样选批次
- 9/2502.11 近似与专用结构:前缀、位图、Bloom 与并查集
- 9/2502.12 业务算法评审:把正确性、规模与退化方案写全
- 9/2503.11 隔离与限制:主机空闲为何 IM 网关容器仍超时
- 9/2503.12 资源故障案例:描述符耗尽、磁盘满与网关退出
- 9/2504.08 Go 网络 I/O:短读短写、帧、期限与取消
- 9/2504.09 代理与负载均衡:逐跳追踪请求和超时
- 9/2504.10 HTTP 版本与 RPC:流控、模式和错误分层
- 9/2504.11 网络层与链路层:NAT、MTU 与移动路径
- 9/2504.12 网络排障与协议演进:用阶段证据审一次断线
- 9/2510.08 依赖与质量工具:版本固定之后还要查什么
- 9/2510.10 持续交付与版本管理:发布成功为何还要看消息
- 9/2510.11 技术写作与协作:让没参加讨论的人也能修 m-9
- 9/2510.12 维护性评估:R9 为何会牵动这么多地方
- 9/2511.04 诊断方法:先画像,再证伪 IM 消息慢
- 9/2511.05 CPU 与内存性能:消息变慢是算力、分配还是等待
- 9/2511.06 I/O 与网络性能:低 CPU 时消息为何仍迟到
- 9/2511.07 压测与容量:IM 上线前如何验证连接、发送和扇出
- 9/2511.08 SLO 与告警:从 IM 用户结果到错误预算
- 9/2511.09 过载与级联故障:重试如何压垮 IM 历史补拉
- 9/2511.10 事件响应:B 历史补拉迟到时怎样止损与恢复
- 9/2511.11 复盘与改进:一次 IM 补拉迟到后怎样减少复发
- 9/2511.12 容量与成本决策:连接、群扇出、历史留存怎样一起算
- 9/2512.01 运行环境与制品:从 Go 二进制到可核对镜像
- 9/2512.02 容器机制:镜像、进程、可写层和长连接退出
- 9/2512.03 本地多服务环境:服务名、端口、就绪与配置
- 9/2512.04 集群控制模型:三个 IM 网关副本怎样被维持
- 9/2512.05 工作负载与服务发现:网关、存储和后台任务怎样选
- 9/2512.06 资源与持久存储:Pod 能调度不等于消息能恢复
- 9/2512.07 配置与权限:ConfigMap、Secret、身份和网络边界
- 9/2512.08 启动、探针与退出:长连接网关怎样安全摘流
- 9/2512.09 发布与回滚:三个网关副本怎样分阶段换制品
- 9/2512.10 扩缩容与故障域:一个 Node 倒下为何三副本网关仍不够
- 9/2512.11 声明式交付与可重复环境:配置合并后为何仍未生效
- 9/2512.12 平台作为产品:新 IM 服务接入为何还要找人救火
- 9/2513.01 问题定义与利益相关者:不能丢消息到底要保证什么
- 9/2513.02 领域与状态建模:同一条消息为何有多种身份与进度
- 9/2513.03 模块与信息隐藏:消息接口为什么不能暴露分区和表名
- 9/2513.04 架构风格与边界:IM 拆服务前先算事务和故障代价
- 9/2513.05 容量与数据设计:连接、群扇出、历史和恢复要算四本账
- 9/2513.06 质量属性的冲突:IM 的快、稳、安全和成本如何一起谈
- 9/2513.07 设计说明与评审:把 IM 方案写成可反驳的决定
- 9/2513.08 迁移与兼容:旧内存受理不能凭回填变成权威历史
- 9/2513.09 跨团队交付:网关、客户端与数据变更如何一起过业务门
- 9/2513.10 技术债与演进:IM 协议每改一次为何总要补同一个洞
- 9/2513.11 复杂案例答辩:热群、长离线和旧客户端一起变时怎么选
- 9/2513.12 工程师的长期责任:让 IM 的承诺能被接手、复核和修正
- 9/2514.01 Python 与数据工作:Go 学习者怎样整理虚构 IM 样本
- 9/2514.02 必要数学与机器学习直觉:相似不等于真实,也不等于有权
- 9/2514.03 语言模型基础:会生成下一词为什么仍可能答错 IM 合同
- 9/2514.04 Transformer 与推理路径:注意力、prefill 和 KV 缓存怎样影响聊天
- 9/2514.05 提示与结构化输出:让 IM 资料回答可检查
- 9/2514.06 检索与索引:从资料切分到有权证据
- 9/2514.07 RAG 完整链路:从有权证据到可核回答
- 9/2514.08 工具、工作流与 Agent:让 IM 动作可控可恢复
- 9/2514.09 评测与数据工程:先定 IM 问题和关键词基线,再比较 RAG
- 9/2514.10 优化与部署:按成功 IM 任务衡量质量和成本
- 9/2514.11 微调与多模态选修:何时值得改变模型
- 9/2514.12 可持续交付:版本、灰度、回滚与故障响应
- 9/2401.09 包设计与依赖演进:让消息规则和文件细节各守边界
- 9/2401.12 完整命令行工具:导入、核对与导出本地 IM 历史
- 9/2402.02 线性结构:为有限 IM 发送队列选择表示
- 9/2402.03 搜索与循环不变量:在有序消息序号中定位补拉起点
- 9/2402.04 哈希与集合:在有限窗口内识别重复消息身份
- 9/2402.05 排序与分治:给 IM 历史建立可复核的顺序
- 9/2402.06 树与有序索引:从会话序号范围走到 B+ 树直觉
- 9/2402.07 堆与优先调度:从到期任务到 Top-K 热会话
- 9/2402.08 图与依赖遍历:从用户关系到任务拓扑
- 9/2403.02 进程与系统调用:本地 IM 工具怎样运行在操作系统上
- 9/2403.03 Linux 进程与资源:从本地 IM 工具的运行现场定位问题
- 9/2403.04 CPU 调度:可运行、等待与 IM 连接负载
- 9/2403.05 虚拟内存:从地址翻译到网关驻留预算
- 9/2403.06 分配与映射:从 Go 对象到进程 RSS
- 9/2403.07 文件与目录:从聊天日志轮转理解名字与打开对象
- 9/2403.08 持久化机制:从历史文件替换到崩溃后恢复
- 9/2403.09 I/O 与事件通知:从长连接就绪到完整消息
- 9/2403.10 系统诊断:从 IM 消息时延到资源证据链
- 9/2404.01 应用通信与分层:一条 IM 消息跨过哪些边界
- 9/2404.02 地址、名称与路由入口:找到教学 IM 服务的正确层次
- 9/2404.03 HTTP 与 WebSocket 入门:从历史查询到双向消息通道
- 9/2404.04 可靠传输:TCP 确认了字节,还没确认消息
- 9/2404.05 TCP 与长连接生命周期:握手、半关闭、心跳与重连
- 9/2404.06 流量与拥塞控制:慢设备和网络瓶颈怎样拖慢 IM
- 9/2404.07 TLS 与身份:加密一条连接不等于授权一条消息
- 9/2405.01 并发任务与生命周期:让 Go 的 IM 处理工作有明确归属
- 9/2405.02 同步原语:保护共享会话状态的一次完整变化
- 9/2405.03 channel 与取消:让 IM 发送队列能等待也能停止
- 9/2405.04 Go 内存模型:从共享在线状态到同步保证
- 9/2405.05 Go 调度模型:从长连接等待到 G/M/P
- 9/2405.06 Go 内存生命周期:从小消息视图到大缓冲保留
- 9/2405.07 Go 垃圾回收:从群聊扇出到存活集与时延
- 9/2405.08 并发组合:从有限群扇出到按会话串行
- 9/2405.09 并发验证:从发送与关闭交错到资源退出证据
- 9/2405.10 性能工具与解释:从群聊时延到 Go 运行证据
- 9/2405.11 优化边界:从少复制到池化、批量与可维护性
- 9/2405.12 并发服务复盘:从慢设备到退出失败的因果链
- 9/2406.01 关系模型与业务身份:从会话和消息画出第一张数据表
- 9/2406.02 SQL 从读写到复杂查询:按会话读取消息历史
- 9/2406.03 模式设计与演进:让会话历史经得起改名和退群
- 9/2406.04 页与缓冲池:从会话历史行到缓存命中
- 9/2406.05 索引结构:从历史游标到消息点查
- 9/2406.06 查询执行与优化:从历史分页读懂计划
- 9/2406.07 事务与并发异常:成员退出时还能发送吗
- 9/2406.08 锁与 MVCC:退群时谁看见哪一版
- 9/2406.09 日志与崩溃恢复:消息提交后还能找回吗
- 9/2406.10 Go 数据访问:从历史查询到驱动、游标与资源责任
- 9/2406.11 复制、迁移与对账:历史消息怎样安全切换
- 9/2406.12 数据库业务案例:消息保存、历史与热点
- 9/2407.01 访问模式与状态角色:哪些数据可以丢
- 9/2407.02 Redis 数据模型:从访问方式选择结构
- 9/2407.03 缓存读取与更新:迟到回填怎样复活旧值
- 9/2407.04 缓存过载与热点:群聊预览失效时谁承压
- 9/2407.05 缓存服务的持久与故障:恢复后还能信哪份状态
- 9/2407.06 消息抽象:在线提示、后台任务与可回放日志
- 9/2407.07 确认、重投与去重:一次处理为何可能做两遍
- 9/2407.08 顺序与并发消费:日志有序为何结果倒退
- 9/2407.09 积压与坏消息:最老事件为何一直没处理
- 9/2407.10 事务边界与 outbox:消息提交了,事件还没发
- 9/2407.11 派生视图与事件时间:迟到消息怎样修正结果
- 9/2407.12 跨系统数据一致性案例:从发送到离线补拉
- 9/2408.01 系统模型与部分失败:一次超时究竟发生了什么
- 9/2408.02 时间与顺序:多设备消息怎样判先后
- 9/2408.03 复制的目标与代价:确认到哪一层才可读
- 9/2408.04 一致性模型:刚发的消息何时可见
- 9/2408.05 分区与再平衡:会话迁移时 E9 去哪里
- 9/2408.06 多数与共识:三副本何时能承诺消息
- 9/2408.07 协调与对象归属:旧网关恢复后还能投递吗
- 9/2408.08 跨服务事务:消息已保存,通知失败怎么办
- 9/2408.09 可靠任务与调度:通知重试如何不冒充送达
- 9/2408.10 成员变化与演进:新旧节点怎样共同处理 m-9
- 9/2408.11 分布式验证:一条旧读何时真违反承诺
- 9/2408.12 完整一致性案例:一条 IM 消息的事实、归属与恢复
- 9/2409.01 需求与应用边界:谁能给谁发消息、成功到哪一步
- 9/2409.02 HTTP 接口设计:会话历史与消息提交的可核对合同
- 9/2409.03 程序组织:让 handler、业务规则与内存适配器各守边界
- 9/2409.04 请求处理链:中间件、取消与响应提交
- 9/2409.05 数据访问与迁移:让 IM 历史查询和消息提交有清楚边界
- 9/2409.06 浏览器与客户端边界:Cookie、跨源与 IM 请求
- 9/2409.07 认证与授权:从登录主体到会话消息权限
- 9/2409.08 输入与输出防护:IM 正文、附件和链接的不同边界
- 9/2409.09 异步与长任务:提交历史导出后如何查询和取消
- 9/2409.10 协议兼容与 RPC:能解析消息不代表业务安全
- 9/2409.11 应用测试与交付:把 IM 接口合同变成可复核证据
- 9/2409.12 完整服务项目:从内存单聊到有边界的持久教学 IM
- 9/2410.02 测试基本方法:用可核对的预期保护 IM 消息规则
- 9/2410.04 测试替身与设计:控制依赖,验证消息规则
- 9/2410.05 重构与模块边界:保持本地 IM 工具的外部行为
- 9/2410.06 代码审查与合并:让 IM 历史规则变更可复核
- 9/2410.07 并发与属性验证:没有 data race 为何还重复发送
- 9/2410.09 持续集成与制品:让 IM 变更留下可复核证据
- 9/2411.01 业务结果与测量:每个 IM 指标先写清分母和确认点
- 9/2411.02 分布与统计:平均值为何掩盖 IM 尾延迟
- 9/2411.03 日志、指标与 Trace:沿 IM 请求链留下有限证据
- 9/23虚构 IM 业务地图:沿一条消息理解系统
- 9/23概念与先修索引
- 9/23实践环境:按阶段增加依赖
- 9/23个人学习记录:理解、运行与迁移
- 9/23学习方法:从 Go 初学者走向高级 IM 工程实践
- 9/23课程编写状态与能力验收
- 9/23IM 主项目:OpenIM 选型、源码入口与教学边界
- 9/23IM 学习路线:以 OpenIM 为参照从零走向高级工程实践
- 9/2301.01 程序、源代码与一次运行
- 9/2301.02 类型与数据表示:从积分数值到可靠输入
- 9/2301.03 控制流与函数:把 IM 消息规则写清楚
- 9/2301.04 数组、切片与文本:组织会话消息
- 9/2301.05 map、结构体与指针:组织消息身份与会话状态
- 9/2301.06 方法与接口:让会话存储依赖能力而非具体实现
- 9/2301.07 错误与资源生命周期:让本地历史的失败原因与关闭责任可追踪
- 9/2301.08 常用标准库协作:把本地消息历史变成可检查的记录
- 9/2302.01 离散对象与成本模型:估算一批 IM 消息的工作量
- 9/2303.01 数据、指令与存储层次:一条 IM 消息怎样占用资源
- 9/2310.01 可验证需求:把 IM 消息规则写成可检查的约定
- 9/2310.03 Git 状态与版本记录:保存和解释一次 IM 规则修改
- 9/22经典书籍与教程调研:知识覆盖如何进入课程
- 9/16结构体、方法与指针接收者
- 9/14map 从基础到实战
- 9/9数组、切片与底层数组关系
- 9/8多返回值、defer、panic 与 recover
- 8/20包、程序入口、变量与常量
- 7/1VS Code Copilot 专栏
- 7/1黄金期货产业链投资研究
- 7/1用 Copilot 自动生成 Git Commit Message
- 6/17重庆招聘市场需求现状与长期职业路线规划
- 6/15mattpocock/skills 安装与迁移指南
- 6/15中国传统 Go 技术栈程序员就业前景与 AI 冲击研究
- 6/9配置 Excalidraw Diagram Skill
- 6/5用全局 CLAUDE.md 让 Claude Code 输出更清晰
- 6/2VoltAgent subagents 配置与使用
- 6/2Claude Code 专栏
- 5/25Pi Coding Agent 专栏
- 5/25Pi 是什么
- 5/25安装与个人配置迁移
- 5/25日常工作流
- 5/25扩展系统
- 5/25源码架构
- 5/25SDK 与 RPC 自动化
- 5/9金融终端
- 5/9AI 研究 Agent
- 5/9多通道 Copilot
- 5/9MCP 工具生态
- 5/9全局对比
- 5/9技术原理
- 5/9设计思路
- 5/9金融 AI 生态全景
- 5/9多智能体交易
- 5/9TradingAgents 专栏
- 5/9多智能体交易系统架构全景
- 5/9智能体角色体系设计
- 5/9端到端交易决策工作流
- 5/9使用方式与应用场景
- 4/29GitHub 辅助软件设计工具调研
- 2/9MCP 专栏
- 2/9引言与 MCP 概述
- 2/9核心概念:资源、工具与提示
- 2/9行业应用案例
- 2/9安全性最佳实践
- 2/9展望未来:AI 智能体
- 2/9执行摘要与总结
- 2/9实战第一步:环境搭建
- 2/9实战第二步:Server 开发
- 2/9实战第三步:运行与调试
- 2/9实战第四步:Client 开发
- 2/9概览
- 1/19AI 探索与实践
- 1/19OpenCode 专栏
- 1/19计算机基础
- 12/12ArchiveBox 使用指南(Docker Compose)
- 11/11git命令别名配置建议
- 11/5NATS 安装
- 11/5NATS 简介
- 11/4简介
- 9/25HR会问的一些高频问题
- 9/25线程和协程
- 9/17开发计划
- 9/17秒杀购物系统实现
- 9/16三大核心机制
- 9/16原子类型
- 9/16其他同步机制
- 9/16通道(channel)
- 9/16条件变量
- 9/16通道(channel)
- 9/16互斥锁
- 9/16实践案例
- 9/16读写锁
- 9/16线程间的数据同步
- 9/12Rust模拟面试
- 9/12原子操作
- 9/12虚函数和虚表
- 9/11缓存命中优化
- 9/11线程调度策略
- 9/10使用Rust实现FTP
- 9/4进程间通信
- 9/4共享内存
- 9/3进程与线程的资源
- 8/23线程的上下文切换
- 8/23导读
- 8/21QUIC协议详解
- 8/20HTTP的进化史
- 8/20基础介绍
- 8/18二面内容
- 8/14定时器
- 8/13夸克一面面经
- 8/12TCP协议
- 8/11线程池
- 8/11什么是ELF文件
- 8/11什么是内存对齐
- 8/10排序排列
- 8/10引言
- 8/10程序的加载过程
- 8/10程序的内存布局
- 8/8美团-移动端-容器开发
- 8/8核心思想
- 8/8链表环
- 8/8限流器实现
- 8/8Lua脚本 vs Pipeline
- 8/8数据结构
- 8/8简介
- 8/8打家劫舍
- 8/8互不侵犯
- 8/8脚本加载
- 8/8锁介绍
- 8/8读写锁
- 8/8从源文件到可执行程序
- 8/8核心思想
- 8/8重写 vs 重载 vs 多态
- 1/20AI 开发工具的进化史
- 1/20OpenCode 架构全景
- 1/20会话循环机制
- 1/20工具系统设计
- 1/20MCP 协议深度解析
- 1/20Provider 抽象层