自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 分布式事务 之 04 atomikos JTA/XA全局事务

文章目录1. atomikos2. 直接使用TransactionEssentials的API新建mysql数据库表案例代码:3、TransactionEssentials与spring、mybatis整合4. Atomikos配置5. 打印日志参考相关文章:mysql 对XA事务的支持JTA规范1. atomikosAtomikos公司官方网址为:https://www.atomikos.com/。其旗下最著名的产品就是事务管理器。产品分两个版本:TransactionEssentia

2021-11-19 21:31:56 31

转载 分布式事务 之 03 JTA规范

文章目录JTA规范事务模型2 JTA规范--接口定义参考JTA规范下载地址:http://download.oracle.com/otn-pub/jcp/jta-1.1-spec-oth-JSpec/jta-1_1-spec.pdfJTA规范事务模型Java事务API(JTA:Java Transaction API)和它的同胞Java事务服务(JTS:Java Transaction Service),为J2EE平台提供了分布式事务服务(distributed transaction)的能力。 某种

2021-11-19 20:40:52 23

转载 分布式事务 之 02 mysql 对XA事务的支持

文章目录概述1. MySQL XA 事务SQL语法2. Mysql XA事务状态3 关于XID的说明4、通过jdbc操作mysql xa事务5 MySQL Connector/J XA事务支持源码简单分析参考概述MySQL 从5.0.3开始支持XA分布式事务,且只有InnoDB存储引擎支持。MySQL Connector/J 从5.0.0版本之后开始直接提供对XA的支持。需要注意的是, 在DTP模型中,mysql属于资源管理器(RM)。而一个完整的分布式事务中,一般会存在多个RM,由事务管理器TM来

2021-11-19 19:20:17 18

原创 【Seata】Seata AT和XA模式联系和区别

文章目录概述一、分布式事务产生得原因:1.1、数据库分库分表1.2应用SOA化二、分布式事务解决方案XA模式三、Seata AT(TXC) 模式3.1基本概念3.2AT模式工作流程3.2.1第一阶段:3.2.2第二阶段:3.2.3:AT模式读写隔离实现方式3.2.4:完整的AT在Seata所制定的事务模式下的模型图3.2.5:Seata AT模式优劣:四、XA 模式 运行在 Seata 定义的事务框架内五:Seata AT与XA的优劣参考概述确切来说seata at是xa的实现,并且进行了改进。一、分

2021-11-19 14:45:29 522

原创 【Seata】理解什么是AT、TCC、Saga

参考Seata 是什么? 官方中文文档分布式事务 Seata(二) 理解什么是AT、TCC、Saga

2021-11-17 16:21:35 5

原创 【Seata AT 模式启动源码分析】 一 TM和RM端源码实现 ( SeataAutoConfiguration)

文章目录1. 客户端1.1 全局事务ID1.2 分支(本地)事务执行1.2.1 本地事务代理1.2.2 本地事务执行过程1. 客户端1.1 全局事务IDspringboot引入seata后,通过SeataAutoConfiguration引入自动配置:SeataAutoConfiguration会注入GlobalTransactionScanner对象:GlobalTransactionScanner会扫描@GlobalTransactional:GlobalTransactionSca

2021-11-16 16:35:56 857

原创 【Seata】Seata服务端搭建(file、nacos)

下载源码:格式:python nacos-config.py nacos的ip地址:端口 nameSpaceId其中nameSpaceId如下:完整示例:\seata-source-1.4.0\script\config-center\nacos>python nacos-config.py 10.40.14.111:8848 1b1a6652-79a2-4bc6-b0d9-e75d9d65d30dinit nacos config finished, please start

2021-11-12 16:41:35 1103

原创 github下载文件代理

https://ghproxy.com/

2021-11-10 21:48:25 19

原创 【seata】为什么需要分布式事务?(2PC、TCC)

参考微信开放平台开发——网页微信扫码登录(OAuth2.0) 文章末尾有公众号和网页2种对比微信oauth2授权登录实践微信公众平台开发(71)OAuth2.0网页授权 微信公众号,和网页由所区别,但原理类似...

2021-11-10 16:48:33 917

原创 cookie和session的详解与区别

文章目录前言1 Cookie机制1.1 什么是Cookie1.2 记录用户访问次数1.3 Cookie的不可跨域名性1.4 Unicode编码:保存中文1.5 BASE64编码:保存二进制图片1.7 Cookie的有效期1.8 Cookie的修改、删除1.11 Cookie的安全属性1.12 JavaScript操作Cookie1.13 案例:永久登录2 Session机制2.1 什么是Session2.2 实现用户登录2.3 Session的生命周期2.4 Session的

2021-11-05 15:59:14 17

原创 spring Security OAuth2 报错 Redirect URI mismatch(curl 需要encode转换)

postman 获取 token 时报错:{"error":"invalid_grant","error_description":"Redirect URI mismatch."}检查后,需要在参数中加入 redirect_uri 后正常:注意:不需要进行url encode转换;如果是通过curl命令进行访问,需要对该字段进行 url encode转换参考Security OAuth2 报错 Redirect URI mismatch...

2021-11-02 15:12:38 19

转载 【spring security oauth2】入门例子(helloworld ) 1- 基础版

概述Spring Security是一个用于快速实现Web应用安全、认证的框架,可以快速和Spring Boot整合。开发者可以编写配置类继承WebSecurityConfigurerAdapter类,重写config方法自定义登录页面、登录失败逻辑、权限不足逻辑等,并且可以编写Filter实现更加复杂的图片验证码、短信验证码功能。Spring Security也可以快速实现OAuth2.0授权服务器和资源服务器。在一个Spring Boot应用中,可以使用@EnableAuthorizationSe

2021-11-01 15:22:53 34

原创 【spring security oauth2】 什么是OAuth2及重要名词解释

什么是OAuth2?OAuth2是一个关于授权的开放标准,核心思路是通过各类认证手段(具体什么手段OAuth2不关心)认证用户身份,并颁发token(令牌),使得第三方应用可以使用该令牌在限定时间、限定范围访问指定资源。主要涉及的RFC规范有RFC6749(整体授权框架),RFC6750(令牌使用),RFC6819(威胁模型)这几个,一般我们需要了解的就是RFC6749。获取令牌的方式主要有四种,分别是授权码模式,简单模式,密码模式和客户端模式,如何获取token不在本篇文章的讨论范围,我们这里假定客户

2021-11-01 10:18:32 12

原创 【spring security oauth2】JSON Web Token(JWT)作用

文章目录什么是JWTJWT适用场景与不适用场景参考什么是JWT终于来到了著名的JWT部分了,JWT全称为Json Web Token,最近随着微服务架构的流行而越来越火,号称新一代的认证技术。今天我们就来看一下,jwt的本质到底是什么。我们先来看一下OAuth2的token技术有没有什么痛点,相信从之前的介绍中你也发现了,token技术最大的问题是不携带用户信息,且资源服务器无法进行本地验证,每次对于资源的访问,资源服务器都需要向认证服务器发起请求,一是验证token的有效性,二是获取token对应的

2021-11-01 10:09:36 23

原创 【spring security oauth2】配置类AuthorizationServerConfigurerAdapter(JwtAccessTokenConverter)

文章目录1. AuthorizationServerConfigurerAdapter2. ClientDetailsServiceConfigurer1.1 JdbcClientDetailsService类1.2 InMemoryClientDetailsService类3. AuthorizationServerEndpointsConfigurer端点配置3.1 配置令牌 管理 (jwtAccessTokenConverter)3.2 AuthenticationManager3.2.1 UserD

2021-10-31 21:00:40 53

原创 【idea】IDEA导入多个maven模块,无法识别部分子模块

问题今天导入一个Maven项目,里面有多个Maven子模块。完成后发现部分子模块未识别(未识别的标记为A),代码都是灰色的。原因可能是因为我导入外部的项目时,只加载了父Maven,而内部的子Maven没有被搜索到。确切的来说,是父模块的pom.xml此时仅包含部分子模块,也就说有一部分暂(标记为A的子模块)时被排除掉了,因此在加载父pom.xml时,默认不加载标记为A的子模块。解决方法:方法一:1、打开“View → Tool Windows → Maven”出现如下界面2、点击加号,选择子

2021-10-31 12:00:40 42

原创 【Gateway】微服务网关组件 - Spring Cloud Gateway之LoadBalancerClientFilter原理

文章目录概述参考概述LoadBalancerClientFilter是一个全局过滤器,系统自动注入,LoadBalancerClientFilter 根据 lb:// 前缀过滤处理,使用 serviceId 选择一个服务实例,从而实现负载均衡。1: public class LoadBalancerClientFilter implements GlobalFilter, Ordered { 2: 3: private static final Log log = LogFactory.get

2021-10-27 15:52:01 54

转载 【jvm jdk】G1垃圾收集器详解

文章目录什么是G1垃圾收集器G1的堆内存划分G1的运行过程参考什么是G1垃圾收集器GC收集器的三个考量指标:占用的内存(Capacity)延迟(Latency)吞吐量(Throughput)随着硬件的成本越来越低,机器的内存也越来越大,GC收集器占用的内存基本上可以容忍。而吞吐量可以通过集群(增加机器)来解决。随着JVM中内存的增大,STW的时间成为JVM急迫解决的问题,如果还是按照传统的分代模型,使用传统的垃圾收集器,那么STW的时间将会越来越长。在传统的垃圾收集器中,STW的时间是无

2021-10-18 14:09:59 42

原创 JVM结构原理

文章目录概览参考概览1.类加载器(ClassLoader):在JVM启动时或者在类运行时将需要的class加载到JVM中(把类加载至方法区)。2.执行引擎:负责执行class文件中包含的字节码指令3.内存区(也叫运行时数据区)是在JVM运行的时候操作所分配的内存区。运行时内存区主要可以划分为5个区域,如图:1.方法区(Method Area):用于存储类结构信息的地方,包括常量池、静态变量、构造函数等。虽然JVM规范把方法区描述为堆的一个逻辑部分, 但它却有个别名non-heap(非堆)

2021-10-14 15:16:30 223

原创 分布式事务及解决方案(2PC、3PC、TCC事务补偿、本地消息表)

参考面试必问:分布式事务六种解决方案分布式事务的四种解决方案

2021-09-30 11:21:49 15

原创 【RocketMQ】消息重试、重试次数设置、死信队列

文章目录1. 死信队列1.1 死信特性1.2 查看死信消息参考1. 死信队列上一篇《RocketMQ:消息重试》中我们提到当一条消息消费失败时,RocketMQ会进行一定次数的重试。重试的结果也很简单,无非就是在第N次重试时,被成功消费。或者就是经过M次重试后,仍然没有被消息。这通常是由于消费者在正常情况下无法正确地消费该消息。此时,RocketMQ不会立即将消息丢弃,而是将其发送到该消费者对应的特殊队列中去。在RocketMQ中,这种正常情况下无法被消费的消息被称为死信消息(Dead-Lette

2021-09-28 16:09:30 119

原创 【Sentinel入门】02 @SentinelResource语法(blockHandler、fallback)

文章目录概述pom.xmlapplication.properties:DemoApplication:DemoControllerAopConfigurationExceptionUtilTestServiceImpl测试总结概述改造自官网 sentinel-demo-annotation-spring-aoppom.xml <dependencies> <dependency> <groupId>com.alibaba

2021-09-23 15:48:49 21

原创 【Sentinel入门】01 最简单的例子 helloworld

参考使用 springcloud.alibaba 的Sentinel 时,进行流控规则配置时,资源名的填写方式不同造成不同的显示效果

2021-09-22 22:00:45 15

转载 sentinel流控模式之关联类型

文章目录1. 概念2. 示例代码2.1 测试2.1.1 为了能够模拟出效果,使用postman模拟2.1.2 开启测试----访问录制的gif参考1. 概念当两个资源之间具有资源争抢或者依赖关系的时候,这两个资源便具有了关联。比如对数据库同一个字段的读操作和写操作存在争抢,读的速度过高会影响写得速度,写的速度过高会影响读的速度。如果放任读写操作争抢资源,则争抢本身带来的开销会降低整体的吞吐量。可使用关联限流来避免具有关联关系的资源之间过度的争抢,举例来说,read_db 和 write_db 这两个资

2021-09-21 14:18:51 30

转载 Sentinel整合Gateway控制台不显示API管理

文章目录1. 问题场景2. 原因分析2.1. 查看源码页面2.2 2. 查看客户端源码3. 解决方案3.1. 配置JVM启动参数3.2 启动类直接设置系统参数1. 问题场景在Spring Cloud Gateway整合Sentinel时,发现API管理这个菜单没有显示。在官方文档里,是有这个菜单的:2. 原因分析2.1. 查看源码页面在控制台对应的页面sidebar.html中,我们发现这个菜单时通过entry.isGateway这个条件语句来判断的,那么肯定是因为这个判断了不是网关,所以才

2021-09-19 23:44:20 108

原创 网关流控实现原理 (gateway集成Sentinel )

网关流控实现原理当通过 GatewayRuleManager 加载网关流控规则(GatewayFlowRule)时,无论是否针对请求属性进行限流,Sentinel 底层都会将网关流控规则转化为热点参数规则(ParamFlowRule),存储在 GatewayRuleManager 中,与正常的热点参数规则相隔离。转换时 Sentinel 会根据请求属性配置,为网关流控规则设置参数索引(idx),并同步到生成的热点参数规则中。外部请求进入 API Gateway 时会经过 Sentinel 实现的 fil

2021-09-19 18:52:23 96

转载 spring.main.allow-bean-definition-overriding(allowBeanDefinitionOverriding)

spring.main.allow-bean-definition-overriding设置为true,表示后发现的bean会覆盖之前相同名称的bean到底allowBeanDefinitionOverriding应该设置true还是false?上面代码中可以看到,spring中默认是true,也就是默认支持名称相同的bean的覆盖。而springboot中的默认值是false,也就是不支持名称相同的bean被覆盖。那么我们自己应该如何选择呢?这里笔者认为默认不覆盖比较好。因为还是推荐一个系统中不

2021-09-18 21:39:21 90

原创 【mysql】Windows下MySQL-5.7版本下载与安装教程

linux下mysql的安装与使用Windows下MySQL-5.7版本下载与安装教程

2021-09-18 13:58:44 61

转载 【Gateway】微服务网关组件 - Spring Cloud Gateway

文章目录1. 为什么要有服务网关?2. Spring Cloud Gateway简介3. 核心概念3.1 Route(路由)3.2. Predicate(谓词)3.3. Filter(过滤器)4. Spring Cloud Gateway架构图5. 创建Spring Cloud Gateway项目5.1 默认路由5.2 自定义转发路由6. 路由配置的两种形式6.1 路由到指定的URL6.2 路由到指定的微服务7. 路由谓词工厂7.1 内置的路由谓词工厂7.2 自定义路由谓词工厂8. 过滤器工厂8.1 内置的

2021-09-17 15:02:24 50

原创 【Gateway】springCloud微服务组件:Gateway(网关)

文章目录1. 基本配置2. 静态路由3. 动态路由参考1. 基本配置1.导包<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gateway</artifactId></dependency><dependency> <groupId>com.ali

2021-09-17 11:00:37 20

原创 【mysql】ACID靠什么保证的?

ACID靠什么保证的?A 原子性由undo log日志保证,它记录了需要回滚的日志信息,事务回滚时撤销已经执行成功的sqlC一致性由其他三大特性保证、程序代码要保证业务上的一致性I 隔离性由MVCC来保证D持久性由内存+redo log来保证,mysql修改数据同时在内存和redo log记录这次操作,宕机的时候可以从redo log恢复。redolog的刷盘会在系统空闲时进行...

2021-09-15 22:45:53 70

原创 @Autowired @ Resource @Required @Component、@Controller、@Service

要运用注解,需要注册相应的BeanPostProcessor后置处理器,因此汇总下:@Autowired注解,那么就必须事先在 Spring 容器中声明 AutowiredAnnotationBeanPostProcessor Bean。传统声明方式如下<bean class="org.springframework.beans.factory.annotation. AutowiredAnnotationBeanPostProcessor "/> @ Resource 、@

2021-09-11 23:18:19 18

原创 Spring 中经典的 9 种设计模式

文章目录1.简单工厂(非23种设计模式中的一种)2.工厂方法3.单例模式4.适配器模式参考1.简单工厂(非23种设计模式中的一种)实现方式:BeanFactory。Spring中的BeanFactory就是简单工厂模式的体现,根据传入一个唯一的标识来获得Bean对象,但是否是在传入参数后创建还是传入参数前创建这个要根据具体情况来定。实质:由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类。设计意义:松耦合。 可以将原来硬编码的依赖,通过Spring这个beanFactory这个工厂来注入

2021-09-11 17:50:51 22

原创 【设计模式】策略模式与模板模式的区别

文章目录概述如何区别参考概述策略模式与模板模式在Spring中都广泛存在:JDBCTemplate、RedisTemplate、MongoTemplate等均是典型的模板模式。Spring MVC中各种处理handler,是典型的策略模式。这两个模式感觉差不多,这两个模式怎么区别呢?如何区别策略模式和模板模式有一个最重要的区别,即模板模式一般只针对一套算法,注重对同一个算法的不同细节进行抽象提供不同的实现。而策略模式注重多套算法多套实现,在算法中间不应该有交集,因此算法和算法只间一般不会有

2021-09-11 17:47:57 28

转载 Spring MVC的web.xml配置详解

文章目录参考1、spring 框架解决字符串编码问题:过滤器 CharacterEncodingFilter(filter-name)2、在web.xml配置监听器ContextLoaderListener(listener-class)ContextLoaderListener的作用就是启动Web容器时,自动装配ApplicationContext的配置信息。因为它实现了ServletContextListener这个接口,在web.xml配置这个监听器,启动容器时,就会默认执行它实现的方法

2021-09-10 11:03:57 58

原创 线程池参数详解

文章目录1. 线程池参数2. 队列相关文章:queue & Deque 详细解析线程池参数1. 线程池参数构造函数: public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit

2021-09-09 17:05:34 9

原创 可达性分析算法GC Roots

当前主流的商用程序语言(Java、C#,上溯至前面提到的古老的Lisp)的内存管理子系统,都是通过可达性分析(Reachability Analysis)算法来判定对象是否存活的。这个算法的基本思路就是通过一系列称为“GC Roots”的根对象作为起始节点集,从这些节点开始,根据引用关系向下搜索,搜索过程所走过的路径称为“引用链”(Reference Chain),如果某个对象到GC Roots间没有任何引用链相连,或者用图论的话来说就是从GC Roots到这个对象不可达时,则证明此对象是不可能再被使用的。

2021-09-09 14:30:48 25

原创 【微服务sentinel】 控制台 dashboard 安装部署

sentinel-dashboard官网下载地址启动 Sentinel 控制台需要 JDK 版本为 1.8 及以上版本。java -Dserver.port=8080 -Dcsp.sentinel.dashboard.server=localhost:8080 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard.jar访问:http://127.0.0.1:8080/其中 -Dserver.port=8080 用于指定 Senti

2021-09-09 11:55:56 58

转载 mysql驱动与数据库及jdk各版本对应关系

mysql驱动与jdk版本还有着一定的关系,经现场实测及搜索资料,记录如下:应用JDK版本1.5 测试环境MySQL版本5.7 驱动版本5.1.40.jar 正常 生产环境MySQL版本8.0 驱动版本5.1.40.jar 连接不上 生产环境MySQL版本8.0 驱动版本8.0.11.jar 报JDK版本太低应用JDK8 生产环境MySQL版本8.0 驱动版本

2021-09-08 17:30:38 408

原创 为什么局部内部类和匿名内部类只能访问final的局部变量?

文章目录1. 问题描述2. 原因2.1 为什么外部成员变量不会有问题?1. 问题描述JDK1.8public class OutClass { private int age = 12;public class OutClass { private int age = 12; age= 11; public void outPrint( int x, int y) { x= 10; class InClass {

2021-09-06 20:16:47 11

空空如也

空空如也

空空如也

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

TA关注的人 TA的粉丝

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