java基础
文章平均质量分 93
wb_snail
这个作者很懒,什么都没留下…
展开
-
泛型,好像没那么简单
泛型广泛用于各类框架中,日常开发、或是源码阅读时,泛型的的曝光率都很高,搞懂泛型很有必要。泛型的基础使用场景比较简单,但在复杂场景下往往并不容易理解本文首先介绍了java泛型基础概念,随后列举了泛型的一些复杂使用场景,最后介绍了spring中强大易用的泛型API,希望帮你更深入的理解泛型,也可以在日常开发工作时更好的利用泛型进行通用设计原创 2022-01-15 22:04:08 · 510 阅读 · 0 评论 -
谈谈java中的异常处理规范
java中的异常分为两大块,分别是error,checkedException,uncheckedException三者设计理念不一样,体现了java设计者对不同异常情况的分类error表示发生了意料之外的错误,大部分情况下,会使得程序处于不可恢复的状态,不需要也不应该被捕获,比如OutOfMemoryError StackOverFlowError NoClassDefFoundError;这种异常发生后,只能乖乖的查问题,该改配置改配置,该改代码改代码了checkedException,un原创 2020-06-04 22:24:06 · 469 阅读 · 0 评论 -
简单明了,说说ThreadLocal内存泄漏
本文要讨论的话题是,ThreadLocal内存泄漏问题,首先,明确下我们的讨论范围,先看一个简单的使用ThreadLocal的例子:注意:存在内存泄漏风险的是我标红的new String("我是大对象")在调用完testSetGet()方法后后,内存中的引用关系如下图(实线表示强引用,虚线表示弱引用)其中new ThreadLocal对象被两个引用指向1.我们自己使用的threadLocal引用,是一个强引用2.Entry.key引用(Thread对应的ThreadLoc..原创 2020-05-14 10:55:58 · 288 阅读 · 0 评论 -
java传值还是传引用,我得说两句
关于java调用方法传值还是传引用,大部分说法都是基本类型传值,复杂类型传引用,其实Java方法调用只会传递值,该值是对于传入引用的一份copy直接看代码说吧,先看基本类型代码:public static void doPlus(int temp){temp=temp+1;}int i=10; doPlus(i); jvm编译到这里时,doPlus方法形参里的temp是如何赋值的呢,是tem...原创 2017-11-27 13:19:28 · 667 阅读 · 0 评论 -
java接口和抽象类的区别,什么时候该用接口什么时候该用抽象类
很多人在面试过程中都会被问到这个问题,语法上的区别大家都知道,但是如果面试时你只说语法上的区别估计面试官会在心里扣你两分下面说说这两者在设计方面的区别:接口大家比较熟悉一点,因为现在的MVC架构业务层规范就是先写接口再写实现类,那大家有没有想过,用抽象类代替这些接口,是否可行呢?从语法上当然是可行的,但是不会这样做,为什么呢?大材小用,理念不同..接着往下看举个例子,领导说了,需要有个订单报...原创 2017-12-21 12:56:26 · 10989 阅读 · 14 评论 -
动态代理的好处是什么
静态代理:了解设计模式中的代理模式的童鞋应该都知道如果想要为被代理类生成代理,需要让代理类和被代理类共同实现同一个接口,在代理类中增加额外逻辑来实现代理模式,这种方式在编译期间就已经确认了哪个类是代理类,被代理的又是哪个类,这都是需要开发人员在编译之前就编写好的,是为静态。动态代理:其实动态代理与静态代理的本质一样,最终程序运行时都需要生成一个代理对象实例,通过它来完成相关增强以及业务逻辑,只...原创 2018-06-09 12:59:48 · 12407 阅读 · 11 评论 -
java中有哪些语法糖,泛型的原理
java中的语法糖:泛型、自动装箱拆箱、变长参数、增强for循环、switch字符类型等,这些都是语法糖虚拟机运行时不支持这种语法,在编译期间这些内容会被还原为基础的语法结构,这个过程称为解语法糖我们拿泛型来说明:它只在程序源码中存在,在编译后的字节码文件中,就已经替换为原来的原生类型(也称为裸类型)了,并且在相应的地方插入了强制转型代码,因此,对于运行期的Java语言来说,ArrayList<i...原创 2018-06-09 10:18:34 · 1028 阅读 · 0 评论 -
AQS深度剖析
1、引言在JDK1.5之前,一般是靠synchronized关键字来实现线程对共享变量的互斥访问。synchronized是在字节码上加指令,依赖于底层操作系统的Mutex Lock实现。而从JDK1.5以后java界的一位大神—— Doug Lea 开发了AbstractQueuedSynchronizer(AQS)组件,使用原生java代码实现了synchronized语义。换句话说,...转载 2018-07-21 09:59:34 · 375 阅读 · 0 评论