自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 AQS究竟在抽象什么?AQS实现一个并发工具究竟还需要实现什么?

共享式和独占式几乎一致,并没有太大的差别,只需注意在共享模式下共享资源可以同时被多个线程持有,那么在等待队列中如何实现一个唤醒链呢?就是工具需要实现的第二个方法,在独占式中,如果锁得到了释放,那么就会通过等待队列的头节点来对下一个节点进行。来保证唤醒操作的传播成功,若节点进入了对应的唤醒逻辑,但是存在竞争被另一个线程争抢了唤醒机会,那么就需要该。只是抽象了其逻辑,保证了执行的顺序,从而我们使用者只需要关注对应的实现逻辑即可,具体的执行流程都由。一样,抽象了方法的流程,具体的实现交由具体的工具进行实现。

2025-11-05 11:08:08 317

原创 JDK并发工具学习

栅栏是一种类似于闭锁的对象,可以实现阻塞一组线程,直到某个事件的发生,但是不同的是它可以实现一个线程可以等待其他线程,而闭锁是直接同步到达。原子累加器的实现:通过为不同线程分配不同的槽位,实现多个线程无干扰的并发累加,最终求和,降低。的值并非单一的 0 或 1,而是 正数 和 0,正数表示线程的加锁次数,体现可重入。中等待的队列的一个单元,也是一个节点,每个线程都是以。一款常用的互斥锁,可以实现公平锁和非公平锁,基于。用于条件变量的类对象,实现按条件唤醒对应的线程。的场景,因为内部的写操作实现为。

2025-10-27 21:09:09 838

原创 HashMap的底层原理

介绍hashMap的一些底层问题

2025-04-19 18:39:48 958

原创 LeetCode每日一题

指针也都应指向复制链表中的新节点,并使原链表和复制链表中的这些指针能够表示相同的链表状态。节点组成,其中每个新节点的值都设为其对应的原节点的值。是一个正整数,它的值小于或等于链表的长度。你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。个节点组成的链表来表示输入/输出中的链表。的整数倍,那么请将最后剩余的节点保持原有顺序。的链表,每个节点包含一个额外增加的随机指针。个节点一组进行翻转,请你返回修改后的链表。,该指针可以指向链表中的任何节点或空节点。例如,如果原链表中有。返回复制链表的头节点。

2025-04-06 16:39:04 416

原创 LeetCode每日一题

给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。**进阶:**你能尝试使用一趟扫描实现吗?给你一个链表,删除链表的倒数第。个结点,并且返回链表的头结点。

2025-04-06 16:38:04 359

原创 LeetCode每日一题

新链表是通过拼接给定的两个链表的所有节点组成的。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。的链表,表示两个非负的整数。它们每位数字都是按照。请你将两个数相加,并以相同形式返回一个表示和的链表。的方式存储的,并且每个节点只能存储。将两个升序链表合并为一个新的。

2025-04-04 17:31:50 403

原创 LeetCode每日一题

指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数。指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数。来表示链表尾连接到链表中的位置(索引从 0 开始)。如果链表中有某个节点,可以通过连续跟踪。如果链表中有某个节点,可以通过连续跟踪。,返回链表开始入环的第一个节点。仅仅是为了标识链表的实际情况。来表示链表尾连接到链表中的位置(,仅仅是为了标识链表的实际情况。**进阶:**你是否可以使用。,判断链表中是否有环。如果链表无环,则返回。,则在该链表中没有环。

2025-04-03 13:09:56 352

原创 LeetCode每日一题

*进阶:**链表可以选用迭代或递归方式完成反转。你能否用两种方法解决这道题?,请你反转链表,并返回反转后的链表。给你一个单链表的头节点。,请你判断该链表是否为。**进阶:**你能否用。空间复杂度解决此题?

2025-04-01 21:05:04 172

原创 LeetCode每日一题

的输入如下(你设计的程序。

2025-03-30 14:47:53 386

原创 LeetCode每日一题

* 旋转图像,这意味着你需要直接修改输入的二维矩阵。请你将图像顺时针旋转 90 度。使用另一个矩阵来旋转图像。,返回矩阵中的所有元素。

2025-03-29 15:41:36 364

原创 线程不安全引入

加锁就是限制并发对临界区共享资源的访问,正如此时你时空回溯,你和过去的你同时会做可能不一样的事,这样的结果是什么?产生不同的平行宇宙,临界区的共享资源就是这个宇宙的后续发展,但是到。中来说,同时操作共享资源不会出现平行宇宙的现象,只会随机产生一种结果,所以我们需要通过加锁来限制对共享资源的行为,以达到线程安全的目的。不过过程中实验发现loopNum调小的时候还是可能会出现常常打印100的现象,此时跟调度有关,通过增大并发可以更明显发现线程安全问题。接口,我们可以为临界区代码进行加锁限制,什么意思呢?

2025-03-29 11:20:41 394

原创 LeetCode每日一题

*进阶:**将matrix的第一行和第一列作为标志数组,然后单独判断第一排和第一列是否有0,有就全部置0,反之不用管。**进阶:**通过用答案数组来存储左边前缀乘积,然后倒叙遍历过程用一个变量存储右倒叙乘积,并改变数组答案。的额外空间复杂度内完成这个题目吗?( 出于对空间复杂度分析的目的,输出数组。之中任意元素的全部前缀元素和后缀的乘积都在。,则将其所在行和列的所有元素都设为。请 **不要使用除法,**且在。之外其余各元素的乘积。的矩阵,如果一个元素为。时间复杂度内完成此题。**进阶:**你可以在。

2025-03-28 17:31:21 345

原创 LeetCode每日一题

leetcode轮转数组

2025-03-26 21:05:31 341

原创 线程的基础知识

JAVA JUC线程创建及简单API的介绍

2025-03-26 19:33:22 551

原创 前后端分离项目部署到服务器

摘要:本文是给没有部署过项目的小白一个大致方向,细节较少,但是思路清晰

2024-01-20 19:35:49 1486

原创 基于c++面向对象的简单小型图书管理系统

注意自己创建data.txt文件(资源文件,注意该文件位置与代码中打开的位置)LibraryManager.cpp(主要的控制层面,用户与代码交互)Library.cpp(对图书馆的操作)main.cpp(主函数)

2023-05-29 23:28:16 735 2

空空如也

空空如也

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

TA关注的人

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