花拾录

知识库

编程语言AI2026/09/300 阅读

用 Rust 写一个命令行待办工具:从参数解析到本地持久化的完整流程

为什么用 Rust 写 CLI 工具 Rust 编译为原生二进制,无运行时依赖,启动快,适合做命令行工具。本文从零实现一个 todo 命令,支持添加、列表、完成、删除任务,数据保存到本地 JSON 文件。 项目初始化 在 Cargo.tom…

#Rust#命令行工具#clap#serde#JSON
编程语言站长2026/09/281 阅读

这是测试

哈哈哈 大撒大撒 的撒a 的撒的撒 阿斯顿阿三 阿斯顿阿斯顿阿三的撒的撒 阿斯顿撒的撒 阿斯顿阿三的撒 阿斯顿阿三的撒 阿斯顿撒的

编程语言AI2026/09/271 阅读

同一段代码在 CPython 与 PyPy 上跑出十倍差距:JIT 到底优化了什么

为什么同一段 Python 代码,PyPy 能快十倍? 如果你用纯 Python 写过一个计算密集的循环,比如计算斐波那契数列或处理大量整数运算,可能会发现:在 PyPy 上运行比在 CPython 上快很多,有时接近十倍。这不是玄学,而是…

#Python#PyPy#CPython#JIT#性能优化
编程语言AI2026/09/270 阅读

从零实现一个简易的虚拟机:栈式指令集与字节码执行循环的入门拆解

为什么需要虚拟机 虚拟机(VM)是许多语言运行时的核心,例如 Java 的 JVM、Python 的 CPython、Lua 的官方实现。它把源码编译成字节码(bytecode),再由一个执行循环(dispatch loop)解释执行。本文…

#虚拟机#字节码#栈式指令集#解释器#编程语言实现
编程语言AI2026/09/270 阅读

用 Rust 重写热点模块值不值:从内存安全、编译时间到团队上手成本的权衡

结论先行 用 Rust 重写热点模块 不是默认正确 的选择。它适合满足以下条件之一的场景: 热点模块存在真实的内存安全风险(越界、释放后使用、并发数据竞争),且已造成线上事故; 模块是 CPU 密集或高并发路径,Profiling 显示它是…

#Rust#性能优化#内存安全#技术选型
编程语言AI2026/09/240 阅读

从零写一个简易解释器:词法、语法树与求值三段式入门

解释器是编程语言的核心组件之一,它负责将源代码转化为可执行的结果。本文以最简单的算术表达式语言为例,带你走完词法分析、语法分析和求值三个阶段,理解解释器的基本骨架。代码示例使用 Python,因其简洁易读,但思路适用于任何语言。 目标语言定…

#解释器#词法分析#语法分析#求值#编程入门
编程语言AI2026/09/220 阅读

CPU 缓存一致性协议入门:MESI 状态机如何影响多线程程序性能

为什么需要缓存一致性? 现代多核 CPU 中,每个核心都有自己的私有缓存(L1/L2),但共享主内存。当多个核心同时读写同一内存地址时,如果没有协调机制,一个核心的修改可能对其他核心不可见,导致数据错误。缓存一致性协议就是用来保证所有核心看…

#多线程#CPU缓存#MESI#性能优化
编程语言导入2026/09/220 阅读

解析页面算出"主文件比总大小还大":选择器选错了表格

从详情页解析文件列表,算出一个明显违反常识的结果:主文件体积比整个列表的总大小还大。数字自己会说话—— 这不可能 。这篇文章讲这个"不可能"背后的 HTML 解析陷阱。 现象 从详情页解析文件列表,算出来的主文件体积竟然 比总大小还大 : …

#选择器#爬虫#HTML解析
编程语言导入2026/09/220 阅读

接口"正常返回了",但返回的其实是默认热门榜单

调用一个 API,它返回了 200,返回了 JSON,返回了结果列表——一切看起来都很成功。但你仔细一看内容,全是无关的东西。这篇文章讲的是一种最阴险的失败: 接口不报错,但它没听你的话。 现象 用某个搜索 API 按中文名搜索,请求 成功…

#爬虫#结果校验#API
编程语言导入2026/09/220 阅读

抓某些站点报 CERTIFICATE_VERIFY_FAILED,请求根本发不出去

采集脚本明明昨天还好好的,今天一跑就抛异常,而且异常发生在"请求发出去之前"——连接压根没建立。这篇文章讲 CERTIFICATE VERIFY FAILED 的原因,以及关闭证书校验时你必须知道的代价。 现象 抓某些站点时,直接抛出证书验…

#Python#SSL证书#爬虫
编程语言导入2026/09/220 阅读

命令行下载被 CDN 返回 403:403 不一定是你没权限

一个下载任务全线失败,HTTP 状态码清一色是 403 Forbidden。你的第一反应可能是"地址错了"或者"没有权限"。但这次,问题其实出在一个更朴素的地方:对方觉得你不像浏览器。 现象 下载某类流媒体分片时,CDN 持续返回 403,…

#CDN#User-Agent#爬虫
编程语言导入2026/09/220 阅读

高频抓取触发限流:抓了 250 个之后整个任务中断

写采集脚本的人,大多经历过那个转折点:前几分钟一切顺利,突然之间目标域名的连接全部失败,整个任务中断。这篇文章讲的是限流的机制,以及为什么"能跑通"和"能长期稳定跑"是两回事。 现象 连续抓取历史数据时,抓了大约 250 个对象之后,该域名…

#Python#限流#爬虫
编程语言导入2026/09/220 阅读

时间戳全用本地"现在",把过期数据当成了实时数据

每天自动生成一份报告,文件名显示是深夜生成的,内容却写着"当日数据"——而其中一部分数值其实是上一时点(隔夜)的。这篇文章讲的就是这种"时间戳全用本地现在"造成的错觉。 现象 一份每天生成的报告,文件名的时间戳显示它是深夜生成的,正文里也明…

#数据管道#时间处理#时区
编程语言导入2026/09/220 阅读

出现"不可能的数值"时先怀疑代码:公式、循环变量、键与日历四类错误

当脚本算出一个"物理上不可能"的数字——比如收益率 −100%、t 值 −26——你会先怀疑什么?数据脏了?还是代码写错了?这篇文章的核心观点很短: 先怀疑代码。 现象 回测收益率里出现了 −100% 这种不可能值,以及荒谬到离谱的统计量:…

#回测#Python#调试技巧
编程语言导入2026/09/220 阅读

少数离群值把均值拉爆:中位数只有 -0.01%,均值却是 +7.54%

统计报告里最容易被滥用、也最容易骗人的一个数字,是"平均"。当一组数据里混进少数极端值时,"均值"可能会给出一个完全违背直觉的结论。这篇文章用一个真实的矛盾数字,讲清楚什么时候该用中位数。 现象 某个分组统计里,出现了两个自相矛盾的数字: …

#Python#数据分析#统计学
编程语言导入2026/09/220 阅读

数据源是倒序返回的,取"最新"其实取到了最老的一条

研究脚本最让人兴奋的时刻,是它"跑出了一个显著信号"。最让人心凉的时刻,是几天后发现这个信号完全是你脚本 bug 凭空造出来的。这篇文章记录的就是这样一个"差点被写进规则库"的假发现。 现象 一个研究脚本跑出了一个统计上显著的信号,各项指标…

#数据校验#调试技巧#Python
编程语言导入2026/09/220 阅读

回测里「能成交」是假象:买不到的那批样本被悄悄算进了结果

一个回测能赚钱,和"你明天真的能按它赚到钱",中间隔着一条常被忽略的鸿沟。这篇文章讲的,就是回测里最常见的一种自欺:把"买不到"的样本也算了进去。 现象 一个策略在"次日收盘买入"的口径下表现良好: 看起来既简单又可行——不用盯盘,不用抢单…

#Python#可执行性#回测
编程语言导入2026/09/220 阅读

把非独立样本当独立样本,统计量膨胀了好几个数量级

拿到一个 t 值高达 38 的回测结果,你第一反应是什么?兴奋?还是——先数一数,这个样本量是不是在骗你?这篇文章讲的,就是那种"样本量看起来很大、实际上很小"的经典陷阱。 现象 用全样本做回测,t 值高得离谱: 38 的 t 值意味着"这…

#回测#统计学#Python
编程语言导入2026/09/220 阅读

前视偏差:用了未来才知道的信息去决定当下

如果你写过任何"策略回测",并且跑出过漂亮得让自己心跳加速的收益曲线,那这篇文章大概率能戳到你——那条曲线里,常常藏着一个你根本没用到的秘密:未来数据。 现象 一个"确认型"策略(典型结构是:先出现信号 A,再等条件 B 确认后入场)回测出…

#数据科学#回测#Python
编程语言导入2026/09/220 阅读

元组索引取错字段:一个下标让整套统计指标系统性偏小

批量处理数据文件时,你有没有遇到过这种事:脚本一行报错都没有,跑出来的数字"看着差不多,但就是对不上"?等你翻遍公式也找不出问题——因为错根本不在公式里,而在一个不起眼的下标。 现象 一个基于"距区间低点涨幅"的统计指标,算出来的数值系统性…

#调试技巧#数据处理#Python