
Java知识
文章平均质量分 69
be_gin_ner
这个作者很懒,什么都没留下…
展开
-
Java中数组的基本使用
写了一点比较常用,希望对大家有帮助。数组定义:动态初始化:数据类型[] 数组名称 = new 数据类型 [长度] ;public class lianxi { public static void main(String[] args) { int[] x = new int[3] ; // 开辟了一个长度为3的数组 System.out.println(x....原创 2019-03-13 16:54:40 · 134 阅读 · 0 评论 -
Java中类的初始化顺序
静态初始化块>初始化块>构造器父类>子类综合顺序:(1)父类静态代码块(包括静态初始化块,静态属性,但不包括静态方法)(2)子类静态代码块(包括静态初始化块,静态属性,但不包括静态方法)(3)父类非静态代码块(包括非静态初始化块,非静态属性)(4)父类构造函数(5)子类非静态代码块(包括非静态初始化块,非静态属性)...原创 2019-04-24 15:18:28 · 151 阅读 · 0 评论 -
Java中实现线程"锁"的方式:synchronized与Lock
synchronized是Java的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。JDK1.5以后引入了自旋锁、锁粗化、轻量级锁,偏向锁来有优化关键字的性能。Lock是一个接口,而synchronized是Java中的关键字,synchronized是内置的语言实现;synchronized在发生异常时,会自动释放线程占有的锁,因此不会导致死...原创 2019-07-13 22:45:27 · 195 阅读 · 0 评论 -
ArrayList介绍和其相关常用方法总结
ArrayList:ArrayList是基于数组实现的List类,完全支持List接口的全部功能,支持快速访问,复制和序列化。底层是基于数组实现容量大小动态变化,允许null值存在。常识:初始化策略:Lazy-Load(懒加载策略),只有当Array对象第一次被使用(add)时,内部的数组才会初始化为长度为10的数组扩容:每次扩容为原先数组的1.5倍线程安全性:线程不安全我常用...原创 2019-07-15 21:49:07 · 249 阅读 · 0 评论 -
百万数据处理,找到前K大的数字(TopK问题)。
假如你有一组数据,现在让你求出前K大的数字。有的人说,直接排序不就Ok了。那么我的问题来了。如果这个数据很多呢,并且现在给你分配的内存很小,不足以让你开辟足够大的空间去存储数组。我们该怎么办。这个时候我们就可以用堆来实现。比如我们现在有300000个随机数字,现在让你找出来前100大的数字。思路:我们可以建立一个容量为100堆,先将前100个数据存入。将堆变成小根堆,接下来每次从随...原创 2019-07-25 23:02:18 · 918 阅读 · 0 评论 -
约瑟夫环问题解决
问题描述:编号为1-N的N个士兵围坐在一起形成一个圈,从编号为1的士兵依次开始报数(1,2,3..依次报),数到m的士兵会被杀死出列,之后的士兵再从1开始报数。直到最后剩下一士兵。求这个士兵的编号。方法一:数组第一次做这个题的时候,第一反应就是用数组来做。创建一个boolean数组,用true表示没出列,false表示出列,定义一个计数器,遍历数组,当加到与m相等时,就将true变为fal...原创 2019-08-19 09:46:01 · 348 阅读 · 0 评论 -
Java垃圾回收
在进行垃圾回收之前需要考虑三个问题:1.哪种内存需要回收。2.什么时候回收。3.怎么回收判断对象是否存活1.引用计数法 给对象增加一个引用计数器,每当一个地方引用它,计数器就加1,当引用失效时,计数器减1.任何时刻计数为0的对象就是不能再被使用,即对象已死。 引用计数法实现简单,判断效率也比较高,在大部分情况下都是一个不错的算法。但是在主流的JVM中没有选用引用...原创 2019-08-24 22:35:53 · 168 阅读 · 0 评论 -
递归列出指定目录下的文件和文件的拷贝
文件的遍历:public class Test { public static void main(String[] args) { File file = new File("D:/"); listAllFiles(file); } public static void listAllFiles(File file){ ...原创 2019-08-15 22:49:17 · 243 阅读 · 0 评论 -
Synchronized和ReentrantLock区别
Synchronized和ReentrantLock区别相似点:都是加锁方式同步,并且都是阻塞式的同步,即一个线程获取了对象锁,进入同步块,其他访问该同步块的线程必须阻塞在同步块的外面等待,而线程进行阻塞和唤醒的代价是比较高的,功能区别:synchornized是Java语言的关键字,是原生语法层面的互斥,需要JVM实现,而ReentrantLock是JDK1.5以后提供的API层...原创 2019-08-25 22:30:08 · 336 阅读 · 0 评论