- 博客(116)
- 收藏
- 关注
原创 分布式事务
两个微服务模块之间通过网络完成远程协作的事务称为分布式事务.比如订单服务和库存服务就构成一个分布式事务的场景,他们是具有原子性特征的,要么都成功,要么都失败.
2022-09-14 00:22:05 349 1
原创 redis哨兵机制
哨兵模式是在redis主从架构(从节点只做冗余备份)基础之上实现的。因为主从架构中如果master挂掉的话,整个架构就废掉了,不能保证高可用,但是哨兵模式可以保证高可用,当master挂掉,会通过哨兵机制重新选举一个master出来。但哨兵模式还是有缺陷的,,因此后续还会出现redis集群的搭建,可以让多个master同时提供服务。
2022-09-11 18:14:32 525
原创 多线程之对共享变量的认识
共享变量测试public class VolatileTest { private int b = 5555; public int getB() { return b; } public void setB(int b) { this.b = b; } public static void main(String[] args) throws InterruptedException { Vo
2022-05-29 21:04:33 239
原创 AQS同步队列
AQS原理分析独占锁AQS基础模型/** * AQS抽象类 */public abstract class AbstractQueuedSynchronizer extends AbstractOwnableSynchronizer{//指向同步队列队头private transient volatile Node head;//指向同步的队尾private transient volatile Node tail;//同步状态,0代表锁未被占用,1代表锁已被占用pri
2022-04-24 23:48:06 342
原创 ThreadLocal的使用
入门案例package com.che.springbootdemo.thread;/** * @author cyh * @Description * @date 2022/4/11 20:57 * 在多线程下操作共享数据时,通过ThreadLocal来维护每个线程的数据安全 */public class ThreadLocalTest { private ThreadLocal<String> threadLocal=new ThreadLocal<>
2022-04-11 22:20:03 215
原创 线程常用方法使用
/** * 验证当sleep时,线程被打断 * @throws InterruptedException */ @Test public void test1() throws InterruptedException { Thread t1 = new Thread(() -> { try { TimeUnit.SECONDS.sleep(2); S.
2022-04-10 00:35:27 323
原创 分布式系统中全局唯一ID生成
package com.hmdp.utils;import org.springframework.data.redis.core.StringRedisTemplate;import org.springframework.stereotype.Component;import java.time.LocalDateTime;import java.time.ZoneOffset;import java.time.format.DateTimeFormatter;@Componentp
2022-03-28 23:03:28 554
原创 Spring学习
ApplicationContext重要的四个接口国际化(输入不同的时区获取不同的语言)获取文件资源获取环境信息发布事件(方便组件之间解耦,实现通信)第一步第二步第三步,执行
2022-03-25 00:12:26 92
原创 设计模式-策略模式
策略者接口package com.mashibing.cyh.strategy;/** * @author cyh * @Description * @date 2022/3/23 23:05 * 策略接口 */public interface Strategy { void test();}策略者实体类实体类Apublic class A implements Strategy{ @Override public void test() { .
2022-03-23 23:25:29 181
原创 java-泛型
从泛型类派生子类成员方法与泛型方法的区别静态的泛型方法(如果是成员方法是不能变成静态的)泛型可变参数定义泛型类型通配符上限与下限List<? extend Cat> 泛型只能是cat或者cat的子类List<? superCat> 泛型只能是cat或者cat的父类...
2022-03-23 21:44:02 171
原创 springboot中跨域问题解决
package com.pug.security.config;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.web.cors.CorsConfiguration;import org.springframework.web.cors.UrlBasedCorsConfig
2022-03-21 21:43:24 99
原创 SpringSecurity+JWT使用
maven依赖 <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependen
2022-03-20 22:30:32 1556 3
原创 springMvc之拦截器的使用
自定义拦截器,实现HandlerInterceptor接口public class JWTInterceptor implements HandlerInterceptor{ @Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { String token = request.getHeader("t
2022-03-20 18:08:11 461
原创 回调函数的用法
定义接口package com.zhengqing.demo.canal.mytest.huidiaohanshu;public interface CallBack { //执行回调操作的方法 void execute(Integer a);}具体使用方法package com.zhengqing.demo.canal.mytest.huidiaohanshu;/** * @author cyh * @Description * @date 2022/3/15
2022-03-15 14:20:11 551
原创 jmeter压测工具的简单使用
函数_counter(_random与_time使用类似)断言响应断言大小断言断言持续时间逻辑控制器if逻辑控制器forEach控制器循环控制器关联x-path(两个业务存在关系,第二个请求参数需要第一个请求的结果时)...
2022-02-25 15:11:12 83
原创 分布式事务解决方案
分布式事务基本理论CAP理论C (一致性Consistency)A (可用性Availability)P (网络分区容错性Partition tolerance)CAP组合方式AP 订单退款成功,明日账户到账CP zookeeper就是,跨行转账,一次转账请求要等待双方银行都完成整个事务才算完成AC 也就是单机部署服务,就涉及不到分布式的环境了分布式事务解决方案基于XA协议的两阶段提交(2PC)XA协议:XA是一个分布式事务协议。XA中大致分为两部分:事务管理器和本地资源管理
2022-02-16 22:33:23 957
原创 arthas(阿尔萨斯)的使用
jvm相关命令之dashboard结果集介绍thread相关的命令thread 查看所有的java线程thread 1 查看id为1的线程的信息thread -n 3 查看最繁忙的3条线程thread -b 查看当前阻塞的线程thread -i 1000 -n 3 指定采样时间间隔,每过1000毫秒,显示最占时间的3个线程thread --state WAITING 查看处于等待状态的线程jvm相关命令sysenvvmoptiongetstaticognlcl
2022-02-13 21:48:29 795
原创 箭头函数和普通函数this指向问题
var obj = { name: 'obj', sayName1: () => { return this; }, sayName2(){ return this } }; console.log(obj.sayName1()) //window console.log(obj.sayName2()) //obj
2022-01-21 17:42:35 65
原创 java中i++与++i区别
i++分析过程1.首先将数字5压栈2.istore_1将数字5出栈,放到局部变量表索引为1的位置上,也就是将5这个值赋值给i变量3.iload_1,将局部变量表中索引为1位置上的值入栈,也就是数字54.iinc 1 by 1,对局部变量表索引为1位置上的值加1操作,此时局部变量表中索引为1位置上的值为65.istore_1,将第三步加载进来的数字5出栈,放在局部变量表索引为1的位置上,会把第四步的赋值操作覆盖掉++i分析过程跟i++做对比分析,就不写过程了。。。。。。...
2021-12-31 10:26:02 381
原创 java-关于static成员变量在jvm类加载时的执行过程
public class A{ public static void main(String[] args) throws ClassNotFoundException { //System.out.println(D.a); //对于调用final修饰静态变量,不会触发对象的初始化操作,跟实例化没关系,因此static代码块不会执行 System.out.println(D.b); //没有final修饰的静态变量,会触发对象的初始化操作,跟实例化没关系,因此s
2021-12-29 17:12:01 728
原创 Java多线程-线程池简单理解
其实就是在当你new对象创建线程池时,根据构造方法对线程池进行初始化,也就是指定工作线程,阻塞队列等等一些操作。当线程池执行任务的方法,其实就是往BlockingQueue中添加元素,然后线程池中的工作线程,直接从BlockingQueue中获取任务, 然后执行任务而已...
2021-12-24 10:52:14 342
原创 Java多线程-线程内如何抛出异常?
//设置setUncaughtExceptionHandler就能将线程内的异常抛出,否则只会存放在日志或者什么的public class ThreadThrowExcption { public static void main(String[] args) { Thread t1 = new Thread(() -> { int a =1/0; }); t1.setUncaughtExceptionHandler((
2021-12-23 11:50:19 2233
原创 Java多线程-wait和sleep的区别
sleep属于线程Thread的方法,wait属于顶级父类Object的方法sleep不需要去唤醒,时间到了线程状态就会从阻塞到就绪状态,wait需要去被唤醒,不然会一直为阻塞状态sleep不会释放锁,wait会释放当前锁,可以让其他线程使用使用wait时需要一个monitor,但是sleep不需要...
2021-12-23 09:59:31 405
原创 Java多线程-打断(interrupt)
package com.che.thread.interrupt;/** * @author cheyuhang on 2021/12/22 * 如果一个线程处于了阻塞状态(如线程调用了thread.sleep、thread.join、thread.wait、1.5中的condition.await、 * 以及可中断的通道上的 I/O 操作方法后可进入阻塞状态) * * 注意使用join时,阻塞的不是调用方,而是另一方,因此使用interrupt进行打断时应是另一方进行调用interrupt方
2021-12-22 17:44:30 758
原创 多线程-join操作
/** * 相当于阻塞住,直到调用join方法的线程结束后,才会往下执行 */public class ThreadJoin1 { public static void main(String[] args) throws Exception{ //t1线程 Thread t1 = new Thread(() -> { IntStream.range(1, 100).forEach(i -> {
2021-12-22 15:24:12 297
原创 Java多线程-daemon守护线程
案例一:/** * 什么是守护线程? * 当 JVM 中不存在任何一个正在运行的非守护线程时,则 JVM 进程即会退出。 * 如果 JVM 中没有一个正在运行的非守护线程,这个时候,JVM 会退出。换句话说,守护线程拥有自动结束自己生命周期的特性,而非守护线程不具备这个特点。 * * 应用场景: * JVM 中的垃圾回收线程就是典型的守护线程,如果说不具备该特性,会发生什么呢? * 当 JVM 要退出时,由于垃圾回收线程还在运行着,导致程序无法退出,这就很尴尬了!!!由此可见,守护线程的重要
2021-12-22 14:15:01 483
原创 java一些冷门的骚操作
public static void main(String[] args) { Integer[] a=new Integer[2]; test1(a); //但是前提是你传入的数组不能是null,必须至少一个长度,否则就会越界 System.out.println(Arrays.asList(a)); //将上面方法执行后的结果反向补偿给a数组 } public static void test1(Integer a[])...
2021-12-22 09:56:39 365
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人