Java并发编程——Copy-On-Write 引言在高并发读场景下,如果读操作远多于写操作,传统的互斥锁可能成为瓶颈。Copy-On-Write(COW)机制旨在充分利用“读多写少”的特性:对数据结构的写操作时才进行复制,从而极大地降低读操作的竞争与锁开销。本文将从 COW 的原理、在 Java 中的具体实现(CopyOnWriteArrayList、CopyOnWriteArraySet)以及使用注意事项等方面展开,帮助你在特定场景下写出更 2021-08-17 Java并发编程 JavaSE Java并发编程 Copy-On-Write COW
Java并发编程——AQS 引言Java 并发包(java.util.concurrent)为开发者提供了种类丰富的同步工具与并发数据结构,极大简化了多线程编程的难度。其中,AQS(AbstractQueuedSynchronizer)作为核心框架,为各种锁与同步器提供了统一的基础。理解 AQS 的设计理念与工作机制,有助于深入掌握如 ReentrantLock、Semaphore、CountDownLatch、Blocki 2021-08-15 Java并发编程 JavaSE Java并发编程 AQS
Java并发编程——不可变设计 引言在多线程编程中,如何保证数据的一致性与安全性往往是一大挑战。不可变对象在这方面提供了一种极其简洁有效的思路:如果一个对象从创建到销毁都不能被修改,那么不同线程之间自然无需为它的读写发生竞争。本文将由浅入深地讲解不可变对象在 Java 中的定义及实现方式,并结合实际应用场景,说明它为何在高并发下能带来显著的安全与性能优势。 定义不可变对象是指一旦创建后,其内部状态(即成员变量)无法被修改的对象。 2021-08-11 Java并发编程 JavaSE Java并发编程 不可变设计
Java并发编程——无锁 引言在高并发应用中,传统的锁(synchronized、ReentrantLock 等)容易成为性能瓶颈,不仅会造成线程阻塞,也可能引入死锁、优先级反转等问题。无锁编程正是针对这一痛点而生,通过底层的原子操作(尤其是 CAS)实现线程安全,尽可能减少阻塞和上下文切换,使系统在多核环境下保持较高的可扩展性和吞吐量。 概述定义无锁编程是一种在多线程环境中实现线程安全的方法,它通过原子操作来保证数据一致 2021-08-09 Java并发编程 JavaSE Java并发编程 无锁
Java并发编程——Java内存模型 引言在多线程并发环境中,如何确保线程对共享数据的访问和修改是正确而一致的,是一个核心且复杂的问题。Java 内存模型(JMM) 就是为了解决这一问题而引入的抽象约定。本文将带你从 JMM 的基本概念出发,逐步理解并掌握 volatile 关键字的语义,以及 happens-before 规则对并发程序正确性的重大意义。 JMM 概述JMM,全称为 Java 内存模型(Java Memory Mod 2021-08-06 Java并发编程 JavaSE Java并发编程 Java内存模型
Java并发编程——管程Monitor 引言并发编程的本质是如何安全、高效地管理多个线程对共享资源的访问,而管程切好能够帮助我们在多线程环境中实现对共享资源的互斥访问与条件同步。Java 语言内建了管程机制,通过关键字 synchronized 以及 wait() / notify() 等方法,让开发者能够自然地在代码层面封装共享数据的访问方式、保护临界区,降低并发编程的复杂度。本篇文章将基于管程这一概念,深入探讨其在 JVM 层级的实 2021-08-05 Java并发编程 JavaSE Java并发编程 管程
Java并发编程——synchronized 引言并发编程的核心目标是让多个线程在同一程序中协作并行,提升整体执行效率,同时保证共享数据的正确性和一致性。在 Java 语言中,synchronized 关键字是实现线程同步最基础、最直观的方式之一。它可以保证同一时刻只有一个线程能执行被同步的代码(或方法),并在线程间建立起可见性保证,从而避免数据竞争和竞态条件。本篇文章将针对 synchronized 的使用场景、使用方式、底层原理及其对程序 2021-08-03 Java并发编程 JavaSE Java并发编程 synchronized
Java并发编程——线程 引言在现代软件开发中,如何充分利用多核 CPU 并行执行能力并确保高并发下的程序正确性,是开发者必须掌握的核心技能。Java 语言自诞生之初便在语言层面提供了线程支持,并不断完善其并发工具库。本文将带领读者从进程与线程的基本概念出发,逐步探讨并发与并行的区别以及 Java 中多线程的创建方式;随后介绍 JVM 线程结构、常用的并发 API 和线程状态转换;最后结合竞态条件、临界区等概念,为读者理解 2021-08-01 Java并发编程 JavaSE Java并发编程 多线程
MySQL命令详解 引言在日常使用 MySQL 数据库时,我们会频繁接触到不同类别的 SQL 命令,如增删改查(DML)、定义和管理数据库对象(DDL)、控制权限(DCL)以及管理事务(TCL)等。除了这些通用的 SQL 语法,MySQL 还提供了一系列针对自身特性的命令和工具,用于执行数据库的优化、备份、恢复、用户管理、数据导入导出以及性能监控等操作。本文将按照常见分类,对 MySQL 中的各类命令进行详细的介绍与 2021-07-07 MySQL MySQL 手册
基于Hexo+GitHub的博客搭建 引言在数字时代,个人博客已成为展示创意、分享知识和技术的重要平台。Hexo,作为一个轻量级的博客框架,结合GitHub Pages提供了一个简单而强大的解决方案,让开发者可以快速搭建并维护自己的个人博客。本文详细介绍了如何使用Hexo加上GitHub Pages搭建个人博客,涵盖从环境设置到发布的完整流程。 2021-07-01 个人博客 Hexo 环境搭建 个人博客