自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(9)
  • 收藏
  • 关注

原创 类加载

类加载的时机 (1)遇到new, getstatic, putstatic或invokestatic这4条字节码指令时,如果类没有进行初始化,则需要先触发初始化。 这4条指令的最常见场景是:使用new关键字实例化对象、读取一个类的静态字段(非final)、设置一个类的静态字段(非final) 、调用一个类的静态方法。 上述非final的原因是final static修饰的字段在类加载的准备阶段会完成初始化。 (2)使用refl...

2020-05-28 20:20:32 109

原创 java---垃圾收集算法

标记---清除算法(Mark-Sweep) 算法:首先标记出所有需要回收的对象,在标记完成后,统一回收。 标记的过程是判断对象生存还是死亡,算法为引用计数算法(不用)和可达性分析算法。 不足:(1)效率问题,标记和清除的效率都不高。 (2)空间问题,标记清除之后,会产生大量不连续的内存碎片,导致以后程序运行中,需要分配大量对象时,无法找到足够的内存空间,而不得不提前触发一次GC; 标记---整理算法(Mark-Compact) 算法:首先标记出需要回收的对象,然后将存活对象...

2020-05-28 16:17:39 106

原创 关于synchronized的理解

(1) 原理:synchronized关键字在经过编译之后,会在同步块的前后,分别形成monitorenter和monitorexit这两个字节码指令,这两个字节码指令都需要一个reference类型的参数,来指定要锁定和解锁的对象。 (2)使用:synchronized加锁分为对象锁、类锁、同步块;锁定的对象分别为对象,类,同步块内的参数; (3)synchronized锁是非公平锁,也是重入锁; (4)synchronized关键字是java里面的重量级锁,因为java线程是映射到操作系统的原..

2020-05-28 15:24:19 169

原创 wait、notify、notifyAll和sleep的区别与联系;

线程A获取对象objectA的锁,调用对象objectA的wait()方法,从而放弃了锁进入等待队列,线程A状态从运行中改为等待状态(备注:因为别的线程要notify唤醒,要获取锁,所以wait要释放锁); 线程B获取了对象objectA的锁,调用对象objectA的notify()方法,会唤醒等待队列的第一个线程A,等线程B的objectA同步块执行完后,此时大家会竞争CPU时间片,线程A此刻由等待状态转为阻塞状态,若线程A获取到CPU,则转为运行状态,且从wait()方法中返回; 若...

2020-05-28 11:53:41 280

原创 kafka

/** * 异步发送 * * @param topic 主题 * @param key key * @param value 消息内容 * * @throws WebsocketException 入参不合法 */ public void doProducer(KafkaProducerTopics topic, String key, String v...

2020-06-19 10:19:29 103

原创 HashMap解析

HashMap解析: 1.8之前 数组+链表; 1.8之后 数组+链表+红黑树; 初始化装载因子为0.75,初始容量为16,最大容量2的30次方; threshold:阈值, 扩容机制 初始容量16*0.75=12,桶的容量为16,记录大于12时即第一次扩容为32; 32*0.75=24,桶的容量为32,记录大于24时第二次扩容为64; 64*0.75=48 ,桶的容量为64,记录大于...

2020-05-30 20:23:55 163

原创 jvm调优参数

堆 -Xms:520M 初始堆内存 -Xmx:1024M 最大堆内存 -Xmn:256M 新生代大小 -XX:NewSize=256M 设置新生代初始大小 -XX:MaxNewSize=256M 设置新生代最大值内存 -XX:PermSize=256M 设置永久代初始值大小 -XX:MaxPermSize=256M 设置永久最大值大小 -XX:NewRatio=4 设置老年代和新生代的比值。表示老年代比新生代为4:1 -XX:SurvivorRatio=8 设置新生代中Survivor区和eden区的比值

2020-05-28 20:49:34 169

原创 动态代理

基于JDK的动态代理 (1)要求要被代理的类必须有接口;如下: (2)要被代理的类 (3)代理类实现InvocationHandler接口,重写invoke方法;还要求代理类持有被代理的类; (4)测试类Main

2020-05-28 17:13:09 103

原创 java向上与向下转型

public class Dad { public void say(){ System.out.println("i am dad");         }      } public class Son extends Dad { public void say(){ System.out.println("i am son");        }     } public

2017-12-22 16:48:03 185

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除