2020年3月29日
摘要: 该二维数组的特征是: a.每行中的整数从左到右按升序排列。 b.每行的第一个整数大于前一行的最后一个整数。 可以每行都进行二分查找(由于该数组的特征,所以可以先将要查找的数与本行的最后一个数据比较,若大于则直接进入下一行比较,增加效率,减少比较的次数),如果未找到则进入下一层,直到找完该二维数组。 阅读全文
posted @ 2020-03-29 23:26 CccccDi 阅读(354) 评论(0) 推荐(0)
  2020年3月24日
摘要: 悲观锁 假设是每次获取数据都认为会被其他线程修改,每次来操作数据(可读、可写)的时候都会加锁;悲观锁的实现是Synchronized。 悲观锁存在问题: 1、多线程竞争,引起性能问题 (锁的释放和获取需要上下文切换和调度等) 2、一个线程获取锁会导致其他线程被挂起(阻塞) 乐观锁 假设对数据的操作一 阅读全文
posted @ 2020-03-24 20:50 CccccDi 阅读(797) 评论(0) 推荐(0)
  2020年3月23日
摘要: 有三个线程,分别为A、B、C线程,需要线程交替打印:ABCABCABC...打印10次。 首先创建一个一个线程间通讯的类: class Opt { //下一个执行的编号 private Integer nextInde; public Integer getNextInde() { return n 阅读全文
posted @ 2020-03-23 15:10 CccccDi 阅读(655) 评论(0) 推荐(0)
  2020年3月20日
摘要: 此时有这样一棵树,其先序遍历:ABCDEFGH;中序遍历:CBEDFAGH;后序遍历:CEFDBHGA;想要以输入结点的方式来创建树。可以考虑一个节点创建成功在创建其左右结点,若其左右结点为空,则返回至上一个结点继续创建,直到创建完毕。 创建树的结点: class BNode{ private BN 阅读全文
posted @ 2020-03-20 23:40 CccccDi 阅读(300) 评论(0) 推荐(0)
  2020年3月19日
摘要: public class Search { public static void main(String[] args) { int[] arr = {1,3,5,6,8,10,13,19,22}; int i = funSearch(arr,arr.length,80); System.out.p 阅读全文
posted @ 2020-03-19 23:25 CccccDi 阅读(497) 评论(0) 推荐(0)
摘要: 一棵二叉树是结点的一个有限集合,该集合或者为空,或者是由一个根结点加上两棵分别称为左子树和右子树的、互不相交的二叉树组成。 二叉树性质: 若二叉树的层次从0开始,则在二叉树的第i层最多有2^i 个结点。(i>= 0) (证明用数学归纳法)。 高度为k的二叉树最多有2^(k+1)-1个结点。 (k>= 阅读全文
posted @ 2020-03-19 23:07 CccccDi 阅读(413) 评论(0) 推荐(0)
  2020年3月18日
摘要: 1.树的定义: 树是由n (n>= 0)个结点组成的有限集合。如果 n=0 ,称为空树;如果 n>0,则 有一个特定的称之为根(root)的结点, 它只有直接后继,但没有直接前驱; 除根以外的其它结点划分为m (m >= 0)个互不相交的有限集合TO, T1, .... ..,Tm-1, 每个集合又 阅读全文
posted @ 2020-03-18 22:53 CccccDi 阅读(163) 评论(0) 推荐(0)
  2020年3月17日
摘要: 同步条件:等待池序列,锁机制。 锁池:获取同一把锁的线程,在为抢夺锁时会进入到锁池 等待池:调用wait操作的线程,会释放掉锁,进入到该对象的等待池中。 notify和nitifyAll的区别: notify唤醒的是对象等待池中的一个线程,这个线程会进入到blocked状态,也叫做进入锁池中,等待获 阅读全文
posted @ 2020-03-17 09:12 CccccDi 阅读(328) 评论(0) 推荐(0)
  2020年3月16日
摘要: 首先看看如下代码以及结果:(计算一秒钟内count++的结果) public class VolatileDemo { private static Boolean flag = true; //创建一个状态变量flag public static void main(String[] args) 阅读全文
posted @ 2020-03-16 00:58 CccccDi 阅读(148) 评论(0) 推荐(0)
  2020年3月14日
摘要: 指的是多个线程操作同一个资源,多线程来交替的操作同一个资源(CPU,内存资源)。 临界资源和临界区: 临界资源:一个时刻只允许一个线程访问,一个线程在访问临界资源时,其他线程是不能访问的,临界资源是不可剥夺资源,OS不能阻止资源的独享行为。 临界区:是一个线程中访问临界资源的代码片段。 临界区的使用 阅读全文
posted @ 2020-03-14 23:58 CccccDi 阅读(653) 评论(0) 推荐(0)