人生都是这样
有人喜欢你,就会有人讨厌你
有人在乎你,就会有人轻视你
有人赞美你,就会有人批评你
出自老杨的猫头鹰作品
Java中你必须知道的内容
筒子们,别在说这些工作中用不到了哈,与君共勉~
引用传递和值传递傻傻分不清楚?
他说嗯嗯,这么写的代码没有问题的,不会改变原来值,怀疑你TM是缴费进来的吧,
看到没,筒子们,这就是典型的50步笑100步,哈哈哈哈
其实Java中不存在引用传递的说法,我简单讲下自己的拙见,希望不吝赐教,
基础数据类型:方法间参数传递的就是值的拷贝对象,不会对原值造成影响
包装数据类型:方法间参数传递的是值的地址的拷贝,我理解是浅拷贝了一个对象用来在方法里使用
Jdk默认序列化有使用过吗?聊聊你知道的其它序列化方式
自己写例子用过Java默认的序列化,毕竟效率低、不安全谁敢生产使用哦~
Kyro(极致推荐),Hessian等等,可能用的比较多的还是json序列化在Dubbo数据传输中~
transient和static在序列化中的区别?
transient仅支持修饰在字段上,在序列化时,修饰后的属性不会参与序列化动作,并且在反序列化后该属性值会被重置为默认值
static修饰的属性不属于序列化类,它存在于JVM的方法区,当反序列化后,类中的静态变量被赋予了默认值,给你的感觉像是反序列化后的效果,实际并不是,它只是类静态变量,完全不同的两个概念
反射有使用过吗?说说使用的场景?
Spring/Mybatis这种框架都大量的使用了反射带来的便捷,你以为的一个注解@Value修饰的变量为啥就有了默认值呢?这都是依赖了操作类更改属性值的方法,也就是反射实际带来的作用
稍微聊下代理模式?
我们讲的代理模式分为两种,静态代理&动态代理,这里先列出来下静态代理的UML图

上图中描述的筒子们辛苦帮忙指正下,看下静态代理UML是否哪里需要调整,毕竟在长时间的不规则工作中,哪里还记得啥时候UML了,都MD忘记的干干净净了~
下图是我对JDK动态代理画的UML图~
这里可以比较好的看出来静态代理和JDK动态代理之间的差别,静态代理要手动写每个被代理的逻辑,如果被代理新增一个接口,那么所有的代理类都要去跟着更改;反观JDK动态代理就相对来说好一点,它只需要维护一个代理类就好~

但是JDK静态代理有一个致命的缺点,也就是它必须实现的是接口类,这也就说明被代理类的类型被限制住了~
接下来就引入了另外一种动态代理方案,CGLIB~
CGLIB是什么?它是通过ASM字节码生成库来动态的改变字节码文件内容并且令其生效;
这里CGLIB会单独拉一个文章来讲,本次全当是一个预告吧,先把事情和你讲了,省的说没有讲全~
步二小节
哎,小基础,这些如果有不知道的~请自行检讨一波~