进程切换需要保存完整的进程上下文并刷新TLB、切换地址空间,开销远大于只切换线程上下文的线程切换。进程间通信方式包括匿名管道、命名管道、信号、消息队列、共享内存、信号量和Socket,各自的特点与使用示例均有说明。信号量用于在多进程/多线程环境中对公共资源进行同步控制,提供P(减)和V(加)操作,以防止竞争条件。全文重点阐释了进程与线程切换成本的差异及常见的进程间通信与同步机制。

文章介绍了并发控制的悲观锁和乐观锁概念及CAS实现原理,随后阐述了IO多路复用技术及select、poll、epoll的实现、性能差异和LT/ET模式;说明了epoll的工作流程及O(1)查询特性。随后详细描述了域名解析的缓存、递归查询过程以及Linux下IP配置、IP、子网掩码和网关的含义。

本文系统阐述了 Linux 的内存管理关键概念,包括存储层次、CPU 缓存、虚拟内存与页表、多级页机制及大页、内存区域(ZONE_DMA、ZONE_HIGHMEM 等)和 NUMA 节点的组织方式;重点解释了页面缓存、匿名内存、内存回收、碎片整理(compaction)以及 OOM Killer 的作用。随后介绍了内存映射文件(mmap)的原理及其相对于传统页缓存的优势,最后概述了段页式地址转换模型和虚拟内存的五大区划(代码、常量、全局、堆、栈),说明了物理内存与虚拟内存的映射必要性及其实现原理。

本文系统阐述了Linux中的几大关键概念。首先介绍I/O模型,分别为阻塞I/O、同步非阻塞I/O、I/O多路复用、信号驱动I/O和异步I/O,分析了各自的工作方式、优缺点以及适用场景。随后比较软链接与硬链接的实现原理和使用限制,指出软链接可指向文件或目录且跨文件系统,而硬链接仅限同一文件系统的普通文件。接着解释缺页中断的触发条件、处理流程以及与普通中断的区别。随后区分软中断和硬中断在触发来源、响应机制和可屏蔽性方面的差异。最后说明Copy‑On‑Write技术在fork、vfork等场景中的实现原理、优势与局限,并举例说明其在其他领域的应用。

hashCode() 与 equals() 决定键在 HashMap 中的定位和相等性,错误实现会导致冲突或误判重复;HashMap 通过键的 hashCode 计算桶索引,JDK1.7 采用数组+链表、头插;JDK1.8 在链表长度超过阈值时转为红黑树、尾插。HashMap 是无序的键值散列表,容量与负载因子(默认 0.75)共同影响扩容时机,扩容规模为 2 的幂次。构造一致性哈希时在 2^32 环上放置节点和数据的 hash,顺时针寻找最近节点,以实现平滑扩缩容。作为键的 Object 必须保持 hashCode 不变。HashSet 只存储唯一元素且不保证顺序。

本文围绕 Java 中的树结构及其算法要点展开。说明 TreeSet、TreeMap 必须存放实现 Comparable 的对象,Collections.sort 可使用对象自身的 compareTo 或外部 Comparator 实现排序,并给出 Student 实现 Comparable 的示例。随后介绍二叉树的常见操作:层序遍历(返回数组或逐层换行)、递归与非递归求树深度、利用层次遍历求最大路径长度。最后简要比较 B+ 树和 B‑树:前者内部节点不存数据、叶节点链式连接、适合外部存储及区间查询;后者键值同存,查询复杂度受键位置影响。