LinuxZH

通过自由/开源软件周刊通讯,可以学习有用的Linux技巧,发现应用程序,探索新的发行版,并随时了解Linux世界的最新动态

文章

栈上分配
Anonymous

Keith Randall 2026 年 2 月 27 日 我们一直在寻找让 Go 程序更快的方法。在过去的两个版本中,我们专注于缓解一个特定的性能瓶颈——堆分配。每次 Go 程序从堆上分配内存时,都需要运行相当大的一段代码来满足该分配。此外,堆分配还会给垃圾回收器带来额外的负担。即使采用了像 Green Tea 这样的最新优化,垃圾回收器仍然会产生相当大的开销。 因此,我们一直在研究如何将更多的分配放在栈上而不是堆上。栈分配的执行成本要低得多(有时甚至完全免费)。更重要的是,它们不会给垃圾回收器带来任何负担,因为栈分配可以随栈帧本身一起自动回收。栈分配还能实现及时的复用,这对缓存非常友好。 固定大小切片的栈分配 考虑构建一个任务切片的任务: func process(c chan task) { var tasks []task for t := range c { tasks = append(tasks, t) } processAll(tasks) } 让我们过一遍运行时从通道 c 中取出任务并添加到切片 tasks 时会发生什么。 在第一次循环迭代中,tasks 没有后备存储,因此 append 必须分配一个。因为它不知道切片最终会有多大,所以无法过于激进。目前,它会分配一个大小为 1...

Go 1.26 发布
Anonymous

Carlos Amedee,代表 Go 团队 2026 年 2 月 10 日 今天 Go 团队很高兴地宣布 Go 1.26 正式发布。 你可以在下载页面找到二进制归档和安装程序。 语言变化 Go 1.26 引入了两个重要的语言语法和类型系统改进。 首先,内置函数 new(用于创建新变量)现在允许其操作数是一个表达式,用于指定变量的初始值。 一个简单的例子:以下代码: x := int64(300) ptr := &x 可以简化为: ptr := new(int64(300)) 其次,泛型类型现在可以在其自身的类型参数列表中引用自身。这一变化简化了复杂数据结构和接口的实现。 性能改进 之前处于实验阶段的 Green Tea 垃圾回收器 现在已默认启用。 cgo 开销 基线降低了约 30%。 编译器现在在更多情况下可以在栈上分配切片的后备存储,从而提升性能。 工具改进 go fix 命令已完全重写,基于 Go 分析框架,现在包含数十个"现代化工具"——即能安全修复代码的分析器,帮助你的代码利用语言和标准库的新特性。它还包含了 inline 分析器,它会尝试内联所有带有 //go:fix inline 指令的函数的调用。后续会有两篇博客文章详细介绍这些功能。 更多改进和变化 Go 1.26 在其工具、运行时、编译器、链接器和标准库方面引入了许多对 Go 1.25 的改进。其中包括新增三个包:crypto/hpke、crypto/mlkem/mlkemtest 和 testing/cryptotest。还有特定平台的变化和 GODEBUG 设置更新。 Go 1.26 中的一些新增功能仍处于实验阶段,只有在你明确选择启用时才会暴露。值得注意的有: 实验性的 simd/archsimd 包 提供了对"单指令多数据"(SIMD)操作的访问。 实验性的 runtime/secret 包 提供了一种安全擦除临时变量的工具,用于处理秘密信息(通常是加密性质的)的代码。 runtime/pprof 包中的实验性 goroutineleak 分析,用于报告泄露的 goroutine。 这些实验预计将在未来的...

Nginx Server names
Nginx Server names
Anonymous

Server names Server names are defined using the server_name directive and determine which server block is used for a given request. See also “How nginx processes a request”. They may be defined using exact names, wildcard names, or regular expressions: > server { > listen 80; > server\_name example.org...

Linux 6.19修复了希捷酷鱼硬盘SATA总线故障
Linux 6.19修复了希捷酷鱼硬盘SATA总线故障
Anonymous

Linux 6.19修复了希捷酷鱼硬盘SATA总线故障 现在人们很少谈论硬盘驱动器,但是今天Linux 6.19内核在Linux 6.19-rc2之前合并了一个重要的修复程序。如果您碰巧使用的是希捷ST2000DM008 酷鱼 2TB硬盘,则合并了一个重要的修复程序,以避免它破坏系统的SATA总线和/或潜在的其他问题。 两个月前,一个kernel.org上的bug报告被公开,报告内容是关于SATA总线在使用新版Linux内核时脱机的问题。在6.15之后的内核中,用户会发现他们的SATA总线离线,其中包含多个SATA ssd和一个HDD,以及系统上有一个NVMe驱动器。经过两个月和40多个bug评论后,SATA总线下线的问题终于得到了解决。这都是由一个有问题的希捷硬盘引起的。 bug报告详情 Seagate ST2000DM008在链路电源管理(LPM)处理方面存在一些问题,可能导致整个SATA总线在较新版本的Linux内核上出现故障。禁用此特定驱动器的链路电源管理可以修复整个系统的串行ATA总线丢失问题。 ...

每个开发人员都应该知道的19个Linux命令
每个开发人员都应该知道的19个Linux命令
Anonymous

每个开发人员都应该知道的19个Linux命令 Linux是现代软件开发的支柱。从云服务器和CI/CD管道到容器和嵌入式系统,Linux无处不在。 如果您是一名开发人员,掌握Linux命令不是可选的——它是生产力的倍增器。 本文涵盖了每个开发人员都应该知道的 20个基本Linux命令,并提供了清晰的解释和真实的用例。 1. ls – 目录列表 显示文件和目录。 ls ls -l ls -la Why it matters: 不断地浏览项目文件夹、日志和配置目录。 2. cd – 改变当前工作目录 在目录之间移动。 cd /var/www cd .. cd ~ Why it matters: 导航速度直接影响工作流效率。 3. pwd – 打印工作目录 显示当前目录。 pwd Why it matters: 防止在错误的目录中运行破坏性命令时出现错误。 4. mkdir – 创建目录 创建一个或多个目录。 mkdir project mkdir -p src/components Why it matters: 工程脚手架和清洁结构。 5. rm – 删除文件和目录 删除文件或文件夹。 rm file.txt rm -r folder rm -rf folder Why it matters: 经常使用,但很危险。认真检查。 6. cp – 复制文件和目录 cp file1 file2 cp -r src backup Why it matters: 用于构建、备份和部署。 7. mv – 移动或重命名文件 mv old.txt new.txt mv file.txt /tmp Why it matters: 重命名和重组项目。 8. cat...