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 环境搭建 个人博客
Java实现对象的比较 引言Java中的基本数据类型,如int、long等基本数据类型,可以使用比较运算符 > < = 进行比较大小,但是对于对象数据类型,则不能简单地这样进行比较,需要对象的类实现Comparable接口重写排序规则或通过Comparator进行定制排序,这两种方式都允许开发者自定义排序逻辑,而不是仅依赖于对象的自然顺序。 2021-05-11 JavaSE JavaSE Java常用API
BigDecimal 引言在进行精确计算时,Java的基本浮点类型(如float和double)无法避免精度损失,这对于财务、科学等需要高精度计算的应用是不可接受的。BigDecimal类提供了精确的浮点数计算功能,能够处理这类问题。 2021-04-09 JavaSE JavaSE 常用API
Linux常用命令 引言Linux系统是许多IT专业人士和爱好者必须掌握的关键技能之一。本文详细介绍了多种Linux命令,旨在帮助用户有效地管理和操作Linux系统。从文件管理到系统监控,从网络配置到用户管理,每个部分都为读者提供了必要的命令及其选项。 2021-03-23 Linux Linux 命令手册