IT IT技术大学习 共学习、共进步

blogread.cn

IT技术大学习

把技术文章与技术头条放在一个安静的入口里:先看近期热文,再扫最新文章和分享流,减少跳转和无效信息。

近 24 小时热文

近一天浏览数排行。

更多
  1. 1 Postmortem: 关于 xzutil 后门事件的一些事后复盘 近 24 小时 19 浏览
  2. 2 C++ 中的 main 定义 近 24 小时 16 浏览
  3. 3 120个优秀的水平导航设计 近 24 小时 13 浏览
  4. 4 apt 的 update 和 upgrade 命令的区别是什么? 近 24 小时 13 浏览
  5. 5 errno 的实现 近 24 小时 13 浏览
  6. 6 到底什么是MVC? 近 24 小时 12 浏览
  7. 7 数据分析中常用的数据模型 近 24 小时 11 浏览
  8. 8 Cacti 添加 Nginx 监控 近 24 小时 11 浏览

近 3 天热文

近三天浏览数排行。

更多
  1. 1 浏览器的工作原理:新式网络浏览器幕后揭秘 近 3 天 63 浏览
  2. 2 我常用的主机监控shell脚本 近 3 天 53 浏览
  3. 3 Cacti 添加 Apache 监控 近 3 天 51 浏览
  4. 4 海量数据面试题举例 近 3 天 50 浏览
  5. 5 Postmortem: 关于 xzutil 后门事件的一些事后复盘 近 3 天 46 浏览
  6. 6 一张图帮你看懂 iPhone 的屏幕分辨率 近 3 天 43 浏览
  7. 7 P和NP那些事 近 3 天 43 浏览
  8. 8 Cacti 添加 Nginx 监控 近 3 天 42 浏览

最新技术文章

从文章库里持续更新,保留摘要和分类,方便判断是否值得点开。

全部最新
文章 2026-02-15 累计浏览 24 Linux

errno 的实现

本文从 errno 这个看似普通的错误码接口切入,解释了为什么它不能简单地作为全局变量存在,以及 POSIX 从“外部变量”转向“可修改左值宏”背后的线程安全需求。 文章进一步拆解了 FreeBSD 的具体实现:errno 被定义为对 __error() 返回指针的解引用,单线程场景下回到全局存储,多线程场景下则由 libthr 通过构造函数、函数指针切换和弱符号介入,把访问路径切换到线程私有的错误码存储。这个过程展示了 C 运行时在 ABI 兼容、性能开销和线程语义之间的权衡。 对于系统编程、C 运行库、POSIX 线程模型或 FreeBSD 实现机制感兴趣的读者,这是一篇信息密度较高的源码解读。它能帮助读者理解一个常用宏背后隐藏的运行时设计,也适合作为分析 libc 与线程库协作机制的入门案例。

文章 2025-10-27 累计浏览 27 CSS/HTML

CSS 中的标点悬挂及其现状

本文从中文网页排版中一个容易被忽略的细节切入,解释了标点悬挂如何通过让行首或行尾标点略微越出文本边界,改善段落视觉对齐与阅读体验。 文章不仅介绍了 hanging-punctuation 的 CSS 语法和取值,还用 Safari 与 Chrome 的显示差异说明标准实现与现实兼容性之间的落差。它的价值不在于提供复杂方案,而在于提醒前端开发者:中文排版质量并不只取决于字号、行高和字体,标点、对齐边界和浏览器实现同样会影响最终阅读体验。 对于做内容站、博客、出版类页面或重视中文阅读体验的产品团队,这是一篇短小但有启发性的技术观察。

文章 2025-06-22 累计浏览 103 安全

Postmortem: 关于 xzutil 后门事件的一些事后复盘

xzutils 后门事件是近年来最具代表性的开源供应链攻击案例之一。本文不是重复介绍漏洞原理,而是从 FreeBSD 维护者的角度,复盘这一事件如何影响系统发行版的第三方软件引入流程。 文章指出,FreeBSD 最终没有受到实际影响,很大程度上来自其重写 build 部分、删除用例代码等工程实践。但作者也坦承,这并不意味着流程无懈可击,尤其是在使用上游签名 tarball、比较 git 内容、运行构建脚本等环节,仍然存在被攻击者利用的空间。 最值得关注的是,文章把供应链攻击的目标从“最终用户系统”前移到了“维护者本人”。如果维护者在本机、非隔离环境中执行下载来的代码或生成脚本,攻击者完全可能先攻破维护者环境,再进一步污染下游生态。 这篇文章适合关注开源治理、发行版维护和软件供应链安全的读者阅读。它的价值不在于给出复杂技术细节,而在于提醒团队重新审视日常维护流程中的默认信任。

文章 2025-11-22 累计浏览 56 系统架构

嵌入主线程消息循环的任务调度器

这篇文章记录了 soluna/ltask 在移植到 wasm 和非 Windows 平台过程中遇到的一个典型工程难题:如何在主线程事件循环中执行特定任务,同时仍保留原有多线程调度模型。 问题的核心来自图形 API 和平台约束。sokol 并非线程安全,OpenGL 又依赖当前线程状态,而 wasm 环境下主线程、worker、pthread API 的边界进一步放大了调度复杂度。 作者的解决思路不是重写整个调度器,而是在 ltask 中“打洞”:让某些必须在主线程回调中执行的 Lua 任务,临时从调度表中移出,由主线程接管执行,完成后再归还给调度器。 文章最有价值的地方,是把 coroutine、Lua 虚拟机、C 栈、主线程事件循环和图形 API 约束放在同一个工程场景中分析。它不适合泛泛阅读,但对做游戏引擎、wasm 移植或复杂运行时调度的开发者很有参考价值。

文章 2025-09-24 累计浏览 44 其他

git submodule 与 subtree 的异同

很多团队在拆分大型 Git 仓库时,都会遇到 submodule 和 subtree 的选择问题。本文围绕两种方案的实际维护体验展开分析,而不是只停留在命令层面对比。 作者认为,submodule 更符合“仓库独立治理”的设计目标,适合需要清晰边界、独立版本管理和长期维护的大型项目;而 subtree 虽然使用门槛更低、clone 更方便,但容易造成代码冗余和仓库持续膨胀。 文章比较有价值的地方在于,它没有单纯强调“哪种更简单”,而是从架构治理、团队协作和长期维护成本角度讨论问题,适合已经进入中大型工程阶段的团队参考。 如果你正在做 monorepo 拆分、多仓库治理,或者维护复杂依赖关系,这篇文章值得一读。

文章 2025-02-13 累计浏览 68 其他

C++ 中的 main 定义

新的 C++ 标准中 不允许给 main 指定 linkage-specification 了。 当然,考虑到原本 main() 也是 C 运行环境在开始运行程序的时候调用的, 而 C 运行环境自然也预期 C linkage,即不按照 C++ 的习惯对符号根据参数增加名字前缀, 因此大部分编译器在遇到 C++ 程序定义全局 main() 的时候也会按照习惯采取 C linkage 方式去翻译。这一规则首先被 GCC 采纳,随后 LLVM 也跟进了。 然而我今天遇到一个奇葩彻底把我雷到了。