自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 收藏
  • 关注

原创 有效的数独

【代码】有效的数独。

2025-11-09 20:33:50 238

原创 分隔链表。

【代码】分隔链表。

2025-11-07 22:43:12 185

原创 并发工具与进阶(Fork/Join 框架 + CompletableFuture)

将一个大任务拆分成多个小任务并行执行,最后汇总所有小任务的结果。适合处理 CPU 密集型任务(如大规模数据计算、排序)。增强,支持链式调用、异常处理、多任务组合等功能,彻底解决了传统。是 JDK 7 引入的并行计算框架,核心思想是。需阻塞等待结果的痛点,是异步编程的首选工具。是 JDK 8 引入的异步编程工具,基于。,可将多个异步任务串联,同时通过。

2025-11-06 21:06:11 911

原创 删除链表的倒数第 N 个结点

定义一个top头节点,防止head被删除,两个指针从top开始遍历,指针之间差n个,当快指针到最后一个时,当前now指针下一个就是被删除元素。

2025-11-06 20:50:47 141

原创 线程池(ThreadPoolExecutor)

显式指定核心参数(尤其是有界队列),避免资源不可控。提供了 5 种便捷创建线程池的方法,但这些方法存在。在没有线程池时,每次处理任务都需要手动创建线程(线程池的性能取决于核心参数的配置,需根据。Java 中的线程池核心实现是。工具类创建的线程池(如。

2025-11-05 19:55:09 1025

原创 了解并发容器

普通容器(如ArrayListHashMapArrayList:多线程添加元素可能导致数组越界、数据丢失;HashMap:多线程扩容时可能出现死循环(JDK 1.7),或数据覆盖(JDK 1.8+);HashTable:虽线程安全,但用修饰方法,全表加锁,并发性能差。并发容器的优势线程安全:内部通过锁(如)或 CAS 操作保证多线程安全;高性能:采用 “分段锁”“读写分离” 等优化,减少锁竞争,提升并发效率;功能适配:针对并发场景设计特殊功能(如的阻塞读写)。

2025-11-05 19:34:35 950

原创 组合总和.

【代码】组合总和.

2025-11-04 23:34:41 137

原创 原子类(java.util.concurrent.atomic)

线程 1 读取变量值为 A,准备改为 B;线程 2 先把 A 改为 C,再改回 A;线程 1 执行 CAS 时,发现值还是 A,就成功修改,但中间变量已被篡改(可能导致逻辑错误)。:CAS 像个 “细心的门卫”,修改前先确认 “东西还是原来的样子”,没被动过才允许改。:给变量加 “版本号”,每次修改版本号递增,CAS 时同时校验 “值 + 版本号”。类(底层调用 native 方法)提供 CAS 实现,原子类内部核心就是调用。这一硬件级原子指令,无需加锁就能实现原子性。原子类能保证线程安全,根本依赖。

2025-11-03 22:27:45 807

原创 合并两个有序数组

可以看到这是两个有序数组排序,优化排序方法。可以看到要想减少时间,只能从排序动手,

2025-11-03 22:16:02 162

原创 从链表中移除数组存在的元素

使用哈希表在查找方面比用数组循环快。

2025-11-01 18:59:39 226

原创 AQS 与同步工具类(下)

(循环屏障)和Semaphore(信号量)用于,且屏障可以重复使用(这是它与的核心区别)。

2025-10-31 21:34:52 686

原创 Z 字形变换

二维数组有大量的空白地方。将二维字符数组,改成一维字符串数组拼接减少空白。读者可以使用String[]试一下存储。

2025-10-31 21:22:32 182

原创 AQS(AbstractQueuedSynchronizer)与同步工具类(上)

AQS(AbstractQueuedSynchronizer)是一个抽象类,它定义了一套多线程访问共享资源的同步器框架。JUC 中的许多同步工具(如锁、屏障等)都是基于 AQS 实现的。

2025-10-30 22:36:10 991

原创 两数相除。

将暴力循环部分,转成倍增方式来减少循环次数。利用递归实现倍增,每一次递归被除数减当前倍增的极限,然后接着减少,将每次递归倍增次数相加。

2025-10-30 22:18:34 197

原创 两数相加.

主要熟悉写链表相关的题。

2025-10-29 21:11:30 220

原创 锁机制(synchronized 与 Lock)

本文深入解析了Java中的两种锁机制:synchronized和ReentrantLock。synchronized是内置锁,提供三种使用方式(修饰方法/代码块),通过对象头和监视器锁实现,JDK1.6后引入锁升级机制优化性能。ReentrantLock是JUC提供的显式锁,支持可重入、公平/非公平锁、条件变量等特性,需手动释放锁。两者核心区别在于:synchronized自动释放但功能有限,ReentrantLock需手动释放但更灵活,支持高级特性。文章通过代码示例展示了两种锁的具体应用场景和实现原理。

2025-10-29 20:34:33 951

原创 双指针与哈希表:两数之和最优解

本来是想用上一题学到的双指针写的,但是发现代码太复杂了。需要排序,并且记录索引。遍历一次使用(target - x)找到哈希表是否存在这个值。

2025-10-28 21:22:38 322

原创 Java 内存模型(JMM)与可见性

线程 2 修改flag后,线程 1 应立即退出循环。:程序可能永远卡住(线程 1 一直循环)。因为现代计算机的和导致了,而 JMM 就是 Java 定义的一套规则,用来解决这些问题。JMM 是一种。

2025-10-28 19:39:01 733

原创 并发基础与线程核心

juc初步

2025-10-27 22:21:21 845

原创 盛最多水的容器

双重暴力优化到左右双指针

2025-10-27 19:23:48 316

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除