进阶Java
文章平均质量分 73
QSHigh
这个作者很懒,什么都没留下…
展开
-
关于代码如何重构的问题
满足基本SOLID原则1.单一职责原则一个类只负责完成一个职责或者功能,不要存在多于一种导致类变更的原因。单一职责原则通过避免设计大而全的类,避免将不相关的功能耦合在一起,来提高类的内聚性。同时,类职责单一,类依赖的和被依赖的其他类也会变少,减少了代码的耦合性,以此来实现代码的高内聚、松耦合。但是,如果拆分得过细,实际上会适得其反,反倒会降低内聚性,也会影响代码的可维护性。2.开放-关闭原则添加一个新的功能,应该是通过在已有代码基础上扩展代码(新增模块、类、方法、属性等),而非修改已有代码(修改原创 2021-09-08 09:27:51 · 121 阅读 · 0 评论 -
Spring如何解决循环依赖的
采用三级缓存机制原创 2021-04-06 21:44:03 · 112 阅读 · 0 评论 -
关于HashMap在多线程中不安全引起死锁问题
通过看源码,可以得出死锁发生在扩容数组时复制链表的时候,也就是resize的transfer方法上/** * * 往表中添加元素,如果插入元素之后,表长度不够,便会调用resize方法扩容 */ void addEntry(int hash, K key, V value, int bucketIndex) { Entry<K,V> e = table[bucketIndex]; table[bucketIndex] = new.原创 2021-04-01 17:31:18 · 707 阅读 · 0 评论 -
JVM
JVMJVM分三部分:类装载子系统字节码执行引擎执行字节码文件,并且修改程序计数器,推动程序运行,还会启动GC垃圾收集线程GCGC回收算法是可达性分析算法,他会从GC ROOT对象向下查找引用的对象,直到找不到引用的对象,在最后一个对象和ROOT之间的对象都是非垃圾对象在第一次minor GC回收后,垃圾对象会在eden区被回收,非垃圾对象会被放进S0区,此时非垃圾对象就是存活者当eden快满的时候,再次触发GC回收,此时重复第一次GC回收操作,s0中的非垃圾对象会被放进s1,垃原创 2021-03-26 20:48:49 · 1107 阅读 · 0 评论 -
JUC并发
什么是JUC线程和进程进程:一个程序,QQ.exe Music.exe 程序的集合;一个进程往往可以包含多个线程,至少包含一个!Java默认有几个线程? 2 个 mian、GC线程:开了一个进程 Typora,写字,自动保存(线程负责的)对于Java而言:Thread、Runnable、Callable线程有几个状态:public enum State { // 新生 NEW, // 运行 RUNNABLE, // 阻塞 BLOCKED, // 等待,死死地等 WAIT原创 2021-03-21 23:21:40 · 272 阅读 · 0 评论 -
Java代理模式
Java代理模式1.代理模式代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能这里使用到编程中的一个思想:不要随意去修改别人已经写好的代码或者方法,如果需修改,可以通过代理的方式来扩展该方法代理模式的关键点是:代理对象是对目标对象的扩展,并会调用目标对象.静态代理模式package thread;//接口interface Marry { void原创 2021-03-06 14:16:54 · 81 阅读 · 0 评论 -
Java注解和反射
Java注解和反射注解Annotation是从JDK5.0开始引入的新技术.Annotation的作用:不是程序本身,可以对程序作出解释.(这一点和注释(comment)没什么区别)可以被其他程序(比如:编译器等)读取.Annotation的格式︰注解是以"@注释名"在代码中存在的,还可以添加一些参数值﹐例如:@SuppressWarnings(value=“unchecked”).Annotation在哪里使用:可以附加在package , class , method , field等原创 2021-03-08 23:45:37 · 163 阅读 · 0 评论