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

blogread.cn

IT技术大学习

IT技术大学习(blogread.cn)以“共学习、共进步”为标语,自 2009 年持续维护,是面向开发者和技术管理者的技术内容策展入口。我们订阅公开技术博客、团队博客和社区提交链接,结合来源清单、分类规则和排序机制,筛选有工程经验、实践细节、工具方法或行业参考价值的文章与头条;每篇收录内容保留来源名称和原文入口,帮助读者在低噪声环境中发现值得继续阅读的技术内容。完整说明见 我们的故事与使命

近 24 小时热文

近一天浏览数排行。

更多
  1. 1 网络数据的背后――网络日志的分析指标 近 24 小时 20 浏览
  2. 2 errno 的实现 近 24 小时 20 浏览
  3. 3 2014年1月21日中国互联网DNS瘫痪事件原因分析 近 24 小时 19 浏览
  4. 4 OKR 工作法简介 近 24 小时 19 浏览
  5. 5 Postmortem: 关于 xzutil 后门事件的一些事后复盘 近 24 小时 17 浏览
  6. 6 WEB系统需要关注的一些点 近 24 小时 17 浏览
  7. 7 Linux内核模块开发(笔记) 近 24 小时 16 浏览
  8. 8 Row Cache For Innodb 近 24 小时 15 浏览

近 3 天热文

近三天浏览数排行。

更多
  1. 1 OKR 工作法简介 近 3 天 194 浏览
  2. 2 WEB系统需要关注的一些点 近 3 天 125 浏览
  3. 3 Postmortem: 关于 xzutil 后门事件的一些事后复盘 近 3 天 60 浏览
  4. 4 通过引用计数解决野指针的问题(C&C++) 近 3 天 58 浏览
  5. 5 到底什么是MVC? 近 3 天 55 浏览
  6. 6 errno 的实现 近 3 天 54 浏览
  7. 7 使用Fiddler对手机应用进行抓包测试 近 3 天 53 浏览
  8. 8 apt 的 update 和 upgrade 命令的区别是什么? 近 3 天 52 浏览

最新技术文章

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

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

errno 的实现

errno 这个在 C 代码里随处可见的简单标识符,背后藏着从标准定义到操作系统内核实现的层层设计。这篇文章正是从 POSIX 标准对 errno 的定义出发,一路深挖其背后的实现细节与工程权衡。 文章核心剖析了 errno 如何在多线程环境下保证安全的经典难题。作者没有停留在“errno 是一个宏”的浅层解释,而是深入系统库的源码,展现了不同操作系统和 C 库(如 glibc)的具体解决方案。关键思路在于为每个线程维护一份私有的 errno 副本,具体实现则涉及线程局部存储(TLS)区域的分配与高效访问。 其中的一些巧妙之处值得注意:例如,为了性能,对 errno 的读写操作常被实现为轻量的宏函数,而非函数调用;为了兼容性,实现者需要在直接使用 TLS 变量和通过间接指针访问等多种方式间做选择,以同时支持老旧的二进制代码。文章通过代码片段和对比,清晰地揭示了这些为兼顾效率、安全与可移植性所做的设计。 读完便能理解,为什么我们不能想当然地直接操作 errno 变量。对于希望真正理解系统编程或排查相关隐晦 bug 的开发者而言,这篇从标准溯源到实现落地的分析,提供了一次难得的底层认知构建。

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

CSS 中的标点悬挂及其现状

这篇讲的是 CSS 中的“标点悬挂”这个细节但重要的排版问题。作者从中文排版的实际需求出发,解释了为什么标点符号(如逗号、句号)如果“挤”在行首会破坏版面的紧致与美观,并详细说明了如何让标点“悬挂”在行外,不占用正文的字距空间。 文章的核心对比在于实现方式:虽然通过 `text-decoration` 这个非标准属性可以模拟效果,但现代浏览器正在原生支持 `text-spacing-trim` 这一新属性,它能更精准、优雅地处理全角标点的挤占问题。作者深入剖析了两者的实现原理与差异,并指出了当前浏览器的兼容性现状——这是开发者需要密切关注的实践关键。 对于关注中文网页排版的前端工程师而言,这篇文章厘清了概念、对比了方案,并点明了技术演进的方向,对提升界面精致度有直接的参考价值。

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

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

这篇讲的是2024年3月震惊开源社区的xzutil后门事件的一次深度复盘。与许多聚焦于“漏洞如何被发现”的文章不同,作者以非事件第一发现者的社区成员视角,梳理了从攻击者潜伏、到恶意代码合入、直至被偶然揭露的完整时间线。 文章的核心在于拆解攻击者的精密手法:攻击者如何通过长期经营信任、利用维护者精力有限的空隙,将恶意代码巧妙伪装成性能优化提交。复盘特别指出了这次供应链攻击的深远影响,它暴露了关键基础设施软件维护的脆弱性,以及一个“单点”维护者可能带来的系统性风险。 作者并非止步于描述事件,而是从技术社区协作模式的角度给出了思考:当项目的健康度与少数关键人物深度绑定时,我们该如何建立更健壮的防线?这种基于具体事件、指向系统层面的反思,让这次复盘超越了单纯的事件记录,为每一位开源参与者提供了审视自身所处生态安全的实用视角。

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

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

这篇文章聚焦于将基于多线程调度器的项目 `soluna`,移植到 WebAssembly 等非 Windows 平台时遇到的核心难题。作者从项目维护的实际需求出发,解释了为何在可能退化为单线程的环境中,模拟出 `ltask` 调度器的能力成为关键挑战。 文中介绍的核心实现思路颇具巧思:将原本独立的任务调度器巧妙地“嵌入”到主线程自身的消息循环里。这意味着主线程需要同时承担两份工作——既要处理自己的消息队列,又要扮演调度器的角色,为其他逻辑“线程”(通常是协程)分配执行机会。作者没有停留在理论层面,而是深入探讨了如何在单一线程上,通过协作式调度和精心设计的队列,来模拟多线程环境下的任务切换与调度行为。 这种设计确保了项目的多线程调度架构得以保留,其核心价值不因平台变化而丧失。文章清晰地展示了一个现实场景下的工程权衡与技术适配过程,对于需要处理类似跨平台移植问题,或是对单线程高并发模型感兴趣的开发者而言,提供了非常具体的实现参考。

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

git submodule 与 subtree 的异同

最近有开发者在整理代码仓库、尝试将代码与数据分离时,借助 `filter-repo` 等工具,引发了关于究竟该用 `git submodule` 还是 `git subtree` 的思考。这篇文章就深入对比了这两个看似功能相似、实则内核与适用场景迥异的 Git 功能。 两者最核心的差异在于代码的“存在形式”。`submodule` 像是一个精确的指针,它只在你的主仓库中记录一个指向特定子仓库提交的链接。因此,主仓库保持精简,但每次克隆或拉取后,你都需要额外执行 `git submodule init` 和 `update` 来同步子模块内容,管理上更为“显式”。 相反,`subtree` 则采用“拿来主义”,它将子仓库的代码内容直接合并到主仓库的指定目录下,代码成为主仓库历史的一部分。你无需额外步骤就能看到并编辑全部代码,操作更直接,但代价是主仓库的历史记录会膨胀,且后续同步上游更新时可能产生更复杂的合并。 这种差异直接决定了它们的适用场景。如果你的子项目是清晰分离、需要独立版本管理且上游更新频繁的组件(例如共享库),`submodule` 提供了干净的隔离。若你只是希望将某个外部项目的某次快照代码嵌入你的项目,或对代码的便捷访问和单一仓库管理的需求高于历史清洁度,那么 `subtree` 的“一体化”方案会更简单省心。文章通过一个真实的代码整理场景,清晰地剖析了这两种方案的优劣与选择依据,能帮助开发者在项目管理和代码组织时做出更合适的决策。

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

C++ 中的 main 定义

这篇讲的是 C++ 最新标准里一个看似微小却影响行为的细节调整:关于 `main` 函数的定义。 作者直接指出了核心变化——根据最新的 C++ 标准草案,程序入口函数 `main` 不再允许被 `extern "C"` 这样的 linkage-specification 修饰。文章引用了标准原文,明确了这一点。对于很多习惯了在某些项目或编译器下这样写来避免名字修饰的开发者来说,这可能会造成困惑或编译错误。 文章进一步解释了背景:在旧标准和实际编译器实现中,`main` 作为程序入口点,其链接约定有着特殊的隐含处理。允许用 `extern "C"` 修饰是一种非正式的宽容行为,但新标准明确了这一行为是不符合规定的。文章通过展示错误用法与正确用法的代码对比,清晰地指明了正确做法——只需遵循基本的 `main` 函数签名即可。 这提醒我们,依赖编译器的“非标准特性”或历史宽容行为存在风险。随着标准演进,这些模糊地带正在被澄清。对于需要严格符合标准的代码,尤其是跨平台项目,留意此类细节更新很有必要。

文章 2026-04-27 累计浏览 120 CSS/HTML

如何使用CSS判断鼠标从哪个方向进入元素?

这篇讲的是前端开发中一个很实用的细节:如何用纯CSS或结合少量JS,来精准判断鼠标是从哪个方向进入一个元素的。作者从常见的菜单悬停效果切入,直接对比了两种主流思路。一种是利用JavaScript监听事件来计算方向,另一种则是通过巧妙的CSS变量与伪元素配合,仅用`mouseenter`触发就能实现方向感知。文章不仅展示了最终效果,还拆解了每种方案的核心实现逻辑,比如CSS方案中如何通过过渡属性控制伪元素的“展开”动画,从而自然呈现进出方向。作者对比了两种方案的代码量、性能开销以及适用的场景,指出纯CSS方案在轻量级交互中更显优雅,而JS方案在复杂逻辑中则更灵活。读完后,你不仅能直接套用代码,更能理解这些技术选择的权衡点。