<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[从不说安全词]]></title><description><![CDATA[从不说安全词]]></description><link>https://jt26wzz.com/</link><image><url>https://jt26wzz.com/icon/favicon.png</url><title>从不说安全词</title><link>https://jt26wzz.com/</link></image><generator>https://rss.app</generator><lastBuildDate>Thu, 30 Apr 2026 00:25:11 GMT</lastBuildDate><atom:link href="https://rss.app/feeds/dwHFEqMa731kBTPW.xml" rel="self" type="application/rss+xml"/><language><![CDATA[zh]]></language>
 <item>
      <title><![CDATA[我的第一个 Linux 内核补丁：从一个 TCP Listener 的 Bug 说起]]></title>
      <description><![CDATA[这篇博客记录了我第一次给 Linux 内核贡献 Bugfix 补丁的全过程。第一部分记录我是怎么发现这个 TCP Listener 的 Bug，第二部分详细记录了我给内核提交补丁的完整过程和心得总结，第三部分分享我对开源社区运作的新理解，包括它和商业化组织里的工作有什么不同，以及如何更好地参与开源社区、让个人得到成长。]]></description>
      <link>https://jt26wzz.com/posts/0016-my-first-linux-kernel-patch-fixing-a-tcp-listener-bug/</link>
      <guid isPermaLink="false">32d6b9ac7fa329f8dd4cff917e376796</guid>
      <dc:creator><![CDATA[jt26wzz.com]]></dc:creator>
      <pubDate>Thu, 30 Apr 2026 00:25:11 GMT</pubDate>
</item>
 <item>
      <title><![CDATA[为什么我们总是不擅长临场发挥]]></title>
      <description><![CDATA[这篇文章想聊我对“临场发挥”的重新理解。很多人之所以会卡壳，并不是因为现场反应太慢，而是平时没有把那些模糊的想法打磨到能顺手表达出来。最近我很喜欢让 AI 反过来追问我，因为真正把想法逼清楚的，往往不是一次回答，而是一轮轮作答、追问和修正。]]></description>
      <link>https://jt26wzz.com/posts/0015-why-we-struggle-with-improvised-speaking/</link>
      <guid isPermaLink="false">7f6e8c5a4b1d4e6eb9c43f2a9d7e1c84</guid>
      <dc:creator><![CDATA[jt26wzz.com]]></dc:creator>
      <pubDate>Tue, 10 Mar 2026 21:34:12 GMT</pubDate>
</item>
 <item>
      <title><![CDATA[程序员的自我修养：如何用好 GDB]]></title>
      <description><![CDATA[博客标题可能起得有点狂妄，但我这里只是为了致敬《程序员的自我修养：链接、装载和库》这本书，提前说明一下，手动狗头保命。想必大家现在都是让 AI agent 自动编写和执行 GDB 脚本来捕获信息进行分析，或者让 AI 自己分析 Coredump 文件，自己动手的情况可能越来越少了。但在这篇博客中，我还是想聊一聊在 AI 时代如何更好地使用 GDB：更具体地说，对 GDB 背后原理要理解到什么程度，才能大概掌握 GDB 工具的能力边界，在一些复杂问题上不至于被 AI 牵着鼻子走。]]></description>
      <link>https://jt26wzz.com/posts/0014-the-dwarf-behind-the-debugger/</link>
      <guid isPermaLink="false">7d2a9b4ce1f84b5a9d6c3f82a10b7e42</guid>
      <dc:creator><![CDATA[jt26wzz.com]]></dc:creator>
      <pubDate>Sun, 25 Jan 2026 10:12:38 GMT</pubDate>
</item>
 <item>
      <title><![CDATA[两个月重度使用 AI Code Agent：普通一线程序员的思考和感想]]></title>
      <description><![CDATA[两个月重度使用 AI Code Agent 之后，我开始重新理解程序员和工具之间的关系。以一个非 AI 领域从业者的普通程序员视角看，后续的主流开发很可能会切换到 AI 工具来生成代码，程序员更多需要承担起技术架构师的职责，这意味着对程序员的要求不仅没有降低，反而变得更高了。]]></description>
      <link>https://jt26wzz.com/posts/0013-ai-coding/</link>
      <guid isPermaLink="false">9980912dd9784b7590b6d343d66be902</guid>
      <dc:creator><![CDATA[jt26wzz.com]]></dc:creator>
      <pubDate>Tue, 28 Oct 2025 12:13:14 GMT</pubDate>
</item>
 <item>
      <title><![CDATA[Learning eBPF the hard way: 从 nginx eBPF 的实现说起]]></title>
      <description><![CDATA[聊了聊为什么想写这个新系列，以及为什么喜欢 eBPF 技术，然后就是通过介绍 Reuseport eBPF 方案是怎么解决 UDP 热更新问题的技术细节，以及分析 nginx eBPF 实现和缺陷，来回顾了自己当初由于不了解 eBPF 加载器背后原理而踩过的坑。最后，还较为深入的分析了 Cloudflare 新出的 udpgrm 开源项目]]></description>
      <link>https://jt26wzz.com/posts/0012-learning-ebpf-the-hard-way/</link>
      <guid isPermaLink="false">1de45fa461f8455997b0b87088779b9d</guid>
      <dc:creator><![CDATA[jt26wzz.com]]></dc:creator>
      <pubDate>Sun, 24 Aug 2025 00:00:16 GMT</pubDate>
</item>
 <item>
      <title><![CDATA[Linux 服务端 UDP 网络编程：无损热更新]]></title>
      <description><![CDATA[通过当年一个棘手的需求来介绍 Established-over-unconnected 技术方案，讲述 Linux 服务端高并发场景下如何进行 UDP 网络编程，怎么确保实现无损热更新，更重要的是在不同内核版本下会存在哪些坑，以及结合内核 TCP、UDP 数据包如何匹配对应套接字的代码实现细节，解释如何应对这些问题]]></description>
      <link>https://jt26wzz.com/posts/0011-udp-network-programming-on-linux/</link>
      <guid isPermaLink="false">b34a5c0074eb4b89bb1c6b1e0e5f3fc0</guid>
      <dc:creator><![CDATA[jt26wzz.com]]></dc:creator>
      <pubDate>Thu, 23 Jul 2025 00:00:08 GMT</pubDate>
</item>
 <item>
      <title><![CDATA[用 Rust 从零开始写 QUIC：实现连接迁移]]></title>
      <description><![CDATA[在介绍连接迁移之前，先介绍了一下 QUIC 是怎么实现面向连接的，然后再分析了一下 QUIC 连接迁移的设计细节，并且对比其他协议类似的方案，比如说 WebRTC Mobility 等。关于具体的代码实现，重点分析了连接迁移的经典场景，并且讨论了 feather-quic 本次实现中可以提供哪些方式供开发者使用连接迁移功能，以及 feather-quic 目前的一些缺陷。最后，因为本次大部分代码都是依赖 AI 生成的，所以趁热打铁聊一聊对大模型生成代码这件事情的想法和感悟]]></description>
      <link>https://jt26wzz.com/posts/0010-implement-quic-in-rust/</link>
      <guid isPermaLink="false">6f9dba0e76274a3aae8b36bfa5a03e2a</guid>
      <dc:creator><![CDATA[jt26wzz.com]]></dc:creator>
      <pubDate>Thu, 10 Jul 2025 10:00:00 GMT</pubDate>
</item>
 <item>
      <title><![CDATA[用 Rust 从零开始写 QUIC：MTU 探测]]></title>
      <description><![CDATA[从传输层协议为什么需要 MTU 探测说起，重点分析了为什么 IP 分片会导致传输层性能下降甚至影响可用性，接着讨论 MTU 探测常见的实现方式，以及有趣的实现细节，再分析下 QUIC 在实现 MTU 探测的时候，是怎么解决 TCP 面对的问题，也顺带着聊了聊 GSO TSO  GRO 相关的内核优化技术，最后给了一些关于日常家用 MTU 配置的建议]]></description>
      <link>https://jt26wzz.com/posts/0009-implement-quic-in-rust/</link>
      <guid isPermaLink="false">3f8e9b725c414d239a7e2d8f13b6c9a4</guid>
      <dc:creator><![CDATA[jt26wzz.com]]></dc:creator>
      <pubDate>Sat, 06 Jun 2025 12:00:00 GMT</pubDate>
</item>
 <item>
      <title><![CDATA[用 Rust 从零开始写 QUIC：QUIC 连接关闭和错误处理]]></title>
      <description><![CDATA[首先，按照惯例，先踩一踩 TCP，分析一下 QUIC 连接关闭设计为什么会比 TCP 要好很多。另外，实现了 QUIC 协议栈中各种异常需要关闭连接的情况。最后，这个项目的第一阶段算是初步完成了，说一说到目前为止的一些感受]]></description>
      <link>https://jt26wzz.com/posts/0008-implement-quic-in-rust/</link>
      <guid isPermaLink="false">b9c52179291135c7a38b7f4b8b8312ef</guid>
      <dc:creator><![CDATA[jt26wzz.com]]></dc:creator>
      <pubDate>Sat, 03 May 2025 12:00:00 GMT</pubDate>
</item>
    <item><title><![CDATA[线上故障应急处理：4 年多 on call 经验总结]]></title><description><![CDATA[最近处理一个客户线上工单时，我发现自己不知不觉犯了一个方向性的小错误，于是开始重新反思故障应急这件事。第一份工作里，我经历了 4 年多高强度 on call，也长期参与大型项目迭代，那种状态有点像开着飞机换引擎：系统还在高速运行，变更还在持续推进，故障也随时可能发生。这篇文章想总结当年积累的经验教训，也记录自己是如何从五花八门的线上故障中学习、复盘和成长的。]]></description><link>https://jt26wzz.com/posts/0007-online-firefighting-real-world-lessions-from-4-years-on-call/</link><guid isPermaLink="false">1352e65f99e949279e688bb1fe979f0f</guid><dc:creator><![CDATA[jt26wzz.com]]></dc:creator><pubDate>Fri, 18 Apr 2025 12:00:00 GMT</pubDate></item><item><title><![CDATA[用 Rust 从零开始写 QUIC：实现 QUIC 多路复用流传输和流量控制]]></title><description><![CDATA[这里，终于开始实现 QUIC 核心能力: QUIC 多路复用流传输，同时实现了流量控制，确保在 QUIC 传输数据的过程中，能够严格按照 QUIC 协议规范工作， 并且优化了项目的结构，新增了一些集成测试来确保项目质量]]></description><link>https://jt26wzz.com/posts/0006-implement-quic-in-rust/</link><guid isPermaLink="false">e30444767395579b706a8914ad135089</guid><dc:creator><![CDATA[jt26wzz.com]]></dc:creator><pubDate>Sat, 12 Apr 2025 12:00:00 GMT</pubDate></item><item><title><![CDATA[用 Rust 从零开始写 QUIC：Reliability]]></title><description><![CDATA[对比了 TCP 和 QUIC 在 Reliability 实现的区别，详细描述了实现 QUIC Reliability 能力的相关细节，考虑了后续要如何加强测试，提升项目质量]]></description><link>https://jt26wzz.com/posts/0005-implement-quic-in-rust/</link><guid isPermaLink="false">3344f6d622b450f70f9330800c2c67ad</guid><dc:creator><![CDATA[jt26wzz.com]]></dc:creator><pubDate>Sun, 09 Mar 2025 12:00:00 GMT</pubDate></item><item><title><![CDATA[用 Rust 从零开始写 QUIC：实现 TLS 1.3 握手和 QUIC-TLS Key Update]]></title><description><![CDATA[实现一个 TLS 1.3 的简单客户端版本，协商出 TLS 1.3 密钥来给 QUIC-TLS 使用，另外支持了 QUIC-TLS Key Update 的能力，同时顺带支持了 SSLKEYLOG 的密钥导出功能，方便后续使用 wireshark 等工具]]></description><link>https://jt26wzz.com/posts/0004-implement-quic-in-rust/</link><guid isPermaLink="false">3e9dcedfcf8330950e9e593072181eb3</guid><dc:creator><![CDATA[jt26wzz.com]]></dc:creator><pubDate>Fri, 10 Jan 2025 12:00:00 GMT</pubDate></item><item><title><![CDATA[用 Rust 从零开始写 QUIC：尝试深入分析 QUIC 握手😂]]></title><description><![CDATA[努力描述了 QUIC-TLS 在解决什么问题，怎么解决问题，以及尝试不使用 SSL 相关库的基础上，自己实现一个客户端版本的 QUIC-TLS（暂时没有实现 TLS 1.3 握手协议相关，留给下一篇博客），另外支持了在客户端上对 QUIC Retry Packet 的处理]]></description><link>https://jt26wzz.com/posts/0003-implement-quic-in-rust/</link><guid isPermaLink="false">11c3a0cfd29c1c6b63135a17881ee2b7</guid><dc:creator><![CDATA[jt26wzz.com]]></dc:creator><pubDate>Tue, 31 Dec 2024 12:00:00 GMT</pubDate></item><item><title><![CDATA[用 Rust 从零开始写 QUIC：Runtime]]></title><description><![CDATA[为 feather-quic 选择一个合适的 runtime]]></description><link>https://jt26wzz.com/posts/0002-implement-quic-in-rust-runtime/</link><guid isPermaLink="false">55074e06a6b8f92b6d8ead165a69730b</guid><dc:creator><![CDATA[jt26wzz.com]]></dc:creator><pubDate>Fri, 20 Dec 2024 12:00:00 GMT</pubDate></item><item><title><![CDATA[用 Rust 从零开始写 QUIC：写在刚开始]]></title><description><![CDATA[这是用 Rust 从零实现 QUIC 协议栈的开篇。文章会聊我为什么想做这个项目，希望通过它加深对 QUIC、网络协议和 Rust 工程实践的理解，也会记录对项目目标的预期，以及正式开始编码前需要做哪些准备。]]></description><link>https://jt26wzz.com/posts/0001-implement-quic-in-rust/</link><guid isPermaLink="false">585a81937ab2272c9f09e5e197461901</guid><dc:creator><![CDATA[jt26wzz.com]]></dc:creator><pubDate>Sun, 15 Dec 2024 12:00:00 GMT</pubDate></item></channel></rss>
