摘要:
206. 反转链表 反转一个单链表。假设链表为 \(1 \rightarrow 2 \rightarrow 3 \rightarrow \varnothing\),要把它改成$\varnothing \leftarrow 1 \leftarrow 2 \leftarrow 3$。 示例: 输入:he 阅读全文
摘要:
203. 移除链表元素 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。 输入:head = [1,2,6,3,4,5,6], val = 6 输出:[1,2,3,4,5] 解题思路 如果删除的节点是中间的节 阅读全文
摘要:
142. 环形链表 II 给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回null。 为了表示给定链表中的环,使用整数position来表示链表尾连接到链表中的位置(索引从$0$开始)。 如果position是$-1$,则在该链表中没有环。注意,position仅仅是用于标识环的情 阅读全文
摘要:
题目 给定一个链表,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪next指针再次到达,则链表中存在环。 为了表示给定链表中的环,使用整数position来表示链表尾连接到链表中的位置(索引从$0$开始)。 如果position是$-1$,则在该链表中没有环。 注意:position不 阅读全文
摘要:
在Windows 10上安装Docker 参考资料 Install Docker Desktop on Windows Docker Desktop WSL 2 backend When prompted, ensure the Enable Hyper-V Windows Features or 阅读全文
摘要:
安装Docker 在Window 10下安装Docker,需要WSL 2的支持。 阅读全文
摘要:
在Windows 10上安装WSL2 参考资料:在 Windows 10 上安装 WSL | Microsoft Docs 在 WSL2 上安装 CentOS 参考资料:在Windows 10上使用WSL安装Centos 知行晓政的博客-CSDN博客 CentOS-WSL 下载地址:GitHub - 阅读全文
摘要:
锁分类 参考:不可不说的Java“锁”事 悲观锁 VS 乐观锁 乐观锁与悲观锁是一种广义上的概念,体现了看待线程同步的不同角度。 定义 对于同一个数据的并发操作 悲观锁认为自己在使用数据的时候一定有别的线程来修改数据,因此在获取数据的时候会先加锁,确保数据不会被别的线程修改。 Java中,synch 阅读全文
摘要:
避免死锁 可能发生死锁的条件中不可剥夺条件指的是 线程已经获得资源,在未使用完之前,不能被剥夺,只能在使用完时自己释放! 要想破坏这个条件,就需要具有申请不到资源,就释放已占有资源的能力!使用synchronized,如果线程申请不到资源就会进入阻塞状态,做什么也改变不了它的状态,这是synchro 阅读全文
摘要:
手动创建线程的缺点 线程需要消耗大量资源;线程的数量也不是越多越好! 系统资源有限,每个人针对不同业务都可以手动创建线程,并且创建标准不一样(比如线程没有名字)。当系统运行起来,所有线程都在疯狂抢占资源,会引发混乱——不受控风险! 过多的线程也会引起上下文切换的开销! Thread是一个重量级的资源 阅读全文
摘要:
Condition接口 在并发编程中,每个Java对象都存在一组监视器方法,如wait()、notify()以及notifyAll()方法,通过这些方法,我们可以实现线程间通信与协作(也称为等待唤醒机制),如生产者-消费者模式,而且这些方法必须配合着synchronized关键字使用。 与synch 阅读全文
摘要:
队列同步器概念 队列同步器(AbstractQueuedSynchronizer),简称同步器或AQS。它为实现锁提供了一个框架,内部维护了一个先进先出的队列,以及state状态变量!ReentrantLock、ReentrantReadWriteLock、Semaphore(信号量)、CountD 阅读全文
摘要:
ReentrantLock与AQS的关系 AbstractOwnableSynchronizer:抽象类,定义了存储独占当前锁的线程和获取的方法。 AbstractQueuedSynchronizer:抽象类,AQS框架核心类,其内部以虚拟队列的方式,管理线程的锁获取与锁释放,其中获取锁(tryAc 阅读全文
摘要:
在Windows10上搭建Linux学习环境 阅读全文
摘要:
Java多线程目录 阅读全文