- 博客(9)
- 资源 (7)
- 收藏
- 关注
原创 生产者消费者模型
描述:共享变量池大小为5,生产者从池中放入一个物品,消费者从池中拿去一个物品。一:定义共享资源:public class PublicResources { private int count = 0; // max = 5 public void reduce() { //消费者消费 synchronized(this) { w...
2018-06-29 23:00:06 418
原创 线程间的协同(生成者/消费者模型)
线程间除了同步互斥使用共享代码块或者共享资源外,有时需要线程间的通信来控制共享信息。生产者/消费者模型就是很好的例子;提供一个资源池,生产者向里面生产资源、消费者负责消费;资源池满,生产者线程等待,消费者消费资源后调用特定方法唤醒生产者线程;反之,资源池为空,消费者线程等待,生产者向资源池生产资源后,调用特定方法唤醒消费者线程。这里实现使用java中 显示锁 Lock锁定共享变量,生产者write...
2018-06-20 18:42:33 243
原创 模拟HashSet底层实现
GitHub源码地址(https://github.com/BradenLei/MyHashSet)1、基本概念:1)HashSet和HashMap唯一的不同之处在于,HashMap以键值对作为一个条目存储在散列表中,而HashSet则以元素的形式存储在散列表中;HashSet相当于HashMap的简化版。2)MySet继承自java.lang.Iterable,实现了其方法,故MyHashSet...
2018-06-18 21:58:00 566
原创 模拟HashMap底层实现
1、概念:1)散列:使用一个散列函数,将一个键映射到一个索引上。2)散列函数:将键映射到散列表中的索引上的函数称为散列函数。3)冲突:当两个键映射到散列表中的同一个索引上,冲突发生a:使用开发地址法解决处理冲突(线性探测、二次探测法、再哈希法)b:使用链地址法处理冲突:将具有同样的散列索引的条目都放在一个位置,每个位置使用一个桶来放置多个条目;通常使用LinkedList来实现一个桶。4)装填因子...
2018-06-18 09:15:58 523
原创 模拟平衡二叉查找树底层实现(AVL)
1、基本概念及操作:1)平衡二叉查找树:在二叉查找树的基础上满足平衡因子为-1,0,1的树结构2)平衡因子:右子树的高度减去左子树的高度;-1表示左偏重,+1表示右偏重3)重新平衡数:从AVL树中插入或者删除一个元素后,如果树变得不平衡了,执行一次旋转操作来重新平衡该树,有四种方式:LL旋转、RR旋转、LR旋转、RL旋转以 LL说明:两个L表示两次左偏重4)AVL树的设计:由于AVL树是二叉查找树...
2018-06-17 16:44:15 306
原创 模拟二叉查找树底层实现
二叉查找树:当前结点的左子树所有结点值小于当前结点值,而右子树所有结点值都大于当前结点实现方法:search()、insert()、delete()、前中后序遍历等。其中delete过程稍稍复杂。接口:package binary;public interface Tree<E> extends Iterable<E>{ /**查找某个元素是否存在*/ pub...
2018-06-16 16:44:29 234
原创 堆、队列、优先队列底层实现
1、通过ArrayList实现大根堆:堆:有大根堆和小根堆,对于大根堆来说,其左右子元素比根元素小1)添加操作:首先将它添加到堆的末尾,然后按以下方式建树:将最后一个结点作为当前结点while(当前结点大于它的父节点){将当前结点和它的父结点交换;现在当前结点往上进一个层次;}2)删除操作:删除之后将最后一个结点成为当前根结点,然后维护该数,其余操作和添加操作类似package shixian;...
2018-06-15 23:55:00 2910
原创 模拟栈的底层实现(用数组线性表实现)
由于栈只允许在栈顶进行插入与删除操作,所以用数组线性表来实现栈比用链表来实现效率更高:接口:package shixian;public interface MyStack<E> { /**返回栈的大小*/ public int size(); /**出栈操作*/ public E pop(); /**进栈操作*/ public void push(E e); ...
2018-06-11 13:46:19 339
原创 模拟ArrayList、LinkedList底层实现
1、MyList接口:package shixian;public interface MyList<E> extends Iterable<E> { /**添加一个新元素在list末尾*/ public void add(E e); /**添加一个新元素在指定的索引处*/ public void add(int index,E e); /**clear...
2018-06-09 17:58:34 214
channel_v3.json
2019-01-21
hibernate注解开发所需的jar包
2017-12-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人