1. 数据库原理

    1. 数据库 数据库是一个庞大的服务器软件,用来管理数据。

    2021/06/01 DB/JDBC/事务

  2. jackson

    1. jackson简介 Jackson 是一个流行的 Java 序列化和反序列化库,通常用于处理 JSON 数据。关于 Jackson 会不会导致栈内存溢出的问题,一般情况下并不会,因为 Jackson 库本身不会直接导致栈内存溢出。

    2021/05/03 Json

  3. fastJson

    1. fastJson简介 1.1 什么是fastJson? fastJson是alibaba的一个针对json的开源类库。 其中提供了json字符串和java对象之间的各种转换方式。 fastJson效率极高。

    2021/05/02 Json

  4. json的入门

    1. 初探json 1.1 什么是json? JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。 JSON 使用 Javascript语法来描述数据对象,但是 JSON 仍然独立于语言和平台。 JSON 解析器和 JSON 库支持许多不同的编程语言。 目前非常多的动态(PHP,JSP,.NET,java等)编程语言都支持JSON。

    2021/05/01 Json

  5. 玩一玩Java注解

    玩转java注解 关于注解,下面的几个问题你都会吗? 注解是干嘛的? 同一个注解可以使用很多次吗?如果可以,怎么使用? @Inherited注解是干什么用的? @Target注解中的“TYPE_PARAMETER”和“TYPE_USE”用在什么地方啊? 泛型你了解吧,泛型中如何使用注解? 注解的定义可以实现继承吗? spring对注解有增强吗?@Aliasfor注解是干嘛的? 1. java注解的定义和本质 我们都了解代码中的注释,注释是给开发人员看的,可能是开发者自己写的给自己看,也可能是给同组其他同事看的。 代码中的注释可以提升代码的可读性和可维护性,但是对于java编译器和java虚拟机来说注释是没有意义的,编译后的class字节码文件中是没有注释信息的。 注解和注释有点类似,唯一的区别就是注释是给人看的,而注解是给java编译器和java虚拟机看的。编译器和虚拟机在运行过程中可以获取注解信息,然后根据这些信息做各种想做的事。 比如:@Override注解我们都了解。加载方法上,标注当前方法重写了父类的方法,当编译器编译代码时,会对@Override标注的方法进行验证,验证其父类中是否存在相同签名的方法,否则报错。 总结就是:注解本身是对代码的增强,可以在代码编译或者运行期间获取注解的信息,然后根据这些信息做各种牛掰的事。

    2021/04/14 Java高级知识

  6. 动态代理的第三方开源实现 cglib

    1. 什么是cglib代理? 1.1 初识cglib jdk动态代理因为生成的代理类默认继承了Proxy类,因此它只能为接口生成代理类,使用上有局限性。 真正使用中我们的类不一定都有接口,大多数可能就是一个普通的class。此时如果我们想为一个普通类创建动态代理类,就需要使用cglib来实现了。 cglib是一个强大、高性能的字节码生成库,它用于在运行时扩展Java类和实现接口。 cglib的本质是通过动态的在内存中生成一个子类来覆盖所要代理的类(非final的类和方法)。 Enhancer可能是cglib中最常用的一个类,和jdk中的Proxy不同,Enhancer既能为普通类生成代理,也能够为接口生成代理。 Enhancer负责创建一个被代理类(真实主题类)的子类并且拦截对真实主题类的所有方法调用(包括从Object继承而来的非final、非static方法)。 Enhancer不能代理final方法、不能代理private方法、不能代理static方法,因为基于java final的语义,这些方法都不能被覆盖。 基于同样的道理,Enhancer也不能对final类进行代理。

    2021/04/13 Java高级知识

  7. 动态代理的底层原理

    1. 代理的初衷 1.1 代理出现的背景 一个真实主题对象用来实现核心业务,真实主题不想暴露给客户端,这时候就需要代理主题对象上场了。 代理主题持有某一类真实主题的引用(通过多态持有),当客户端访问代理主题时,代理主题将请求委托给真实主题处理,同时在委托的过程中,代理主题可以加入自己的某些逻辑。 说白了就是,代理主题对真实主题进行代理,有啥事情直接找代理,边缘业务代理直接就办了,核心业务再转发给真实主题去处理。 这里面的核心就是:转发。 只有能将请求转发给真实主题,这才是正确的处理,否则,对真实主题的代理就失败了。 同样,只有在转发的过程中,才能通过代理主题去处理某些边缘业务,以此来增强真实主题对象的功能,否则,没有转发就谈不上边缘业务了。 那如何实现转发呢?之前的文章已经讲过,此处再回顾下如何实现转发: A对象封装一个B对象的属性成员,在使用时,从外部向A对象中注入B对象实例(以成员变量的方式注入); 外部在调用A对象的a方法时,通过方法间参数传递,注入一个局部的B对象实例进去,相当于让A对象持有了一个局部的B对象实例(以局部变量的方式注入)。 也就是说,通过委托机制就可以实现方法转发。 比如A访问B,现在想把请求转发到C,此时在B中委托一个C的对象即可,B就可以将请求转发给C。

    2021/04/12 Java高级知识

  8. Proxy如何生成动态字节码?

    1. 回顾Proxy类 Proxy类是反射包中提供的,用于为真实主题生成代理对象。 Proxy对外提供了4个常见API。

    2021/04/11 Java高级知识

  9. jdk动态代理中的Proxy类是怎么玩的?

    1. 回顾动态代理 jdk的动态代理中关键核心就在于一个Proxy类。这个类是jdk提供的内置类。这个类能干嘛? 前面学习反射机制、和java中常见机制时,曾经反复强调两个动态性的概念:动态加载和静态加载、动态字节码和静态字节码。在这个我们首先通过Proxy类来直观的感受下到底什么叫做动态字节码机制? 学习动态字节码机制时,核心的一点就是字节码的生成过程是在一个正在运行当中的JVM中动态进行的,生成的字节码是在JVM内存中虚拟缓存的,而不是java编译器预编译后产生的*.class文件。那么具体怎么样呢? Proxy类我们分为两节来学习,本节先学习Proxy对外暴露的4个API。

    2021/04/10 Java高级知识

  10. 死磕代理设计模式

    1. 代理设计模式 代理设计模式是Java中针对接口编程的一种应用模式。 java中代理分为静态代理和动态代理。 一个接口有很多实现类,其中包括真实主题实现类,和代理主题实现类。真实主题实现类执行真正的核心业务,代理主题实现类负责边缘业务。 代理设计模式的核心:外部通过操作代理主题,间接的操作真实主题。 代理设计模式中,代理主题实际上是个代理对象,通过委托真实主题去执行真正的操作,而代理主题本身可以在委托真实主题执行前后执行其他边缘性业务。 在代理设计模式中,外部直接操作代理主题,真实主题是被代理类委托代理的,即代理类代理了真实主题,代理类委托真实主题处理真正业务。 代理设计模式本身是对委托机制的一种具体应用场景,它是对委托机制和方法转发的一种模式化应用。 代理设计模式实现上和装饰者设计模式比较相似,但还是有区别的,区别等学习装饰者模式时再讲。

    2021/04/09 Java高级知识