<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[qq_22717543的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/qq_22717543</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qq_22717543]]></copyright><item><title><![CDATA[java集合之LinkedTransferQueue]]></title><link>https://blog.youkuaiyun.com/qq_22717543/article/details/142964897</link><guid>https://blog.youkuaiyun.com/qq_22717543/article/details/142964897</guid><author>qq_22717543</author><pubDate>Mon, 21 Oct 2024 21:39:20 +0800</pubDate><description><![CDATA[LinkedTransferQueue是一个无界的阻塞队列，底层采用链表结构存储数据，遵循先进先出，但是它不采用加锁的方式来控制并发，而是采用cas和各种判断，来保证多线程的操作，它与SynchronousQueue一样，不存储元素，而是存储生产者或者消费者本身，也就是线程本身生产者和消费者直接交换手中的数据，任何一个写操作必须等到一个读操作(反之亦然)，交换成功才是成功，否则就阻塞或者返回失败(取决于调用的方法)，队列中的元素必须是同一类角色，要么是生产者，要么是消费者。]]></description><category></category></item><item><title><![CDATA[java集合之DelayedWorkQueue]]></title><link>https://blog.youkuaiyun.com/qq_22717543/article/details/142443779</link><guid>https://blog.youkuaiyun.com/qq_22717543/article/details/142443779</guid><author>qq_22717543</author><pubDate>Tue, 08 Oct 2024 22:49:01 +0800</pubDate><description><![CDATA[DelayedWorkQueue 是一个定制的阻塞队列，专门用来存放RunnableScheduledFutures任务，它是有界的，有最大容量，一般达不到，虽然它是队列，它并不能满足先进先出规则，它是按优先级出队，它会将插入的数据进行排序，按优先级出队，底层采用数组实现的二叉堆，它是为定时线程池服务的，它会根据提交进来的任务的延迟时间进行排序，始终将距离当前时间最近的任务排在前面。具体情况，我们根据源码来解释。]]></description><category></category></item><item><title><![CDATA[java集合之SynchronousQueue]]></title><link>https://blog.youkuaiyun.com/qq_22717543/article/details/141579794</link><guid>https://blog.youkuaiyun.com/qq_22717543/article/details/141579794</guid><author>qq_22717543</author><pubDate>Tue, 17 Sep 2024 15:50:07 +0800</pubDate><description><![CDATA[SynchronousQueue也是一个队列，与其他队列不同的是，SynchronousQueue队列中，他不存储数据，存储生产者或者是消费者，让生产者和消费者直接交换手中的数据，任何一个写操作必须等到一个读操作(反之亦然)，交换成功才是成功，否则就阻塞或者返回失败(取决于调用的方法)。]]></description><category></category></item><item><title><![CDATA[java集合之DelayQueue]]></title><link>https://blog.youkuaiyun.com/qq_22717543/article/details/140857893</link><guid>https://blog.youkuaiyun.com/qq_22717543/article/details/140857893</guid><author>qq_22717543</author><pubDate>Fri, 02 Aug 2024 07:33:18 +0800</pubDate><description><![CDATA[DelayQueue是一个无界的阻塞队列，是一个延时队列，它存储的元素必须实现Delayed接口，其中的元素只有在到期时才能被消费者取走，它底层是使用的PriorityQueue，PriorityQueue底层采用数组实现的二叉堆，队列中的元素根据到期时间进行排序，剩余时间最少的放在堆顶。因为它几乎趋近于无界，因为底层数组的最大容量限制是Int最大值减8，所以生产者往队列添加元素的时候不会出现阻塞的情况，队列满了就进行扩容消费者会阻塞。]]></description><category></category></item><item><title><![CDATA[java集合之PriorityBlockingQueue]]></title><link>https://blog.youkuaiyun.com/qq_22717543/article/details/140749779</link><guid>https://blog.youkuaiyun.com/qq_22717543/article/details/140749779</guid><author>qq_22717543</author><pubDate>Sun, 28 Jul 2024 16:05:05 +0800</pubDate><description><![CDATA[PriorityBlockingQueue是一个阻塞队列，它是有界的，有最大容量，一般达不到，虽然它是队列，它并不能满足先进先出规则，它是按优先级出队，它会将插入的数据进行排序，按优先级出队，底层采用数组实现的二叉堆，所以当我们往队列中添加自定义对象时，自定义对象需要实现Comparable接口，也就是需要告诉队列，你的数据需要按什么规则进行排序。具体情况，我们根据源码来解释。]]></description><category></category></item><item><title><![CDATA[java集合之LinkedBlockingQueue]]></title><link>https://blog.youkuaiyun.com/qq_22717543/article/details/140598768</link><guid>https://blog.youkuaiyun.com/qq_22717543/article/details/140598768</guid><author>qq_22717543</author><pubDate>Tue, 23 Jul 2024 21:51:02 +0800</pubDate><description><![CDATA[1、LinkedBlockingQueue属于Queue分支下的一个子类，与ArrayBlockingQueue不同，它底层采用链表的方式来存放数据，不过也可以给它设置容量，若不设置容量，默认是int的最大值，正常来说元素个数是达不到这个值的，可能先出现oom2、由于底层采用的是单链表，只能从尾部添加，从头部获取。]]></description><category></category></item><item><title><![CDATA[java集合之ArrayBlockingQueue]]></title><link>https://blog.youkuaiyun.com/qq_22717543/article/details/140589142</link><guid>https://blog.youkuaiyun.com/qq_22717543/article/details/140589142</guid><author>qq_22717543</author><pubDate>Sun, 21 Jul 2024 22:05:41 +0800</pubDate><description><![CDATA[ArrayBlockingQueue属于BlockingQueue分支下的一个子类，他是一个阻塞队列，通过名字可知，它底层是采用的数组结构来存放数据，既然是数组，那么长度就是固定的，且它是一个阻塞队列，那么就会涉及到一些锁相关的内容，我们从具体的方法中去了解具体的实现。]]></description><category></category></item><item><title><![CDATA[java集合之BlockingQueue]]></title><link>https://blog.youkuaiyun.com/qq_22717543/article/details/138292482</link><guid>https://blog.youkuaiyun.com/qq_22717543/article/details/138292482</guid><author>qq_22717543</author><pubDate>Mon, 29 Apr 2024 21:58:49 +0800</pubDate><description><![CDATA[什么是阻塞队列，首先它是一个队列(或者说集合)，它是用来存放数据的，为什么说阻塞，当多个线程往队列里面放数据或取数据的时候，如果没有先来后到，乱取乱放，数据就脏了，所以我们需要协调多个线程之间的取和放，BlockingQueue就是实现了协调多线程功能的一个队列，使用者不再关心什么时候线程该阻塞，什么时候线程该唤醒，BlockingQueue已经包办这一切。BlockingQueue是concurrent中的阻塞队列，为多线程传输数据提供了方便，使用者不需要去实现线程之间的协调。]]></description><category></category></item><item><title><![CDATA[java集合之Deque]]></title><link>https://blog.youkuaiyun.com/qq_22717543/article/details/138056693</link><guid>https://blog.youkuaiyun.com/qq_22717543/article/details/138056693</guid><author>qq_22717543</author><pubDate>Wed, 24 Apr 2024 07:39:17 +0800</pubDate><description><![CDATA[Deque是一个线性集合，是集合框架中的queue下的一个分支，它支持在队列两端进行操作，所以也叫双端队列，大多数Deque实现对它们可能包含的元素的数量没有固定的限制，但是这个接口支持容量限制。在不违反容量限制的情况下将一个元素推到该队列表示的堆栈上（换句话说，在队列的头），如果当前没有可用空间，则抛出异常。在不违反容量限制的情况下将指定的元素插入队列的尾部，成功时返回true，如果当前没有可用的空间，则返回false。在队列尾部插入指定的元素，如果当前没有可用空间，则抛出异常。]]></description><category></category></item><item><title><![CDATA[java集合之Queue]]></title><link>https://blog.youkuaiyun.com/qq_22717543/article/details/137852764</link><guid>https://blog.youkuaiyun.com/qq_22717543/article/details/137852764</guid><author>qq_22717543</author><pubDate>Fri, 19 Apr 2024 07:31:45 +0800</pubDate><description><![CDATA[Queue是java集合中的一个分支叫队列，队列从操作上来讲可以分为单向队列和双端队列(Deque下的实现类)，单向队列只能单向操作，比如只能从尾部添加元素，头部获取元素，双向队列就比较灵活，既可以从头部添加，头部获取，也可以从尾部添加，尾部获取，除此外Queue也分为阻塞队列以及非阻塞队列，阻塞队列一般用于多线程模式下。在不违反容量限制的情况下插入指定的元素，成功时返回true，如果当前没有可用的空间，则抛出一个非法的状态异常。检索但不删除此队列的头，如果此队列为空，则返回null。]]></description><category></category></item><item><title><![CDATA[算法基础之二分查找之四]]></title><link>https://blog.youkuaiyun.com/qq_22717543/article/details/136282566</link><guid>https://blog.youkuaiyun.com/qq_22717543/article/details/136282566</guid><author>qq_22717543</author><pubDate>Sun, 25 Feb 2024 14:57:42 +0800</pubDate><description><![CDATA[【代码】算法基础之二分查找之四。]]></description><category></category></item><item><title><![CDATA[算法基础之二分查找之三]]></title><link>https://blog.youkuaiyun.com/qq_22717543/article/details/136282553</link><guid>https://blog.youkuaiyun.com/qq_22717543/article/details/136282553</guid><author>qq_22717543</author><pubDate>Sun, 25 Feb 2024 14:56:10 +0800</pubDate><description><![CDATA[【代码】算法基础之二分查找之三。]]></description><category></category></item><item><title><![CDATA[算法基础之二分查找之二]]></title><link>https://blog.youkuaiyun.com/qq_22717543/article/details/136282509</link><guid>https://blog.youkuaiyun.com/qq_22717543/article/details/136282509</guid><author>qq_22717543</author><pubDate>Sun, 25 Feb 2024 14:53:49 +0800</pubDate><description><![CDATA[【代码】算法基础之二分查找之二。]]></description><category></category></item><item><title><![CDATA[算法基础之二分查找]]></title><link>https://blog.youkuaiyun.com/qq_22717543/article/details/136282496</link><guid>https://blog.youkuaiyun.com/qq_22717543/article/details/136282496</guid><author>qq_22717543</author><pubDate>Sun, 25 Feb 2024 14:52:32 +0800</pubDate><description><![CDATA[【代码】算法基础之二分查找。]]></description><category></category></item><item><title><![CDATA[java集合之LinkedList]]></title><link>https://blog.youkuaiyun.com/qq_22717543/article/details/136198525</link><guid>https://blog.youkuaiyun.com/qq_22717543/article/details/136198525</guid><author>qq_22717543</author><pubDate>Wed, 21 Feb 2024 21:36:58 +0800</pubDate><description><![CDATA[LinkedList实现了List和Deque，说明它既有List的特性，也有Deque的特性，它既然是一个容器，那么自然就是用来存放数据的，它与ArrayList又有什么区别呢，容量是多少，底层用什么结构来存放数据，有没有扩容等等，下面我们带着问题来看看。]]></description><category></category></item><item><title><![CDATA[java集合之Vector]]></title><link>https://blog.youkuaiyun.com/qq_22717543/article/details/135489601</link><guid>https://blog.youkuaiyun.com/qq_22717543/article/details/135489601</guid><author>qq_22717543</author><pubDate>Tue, 09 Jan 2024 22:27:49 +0800</pubDate><description><![CDATA[Vector和前面讲的Arraylist很相似，也是一个保存数据的集合，下面我们来看看Vector的源码。]]></description><category></category></item><item><title><![CDATA[算法基础之前缀和数组]]></title><link>https://blog.youkuaiyun.com/qq_22717543/article/details/135467481</link><guid>https://blog.youkuaiyun.com/qq_22717543/article/details/135467481</guid><author>qq_22717543</author><pubDate>Mon, 08 Jan 2024 21:55:37 +0800</pubDate><description><![CDATA[【代码】算法基础之前缀和数组。]]></description><category></category></item><item><title><![CDATA[java集合之ArrayList]]></title><link>https://blog.youkuaiyun.com/qq_22717543/article/details/135351213</link><guid>https://blog.youkuaiyun.com/qq_22717543/article/details/135351213</guid><author>qq_22717543</author><pubDate>Thu, 04 Jan 2024 23:02:07 +0800</pubDate><description><![CDATA[前面说了接口抽象类，终于走到了具体的实现类了，ArrayList，听名字带了array，那么它大概跟数组有点什么关系。那么数组有什么特点，概括来说：查找快，增删慢。]]></description><category></category></item><item><title><![CDATA[算法基础之插入排序]]></title><link>https://blog.youkuaiyun.com/qq_22717543/article/details/135375103</link><guid>https://blog.youkuaiyun.com/qq_22717543/article/details/135375103</guid><author>qq_22717543</author><pubDate>Wed, 03 Jan 2024 23:02:51 +0800</pubDate><description><![CDATA[【代码】算法基础之插入排序。]]></description><category></category></item><item><title><![CDATA[算法基础之选择排序]]></title><link>https://blog.youkuaiyun.com/qq_22717543/article/details/135374362</link><guid>https://blog.youkuaiyun.com/qq_22717543/article/details/135374362</guid><author>qq_22717543</author><pubDate>Wed, 03 Jan 2024 22:14:27 +0800</pubDate><description><![CDATA[【代码】算法基础之选择排序。]]></description><category></category></item></channel></rss>