java
时鸽儿
这个作者很懒,什么都没留下…
展开
-
java实现多个线程同步(固定顺序/交替运行)
简介 在实际多线程运用时,我们可能需要多个线程之间同步运行,如线程1线运行完,线程2再运行 线程固定顺序运行 两个线程保证: 2线程先打印b 1线程再打印a wait/notify实现 设置一个Boolean变量,如果为假,让其中一个线程自旋阻塞 /** * 两个线程保证: * 2线程先打印b * 1线程再打印a * * wait/notify实现 */ public class ...原创 2020-04-14 00:05:02 · 1495 阅读 · 0 评论 -
常量池、运行时常量池、stringTable
三者关系 1、常量池:俗称静态常量池,存在于*.class文件中,就是一张表,虚拟机指令根据这张表找到要执行的类名、类方法、参数类型、字面量等信息 常量池: 虚拟机指令: 2、运行时常量池:类被加载时,其常量池信息会被放入运行时常量池,并把里面的符号地址变为真实地址。 3、StringTable 串池:运行时常量池的 一部分,储存字符串常量 StringTable 特性 1、stringTab...原创 2020-03-31 21:57:39 · 1430 阅读 · 3 评论 -
jdk动态代理
简介 动态代理是对静态代理的一种优化,静态代理当需要代理的接口增加时,代理类需要实现多个接口,导致代码冗余不符合开闭原则,jdk中,使用 1、Proxy:提供静态方法newProxyInstance()创建动态代理的class和实例(只管生成对象) 2、InvocationHandler:invoke()方法增强服务(只管对象需要做的事) 实现动态代理 代码实现 接口类: 1、AFactory /...原创 2020-03-10 11:40:59 · 124 阅读 · 0 评论 -
Hashmap在jdk1.7和jdk1.8的区别
底层结构实现 搞清楚HashMap,首先需要知道HashMap是什么,即它的存储结构-字段;其次弄明白它能干什么,即它的功能实现-方法。下面我们针对这两个方面详细展开讲解。 储存结构-字段 从结构实现来讲,HashMap是数组+链表+红黑树(JDK1.8增加了红黑树部分)实现的,如下如所示。 问题来了:数据底层具体存储的是什么?这样的存储方式有什么优点呢? (1) 从源码可知,HashMap类中...原创 2019-10-17 18:25:31 · 684 阅读 · 0 评论 -
Objects(解决变量为null时空指针异常)
jdk 1.7 Objects(解决变量为null时空指针异常) 针对 空指针 引起的各种问题,Java 7增加Objects工具类 ,如你不能确定一个变量是否为null,如果贸然使用该变量的toString()方法,则会引发NullPointerExcepion异常,如果使用Objects的toString(),则不会引发异常,当对象为null时,程序回返回“null”字符串。 使用示例 pub...原创 2019-07-16 11:27:22 · 1654 阅读 · 0 评论 -
Java BigDecimal类(解决精确计算精度丢失问题)
float 、double进度丢失问题 public calss DoubleTest{ public static void main (String args[]){ System.out.pritnln("0.05+0.01="+(0.05+0.01)); System.out.pritnln("4.015*100="+(4.015*100)); } } 输出结果 0.05+...原创 2019-07-17 12:24:48 · 1582 阅读 · 0 评论 -
JAVA面试基础
1. java面向对象(一大堆知识点) 参考:https://www.cnblogs.com/xugf/p/8475931.html 面向对象的程序核心由对象组成,每个对象包含着对用户公开的功能和隐藏的功能。 面向对象由以下特点: (1)面向对象是一种常见的思想,比较符合人们的思考习惯; (2)面向对象可以将复杂的业务逻辑简单化,增强代码复用性; (3)面向对象具有抽象、封装、继承、多态等特性。 ...原创 2019-10-06 11:49:34 · 204 阅读 · 0 评论