![](https://img-blog.csdnimg.cn/34a702e9219f4c7aa0f76502a08ae5ef.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java基础
文章平均质量分 83
Java
dreambyday
我大抵是病了,
横竖都写不出一行代码。
站起身来点起了一支烟,
这悲伤没有由来。
默默然跑到楼下买了根82年老冰棍,
一口是我吃的,
另一口也是我吃的,
大抵又是到了摸鱼的时刻了吧。
展开
-
JDK8 HashMap源码
1 HashMap1.1 常量public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable { // 一个随机值,用于序列化 private static final long serialVersionUID = 362498820763181265L; /** * 无参初始化时HashMap的原创 2022-03-13 13:46:51 · 596 阅读 · 0 评论 -
synchronized底层原理
锁优点缺点适用场景偏向锁加解锁无额外消耗,单线程下加锁基本无消耗线程竞争产生额外的锁撤销成本单线程访问同步代码块轻量级锁竞争线程不阻塞,基于cas自旋在用户态实现长时间锁自旋获取不到锁还是会锁膨胀,并且消耗CPU同步块执行速度快、锁竞争不激烈重量级锁锁不自旋,不消耗cpu线程阻塞,用户态转内核态效率低追求吞吐量、竞争激烈、同步代码块执行时间长。原创 2023-01-29 00:24:56 · 4946 阅读 · 2 评论 -
CGLIB和JDK动态代理
工作方式不同:JDK动态代理:生成了一个匿名类,这个匿名类实现了和被代理类所实现的接口,并且继承了Proxy类。匿名类的每个方法名称跟被代理类相同,调用了实现invocationHandler接口的拦截器的invoke方法,因此所有的增强逻辑都在invoke方法里通过反射实现的。CGLIB动态代理利用了ASM框架,对代理类的class字节码修改生成子类,并覆盖增强其方法实现。限制条件不同:JDK动态代理只能对实现了接口的类生成代理CGLIB对类生成子类进行代理,可以无接口,但是对于final原创 2022-02-07 20:58:43 · 332 阅读 · 0 评论 -
Java访问控制修饰符protected与包的关系
1. 前言一句话:对同一包内的类和所有子类可见。它的意思是可见需要满足两个条件之一:调用 protected方法所在类 和 被调用protected方法所在类在相同包下。调用 protected方法所在类 是 被调用protected方法所在类的子类需要注意的点是方法所在类。比如子类未重写下面将通过IDEA的提示来快速分辨各种情况是否可见。2. 准备2.1 被测试类看做父亲、儿子、侄子父亲儿子在一个包,侄子在另一个包。ChildOne、ChildTwo、NephewOne、Neph原创 2021-12-24 00:17:49 · 497 阅读 · 0 评论 -
《Java并发编程实战》笔记(未完)
1 第一章 简介2 第二章 线程安全性本章介绍如何通过同步来避免多个线程在同一时刻访问相同的数据2.1 什么是线程安全当多个线程访问某个方法时,不论线程按照什么顺序交替执行,这个方法的最终结果都是正确的,可以说这个方法是线程安全的。2.2 保证线程安全有哪些方法synchronized关键字Lock显式锁volatile类型变量原子变量无状态对象一定是线程安全的2.3 竞态条件当弍计算的正确性取决于多个线程的交替执行时序时,就会发生竞态条件。如:先检查后执行2.4 重原创 2021-10-05 22:44:47 · 125 阅读 · 0 评论 -
Java8新特性整理
文章目录1 第一章 为什么关心Java2 第二章 行为参数化3 第三章 Lambda表达式3.1 基本语法3.2 函数式接口和函数描述符3.2.1 可以使用@FunctionalInterface标注函数式接口3.2.2 其中,java8在java.util.function引入了几个函数式接口3.2.3 为了装箱、拆箱带来的额外的版本3.3 环绕执行模式3.3.1 定义接口3.3.2 定义函数3.3.3 将行为传入参数3.3.4 异常3.3.5 类型检查3.3.6 类型判断3.3原创 2021-01-11 13:02:59 · 298 阅读 · 0 评论