随笔分类 -  Java

摘要:'bool' | 'byte' | 'i8' | 'i16' | 'i32' | 'i64' | 'double' | 'string' | 'binary' | 'slist'(deprecated)list | map | set 阅读全文
posted @ 2018-09-28 15:48 飞晨信息 阅读(1521) 评论(0) 推荐(0)
摘要:双亲委派模型要求除了启动类加载器以外的加载器都要有父类加载器,且子加载器要通过组合复用父加载器的代码,在某个类加载器需要加载类时,先要用父类加载器加载,依次递归到启动类加载器。如果各层加载器加载不了(它的搜索范围中找不到此类),子加载器才会尝试加载这个类。 阅读全文
posted @ 2018-09-27 10:03 飞晨信息 阅读(130) 评论(0) 推荐(0)
摘要:1.CountDownLatch是线程组之间的等待,即一个(或多个)线程等待N个线程完成某件事情之后再执行;而CyclicBarrier则是线程组内的等待,即每个线程相互等待,即N个线程都被拦截之后,然后依次执行。 2.CountDownLatch是减计数方式,而CyclicBarrier是加计数方 阅读全文
posted @ 2018-09-26 16:13 飞晨信息 阅读(167) 评论(0) 推荐(0)
摘要:适配:强调接口兼容性,把旧接口转换成新接口 装饰:强调增强,新接口增强旧接口,用于扩展,装饰类需传入被装饰类实例 代理:强调隔离,新旧接口需一致 阅读全文
posted @ 2018-09-26 14:37 飞晨信息 阅读(174) 评论(0) 推荐(0)
摘要:GC,即就是Java垃圾回收机制。目前主流的JVM(HotSpot)采用的是分代收集算法。与C++不同的是,Java采用的是类似于树形结构的可达性分析法来判断对象是否还存在引用。即:从gcroot开始,把所有可以搜索得到的对象标记为存活对象。 GC机制 要准确理解Java的垃圾回收机制,就要从:“什 阅读全文
posted @ 2018-09-21 09:50 飞晨信息 阅读(1016) 评论(0) 推荐(0)
摘要:Minor GC触发条件:当Eden区满时,触发Minor GC。 Full GC触发条件: (1)调用System.gc时,系统建议执行Full GC,但是不必然执行 (2)老年代空间不足 (3)方法去空间不足 (4)通过Minor GC后进入老年代的平均大小大于老年代的可用内存 (5)由Eden 阅读全文
posted @ 2018-09-21 09:43 飞晨信息 阅读(400) 评论(0) 推荐(0)
摘要:对象是否死亡的2中判定方法:引用计数和可达性分析(又称引用链) 对象再被创建时,对象头里会存储引用计数器,对象被引用,计数器+1;引用失效,计数器 -1;GC时会回收计数器为0的对象。但是JVM没有用这种方式,因为无法判定相互循环引用(A引用B,B引用A)的情况,无法解决对象互相循环引用。 程序把所 阅读全文
posted @ 2018-09-21 09:12 飞晨信息 阅读(1049) 评论(0) 推荐(0)
摘要:堆里面分为新生代和老生代(java8取消了永久代,采用了Metaspace),新生代包含Eden+Survivor区,survivor区里面分为from和to区,内存回收时,如果用的是复制算法,从from复制到to,当经过一次或者多次GC之后,存活下来的对象会被移动到老年区,当JVM内存不够用的时候 阅读全文
posted @ 2018-09-21 09:01 飞晨信息 阅读(4609) 评论(0) 推荐(0)
摘要:方法区:主要是存储类信息,常量池(static常量和static变量),编译后的代码(字节码)等数据 堆:初始化的对象,成员变量 (那种非static的变量),所有的对象实例和数组都要在堆上分配 栈:栈的结构是栈帧组成的,调用一个方法就压入一帧,帧上面存储局部变量表,操作数栈,方法出口等信息,局部变 阅读全文
posted @ 2018-09-21 08:51 飞晨信息 阅读(688) 评论(0) 推荐(0)
摘要:在jdk7的新特性方面主要有下面几方面的增强: 1.1二进制变量的表示,支持将整数类型用二进制来表示,用0b开头。 所有整数int、short、long、byte都可以用二进制表示: 1.2 Switch语句支持String类型。 1.3 Try-with-resource语句: 参考博客:try- 阅读全文
posted @ 2018-09-20 15:28 飞晨信息 阅读(892) 评论(0) 推荐(0)
摘要:DOM解析 解析器读入整个文档,然后构建一个主流内存的树结构,然后代码就可以使用dom接口来操作这个树结构。 优点: 整个文档树在内存中,便于操作;支持删除、修改、重新排列等多种功能。 通过树形结构存取xml文档。 可以随时访问到某个节点的相邻节点。 缺点: 将整个文档调入内存(包括无用的节点),浪 阅读全文
posted @ 2018-09-20 15:11 飞晨信息 阅读(303) 评论(0) 推荐(0)
摘要:泛型中的<Object>并不是像以前那样有继承关系的,也就是说List<Object>和List<String>是毫无关系的 阅读全文
posted @ 2018-09-20 11:14 飞晨信息 阅读(565) 评论(0) 推荐(0)
摘要:1:javaIO与NIO区别:IO是基于流的,而NIO是基于缓存的。JavaIO每次从流中读取一个或者多个字节,知道读取所有的字节,不能前后移动流中的数据。而NIO通过通道读取到缓存区中,需要可在缓存区中前后移动, 2:javaIO是阻塞的,而NIO是非阻塞的;IO阻塞当一个线程调用read()方法 阅读全文
posted @ 2018-09-20 10:25 飞晨信息 阅读(234) 评论(0) 推荐(0)
摘要:循环ArrayList时,普通for循环比foreach循环花费的时间要少一点;循环LinkList时,普通for循环比foreach循环花费的时间要多很多。 当我将循环次数提升到一百万次的时候,循环ArrayList,普通for循环还是比foreach要快一点;但是普通for循环在循环LinkLi 阅读全文
posted @ 2018-09-20 09:54 飞晨信息 阅读(3222) 评论(0) 推荐(0)
摘要:对于sleep()方法,我们首先要知道该方法是属于Thread类中的。而wait()方法,则是属于Object类中的。 sleep()方法导致了程序暂停执行指定的时间,让出cpu该其他线程,但是他的监控状态依然保持者,当指定的时间到了又会自动恢复运行状态。 在调用sleep()方法的过程中,线程不会 阅读全文
posted @ 2018-09-20 09:49 飞晨信息 阅读(153) 评论(0) 推荐(0)
摘要:1:本例介绍一个特殊的队列:BlockingQueue,如果BlockingQueue是空的,从BlockingQueue取东西的操作将会被阻断进入等待状态,直到BlockingQueue进了东西才会被唤醒,同样,如果BlockingQueue是满的,任何试图往里存东西的操作也会被阻断进入等待状态, 阅读全文
posted @ 2018-09-20 09:44 飞晨信息 阅读(577) 评论(0) 推荐(0)
摘要:1. 线程池的优点: 合理利用线程池能够带来三个好处。第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。第二:提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。第三:提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定 阅读全文
posted @ 2018-09-20 09:34 飞晨信息 阅读(1699) 评论(0) 推荐(0)
摘要:Java中的ThreadLocal类允许我们创建只能被同一个线程读写的变量。因此,如果一段代码含有一个ThreadLocal变量的引用,即使两个线程同时执行这段代码,它们也无法访问到对方的ThreadLocal变量。 private ThreadLocal myThreadLocal = new T 阅读全文
posted @ 2018-09-20 08:40 飞晨信息 阅读(616) 评论(0) 推荐(0)
摘要:生产者消费者模式 阅读全文
posted @ 2018-09-20 08:24 飞晨信息 阅读(128) 评论(0) 推荐(0)
摘要:Java 线程池Java通过Executors提供四种线程池,分别为:newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列 阅读全文
posted @ 2018-09-19 16:56 飞晨信息 阅读(161) 评论(0) 推荐(0)