摘要:作用:同时允许存在指定的数量,类似组锁 常用场景:1.停车场一共有3个停车位,来了100辆车,这时,一次最多允许停3辆。 2.系统最大能抗300个并发,只是后就最多设置信号量的值为300,保证服务不崩,能正常用。 import java.util.concurrent.ExecutorService
阅读全文
摘要:作用:执行第一个参数指定的次数之后,最后一个线程执行第二个参数中的任务。 应用场景:在微服务中调用五个接口,确保5个接口执行完毕,再执行自己的业务逻辑。 import java.util.Random; import java.util.concurrent.CyclicBarrier; impor
阅读全文
摘要:作用:直译:倒数的门闩,倒数指定的次数,await才继续往下执行。 import java.util.Random; import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; im
阅读全文
摘要:一、七大核心参数 1.corePoolSize 核心线程数 2.maximumPoolSize 最大线程池参数 3.keepAliveTime 任务结束后,线程存活此处指定时间后才会被释放 4.TimeUnit 上一个参数的单位,常用s,ms 5.BlockingQueue 队列,当核心线程用完时,
阅读全文
摘要:事物传播 Spring中七种事务传播行为 事务传播行为类型 说明 PROPAGATION_REQUIRED 如果当前没有事务,就新建一个事务,如果已经存在一个事务中, 加入到这个事务中。这是最常见的选择。 PROPAGATION_SUPPORTS 支持当前事务,如果当前没有事务,就以非事务方式执行。
阅读全文
摘要:1.引入pom依赖 <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.3.4</version> </dependency> 2.引
阅读全文
摘要:1.引入pom依赖 <!--我的是springCloud项目,这个放在了fast-service的pom文件中--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifac
阅读全文
摘要:1.创建两个SpringBoot工程 2.添加 undo_log 表 在客户端处理的业务相关的每个数据库中都要添加 undo_log 表,用于保存需要回滚的 数据。建表语句脚本在 seata 源码(source)解压目录的 script/client/at/db 目录下的 mysql.sql 中。
阅读全文
摘要:这里以 Seata 默认的 AT 事务模式来实现分布式事务。 1.Seata 下载 从官网下载 Seata Server,源码与打过包的都需要下载。源码中包含很多需要运行的脚 本文件,而打过包的则是可运行的服务器本身。 2.运行 mysql.sql 脚本 在 seata 源码解压目录的 script
阅读全文
摘要:1.在springboot项目中引入如下依赖: <!-- 热部署模块 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optiona
阅读全文
摘要:地址:https://www.cs.usfca.edu/~galles/visualization/Algorithms.html
阅读全文
摘要:作用: 在Bean对象在实例化和依赖注入完毕后,实现BeanPostProcessor接口的方法可以在对象调用初始化方法的前后添加我们自己的逻辑。注意是Bean实例化和依赖注入完成后触发的。 下面三个前后都可以作用到。 补充:bean生命周期的初始化回调:1.PostConstract; 2.ini
阅读全文
摘要:作用: @DependsOn注解可以定义在类和方法上,因为spring默认扫描包时会根据文件在文件夹的位置先后顺序扫描加载,所以不能保证对象的初始化顺序,当我这个对象要依赖于另一个组件,也就是说被依赖的组件会比该对象先注册到IOC容器中,这时候在当前组件上加上@DependsOn("依赖组件的方法名
阅读全文
摘要:方法引用共分4类: 1.类名::静态方法名; 2.引用名(对象名)::实例方法名; 3.类名::实例方法名 注意:使用要求lambda的第一个参数作为方法的调用者,之后的参数作为参数传入这个方法; 4.构造方法引用:类名::new。
阅读全文
摘要:四大函数式接口: 1.消费型接口:Consumer<T> : void accept(T t) 2.供给型接口:Supplier<T>: T get( ) 3.函数型接口:Function<T,R> : R apply( T t) 3.1.两个参数一个结果: BiFunction<T, U, R>
阅读全文
摘要:1. 运行时数据区 1.1 程序计数器 可以理解为当前线程所执行的字节码的行号指示器,字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,它是程序控制流的指示器。 注意:1.在任何一个确定的时刻,一个处理器都会只执行一条线程中的指令。java虚拟机中的多线程是通过线程轮流切
阅读全文
摘要:微服务的特点: 1.单一职责原则:每个服务应该负责单独的功能,正是SOLID原则之一。 2.独立部署、升级、扩展和替换:每个服务都可以单独部署及重新部署而不影响整个系统。这使得服务很容易升级。 3.支持异构/多种语言:每个服务的实现细节都与其他服务无关,这使得服务之间能够解耦,团队可以针对每个服务选
阅读全文
摘要:Eureka的高可用解决方案 一、双机部署 分析: 1.Eureka的server端相互注册,自动相互同步应用信息; 2.Eureka的client端注册到任意一个上面即可,但为了保险起见,我们常同时注册到两个上面,来防止client注册到server1后,server1挂掉,client重启后注册
阅读全文