![](https://img-blog.csdnimg.cn/20200122193658551.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java高级
文章平均质量分 98
高级:反射
基础:
蜡笔小ming
再见
展开
-
自定义注解+反射+Aop 实现代码封装(扩展性强)
问题引入 首先这篇博文是我在上直播课学习到的,受益匪浅,它教会我们用架构师的思维去解决问题,代码扩展性强,于是乎记录下来。首先遇到的是这么一个问题(简化版本),就是有两张表:一张用户表user表,另外一张是订单表order表,其结构如下userorder就是很简单的两张表,其中用户表的custId和订单表的custId相关联,现在要统计订单的信息,其...原创 2020-02-02 19:42:25 · 934 阅读 · 0 评论 -
mybatis与反射实现对象封装
在项目中经常要我们查询某张表的的部分字段,比如select emp_id,emp_name,...... from emp where xxx;诸如此类,在dao层的xml我们就可以这样定义:<resultMap id="queryNameMap" type="java.util.Map"> <result column="emp_name" pr...原创 2018-09-17 16:48:51 · 746 阅读 · 0 评论 -
不可变对象设计模式
线程安全的主要目的就是在于控制并发访问中防止共享数据发生变化,除了使用关键字synchronized关键字同步对资源的写操作之外,还可以在线程之间不共享资源状态,甚至是将对象资源设置为不可变。例如Stirng类的每一个方法都没有用syncronized修饰,但是在多线程的访问下是安全的,java8通过Stream修饰的ArrayList并发访问也是安全的,所谓不可变对象就是没有机会去...原创 2019-03-17 11:10:49 · 136 阅读 · 0 评论 -
序列化反序列化( transient/static )
平时我们在Java内存中的对象,是无 法进行IO操作或者网络通信的,因为在进行IO操作或者网络通信的时候,人家根本不知道内存中的对象是个什么东西,因此必须将对象以某种方式表示出来。一个Java对象的表示有各种各样的方式,Java本身也提供给了用户一种表示对象的方式,那就是序列化。换句话说,序列化只是表示对象的一种方式而已。OK,有了序列化,那么必然有反序列化,我们先看一下序列化、反序列...原创 2019-01-30 22:51:10 · 559 阅读 · 0 评论 -
Cglib动态代理
在上一文中介绍了一下jdk动态代理及实现原理,但是其有一个致命缺陷是,只能对接口进行代理。如果要代理的类为一个普通类、没有接口,则Java动态代理则毫无用武之地。CGLIB(Code Generation Library)是一个开源项目,是一个强大的,高性能,高质量的Code生成类库,它可以在运行期扩展Java类与实现Java接口。Hibernate支持它来实现PO(Persist...转载 2020-01-19 23:51:19 · 178 阅读 · 0 评论 -
Jdk动态代理
目前Java的动态代理主要分为jdk自带的动态代理java.lang.reflect.Proxy 和 谷歌的cglib,它们有什么区别呢?原理:java动态代理是利用反射机制生成一个实现代理接口的匿名类,在调用具体方法前调用InvokeHandler来处理。 而cglib动态代理是利用asm开源包,对代理对象类的class文件加载进来,通过修改其字节码生成子类来处理。差...原创 2020-01-15 21:46:29 · 272 阅读 · 0 评论