<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>ThinkerQAQ</title><description>ThinkerQAQ 的个人技术博客，记录后端工程、Go、Java、并发编程、分布式系统、数据系统与软件工程实践。</description><link>https://thinkerqaq.github.io/</link><language>zh-cn</language><item><title>并发编程（八）：从 Mutex 到读写锁</title><link>https://thinkerqaq.github.io/articles/concurrency-series-08-read-write-lock/</link><guid isPermaLink="true">https://thinkerqaq.github.io/articles/concurrency-series-08-read-write-lock/</guid><description>沿用 counter 与 counter + ready 的例子，理解读写锁如何允许多个读者并发，以及 Java Lock API、Go sync.RWMutex 和 CPython 的对应情况。</description><pubDate>Fri, 11 Sep 2026 07:30:00 GMT</pubDate><category>并发编程</category><category>读写锁</category><category>RWMutex</category><category>Java</category><category>Go</category><category>Python</category></item><item><title>并发编程（三）：互斥锁——语言层的原子性、可见性与有序性</title><link>https://thinkerqaq.github.io/articles/concurrency-series-03-mutex/</link><guid isPermaLink="true">https://thinkerqaq.github.io/articles/concurrency-series-03-mutex/</guid><description>继续使用 counter++，理解互斥锁如何提供原子性、可见性和有序性，并比较 Java synchronized、Go sync.Mutex 与 CPython threading.Lock 的语义差异。</description><pubDate>Tue, 08 Sep 2026 10:32:54 GMT</pubDate><category>并发编程</category><category>Mutex</category><category>Java</category><category>Go</category><category>Python</category></item><item><title>并发编程（二）：语言内存模型——程序员可以依赖的规则</title><link>https://thinkerqaq.github.io/articles/concurrency-series-02-language-memory-model/</link><guid isPermaLink="true">https://thinkerqaq.github.io/articles/concurrency-series-02-language-memory-model/</guid><description>从硬件内存模型回到语言层，理解语言为什么需要定义内存模型，以及 Java、Go 与 CPython 分别为并发程序提供哪些基本保证。</description><pubDate>Mon, 07 Sep 2026 07:13:00 GMT</pubDate><category>并发编程</category><category>内存模型</category><category>Java</category><category>Go</category><category>Python</category></item><item><title>并发编程（一）：先谈硬件——从 count++ 到原子性、可见性与有序性</title><link>https://thinkerqaq.github.io/articles/concurrency-series-01-hardware/</link><guid isPermaLink="true">https://thinkerqaq.github.io/articles/concurrency-series-01-hardware/</guid><description>从冯·诺依曼体系结构和指令执行过程出发，沿着 count++ 分析硬件层面的原子性、可见性与有序性问题。</description><pubDate>Mon, 07 Sep 2026 03:08:48 GMT</pubDate><category>并发编程</category><category>CPU</category><category>内存模型</category><category>Java</category><category>Go</category><category>Python</category></item><item><title>并发编程（零）：并发问题与讨论范围</title><link>https://thinkerqaq.github.io/articles/concurrency-series-00/</link><guid isPermaLink="true">https://thinkerqaq.github.io/articles/concurrency-series-00/</guid><description>限定单机、单进程范围，从共享变量出发，建立共享内存、消息传递、语言并发语义与硬件实现之间的整体关系。</description><pubDate>Sun, 06 Sep 2026 09:58:00 GMT</pubDate><category>并发编程</category><category>Java</category><category>Go</category><category>Python</category></item><item><title>并发编程（七）：volatile——ready 与 counter 的可见性和有序性</title><link>https://thinkerqaq.github.io/articles/concurrency-series-07-volatile/</link><guid isPermaLink="true">https://thinkerqaq.github.io/articles/concurrency-series-07-volatile/</guid><description>沿用 counter + ready 的例子，理解 Java volatile 提供的可见性和有序性保证，并说明 Go 和 Python 没有对应的 volatile 关键字。</description><pubDate>Tue, 08 Sep 2026 15:41:00 GMT</pubDate><category>并发编程</category><category>volatile</category><category>Java</category><category>Go</category><category>Python</category><category>Memory Model</category></item><item><title>并发编程（六）：Atomic 的实现——从 Runtime 到 CPU</title><link>https://thinkerqaq.github.io/articles/concurrency-series-06-atomic-implementation/</link><guid isPermaLink="true">https://thinkerqaq.github.io/articles/concurrency-series-06-atomic-implementation/</guid><description>沿着 Java AtomicInteger、Go sync/atomic 和 CPython 内部原子操作的实现路径，理解 Atomic RMW 如何落到编译器、Runtime 与 CPU。</description><pubDate>Tue, 08 Sep 2026 15:36:00 GMT</pubDate><category>并发编程</category><category>Atomic</category><category>CAS</category><category>Java</category><category>Go</category><category>CPython</category></item><item><title>并发编程（五）：Atomic——语言层的原子性、可见性与有序性</title><link>https://thinkerqaq.github.io/articles/concurrency-series-05-atomic-cas/</link><guid isPermaLink="true">https://thinkerqaq.github.io/articles/concurrency-series-05-atomic-cas/</guid><description>继续使用 counter 与 ready，理解 Atomic 操作提供的原子性、可见性和有序性，并比较 Java、Go 与 CPython 的公开语义。</description><pubDate>Tue, 08 Sep 2026 15:30:00 GMT</pubDate><category>并发编程</category><category>Atomic</category><category>CAS</category><category>Java</category><category>Go</category><category>Python</category></item><item><title>并发编程（四）：互斥锁的实现——从 Runtime 到 CPU</title><link>https://thinkerqaq.github.io/articles/concurrency-series-04-mutex-implementation/</link><guid isPermaLink="true">https://thinkerqaq.github.io/articles/concurrency-series-04-mutex-implementation/</guid><description>沿着 Java synchronized、Go sync.Mutex 和 CPython threading.Lock 的真实实现路径，理解互斥锁如何使用原子操作、内存顺序以及等待与唤醒。</description><pubDate>Tue, 08 Sep 2026 15:11:56 GMT</pubDate><category>并发编程</category><category>Mutex</category><category>JVM</category><category>Go Runtime</category><category>CPython</category></item><item><title>如何对软件系统做技术规划</title><link>https://thinkerqaq.github.io/articles/software-system-technical-planning-methodology/</link><guid isPermaLink="true">https://thinkerqaq.github.io/articles/software-system-technical-planning-methodology/</guid><description>从技术规划的范围和价值出发，梳理现状分析、理想态设计、问题识别、方案选择与落地执行的基本方法。</description><pubDate>Sun, 23 Jun 2024 14:22:29 GMT</pubDate><category>系统设计</category><category>技术规划</category><category>架构设计</category></item><item><title>焦虑时，我在思考什么：关于人生与规划</title><link>https://thinkerqaq.github.io/articles/how-i-think-about-life-when-anxious/</link><guid isPermaLink="true">https://thinkerqaq.github.io/articles/how-i-think-about-life-when-anxious/</guid><description>从焦虑与三十而立谈起，思考如何理解人生、哪些因素影响人生，以及怎样把有限的时间投入真正重要的事情。</description><pubDate>Sat, 15 Jun 2024 08:50:52 GMT</pubDate><category>思考</category><category>人生</category><category>人生规划</category></item></channel></rss>