2、RocketMQ NameSrc 源码 给我们很多提示1、JVM 优雅停机 + hook 函数的使用2、读写锁防止并发编程 lockInterruptibly()、tryLock ()…注意的点需要注意的点是 NameSpace 中 RouteManger 的变量很关键。基本上所有路由信息都是对变量进行操作的。todo1、netty 通信。
@ConditiontionalOnBean和@ConditiontionalOnMissingBean注解使用 官方文档:如果容器有xxx.class才会注入官方文档:和@ConditiontionalOnBean相反,如果容器中没有xxx.class才会注入Bean由上面六种情况可以看出@ConditionOnBean必须在xxx.class Bean类存在时才可以进行注入@ConditionOnMissingBean是在xxx.class Bean类存在时将注入的Bean省略掉,如果不存在则进行注入。两者可以一起使用,其核心还是Contional是否满足要求。
SpringBoot @Conditional的使用 我们发现:当Conditional为false,SpringBoot会报错。当Conditional为true,接口正常。证明:@Conditional注解需要配合两种方法使用1、实现Condition接口并重写matches方法2、继承SpringBootCondition抽象类并重写getMatchOutcome方法并且在自动配置那里配合@Bean来一起使用。
SpringCloud Alibaba Sentinel链路是怎么样构建的(一) 截图于官方文档大家用的时候是@SentinelResource。其实就是对注解做了一个AOPcom.alibaba.csp.sentinel.annotation.aspectj.SentinelResourceAspect@Around("sentinelResourceAnnotationPointcut()") public Object invokeResourceWithSentinel(ProceedingJoinPoint pjp) throws Throwable { .
基于Nacos限流规则持久化Demo SpringBoot源码入口@SpringBootApplication@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented@Inherited@SpringBootConfiguration@EnableAutoConfiguration@ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeE
SpringBoot是如何通过Jar方式启动的 Java包可以通过jar和war启动。看看如何启动的,细细道来java -jar xxx.jarSpringBoot使用maven打package,会有两个文件由于jar是采用zip压缩格式进行存储的linux使用unzip对xxx.jar进行解压unzip -x -q xxx.jar -d xxx解压后BOOT-INF/class 目录存储应用编译后的class文件BOOT-INF/lib 目录存放的是应用依赖的jar包org 目录存储SPringBoot相关的class
Redis深度探险知识总结 1.数据结构String:get/set,mget,incr,expire,setnx,setexlist: rpush/lpush,lpop/rpop,llen,lrange,ltrimhashsethset高级数据结构bitmapsHyperLogLog布隆过滤器GEOPubSub2. 分布式锁并发保证数据原子性(操作不会被线程调度打断)关键命令 setnx,del死锁触发条件:当del没有被调用解决方案:setnx和expire可以一起执行(超时锁会过期,
关于linux防火墙的操作基于centos6 yum list telnet* 列出telnet相关的安装包 yum install telnet-server 安装telnet服务 yum install telnet.* 安装telnet客户端cat /etc/issue 查看Centos版本查看防火墙状态:service iptables status关闭防火墙:service iptables stop打开防火墙:service iptables sta..
JVM垃圾收集上(概述和算法) JVM垃圾收集上1.什么是垃圾?2.为什么需要垃圾收集3.发展里程4.垃圾回收的好处5.垃圾回收算法5.1 标记阶段5.1.1 引用计数算法(GC没有该类算法)5.1.2 可达性分析算法5.1.2.1 可达性分析5.1.2.2 如何找GC Roots5.1.3 如何标记(finalization方法)5.2 清除阶段5.2.1 标记-清除算法(Mark-Sweep)5.2.2 复制算法(Copying)5.2.3 标记-压缩算法(Mark-Compact)5.3 其他算法5.3.1 分代收集算法5.3.2
03 创建消费者子模块 03 创建消费者子模块创模块cloud-consumer-order80引pom<dependencies> <!--SpringCloud consul-server --> <!--<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring
02 SpringCloud创建提供者子模块 02 SpringCloud创建提供者子模块口诀:建payment模块,观察pom变化Cloud-provider-payment8001改pom<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi
1.创建SpringCloud父工程 1.选择Maven工程选择 maven-archetype-site填入名称等–>next选择Maven仓库–>Finish选择编码(约定大于编程)注解生效激活Java编译版本File Type过滤2.父工程Pom文件1.粘贴到Pom中<packaging>pom</packaging> <!-- 统一管理jar包版本 --> <properties> <
JAVA是值传递,并不是引用传递 值传递是方法得到所有参数的拷贝,方法不能修改传递给它的任何参数变脸的内容。引用传递是方法得到的是对象引用的拷贝,对象引用及其他的拷贝同时引用同一个对象(类型C++中的指针)public class passByValue { public static void main(String[] args) { // 方法值作为参数传递 double percent =10; tripleValue(percent); System.o
Servlet总结 概念servlet ==》由java编写能运行在服务器端的http小程序。生命周期init --> service --> destory如何加载servlet程序,实例化Servlet对象重要版本servlet3.0支持注解开发,3.0之前为xml配置开发体系结构自定义Servlet类 --extend --> HttpServlet类 --extend --> GenericServlet类 --extend --> Servlet接口 --extend -