- 博客(860)
- 收藏
- 关注
原创 Go1.25 新特性:引入 DWARF5,链接器更快,二进制文件更小了!
本次 Go1.25 新特性旨意,在 Go 编译器使用 DWARF5,给 Go 应用程序的综合多个方面带来了不错的提升,提升了 Go 在编译和体积等原本强项上的更进一步提高。Go 这一门编程语言,在推出时,相较个别语言来讲,编译后较为小的二进制文件是一个较大的卖点。而本次在 Go1.25 新特性中,又针对缩小编译后二进制文件有了新的改善。:可执行文件总大小平均下降 3%,可视为 DWARF5 更紧凑的调试信息格式的直接成果。使用较老的 DWARF 格式,结构简单、兼容性强,但体积大、功能有限。
2025-05-12 08:41:31
1024
原创 Go1.24 Map 引入了新的问题,预计将在 Go1.25 修复!
而 Prometheus 的维护者 @Bryan Boreham,在 Prometheus 项目中,也发现使用 Go1.24 时访问大 Map 会使用更多的 CPU。后续我们将会继续保持关注,看看 Go 官方团队是否再次选择把所有键(K)摆放在一起来解决这个问题点,又或是引入新的解决方案。K/V 放一起(KVKVKV)和所有 K 放一起(KKKVVV...,旧 Map 的做法),各有优缺点。会设计这个机制的目的是:防止有人创建指向最后一个字段的指针,Go 编译器不希望指针指向分配结束的位置。
2025-05-07 08:41:37
569
原创 Go1.25 新特性:引入go mod verify -tag,模块管理又更安全了!
这可以防止有人通过强行推送的方式访问 GitHub、GitHub 本身,甚至 Google,在未经授权的情况下修改模块内容。最近 Go1.25 新特性中,对于这一块有了一个小点的补全,可以提高一定的安全性。出版过 Go 畅销书《Go 语言编程之旅》,再到获得 GOP(Go 领域最有观点专家)荣誉,,确保 Go 项目所引用的模块的内容未被篡改。未来该项提案发布后,这通常将用于 Go 应用程序发布打标签的过程。更改某些内容并更新版本标签,使其指向新的更改。在这种场景下,由于该模块的哈希值不在。
2025-04-29 08:41:20
731
转载 AI 会写 Go 了,初学者还有必要系统学习吗?
从很早开始,他就在个人博客上撰写了大量 Go 相关的文章,在各大 Go 社区里引起了不少的讨论,我也是那会儿经常看到大家转发他的文章才知道他的。另外,他还专门结合了 4 个实战小项目,以及一些常见的坑点以及避坑指南,也为正在使用 Go 语言的开发者,提供了查缺补漏和夯实基础的机会。这部分他会围绕着“程序=数据+算法”的逻辑,从基本概念到数据类型,再到广义的算法,让你用 Go 建立对现实世界的抽象认知,搞懂程序运行的基本逻辑。”,辅助你顺利踏上对 Go 语言的探索之路,同时能早日成为优秀的 Go 开发。
2025-04-24 08:41:22
386
原创 Go 终于要解决容器化下 GOMAXPROCS 的问题了!
该提案的目的是:希望修改 Linux 上的 Go runtime(运行时)机制,使用 CPU cgroup 配额限制(注意是:pod cpu limit 场景)来设置 GOMAXPROCS 的默认值。Go 这一门编程语言,有一部分是借助云原生起家的。但需要注意,本次修改主要还是针对 pod limit 的场景,而不是 pod request 的场景。因此,只有在升级 Go 语言版本时,行为才会发生变化,而不是在升级 go tool 工具链时。在现实的生产使用中,很多同学是遇到问题后,要去排查 GC 等。
2025-04-22 08:42:05
943
转载 赢麻了!全体后端彻底狂欢吧!这个好消息来得太及时!
是衡量大语言模型“从量变到质变”的关键,是针对特定场景的AI解决方案。是指运行一段具有特定功能的代码块的行为,以增强其处理能力,实现更复杂的任务,使大模型能够集成外部工具和资源,提升交互性和实用性。AI大模型技术实战—— Transformer 架构的 核心原理、应用 Fine-tuning 技术,精准微调AI大模型,制造、医疗、金融等各行业都在加速AI应用落地,未来企业更看重能用AI大模型技术重构业务流的技术人。老师们将大模型技术原理讲透的同时,还将丰富的商业化AI应用项目无偿分享,帮大家快速打通。
2025-04-19 11:10:48
647
原创 Go1.25 新特性:泛型 Core types 将被放弃!
在 Go1.18 版本发布了泛型,带来了:类型参数(type parameters)、类型约束(type constraints)、核心类型(core types)等一大堆泛型带出来的新概念。中提到的 “对联合类型元素字段的统一访问”,如果没有核心类型这个障碍,其实可以自然落入普通字段访问规则中,而不是再新增例外。如果某类型 T 是一个底层类型为某个具体类型的命名类型,那么它的核心类型就是那个底层类型。这让开发者即使写的不是泛型代码,也得理解 “核心类型” 的概念,徒增学习负担。
2025-04-14 08:42:01
859
原创 用 panic-recover 做错误处理?会影响 Go 程序性能的
很多 Java、PHP 等其他很多编程语言转过来的同学,第一次接触 Go 时,会试图像上述例子去寻找能做一定的 try-catch 错误处理机制的例子。下述是模拟 Java try-catch 示例粗略翻译成 Go panic-recover 示例的演示,以此验证性能基准的测试。而在 Go 这一门编程语言中,能做到的类似模式的只有 panic-recover 的机制,因此可能产生了一些滥用的情况。该程序的变量 i 最终会递增到数组的长度,此时如果试图访问索引 i 处的数组,就会引发。
2025-03-31 08:42:01
852
原创 听说 TypeScript7.0 要用 Go 写?
实则上是:TypeScript7.0 编译器和工具的原生移植至用 Go 编写,以此实现大幅改善编辑器启动,将大多数构建时间缩短 10 倍,并大幅减少内存使用量的目的。这次对于 TypeScript 编译器和工具原生移植用 Go 来写,对于 Go 这一门编程语言来讲,是非常不错的。也意味着用户群体受益的更多。前段时间社区里掀起了一波大热潮,甚至在电梯间都偶有同事拍一拍我,说到听说 TypeScript7.0 要用 Go 重写了,真牛逼。结合 Go 社区的反响来看,优化还是非常及时的,态度上也是比较积极支持。
2025-03-24 08:41:16
699
原创 为什么 Go 不支持泛型方法?
可以在链接时(link time)实例化它,但在一般情况下,这需要链接器遍历整个程序的调用图,以确定可能传递给 CheckIdentity 的类型集合。在运行时(run time)实例化,这通常意味着使用某种 JIT(即时编译)技术,或者通过某种基于反射的方式来执行。因此若要在链接时实例化所有参数化方法,就可能需要为每种可能的类型参数实例化所有参数化方法,而这显然是不可行的。截止目前而言,Go 泛型方法的支持还处于纠结的尴尬境地。在既有的泛型设计中,Go 不允许方法,声明该方法特有的类型参数。
2025-03-18 08:41:42
990
转载 Manus 掀起技术风暴,这可能是你最后的翻盘机会?
最近朋友圈被 Manus(某 AI 新物种)刷爆了——它能 3 分钟生成电影级 CG、用自然语言训练数字人、像专业招聘人员一样筛选多份简历、甚至让虚拟主播 24 小时带货…Manus 还能异步处理文件,这意味着你可以随时关闭电脑,等任务完成后,它会通知你。内心 OS:这是什么天选“牛马”啊?!在惊叹技术突破的同时,我也和一些资深开发者聊了聊,发现焦虑比想象中更真实:某游戏公司主程:“团队里 00 ...
2025-03-13 08:41:13
40
原创 Go 下一步计划,新标准库 sync/v2!
大家好,我是煎鱼。之前 Go 核心团队乘机推广了标准库 v2 的更新计划,想着把一些老旧的标准库给干掉。在上一步已经把 math/rand/v2 给做了,官方也认为非常成功。后续将开始计划新标准库 sync/v2 的更新和发布。今天文章主要分享此提案。#go/issues/71076起源本次新标准库 sync/v2 的一个改造重点,来自于一个一揽子提案《spec: add generic prog...
2025-03-06 08:41:33
1009
原创 Go 官方错误处理讨论:用 ? 替代 if err != nil 可以不?
大家好,我是煎鱼。对于 Go 这一门编程语言,截至目前较大争议话题仍在 if err != nil 在 Go 应用里所带来的各种繁杂代码,引起了社区很多正反方的探讨。原本以为 Go 核心团队已经摆烂了。但最近老大哥 @Ian Lance Taylor 提出了一个新提案[1](后转为讨论[2]),引起了大量的社区交流:背景:为什么还要关注这件事?在 Go 核心团队的视野中,现阶段对于处理 Go 错误...
2025-02-24 08:42:04
851
原创 Go1.24 新特性:OS 新版本要求、Wasm 功能增强、template 支持迭代器等
大家好,我是煎鱼。新版本 Go1.24 在 2 月 11 号已经正式发布,如果先前还没有留到的同学,可以关注下是否跟进了。先前我们已经更新了多篇新特性介绍。今天将会是最后一篇知识点的收尾。操作系统要求Linux 内核版本 >= 3.2在本次 Go1.24 新版本开始,需要 Linux 内核 3.2 版本或更高版本(划重点)。如果公司里的集群环境历史底蕴比较深的,建议升级前检查一下。(我们就是...
2025-02-17 08:42:00
1043
转载 做了两个项目,Go、K8s、设计模式都让它给玩明白了
大家好,我是网管,公众号「网管叨bi叨」的号主,今天给大家聊聊Go语言、K8s 以及设计模式的一些常见问题。网上很多人觉得 Go 是门很纯的语言,老是觉得少即是多,用Go写程序不能学Java,不能搞那些设计模式,但是你要拿Go开发业务系统,本来就业务逻辑逻辑复杂,你再写那些很"单纯”的代码,能不能把自己蠢哭我不知道,反正是能把后面接你这摊代码的人给蠢哭。为了让自己也让周围的人都能改善下代码设计能力...
2025-02-14 08:41:18
100
原创 Go1.24 新特性:sync.Map 性能提高、Go mod 增加 tool 指令、net/http 协议优化等
大家好,我是煎鱼。今天给大家继续介绍 Go1.24 的新特性。sync.Map 性能优化由 @Michael Knyszek 大佬提出的提案:其首先在 unique 包中添加了 HashTrieMap。随后在很多场景下,发现比传统的 Map 性能和速度高效很多。因此 Go 核心团队重新实现了 sync.Map 基于 HashTrieMap 实现方案。在本次的新版本 Go1.24 中,sync.Ma...
2025-02-12 08:41:50
1299
原创 Go1.24 新特性:更多的迭代器方法、JSON 支持省略零值、终结器的改进等
大家好,我是煎鱼。今天给大家继续介绍 Go1.24 的新特性,主要涉及垃圾回收时的注册函数机制、新增的迭代器方法、JSON 零值的优化。改进的终结器(finalizer)本次新版本增加的 runtime.AddCleanup 函数是一个比原有 runtime.SetFinalizer 更灵活、更高效且更不易出错的终结机制。AddCleanup 允许为对象附加一个清理函数,该函数会在对象不可达时执行...
2025-02-07 08:41:52
738
原创 Go1.24 新特性:自旋互斥 lock2 优化,性能有一定提高!
大家好,我是煎鱼。除了上次跟大家提到的 map 使用 Swiss Table 来替换 Hashmap 的原始实现以外。本次 Go1.24 新版本还带来了更多的有效优化。今天这篇文章将继续和大家一起学习自旋互斥 lock2 优化。背景提案作者 @Rhys Hiltner 在 2024 年提出了改进互斥锁的性能优化诉求:其个人对于 runtime.mutex 值的部分经验是:整个进程会因为对单个 mu...
2025-01-20 08:41:55
1130
原创 Go1.24 新特性:map 换引擎,性能显著提高!
大家好,我是煎鱼。本次 Go1.24 新版本又带来了一个比较不错的优化点,Go map 做了一个比较大的改变,有了一定的性能优化。咱们又可以躺着升级个版本就得到一定的性能益处了。今天这篇文章将主要针对这部分进行新版本特性分享。该提案(go/issues/54766[1])的发起方是来自字节的大佬们。主要目的建议在 Go map 使用 Swiss Table 来替换 Hashmap 的原始实现。这里...
2025-01-06 08:41:26
1365
原创 Go1.24 新特性:泛型再查缺补漏,正式支持类型别名!
大家好,我是煎鱼。自从 Go1.18 支持泛型后,社区很多同学以为泛型会带来非常巨大的改变。但实际上,还是比较尴尬的。因为泛型还在持续的迭代中,还处于发展期。今天给大家分享的是 Go1.24 中给泛型加的新功能特性。一起来学习吧!背景泛型提案说:"类型别名(type alias)可以引用泛型,但类型别名不能有自己的参数。之所以有这一限制,是因为不清楚如何处理具有约束的类型参数的类型别名"。对应的场...
2024-12-30 08:41:26
1195
原创 Go1.24 新特性:迈向合规,crypto 加密库将支持 FIPS140!
大家好,我是煎鱼。最近在 Go1.24 中出现了一个较为少见的名词:FIPS140。而且还是加密库里的一个新适配。很 “官方” 的样子,让我好奇了起来。今天本文结合基本知识和库内容给大家分享,一起学习和进步。什么是 FIPS140联邦信息处理标准 (FIPS,全称:Federal Information Processing Standards) 140 系列是美国政府计算机安全标准,规定了对加密...
2024-12-23 08:41:19
842
原创 为什么 DTS 升级 MySQL 会造成查询缓慢?
大家好,我是煎鱼。最近我有一个朋友遇到了一个 MySQL 相关的问题,在开启 DTS 升级同步后实例上的 SQL 查询大量缓慢。但监控图表上是一切正常的。某技术支持给出的缘由是 table_open_cache 关联因素造成的。咱们今天目标是深究一下这个指标和问题背后的逻辑。table_open_cache 是什么官方文档介绍根据 MySQL5.7 文档,table_open_cache 参数项的...
2024-12-16 08:42:02
773
原创 Go1.24 新特性:增强 os 标准库,防止目录遍历漏洞!
大家好,我是煎鱼。马上就要到 2025 年的 2 月份啦。Go1.24 又即将如期而至。接下来将给大家逐步带来新版本的特性更新。今天要给大家介绍的是 Go 在标准库 os 上做的一个安全方面的增强。有兴趣的同学可以后续在功能上保持跟进。提案背景在安全方面,目录遍历漏洞是一类常见的漏洞,攻击者会诱使程序打开一个它在原本的程序逻辑中并没有计划打开的文件。这些攻击通常采取提供相对路径名的形式,例如:./...
2024-12-09 08:41:18
1306
原创 Go 基于区域的内存管理,再战手动管理!
大家好,我是煎鱼。最近 Go 核心团队成员 @Michael Knyszek 发起针对 memory regions 的社区讨论。试图引入新的基于区域的内存管理(Region-based memory management),并再次之前提到的 Arena 实验给捞一下。“基于区域的内存管理” 是什么在计算机科学中,基于区域的内存管理(Region-Based Memory Management)是...
2024-12-03 08:41:42
991
原创 Go 里的海勒姆定律?非必要不修改。。。
大家好,我是煎鱼。在我们日常工作中,只要你维护过历史比较悠久的项目。总会遇到一些神奇的代码。其中最莫过于在老代码上,前人让你不要改这块逻辑的注释。在 Go 中也有一些约定俗成的代码。周末看到了还有点意思,分享给大家。“该文本不可变更”在 net/http 标准库中,有以下这段代码:func(e*MaxBytesError)Error()string{//DuetoHyrum's...
2024-11-27 08:42:02
614
原创 Go 语言十五周年!权力交接、回顾与展望
大家好,我是煎鱼。2024 年 11 月 11 日,Go 语言迎来了它的 15 岁生日。自 2009 年开源发布以来,Go 语言以其稳定性、安全性和对大规模软件工程的支持而闻名。本文将回顾 Go 语言的发展历程,探讨其最新特性,并展望 Go 语言的未来。Go 语言的快速增长在过去的五年中,Go 的用户基数增长了三倍多,成为增长最快的编程语言之一。Go 语言不仅跻身于十大编程语言之列,更成为现代云计...
2024-11-21 08:41:29
769
原创 新提案:由迭代器启发的 Go 错误函数处理
大家好,我是煎鱼。Go 错误处理的问题一直是各大开发者关注的话题。最近 Go1.23 出了迭代器后,又有许多同学有了新的灵感和想法。今天给大家分享的是社区里的新提案:《proposal: spec: error handling via iterator-inspired handler functions》,该提案提出了一个创新的概念:通过迭代器启发式处理函数来改进 Go 的错误处理方式。本文将...
2024-11-19 08:41:32
729
原创 Cloudflare 从 PHP 到 Go:迁移与经验分享
大家好,我是煎鱼。在现代软件开发中,技术栈的选择对于项目的成功至关重要。随着业务需求的演变,技术迁移成为了一个不可避免的话题。在本文中,我们将探讨从 PHP 到 Go 的迁移过程。分享来自 Cloudflare 的资深工程师 Matt Boyle 和 Chris Shepherd 的见解和经验。主要内容将涉及他们迁移的动机、挑战、以及在这个过程中的心得体会。迁移动机性能考量Matt Boyle 指...
2024-11-11 08:41:55
785
原创 快速掌握 Go 二进制文件的静态和动态链接
大家好,我是煎鱼。在编写 Go 应用程序时,Go 本身提供了跨平台编译,提供了非常大的便利。但内部其实有许多静态和动态链接的相关知识点。今天给大家分享这一块的基本知识。如何选择?Go 团队的讨论Go 核心团队在创造这门编程语言时已经做了大量的讨论和权衡。“静态链接有很多优点。部署简单是其中之一。没有版本问题是另一个优点(升级可能永远不会破坏您的 go 二进制文件。但动态链接或解释语言则不然,因为依...
2024-10-30 08:41:20
1001
原创 Go 正在发生变化?从泛型到迭代器的爱恨
大家好,我是煎鱼。前段时间 Kris Brandow 和嘉宾 Ian Lopshire 在播客中针对《Go 的发展方向错了吗?》这个命题进行了深入讨论,还探讨了 Go 语言的最新变化及其发展方向,重点涉及泛型和新版本加入的迭代器功能。社区对这些特性的反应各不相同:1、一些开发者认为增加的新特性违背了 Go 语言原本简洁的设计理念。2、另一些则期待这些功能为开发带来的灵活性和便利性。本文将结合两位嘉...
2024-10-28 08:41:34
804
转载 恭喜了!软考重大利好!全体后端狂欢吧!
????门槛低、起薪高、就业广、有证终身受益!强烈建议尽快搞个软考证,政策重大利好:✔︎年薪60W起;✔︎????5-25W/年补贴;✔︎升职/就业更快;✔︎享落户福利;✔︎以考代评职称;✔︎3600个税抵扣......如今,软考证书已经成为计算机人才的必考证书。不仅是架构/开发/软件多技术岗位的敲门砖,在求职、晋升、考编和接项目时,也更受青睐!在如今降薪裁员的浪潮下,很多技术人才都通过软考证书,实现了职场...
2024-10-23 08:41:52
104
原创 Go 领导层交接,新篇章!来看看他们的思考
大家好,我是煎鱼。最近 Go 核心团队完成了领导班子的交接,并在播客上录制了《Russ Cox on passing the torch[1]》,今天将基于此分享给大家。Go 团队内部的领导层交接标志着 Go 进入了一个新的发展阶段,Russ Cox 退任技术负责人,Austin Clements 接任。本文将深入探讨这次 Go 核心团队的领导层变更及其对 Go 未来的影响,文章基于 Go Tim...
2024-10-20 10:10:20
1100
原创 Go 即将支持特定代码在主线程运行!
大家好,我是煎鱼。国庆的时候看到了一个较少见的提案,Go 竟然会提供主线程 API 的控制(说好的不对外...),还是挺有意思的。本提案已经 Accepted,会进入 Go 主版本特性。今天分享给大家,一起围观学习一下!背景某些 API(尤其是 macOS 的 AppKit 和 iOS 的 UIKit)需要对启动线程进行独占控制。Go 已经支持此类 API,如果在 init 函数中调用了 runt...
2024-10-15 08:41:13
956
2
原创 Go 将会支持弱指针 weak!
大家好,我是煎鱼。最近 Go 又有了新的动作,一路绿灯,已经审批通过了新增弱指针(weak pointers)库的提案,这对于 Go 来讲是一个不错的补充。今天这篇文章我们主要分享弱指针的介绍,让大家有一个基本前瞻。因为这个提案已经 Accepted!弱指针是什么此处是引用 Go 官方提案给出的介绍和原因,也就是为什么 Go 核心团队认可要去做弱指针。弱指针(或其他语言中的弱引用)允许开发人员引用...
2024-10-09 08:41:58
1060
原创 Go1.23 新特性:争议最大的 iter 迭代器,可遍历万物!
大家好,我是煎鱼。Go1.23 新版本中,在发布过程中争议最大的新特性莫过于:迭代器(iterators)。原本计划先写一个这个 proposal 的提出背景的,但没想到,迭代器涉及的到 proposal 比较多,而且是由 rsc 亲自负责。总感觉 rsc 早有预谋,在 Go1.23 蓄力一击,搞完就撤了。Go1.23 新特性:迭代器提出过程我能翻到的最早明确提出要加迭代器是在 discussio...
2024-09-09 08:41:31
1524
原创 矛盾的很,Go1.24 将需要更新的 Linux 内核!
大家好,我是煎鱼。一门编程语言总是要适配多个平台多种架构,其中莫过于适配 Windows 和 Linux 的不同版本。老的可能会被逐渐废弃,稳定版本的逐渐占据主流。Go 有 Go1 兼容性保障,导致取舍之间总是会纠结要不要继续保留老的 Linux 版本内核支持。Go1.24 期望用 Linux 内核 3.2最近 Go1.24 的规划已经提上日程了,其中包含一项内核变更《all: require L...
2024-09-03 08:41:32
2073
转载 面了一个六年 Go 老后端,一问三不知
今年后端的行情确实比去年好转了一些,不是我为了安慰大家,一方面群里后端朋友有面试机会和拿 offer 的人多了起来,另一方面CoderPad 发布的《2024 年技术招聘现状》报告也说,今年招聘后端开发 > 50 人的公司达到了 30%(去年是 23%)。这说明更多公司扩大了招聘规模,这对我们来说是一个积极的信号。八月算是找工作的小高峰,现在的情况已经和前几年完全不一样了,如果只是随便写写...
2024-08-27 08:41:09
343
原创 Go 总负责人 rsc 即将卸任,回顾他的光与暗!
大家好,我是煎鱼。前段时间大家应该有被一则重磅消息给震惊到,那就是:Go 核心团队的负责人 rsc,对外突然宣布要卸任了,时间定在 9.1 号。rsc 在此前领导了 Go 编程语言项目超过 12 年,我们所经历的 Go 核心功能的氛围、发展、Go+云原生的黄金时代,都与他有直接关系。卸任宣言重点本次 rsc 的卸任宣言正文来自《passing torches to Austin and Cherr...
2024-08-26 08:41:12
843
原创 Go GOPATH 模式未来会怎么样,会消失吗?
大家好,我是煎鱼。还记得好多年前,我们才刚刚开始学习和使用 Go 这一门编程语言。当时依赖管理还在用 GOPATH 模式,为此大家基于此去开发和管理了很多配套工具和流程。随着 Go 模块管理(Module)的成熟,有在用新的,有在用旧的。GOPATH 的去留成为了一个折腾的问题。GOPATH 存在的问题现阶段 Go 维护既有的 GOPATH 模式,至少存在两个重要问题:新特性更不上:在模块代理、校...
2024-08-22 08:41:12
840
原创 Go1.23 新特性:再开后门,可以记录未捕获的 panic 和 throw 日志了!
大家好,我是煎鱼。今天继续给大家分享 Go1.23 的新特性,这一轮里还是有不小有意思的惊喜的。其中不得不评本文中的这个新变化。必须得来一篇独立话题来提一下这个事!过去学习写 Go 时,初学者入门的教程教一定会提到在使用 panic 时,强烈建议要使用 recover。否则在 goroutine 的场景下很容易出问题,也会导致记不来日志。新版本后,终于有兜底 Go 程序崩溃的日志记录方法了!过于感...
2024-08-20 08:41:18
684
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人