随笔分类 - Java基础
摘要:1、什么是序列化 把对象转换为字节流的过程。 2、什么是反序列化 把字节流恢复为对象的过程。 3、序列化的作用 1) 把对象的字节流永久地保存到硬盘上,持久化对象; 2) 在网络上传送对象的字节流,传输数据。 4、JDK中的序列化API 1) ObjectOutputStream,writeObje
阅读全文
摘要:1、i++。public static void main(String[] args) { int i = 10; i = i++; // 输出结果为: i = 10 System.out.println("i = " + i); /* i = i++;这条语句相当于以下三条语句: 1) int
阅读全文
摘要:1、Java集合分类 主要分为Set、Queue、List和Map。 https://www.cnblogs.com/fankongkong/p/6382825.html https://www.jianshu.com/p/939b8a672070 1)说说常见的集合有哪些吧? 答:Map接口和Co
阅读全文
摘要:1、Lambda Lambda的语法目前仅对于只有一个抽象方法的接口。 在Lambda项目中,早期称为SAM类型(SAM = single abstract method 单一抽象方法)。在jdk1.8中,叫函数接口(functional interface)。比如Runnable,Callable
阅读全文
摘要:1、背景 生产者生产数据到缓冲区中,消费者从缓冲区中取数据。 如果缓冲区已经满了,则生产者线程阻塞; 如果缓冲区为空,那么消费者线程阻塞。 2、方式一:synchronized、wait和notify 1 package producerConsumer; 2 //wait 和 notify 3 p
阅读全文
摘要:1、使用线程池的好处 a、降低资源消耗。通过重复利用已创建的线程降低线程创建和摧毁造成的消耗; b、提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行; c、提高线程的可管理性。线程是稀缺资源,如果无限制地创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以及进行统一分配、
阅读全文
摘要:1、背景 Java从JDK1.5开始提供了java.util.concurrent.atomic包,这个包中的原子操作类提供了一种用法简单,性能高效,线程安全地更新一个变量的方式。 Atomic包里一共提供了13个类,属于4种类型的原子更新方式,分别是原子更新基本类型,原子更新数组,原子更新引用和原
阅读全文
摘要:1、ConcurrentLinkedQueue 在并发编程中,有时候需要使用线程安全的队列。 如果要实现一个线程安全的队列有两种方式:一种是使用阻塞算法,另一种是非阻塞算法。 使用阻塞算法的队列可以用一个锁(入队和出队用同一把锁)或两个锁(入队和出队用不同的锁)等方式来实现。 非阻塞算法的实现方式可
阅读全文
摘要:1、Lock接口 在Lock接口出现之前,Java程序是靠synchronized关键字实现锁功能的,在Java SE 5 后,并发包中新增了Lock接口(以及相关实现类)用来实现锁功能,它提供了与synchronized类似的同步功能,只是在使用时需要显示地获取和释放锁。虽然缺少了隐式获取释放锁的
阅读全文
摘要:1、定义 线程是现代操作系统调用的最小单位,也叫轻量级进程,在一个进程里可以创建多个线程,这些线程都拥有各自的计数器、堆栈和局部变量等属性,并且能够访问共享的内存变量。 2、一个普通的java程序中包含哪些线程 下面是在jdk1.8.0_60环境下的代码输出。 输出结果: 3、优先级 在Java线程
阅读全文
摘要:(m&1) == 0 是偶数 (m&1) == 1 是奇数
阅读全文
摘要:Serial 进行垃圾收集时,必须暂停其他所有的工作进程,直到它收集结束。是一个单线程收集器。 Stop the world。 新生代收集器。 手工设置新生代的大小:-Xmn Eden与Survivor区的比例:-XX:SurvivorRatio 晋升老年代对象年龄:-XX:PretenureSiz
阅读全文
摘要:1、 标记-清除算法 (Mark-Sweep) 分为两个阶段: 1、首先标记出所有需要回收的对象; 2、在标记完成后统一回收所有被标记的对象。 缺点: 1、效率问题:标记和清除两个过程效率都不高; 2、空间问题:标记清除之后会产生大量不连续的内存碎片,空间碎片太多可能会导致以后在程序运行过程中需要分
阅读全文
摘要:回收的类必须满足下面三个条件才能算是“无用的类” 1、该类所有的实例都已经被回收,也就是说Java堆中不存在该类的任何实例; 2、加载该类的ClassLoader已经被回收; 3、该类对应的java.lang.Class对象没有在任何地方被引用,无法在任何地方通过反射访问该类的方法。
阅读全文
摘要:1、一个进程就是一个正在运行的应用程序的实例,程序段+相关的数据段+PCB构成了进程实体。 2、进程由两个部分组成: (1)操作系统来管理这个进程的内核对象; (2)这个进程拥有的地址空间。 3、线程除了能够访问进程的资源外,每个进程还拥有自己的栈。 4、引入线程的好处:由于线程比进程更小,基本上不
阅读全文
摘要:1、动态绑定是指在执行期间判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。 2、在将超类转换为子类之前,应该使用instanceof进行检查。 3、包含一个或者多个抽象方法的类本身必须被声明为抽象的。 4、能够分析类能力的程序被称为反射(reflective)。 5、clone方法是Ob
阅读全文
摘要:public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable {
阅读全文
摘要:1、多态的定义:指允许不同类的对象,对同一消息作出响应; 即同一消息可以根据发送对象的不同采用多种不同的行为方式; 2、多态的实现技术:动态绑定; 指在执行期间判断所引用对象的实际类型,根据其实际的类型调用 其相应的方法; 3、多态的作用:消除类型之间的耦合关系; 比如:按下F1键这个动作,在wor
阅读全文