- 博客(873)
- 资源 (1)
- 收藏
- 关注
原创 原子操作的瓶颈与Go的多核扩展性之痛:深入剖析sync.ShardedValue及per-CPU提案
从 valyala 对原子操作性能的“叹息”,到 jonhoo/drwmutex 的巧妙实践,再到 Go 社区围绕 sync.ShardedValue、sync.PLocalCache、sync.MLocal 等提案的深入探讨,我们看到了 Go 语言在追求极致性能道路上永不停歇的脚步。有趣的是,其性能图表还揭示了 NUMA (Non-Uniform Memory Access) 效应的影响——在测试机器上每增加一个包含 10 个核心的 NUMA 节点,跨核心流量的成本就会增加,导致性能曲线出现波动。
2025-05-19 08:03:21
244
原创 Java屹立30年,Go的“少年壮志”如何续写辉煌?——来自Java之父的“长寿秘诀”
虽然很多“名言警句”(比如他对某些公司文化的吐槽,或者对过时工具的调侃)非常抓人眼球,但其背后对技术本质的坚守、对用户价值的尊重、以及对行业趋势的冷静洞察,或许才是 Java 能够穿越周期、屹立 30 年的深层原因。从最初备受瞩目的“Google语言”,到如今在云原生、微服务领域独当一面,Go 凭借其简洁、高效与强大的并发能力,赢得了全球开发者的青睐,正从一个朝气蓬勃的少年”迈向更加成熟稳健的“壮年”。Go 语言,这位“刚刚十多岁的少年”,正处在发展的黄金时期,也面临着成长的关键抉择。
2025-05-17 08:16:10
508
原创 揭秘Go语言中的rune:一段跨越30年的Plan 9往事与UTF-8的诞生传奇
是的,你没看错,rune 的故事,始于 Plan 9,那个由贝尔实验室传奇人物们(包括 Rob Pike, Ken Thompson 等)创造的操作系统。通过Rob Pike的亲自确认,我们应该知道,当我们今天再看到 Go 语言中的 rune 时,它不仅仅是为了“简洁”而对“Unicode code point”的替换。Connor 的文章中引用了一封 Rob Pike 在 2003 年的邮件,详细披露了这段鲜为人知的历史,纠正了“IBM 设计 UTF-8,Plan 9 实现它”的说法。
2025-05-16 08:03:34
585
原创 手把手带你玩转GOEXPERIMENT=jsonv2:Go下一代JSON库初探
v1 在反序列化时,JSON 对象中的字段名与 Go 结构体字段的 JSON Tag 或字段名进行匹配时,采用的是大小写不敏感的策略。从更严格的 JSON 规范遵循(如重复键报错、大小写敏感),到更灵活的特性支持(如自定义时间格式、omitzero、inline、unknown 字段),再到底层解析性能的显著提升,json/v2 无疑承载了 Go 社区对于下一代标准库 JSON 包的厚望。当输入的 JSON 对象包含重复的键名时,v1 的行为是不确定的(通常是后者覆盖前者),并且不会报错。
2025-05-15 08:03:47
988
原创 从Go路由选择看“标准库优先”:何时坚守?何时拓展?
Alex Edwards 也提到 http.ServeMux 的一个聪明之处在于其处理重叠路由的逻辑——“最精确匹配的路由胜出”(例如 /post/edit 会优先于 /post/{id})。为什么“标准库优先”如此有吸引力?如果引入第三方库能让你用更少的代码、更清晰的逻辑实现复杂功能,或者能显著改善开发体验,并且团队愿意承担学习和维护这个新依赖的成本,那么拓展就是合理的。简单来说,如果标准库的功能已经能满足你 80% 的需求,且剩余 20% 可以通过简单的封装或组合模式解决,那么坚守标准库通常是明智的。
2025-05-14 22:00:00
531
原创 当“贝尔实验室的余晖”遇上“AI浪潮”:从Ian Taylor离职看Go的未来之路与基金会的可能性
Hacker News 和 Reddit 上的讨论热度空前,惋惜、赞扬与对未来的种种猜测交织在一起,也为我们提供了更丰富的视角去解读这一事件,特别是关于 Go 对 Google 的依赖以及未来独立发展的可能性。这无疑是Go社区的一大损失,但更像是一个时代的注脚和新篇章的序曲。这些“信号”都指向一个现实:当一家公司(即使是 Google 这样的技术巨头)全力押注一个方向(如 AI)时,其他领域,即使是像 Go 这样已经取得巨大成功的项目,也可能面临资源、优先级和内部“影响力”评估标准的变化。
2025-05-14 08:00:44
816
原创 Go运行时底层接口标准化?“GOOS=none”欲为Go铺设通往裸金属、固件和微控制器的桥梁
它可以为库作者提供统一的方式来编写可在有 OS 和无 OS 环境下工作的代码,同时为未来可能出现的针对特定微控制器的、基于 GOOS=none 接口的更深度定制工作提供基础,尽管这可能需要超出本提案范围的额外修改。然而,这套接口能否以及如何实现“标准化”,并融入 Go 的兼容性承诺,成为了社区热议的焦点。像 nanotime1 这样在运行时关键路径上调用的函数,必须满足极其严格的条件(无栈增长、无分配、无写屏障),这进一步限制了使用 Go 实现的灵活性,使得汇编成为更可靠的选择。但它的潜力远不止于此。
2025-05-13 08:01:10
674
原创 Go社区的“轻框架”理念:自由的馈赠还是无形的枷锁?
因为没有现成的、整合好的框架提供“全家桶”服务,团队在面对常见需求(如用户认证、权限管理、任务队列)时,更容易倾向于“自己动手,丰衣足食”,这可能导致大量功能相似但实现各异的内部“准轮子”,长期维护成本高昂。在 Go 的世界里,真正的自由,或许并非随心所欲,而是通过团队的共同智慧和高度自律,构建起一套虽“轻”却不失章法的“隐形框架”,从而在享受简洁与高效的同时,也能保障项目的稳健、协作的顺畅与长远的发展。关键在于如何在享受其“轻盈”与“自由”的同时,有意识地为团队引入必要的“结构”与“秩序”:。
2025-05-12 22:28:38
520
原创 从线下到线上,我的“Go语言进阶课”终于在极客时间与大家见面了!
至今还清晰记得,在滴滴的一个会议室里,我与一群对 Go 语言充满热忱的开发者们,共同探讨、深入剖析了 Go 进阶之路上的种种挑战与关键技能。同年,我还临危受命,在 GopherChina 2023 上加了一场 “The State Of Go” 的演讲,与大家分享了我对 Go 语言发展趋势的观察与思考。在课程中,你不仅能学到 Go 的高级特性和用法,更能体会到 Go 语言“组合优于继承”、“显式错误处理”等设计哲学的精髓,以及在大模型时代如何让 AI 赋能你的 Go 应用。
2025-05-12 08:01:03
728
原创 Go语言进入“后元老时代”?Ian Lance Taylor离职引发的思考:传承、创新与社区
如果我们将 Go 的早期核心开发者(如 Rob Pike, Ken Thompson, Robert Griesemer, Russ Cox, Ian Lance Taylor 等)视为“元老”,那么随着时间的推移和人员的变动,Go 语言是否正在进入一个由新一代核心开发者主导,更加依赖成熟流程和广大社区贡献的“后元老时代”?他的离开,不仅仅是一位资深工程师的职业变动,更像是一个时代的注脚,引发我们对 Go 语言发展阶段、团队演进以及开源项目生命力的深层思考。这不是一个时代的结束,而更像是一个新篇章的序曲。
2025-05-11 18:00:00
982
原创 Go包维护者必读:如何让你的Go包更易被发现、文档更专业?
pkg.go.dev 的数据来源于官方的 Go Module Proxy (proxy.golang.org),并通过 Go Module Index (index.golang.org) 定期监测新的包版本。v0.x.y 版本的项目被认为是实验性的。访问你的包在 pkg.go.dev 上对应的 URL (即使它显示“Not Found”),例如 https://pkg.go.dev/example.com/my/module,然后点击页面上的 “Request” 按钮(如下图所示)。来隐藏所有版本文档。
2025-05-11 08:03:33
792
原创 百万行依赖的“恐惧”:一位Rust开发者的深度反思与Go的启示
更重要的是,正如Hacker News上一些开发者强调的,依赖的真正“恐惧”更多在于供应链安全和代码的可审查性。Hacker News社区的讨论中,有开发者(如kion)指出,现代软件开发中‘库叠库’的现象十分普遍,每一层依赖可能只用到其功能的冰山一角,但最终却可能导致简单的应用膨胀到数百MB。无论是语言特性(如Go的build tags、Rust的features)、包管理工具(如更智能的tree shaking),还是库本身的模块化设计,都应朝着让开发者能更精细控制最终产物的方向努力。
2025-05-10 09:26:45
812
原创 GitHub英语沟通太难?别让语言成为你参与顶级Go项目的拦路虎!
面对 GitHub Issues 中形形色色的沟通场景——从报告一个恼人的 Bug,到提出一个颠覆性的改进方案,再到与全球开发者唇枪舌战——掌握一些行之有效的沟通“套路”或“模式”,能让你事半功倍。熟练掌握了这些沟通“招式”,就像习武之人有了套路,但要真正做到运用自如、出神入化,还需要打磨“内功”——也就是我们的语言基本功和一些约定俗成的表达。如今,在ChatGPT、DeepSeek、Google Gemini等AI工具的辅助下,我们可以更自信地表达,但理解Github上的沟通的“套路”和文化依然重要。
2025-05-09 08:00:13
1019
原创 Go 1.25链接器提速、执行文件瘦身:DWARF 5调试信息格式升级终落地
即便经过压缩,它们也能占到可执行文件大小的相当一部分(例如,当时 go 二进制的 12MiB 中占 6%)。DWARF 5 引入了如 .debug_addr, .debug_rnglists, .debug_loclists 等新 Section 格式,它们的设计能大幅减少甚至消除对重定位的需求,从而减轻链接器负担。新的列表格式 (.debug_rnglists, .debug_loclists) 比旧的 (.debug_ranges, .debug_loc) 更为紧凑,有助于减小调试信息的大小。
2025-05-08 08:00:29
718
原创 代码覆盖率新玩法:Russ Cox教你用差异化分析加速Go调试
它利用了 Go 内建的覆盖率工具,通过巧妙的比较,帮助开发者将注意力聚焦到最可疑的代码区域。这个结果清晰地将我们的注意力引导到了处理乘法逻辑的代码块,提示这部分代码是失败测试独有的执行路径,极有可能是 Bug 的源头。反之,如果一段代码在成功的测试中执行了,但在失败的测试中未执行,那么这段代码本身大概率是“无辜”的,尽管它被跳过的原因(控制流的变化)可能提供有用的线索。这个简单的实例验证了差异化覆盖率在隔离和定位问题代码方面的有效性,即使在不熟悉的代码库中,也能提供极具价值的调试线索。
2025-05-07 08:00:50
1042
原创 解读“Cheating the Reaper”:在Go中与GC共舞的Arena黑科技
这至关重要,通过强制标记整个 arena,arena 中存储的任何指向其自身的指针将自动保持活动状态,而无需 GC 知道如何扫描它们。这个小小的改进并不能保证 arena 本身的安全,但只要进入 arena 的指针完全来自 arena 本身,那么拥有内部 arena 的数据结构就可以完全安全。需要强调的是,本文的目的并非提供一个生产可用的 Arena 实现(官方尚且搁置,其难度可见一斑),而是希望通过解读作者这次与 GC “斗智斗勇”的“黑科技”,和大家一起更深入地理解 Go 的底层运作机制。
2025-05-06 08:38:35
632
原创 给大家假期找点乐子:一行代码猜语言?
今天,就让我们化身“代码侦探”,通过几个超迷你的代码片段,来玩个“猜语言”的游戏。我们还能不能像经验丰富的侦探一样,仅仅通过一两行精炼的代码“指纹”,就准确地判断出它是哪位“语言”的杰作吗?这些极简的代码片段,希望能博大家假期一笑,同时也提醒我们:即使在语法特性大融合的时代,每种编程语言依然保有其独特的“指纹”和“灵魂”。这几乎是 Go 代码的“标准章”,体现了其显式、就地处理错误的哲学。身处这个技术日新月异的时代,我们常常能观察到一个有趣的现象:编程语言的语法似乎越来越“卷”,也越来越趋同!
2025-05-04 08:02:45
984
原创 Go新垃圾回收器登场:Green Tea GC如何通过内存感知显著降低CPU开销?
最重要的是,你可以随时向我提问,获得第一时间的深度解答,并与众多优秀的 Gopher 一起碰撞思想,共同精进!这样,当这个 Span 最终被取出处理时,它内部可能积累了多个待扫描对象,使得一次 Span 扫描能够处理更多邻近的对象,从而。利用 Span (8KiB 对齐) 的特性,通过简单的地址运算即可定位 Span 内对象的元数据(灰/黑标记位),避免了耗时的间接寻址和依赖加载。的新方法,显著改善 GC 过程中的内存访问模式,降低 CPU 开销,尤其是在多核和 NUMA 架构下。大对象仍使用旧算法。
2025-05-03 08:32:19
907
原创 Antirez归来,Redis重披“开源”战袍?解读Redis 8与AGPLv3的双重变革
承认 SSPL 对社区关系的伤害,提供一个 OSI 认可的选项,试图修复与开发者社区的关系。这是与 Redis 8 技术变革相辅相成的举措,旨在将 Redis Stack 的功能整合回核心,提供单一、强大的 Redis 发行版,而 AGPLv3 为这个统一后的版本提供了一个被社区广泛接受的开源基础。用户可以根据自己的情况选择。几乎所有使用 Redis 的 Go应用都能从 Redis 8 的性能提升中直接受益,无论是作为缓存、消息队列还是更复杂的场景,更低的延迟和更高的吞吐量将带来显著的应用性能改善。
2025-05-02 21:02:43
617
原创 【结果公布】世界读书日赠书活动圆满结束,双倍惊喜送达!
原本计划只选出一位幸运读者,但大家的留言实在太优秀、太用心了,每一条都闪耀着思想的光芒,让我难以抉择!后台收到了许多精彩纷呈的评论,字里行间充满了大家对阅读、对技术、对学习方法的真知灼见,也让我深受启发和感动。升级本次活动福利:我们将选出两位获奖者,每位都将获赠一本我的亲笔签名书《Go语言精进之路》(卷1和卷2随机)!前,通过公众号后台私信我您的收件信息(姓名(可以是昵称哦)、电话、详细地址),我将尽快安排寄送签名版书籍。最后,再次祝大家五一劳动节快乐,享受假期,享受生活!大家好,我是Tony Bai。
2025-05-01 08:15:42
126
原创 “错误即值”,不同实现:Go与Zig错误处理哲学对比
一方面,我们认同 Rob Pike 所倡导的“错误即值 (Errors are values)”的核心哲学——错误不是需要特殊通道(如异常)处理的“二等公民”,它们是普通的值,可以传递、检查,甚至被编程。Go 允许你使用空白标识符 _ 来丢弃返回值,包括错误,这在 Zig 中是不允许的,因为 Zig编译器强制要求调用者必须处理所有潜在的错误,不允许忽略。今天,我们就基于这位开发者的分享,来一场 Go 与 Zig 错误处理的对比,看看同一种哲学思想,是如何在两种语言中开出不同但各有千秋的花朵。
2025-04-30 12:01:02
564
原创 Go的简洁神话?转Go前你需要知道的5个“真相”
然而,正如一位拥有超过 15 年经验(主要使用 Java/Kotlin/TypeScript)、并在过去一年深度使用 Go 的开发者(以下简称“视频作者”)在其分享的油管视频中提到的那样,尽管 Go 非常出色,但光环之下并非没有阴影。在投入实际项目,特别是构建一些非同小可的东西之后,会发现 Go 的一些设计决策有利有弊,有些“简洁”的背后隐藏着需要注意的“真相”。因为,仅仅通过看视频或教程喜欢上一门语言,和在维护一个有真实用户、边缘情况的真实世界项目后仍然喜欢它,这两者之间可能存在巨大的差别。
2025-04-29 08:00:51
954
原创 一个字符引发的30%性能下降:Go值接收者的隐藏成本与优化
指针接收者: leaking param content: c -> 接收者指针c本身并未因为接口方法调用而逃逸,但它指向或访问的内容与堆内存有关,在此例中, main函数中将具体实现赋值给接口字段时,impl会逃逸到堆(impl escapes to heap),无论接收者类型为值还是指针。我的书籍《Go 语言精进之路》:这本书侧重于连接 Go 语言理论与一线工程实践,深入探讨了 Go 的设计哲学、关键特性、常见陷阱以及在真实项目中应用 Go 的最佳实践,助你打通进阶之路上的“任督二脉”。
2025-04-25 08:48:59
863
原创 拯救你的Commit Log:Conventional Commits实践指南
这两年基于大模型的辅助生成commit log的工具以及一些代码智能体应用(如Cursor等)也在规范git commit log方面起到了非常积极的作用,对于像我这样英语非母语但又喜欢以英文log提交的选手来说,这些工具大幅降低了我在纠结如何写commit log时的心智负担,给予了我很大的帮助。幸运的是,围绕 Conventional Commits 已经形成了一个活跃的社区和丰富的工具生态系统,它们极大地降低了开发者遵循规范的门槛,让指引更容易落地。那么,你的团队是如何采纳和实践提交规范的?
2025-04-24 22:03:37
956
原创 Go应用的K8s“最佳拍档”:何时以及如何用好多容器Pod模式
因此,原生Sidecar不是一个全新的模式,而是当我们需要实现上述这些需要精确生命周期管理的Sidecar模式时,Kubernetes v1.33 提供的稳定、可靠且官方推荐的实现方式。官方推荐的方式是:在Pod的spec.initContainers数组中定义你的Sidecar容器,并显式地将其restartPolicy设置为Always。多容器 Pod 是 Kubernetes 生态中的“精密武器”,理解何时拔剑、如何出鞘,并善用平台提供的稳定特性,才能真正发挥其威力,为我们的 Go 应用保驾护航。
2025-04-24 08:11:47
948
原创 【规律之手】资深码农都懂?软件工程中的13条“潜规则”定律
它们虽然不像物理定律那样严格,但确实精准地捕捉到了我们日常工作中经常遇到的挑战和现象,堪称是宝贵的“经验法则”或“心智模型”。理解这些“定律”,能帮我们更好地认识软件开发中的复杂性,识别潜在风险,做出更明智的决策,少踩一些坑。(你的架构是不是反映了你的团队结构?) (+ 逆康威定律)API 的所有可观察行为都会被依赖,无论你承诺什么。火热进行中,欢迎各位小伙伴点击链接,积极参与,赢取本人亲笔签名的赠书😁。(你做的功能多少是真正有价值的?(原始文章对每条定律有更详细的解释和漫画,感兴趣的同学可以搜索"
2025-04-23 22:00:00
274
原创 世界读书日:如何高效阅读“砖头”技术书?我的心法分享(文末赠书)
"根据 TGPL 中关于『方法(Methods)』的讨论,特别是嵌入(embedding)和方法集(method sets)的概念,请给我生成一个简单的 Go 代码示例,演示结构体嵌入后方法的调用规则。"请用一个现实生活中的例子,解释《The Go Programming Language》中描述的 Go channel 的概念,特别是带缓冲和不带缓冲 channel 的区别。"请对比 TGPL 中提到的 goroutine 和传统操作系统线程,用打比方的方式解释goroutine的『轻量』体现在哪里?
2025-04-23 08:02:09
888
原创 不止Go,更是Go+AI:我的知识星球「Go & AI 精进营」全新启航!
在过往的时光里,我们一起探讨Go语言的奥秘,分享实践中的得失,那是一段非常宝贵的共同成长的记忆。未来,我的星球将更加专注于以下核心领域,致力于打造一个高质量、高价值的技术学习与交流社区,为您提供更高质量、更体系化的学习与交流体验。我深知,创建一个真正有价值的技术社区需要持续的投入和大家的共同努力。为了能够持续投入足够的时间和精力,为大家带来更高质量的内容和更精细化的服务,「Go & AI 精进营」在未来会。,更多的体系课意味着更多的投入和干货,也意味着更高的价格,希望大家理解)。
2025-04-22 08:05:55
697
原创 Go项目设计的“七宗罪”?警惕那些流行的“反模式”
现在是时候根据项目的演进和规模的增长来判断是否需要"pkg"这个有点像“namespace”的目录了,即当你有多个希望公开的库时,是否用pkg/作为一个顶层分组,这个是要基于项目的实际情况进行判断的。然而,当这些“圣经”般的原则被生搬硬套到Go语言的语境下时,有时非但不能带来预期的好处,反而可能把我们引入“歧途”,滋生出一些看似“专业”实则有害的“反模式”。Go语言的设计哲学是务实和简洁。在这篇文章中,我就总结一下我眼中的Go项目设计“七宗罪”,希望能帮助大家在实践中保持清醒,做出更符合Go精神的决策。
2025-04-21 08:06:23
896
原创 AI会写Go代码了,初学者还需要系统学习吗?
现在,AI不仅能辅助编写Go代码片段,还能应对一些更复杂的逻辑结构,甚至还能完成一个完整工程的全部代码,这在开发者社区无疑引发了热烈讨论和对未来的思考。如今,一个普遍的认知是,AI更像是一个能力的放大器,它能够增强你已有的知识和技能,但却很难从零开始为你构建坚实的基础。只有足够专业,你才能有效地向AI提问,辨别AI答案的优劣,最终驾驭AI,让它成为你专业能力的延伸,而非被其能力所取代。那么,在AI时代,系统学习能为渴望成长的你,尤其是初学者,提供哪些不可替代的价值呢?,但这就像给你一堆散落的乐高积木。
2025-04-19 11:17:58
928
原创 代码Agent没有护城河?我用Go标准库和DeepSeek证明给你看!
但与此同时,它们往往被一层神秘的光环笼罩,许多人觉得构建一个真正能工作的 Agent,尤其是能与代码交互、编辑文件的 Agent,必然涉及极其复杂的技术和深不可测的“炼金术”。观察: (可能 list_files) -> Tool Call: edit_file({"path":"fizzbuzz.js","old_str":"","new_str":"..."}) -> AI 回复成功。简单的字符串替换编辑文件显然是不够的,更复杂的场景需要更精密的工具(如 AST 操作、diff 应用等)。
2025-04-18 08:01:22
813
原创 “Go is badly designed”?它像极了我们当年恨过的物理老师!
一旦你掌握了它的规则(比如错误处理模式、接口哲学、goroutine的使用),就能快速上手,并且写出的代码风格差异不会太大,易于团队维护。但他目标明确,方法直接,逼着你打好基础,养成严谨的习惯,最终让你能够独立、高效地解决实际问题。如果你期望一门语言能像 Rust 那样,在编译期就为你消除几乎所有内存安全和并发风险,愿意为此付出更陡峭的学习曲线和更长的编译时间,那么 Go 可能确实“不够好”。它会给你足够的方向让你知道该往哪走,满足你 80% 的需求,同时仍然保持你的生产力。Go语言的设计哲学里,
2025-04-17 21:58:22
539
原创 自定义Hash终迎标准化?Go提案maphash.Hasher接口设计解读
近日,经过Go核心开发者多轮深入探讨,编号为[#70471 的提案"hash: standardize the hash function"](https://github.com/golang/go/issues/70471 "#70471 的提案"hash: standardize the hash function"")最终收敛并被接受,为Go生态引入了全新的maphash.Hasher[T] 接口,旨在统一自定义类型的Hash实现方式。现在,让我们对它的意义和影响做一个简要的总结。
2025-04-17 08:15:47
661
原创 AI新宠?解读MCP、A2A为何偏爱JSON-RPC 2.0
JSON-RPC的简洁性和文本基础使其极易在不同语言和平台间实现互操作,为构建异构AI系统提供了基础通信能力,某种程度上提供了通信层面的“一站式解决方案”的可能性。JSON-RPC明确的请求(方法名、参数)和响应(结果、错误)结构,非常适合表示AI服务中的函数调用、查询等交互模式,使得接口定义和理解更加直观,有助于提升开发和沟通效率。,即params是一个对象,其成员名与服务器期望参数名匹配,比如上面示例中params使用的就是一个by-name的参数传递方式。细心的开发者可能已经发现,新兴的AI协议如。
2025-04-16 08:43:50
774
原创 InfluxDB 3.0 GA:四年Rust重构,是新生还是挑战?
一项技术的重大革新,带来了新特性,但也可能改变了其原有的核心优势(如特定技术社区的亲和度)或在某些方面带来新的挑战(如短期内的性能 表现)。不少原本 InfluxDB 的忠实用户,特别是 Go 技术栈的开发者,在这漫长的等待和技术栈切换中,可能已经将目光投向或 迁移到了其他选择,比如近年来同样基于 Go 开发且表现抢眼的 VictoriaMetrics。如果你对这类深度的业界观察和思考感兴趣,希望看到更多我对技术趋势、行业动态的及时点评和个人观点,欢迎加入我的知识星球「Go & AI 精进营」。
2025-04-15 22:08:26
404
原创 11个现代Go特性:用gopls/modernize让你的代码焕然一新
好消息是,如果你在使用 VS Code、GoLand 等配置了 gopls 的现代 Go IDE,很多 modernize 提出的建议通常会直接以代码高亮或建议(Quick Fix / Intention Action)的形式出现在你的编辑器中,让你可以在编码时就实时地进行现代化改造。它提示我在这两个项目的指定位置,存在一个循环可以用 slices.Contains 来简化(这也是 modernize 支持的一个检查,虽然未在上述重点说明的现代风格列表中,但也属于简化代码的范畴)。
2025-04-15 08:16:38
992
原创 告别智能体孤岛:谷歌A2A协议能否成为企业AI协作的通用语?
Agent Card中包含了智能体的**名称、描述、服务 URL、版本、提供商信息、支持的核心能力 (capabilities 如 streaming, pushNotifications)、认证要求 (authentication)、默认输入/输出模式 (defaultInputModes/defaultOutputModes) 以及最重要的——它所具备的技能列表 (skills)**。虽然 A2A 目前仍处于草案阶段,但其清晰的设计理念、强大的合作伙伴支持以及开放的社区模式,都预示着其广阔的应用前景。
2025-04-14 08:29:29
1049
原创 揭秘顶尖技术专家的15个关键方法与心态,不只靠代码
中,基于多年的观察,提炼出了那些真正顶尖的工程师们所共有的特质与习惯。声誉的建立是一个长期投入的过程,它能让你接触到更有挑战的项目,吸引更多合作者,最终“规模化”你的积极影响。正如文中所举的例子:如果你是一名重度使用 Kafka 的后端工程师,成为顶尖人才意味着你需要对 Kafka 有着系统和深入的认知,而非仅仅依赖于论坛上的零散信息。技术上的精进和持续成长的内在驱动力是成为顶尖开发者的核心要素,但他们的影响力往往超越了个人代码的范畴。这种开放和批判性的学习态度,让他们始终保持思维的敏锐和知识的更新。
2025-04-13 22:15:18
949
原创 Go开发者必看!Uber如何利用PGO将Go服务性能优化推向新高度?
并且,通过用户的实际体验报告来看,PGO的确可以在一定程度上改善Go应用的性能,在Go 1.21及后续版本中,启用PGO 后,工作负载的性能常会有2%到7%的提升。在Uber内部部署该预处理工具并每日更新预处理后的profile后,有效解决了PGO带来的编译时间增加问题,大部分服务的编译耗时恢复到了接近优化前的水平,为PGO的大规模应用铺平了道路。随着Go版本的迭代,PGO的能力和易用性也在不断提升,了解并尝试在自己的项目中应用PGO,可能会带来意想不到的性能收益。结果显示,启用PGO后,这些服务的。
2025-04-11 08:01:57
607
原创 Go开发者必看!JetBrains 2024报告深度解读:Go语言现状、趋势与未来机遇
此外,我们还会加强星友之间的交流和互动。有使用DigitalOcean需求的朋友,可以打开这个链接地址:https://m.do.co/c/bff6eed92687 开启你的DO主机之路。虽然Go在传统机器学习领域不如Python,但其在性能和可伸缩性上的优势,使其成为构建**AI模型服务 (model serving)**等生产级AI基础设施的理想选择。(Russ Cox卸任,Austin Clements和Cherry Mui接任),但新领导层对Go的理念和目标有深刻理解,确保了项目的连续性和稳定性。
2025-04-10 08:22:23
952
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人