自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 收藏
  • 关注

原创 注册中心Zookeeper版本降级

项目中引入spring-cloud-starter-zookeeper-discovery依赖将zookeeper作为注册中心,但关联SpringCloud版本依赖中指定zookeeper版本为3.6.0,与客户zookeeper服务端(3.4.10)版本不适配,项目启动会直接抛出。异常,经过测试及查询确定该异常由zookeeper客户端与服务端版本不适配导致。

2023-05-19 09:16:55 208

原创 @Configuration(proxyBeanMethods = false) 解析

属性是 Spring注解的一个重要属性,它用于指示 Spring 是否应该对配置类的方法进行 CGLIB 代理。将属性设置为false可以提高 Spring 应用程序的性能,但需要注意返回的 Bean 实例必须是单例的。!!

2023-05-08 14:47:51 489

原创 SpringBoot属性配置优先级

因此,在没有使用命令行参数的情况下,应用程序的属性值将是"Hello from myapp.properties",因为myapp.properties是最高优先级的属性源。如果我们删除myapp.properties文件,则属性值将变为"Hello from bootstrap.properties",因为bootstrap.properties是次高优先级的属性源。在Spring Boot中,应用程序可以使用多种方式来配置。

2023-05-05 13:04:44 1177

原创 分布式Session的容灾方案

类会将 Session 数据存储在 Redis 中,当 Redis 宕机时,会将 Session 数据备份到其他地方,比如文件系统。需要注意的是,在使用备份存储时,需要保证存储的数据安全性和可靠性,并根据具体业务需求和技术栈选择合适的存储方式。综上所述,保证 Redis 宕机时用户能够正常登录需要考虑多种因素,需要根据具体的业务场景和需求,选择合适的方案和技术。该示例中使用了文件系统作为备份存储方式,可以根据具体业务需求和技术栈选择合适的备份存储方式,比如数据库、对象存储等。在正常情况下,该示例中的。

2023-04-20 20:03:59 398

原创 SpringCloud整合Feign基本使用及源码分析-02

导致原请求相关信息会被移除,这个时候可以通过RequestInterceptor来手动添加原请求相关参数,避免请求信息丢失的情况。FeignClient实例为动态代理创建的对象,当进行服务调用FeignClient的接口方法就会被。是Feign提供的扩展点,当实际开发过程中远程服务调用有设置请求头相关参数时,由于。的invoke方法拦截。

2023-04-03 16:44:49 473

原创 SpringCloud整合Feign基本使用及源码分析-01

Demo基于SpringCloudAlibaba整合Nacos,利用Feign实现服务间调用;针对Feign的服务调用进行源码简要分析;针对于Feign服务调用中的重试机制及负载均衡进行源码简要分析;

2023-04-03 16:10:35 239

原创 线程池ThreadPoolExecutor源码分析

的一个内部类,主要是用来维护线程执行任务的中断控制状态,它实现了Runnable 接口同时继承了AQS,实现 Runnable 接口意味着 Worker 就是一个线程,继承 AQS 是为了实现独占锁这个功能。

2023-03-31 16:16:12 192

原创 PropertySourceLocator(SpringCloud中的配置操作)

SpringCloud服务在主程序启动时,会在刷新上下文之前通过扩展点初始化器ApplicationContextInitializer的initialize方法来进行环境相关内容的准备,作为ApplicationContextInitializer的实现类,在环境准备期间会通过接口在程序启动前来获取应用属性资源并加载到当前Environment中。eg. SpringCloud在整合Nacos(Config)配置中心,应用在启动过程中会执行Nacos实现的。

2023-03-31 11:54:54 582

原创 利用责任链模式实现过滤器链

SpringMVC中在实现过滤器链ApplicationFilterChain和拦截器链HandlerExecutionChain的过程中均使用到了责任链模式,便于请求拦截的动态扩展。

2023-03-30 17:36:11 111

原创 Springboot整合Nacos实现动态线程池

又是美好的一天呀~个人博客地址: huanghong.top往下看看~内容简介代码实现配置文件pom.xmlbootstrap.yamldynamic-threadpool.yaml配置BeanThreadPoolPropertiesThreadPoolConfig枚举QueueTypeEnumRejectedTypeEnumrefresher测试类备注内容内容简介基于Springboot整合Nacos(Config)构建项目,客户端监听Nacos服务端配置变化动态修改线程池相关参数。代码实现

2023-03-30 14:05:34 1153 1

原创 Nacos配置变更(Bean属性动态变更)

通常使用Nacos服务端进行配置变更时,客户端配置nacos相关属性并设置refresh属性为true(默认为fasle),客户端映射实体类属性就可以自动重新映射,其实现原理基于事件发布监听和Spring容器中接口的实现。注: 本文内容只针对于Bean属性动态刷新,并不支持@Value注解的动态更新。

2023-03-30 09:19:14 1385

原创 Nacos(Config)配置中心源码分析-02

TaskManager构造器中调用父类NacosDelayTaskExecuteEngine构造器,初始化父类。ProcessRunnable实现Runnable接口,执行processTasks方法。EmbeddedDumpService初始化会进行TaskManager的初始化。初始化TaskManager时。通过nacos ui界面。配置信息(接口访问同理)

2023-03-28 16:39:11 388

原创 Nacos(Config)配置中心源码分析-03

服务端配置变更,会发送请求给与当前节点建立长连接的客户端通知配置变更项。

2023-03-28 16:37:55 593

原创 Nacos(Config)配置同步源码分析-01

判断md5是否为空或者不同则更新本地缓存。

2023-03-28 16:35:17 451

原创 Nacos服务注册

NacosWatch实现了SmartLifecycle接口,执行。请求uri:/nacos/v1/ns/service。6s执行一次定时任务,监控服务状态信息。上下文刷新完成后生命周期管理器执行。nacos服务发现配置Bean(对当前服务进行订阅操作。

2023-03-21 15:42:00 299

原创 Nacos服务注册之NacosWatch

NacosWatch的作用就是更新当前节点的metadata和定时发送一个HearbeatEvent事件,可以监听这个事件做一些配置的动态更新操作。metadata中一般可设置一些状态标识,比如灰度发布可以设置版本号,配合网关把流量做定向分发。!!

2023-03-21 15:40:18 1005

原创 HTTP和RPC通讯协议比较

HTTP和RPC通讯协议比较

2023-03-20 11:21:59 302

原创 JVM垃圾回收器

JVM垃圾回收器选择及实际使用

2023-03-17 14:00:10 145

原创 Spring事务机制及源码分析

*PROPAGATION_NESTED ** 表示如果当前方法正有一个事务在运行中,则该方法应该运行在一个嵌套事务中 ,被嵌套的事务可以独立于被封装的事务中进行提交或者回滚。如果封装事务存在,并且外层事务抛出异常回滚,那么内层事务必须回滚,反之,内层事务并不影响外层事务。表示当前方法必须在一个具有事务的 上下文中运行,如有客户端有事务在进行,那么被调用端将在该事务中运行,否则的话重新开启一个事务。表示当前方法不必需要具有一个事务 上下文,但是如果有一个事务的话,它也可以在这个事务中运行;

2023-03-15 11:25:24 110

原创 SpringMVC源码分析

SpringMVC源码分析

2023-03-14 13:47:32 69

原创 java集合框架

java集合框架

2023-03-13 16:37:47 160

原创 linux服务器目录挂载文档

linux服务器目录挂载文档

2023-03-13 16:28:07 188

原创 linux服务器目录定时备份

linux服务器目录定时备份

2023-03-13 16:27:35 304

原创 Springboot中跳过指定过滤器

是过滤器定义,filterDef中的FilterClass和FilterName保存了过滤器类和过滤器名,可以根据过滤器类或名字找到要剔除的过滤器,然后将对应的ApplicationFilterConfig 从数组里剔除就可以了。),filters中存放的是ApplicationFilterConfig 是FilterConfig的实现类,ApplicationFilterConfig中。filterChain有一个filters的属性数组(

2023-03-13 10:59:03 2006 2

原创 Springboot内嵌Tomcat启动流程源码分析

【代码】Springboot内嵌Tomcat启动流程源码分析。

2023-03-10 21:48:54 235 1

原创 Springboot启动过程源码分析

定义初始化器/**} }在src/main/resources目录下创建META-INF/spring.factories;启动项目后日志打印定义监听器/**} }在src/main/resources目录下创建META-INF/spring.factories;启动项目后日志打印} } }实现 ApplicationRunner 接口/**} }实现 CommandLineRunner 接口/**} }日志输出!!

2023-03-10 21:47:30 50

原创 Redisson分布式锁执行逻辑

Redisson分布式锁执行逻辑

2023-03-10 21:45:57 67

原创 RedisCluster路由

org.redisson.cluster.ClusterConnectionManager#addMasterEntry初始化slot和node的映射关系存储在。)连接redis主节点,存取键值时redis-cli同样也会接收到MOVED重定向错误,但是会自动根据重定向信息来切换节点重新发起请求。在ClusterConnectionManager中的slot2entry中, 根据key所对应的slot获取对应的节点信息。使用redis-cli客户端普通连接redis主节点,来存取键值会返回。

2023-03-10 21:44:52 328

原创 Mybatis源码分析

加载配置:配置来源于两个地方,一处是配置文件,一处是Java代码的注解,将SQL的配置信息加载成为一个个MappedStatement对象(包括了传入参数映射配置、执行的SQL语句、结果映射配置),存储在内存中。

2023-03-10 21:39:01 65

原创 SpringAOP简单使用场景和源码分析

解析 AOP 的注解,并注册对应的内部管理的自动代理创建者的 bean(r)。当 bean 初始化完毕后,会触发所有 BeanPostProcessor 的 postProcessAfterInitialization 方法,此时就会调用我们的AnnotationAwareAspectJAutoProxyCreator 的 postProcessAfterInitialization。

2023-03-10 21:30:26 82

原创 Spring全局异常处理的使用及源码分析

**} }是一个组合注解,由@ControllerAdvice和@ResponseBody组成,相同于**@RestController与之间的区别,增加@ResponseBody**注解则返回的结果直接写入 HTTP中,反之直接返回view。通过指定@RestControllerAdvice中的和的属性可以扫描指定包路径下或类的异常。/**/**} }

2023-03-10 21:27:01 116

原创 Redis底层数据结构

字符串长度获取需要遍历整个字符串数组,遇到尾标识"\0"则停止计算,复杂度为O(n)。字符串拼接过程中存在原已使用内存空间被覆盖(内存溢出)。字符串以"\0"做为尾标识,存储以多个"\0"作为分隔符的字符串时会出现安全问题。C字符串SDS获取字符串长度的复杂度为O(N)获取字符串长度的复杂度为O(1)API是不安全的,可能会造成缓冲区溢出API是安全的,不会造成缓冲区溢出修改字符串长度N次必然需要执行N次内存重分配修改字符串长度N次最多需要执行N次内存重分配只能保存文本数据。

2023-03-10 17:29:25 85

Springboot扩展Nacos(Config)配置动态更新

基于Nacos Client2.1.0版本配置更新监听器AbstractConfigChangeListener实现@Value、@NacosValue的动态注入功能,本地安装jar即可实现配置更新之后的动态注入功能

2023-03-29

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除