hankmo.com

HANKMO.COM

🧑‍💻潜心研技术,积极品人生!🌱

199
文章
18
分类
255
标签

📝 最新文章

大模型实战指南(2026年新春版):深度推理与智能体的时代

大模型实战指南(2026年新春版):深度推理与智能体的时代 最近被朋友问麻了:“老墨,都2026年了,GPT-5到底值不值那个天价订阅费?” “Claude 4的超长记忆真的不丢包了吗?” “国产模型现在的‘推理能力’是不是真的赶上来了?” 作为一个AI探索的老鸟,我想说:2026年的大模型之战,已经从“生成内容”变成了“解决复杂问题”。 如果说两年前大家还在惊叹AI能写诗、画图,那么现在,如果你不能帮我自主完成一个跨应用的工作流,或者进行长达半小时的深度逻辑推导,那你都不好意思叫顶尖模型。 今天老墨就把压箱底的实测经验掏出来,从实战角度对比国内外主流大模型(2026版)。不玩虚的排行榜,只聊“怎么用、在哪用、值不值得用”。 注意,这里老墨只列出正式发布的、能够直接上生产环境用的大模型版本,其他的还没有正式发布的版本比如 gpt-5.3-turbo-preview、 Google Gemini 3.0 Pro Preview 等暂不考虑。 此外,评分都是根据老墨的个人使用经验,难免有疏漏。如果有任何错误或建议,请在评论区留言。 先搞懂3个问题:老墨不说废话(2026年版) 1. 大模型现在进化到哪一步了? 别再只盯着“多模态”看了,那在2024年底就已经是标配了。2026年的关键词是: 深度推理(System 2 Thinking):模型不再是只会快思考的“鹦鹉”,它们现在能像人类一样慢下来,进行多步规划、自我反思和纠错。这是解决数学难题和复杂编程的关键。 智能体化(Agents):模型不再是一个等着你提问的聊天框,而是能主动操控浏览器、终端、为你点外卖、订机票的“数字员工”。 记忆与个性化:顶尖模型现在能记住你几个月前说过的话,真正成为了懂你的私人助理,而不是每次都要重新介绍背景。 2. 老墨的评分凭什么? 两年前的那些MMLU基准早就不够看了。现在老墨主要看: 复杂任务成功率:扔给它一个模糊的商业需求,它能不能拆解并最终交付结果? 推理深度与幻觉率:在长链条逻辑推导中,它会不会自己把自己绕晕?(现在幻觉已经大幅降低,但依然存在)。 智能体交互体验:它调用外部工具(如搜索、代码解释器、第三方API)顺不顺手? 3. 国内外模型现在的真实差距? 老墨结论(2026年版): 顶尖战力:OpenAI和Anthropic依然在**“深度推理”和“通用智能体架构”**上引领方向,属于“定义未来”的角色。 中国速度:国内头部大厂(阿里、字节、百度、深求)在应用层打磨得极好,在**特定领域(如中文语境下的复杂任务、性价比代码生成)**已经完全不输甚至局部领先国际巨头。 格局:以前是仰望,现在是平视。 国际主流大模型:探索智能上限的先行者 1. GPT-5 Omni (OpenAI) —— 深度推理的绝对王者 最新动态:2025年底发布的重磅炸弹,目前(2026年初)公认的战力天花板。 核心能力:革命性的“慢思考”模式(System 2)。遇到难题时,你会看到它显示“正在规划思路…”,然后进行长达数十步的自我推导和验证。此外,它的原生全模态(视频/音频/文本无缝实时流转)体验极其丝滑。 老墨评价:它是拿来解决你解决不了的问题的。 如果你只是写个邮件,用它属于杀鸡用牛刀。但如果你要设计复杂的软件架构、推导前沿数学猜想,或者需要一个能真正理解视频内容并和你实时语音辩论的AI,GPT-5 Omni是唯一选择。贵是真贵,强是真强。 适合场景:前沿科研、复杂系统设计、需要极高逻辑密度的任务、实时视频/语音深度交互。 老墨评分:9.9分(扣0.1分是因为价格和偶尔的过度思考) 在 Cursor 最新版本中早就支持了 GPT 5.3 版本,老墨也在测试中,目前来看,这是目前地球上写代码最强的“大脑”,代码理解能力超强,这里暂不赘述,后续在考虑撰文来评测一番。 2. Claude 4 Opus (Anthropic) —— 最像人的智能体与写作大师 最新动态:2026年初发布,继续在安全性、拟人化和长文本上死磕。 核心能力:超长且精准的记忆(支持跨度数月的对话回溯),以及业界最自然的写作风格。Claude 4在智能体操作(比如替你操作电脑完成一系列任务)方面表现得非常谨慎和可靠,极少出格。 老墨评价:最让人放心的数字员工。 如果说GPT-5是个智商爆表的理工男,那Claude 4就是个情商极高、文笔细腻、做事稳健的全能助理。写长篇深度文章、做需要高度遵循伦理的任务,我首选它。 ...

为什么我建议大家要学习Golang

为什么我建议大家学习Golang 大家好,我是极客老墨。 在互联网行业摸爬滚打十几年,从早期的LAMP时代,到Java的Spring全家桶,再到后来的云原生浪潮,老墨见证了技术的每一次变迁。 最近很多朋友问我:“老墨,现在的AI写代码这么厉害,大模型日新月异,智能IDE更是百花齐放,Claude Code、Cursor 简直是神,还需要专门去学一门后端语言吗?如果学,学什么比较好?Java还是Python?或者 Rust?” 这是一个非常好的问题。今天老墨就结合自己的经验,跟大家聊聊为什么在这个AI横行的时代,我依然建议大家掌握Golang,并且会手把手教你如何拿下它。 1. AI时代,为什么还要学后端语言? 很多同学觉得,现在AI不仅能生成CRUD代码,甚至能帮你完成全套编码、测试,这样的发展速度,我真的有必要学编程?我只需要会写Prompt不就行了吗? 大错特错。 AI确实能提高效率,但它目前还无法替代架构思维和底层认知。 知其然,更要知其所以然:AI生成的代码,如果出了Bug,或者性能不达标,你看不懂怎么调优? 不仅仅是Coder,更是Engineer:单纯的写代码(Coding)会被AI取代,但工程化能力(Engineering)——包括系统设计、并发处理、错误治理、服务部署,是AI很难完全掌控的。 掌握控制权:作为一名开发者,你不能做AI的傀儡。你需要有能力判断AI生成的代码是垃圾还是金子。 掌握一门强类型的、编译型的后端语言,能让你深入理解计算机的工作原理:内存管理、进程线程、网络协议。这些内功,是Prompt Engineering给不了你的。 2. 为什么是Golang? 在众多后端语言中,老墨首推 Go (Golang)。不是因为赶时髦,而是基于实用主义的考量。 Java:沉重的企业级战车 Java确实强大,生态无敌,将近30年了仍然是一门非常活跃的开发语言。但是: 太重了:Spring Boot启动一下,内存吃掉几百兆是常事。对于想要快速开发微服务或者云原生应用的极客来说,有点“大炮打蚊子”。 语法繁琐:虽然有了Lombok和新版本的语法糖,而且语法糖、新特性在一直增加,就是为了简化开发、提高效率,但比起Go的简洁,Java依然显得啰嗦。 JVM调优是玄学:GC调优、JVM参数配置,是一门高深的学问,对于初学者来说门槛较高。 Rust:陡峭的绝壁 Rust绝对是好语言,内存安全,性能极致。但是: 学习曲线太陡峭:所有权(Ownership)、借用(Borrowing)、生命周期(Lifetime),这些概念能劝退90%的初学者。老墨到现在仍然还在学习 Rust,深有体会! 开发效率:为了通过编译器的检查,你可能需要花费大量时间与编译器搏斗。对于大多数互联网业务应用来说,Rust的开发效率不如Go。 Golang:平衡的艺术 Go语言是Google出品,有着纯正的工程血统。 简单直接:只有25个关键字(早期),语法极其简洁,没有花哨的语法糖。任何Go程序员写的代码,风格都惊人的一致,这在团队协作中是巨大的优势。 天生并发:go func(),一个Goroutine开启并发,Channel进行通信。这是我见过的处理并发最优雅的方式,没有之一。 性能强悍:编译型语言,接近C/C++的性能,但开发效率接近Python。 云原生通用语:Docker、Kubernetes、Prometheus…这些云原生时代的基石,全是Go写的。学了Go,你就拿到了通往云原生世界的门票。 老墨总结: 如果你想快速构建高性能的后端服务,不想被复杂的语法和繁重的运行时拖累,Go是你的不二之选。 3. 极客老墨的Golang学习路径 很多同学这就去买书了,别急!听老墨一句劝:不要一开始就啃大骨头! 现代语言学习,讲究的是 “Learn by Doing”。 第一阶段:不仅是Syntax,更是思维转变(1-2周) 不要死记硬背语法。重点理解Go独特的概念: 接口(Interface):Duck Typing(鸭子模型),非侵入式接口,这和Java的implements完全不同。 Goroutine & Channel:不要用共享内存来通信,要用通信来共享内存。这是Go并发的核心哲学。 Defer & Panic:Go没有try-catch,适应它的错误处理机制。 第二阶段:标准库是最好的老师(2-3周) Go的标准库(Standard Library)写得非常漂亮。重点攻克: net/http:几行代码起一个Web Server。 fmt, io, bufio:理解IO操作。 encoding/json:JSON处理是后端日常。 context:重中之重! 并发控制、超时处理全靠它。 第三阶段:工程化实战(1个月) 光会写Hello World没用,你需要能干活的框架: ...

EP03 - 试图驯服一只猛兽:OpenClaw 的 Docker 监狱

EP03 - 试图驯服一只猛兽:OpenClaw 的 Docker 监狱 昨天我在测试 OpenClaw 的 “File System Tool” 时,发生了一件让我冷汗直流的事。 我给它的指令是:“清理一下当前目录的临时文件”。 可能是因为我的 Prompt 写得太随意,它直接把我的整个 ~/Downloads 文件夹给清空了。 幸好那里只有一堆没用的安装包。但如果它删的是我的 ~/Documents 或者 .ssh 密钥呢? 这就是我们在 link:/posts/ai/why-i-choose-openclaw/[] 里提到的代价:强大的能力伴随着巨大的风险。 一个拥有 Shell 权限的 AI Agent,本质上就是一个盯着你键盘随时准备按下回车键的超级用户。在裸机 (Bare Metal) 上直接运行它,无异于把自家大门的钥匙交给一个喝醉了的锁匠。 今天,我们要给这个不仅聪明而且危险的家伙,造一座牢不可破的监狱。 这也是极客生存法则第一条:永远不要信任你的 Agent。 本文涉及本地Native安装的一些知识,你可以阅读上一篇 EP02 来了解它们。 为什么一定要用 Docker? 很多人觉得 Docker 只是为了方便部署。 错。对于 Agent 开发来说,Docker 是保命符。 文件隔离 (Filesystem Isolation): 把它关在 /app 里。它想 rm -rf /?请便,删的只是容器里的文件,我的 Mac 毫发无损。 网络白名单 (Network Whitelist): 我们可以限制它只能访问特定的 API,防止它把我的本地数据传给不知名的服务器。 环境一致性: 你不用担心 Node.js 版本不对,或者缺了什么 Python 库。 手把手构建 “The Cage” 我们不需要什么花哨的 k8s,一个简单的 Dockerfile 和 docker-compose.yml 就够了。 但这里有几个针对 Mac 用户和 Ollama 的关键坑,我都替你踩平了。 ...

EP02 - 给你的电脑安装一个数字管家: 安装和搭建 OpenClaw

EP02 - 给你的电脑安装一个数字管家: 安装和搭建 OpenClaw 安装 OpenClaw 暂时抛开官方这些“深奥”的建议,我们先来尝试安装它,下一篇我们再来安全地把它关到“沙盒”中去。安装 OpenClaw 非常简单,只需要一行命令: 1# macos 2curl -fsSL https://openclaw.bot/install.sh | bash 3 4# windows 5iwr -useb https://openclaw.ai/install.ps1 | iex 但是过程中有许多注意的地方,以我的mac为例,我们来看一下安装过程。 终端执行上述命令后,会先检查一些依赖,比如node, npm等,如果你的电脑没有安装,需要先安装: 稍作等待,安装完成后,OpenClaw 会自动执行 OpenClaw doctor 命令,来诊断环境和安装是否正确。 由于我之前安装了旧版的 clawdbot, 它会自动迁移配置信息。 doctor 执行完成后,会自动进行设置,此时会弹出诸多选项让你做出选择,比如配置模型、配置聊天客户端、Skills 等。 最终完成会输出访问的url(默认是 http://127.0.0.1:18789), 就可以在浏览器中打开控制台(dashboard)了. 接入 Telegram (首选) 为什么首选 Telegram? 很遗憾,国内的IM目前 OpenClaw 都不支持, 对于飞书、钉钉的支持据说还在开发中,所以目前我们最好的方式就是选择 Telegram. 因为它是这个星球上对开发者最友好的 IM,没有之一: 不需要手机号验证码,不需要营业执照,不需要企业认证。 你只需要跟一个叫 @BotFather 的机器人聊两句,就能拿到通往 OpenClaw 的钥匙。 极客配置三步走: 搞定 Token 打开 Telegram,搜索 @BotFather (认准蓝标)。 发送指令 /newbot。 给你的机器人起个名字 (比如 MyJarvis) 和用户名 (必须以 bot 结尾,比如 my_jarvis_bot)。 BotFather 会给你一串红色的 Token,长得像这样:123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11。复制它 切勿外传,否则可能别人就帮你操作你的电脑了! 配置 OpenClaw 如果你之前已经设置了telegram,那么直接下一步。没有配置,则推荐使用交互式配置: 1openclaw channels add 选择 Telegram,然后粘贴 Token。 或者直接修改配置文件 ~/.openclaw/openclaw.json (更 Geek 的方式,不推荐,除非你完全掌握了OpenClaw): 1"channels": { 2 "telegram": { 3 "token": "YOUR_TOKEN_HERE" 4 } 5} 验证与配对 (Pairing) 在 Telegram 里找到你的机器人,点击 Start 或发送 /start。 ...

EP01 - 告别 Claude Desktop:为什么我选 OpenClaw 做我的数字管家

EP01 - 告别 Claude Desktop:为什么我选 OpenClaw 做我的数字管家 To be honest,Claude Desktop 发布 MCP (Model Context Protocol) 的时候,我是真的很兴奋。 但那种兴奋只维持了三天。 当你真正试图把 AI 融入工作流时,你会发现 Claude Desktop 有两个致命死穴: 它被困在桌面上:你必须坐在电脑前才能用它。 它是闭源的黑盒:你不知道它怎么处理你的文件,每一条指令都像在把家门钥匙交给那个坐在旧金山办公室的陌生人。 直到我发现了 OpenClaw。 Not Just a Bot, It’s a Gateway 先澄清一个误区:OpenClaw 不仅仅是一个像 Chatbox 那样的“套壳客户端”。 它的本质是一个运行在你本地的 Gateway(网关)。 如果你读过它的官方文档,你会发现它的架构非常 Sex: WhatsApp / Telegram <-> Gateway (Localhost) <-> AI Agent (Tools) 这意味着什么? 这意味着你可以躺在床上用手机发消息(支持 WhatsApp/Telegram 等等几十种聊天客户端),指挥你书房里的 Mac 干重活。 这也是它的口号: “The AI that actually does things.” 我想这也是为什么他会这么大火的原因。 场景 A: 周末出门在外,服务器突然报警。你不用掏出电脑连热点 SSH,直接在 Telegram 里发一句:“查一下 Nginx 为什么挂了”。OpenClaw 帮你跑 tail -f /var/log/nginx/error.log 并总结给你。 场景 B: 路上突然想到一个 Idea。发给 OpenClaw:“记到我的 Obsidian 里,并同步到 GitHub”。它直接操作你本地的文件系统。 你可以到这里看看大家都在用 OpenClaw 做些什么:https://openclaw.ai/showcase ...

为了学 AI,我用 Go + Fyne 手撸了一个原生视频下载器

为了学 AI,我用 Go + Fyne 手撸了一个原生视频下载器 大家好,我是老墨。 一个写了十几年代码,发际线依然坚挺,但最近确实有点焦虑的中年程序员。 为啥焦虑?还不是因为这该死的 AI。 从 24 年初 Sora 横空出世,到 Claude 3.5 杀疯了,再到最近 DeepSeek 甚至能自己修 Bug,这世界变化快得像开了二倍速。以前我们卷算法、卷架构,现在倒好,不仅要卷提示词,还要防着被自己的 IDE 抢了饭碗。 老墨我痛定思痛,觉得不能坐以待毙。打不过就加入嘛,我也开始疯狂恶补 AI 知识。 01 一个悲伤的故事:学习资料太多也是一种烦恼 要学 AI,最好的路径是什么?这年头文档更新赶不上模型迭代,最鲜活的知识全在视频里。YouTube 上的 Andrej Karpathy 大神课,B 站上的各种论文精读、实战通过… 于是我的浏览器收藏夹很快就爆了。 但我这人有个毛病,看视频喜欢囤。一来是有些干货太硬,得反复咀嚼;二来是作为技术人,总有一种由于网络不确定性带来的"松鼠症"——好东西必须存在本地硬盘里才踏实。 这时候问题来了:市面上的下载器,怎么就没一个顺手的? 某雷:广告多是其次,关键是我想下的 YouTube 和 B 站视频它基本都解析不了。对于我们这种想看外网 AI 前沿教程的人来说,它形同虚设。 某 IDM:嗅探功能很强,但碰到 YouTube/B 站 这种音视频分离的高画质(DASH流)视频就歇菜了,经常只能下个无声画面,心累。而且 Mac 上没有原生版,体验割裂。 Electron 系工具:界面是好看了,但这动不动几百兆的内存占用,我开个 PyCharm 跑模型本来就捉襟见肘,哪还有余粮养它们? 命令行 yt-dlp:这是真神,功能无敌。用了很久,自己写脚本都写了多个。但时间久了脚本太多,每次想下个视频还得敲命令,复制粘贴 URL,还得拼代理参数… 实在是比较麻烦。 “求人不如求己,为什么不能自己写一个GUI?” 这念头一出,我就兴奋了。写了几年的 Golang,这点事情不在话下。说干就干,开搞开搞。 02 技术选型:要做就做原生的 既然决定自己干,那必须立好 Flag: 要快:启动快,下载快。 要美:虽然我是后端出身,但也不能忍受丑陋的 UI。 要轻:拒绝 Electron,拒绝 WebView,我要纯原生。 基于这个标准,技术栈基本就锁死了: ...

EP00 - DeepSeek R1 本地部署实战 (Mac篇)

EP00 - DeepSeek R1 本地部署实战 (Mac篇) 摘要: 别被几万块的显卡劝退。你的 MacBook Pro (Apple Silicon) 就是跑 DeepSeek R1 的神器。本文手把手教你用 Ollama 在本地跑起“满血版”推理模型,不仅免费,而且隐私绝对安全。 阅读时间: 5分钟 适用人群: 程序员、科研党、隐私敏感用户 硬件要求: M1/M2/M3/M4 Mac,推荐 16GB+ 内存 为什么要在本地跑 DeepSeek? 隐私安全: 你的代码、私有文档不需要上传到云端,断网也能用。 零延迟响应: 没有网络延迟,交互更丝滑(取决于模型大小)。 无审查: 你懂的。 免费: 不需要订阅费,只消耗电费。 核心工具:Ollama Ollama 是目前 macOS 上体验最好的大模型运行工具,没有之一。它开源免费,支持非常多的大模型,GitHub仓库在 这里, 目前161K的 Star。 用程序员最能听懂的话解释:Ollama 就是大模型界的 Docker。 Docker 让你可以一行命令跑 MySQL / Nginx。 Ollama 让你可以一行命令跑 DeepSeek / Llama3。 它在后台默默做了三件事:驱动 GPU、管理模型文件、提供 API 服务。装了它,你的 Mac 就有了“大脑”。 安装 Ollama 有两种方式: 方式 A: 官网下载 (推荐小白) 访问 ollama.com 下载 macOS 版本并安装。 ...

Go高级教程:反射 (Reflection) 实战

Go 高级教程:反射 (Reflection) 实战 “反射是魔鬼。” —— 某些性能洁癖者 “没有反射,就没有现代 Web 框架。” —— 现实主义开发者 反射 (Reflection) 赋予了程序在 运行时 (Runtime) 检查和修改自身状态的能力。从 JSON 解析到 ORM 框架(如 GORM),再到依赖注入,它们的底层都离不开反射。 1. 核心概念:Type 和 Value 在 reflect 包中,有两位绝对主角: reflect.Type:这是啥?(类型信息,如 int, string, User) reflect.Value:这值多少?(具体的数据,如 42, “hello”, User{Name:“Hank”}) 一切反射操作的起点都是 interface{}。 1package main 2 3import ( 4 "fmt" 5 "reflect" 6) 7 8func main() { 9 x := 3.14 10 11 // 1. 获取类型 12 t := reflect.TypeOf(x) 13 fmt.Println("Type:", t) // float64 14 15 // 2. 获取值 16 v := reflect.ValueOf(x) 17 fmt.Println("Value:", v) // 3.14 18} graph LR subgraph iface ["interface{}"] direction TB TypePtr["_type pointer"] DataPtr["data pointer"] end TypePtr -->|"reflect.TypeOf"| RType["reflect.Type"] DataPtr -->|"reflect.ValueOf"| RValue["reflect.Value"] style iface fill:#f9f9f9,stroke:#333,stroke-width:2px,color:#333 style TypePtr fill:#e1f5fe,stroke:#01579b,color:#01579b style DataPtr fill:#e1f5fe,stroke:#01579b,color:#01579b style RType fill:#fff9c4,stroke:#fbc02d,color:#333 style RValue fill:#fff9c4,stroke:#fbc02d,color:#333 2. 三大反射定律 Go 的反射有三条铁律(出自 Rob Pike): ...

Go高级教程:其他并发工具

Go 高级教程:其他并发工具 如果说 Goroutine 和 Channel 是 Go 并发的“常规武器”,那么 sync 包里的工具就是“特种装备”。虽然不常用,但关键时刻能救命(榨干 CPU 的最后一点性能)。 除了 这里 介绍的诸多基础并发工具外,Go 标准库还提供了一些高级并发工具,下面介绍几个比较常用的。 1. 减轻 GC 压力:sync.Pool 我们在讲 GC 的时候提过,如果你频繁申请和销毁大对象(比如 HTTP Response 对象,或者大的 byte buffer),GC 会鸭梨山大。 sync.Pool 就是为了对象复用而生的。 1.1 示例代码 1package main 2 3import ( 4 "fmt" 5 "sync" 6) 7 8// 定义池子 9var bufPool = sync.Pool{ 10 // New 函数:当池子里没存货时,调用它创建一个新的 11 New: func() interface{} { 12 fmt.Println("Creating new buffer") 13 return make([]byte, 1024) 14 }, 15} 16 17func main() { 18 // 1.Get(): 借一个对象 19 buf := bufPool.Get().([]byte) 20 21 // 用完它... 22 23 // 2. Put(): 还回去,下次给别人用 24 // 注意:还之前最好重置一下状态(比如清空) 25 bufPool.Put(buf) 26 27 // 再次 Get,就不会触发 New,而是直接复用刚才那个 28 buf2 := bufPool.Get().([]byte) 29 _ = buf2 30} 1.2 注意事项 sync.Pool 里的对象随时可能被 GC 回收!所以绝对不要用它存数据库连接、Socket 连接这种必须长久保持的资源。它只适合存“临时垃圾”。 ...

Go高级教程:深入理解 GMP 调度器

Go 高级教程:深入理解 GMP 调度器 为什么 Go 语言能轻松支撑百万并发? 为什么 Goroutine 切换成本这么低? 这一切的背后,都站着一位神秘的大管家 —— GMP 调度器。 1. 为什么需要 GMP? 在很久很久以前(其实也就几十年前),我们写代码都是直接跟 线程 (Thread) 打交道。线程是操作系统(OS)调度的最小单位。 但是,线程这玩意儿太“贵”了: 内存占用高:一个线程栈大概要几 MB。 切换成本大:线程切换需要陷入内核态,保存寄存器、上下文,这简直就是“劳民伤财”。 这时候,Go 语言的设计师们拍案而起:“我们要造一种更轻量的线程!” 于是,Goroutine (协程) 诞生了。它初始只要几 KB,切换成本极低。 这就带来了一个问题:操作系统只认识线程,不认识 Goroutine。谁来负责把成千上万个 Goroutine 分配给 CPU 跑呢? 这就需要一个“中间商” —— Go 运行时调度器 (Scheduler)。 图示: Thread 与 Goroutine 的区别 2. GMP 模型大揭秘 GMP 其实是三个角色的缩写: G (Goroutine):我们写的代码任务,也就是协程。 M (Machine):工作线程(Thread),对应操作系统的真实线程。它是真正的干活人(搬砖工)。 P (Processor):逻辑处理器(Context),可以理解为“调度上下文”或“资源”。它是包工头,负责管理 G,并把 G 交给 M 去执行。 形象的比喻 想象一个大型搬砖工地: G (砖头):待搬运的任务。 M (工人):负责搬砖的劳动力。 P (手推车):工人必须推着车才能搬砖(因为车里装着搬砖工具和任务清单)。 如果没有 P(手推车),M(工人)就不知道该干啥。 ...

📚 文章分类