随笔分类 -  JAVA

摘要:强引用 new一个对象,强引用不会被GC回收。 软引用(SoftReference) 如果一个对象只具有软引用,那就类似于可有可物的生活用品。 弱引用(WeakReference) 如果一个对象只具有弱引用,那就类似于可有可物的生活用品。弱引用与软引用的区别在于:只具有弱引用的对象拥有更短暂的生命周 阅读全文
posted @ 2019-10-21 09:41 燕十三丶 阅读(179) 评论(0) 推荐(0)
摘要:数组是(相同类型数据)的(有序)(集合) 数组会在内存中开辟一块连续的空间,每个空间相当于之前的一个变量,称为数组的元素element 元素的表示 数组名[下标或者索引] scores[7] scores[0] scores[9] 索引从0开始 每个数组元素有默认值 double 0.0 boole 阅读全文
posted @ 2019-10-18 13:44 燕十三丶 阅读(468) 评论(1) 推荐(1)
摘要:尽量在合适的场合使用单例使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于单例,简单来说,单例主要适用于以下三个方面:第一,控制资源的使用,通过线程同步来控制资源的并发访问;第二,控制实例的产生,以达到节约资源的目的;第三,控制数据共享,在不建立直接关联的条件下,让 阅读全文
posted @ 2019-10-18 13:42 燕十三丶 阅读(152) 评论(0) 推荐(0)
摘要:真正影响JAVA程序性能的,就是碎片化。碎片是JAVA堆内存中的空闲空间,可能是TLAB剩余空间,也可能是被释放掉的具有较长生命周期的小对象占用的空间。 减少new对象。每次new对象之后,都要开辟新的内存空间。这些对象不被引用之后,还要回收掉。因此,如果最大限度地合理重用对象,或者使用基本数据类型 阅读全文
posted @ 2019-10-18 13:40 燕十三丶 阅读(142) 评论(0) 推荐(0)
摘要:SerialVersionUid,简言之,其目的是序列化对象版本控制,有关各版本反序列化时是否兼容。如果在新版本中这个值修改了,新版本就不兼容旧版本,反序列化时会抛出InvalidClassException异常。如果修改较小,比如仅仅是增加了一个属性,我们希望向下兼容,老版本的数据都能保留,那就不 阅读全文
posted @ 2019-10-18 11:32 燕十三丶 阅读(393) 评论(0) 推荐(0)
摘要:(1)DBCP DBCP是一个依赖Jakarta commons-pool对象池机制的数据库连接池.DBCP可以直接的在应用程序中使用,Tomcat的数据源使用的就是DBCP。 (2)c3p0 c3p0是一个开放源代码的JDBC连接池,它在lib目录中与Hibernate一起发布,包括了实现jdbc 阅读全文
posted @ 2019-10-18 11:30 燕十三丶 阅读(861) 评论(0) 推荐(0)
摘要:当对象对当前使用这个对象的应用程序变得不可触及的时候,这个对象就可以被回收了。垃圾回收不会发生在永久代,如果永久代满了或者是超过了临界值,会触发完全垃圾回收(Full GC)。如果你仔细查看垃圾收集器的输出信息,就会发现永久代也是被回收的。这就是为什么正确的永久代大小对避免Full GC是非常重要的 阅读全文
posted @ 2019-10-17 11:30 燕十三丶 阅读(4542) 评论(0) 推荐(0)
摘要:v java多线程面试题选择题大全含答案 java多线程面试题选择题大全含答案 1.下面程序的运行结果()(选择一项)public static void main(String[] args) {Thread t=new Thread(){public void run(){pong();}};t 阅读全文
posted @ 2019-10-17 11:19 燕十三丶 阅读(4315) 评论(0) 推荐(0)
摘要:1、什么是线程?线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。程序员可以通过它进行多处理器编程,你可以使用多线程对运算密集型任务提速。比如,如果一个线程完成一个任务要100毫秒,那么用十个线程完成改任务只需10毫秒。2、线程和进程有什么区别?线程是进程的子集, 阅读全文
posted @ 2019-10-17 11:09 燕十三丶 阅读(518) 评论(0) 推荐(0)
摘要:1、多线程有什么用? (1)发挥多核CPU的优势 随着工业的进步,现在的笔记本、台式机乃至商用的应用服务器至少也都是双核的,4核、8核甚至16核的也都不少见,如果是单线程的程序,那么在双核CPU上就浪费了50%,在4核CPU上就浪费了75%。单核CPU上所谓的"多线程"那是假的多线程,同一时间处理器 阅读全文
posted @ 2019-10-17 11:06 燕十三丶 阅读(297) 评论(0) 推荐(0)
摘要:JVM的堆是运行时数据区,所有类的实例和数组都是在堆上分配内存。它在JVM启动的时候被创建。对象所占的堆内存是由自动内存管理系统也就是垃圾收集器回收。 堆内存是由存活和死亡的对象组成的。存活的对象是应用可以访问的,不会被垃圾回收。死亡的对象是应用不可访问尚且还没有被垃圾收集器回收掉的对象。一直到垃圾 阅读全文
posted @ 2019-10-17 11:03 燕十三丶 阅读(1170) 评论(0) 推荐(0)
摘要:基本类型转换分为自动转换和强制转换。 自动转换规则:容量小的数据类型可以自动转换成容量大的数据类型,也可 以说低级自动向高级转换。这儿的容量指的不是字节数,而是指类型表述的范围。 强制转换规则:高级变为低级需要强制转换。 如何转换: (1)赋值运算符“=”右边的转换,先自动转换成表达式中级别最高的数 阅读全文
posted @ 2019-10-17 11:01 燕十三丶 阅读(2106) 评论(0) 推荐(0)
摘要:1)使用场合 在编译时根本无法知道该对象或类可能属于哪些类,程序只依靠运行时信息来发现该对象和类的真实信息。 2)主要作用 通过反射可以使程序代码访问装载到JVM 中的类的内部信息,获取已装载类的属性信息,获取已装载类的方法,获取已装载类的构造方法信息 3)反射的优点 反射提高了Java程序的灵活性 阅读全文
posted @ 2019-10-17 10:55 燕十三丶 阅读(6895) 评论(0) 推荐(2)
摘要:Java反射技术主要实现类有哪些,作用分别是什么? 在JDK中,主要由以下类来实现Java反射机制,这些类都位于java.lang.reflect包中 1)Class类:代表一个类 2)Field 类:代表类的成员变量(属性) 3)Method类:代表类的成员方法 4)Constructor 类:代 阅读全文
posted @ 2019-10-17 10:53 燕十三丶 阅读(2013) 评论(0) 推荐(0)
摘要:1) start方法: 用start方法来启动线程,真正实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行下面的代码。通过调用Thread类的start()方法来启动一个线程,这时此线程处于就绪(可运行)状态,并没有运行,一旦得到cpu时间片,就开始执行run()方法,这里方法ru 阅读全文
posted @ 2019-10-17 10:52 燕十三丶 阅读(2552) 评论(0) 推荐(0)
摘要:OutOf MemoryError这种错误可以细分为多种不同的错误,每种错误都有自身的原因和解决办法,如下所示: java.lang.OutOfMemoryError: Java heap space 错误原因:此OOM是由于JVM中heap的最大值不满足需要。 解决方法:1) 调高heap的最大值 阅读全文
posted @ 2019-10-17 10:49 燕十三丶 阅读(709) 评论(0) 推荐(0)
摘要: 阅读全文
posted @ 2019-10-17 10:46 燕十三丶 阅读(100) 评论(0) 推荐(0)
摘要: 阅读全文
posted @ 2019-10-17 10:40 燕十三丶 阅读(73) 评论(0) 推荐(0)
摘要:(1)尽量指定类、方法的final修饰符 带有final修饰符的类是不可派生的。在Java核心API中,有许多应用final的例子,例如java.lang.String,整个类都是final的。为类指定final修饰符可以让类不可以被继承,为方法指定final修饰符可以让方法不可以被重写。如果指定了 阅读全文
posted @ 2019-10-17 09:34 燕十三丶 阅读(554) 评论(0) 推荐(0)
摘要:当新对象被创建的时候,构造函数会被调用。每一个类都有构造函数。在程序员没有给类提供构造函数的情况下,Java编译器会为这个类创建一个默认的构造函数。 Java中构造函数重载和方法重载很相似。可以为一个类创建多个构造函数。每一个构造函数必须有它自己唯一的参数列表。 Java不支持像C++那样的复制构造 阅读全文
posted @ 2019-10-16 17:57 燕十三丶 阅读(1019) 评论(0) 推荐(0)

AmazingCounters.com