- 博客(25)
- 收藏
- 关注
原创 深度工作:充分使用每一份脑力
先看一个残酷的现实:一个典型的工程师工作日常是——写 10 分钟代码,看 5 分钟 Slack,回复 3 封邮件,再切到浏览器查文档,然后发现代码报错,再切回终端……这意味着,你真正“深潜”到代码逻辑里的时间,可能只占工作时间的 30%。### 策略四:用“深度工作日志”复盘脑力投资就像你用 Git 记录代码变更一样,你应该记录自己的“脑力投资”日志。这段代码虽然简单,但体现了深度思考的痕迹:你考虑到了原子操作与锁的取舍、读多写少的场景、以及返回值的一致性。一个简单的日志分析工具,帮助你统计深度工作占比。
2026-08-03 14:10:23
154
原创 ERC-7730:解析签名意图,消除盲签风险
## 总结ERC-7730 通过标准化的“意图描述”机制,让钱包能够“翻译”签名内容,把抽象的十六进制数据变成清晰的人类语言。,把“天书”变成“人话”,从根源上消除盲签风险。它本质上是把“签名背后的含义”用机器可读的 JSON 表达出来,钱包拿到这个描述后,就能在签名前向用户展示清晰、可理解的交易细节。它描述了某个合约的某个函数(或交易)的“人类可读”版本。简单说,它告诉钱包:“当你看到这个合约的这个函数调用时,你应该这样向用户解释。:如何把十六进制参数解码成可读的字段(例如“接收方”、“金额”)。
2026-07-31 17:29:11
156
原创 为什么 AI 助理总不好用?因为它不知道你发生了什么!
作为用户,你可以主动给 AI 更多线索——比如明确说“我明天去上海出差,帮我查天气”,而不是只问“明天天气怎么样”。但如果你明天要出差去上海,而 AI 调用的只是手机 GPS 定位(你在北京),它就会给你北京的天气。这不是 AI 笨,而是它压根不知道“你明天要去上海”这个事实——这个信息藏在你的日历、聊天记录、甚至购票 App 里,AI 助理根本没权限读取。你说“帮我定个明天早上 8 点的闹钟”,它回你“好的,已为您设置明天早上 8 点的日历提醒”。看,只要把上下文接进来,AI 的答案立马“懂人性”了。
2026-07-31 17:28:10
199
原创 Agent Harness 架构真相:Prompt Cache 如何决定 Skill、MCP 与 SubAgent 设计
2. Agent 生成计划: - step1: search_flights(“北京”, “上海”, “明天”) - step2: book_flight(result_of_step1) - step3: search_hotels(“上海”, “明天”) - step4: book_hotel(result_of_step3)3. 每一步的结果都存入 Prompt Cache,供后续步骤使用。—— Agent 的“工作记忆”传统的 LLM 调用是无状态的——每次请求都是独立的。
2026-07-30 16:34:37
169
原创 Miller Rabin:概率之下,证据成群
在实际应用中,Miller–Rabin被广泛用于:- 生成RSA加密中的大质数- 密码学中的密钥生成- 质数分布研究- 数学软件中的质数检测例如,在生成1024位RSA密钥时,需要随机生成两个大约512位的大质数。Miller–Rabin算法不仅高效,而且优雅:它用概率的视角解决了看似确定性的问题,正如标题所言——“概率之下,证据成群”。注意,561和1105都是卡迈克尔数,但Miller–Rabin算法正确识别了它们是合数,因为二次探测定理暴露了它们的合数性质。,从而暴露合数的“证据”。
2026-07-30 16:33:29
222
原创 零基础也能做!用 AI 提示词一键生成 Three.js 3D 中国地图
# 总结通过本文,你不仅学会了如何用AI提示词快速生成Three.js 3D中国地图的代码,还深入理解了背后的投影、几何构建和场景搭建原理。现在,打开编辑器,开始你的3D地图之旅吧!本文将带你从零开始,深入剖析原理,并借助AI提示词(如ChatGPT、Claude等)快速生成代码,最终实现一个完整的3D地图。AI提示词(如GPT-4)能理解你的需求,并自动生成以上步骤的代码。对于中国范围(经度73°-135°,纬度3°-54°),这种映射不会产生严重变形,但若用于全球地图,两极区域会拉伸严重。
2026-07-28 15:40:56
272
原创 Rust 推荐使用宏而非普通函数的场景
在 Rust 中,宏(macro)和普通函数(function)都是代码复用的重要工具,但它们的适用场景有明显区别。## 宏与普通函数的本质区别首先需要明确:普通函数接收的是值,而宏接收的是语法树(Token Stream)。## 场景三:编译期代码转换宏可以在编译期对代码进行转换,实现类似“语法糖”的效果。## 场景五:实现类型安全的状态机宏可以用于生成类型安全的状态机代码,这在嵌入式系统或协议实现中很有用。普通函数无法获取调用者的行号,因为函数是在运行时执行的,而宏在编译期展开,可以访问。
2026-07-28 15:38:32
158
原创 一次开发,多端高效协同:解码HarmonyOS SDK窗口的响应式设计哲学
例如,同一个应用在手机上可能是全屏竖屏显示,在平板上可以分屏多任务,在折叠屏上自动适应展开或折叠状态,在智慧屏上则变成卡片式布局。## 核心原理:从固定布局到自适应布局传统的Android或iOS开发中,我们通常使用ConstraintLayout或Auto Layout来实现适配,但HarmonyOS更进一步:它引入了“窗口断点”和“动态布局规则”的概念。传统的“一套代码适配所有设备”往往意味着无尽的if-else判断和布局重写,而HarmonyOS SDK窗口的响应式设计哲学,正是为解决这一痛点而生。
2026-07-27 16:53:15
209
原创 C# PDF 页码添加:教你如何快速为 PDF 每页编号
比如,你有一个100页的PDF,手动添加页码可能需要10分钟,而用代码只需几秒。## 示例2:自定义页码样式和位置实际应用中,你可能需要更灵活的样式,比如带“Page”前缀、字体加粗、或者放在右上角。## 总结通过本文的学习,你已经掌握了使用C#和iTextSharp为PDF添加页码的核心技术。从简单的居中页码,到自定义样式和位置,再到批量处理,这些技能可以显著提升你的工作效率。的文件,我们为其每页添加页码,格式为“- 1 -”、“- 2 -”等,输出为。:根据页面方向,页码位置不同,满足多样需求。
2026-07-27 16:52:02
217
原创 自定义基于 VLC 的视频播放器
VLC 作为开源的多媒体框架,提供了跨平台的解决方案。与直接调用系统播放器相比,使用 VLC 可以获得更精细的控制,如进度调节、字幕加载、音频轨道切换等。从基础的播放控制到流媒体支持、字幕加载、音轨切换,展示了 VLC 与 Qt 结合的核心要点。)VLC 的 Python 绑定提供了丰富的 API,结合 PyQt5 的界面能力,可以快速构建专业级播放应用。将 VLC 视频输出嵌入到 Qt 窗口(Windows/Linux)- 进度条使用 0-1000 映射到 0-1.0 的 VLC 位置- 使用。
2026-07-26 15:38:45
185
原创 AI 写代码有多厉害?——快了 55%,但错多了 75%
根据一些研究数据,AI 确实能让程序员写代码的速度提升约 55%,但与此同时,代码中的错误率却增加了 75%。我们将通过实际代码示例,探讨 AI 如何工作、为何会出错,以及如何与 AI 协作写出更可靠的代码。作为一名编程讲师,我建议你:- 将 AI 视为“超级高效的初级程序员”,它提供初稿,但你需要审校。只有两者结合,才能写出又快又稳的代码。:AI 倾向于生成易于理解的代码,但可能忽略性能优化(如不必要的循环或重复计算)。这些错误根源于 AI 的“统计模式”:它可能见过类似代码,但忽略了实际场景的复杂性。
2026-07-25 16:39:24
205
原创 AI 会取代我们吗?——它不懂“孤独“是什么意思
AI 不懂孤独,所以它无法取代我们。因为人类的本质,就在于那些不可计算、不可复制、不可预测的情感体验。
2026-07-25 16:38:17
203
原创 深度学习框架PyTorch笔记(三)数据集类(Data Set)与数据加载器(Data Loader)
当样本总数不能被batch_size整除时,是否丢弃最后一个不完整的batch。## 3. 高级用法与定制### 3.1 自定义collate_fn有时样本形状不一致(如不同长度的文本序列),需要自定义批处理逻辑。### 示例1:自定义数字图像数据集假设我们有一个简单的数字图像数据集,图像以NumPy数组形式存储在内存中,标签为整数。是PyTorch中所有数据集的基类,它定义了数据集的接口,即如何获取单个样本及其总数。不关心数据存储在哪里(内存、磁盘、数据库等),只提供统一的访问接口。
2026-07-24 18:23:05
243
原创 [MAF预定义ChatClient中间件-04]ReducingChatClient——精减对话历史又不丢失基本语义
约束保留语义一致性检查Token 节省信息失真计算开销防止上下文溢出。
2026-07-24 18:21:58
242
原创 .NET 高级调试技术:超越基础 Dump 分析
在 .NET 应用程序的日常维护中,Dump 分析是最常用的故障诊断手段之一。本文将从实战角度出发,通过大量代码示例,演示如何超越基础 Dump 分析,解决复杂问题。掌握这些高级技巧后,你将不再满足于“内存占用高”或“CPU 100%”这样的表面结论,而是能够精准定位到具体代码行甚至 IL 指令。## 4. 实战技巧:使用 SOSEX 扩展SOSEX 是 WinDbg 的高级扩展,提供超越 SOS 的命令:-## 5. 总结基础 Dump 分析帮助我们发现问题,但高级调试技术让我们理解问题的本质。
2026-07-23 16:23:21
188
原创 [深入理解 Rust] 1 生命周期
别担心,我会用通俗的语言、生动的比喻和实用的代码示例,帮你把这块硬骨头啃下来。想象一下,你有一张借书卡(引用),它指向图书馆里的一本书(数据)。:生命周期可以和泛型类型参数一起使用记住,生命周期不是运行时概念,而是编译时检查的工具。最常用的规则是:1. 每个引用参数都有自己的生命周期2. 如果只有一个输入引用,那么输出引用的生命周期就与它相同3. 如果是方法调用,## 函数中的生命周期标注当函数返回引用时,编译器往往无法自动推断生命周期,这时候就需要我们手动标注。,用来标注引用的有效时间范围。
2026-07-23 16:22:14
161
原创 从语法糖到性能利器的深度解析
例如,元组解构时,var (_, name, _) = data 生成的 IL 代码仅包含对 name 的存储指令,而传统方式会包含所有成员的存储指令,减少了 CPU 执行的指令数。对于值类型(如 int、struct),传统变量会在栈上分配内存,而弃元 _ 不会被分配任何内存 —— 编译器在生成 IL 代码时会直接忽略对 _ 的存储操作。例如,int.TryParse(input, out _) 生成的 IL 代码中,不会包含为 out 参数分配栈空间的指令,而传统方式会有加载局部变量地址等指令。
2026-07-22 15:39:21
198
原创 代码复杂度的代价远比你想象得大
本文不会停留在抽象原则,而是结合真实案例、Java 代码示例和可落地的工程实践,让你了解你应用的代码复杂度,以及一个优秀的开发同学应该做到的避免代码”腐烂“的最佳实践。问题来了:这个 catch (Exception e) 不仅吞掉了业务异常,还捕获了 数据库连接超时异常(SQLException),导致外层事务未及时中断,线程持续等待,最终拖垮连接池。没有最近的发布记录。它潜伏在每一次“先上线再说”的妥协里,在每一个没人敢动的类中,在每一段“还能看懂”的嵌套逻辑中,缓慢侵蚀系统的生命力。
2026-07-22 15:38:20
207
原创 从 Zig 到 Rust 的真实案例
Rust 的吸引力在于其所有权系统带来的内存安全、无数据竞争保证、庞大的 crates 生态,以及更好的并发支持。这些正是 Bun 团队在收购后转向 Rust 的核心动机:提升可维护性、减少 bug、更好地与 Anthropic 的 AI 工具链集成。在 Bun 案例中,这将预计 1-2 年的手动工作压缩到数周,证明了在有强测试覆盖和清晰规格的项目中,AI 可显著提升生产力。Bun 证明了 2026 年 AI 辅助重写的可行性,但它是一个特例:小核心团队、明确动机、顶级 AI 访问权、已成熟的产品。
2026-07-21 15:03:44
239
原创 Redis Geo实现地理位置检索
Redis GeoRedis Geo 没有创造新结构,完全基于有序集合 Sorted Set(ZSet)实现,底层核心组合:GeoHash 编码 + Sorted Set 索引。简单来说就是:把二维的经纬度坐标,通过算法压缩成一维整数分值,利用ZSet天然的排序、范围检索能力,实现高效的地理位置查询。Key:地理集合名(如 stores:location 门店位置集合)Member:位置唯一标识(店铺ID、用户ID、设备ID)
2026-07-21 15:02:53
197
原创 先看一组让人坐不住的数字
先说清楚一件事:我承认 AI 对就业的冲击是真实存在的,尤其对初级程序员、初级代码编写员、简单脚本开发、部分测试岗位,冲击是实打实的。这不是"扛不住"的裁员,是"主动选择"的裁员。百度在 2025 年底启动了"近年最大规模裁员",MEG 事业群部分部门优化比例 20% 到 30%,覆盖应届生、未转正员工,连十年以上的老员工也没能幸免,有的团队整建制消失。阿里巴巴的财报是最让人吃惊的——2025 财年结束的时候,员工总数从一年前的 20.5 万掉到了 12.4 万,一年少了 8 万人。一堆因素叠加的结果。
2026-07-19 16:29:50
246
原创 别再问 AI 会不会替代程序员啦!
补得太少,又像没帮上忙。AI 的更大价值,是把低价值的重复投入压下去,让人的时间回到判断、创造和承担责任的地方。AI 工具的形态很难在会议室里一次设计正确,更适合先做出能碰的东西,让真实用户把边界撞出来。本来可以标准化的任务,硬让人一行行盯着,又会把 AI 的吞吐优势锁死。更合理的做法是分级:L1 任务全自动,L2 任务 AI 主导人审核,L3 任务回到助手模式。工具开发者 降低幻觉率,提供风险提示,构建关键操作护栏,让工具在能力范围内稳定可靠 不可能保证 AI 永远不犯错,也不能替用户承担所有业务后果。
2026-07-19 16:29:14
208
原创 为什么渐进式披露如此重要?
而在 Claude Code 一类面向开发的 Agent 中,也会根据当前开发任务动态加载不同能力,而不是把所有开发规则一次性交给模型。我们可以看到,Skill 并不是替代 Prompt、Tool 或 Memory,而是把它们组织成一个可复用、可管理、可按需加载的能力模块。不一次性暴露所有能力,而是在运行过程中按需加载 Skill、Prompt 和 Tool。这说明,Skill 正在从"提示词模板"演变为 Agent 的能力管理机制。Tool 提供单一能力,Skill 组织多个能力完成目标。
2026-07-18 15:04:13
299
原创 那条突然变慢的 SQL,到底经历了什么?
但.NET依然是我的核心阵地。我写过2307篇博客文章,不是因为"这个月必须写一篇来维持MVP资格",而是因为那天解决了一个棘手的问题,觉得"这个坑值得记录下来,万一有人也踩了呢"。而我,也从当年那个在博客园写WebForm教程的年轻人,变成了广州智用开物人工智能科技有限公司的CTO,带着团队在AI和.NET的交叉点上做产品。你自己脑子里那团模糊的概念,要梳理成有逻辑的结构,要找到合适的比喻,要预判读者可能在哪一步会卡住,要把一个复杂的东西拆成层层递进的台阶——这个过程,本身就是对你理解力的一次极限测试。
2026-07-18 15:03:09
208
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅