<?xml version='1.0' encoding='utf-8'?>
<rss version="2.0"><channel><title>WMX · 随记</title><link>https://blog.wmxhub.com/</link><description>关于 Java、Python 与 AI 的技术笔记。用代码和图解，把复杂的概念讲清楚。</description><language>zh-CN</language><item><title>Python 生成器：把“一次装下”改成“逐个处理”</title><link>https://blog.wmxhub.com/posts/python-generators-streaming/</link><guid>https://blog.wmxhub.com/posts/python-generators-streaming/</guid><description>用一个小型日志统计示例，理解 yield、迭代器耗尽，以及惰性处理的内存边界。</description><pubDate>Sat, 07 Nov 2026 00:00:00 +0000</pubDate></item><item><title>只用标准库处理 CSV：编码、校验与流式汇总</title><link>https://blog.wmxhub.com/posts/python-csv-validation/</link><guid>https://blog.wmxhub.com/posts/python-csv-validation/</guid><description>让 CSV 脚本从“能跑一次”变成可检查的工具，明确坏数据该报错还是跳过。</description><pubDate>Sat, 07 Nov 2026 00:00:00 +0000</pubDate></item><item><title>asyncio 并发要有边界：Semaphore、超时与 TaskGroup</title><link>https://blog.wmxhub.com/posts/python-asyncio-bounded-concurrency/</link><guid>https://blog.wmxhub.com/posts/python-asyncio-bounded-concurrency/</guid><description>限制同时进行的 I/O，管理任务生命周期，并分清“并发数量”和“等待任务数量”。</description><pubDate>Sat, 07 Nov 2026 00:00:00 +0000</pubDate></item><item><title>线程池不是越大越好：队列、拒绝与背压</title><link>https://blog.wmxhub.com/posts/java-threadpool-backpressure/</link><guid>https://blog.wmxhub.com/posts/java-threadpool-backpressure/</guid><description>从 ThreadPoolExecutor 的任务接收顺序入手，理解有界队列为什么是系统容量的一部分。</description><pubDate>Sat, 07 Nov 2026 00:00:00 +0000</pubDate></item><item><title>HashMap 的键为什么最好不可变：从一次查找说起</title><link>https://blog.wmxhub.com/posts/java-hashmap-stable-keys/</link><guid>https://blog.wmxhub.com/posts/java-hashmap-stable-keys/</guid><description>理解 hashCode、equals 和可变键之间的关系，避免把放进去的数据变成“查不到的条目”。</description><pubDate>Sat, 07 Nov 2026 00:00:00 +0000</pubDate></item><item><title>金额计算里的 BigDecimal：精度与舍入要分开想</title><link>https://blog.wmxhub.com/posts/java-bigdecimal-money/</link><guid>https://blog.wmxhub.com/posts/java-bigdecimal-money/</guid><description>为什么从字符串创建十进制数，以及 equals、compareTo 和舍入规则各自负责什么。</description><pubDate>Sat, 07 Nov 2026 00:00:00 +0000</pubDate></item><item><title>你好，世界：从一篇随记开始</title><link>https://blog.wmxhub.com/posts/hello-world/</link><guid>https://blog.wmxhub.com/posts/hello-world/</guid><description>给想法一个落脚的地方。从今天开始，记录学习、阅读与日常。</description><pubDate>Sat, 07 Nov 2026 00:00:00 +0000</pubDate></item><item><title>别只看回答顺不顺：给检索系统做一张评估表</title><link>https://blog.wmxhub.com/posts/ai-retrieval-evaluation/</link><guid>https://blog.wmxhub.com/posts/ai-retrieval-evaluation/</guid><description>从 Recall@k 和 MRR 开始，将检索质量、回答依据、耗时与成本分开观察。</description><pubDate>Sat, 07 Nov 2026 00:00:00 +0000</pubDate></item><item><title>RAG 入门：先找得到资料，再谈回答得好</title><link>https://blog.wmxhub.com/posts/ai-rag-evidence-first/</link><guid>https://blog.wmxhub.com/posts/ai-rag-evidence-first/</guid><description>拆开检索、上下文组织与答案生成，理解引用、拒答和资料权限为什么需要单独设计。</description><pubDate>Sat, 07 Nov 2026 00:00:00 +0000</pubDate></item><item><title>向量相似度到底在比较什么：手写一个余弦计算</title><link>https://blog.wmxhub.com/posts/ai-cosine-similarity/</link><guid>https://blog.wmxhub.com/posts/ai-cosine-similarity/</guid><description>用标准库实现余弦相似度，再分清相似度、概率和检索阈值之间的区别。</description><pubDate>Sat, 07 Nov 2026 00:00:00 +0000</pubDate></item></channel></rss>