自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(853)
  • 收藏
  • 关注

原创 用 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 820

原创 听说 TypeScript7.0 要用 Go 写?

实则上是:TypeScript7.0 编译器和工具的原生移植至用 Go 编写,以此实现大幅改善编辑器启动,将大多数构建时间缩短 10 倍,并大幅减少内存使用量的目的。这次对于 TypeScript 编译器和工具原生移植用 Go 来写,对于 Go 这一门编程语言来讲,是非常不错的。也意味着用户群体受益的更多。前段时间社区里掀起了一波大热潮,甚至在电梯间都偶有同事拍一拍我,说到听说 TypeScript7.0 要用 Go 重写了,真牛逼。结合 Go 社区的反响来看,优化还是非常及时的,态度上也是比较积极支持。

2025-03-24 08:41:16 630

原创 为什么 Go 不支持泛型方法?

可以在链接时(link time)实例化它,但在一般情况下,这需要链接器遍历整个程序的调用图,以确定可能传递给 CheckIdentity 的类型集合。在运行时(run time)实例化,这通常意味着使用某种 JIT(即时编译)技术,或者通过某种基于反射的方式来执行。因此若要在链接时实例化所有参数化方法,就可能需要为每种可能的类型参数实例化所有参数化方法,而这显然是不可行的。截止目前而言,Go 泛型方法的支持还处于纠结的尴尬境地。在既有的泛型设计中,Go 不允许方法,声明该方法特有的类型参数。

2025-03-18 08:41:42 923

转载 Manus 掀起技术风暴,这可能是你最后的翻盘机会?

最近朋友圈被 Manus(某 AI 新物种)刷爆了——它能 3 分钟生成电影级 CG、用自然语言训练数字人、像专业招聘人员一样筛选多份简历、甚至让虚拟主播 24 小时带货…Manus 还能异步处理文件,这意味着你可以随时关闭电脑,等任务完成后,它会通知你。内心 OS:这是什么天选“牛马”啊?!在惊叹技术突破的同时,我也和一些资深开发者聊了聊,发现焦虑比想象中更真实:某游戏公司主程:“团队里 00 ...

2025-03-13 08:41:13 22

原创 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 973

原创 Go 官方错误处理讨论:用 ? 替代 if err != nil 可以不?

大家好,我是煎鱼。对于 Go 这一门编程语言,截至目前较大争议话题仍在 if err != nil 在 Go 应用里所带来的各种繁杂代码,引起了社区很多正反方的探讨。原本以为 Go 核心团队已经摆烂了。但最近老大哥 @Ian Lance Taylor 提出了一个新提案[1](后转为讨论[2]),引起了大量的社区交流:背景:为什么还要关注这件事?在 Go 核心团队的视野中,现阶段对于处理 Go 错误...

2025-02-24 08:42:04 806

原创 Go1.24 新特性:OS 新版本要求、Wasm 功能增强、template 支持迭代器等

大家好,我是煎鱼。新版本 Go1.24 在 2 月 11 号已经正式发布,如果先前还没有留到的同学,可以关注下是否跟进了。先前我们已经更新了多篇新特性介绍。今天将会是最后一篇知识点的收尾。操作系统要求Linux 内核版本 >= 3.2在本次 Go1.24 新版本开始,需要 Linux 内核 3.2 版本或更高版本(划重点)。如果公司里的集群环境历史底蕴比较深的,建议升级前检查一下。(我们就是...

2025-02-17 08:42:00 944

转载 做了两个项目,Go、K8s、设计模式都让它给玩明白了

大家好,我是网管,公众号「网管叨bi叨」的号主,今天给大家聊聊Go语言、K8s 以及设计模式的一些常见问题。网上很多人觉得 Go 是门很纯的语言,老是觉得少即是多,用Go写程序不能学Java,不能搞那些设计模式,但是你要拿Go开发业务系统,本来就业务逻辑逻辑复杂,你再写那些很"单纯”的代码,能不能把自己蠢哭我不知道,反正是能把后面接你这摊代码的人给蠢哭。为了让自己也让周围的人都能改善下代码设计能力...

2025-02-14 08:41:18 59

原创 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 1168

原创 Go1.24 新特性:更多的迭代器方法、JSON 支持省略零值、终结器的改进等

大家好,我是煎鱼。今天给大家继续介绍 Go1.24 的新特性,主要涉及垃圾回收时的注册函数机制、新增的迭代器方法、JSON 零值的优化。改进的终结器(finalizer)本次新版本增加的 runtime.AddCleanup 函数是一个比原有 runtime.SetFinalizer 更灵活、更高效且更不易出错的终结机制。AddCleanup 允许为对象附加一个清理函数,该函数会在对象不可达时执行...

2025-02-07 08:41:52 688

原创 Go1.24 新特性:自旋互斥 lock2 优化,性能有一定提高!

大家好,我是煎鱼。除了上次跟大家提到的 map 使用 Swiss Table 来替换 Hashmap 的原始实现以外。本次 Go1.24 新版本还带来了更多的有效优化。今天这篇文章将继续和大家一起学习自旋互斥 lock2 优化。背景提案作者 @Rhys Hiltner 在 2024 年提出了改进互斥锁的性能优化诉求:其个人对于 runtime.mutex 值的部分经验是:整个进程会因为对单个 mu...

2025-01-20 08:41:55 1086

原创 Go1.24 新特性:map 换引擎,性能显著提高!

大家好,我是煎鱼。本次 Go1.24 新版本又带来了一个比较不错的优化点,Go map 做了一个比较大的改变,有了一定的性能优化。咱们又可以躺着升级个版本就得到一定的性能益处了。今天这篇文章将主要针对这部分进行新版本特性分享。该提案(go/issues/54766[1])的发起方是来自字节的大佬们。主要目的建议在 Go map 使用 Swiss Table 来替换 Hashmap 的原始实现。这里...

2025-01-06 08:41:26 1240

原创 Go1.24 新特性:泛型再查缺补漏,正式支持类型别名!

大家好,我是煎鱼。自从 Go1.18 支持泛型后,社区很多同学以为泛型会带来非常巨大的改变。但实际上,还是比较尴尬的。因为泛型还在持续的迭代中,还处于发展期。今天给大家分享的是 Go1.24 中给泛型加的新功能特性。一起来学习吧!背景泛型提案说:"类型别名(type alias)可以引用泛型,但类型别名不能有自己的参数。之所以有这一限制,是因为不清楚如何处理具有约束的类型参数的类型别名"。对应的场...

2024-12-30 08:41:26 1146

原创 Go1.24 新特性:迈向合规,crypto 加密库将支持 FIPS140!

大家好,我是煎鱼。最近在 Go1.24 中出现了一个较为少见的名词:FIPS140。而且还是加密库里的一个新适配。很 “官方” 的样子,让我好奇了起来。今天本文结合基本知识和库内容给大家分享,一起学习和进步。什么是 FIPS140联邦信息处理标准 (FIPS,全称:Federal Information Processing Standards) 140 系列是美国政府计算机安全标准,规定了对加密...

2024-12-23 08:41:19 806

原创 为什么 DTS 升级 MySQL 会造成查询缓慢?

大家好,我是煎鱼。最近我有一个朋友遇到了一个 MySQL 相关的问题,在开启 DTS 升级同步后实例上的 SQL 查询大量缓慢。但监控图表上是一切正常的。某技术支持给出的缘由是 table_open_cache 关联因素造成的。咱们今天目标是深究一下这个指标和问题背后的逻辑。table_open_cache 是什么官方文档介绍根据 MySQL5.7 文档,table_open_cache 参数项的...

2024-12-16 08:42:02 758

原创 Go1.24 新特性:增强 os 标准库,防止目录遍历漏洞!

大家好,我是煎鱼。马上就要到 2025 年的 2 月份啦。Go1.24 又即将如期而至。接下来将给大家逐步带来新版本的特性更新。今天要给大家介绍的是 Go 在标准库 os 上做的一个安全方面的增强。有兴趣的同学可以后续在功能上保持跟进。提案背景在安全方面,目录遍历漏洞是一类常见的漏洞,攻击者会诱使程序打开一个它在原本的程序逻辑中并没有计划打开的文件。这些攻击通常采取提供相对路径名的形式,例如:./...

2024-12-09 08:41:18 1234

原创 Go 基于区域的内存管理,再战手动管理!

大家好,我是煎鱼。最近 Go 核心团队成员 @Michael Knyszek 发起针对 memory regions 的社区讨论。试图引入新的基于区域的内存管理(Region-based memory management),并再次之前提到的 Arena 实验给捞一下。“基于区域的内存管理” 是什么在计算机科学中,基于区域的内存管理(Region-Based Memory Management)是...

2024-12-03 08:41:42 980

原创 Go 里的海勒姆定律?非必要不修改。。。

大家好,我是煎鱼。在我们日常工作中,只要你维护过历史比较悠久的项目。总会遇到一些神奇的代码。其中最莫过于在老代码上,前人让你不要改这块逻辑的注释。在 Go 中也有一些约定俗成的代码。周末看到了还有点意思,分享给大家。“该文本不可变更”在 net/http 标准库中,有以下这段代码:func(e*MaxBytesError)Error()string{//DuetoHyrum's...

2024-11-27 08:42:02 606

原创 Go 语言十五周年!权力交接、回顾与展望

大家好,我是煎鱼。2024 年 11 月 11 日,Go 语言迎来了它的 15 岁生日。自 2009 年开源发布以来,Go 语言以其稳定性、安全性和对大规模软件工程的支持而闻名。本文将回顾 Go 语言的发展历程,探讨其最新特性,并展望 Go 语言的未来。Go 语言的快速增长在过去的五年中,Go 的用户基数增长了三倍多,成为增长最快的编程语言之一。Go 语言不仅跻身于十大编程语言之列,更成为现代云计...

2024-11-21 08:41:29 727

原创 新提案:由迭代器启发的 Go 错误函数处理

大家好,我是煎鱼。Go 错误处理的问题一直是各大开发者关注的话题。最近 Go1.23 出了迭代器后,又有许多同学有了新的灵感和想法。今天给大家分享的是社区里的新提案:《proposal: spec: error handling via iterator-inspired handler functions》,该提案提出了一个创新的概念:通过迭代器启发式处理函数来改进 Go 的错误处理方式。本文将...

2024-11-19 08:41:32 710

原创 Cloudflare 从 PHP 到 Go:迁移与经验分享

大家好,我是煎鱼。在现代软件开发中,技术栈的选择对于项目的成功至关重要。随着业务需求的演变,技术迁移成为了一个不可避免的话题。在本文中,我们将探讨从 PHP 到 Go 的迁移过程。分享来自 Cloudflare 的资深工程师 Matt Boyle 和 Chris Shepherd 的见解和经验。主要内容将涉及他们迁移的动机、挑战、以及在这个过程中的心得体会。迁移动机性能考量Matt Boyle 指...

2024-11-11 08:41:55 759

原创 快速掌握 Go 二进制文件的静态和动态链接

大家好,我是煎鱼。在编写 Go 应用程序时,Go 本身提供了跨平台编译,提供了非常大的便利。但内部其实有许多静态和动态链接的相关知识点。今天给大家分享这一块的基本知识。如何选择?Go 团队的讨论Go 核心团队在创造这门编程语言时已经做了大量的讨论和权衡。“静态链接有很多优点。部署简单是其中之一。没有版本问题是另一个优点(升级可能永远不会破坏您的 go 二进制文件。但动态链接或解释语言则不然,因为依...

2024-10-30 08:41:20 984

原创 Go 正在发生变化?从泛型到迭代器的爱恨

大家好,我是煎鱼。前段时间 Kris Brandow 和嘉宾 Ian Lopshire 在播客中针对《Go 的发展方向错了吗?》这个命题进行了深入讨论,还探讨了 Go 语言的最新变化及其发展方向,重点涉及泛型和新版本加入的迭代器功能。社区对这些特性的反应各不相同:1、一些开发者认为增加的新特性违背了 Go 语言原本简洁的设计理念。2、另一些则期待这些功能为开发带来的灵活性和便利性。本文将结合两位嘉...

2024-10-28 08:41:34 795

转载 恭喜了!软考重大利好!全体后端狂欢吧!

????门槛低、起薪高、就业广、有证终身受益!强烈建议尽快搞个软考证,政策重大利好:✔︎年薪60W起;✔︎????5-25W/年补贴;✔︎升职/就业更快;✔︎享落户福利;✔︎以考代评职称;✔︎3600个税抵扣......如今,软考证书已经成为计算机人才的必考证书。不仅是架构/开发/软件多技术岗位的敲门砖,在求职、晋升、考编和接项目时,也更受青睐!在如今降薪裁员的浪潮下,很多技术人才都通过软考证书,实现了职场...

2024-10-23 08:41:52 100

原创 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 1086

原创 Go 即将支持特定代码在主线程运行!

大家好,我是煎鱼。国庆的时候看到了一个较少见的提案,Go 竟然会提供主线程 API 的控制(说好的不对外...),还是挺有意思的。本提案已经 Accepted,会进入 Go 主版本特性。今天分享给大家,一起围观学习一下!背景某些 API(尤其是 macOS 的 AppKit 和 iOS 的 UIKit)需要对启动线程进行独占控制。Go 已经支持此类 API,如果在 init 函数中调用了 runt...

2024-10-15 08:41:13 930 2

原创 Go 将会支持弱指针 weak!

大家好,我是煎鱼。最近 Go 又有了新的动作,一路绿灯,已经审批通过了新增弱指针(weak pointers)库的提案,这对于 Go 来讲是一个不错的补充。今天这篇文章我们主要分享弱指针的介绍,让大家有一个基本前瞻。因为这个提案已经 Accepted!弱指针是什么此处是引用 Go 官方提案给出的介绍和原因,也就是为什么 Go 核心团队认可要去做弱指针。弱指针(或其他语言中的弱引用)允许开发人员引用...

2024-10-09 08:41:58 1023

原创 Go1.23 新特性:争议最大的 iter 迭代器,可遍历万物!

大家好,我是煎鱼。Go1.23 新版本中,在发布过程中争议最大的新特性莫过于:迭代器(iterators)。原本计划先写一个这个 proposal 的提出背景的,但没想到,迭代器涉及的到 proposal 比较多,而且是由 rsc 亲自负责。总感觉 rsc 早有预谋,在 Go1.23 蓄力一击,搞完就撤了。Go1.23 新特性:迭代器提出过程我能翻到的最早明确提出要加迭代器是在 discussio...

2024-09-09 08:41:31 1421

原创 矛盾的很,Go1.24 将需要更新的 Linux 内核!

大家好,我是煎鱼。一门编程语言总是要适配多个平台多种架构,其中莫过于适配 Windows 和 Linux 的不同版本。老的可能会被逐渐废弃,稳定版本的逐渐占据主流。Go 有 Go1 兼容性保障,导致取舍之间总是会纠结要不要继续保留老的 Linux 版本内核支持。Go1.24 期望用 Linux 内核 3.2最近 Go1.24 的规划已经提上日程了,其中包含一项内核变更《all: require L...

2024-09-03 08:41:32 1966

转载 面了一个六年 Go 老后端,一问三不知

今年后端的行情确实比去年好转了一些,不是我为了安慰大家,一方面群里后端朋友有面试机会和拿 offer 的人多了起来,另一方面CoderPad 发布的《2024 年技术招聘现状》报告也说,今年招聘后端开发 > 50 人的公司达到了 30%(去年是 23%)。这说明更多公司扩大了招聘规模,这对我们来说是一个积极的信号。八月算是找工作的小高峰,现在的情况已经和前几年完全不一样了,如果只是随便写写...

2024-08-27 08:41:09 282

原创 Go 总负责人 rsc 即将卸任,回顾他的光与暗!

大家好,我是煎鱼。前段时间大家应该有被一则重磅消息给震惊到,那就是:Go 核心团队的负责人 rsc,对外突然宣布要卸任了,时间定在 9.1 号。rsc 在此前领导了 Go 编程语言项目超过 12 年,我们所经历的 Go 核心功能的氛围、发展、Go+云原生的黄金时代,都与他有直接关系。卸任宣言重点本次 rsc 的卸任宣言正文来自《passing torches to Austin and Cherr...

2024-08-26 08:41:12 828

原创 Go GOPATH 模式未来会怎么样,会消失吗?

大家好,我是煎鱼。还记得好多年前,我们才刚刚开始学习和使用 Go 这一门编程语言。当时依赖管理还在用 GOPATH 模式,为此大家基于此去开发和管理了很多配套工具和流程。随着 Go 模块管理(Module)的成熟,有在用新的,有在用旧的。GOPATH 的去留成为了一个折腾的问题。GOPATH 存在的问题现阶段 Go 维护既有的 GOPATH 模式,至少存在两个重要问题:新特性更不上:在模块代理、校...

2024-08-22 08:41:12 821

原创 Go1.23 新特性:再开后门,可以记录未捕获的 panic 和 throw 日志了!

大家好,我是煎鱼。今天继续给大家分享 Go1.23 的新特性,这一轮里还是有不小有意思的惊喜的。其中不得不评本文中的这个新变化。必须得来一篇独立话题来提一下这个事!过去学习写 Go 时,初学者入门的教程教一定会提到在使用 panic 时,强烈建议要使用 recover。否则在 goroutine 的场景下很容易出问题,也会导致记不来日志。新版本后,终于有兜底 Go 程序崩溃的日志记录方法了!过于感...

2024-08-20 08:41:18 647

转载 Go1.23 新特性:新库 structs.HostLayout,终于可以指定内存布局了!

大家好,我是煎鱼。在 Go 这一门编程语言中,我们时常会看到一些 Go 面试题或结构体的知识讲解,主要是针对内存对齐这一块的知识点。这次 Go1.23 新版本中也针对这块进行了一些补全,分享给大家,一起学习和进步!背景Go 在对于结构体(struct)的布局规则描述得相当简略。在现实环境中,大多数都是由需要准备面试的同学、感兴趣的同学研究后分析在社区内分享出来。但在实践中,由于结构体在极少数情况下...

2024-08-16 08:41:39 278

转载 8月,软考彻底爆了!?

人社部门重磅消息,程序员今年拿下软考赚翻了!日前,其官网发布的一则事业编招聘公告中提到,具有中级专业技术任职资格的人员报考年龄放宽至40岁,而具有高级技术任职资格的人员报考年龄放宽至45岁。政策口子一旦放开,持有软考证书的程序员退路又多了一条,“失业危机”至少往后延了5年时间!???? 软考证书,作为仅存的72项职业资格之一,拿下不仅具备中级或高级专业技术任职资格,还享受‍积分落户+单位评职称+涨养老金...

2024-08-14 08:42:00 153

原创 Go1.23 新特性:试图禁用 //go:linkname,建立新的握手机制!

大家好,我是煎鱼。Go1.23 的新版本特性中,还有一些声势浩大的变更,引发了社区的一些争议和讨论。今天主要给大家分享 //go:linkname 变更的前因后果和新特性。背景在今年 5 月份,rsc 不知道是看到了什么项目在乱搞什么骚操作,触发了他的 “逆鳞”。直接反手光速敲出了以下提案:他发现的问题是:目前存在过度使用 //go:linkname 来深入 Go 标准库内部(尤其用在 runti...

2024-08-12 08:41:29 1349

原创 Go1.23 新特性:slices、panic、cookie 等函数改进,效率提高了!

大家好,我是煎鱼。最近介绍了 Go1.23 的几个重要新特性。今天给大家分享一些本次新版本的方法/函数的功能优化、改进的汇总。主打一个快速知悉,跟上新用法。看看 rsc 在 Go 核心团队负责人的职业生涯最后都推动了什么函数的合入。Go1.23 方法/函数优化slices.Repeat这是一个今年(2024 年)才提出的新提案,原提案作者提供给功能介绍时,还给出了其他语言的相关案例。很快受到了 G...

2024-08-07 08:41:53 1631

转载 最近行情变了,后端这薪资。。。

随着GPT大热“AI大模型”无疑是最火爆的话题!Google、百度、腾讯等巨头互联网公司,无不在布局人工智能技术和市场,为挖掘会用AI的后端相关人才甚至开出60k*16薪的高薪抢人作为普通程序员,如何站在时代前沿,享受AI技术带来的红利?!????知乎知学堂特发起:行业前沿资源——AI大模型公开课已为本号粉丝开通免费领取权限预计24小时后关闭通道!速进!AI大模型-重塑程序员核心竞争力(不限年龄!不...

2024-08-05 18:10:37 131

原创 Go1.23 新特性:time.Reset 终于解决了过期时间值的坑!

大家好,我是煎鱼在 Go1.23 以前,标准库 time 除了 After 方法外。还有另外一个问题,那就是 Stop 和 Reset 方法不太靠谱。以至于大家在一些特殊场景下总是这踩点坑,那踩点坑。无论如何,解决了就值得我们给 rsc 鼓掌!问题背景最早的反馈来自 2016 年的 time: document proper usage of Timer.Stop[1],随后在 2020 年终于有...

2024-08-04 10:10:57 1202

转载 Go MySQL 的学习秘籍,我不允许还有人不知道!

前两天,我跟一个面试官聊天,发现一个普遍现象,不少候选人,对数据库的认知,还处在比较基础的阶段,以为会写“增删改查”、做表关联就足够了,那些工作中经常出现的问题,却支支吾吾答不上来,比如:使用索引查询一定能提高查询的性能吗?为什么?一个 6 亿的表 a,一个 3 亿的表 b,通过外间 tid 关联,你如何最快地查询出满足条件的第 50000 到第 50200 中的这 200 条数据记录?一条 SQ...

2024-08-02 08:41:35 98

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除