- 博客(97)
- 收藏
- 关注
原创 商城系统分布式下单
比如feginC()发生错误,这时候需要回滚feginB,这时候可以采用在test()方法中catch异常然后发送消息,进行数据的补偿回滚,我们采用在fegin主动调用延时队列的方式,就不用catch了,并且还可以做到期自动关单。二、在try的时候,直接发送一条消息,而不是登发生异常以后再发送,这条消息是发到延迟队列的,这样做的好处是,不用再catch中做补偿了,延时队列中的消息到时间以后,判断数据状态,需要补偿的进行数据的回滚,不需要的直接忽略。fegin中的消息队列就是为了fegin事务回滚用的。
2023-11-08 23:23:03
586
转载 Java实现RSA加密
Java实现RSA加密1.原理2.实现过程3.公式4.举例5.最后简单谈谈RSA的安全性在RSA密码应用中,公钥KU是被公开的,即e和n的数值可以被第三方窃听者得到。破解RSA密码的问题就是从已知的e和n的数值(n等于pq),想法求出d的数值,这样就可以得到私钥来破解密文。从上文中的公式:d ≡e-1 (mod((p-1)(q-1)))或de≡1 (mod((p-1)(q-1))) 我们可以看出。密码破解的实质问题是:从Pq的数值,去求出(p-1)和(q-1)。换句话说,只要求出p和q的
2022-01-14 15:25:13
15750
3
转载 git rebase
在之前的文章当中我们介绍了git merge的用法,明白了通过git merge我们可以合并两个分支的改动。这样我们就可以很方便地进行协同开发了,每个人都在自己的分支下开发代码,开发完毕之后再一起合并到master分支。通过这种方式可以保证大家的代码不会陷入混乱,但是这样有一个隐含的缺陷。缺陷就是我们之前说过的,当我们合并两个没有上下游关系的分支时,git会自动替我们生成一个merge commit,记录此次的merge。记录merge操作没有什么问题,问题是如果我们遇到特殊情况需要反复merge的时候,
2021-11-24 14:44:45
310
转载 maven 的几个内置属性
内置属性主要有两个常用内置属性: ${basedir}项目的根目录(包含pom.xml文件的目录),${version}项目版本POM属性用户可以使用该属性引用POM文件中对应元素的值,常用的POM属性包括:${project.build.sourceDirectory}:项目的主源码目录,默认为 src/main/java${project.build.testSourceDirectory}:项目的测试源码目录,默认为 src/test/java${project.build.direc
2021-11-03 11:26:34
405
转载 maven 几个常用插件
maven-compiler-plugin编译Java源码,一般只需设置编译的jdk版本<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.6.0</version> <configuration>
2021-11-03 11:07:57
748
转载 Spring 拦截器和过滤器的区别
https://www.zhihu.com/question/30212464/answer/1786967139
2021-10-27 09:57:45
152
转载 线程池中shutdown()和shutdownNow()方法的区别
https://www.cnblogs.com/aspirant/p/10265863.html
2021-09-08 18:48:06
163
转载 spring cloud笔记一
前言: 十分喜欢尚硅谷老师的课程,此文章为记录周阳老师的2020最新版Springcloud的学习笔记。 技术版本cloudHoxton.SR1boot2.2.2.RELEASEcloud alibaba2.1.0.RELEASEjavajava8Maven3.5及以上Mysql5.7及以上1. 新建Maven父工程 cloud2...
2021-08-17 11:10:37
115
原创 Spring事务
环境搭建 <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.44</version> </dependency> //导入spring-jdbc以后会自动导入spr
2021-08-06 13:38:21
94
转载 Cglib动态代理
<dependency> <groupId>cglib</groupId> <artifactId>cglib</artifactId> <version>3.2.5</version></dependency>public class UserDao{ public void save() { System.out.println("保存数据");
2021-08-05 14:28:02
88
转载 Java反射机制详解
对于一般的开发者,很少需要直接使用Java反射机制来完成功能开发,但是反射是很多框架譬如 Spring, Mybatis 实现的核心,反射虽小,能量却很大。本文主要介绍反射相关的概念以及API的使用,关于反射的应用将在下一篇文章中介绍反射的介绍反射(Reflection) 是 Java 在运行时(Run time)可以访问、检测和修改它本身状态或行为的一种能力,它允许运行中的 Java 程序获取自身的信息,并且可以操作类或对象的内部属性。Class 类介绍:Java虚拟机为每个类型管理一个Class
2021-08-04 17:44:01
157
原创 Spring中的初始化(Initialization)是什么意思
首先需要说一样,JVM中的Bean的初始化和实例化还是不一样的,这里先记录spring中的初始化,其他的后面更新。在spring中的初始化之前要经过这两步骤 1)new 一个Bean这个 时候Bean里面的属性是空的 2)给Bean的属性赋值 3)将创建的bean放到Bean工厂(BeanFactory)中...
2021-08-03 17:28:28
1371
转载 IDEA GIT不提交当前分支修改的代码下如何切换分支
在工作中通常会遇见这样的情况就是:现在正在当前new分支下进行代码开发,这个时候在另一old分支上有一处bug需要修改,切换的时候就必须将new分支修改的代码进行提交,但是有可能这个未通过编译的代码,所以这个时候就是用git stash将new分支上修改的代码进行暂存。git stash 命令的作用就是将目前还不想提交的但是已经修改的内容进行保存至堆栈中,后续可以在某个分支上恢复出堆栈中的内容;git stash 作用的范围包括工作区和暂存区中的内容,没有提交的内容都会保存至堆栈中;例如突然线上出现 bu
2021-07-29 14:40:27
409
原创 Spring AOP使用注解版
/** * 1.导入AOP的依赖: spring-aspects包 * 2.定义一个页面逻辑类 * 3.定义一个切面类 * 4.将切面类和业务逻辑类加入到spring容器 * 5.为了区分哪个类是切面类,给切面类加@Aspect注解 * 6.开启注解版的事务@EnableAspectJAutoProxy * */@EnableAspectJAutoProxy@Configurationpublic class MainConfigOfAOP { @Bean publ.
2021-07-28 18:13:16
198
转载 interrupt和park的区别
【Java】Java线程中断(Interrupt)与阻塞(park)的区别对于很多刚接触编程的人来说,对于线程中断和线程阻塞两个概念,经常性是混淆起来用,单纯地认为线程中断与线程阻塞的概念是一致的,都是值线程运行状态的停止。其实这个观点是错误的,两者之前有很大的区别,下文就着重介绍两者之间的区别。线程中断在一个线程正常结束之前,如果被强制终止,那么就有可能造成一些比较严重的后果,设想一下如果现在有一个线程持有同步锁,然后在没有释放锁资源的情况下被强制休眠,那么这就造成了其他线程无法访问同步代码块。因此
2021-07-22 14:11:24
847
原创 MyISAM和uInnoDB数据库的区别
MyISAMInnoDB索引类型非聚簇索引(索引和数据存放在一起)聚簇索引(索引和问题不存放在一起)是否支持事务否是是否支持表锁是是是否支持行锁否是是否支持外键否是是否支持全文索引是5.6以后支持适合操作类型大量select大量insert delete update...
2021-06-28 17:51:34
78
转载 redis是怎么实现锁的
前言本文主要给大家介绍了关于redis实现加锁的几种方法,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。redis加锁分类redis能用的的加锁命令分表是INCR、SETNX、SET2. 第一种锁命令INCR这种加锁的思路是, key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR 操作进行加一。然后其它用户在执行 INCR 操作进行加一时,如果返回的数大于 1 ,说明这个锁正在被使用当中。1、 客户端A请求服务器获取key的值为1表示获取了锁
2021-06-25 15:29:45
330
转载 黑马rocketmq笔记一
1. MQ介绍##1.1 为什么要用MQ消息队列是一种“先进先出”的数据结构[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oRv75r0L-1614850582212)(img/queue1.png)]其应用场景主要包含以下3个方面应用解耦系统的耦合性越高,容错性就越低。以电商应用为例,用户创建订单后,如果耦合调用库存系统、物流系统、支付系统,任何一个子系统出了故障或者因为升级等原因暂时不可用,都会造成下单操作异常,影响用户使用体验。[外链图片转存失败,源站
2021-03-04 17:37:18
1266
1
转载 http加密
最近公司需要通过公网与其它平台完成接口对接,但是基于开发时间和其它因素的考虑,本次对接无法采用https协议实现。既然不能用https协议,那就退而求其次采用http协议吧!那么问题来了!在对接的过程中我们需要对如下问题进行相关的考虑:1、敏感信息的不可见性 使用http协议传输数据很容易被抓包监听传输内容,如果这些数据中存在敏感信息的话,风险太大了。因此我们需要对我们的传输数据进行一定的加密处理,即使数据被预期接收方之外的其它不法分子拦截,也无法轻易的破译此次请求的传输内容!最简单的方案就是对..
2021-03-01 15:12:48
3159
转载 字符串常量池和运行时常量池是在堆还是在方法区?
JAVA1.8 逻辑上是存在于方法区,物理上是存在于堆空间https://www.cnblogs.com/cosmos-wong/p/12925299.html
2021-02-22 18:48:47
939
原创 常量池到底是放在堆空间还是方法区
JDK1.6及以前,常bai量池在方法du区,这时的方法区也叫做zhi永久代dao;JDK1.7的时候zhuan,方法区合并到了堆shu内存中,这时的常量池也可以说是在堆内存中;JDK1.8及以后,方法区又从堆内存中剥离出来了,但实现方式与之前的永久代不同,这时的方法区被叫做元空间,常量池就存储在元空间。...
2021-02-22 18:10:04
3863
原创 static关键字
为什么要使用static关键字在我们编写类的时候,需要书写类中的一些变量和方法。而我们每new对象,就会生成一个对象的实例,每个实例的属性和方法是私有的。当比如我们新建一个类为ChinesePeople(中国人),里面有一个属性nationality(国籍),该类的每一个实例的国籍属性都是 Chinese,然后我们就可以将这个属性设置为静态的(static),这个时候这个变量就可以被类的每一个实例所共同拥有了。static 可以修饰的类型属性,方法,代码块,内部类(不能修饰构造方法)一。修饰变量p
2021-02-20 15:52:52
343
原创 JUC(一)
ReentrantLock,可重入锁的简单使用package com.atguigu.juc;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;/** * @author yongchaoliu * @create 2021-02-19 13:56 */public class Test { public static void main(String[]
2021-02-19 15:26:53
114
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人