<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[techdashen的博客]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/techdashen</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; techdashen]]></copyright><item><title><![CDATA[Go 中如何处理错误]]></title><link>https://blog.csdn.net/techdashen/article/details/164329184</link><guid>https://blog.csdn.net/techdashen/article/details/164329184</guid><author>techdashen</author><pubDate>Thu, 03 Sep 2026 11:13:02 +0800</pubDate><description><![CDATA[error就可以创建带有额外功能的自定义 Error Type。前面“检查特定错误类型”中已经看到一个例子。os.Open这个 Error 是一个 Struct。Error()Unwrap()Timeout()PathOpErr用于保存详细错误信息。Op stringErr error// Timeout 报告这个错误是否表示一次超时。你也可以按照类似方式创建自己的 Error Type。唯一必须Error()Unwrap()就能够解开你定义的 Error。]]></description><category></category></item><item><title><![CDATA[Go Map 详解：键值对实际上是如何存储的]]></title><link>https://blog.csdn.net/techdashen/article/details/164270899</link><guid>https://blog.csdn.net/techdashen/article/details/164270899</guid><author>techdashen</author><pubDate>Wed, 02 Sep 2026 01:10:10 +0800</pubDate><description><![CDATA[作者：本文是对victoriametrics的整理与翻译发布日期：2024 年 8 月 16 日阅读时间：17 分钟如果你刚开始接触 Go，可能会觉得 Go 中的 Map 用起来有些令人困惑。即使已经积累了更多 Go 开发经验，想真正搞清楚 Map 底层究竟是怎么工作的，也并不是一件容易的事情。比如下面这个例子。你有没有在创建 Map 时设置过一个hint或者，你可能已经注意到：使用for-range遍历一个 Map 时，得到的顺序并不等于键值对插入 Map 的顺序。]]></description><category></category></item><item><title><![CDATA[NAT 穿透是如何工作的]]></title><link>https://blog.csdn.net/techdashen/article/details/164270449</link><guid>https://blog.csdn.net/techdashen/article/details/164270449</guid><author>techdashen</author><pubDate>Wed, 02 Sep 2026 00:27:43 +0800</pubDate><description><![CDATA[因为我们的 Peer 最终必须想办法穿过的就是它。]]></description><category></category></item><item><title><![CDATA[我们如何通过优化 1.1.1.1 的 DNS 缓存节省 100 TB 内存]]></title><link>https://blog.csdn.net/techdashen/article/details/164269923</link><guid>https://blog.csdn.net/techdashen/article/details/164269923</guid><author>techdashen</author><pubDate>Tue, 01 Sep 2026 23:30:15 +0800</pubDate><description><![CDATA[本文是对Cloudflare的整理与翻译是以及 Cloudflare 其他多项 DNS 服务背后的平台。在任意时刻，它都会存储超过。在这样的规模下，每条记录哪怕只浪费 1 个字节，放大到整个服务器集群，也意味着超过的内存浪费。通过连续五次调整缓存条目在内存中的存储方式，我们将单条缓存记录的内存占用减少了。这些改动在整个服务器集群中释放了大约，相当于我们所配备的 RAM 总量。缓存的速度也变得更快。由于减少了内存分配次数，并改善了内存局部性，缓存插入吞吐量提升了，查找延迟降低了。]]></description><category></category></item><item><title><![CDATA[程序员每天能省 1 小时的 50 个 macOS/终端/Git/浏览器技巧]]></title><link>https://blog.csdn.net/techdashen/article/details/163726580</link><guid>https://blog.csdn.net/techdashen/article/details/163726580</guid><author>techdashen</author><pubDate>Thu, 13 Aug 2026 14:51:30 +0800</pubDate><description><![CDATA[复制过的 IP、命令、URL、代码片段都不用重新找。GitHub 登录态、Google 账号、插件、Cookies 完全隔离。reset、rebase、误删 branch 后，大多数情况下 commit 其实还在那里。PDF、图片、视频、Markdown、代码、Office 文件很多都不用真正打开应用。页面跳转、OAuth 重定向、登录失败时，如果不开它，上一页请求记录可能瞬间没了。一个文件改了 bug、重构、debug 日志三件事，也能拆成干净 commit。对于经常查文档的人，这是非常大的提效点。]]></description><category></category></item><item><title><![CDATA[一些提效小技能]]></title><link>https://blog.csdn.net/techdashen/article/details/163726376</link><guid>https://blog.csdn.net/techdashen/article/details/163726376</guid><author>techdashen</author><pubDate>Thu, 13 Aug 2026 14:44:45 +0800</pubDate><description><![CDATA[【代码】一些提效小技能。]]></description><category></category></item><item><title><![CDATA[Go设计取舍之六: sync.Mutex正常模式与饥饿模式]]></title><link>https://blog.csdn.net/techdashen/article/details/163389041</link><guid>https://blog.csdn.net/techdashen/article/details/163389041</guid><author>techdashen</author><pubDate>Sat, 01 Aug 2026 11:08:50 +0800</pubDate><description><![CDATA[2023 年 6 月 3 日，在询问了sync.Mutex源码注释中的 waiter 和饥饿模式。Ian Lance Taylor 参与回复，共有 6 封邮件。。]]></description><category></category></item><item><title><![CDATA[Go设计取舍之五: 一行代码为什么打印7-11-11]]></title><link>https://blog.csdn.net/techdashen/article/details/163388890</link><guid>https://blog.csdn.net/techdashen/article/details/163388890</guid><author>techdashen</author><pubDate>Sat, 01 Aug 2026 11:00:21 +0800</pubDate><description><![CDATA[2026 年 7 月 17 日，上有人贴出一段代码：多数人以为会打印10 11 11，Go 1.26 的实际结果却是7 11 11。线程共有 7 封邮件，Ian Lance Taylor 参与解释。。]]></description><category></category></item><item><title><![CDATA[Go设计取舍之四: map不变时能否并发修改不同value]]></title><link>https://blog.csdn.net/techdashen/article/details/163388731</link><guid>https://blog.csdn.net/techdashen/article/details/163388731</guid><author>techdashen</author><pubDate>Sat, 01 Aug 2026 10:57:52 +0800</pubDate><description><![CDATA[2026 年 7 月 28 日，上出现了一个很典型的问题：map 已经提前填好，之后不再增删 key，多条 goroutine 分别更新不同 key 对应的 value，是否安全？线程共有 10 封邮件，Ian Lance Taylor 参与回复。。]]></description><category></category></item><item><title><![CDATA[Go设计取舍之三: 0.3ns每次的错误Benchmark]]></title><link>https://blog.csdn.net/techdashen/article/details/163388345</link><guid>https://blog.csdn.net/techdashen/article/details/163388345</guid><author>techdashen</author><pubDate>Sat, 01 Aug 2026 10:52:03 +0800</pubDate><description><![CDATA[2023 年 11 月 27 日，分享了一组 Go 1.21 与 Go 1.22 的 benchmark，想确认string和[]byte转换是否获得了新的零分配优化。共有 9 封邮件。。]]></description><category></category></item><item><title><![CDATA[Go设计取舍之二: maps.Keys和Values为什么返回迭代器]]></title><link>https://blog.csdn.net/techdashen/article/details/163387469</link><guid>https://blog.csdn.net/techdashen/article/details/163387469</guid><author>techdashen</author><pubDate>Sat, 01 Aug 2026 10:35:12 +0800</pubDate><description><![CDATA[2024 年 12 月 24 日，笔者在提出了一个问题：为什么实验包exp里的maps.Keys返回切片，而标准库里的同名函数却返回迭代器？这场讨论持续到 12 月 31 日，共有 18 封邮件。。maps.Keys。]]></description><category></category></item><item><title><![CDATA[Go设计取舍之一: goroutine 为什么保持匿名、无状态]]></title><link>https://blog.csdn.net/techdashen/article/details/163385899</link><guid>https://blog.csdn.net/techdashen/article/details/163385899</guid><author>techdashen</author><pubDate>Sat, 01 Aug 2026 10:07:25 +0800</pubDate><description><![CDATA[这句话很容易被理解成“Go 团队只是没做 goroutine ID”，但它实际指向一种更深的编程约束。]]></description><category></category></item><item><title><![CDATA[陶哲轩与莱利·陶：将人工智能的海量输出转化为可用的科学成果]]></title><link>https://blog.csdn.net/techdashen/article/details/163345121</link><guid>https://blog.csdn.net/techdashen/article/details/163345121</guid><author>techdashen</author><pubDate>Thu, 30 Jul 2026 22:40:25 +0800</pubDate><description><![CDATA[但是，如果课程过分重视标准化考试，教学完全围绕考试展开，那么学生最终只会学到一些专门应付某项考试的技巧，例如专门应付SAT的技巧，而牺牲其他类型的学习。根据您的描述，我理解这种合作的大致形式是：人工智能可以寻找问题，也可以寻找文献中其他人已经完成的工作，然后把这些内容提供给人类，为人类带来灵感。我掌握的编程知识足以让我调试它生成的程序，并且确保程序准确输出我需要的结果。这可能并不是我本人会参与的研究项目，但我认为，人工智能的发展必须同时探索许多不同方向，而不能只是不断增强大语言模型的能力。]]></description><category></category></item><item><title><![CDATA[菲尔兹奖与希尔伯特第六问题]]></title><link>https://blog.csdn.net/techdashen/article/details/163343130</link><guid>https://blog.csdn.net/techdashen/article/details/163343130</guid><author>techdashen</author><pubDate>Thu, 30 Jul 2026 19:45:15 +0800</pubDate><description><![CDATA[本篇内容是根据2026年7月底 SAIR访谈内容的整理与翻译大家好，欢迎回到SAIR的节目。今天和我们一起参加访谈的是邓煜教授。首先，祝贺您在本周的国际数学家大会颁奖典礼上获得菲尔兹奖。对您来说，这一周过得怎么样？另外，能否请您简单介绍一下自己的研究工作？这一周真的非常忙。我记得在开幕式当天，整个上午的时间几乎都被完全占满了。等我终于回到酒店时，我才发现自己已经有将近一百封未读邮件。所以，那确实是一种非常美妙的感觉。不过，当时也真的非常疲惫。尤其是，我感觉自己现在突然在中国互联网上变得非常有名了。]]></description><category></category></item><item><title><![CDATA[不用再反复 stash：用 Git Worktree 同时开发多个分支]]></title><link>https://blog.csdn.net/techdashen/article/details/163025272</link><guid>https://blog.csdn.net/techdashen/article/details/163025272</guid><author>techdashen</author><pubDate>Sun, 19 Jul 2026 23:21:44 +0800</pubDate><description><![CDATA[Git Worktree 解决的问题并不复杂：它允许同一个 Git 仓库同时在多个目录中检出不同分支。每个任务都有自己的目录、分支、暂存区和未提交修改。正在运行的开发服务器、IDE 窗口以及测试环境也可以继续保持，不需要因为切换分支而反复重启。同时维护多个 PR；开发新功能时紧急修复 Bug；审查其他人的代码；对比多个版本；同时运行多个测试环境；让多个自动化工具或 AI Agent 并行工作。]]></description><category></category></item><item><title><![CDATA[Go 1.25 新增 `reflect.TypeAssert`：更直接、更高效地从 `reflect.Value` 取出类型值]]></title><link>https://blog.csdn.net/techdashen/article/details/162907115</link><guid>https://blog.csdn.net/techdashen/article/details/162907115</guid><author>techdashen</author><pubDate>Wed, 15 Jul 2026 15:23:03 +0800</pubDate><description><![CDATA[但省去了显式调用的步骤，并且在许多场景中可以避免中间接口带来的内存分配。它执行的是类型断言，不是类型转换。目标类型可以是具体类型，也可以是接口。类型不同不代表一定失败，具体类型可能实现目标接口。值为 nil 的接口断言仍然遵守 Go 语言规则。无效 Value 或不可导出的字段可能导致 panic。它可以减少分配，但不保证所有场景都零分配。它从 Go 1.25 开始提供。尤其是在序列化、反序列化或反射密集型的性能路径中，那么值得重点关注。]]></description><category></category></item><item><title><![CDATA[Go 1.26 新增 `bytes.Buffer.Peek`：只看数据，不移动读取位置]]></title><link>https://blog.csdn.net/techdashen/article/details/162906996</link><guid>https://blog.csdn.net/techdashen/article/details/162906996</guid><author>techdashen</author><pubDate>Wed, 15 Jul 2026 15:19:52 +0800</pubDate><description><![CDATA[可以把想象成一段数据和一个读取游标。当前读取位置b.Peek(5)Hello当前位置仍然不变则会读取"Hello, "新的读取位置b.Peek(7)Gophers所表达的含义：消费掉"Hello, "，将读取位置向后移动 7 个字节。是 Go 1.26 中一个不大但很实用的标准库改进。查看接下来的数据，但不移动读取位置。与ReadPeek：只看，不消费，不移动读取位置。Read：读取并消费，同时移动读取位置。它不仅减少了手动调用Bytes()和边界检查的样板代码，更重要的是让能够满足需要。]]></description><category></category></item><item><title><![CDATA[一款跨设备的重复文件清理器]]></title><link>https://blog.csdn.net/techdashen/article/details/162794745</link><guid>https://blog.csdn.net/techdashen/article/details/162794745</guid><author>techdashen</author><pubDate>Sat, 11 Jul 2026 18:58:08 +0800</pubDate><description><![CDATA[Duplicate File Checker 的解决思路是：先分别扫描不同硬盘或目录，把文件索引保存在本地数据库里；该工具主要解决一个我自己经常遇到的问题：手里有多块移动硬盘，有多台电脑，多个备份目录，时间一久，这些设备和存储中会有大量重复的视频、图片、备份文件。使用 Rust+egui+SQLite 写了一个客户端工具：Duplicate File Checker ，一款跨设备的重复文件清理器。在存储价格因为 AI 热潮而飞涨的今天，出于节约考量，有了这个工具。找出不同电脑之间重复保存的大文件。]]></description><category></category></item><item><title><![CDATA[Uber 如何为 PB 级数据湖构建 I/O 可观测性：从 HDFS/GCS 客户端埋点到 HiCam 高基数聚合]]></title><link>https://blog.csdn.net/techdashen/article/details/162765188</link><guid>https://blog.csdn.net/techdashen/article/details/162765188</guid><author>techdashen</author><pubDate>Fri, 10 Jul 2026 15:30:51 +0800</pubDate><description><![CDATA[Uber 这篇文章讲的是 PB 级数据湖 I/O 可观测性，但它的核心经验并不局限于数据湖。它说明了一个很重要的工程原则：在大规模平台里，可观测性不能只靠各个系统自己打日志，而要找到一个既足够底层、又足够通用、还能表达业务语义的观测层级。对于 Uber 来说，这个层级就是 Hadoop-compatible file system client。通过拦截和，Uber 可以在不修改作业代码的前提下，覆盖 Spark、Presto 和自定义作业，记录每个应用、每个数据集、每个分区的读写行为。Uber。]]></description><category></category></item><item><title><![CDATA[Uber 如何用 Ceilometer 做自适应性能基准测试：从机器选型到变更验证的基础设施平台化实践]]></title><link>https://blog.csdn.net/techdashen/article/details/162764346</link><guid>https://blog.csdn.net/techdashen/article/details/162764346</guid><author>techdashen</author><pubDate>Fri, 10 Jul 2026 14:59:14 +0800</pubDate><description><![CDATA[Ceilometer 是 Uber 为了解决大规模基础设施性能验证问题而构建的自适应 benchmark 平台。它把过去手工、零散、不可复现的 benchmark 流程，改造成了统一、自动化、可比较、可分析的平台能力。这套平台解决的问题包括：测试配置不一致、测试系统碎片化、流程复杂难以规模化、结果缺少上下文、测试环境缺少可移植性，以及很多技术栈没有成熟 benchmark 工具。]]></description><category></category></item></channel></rss>