09 2018 档案

摘要:'bool' | 'byte' | 'i8' | 'i16' | 'i32' | 'i64' | 'double' | 'string' | 'binary' | 'slist'(deprecated)list | map | set 阅读全文
posted @ 2018-09-28 15:48 飞晨信息 阅读(1520) 评论(0) 推荐(0)
摘要:双亲委派模型要求除了启动类加载器以外的加载器都要有父类加载器,且子加载器要通过组合复用父加载器的代码,在某个类加载器需要加载类时,先要用父类加载器加载,依次递归到启动类加载器。如果各层加载器加载不了(它的搜索范围中找不到此类),子加载器才会尝试加载这个类。 阅读全文
posted @ 2018-09-27 10:03 飞晨信息 阅读(126) 评论(0) 推荐(0)
摘要:1.CountDownLatch是线程组之间的等待,即一个(或多个)线程等待N个线程完成某件事情之后再执行;而CyclicBarrier则是线程组内的等待,即每个线程相互等待,即N个线程都被拦截之后,然后依次执行。 2.CountDownLatch是减计数方式,而CyclicBarrier是加计数方 阅读全文
posted @ 2018-09-26 16:13 飞晨信息 阅读(165) 评论(0) 推荐(0)
摘要:适配:强调接口兼容性,把旧接口转换成新接口 装饰:强调增强,新接口增强旧接口,用于扩展,装饰类需传入被装饰类实例 代理:强调隔离,新旧接口需一致 阅读全文
posted @ 2018-09-26 14:37 飞晨信息 阅读(174) 评论(0) 推荐(0)
摘要:索引(Index)是一种特殊的查找表,数据库搜索引擎用来加快数据检索。简单地说,索引是一个指向表中数据的指针。一个数据库中的索引与一本书后边的索引是非常相似的。 例如,如果您想在一本讨论某个话题的书中引用所有页面,您首先需要指向索引,索引按字母顺序列出了所有主题,然后指向一个或多个特定的页码。 索引 阅读全文
posted @ 2018-09-25 16:01 飞晨信息 阅读(529) 评论(0) 推荐(0)
摘要:GC,即就是Java垃圾回收机制。目前主流的JVM(HotSpot)采用的是分代收集算法。与C++不同的是,Java采用的是类似于树形结构的可达性分析法来判断对象是否还存在引用。即:从gcroot开始,把所有可以搜索得到的对象标记为存活对象。 GC机制 要准确理解Java的垃圾回收机制,就要从:“什 阅读全文
posted @ 2018-09-21 09:50 飞晨信息 阅读(1011) 评论(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 飞晨信息 阅读(397) 评论(0) 推荐(0)
摘要:对象是否死亡的2中判定方法:引用计数和可达性分析(又称引用链) 对象再被创建时,对象头里会存储引用计数器,对象被引用,计数器+1;引用失效,计数器 -1;GC时会回收计数器为0的对象。但是JVM没有用这种方式,因为无法判定相互循环引用(A引用B,B引用A)的情况,无法解决对象互相循环引用。 程序把所 阅读全文
posted @ 2018-09-21 09:12 飞晨信息 阅读(1048) 评论(0) 推荐(0)
摘要:堆里面分为新生代和老生代(java8取消了永久代,采用了Metaspace),新生代包含Eden+Survivor区,survivor区里面分为from和to区,内存回收时,如果用的是复制算法,从from复制到to,当经过一次或者多次GC之后,存活下来的对象会被移动到老年区,当JVM内存不够用的时候 阅读全文
posted @ 2018-09-21 09:01 飞晨信息 阅读(4602) 评论(0) 推荐(0)
摘要:方法区:主要是存储类信息,常量池(static常量和static变量),编译后的代码(字节码)等数据 堆:初始化的对象,成员变量 (那种非static的变量),所有的对象实例和数组都要在堆上分配 栈:栈的结构是栈帧组成的,调用一个方法就压入一帧,帧上面存储局部变量表,操作数栈,方法出口等信息,局部变 阅读全文
posted @ 2018-09-21 08:51 飞晨信息 阅读(685) 评论(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 飞晨信息 阅读(888) 评论(0) 推荐(0)
摘要:DOM解析 解析器读入整个文档,然后构建一个主流内存的树结构,然后代码就可以使用dom接口来操作这个树结构。 优点: 整个文档树在内存中,便于操作;支持删除、修改、重新排列等多种功能。 通过树形结构存取xml文档。 可以随时访问到某个节点的相邻节点。 缺点: 将整个文档调入内存(包括无用的节点),浪 阅读全文
posted @ 2018-09-20 15:11 飞晨信息 阅读(300) 评论(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 飞晨信息 阅读(231) 评论(0) 推荐(0)
摘要:循环ArrayList时,普通for循环比foreach循环花费的时间要少一点;循环LinkList时,普通for循环比foreach循环花费的时间要多很多。 当我将循环次数提升到一百万次的时候,循环ArrayList,普通for循环还是比foreach要快一点;但是普通for循环在循环LinkLi 阅读全文
posted @ 2018-09-20 09:54 飞晨信息 阅读(3219) 评论(0) 推荐(0)
摘要:对于sleep()方法,我们首先要知道该方法是属于Thread类中的。而wait()方法,则是属于Object类中的。 sleep()方法导致了程序暂停执行指定的时间,让出cpu该其他线程,但是他的监控状态依然保持者,当指定的时间到了又会自动恢复运行状态。 在调用sleep()方法的过程中,线程不会 阅读全文
posted @ 2018-09-20 09:49 飞晨信息 阅读(150) 评论(0) 推荐(0)
摘要:1:本例介绍一个特殊的队列:BlockingQueue,如果BlockingQueue是空的,从BlockingQueue取东西的操作将会被阻断进入等待状态,直到BlockingQueue进了东西才会被唤醒,同样,如果BlockingQueue是满的,任何试图往里存东西的操作也会被阻断进入等待状态, 阅读全文
posted @ 2018-09-20 09:44 飞晨信息 阅读(575) 评论(0) 推荐(0)
摘要:1. 线程池的优点: 合理利用线程池能够带来三个好处。第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。第二:提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。第三:提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定 阅读全文
posted @ 2018-09-20 09:34 飞晨信息 阅读(1696) 评论(0) 推荐(0)
摘要:Java中的ThreadLocal类允许我们创建只能被同一个线程读写的变量。因此,如果一段代码含有一个ThreadLocal变量的引用,即使两个线程同时执行这段代码,它们也无法访问到对方的ThreadLocal变量。 private ThreadLocal myThreadLocal = new T 阅读全文
posted @ 2018-09-20 08:40 飞晨信息 阅读(615) 评论(0) 推荐(0)
摘要:生产者消费者模式 阅读全文
posted @ 2018-09-20 08:24 飞晨信息 阅读(128) 评论(0) 推荐(0)
摘要:Java 线程池Java通过Executors提供四种线程池,分别为:newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列 阅读全文
posted @ 2018-09-19 16:56 飞晨信息 阅读(159) 评论(0) 推荐(0)
摘要:对象锁是用来控制实例方法之间的同步,而类锁是用来控制静态方法(或者静态变量互斥体)之间的同步的。 类锁只是一个概念上的东西,并不是真实存在的,他只是用来帮助我们理解锁定实例方法和静态方法的区别的。 java类可能会有很多对象,但是只有一个Class(字节码)对象,也就是说类的不同实例之间共享该类的C 阅读全文
posted @ 2018-09-19 14:11 飞晨信息 阅读(714) 评论(0) 推荐(0)
摘要:一、线程同步问题的产生及解决方案 问题的产生: Java允许多线程并发控制,当多个线程同时操作一个可共享的资源变量时(如数据的增删改查),将会导致数据不准确,相互之间产生冲突。 如下例:假设有一个卖票系统,一共有100张票,有4个窗口同时卖。 public class Ticket implemen 阅读全文
posted @ 2018-09-19 11:20 飞晨信息 阅读(314) 评论(0) 推荐(0)
摘要:(1)Volatile原理 (一)计算机内存模型 计算机在执行程序时,每条指令都是在CPU中执行的,而执行指令过程中,势必涉及到数据的读取和写入。由于程序运行过程中的临时数据是存放在主存(物理内存)当中的,这时就存在一个问题,由于CPU执行速度很快,而从内存读取数据和向内存写入数据的过程跟CPU执行 阅读全文
posted @ 2018-09-19 10:57 飞晨信息 阅读(515) 评论(0) 推荐(0)
摘要:0.前言 转载请标明出处:http://blog.csdn.net/seu_calvin/article/details/52191321 多态在Java技术里有很重要的地位,在面试中也会经常被问到。 多态的使用大家应该都比较了解,但是多态的实现原理就有点抽象了,查了很多很多资料,连续几天断断续续的 阅读全文
posted @ 2018-09-18 15:23 飞晨信息 阅读(3509) 评论(0) 推荐(0)
摘要:内部静态类不需要有指向外部类的引用。但非静态内部类需要持有对外部类的引用。非静态内部类能够访问外部类的静态和非静态成员。静态类不能访问外部类的非静态成员。他只能访问外部类的静态成员。一个非静态内部类不能脱离外部类实体被创建,一个非静态内部类可以访问外部类的数据和方法,因为他就在外部类里面。 根据Or 阅读全文
posted @ 2018-09-18 10:04 飞晨信息 阅读(1254) 评论(0) 推荐(1)
摘要:二者的相同点 都不能被实例化 二者的区别 阅读全文
posted @ 2018-09-18 09:21 飞晨信息 阅读(150) 评论(0) 推荐(0)
摘要:overload是重载,重载是一种参数多态机制,即代码通过参数的类型或个数不同而实现的多态机制。 是一种静态的绑定机制(在编译时已经知道具体执行的是哪个代码段)。 override是重写,重写是一种动态绑定的多态机制。即在父类和子类中同名元素(如成员函数)有不同 的实现代码。执行的是哪个代码是根据运 阅读全文
posted @ 2018-09-18 08:43 飞晨信息 阅读(546) 评论(0) 推荐(0)
摘要:1、java.util.Collection 是一个集合接口。它提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java 类库中有很多具体的实现。Collection接口的意义是为各种具体的集合提供了最大化的统一操作方式。 Collection ├List │├LinkedLi 阅读全文
posted @ 2018-09-17 16:46 飞晨信息 阅读(138) 评论(0) 推荐(0)
摘要:LinkedHashMap可以保证HashMap集合有序。存入的顺序和取出的顺序一致。TreeMap实现SortMap接口,能够把它保存的记录根据键排序,默认是按键值的升序排序,也可以指定排序的比较器,当用Iterator 遍历TreeMap时,得到的记录是排过序的。HashMap不保证顺序,即为无 阅读全文
posted @ 2018-09-17 16:42 飞晨信息 阅读(310) 评论(0) 推荐(0)
摘要:HashMap几乎可以等价于Hashtable,除了HashMap是非synchronized的,并可以接受null(HashMap可以接受为null的键值(key)和值(value),而Hashtable则不行)。 HashMap是非synchronized,而Hashtable是synchron 阅读全文
posted @ 2018-09-17 16:22 飞晨信息 阅读(104) 评论(0) 推荐(0)
摘要:String:适用于少量的字符串操作的情况 StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情况 StringBuffer:适用多线程下在字符缓冲区进行大量操作的情况 阅读全文
posted @ 2018-09-17 16:12 飞晨信息 阅读(101) 评论(0) 推荐(0)
摘要:Arraylist和Vector是采用数组方式存储数据,此数组元素数大于实际存储的数据以便增加插入元素,都允许直接序号索引元素,但是插入数据要涉及到数组元素移动等内存操作,所以插入数据慢,查找有下标,所以查询数据快,Vector由于使用了synchronized方法-线程安全,所以性能上比Array 阅读全文
posted @ 2018-09-17 14:58 飞晨信息 阅读(87) 评论(0) 推荐(0)
摘要:hashCode是用于查找使用的, 作为对象的唯一标识,而equals是用于比较两个对象的是否相等的。 阅读全文
posted @ 2018-09-17 14:01 飞晨信息 阅读(154) 评论(0) 推荐(0)
摘要:1、利用软引用和弱引用解决OOM问题:用一个HashMap来保存图片的路径和相应图片对象关联的软引用之间的映射关系,在内存不足时,JVM会自动回收这些缓存图片对象所占用的空间,从而有效地避免了OOM的问题; 2、通过软引用对象重获方法实现java对象的高速缓存:比如我们创建了一个Employee类, 阅读全文
posted @ 2018-09-17 13:43 飞晨信息 阅读(1020) 评论(0) 推荐(0)
摘要:Object是所有类的父类,任何类都默认继承Object。 clone 保护方法,实现对象的浅复制,只有实现了Cloneable接口才可以调用该方法,否则抛出CloneNotSupportedException异常 equals 在Object中与==是一样的,子类一般需要重写该方法 hashCod 阅读全文
posted @ 2018-09-17 11:24 飞晨信息 阅读(409) 评论(0) 推荐(0)
摘要:== 比较的是变量内存地址 equals默认也是比较内存地址,如果重写就是重写的比较逻辑 equals用来比较的是两个对象的内容是否相等,由于所有的类都是继承自java.lang.Object类的,所以适用于所有对象,如果没有对该方法进行覆盖的话,调用的仍然是Object类中的方法,而Object中 阅读全文
posted @ 2018-09-17 11:15 飞晨信息 阅读(224) 评论(0) 推荐(0)
摘要:在Java5以前,switch(expr)中,exper只能是byte,short,char,int类型。 从Java5开始,java中引入了枚举类型,即enum类型。 从Java7开始,exper还可以是String类型。 但是long在所有版本中都是不可以的。 为什么jdk1.7后又可以用str 阅读全文
posted @ 2018-09-17 10:35 飞晨信息 阅读(1327) 评论(0) 推荐(0)
摘要:boolean的大小JVM规范并没有指定, 取决于jvm的实现。1byte的可能性多。 基本类型所占的存储空间是不变的:这种不变性也是java具有可移植性的原因之一。 基本类型是放在栈中,直接存储值。 所有数值类型都有正负号,没有无符号的数值类型。 注: 1.int是基本数据类型,Integer是i 阅读全文
posted @ 2018-09-17 09:31 飞晨信息 阅读(1404) 评论(0) 推荐(0)
摘要:1、定义私有静态易变的类变量2、定义getInstance静态方法 2.1、若静态变量为null,则在同步类类型的同时判断静态实例是否为null, 是null则创建新实例赋给静态变量 2.2、不为null,直接返回静态类变量3、定义私有构造函数/////////Singleton////////// 阅读全文
posted @ 2018-09-17 09:04 飞晨信息 阅读(156) 评论(0) 推荐(0)