Optional类 引言在 Java 8 之前,null 值一直是造成程序崩溃(NullPointerException)的“头号公敌”。为了解决空指针带来的隐患,Java 8 引入了 java.util.Optional<T> 类型,用于在类型层面上显式表示“值可能缺失”的语义。本文将从原理、常用方法及示例代码等多个维度,系统地介绍 Optional 的使用和最佳实践。 主要作用 显式表达可选性:传统做 2022-03-18 JavaSE JavaSE Java 8 Optional
Lambda与方法引用 引言自 Java 8 将 Lambda 表达式与 Stream API 带入主流以来,函数式编程范式彻底改变了 Java 代码的写法与思维方式。它用更简洁的语法兑现了“所见即所得”的业务意图,让遍历、过滤、聚合等操作不再被样板代码淹没,也为并行计算、响应式流水线奠定了基础。本系列文章通过语法速览、内置函数式接口、方法引用、作用域与类型推断、底层实现到综合实践案例的递进式讲解,试图在“广度查缺补漏” 2022-03-17 JavaSE JavaSE Java 8 Lambda 方法引用 函数式接口
Stream API 引言Java 8引入了StreamAPI,它标志着Java对函数式编程支持的一大步。Stream提供了一个高级抽象,使得集合操作更为简洁,同时提高了多核处理能力的利用。 2022-03-14 JavaSE JavaSE Java8 Stream API
Java8的日期时间类 引言在Java 8之前,日期和时间的管理一直是Java开发中的痛点。java.time包的推出彻底改变了这一局面,提供了一套全新的日期和时间API,解决了旧API如Date和Calendar中存在的问题。 2022-02-15 JavaSE JavaSE Java8
简单了解Vue.nextTick 引言在日常开发中,理解前端框架处理数据和视图更新的机制是非常重要的,尤其是在处理复杂交互和动态内容时。本文通过一个具体的问题实例,探讨了Vue.js中的nextTick函数的重要性和应用。 2022-02-07 Vue Vue 前端
Java并发编程——线程池 引言在高并发环境下,线程创建与销毁的频繁切换会带来额外的开销。线程池通过对线程的复用、可控的队列和多种灵活的拒绝策略,让并发编程在性能、可维护性和扩展性上达到平衡。本文系统介绍了 Java 并发编程中的线程池概念和关键实现方式:从 ThreadPoolExecutor 核心原理到常见线程池类型的应用场景,再到 Fork/Join 框架、线程池管理与调优策略,全方位助力开发者编写更高效的并发程序。 2021-08-23 Java并发编程 JavaSE Java并发编程 线程池
Java并发编程——其他工具类补充 引言在 Java 并发编程中,JDK 除了提供锁、线程池、并发容器等常见核心内容,还包含了一些用于特殊场景的工具类,以满足多线程协同工作的多种需求。LockSupport、CyclicBarrier、Phaser 与 Exchanger 等便是其中典型代表。它们在底层同步机制上各有巧妙设计,在不同应用场景下能发挥巨大作用。本文将带你系统认识这些工具类的工作原理、使用场景与常见示例,为日后编写更高效 2021-08-19 Java并发编程 JavaSE Java并发编程 并发工具类
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并发编程 不可变设计