随笔分类 - data structure
摘要:延迟队列在我们工作中经常用到。比较常见的例子有订单发货后半个小时通知用户,用户在系统中定义了任务的执行周期,或者定时执行等场景。比较成熟的开源系统有小海豚(dolphinscheduler),目前可支持百万级的任务调度。公司级的调度或者数仓的任务调度可以在其基础上进行二次开发,而且开源给apache
阅读全文
摘要:ps:在下文中分别以Array代表ArrayBlockingQueue,Link代表LinkedBlockingQueue,下文中不再说明。 Array和Link在并发场景中经常使用,他们的共同作用就是实现线程安全队列。下面对这两种队列的实现进行对比分析。 底层实现 ArrayBlockingQue
阅读全文
摘要:根据自己对hashMap的理解,基于数组加链表实现了一个HashMap。 下面给出源码:https://github.com/XiaoheXu/hotchpotch/blob/master/src/main/java/com/chris/java/collections/HashMap.java 单
阅读全文
摘要:这个是一个很常见的算法,在剑指offer中有详细的讲解,在这里提供一种优化的 "实现" 。该实现的优点是不需要每次在数据出列时,将数据copy到另一个堆栈中。并写了其对应的 "单元测试" 。 主要思想 主要实现是在类中定义了两个全局变量,标明当前队列中两个栈的状态, isMain 表示现在数据存储在
阅读全文
摘要:简介 Vector 看上去想一个可增长的数组,可以使用索引访问。他的size随着添加或删除item可大可小。Vector为了优化存储,保存着capacity和capacityIncrement两个变量。capacity最小为vector当前的大小。一般比vector的size要大,当有有数据添加到v
阅读全文
摘要:简介 LinkedList 是一个双向链表,他实现了List和Deque(双向队列,既有队列的性质,又有栈的性质)。LinkedList的实现也是非线程安全的,如果有多个线程访问队列,只是读取链表的内容没有关系,当有其中的一个线程修改了list的结构时,在代码中必须保证同步。在链表中添加和删除元素都
阅读全文
摘要:很多人都知道HashTable与HashMap的关系,HashTable是线程安全的,HashMap是非线程安全的。在介绍完 "HashMap" 之后,趁热介绍一下HashTable。在HashTable中没有像HashMap中那么多关于数据结构的内容。HashTable是线程安全的,因为其源码的方
阅读全文
摘要:HashMap通常使用链地址方法存储,但是当链的长度太大(大于8)时,这个链就会转换为红黑树,类似java.util.TeeMap。大部分情况下使用链表,但检查到节点为树节点时,也会使用树。树状的链表可以像其他链表一样使用和遍历,但是如果HashMap中冲突严重的情况下,树状的链表查找更快。Hash
阅读全文

浙公网安备 33010602011771号