自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【synchronized 与 ReentrantLock + Condition 的深度对比 Plus版】

最近和很多读者深入交流了Java多线程中两个核心的等待/通知机制:synchronized + wait/notify 和 ReentrantLock + Condition。很多同学在学习时都会疑惑:为什么Condition更高级?为什么高并发容器都用Condition?为什么synchronized容易出现“惊群效应”?今天我们把这些问题全部串起来,用最通俗易懂的语言,从底层实现讲起,一步步把Monitor的两个队列、线程状态流转、惊群效应、Condition的精确唤醒全部讲清楚。

2025-12-18 17:15:44 657

原创 Java多线程等待唤醒机制:从synchronized到Lock+Condition

今天来聊聊Java多线程里一个超级经典的话题——等待唤醒机制。在多线程编程里,我们经常遇到“线程协作”的场景:比如一个线程生产数据,另一个线程消费数据;或者两个线程需要严格交替执行(像乒乓球一样你一下我一下)。这时候就需要“等待唤醒”:条件不满足时线程自己睡一觉,等条件好了再被叫醒继续干活。今天重点讲,因为它更灵活、更高效,是现代并发编程的主流(Java并发包里的阻塞队列都是用这个实现的)。我们会用一个简单例子——两个线程交替打印0~9——来一步步讲解。

2025-12-17 08:34:39 665

原创 【阻塞队列的等待唤醒机制】

阻塞队列(BlockingQueue)的等待唤醒机制。在多线程编程中,生产者-消费者模式是最常见的场景之一。而阻塞队列正是解决这个模式的核心工具。它能在队列满时阻塞生产者、在队列空时阻塞消费者,从而实现线程间安全高效的协作。阻塞队列的基本概念和作用Java并发包中阻塞队列的实现原理(以ArrayBlockingQueue为例)等待唤醒机制的核心:wait()、notify() 与 Lock + Condition手把手自定义一个简单阻塞队列常见面试题延伸Java// 消费指针。

2025-12-15 18:46:59 940

原创 【Java多线程同步指南:方法、方法块与锁对象】

今天我们来聊聊多线程编程里的“守护神”——synchronized。它能帮我们避免线程“打架”导致的数据乱象,但怎么用才高效?我们重点说说同步方法、同步方法块,以及锁对象选this还是object的门道。这篇是之前两篇内容的精华总结:先看同步方法和方法块的相同点不同点,再聊锁对象的选择。代码会保持简单,解释通俗,像聊天一样。适合多线程小白上手。如果你正纠结“怎么锁才对”,读完这篇准能get到精髓。锁类型 场景 优缺点this 实例变量,简单方法 易用,但可能外泄。

2025-12-15 18:34:38 955

原创 【Java多线程同步全攻略:从同步方法到锁对象的“三剑客”】

大家好,我是[你的昵称],一个沉迷Java多线程的码农。今天这篇是系列的“终极总结”——基于之前聊的同步方法、同步方法块,以及锁对象的this、非static Object、static Object这些“老铁”。我们从头捋一遍:怎么用?相同不同?选哪个锁?全用白话+简单代码说清,适合新手速成。如果你正为“线程安全怎么锁”挠头,这篇准能帮你拨云见日。多线程像“多人抢饭”,不锁资源就乱套。synchronized是Java的“门卫”,但锁对了是守护神,锁错了是性能杀手。咱们一步步来。

2025-12-08 10:33:08 504

原创 【Java try-catch、throw 和异常处理的深度指南:从基础到实战】

今天咱们继续聊异常处理,这次来个更详细的版本。上次简单过一遍try-catch和throw,这次我加深点:从异常的“家谱”说起,到自定义异常、异常传播,再到实战中的最佳实践。异常处理不是负担,而是让代码更robust(健壮)的秘诀。Java的checked异常设计虽严谨,但用对地方,能省不少debug时间。如果你是中级开发者,或者想写出企业级代码,这里我用更多例子、图解思路,一步步拆解。代码还是保持简单(JDK 8+兼容),直接复制跑。咱们不急,平和地学——异常像生活,总有不测,但提前准备就好。

2025-12-06 15:52:39 581

原创 【Java中String、StringBuffer和StringBuilder的区别与使用】

本文章详细讲解了string stringbuilder stringbuffer 的区别和使用

2025-12-04 11:27:55 546

原创 【java File】

本文章详细讲解了java feil文件的各种操作 代码简单易懂,语言平易近人

2025-12-04 10:26:14 489

原创 Java IO流详解:从入门到实践,让你轻松搞懂文件读写

本文章详细讲解了Java OI流的细节,处理方式,用简单易懂的代码和平易近人的语气撰写文章

2025-12-03 18:47:27 653

原创 如何降低程序的时间复杂度,提高运行时效?

解决程序运行时效,如何降低时间复杂度?

2025-11-14 22:54:41 756

原创 【JAVA 面向对象开发 File类】

此文章详细讲解了JAVA File类的各种方法,配备了代码和讲解

2025-11-13 12:00:30 885

原创 【JAVA虚函数与多态的底层实现】

java虚函数和多态的底层原理讲解

2025-11-07 23:47:35 1060

原创 【Java面向对象编程入门:接口、继承与多态】

本文章对java的接口,继承与多态进行了详细的讲解

2025-11-06 23:18:37 942

原创 双指针-滑动窗口

滑动窗口算法

2025-10-27 19:33:51 612

原创 算法思维-二分哈希表

二分查找,哈希统计计算

2025-10-09 09:00:00 489

原创 Open AI的关键一步

Open AI的破局之道

2025-09-28 19:16:22 689

原创 LeetCode 84 and 85 problem

leetcode算法

2025-09-18 00:09:05 936

原创 Codeforces Round 1034 E题题解 (Div.3)

思维题,数据结构。

2025-07-19 00:19:11 850

原创 Codeforces Round 1032 div2 E题题解

巧妙解题,思维训练。

2025-06-21 15:56:17 978

原创 Codeforces round 1031 div2 B题题解

本文章为开拓算法思维类文章。

2025-06-16 15:49:55 869 1

原创 最小生成树 之 prim算法和kruskal算法

全网最详细的prim和Kruskal算法解析,图文并茂。

2025-05-23 19:51:01 1308 1

原创 前缀与差分

本文章讲解了前缀和算法和差分算法的思想,代码与注释的结合,更易理解

2025-05-17 22:05:27 746

原创 spfa和bellman-ford和floyd算法的区别与适用场景

本文详细讲解了bellman-ford算法 floyd算法 dijkstra算法的核心思想 适用场景。配合样例将思路 算法模板呈现出来。

2025-05-17 10:41:41 969

原创 深度优先搜索 与 广度优先搜索

本文章详细讲解了广度优先搜索和深度优先搜索的思想 涵盖了诸多经典样例

2025-05-15 21:19:41 457

原创 C++标准库—可变序列算法

可变容器的快捷操作—算法函数

2025-04-12 20:40:07 455

原创 C++标准库—非可变序列算法

C++<algorithm>标准库中的非可变序列算法——count 函数 search函数 distance函数

2025-04-11 23:14:43 1498

原创 C++双指针快排算法

时间复杂度通常较低,很多情况下能达到线性时间复杂度O(n),避免了暴力解法中可能出现的双重循环导致的O(n^2)时间复杂度,提高了算法效率。

2025-04-10 16:50:44 1851

原创 二维vector数组

获取行数和列数:可以使用 vec.size() 获取二维 vector 的行数,使用 vec[0].size() 获取二维 vector 的列数。- 直接初始化: vector<vector<int>> vec = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};,这样就创建了一个3行3列的二维 vector ,并初始化了其中的元素。- 可以使用 vec[i][j] 的方式来访问二维 vector 中的元素,其中 i 表示行索引, j 表示列索引。

2025-03-06 23:05:55 596

原创 unordered_map和pair

在实际应用中,比如在文本处理时,要统计每个单词出现的次数,就可以使用 unordered_map ,将单词作为键( key ),出现的次数作为值( value )。- 因为是基于哈希表存储, unordered_map 并不保证元素的存储顺序,也就是说,当你遍历 unordered_map 时,元素的顺序可能和你插入时的顺序不同。- 强调数据结构: pair 作为一种数据结构,将相关的两个数据组合在一起,使用它插入 unordered_map 能强调数据的二元组性质,使代码更符合数据结构的语义。

2025-03-06 22:50:19 1044 1

高阶图论,搜索,数学推理算法

里面涵盖了各种高阶算法

2025-12-18

空空如也

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

TA关注的人

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