自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 JDK动态代理与CGLIB动态代理的区别

简介:在Spring中的AOP是依靠动态代理来实现切面编程的.而这两者又是有区别的.区别:JDK是基于反射机制,生成一个实现代理接口的匿名类,然后重写方法,实现方法的增强.它生成类的速度很快,但是运行时因为是基于反射,调用后续的类操作会很慢.而且他是只能针对接口编程的.CGLIB是基于继承机制,继承被代理类,所以方法不要声明为final,然后重写父类方法达到增强了类的作用.它底层是基于asm第三方框架,是对代理对象类的class文件加载进来,通过修改其字节码生成子类来处理.生.

2020-08-10 19:11:55 243

原创 干货--介绍一款java工具类库Hutool,好用!

干货--介绍一款java工具类库Hutool,好用!简介Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”。Hutool中的工具方法来自于每个用户的精雕细琢,它涵盖了Java开发底层代码中的方方面面,它既是大型项目开发中解决小问题的利器,也是小型项目中的效率担当;Hutool是项目中“util”包友好的替代,它节省了开发人员对项目中公用类和公用工具方法的封装时间,使开发专注于业

2020-08-07 19:29:20 353

原创 JAVA核心知识整理

这里分享一份大佬得java核心知识整理。由于细节内容实在太多啦,所以只把前三个知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!1.JVM2.Java集合3.Java多线程并发……4.Java基础5.Spring原理6.微服务7.Neety与RPC8.网络9.日志10.Zookeeper11.Kafka12.RabbitMQ13.Hbase14.MongoDB15.Cassandra16.设计模式17.负载均衡18.数据库19.一致性算法20.Ja

2020-07-20 23:04:48 167

原创 谈谈ConcurrentHashMap与HashMap

HashMap与1.7相比的重大变化:数据结构:取消了segment,直接用table保存数据,锁的粒度更小,减少并发冲突的概率。时间复杂度:Table+链表和红黑树的形式,纯链表的形式时间复杂度O(n),红黑树的形式时间复杂度O(logn),性能提升大。链表转红黑树,必要条件:个数超过了8个。当链表个数小于等于6的时候,从红黑树转化为链表。线程并发安全机制:从1.7的ReentrantLock+segment+HashEntry到CAS+synchronize+HashEntry+红黑树锁的粒度

2020-07-13 13:13:24 180

转载 java并发(五)java中的各种锁详细介绍

Java提供了种类丰富的锁,每种锁因其特性的不同,在适当的场景下能够展现出非常高的效率。本文旨在对锁相关源码(本文中的源码来自JDK 8)、使用场景进行举例,为读者介绍主流锁的知识点,以及不同的锁的适用场景。Java中往往是按照是否含有某一特性来定义锁,我们通过特性将锁进行分组归类,再使用对比的方式进行介绍,帮助大家更快捷的理解相关知识。下面给出本文内容的总体分类目录:1. 乐观锁 VS 悲...

2020-04-07 11:57:40 117

转载 java并发(四)终止线程的三种方式

java并发(四)终止线程的四种方式线程属于一次性消耗品,在执行完run()方法之后线程便会正常结束了,线程结束后便会销毁,不能再次start,只能重新建立新的线程对象,但有时run()方法是永远不会结束的。例如在程序中使用线程进行Socket监听请求,或是其他的需要循环处理的任务。在这种情况下,一般是将这些任务放在一个循环中,如while循环。当需要结束线程时,如何退出线程呢?有三种方...

2020-04-05 11:11:35 316

原创 java并发(三)之线程的生命周期(状态)

java并发(三)之线程的生命周期(状态)线程在启动后不是一开始就处于执行状态,也不会一直处于一个状态,线程拥有一个自己的生命周期,分为五种状态,它要经过 新建(New)、就绪(Runnable)、运行(Running)、阻塞(Blocked)和死亡(Dead)5 种状态。新建状态(New)当创建一个线程之后,JVM为其分配内存,并初始化它的成员变量的值,当还没有调用start()方...

2020-04-04 10:53:52 64

原创 java并发(一)之四种创建线程的方法

java并发(一)之四种创建线程的方法一、继承Thread1.继承Thread,然后重写它的run()方法。2.线程唯一的启动方法就是通过Thread的start()方法。**start()是一个native方法,**使用它将执行run()方法。示例:public class Thread1 extends Thread{ @Override public void run() {...

2020-04-04 09:37:10 69

原创 java并发(二)之五种线程池的用法和特征

五种线程池的使用:线程池的好处:a. 重用存在的线程,减少对象创建、消亡的开销,性能佳。b. 可有效控制最大并发线程数,提高系统资源的使用率,同时避免过多资源竞争,避免堵塞。c. 提供定时执行、定期执行、单线程、并发数控制等功能。newFixedThreadPool:创建固定线程数量的,适用于负载均衡的服务器,使用了无界队列特点:线程池中的线程处于一定的量,可以很好的控制线程的...

2020-04-02 12:41:48 148

原创 JavaSE复习总结

一、基本知识1.java作为面向对象语言的优势:易扩展、易复用、易维护。因为面向对象有封装、继承、多态性的特性,所以可以设计出低耦合的系统,使系统更加灵活、更易于维护。但是面向对象的性能比较低(相对面向过程而言)。  Java性能差的主要原因并不是因为它是面向对象语言,而是Java是半编译语言,最终的执行代码并不是可以直接被CPU执行的二进制机械码面向对象和面向过程的区别2、java语...

2020-02-29 21:42:46 414

空空如也

空空如也

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

TA关注的人

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