分类: 编程技术

Linux 管道的速度到底有多快?

Linux 管道的速度到底有多快?

我们通过分析 perf 输出和 Linux 源代码,系统性地提升了程序的性能。管道和拼接在高性能编程中并非热门话题,但我们涉及的主题包括:零拷贝操作、环形缓冲区、分页与虚拟内存、同步开销。

每位开发者都应尝试 Vim

每位开发者都应尝试 Vim

学习Vim不仅仅是选择一个新的编辑器,更是改变你与代码互动的方式。我认为每位开发者都应该尝试一下Vim,看看它是否适合自己。如果你坚持下去,Vim会让你获得一种难以言喻的控制感和流畅性,直到你亲身体验才会明白。

HTML 规范变更:对属性中的 < 和 > 进行转义

HTML 规范变更:对属性中的 < 和 > 进行转义

此更改仅修改了在序列化过程中将 HTML 片段转换回字符串表示的方式。影响仅限于访问 innerHTML 或 outerHTML 属性或对元素调用 getHTML() 方法的情况。这些操作会采用现有的 DOM 结构,并生成文本 HTML 表示法。

如何修改Starlink Mini以在不使用内置WiFi路由器的情况下运行

如何修改Starlink Mini以在不使用内置WiFi路由器的情况下运行

本文将详细介绍如何物理移除 Starlink Mini 中的内置 Wi-Fi 路由器板,使终端仅通过以太网运行,从而为高级用户提供更大的灵活性。请注意,此修改仅适用于Starlink Mini 1(截至2025年6月14日)。未来型号(如预期中的Mini 2)的硬件变更可能使此过程失效。

在字符串中检测元音的最快方法

在字符串中检测元音的最快方法

但当我开始深入研究时,我意识到这背后还有更多内容。我挑战自己想出尽可能多的检测元音的方法。我还让几位朋友尝试了一下。哪种方法最快?哪种方法绝不能使用?哪种方法最巧妙?哪种方法最易读?这篇文章涉及11种不同的检测元音的方法,包括算法分析、解析Python字节码、检查CPython实现,甚至查看编译后的正则表达式操作码。让我们开始吧。

Python 正在逐步移除 GIL,这对 Python 开发者意味着什么

Python 正在逐步移除 GIL,这对 Python 开发者意味着什么

鉴于无 GIL Python 预计将于 2028 年左右成为默认版本,而当前的无 GIL Python 3.13 仅为实验性构建,我们目前不应在生产环境中使用无 GIL Python。因为仍存在许多不确定性——包括兼容性、稳定性和生态系统采用率。它需要时间来完善。但我们确实应该密切关注无GIL Python的发展。它已经发生了,而且非常令人兴奋!

我不遵循的五个软件最佳实践

我不遵循的五个软件最佳实践

尽管没有开发者希望过这样的生活,但许多人在职业生涯中至少经历过一次。为了确保这样的混乱留在过去,他们从战斗的伤痕中总结出了集体智慧。我通过近十年的专业开发经验积累了一些智慧,同时也从同事那里学到了更多。

日志分析工具 GoAccess 配置详细教程

日志分析工具 GoAccess 配置详细教程

GoAccess是一个网络日志分析工具,它允许你可视化网站的流量,并更深入地了解访客信息:访客数量、页面访问量、访客来源(地理位置、操作系统、浏览器等)。它通过解析网页服务器的访问日志实现这些功能,无论是Apache、NGINX还是其他服务器均适用。

用一个奇招检测并让Chromium机器人爬虫崩溃(机器人爬虫讨厌这个!)

用一个奇招检测并让Chromium机器人爬虫崩溃(机器人爬虫讨厌这个!)

享受这个漏洞吧。把它留在你的工具箱里。在测试环境中让机器人崩溃时笑一笑。但也许不要在生产环境中部署它。尤其是当Googlebot能看到它的时候。

Rust 比 C 更快吗?

Rust 比 C 更快吗?

假设我们有一个初级开发人员在写 Rust,也在写 C,做的是同一个任务。我们会在其中一种语言中获得更快的代码吗?这控制了能力,但控制不了相同的代码。这是“相同”的吗?

为什么 C++ 认为我的类是可复制构造的,而实际上它无法被复制构造?

为什么 C++ 认为我的类是可复制构造的,而实际上它无法被复制构造?

对于“这个类是否可复制构造?”这个问题,答案应该是什么?你不知道定义是什么,只知道它的声明。编译器是否应该停止编译并显示错误信息“无法预测未来”?但是,如果你不想在头文件中暴露复制构造函数的实现呢?判断可复制构造的规则是是否存在未被删除的复制构造函数。

SVG 网站图标(favicon)的实际应用

SVG 网站图标(favicon)的实际应用

我们有充分理由关注SVG Favicon:暗色模式支持。暗色模式近期备受关注。您可能已为自己的网站实现了暗色模式。这对图标意味着什么?这意味着根据浏览器标签页背景亮度显示不同Favicon的能力。

这是 JavaScript 吗?

这是 JavaScript 吗?

当有人说"这只是 JavaScript"时,更明确的说法应该是"这只是适用于…的 JavaScript",例如:这是适用于浏览器的 JavaScript; 它只是用于 Node 的 JavaScript;它只是用于 Next.js 的 JavaScript

如何处理 Rust 依赖项

如何处理 Rust 依赖项

虽然一些微型 crates 各自都能很好地完成某项任务,但我们仍然应该寻找一种方法来减少依赖树中的依赖项数量。

为什么 2025/05/28 和 2025-05-28 在 JavaScript 中是不同的日子?

为什么 2025/05/28 和 2025-05-28 在 JavaScript 中是不同的日子?

,JavaScript Temporal 即将推出:一套新的日期和时间 API,旨在取代 Date 对象。我们最初的整个日期解析问题源于时区歧义,但在很多情况下,我们希望将纯日期字符串完全视为纯日期。

在 Rust 中写入未初始化的缓冲区

在 Rust 中写入未初始化的缓冲区

Rust 中的非初始化缓冲区是一个由来已久的问题, John Nunley and Alex Saveau 想到了一种新方法,使用 Buffer Trait,现在已经出现在 rustix 1.0 中,我将在这篇文章中介绍。

contrast-color():在 CSS 中让浏览器给出对比色

contrast-color():在 CSS 中让浏览器给出对比色

虽然例子都是在彩色背景上显示黑/白色文字,但contrast-color()的用途远不止于此。你可以为文字使用自定义颜色,并将背景设为黑/白色。或者完全不涉及文字,为边框、背景等定义颜色。你可以做很多事情。

每个开发人员最需要的三种重构

每个开发人员最需要的三种重构

Extract Method、Rename Variable/Method/Class 和 Extract Variable 并不是工具箱中唯一的重构工具,但却是最有用的工具。它们带来的好处最多。 如果让我只选择一个,我会选择 Extract Method,因为它能最有力地抵御方法庞杂这一常见问题(诱惑?

JavaScript 的新超能力:显式资源管理

JavaScript 的新超能力:显式资源管理

显式资源管理提案引入了一种确定性方法,用于显式管理文件句柄、网络连接等资源的生命周期。该提案为语言增加了以下内容:using 和 await using 声明,当资源退出作用域时会自动调用处置方法;[Symbol.dispose]() 和 [Symbol.asyncDispose]() 符号,用于清理操作。asyncDispose]() 符号;

掌握 Python 3.8+ 中的海象操作符 (:=)

掌握 Python 3.8+ 中的海象操作符 (:=)

海象运算符并不是为了写出更短的代码,而是为了在适当使用时写出更清晰、更高效的代码。它在循环、综合和条件中特别有用,消除冗余既能提高性能,又能提高可读性。

Python 3.14 中的最佳新功能和修正

Python 3.14 中的最佳新功能和修正

遗憾的是,由于 Clang/LLVM19 中的一个编译器错误(已在后续版本中修复),最初估计的这一更改的性能改进结果偏差很大。性能提升幅度在 3% 到 5% 之间,远低于最初报告的 9% 到 15% 的速度提升。

我用 Zip 炸弹保护我的服务器

我用 Zip 炸弹保护我的服务器

zip 炸弹并非万无一失。它很容易被发现和规避。毕竟你可以阅读部分内容。但对于那些盲目爬网、扰乱服务器的不成熟机器人来说,这已经是保护服务器的好工具了。

PHP 8.4 新增 DOM Selector 功能使用说明

PHP 8.4 新增 DOM Selector 功能使用说明

PHP 8.4 引入的 DOM 选择器 API 提供了直观的、基于 CSS 的选择方法,从而简化了 DOM 文档的处理。新的 querySelector() 和 querySelectorAll() 方法允许开发人员使用 CSS 选择器轻松定位 DOM 元素,使代码更简洁、更易维护。

具有魔法的 H.264

具有魔法的 H.264

从技术上讲,它非常有趣。这篇文章将深入浅出地介绍其中的一些细节--我希望不会让你对错综复杂的细节感到厌烦。另外请注意,这里解释的许多概念适用于一般的视频压缩,而不仅仅是 H.264。

多用户环境中的 rootless Docker

多用户环境中的 rootless Docker

在使用无根 Docker 几个月后,我想我找到了一种方法,可以以一种感觉恰到好处的便捷方式实现无根 Docker,并希望在这篇简短的教程中与大家分享。