随笔分类 - Java基础
摘要:1,jdk1.7底层采用entry数组+链表的数据结构,而1.8采用node数组+链表/红黑树的数据结构。 2,jdk1.7的HashMap插入新值时使用头插法,1.8使用尾插法。 使用头插法比较快,但在多线程扩容时会引起倒序和闭环的问题。所以1.8就采用了尾插法。 3,扩容后新表中的索引位置计算方
阅读全文
摘要:深拷贝和浅拷贝: 浅拷贝只是拷贝对象的引用地址,两个引用地址指向的对象还是同一个,修改其中一个,另一个也会随之改变,因为这个引用地址指向的对象压根是同一个而深拷贝是将对象和值都拷贝过来,形成一个新的对象,两者之间是独立的两个对象。在Java中,深拷贝又有两种实现形式:深克隆和浅克隆。 深克隆和浅克隆
阅读全文
摘要:问题引入: 谈谈JVM垃圾回收机制 怎样判断一个对象是否是垃圾? 判断是否是垃圾有两种方式,(1)引用计数法,无法解决循环引用问题,Java不使用,Python使用 (2)可达性分析,以GC Root为根进行可达性遍历,无法被遍历到的判定为垃圾 ps:什么是GC Root根?虚拟机栈中的局部变量表,
阅读全文
摘要:No.1 强引用 这个不用多说,就是最常见的对象引用。在GC时,只要不死无论如何都不会被回收,即使报OOM。 No.2 弱引用(WeakReference) 只要发生GC就被回收,不管是否存活。同样用于内存敏感的程序。WeakHashMap类中使用,在ThreadLocal类中有通过弱引用处理垃圾回
阅读全文
摘要:本文首发于个人博客站,因没有上线,数据保存也不安全,就当在此做一个备份。 在昨天写博客的时候,发现了几个非常令人不适的问题: 1,长时间建立会话后,登陆信息会失效(昨天花很长时间写一篇博客,等提交时登陆信息竟然失效了) 2,客户端关闭后,登陆信息失效,需要重新登陆 对于自己的个人博客网站这样一个只有
阅读全文
摘要:/** * 内部类有四种 * 1,静态内部类 * 2,成员内部类 * 3,局部内部类 * 4,匿名内部类 */ 1 /** 2 * 内部类有四种 3 * 1,静态内部类 4 * 2,成员内部类 5 * 3,局部内部类 6 * 4,匿名内部类 7 */ 8 9 public class TestInn
阅读全文
摘要:最简单的,不加任何修饰的字节输入流 用数组做缓冲容器 字节文件输出流: 文本文件字符输入流 文本文件字符输出流 字节数组输入流 字节数组输出流: 由文件转换为字节数组流,再由字节数组流转换为文件 装饰缓冲流BufferedInputStream * Buffered作为装饰流只需套在节点流外面即可,
阅读全文
摘要:## 数据库连接池 1. 概念:其实就是一个容器(集合),存放数据库连接的容器。 当系统初始化好后,容器被创建,容器中会申请一些连接对象,当用户来访问数据库时,从容器中获取连接对象,用户访问完之后,会将连接对象归还给容器。 2. 好处: 1. 节约资源 2. 用户访问高效 3. 实现: 1. 标准接
阅读全文
摘要:JDK内置预定义的注解: * JDK中预定义的注解 * @Override :检测该方法是否为父类中方法的重写 * @Deprecated: 该注解标注的内容已过时 * @SupperessWarnings: 压制警告 自定义注解: * 自定义注解 * 格式 * 元注解 * public @inte
阅读全文
摘要:首先新建一个用于测试反射机制的类Student类,包含public,static的属性,构造器和方法: Student.java 获取类的Class对象的方式: 获取对象的构造方法进而构造对象: 获取成员变量,调用空构造器再给成员变量赋值 获取成员方法,调用成员方法: 应用练习 跳过泛型约束,向带I
阅读全文
摘要:lambda表达式和方法引用是孪生兄弟,方法引用的使用在很多情况下简化了lambda表达式。 方法引用符 :: 由lambda表达式简化得到方法引用,体验方法引用: 引用类方法: 引用对象的实例方法: 引用类的实例方法: 引用构造器:
阅读全文
摘要:接口组成在jdk8.0后不仅只有常量public static finall和抽象方法public abstract两种,在jdk8.0加入了默认方法和静待方法。jdk9.0加入了私有方法。 接口举例 MyInterface.java 实现类和测试类举例 TestInterface.java
阅读全文
摘要:* 创建服务器 * 1,指定端口,使用SeverSocket创建服务器 * 2,阻塞式等待连接accept() * 3,操作:输入输出操作 * 4,释放资源 创建客户端 * 1,创建连接:使用Socket类创建客户端+服务的地址和端口 * 2,获取流,IO流操作 * 3,释放资源 应用:模拟登陆,双
阅读全文
摘要:udp接收端创建步骤 * 1.使用DatagramSocket指定端口,创建接收端 * 2.准备容器,封装成DatagramPacket包裹 * 3,阻塞式接收包裹receive(DatagramPacket) * 4,分析数据 * 5.释放资源 * udp发送端创建步骤 * 1.使用Datagra
阅读全文
摘要:任务定时调度,借助Timer类和TimerTask类(可参照API文档使用)
阅读全文
摘要:线程协作---生产者消费者模式之“信号灯”实现 ---借助flag标志位
模拟表演者和观看者,表演了才能观看
阅读全文
摘要:线程协作:生产者消费者模式实现方式之“管程法” --- 借助一个缓冲区
模拟买馒头,生产出来了才能卖
阅读全文
摘要:发生:当线程中锁中套锁,两个线程在运行时都需要对方所占用的锁而不释放自己的锁,这样就造成了线程的停滞。
避免:不要再在同一代码块中同时持有多个对象的锁,避免锁中上锁
阅读全文
摘要:多线程的并发执行可以提高程序运行的效率,但当多个线程去处理同一个资源时,就容易产生一些安全问题。如模拟抢票程序,如果不加线程安全处理的话,就很容易多个线程抢到同一张票,或者出现余票为负数的情况。 synchronized关键字,就是用来控制线程同步的,保证我们的线程在多线程环境下,synchroni
阅读全文
摘要:线程状态有新生状态,就绪状态,运行状态,阻塞状态,死亡状态 1. 新建(NEW):新创建了一个线程对象。 2. 可运行(RUNNABLE):线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取cpu 的使用权 。 3.
阅读全文

浙公网安备 33010602011771号