2025年10月17日

单线程如何撑起百万连接?I/O多路复用:现代网络架构的基石

摘要: I/O多路复用(I/O Multiplexing)是一种允许单个线程同时监视多个文件描述符的I/O模型。其核心价值在于,它将应用程序从低效的I/O等待中解放出来,实现了“一次等待,响应多个事件”的高效并发模式。 要理解其优势,需要对比非阻塞I/O的局限性。虽然非阻塞I/O能避免线程在数据未就绪时阻塞 阅读全文

posted @ 2025-10-17 20:37 poemyang 阅读(364) 评论(0) 推荐(0)

2025年10月16日

你的程序为何卡顿?从LINUX I/O三大模式寻找答案

摘要: I/O交互流程 在LINUX中,内核空间和用户空间都位于虚拟内存中。LINUX采用两级保护机制:0级供内核使用,3级供用户程序使用。每个进程都有独立的用户空间(0~3G),对其他进程不可见,而最高的1G虚拟内核空间则由所有进程和内核共享。 操作系统和驱动程序运行在内核空间,应用程序运行在用户空间。由 阅读全文

posted @ 2025-10-16 21:23 poemyang 阅读(332) 评论(0) 推荐(0)

2025年10月15日

“一切皆文件”:揭秘LINUX I/O与虚拟内存的底层设计哲学

摘要: RPC框架如同构建服务大厦的神经网络,承担着海量服务间通信的重任。它优雅地屏蔽了底层网络通信的复杂性,使开发者能聚焦于业务逻辑的创造。然而,在这份优雅之下,RPC框架的网络模型设计却是决定系统吞吐量、延迟和资源利用率的命脉,其核心在于在有限的硬件资源与无限的数据洪流之间,建立一座高效、动态的桥梁。 阅读全文

posted @ 2025-10-15 17:39 poemyang 阅读(78) 评论(0) 推荐(0)

2025年10月14日

Goroutine间的“灵魂管道”:Channel如何实现数据同步与因果传递?

摘要: Channel是连接Goroutine的“管道”,是CSP理念在Golang中的具象化实现。它不仅是数据传递的队列,更是Goroutine间同步的天然工具,让开发者无需诉诸显式的锁或条件变量。 func main() { ch := make(chan int, 1) // 创建一个int,缓冲区大 阅读全文

posted @ 2025-10-14 22:13 poemyang 阅读(139) 评论(2) 推荐(0)

2025年10月13日

“不要通过共享内存来通信”——深入理解Golang并发模型与CSP理论

摘要: Golang 在设计上另辟蹊径,其并发哲学的核心信条是:“不要通过共享内存来通信,而要通过通信来共享内存。” (Do not communicate by sharing memory; instead, share memory by communicating.) 这一理念源自通信顺序进程(Co 阅读全文

posted @ 2025-10-13 21:15 poemyang 阅读(394) 评论(0) 推荐(0)

2025年9月27日

揭秘JUC:volatile与CAS,并发编程的两大基石

摘要: JUC(java.util.concurrent)并发包,作为Java语言并发编程的利器,由并发编程领域的泰斗道格·利(Doug Lea)精心打造。它提供了一系列高效、线程安全的工具类、接口及原子类,极大地简化了并发编程的开发流程与管理复杂度。 JUC并发包与happens-before、内存语义的 阅读全文

posted @ 2025-09-27 11:28 poemyang 阅读(224) 评论(0) 推荐(1)

2025年9月25日

从MESA模型到锁升级:synchronized性能逆袭的底层逻辑

摘要: 管程(Monitor)是一种用于管理共享资源访问的程序结构,能确保同一时刻只有一个线程访问共享资源,解决并发编程中的互斥和同步问题。MESA模型是管程的经典实现,主要由入口等待队列和条件变量等待队列构成。 1)入口等待队列‌:确保线程互斥,多个线程试图进入管程时,仅一个线程能成功,其余线程在入口等待 阅读全文

posted @ 2025-09-25 10:34 poemyang 阅读(135) 评论(1) 推荐(0)

2025年9月24日

一把锁的两种承诺:synchronized如何同时保证互斥与内存可见性?

摘要: 在多线程环境中,‌临界区(Critical Section)是指一次只能由一个线程执行的代码段,这些代码通常涉及对共享资源(如变量、数据结构、文件或数据库连接)的访问或修改。临界区的存在是为了解决并发控制中的两大核心问题。 ‌ 1)数据不一致性‌:如果多个线程同时对共享资源进行写操作,可能会破坏数据 阅读全文

posted @ 2025-09-24 10:14 poemyang 阅读(231) 评论(0) 推荐(0)

2025年9月23日

从混沌到秩序:Java共享内存模型如何通过显式约束驯服并发?

摘要: 并发编程的本质,是在看似混沌的并行执行中建立秩序,确保程序的确定性。为达此目的,并发原语应运而生,它们是构筑一切并发系统的基石。其核心使命在于,通过定义一套明确的交互范式,消除因资源共享而引发的竞态条件(Race Condition),从而驯服并发世界的不确定性。 从Java的显式锁(synchro 阅读全文

posted @ 2025-09-23 10:14 poemyang 阅读(41) 评论(0) 推荐(0)

2025年9月20日

绯闻女孩不只会八卦:从“验明正身”到“抓内鬼”,Gossip的进阶玩法

摘要: 默克尔树 默克尔树(Merkle Tree)是由计算机科学家Ralph Merkle多年前提出,并以他本人的名字来命名,也叫哈希树。默克尔树是一种树形数据结构,通常是二叉树,其中每个叶子节点是数据块的哈希值,而每个非叶子节点是其所有子节点哈希值的哈希。树根的哈希值(Merkle Root)代表了整个 阅读全文

posted @ 2025-09-20 02:08 poemyang 阅读(70) 评论(0) 推荐(0)

导航