Zhl Blog

充满好奇,保持谦逊,一途一心。

1.SpringSession源码:从一个demo开始

1.SpringSession源码:从一个demo开始

版本号说明 版本号: spring-session-data-redis:2.1.5.RELEASE spring-boot-starter-data-redis:2.1.4.RELEASE Spring Boot:2.1.4.RELEASE 配置文件 pom.xml 1 2 ...

2.SpringSession源码:流程中几个重要方法

2.SpringSession源码:流程中几个重要方法

接着上篇文章从SessionRepositoryFilter.java开始说起。之前说SessionRepositoryFilter过滤器将request和response封装成自己定义的类型。所以用户代码request.getSession()其实调用到的是SessionRepositoryRequestWrapper中已经被重写了的getSession()方法。 1 2 3 4 5 6...

2.1.SpringSession源码:getRequestedSession()

2.1.SpringSession源码:getRequestedSession()

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 private S getRequestedSession() { if (!this.requestedSessionCached) { List<String> sessionIds = SessionRepositoryFilter.this.httpSessionIdRe...

2.2SpringSession源码:createSession()

2.2SpringSession源码:createSession()

创建session具体实现是在RedisOperationsSessionRepository中 1 2 3 4 5 6 7 8 9 @Override public RedisSession createSession() { RedisSession redisSession = new RedisSession(); if (this.defaultMaxInactiveInte...

RabbitMQ-Exchange(交换机)

RabbitMQ-Exchange(交换机)

交换机的功能主要接受消息并且转发到绑定的队列,交换机不存储信息。交换机找不到队列会返回错误,交换机有四种类型: Direct:默认模式,绑在routing key,只有匹配时,才会被交换器投送到绑定的队列中去。 Topic:按照规则转发消息 Headers:设置 header attribute 参数类型的交换机(暂时没用过) Fanout:转发消息到所有绑定队列 任何发送到Direct ...

JAVA虚拟机如何加载类

JAVA虚拟机如何加载类

参考资料: 《深入理解Java虚拟机——JVM高级特性与最佳实践(第2版)》 对jvm的学习笔记 一。基本流程 执行java代码首先需要将它编译而成的class文件加载到java虚拟机中,加载后java类会被存放于方法区中,实际运行时,虚拟机会执行方法区内的代码。 每当调用进入一个java方法,java虚拟机会在当前线程的java方法栈中生成...

JVM垃圾收集器

JVM垃圾收集器

参考资料: 《深入理解Java虚拟机——JVM高级特性与最佳实践(第2版)》 Java Hotspot G1 GC的一些关键技术 对jvm的学习笔记 JVM使用可达性分析算法来判断对象是否存活。 可达性分析算法中不可达的对象也并非是”非死不可“,这时候他们暂时处于缓刑阶段,要真正宣告一个对象死亡,至少要经历两次标记过程,如果对象在进行可达性分析后发现没有与GC Roots相...

JVM内存结构

JVM内存结构

参考资料: 《深入理解Java虚拟机——JVM高级特性与最佳实践(第2版)》 对jvm的学习笔记 JVM内存结构 方法区 方法区是各个线程共享的内存区域,它用于存储已经被虚拟机加载的类信息,常量,构造函数,静态变量,及时编译器编译后的代码等数据,一般来说方法区上执行GC的情况非常少,但是不代表完全没有GC,GC主要是针对常量池的回收和已经加载类的卸载,虽然java虚拟机规范把...

5-4.Netty源码:OutBound事件传播

OutBound事件传播

逻辑跟InBound类似。 首先自定义三个outBound处理器 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 //OutBoundA public class OutBoundA extends ChannelOutboundHandlerAdapt...

5-3.Netty源码:InBound事件传播

InBound事件传播

首先自定义三个inbound处理器 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 //InBoundA public class InBoundA extends ChannelInboundHandlerAdapter { @Override public v...