一、反射性能测试
二、mysql性能测试
https://help.aliyun.com/document_detail/109378.html?
数据库活跃度统计网站:
https://db-engines.com/en/
三、java与linux交互图
Glibc:开源的标准C语言库,glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc,所有动态连接的程序都要用到它。
四、缓存一致性协议MESI
五、java中对象的创建过程
六、Hhotspot中对象头的结构
查看对象头的方法
1.引入maven依赖
<dependency>
<groupId>org.openjdk.jol</groupId>
<artifactId>jol-core</artifactId>
<version>0.9</version>
</dependency>
2.调用方法打印对应的对象object
System.out.println(ClassLayout.parseInstance(object).toPrintable());
七、AKF
AKF 把系统扩展分为以下三个维度:
- X 轴:直接水平复制应用进程来扩展系统。
- Y 轴:将功能拆分出来扩展系统。
- Z 轴:基于用户信息扩展系统。
八、显示动态代理创建的类
先自己创建一个接口Movable,定义方法方法move(),再写一个简单的实现类Tank,这里main方法对Tank创建代理类。设置sun.misc.ProxyGenerator.saveGeneratedFiles属性为"true",可以允许jvm创建并保存动态代理生成的类。
public static void main(String[] args) throws Exception {
Tank tank = new Tank();
System.getProperties().put("sun.misc.ProxyGenerator.saveGeneratedFiles","true");
Movable movable = (Movable) Proxy.newProxyInstance(Tank.class.getClassLoader(),new Class[]{Movable.class},new LogHandler(tank));
movable.move();
}
执行完成,在项目目录下生成对应的动态代理类
九、四层负载、七层负载
四层负载
七层负载
十、CAP or BASE 理论
十一、TCP三次握手,四次挥手日志捕捉
TCP头部的规范定义及数据解析说明
三次握手
四次挥手
挥手请求可以是Client端,也可以是Server端发起的,我们假设是Client端发起:
第一次挥手: Client端发起挥手请求,向Server端发送标志位是FIN报文段,设置序列号seq,此时,Client端进入FIN_WAIT_1状态,这表示Client端没有数据要发送给Server端了。
第二次分手:Server端收到了Client端发送的FIN报文段,向Client端返回一个标志位是ACK的报文段,ack设为seq加1,Client端进入FIN_WAIT_2状态,Server端告诉Client端,我确认并同意你的关闭请求。
第三次分手: Server端向Client端发送标志位是FIN的报文段,请求关闭连接,同时Client端进入LAST_ACK状态。
第四次分手 : Client端收到Server端发送的FIN报文段,向Server端发送标志位是ACK的报文段,然后Client端进入TIME_WAIT状态。Server端收到Client端的ACK报文段以后,就关闭连接。此时,Client端等待2MSL的时间后依然没有收到回复,则证明Server端已正常关闭,那好,Client端也可以关闭连接了。
八、linux追踪系统链接的命令
1.strace追踪系统调用链路,并输出到指定的文件
例如:追踪到的socket连接
2.nc ip port
和指定的服务器及其对应的端口建立socket链接