泛型是 java 1.5中添加的。在没有泛型之前,从集合中读取每一个对象都必须进行转换,如果有人不小型插入了错误的类型,那么就会在运行的时候出现类型转换异常。
泛型的作用就是告诉每个集合可以接受哪些类型,在编译阶段就可以告知是否插入了错误的对象
5_动态代理1-jdk
JDK动态代理可以在运行期间
创建一个代理类,这个代理类实现了一组给定的接口
方法。
当调用这个代理类的接口方法时,这个调用都会被定向到 InvocationHandler.invoke()方法。在这个invoke方法中,我们可以添加任何逻辑,如打印日志、安全检查等等。
之后,invoke方法会调用真实对象的方法。
动态代理是基于接口实现代理类的。因此当被代理对象没有继承接口时,JDK动态代理就无法使用,这时可以使用 CGLIB 代理,关于CGLIB 代理在下一章中介绍。
5_动态代理2-cglib
[TOC]
CGLIB原理是: 动态生成一个要代理类的子类,子类重写要代理的类的所有不是final的方法。在子类中采用方法拦截的技术拦截所有父类方法的调用,顺势织入横切逻辑。它比使用java反射的JDK动态代理要快。
CGLIB底层:使用字节码处理框架ASM,来转换字节码并生成新的类。不鼓励直接使用ASM,因为它要求你必须对JVM内部结构包括class文件的格式和指令集都很熟悉。
CGLIB缺点:对于final方法,无法进行代理。
4_反射
3_自动装箱和拆箱
自动装箱和拆箱从Java 1.5开始引入,目的是将原始类型值转自动地转换成对应的对象。自动装箱与拆箱的机制可以让我们在Java的变量赋值或者是方法调用等情况下使用原始类型或者对象类型更加简单直接。
2_string
1_java对象
[TOC]
0_java基本特性
java 拥有四个基本特性。
书单列表
- 设计模式: 可复用面向对象软件的基础 (进阶类)
- Head First设计模式 (入门类)
- 重构–改善既有代码的设计
- 企业应用架构模式
elk相关知识
结构化输出log
https://gquintana.github.io/2017/12/01/Structured-logging-with-SL-FJ-and-Logback.html
elk_filebeat
https://github.com/shildondu/elkstack_filebeat
filebeat 原理
https://www.cnblogs.com/wangzhuxing/p/9678578.html
es 系列博客
https://www.cnblogs.com/wangzhuxing/tag/ES/
K8s容器日志实时收集FileBeat+ES+Kibana
Filebeat 模块与配置