自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 MySQL读取JSON转换

存储mysql5.7+开始支持存储JSON,后续不断优化,应用也越来越广泛你可以自己将数据转换成Json String后插入,也可以选择使用工具,而mybatis-plus就为此提供了非常简便的方式,只需要在字段上加上 @TableField(typeHandler = XxxTypeHandler.class),mybatis-plus就会自动帮你做转换,通用一般就两个: - com.baomidou.mybatisplus.extension.handlers.JacksonTypeHa

2022-03-16 19:23:15 3488

原创 RabbitMQ四种工作模式

RabbitMQ四种工作模式创建队列public final static String USER_LOG = "user.log";@Beanpublic Queue userLogQueue() { /* durable:队列是否可持久化,默认为true。 exclusive: 队列是否具有排它性,默认为false。 autoDelete:队列没有任何订阅的消费者时是否自动删除,默认为false。 */ retur

2021-03-29 21:22:49 319

原创 SpringBoot + Mongo文件上传和下载

SpringBoot + Mongo文件上传和下载文件上传 /** * 获得SpringBoot提供的mongodb的GridFS对象 */ @Resource private GridFsTemplate gridFsTemplate; /** * 文件上传 * * @param file 文件 * @param fileName 文件名 * @param fileType 文件类型

2021-03-28 23:32:50 680

原创 SpringBoot异步调用和异常捕获

SpringBoot异步调用和异常捕获线程池配置@Configuration@Slf4j@EnableAsyncpublic class AsyncThreadPoolConfig implements AsyncConfigurer { @Bean(name = "asyncExecutor") @Override public Executor getAsyncExecutor() { ThreadPoolTaskExecutor executor =

2021-03-28 17:36:07 1199 3

原创 SpringBoot2.x整合Elasticsearch

SpringBoot2.x整合Elasticsearch依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-elasticsearch</artifactId> <!-- 注意看下自己的elasticseatch的版本哦 --> <!-- SpringBoo

2021-03-28 16:44:49 241

原创 Redisson分布式锁实战+AOP

前言在实现分布式锁得基础上,利用自定义注解+AOP实现参数级别上的分布式锁。只需要在方法上加上自定义的注解即可,还可选择锁定参数,比较方便自定义注解@DistributeLock/** * 分布式锁注解,用于方法级别的分布式控制 * */@Target({ElementType.METHOD})@Retention(RetentionPolicy.RUNTIME)public @interface DistributeLock { /** * 要锁哪几个位置的参数,默认

2021-03-23 22:18:58 545

原创 Redisson分布式锁实现

Redisson分布式锁实现依赖<redisson>3.14.0</redisson><!-- redisson RedLock 实现 --><dependency> <groupId>org.redisson</groupId> <artifactId>redisson-spring-boot-starter</artifactId> <version>

2021-03-22 23:31:24 225

原创 SpringBoot2.x整合RabbitMQ

SpringBoot2.x整合RabbitMQ依赖<!-- rabiitmq--><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId></dependency>yml配置spring: rabbitmq: host: 192.

2021-03-21 21:33:21 233

原创 SpringBoot2.x整合Mongo实现多数据库切换

SpringBoot2.x整合Mongo实现多数据库切换前言本项目Mongo的多数据库切换的核心其实还是利用AOP以及自定义的MongoTemplate。然后Mongo的操作类MultiMongoTemplate首先是自定义的MongoTemplate,这个不用多讲,就是对mongo执行各种操作的关键所在。这里多数据库的切换,说白了就是在需要切换的时候,利用MongoDbFactory构造对应的MongoTemplate即可。然后保存到ThreadLocal中,每次获取MongoDatabase的时

2021-03-19 00:40:53 1550 3

原创 SpringBoot2.x整合Mongo

引入依赖<!-- mongo--><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId></dependency><!-- hutool--><dependency> <groupId&gt

2021-03-17 22:59:09 173 1

原创 Mybatis-plus分页插件和自动填充

Mybatis-plus分页插件和自动填充配置详情@EnableTransactionManagement@Configuration@MapperScan("com.itoyoung.dao")public class MybatisPlusConfig { /** * 分页插件 */ @Bean public PaginationInterceptor paginationInterceptor() { PaginationInte

2021-03-16 22:45:51 466

原创 Spring事务和Atomikos源码分析

Spring事务和Atomikos源码分析spring-txspring-tx模块是Spring实现事务管理功能的核心所在,以注解+AOP切面的方式将事务注入到业务代码中。实际应用中只要加上@Transactional即可,spring框架下Atomikos分布式事务控制也依托于此模块实现。TransactionInterceptor所有声明式事务控制的入口public class TransactionInterceptor extends TransactionAspectSupport

2021-03-16 00:39:37 302

原创 XA协议和JTA规范

XA协议XA协议,实现Java分布式事务的基础之一,其他还有TCC模式,提供分布式事务处理规范,包含二阶段提交(2PC),三阶段提交(3PC)两种实现X/Open DTP 模型包括应用程序( AP )、事务管理器( TM )、资源管理器( RM )、通信资源管理器( CRM )四部分两阶段提交协调者向所有参与者发送事务,询问是否可以提交事务,当所有参与者都反馈yes,协调者才会向所有参与者发送正式事务提交请求,反馈no或者超时,协调者则向所有参与者发送事务回滚请求提交成功提交失败,事务回

2021-03-14 15:39:54 745

原创 Atomikos事务失效之配置类问题

Atomikos事务失效之配置类问题前言之前搭建多数据源和分布式事务架构时,已经实际测试了确实可以实现多数据源切换抛异常后,所有事务成功回滚。但是之后在整合Shiro后,发现了原本的UserService的某个方法回滚事务失败,在切换第三个数据源进行操作抛异常后,第一和第二个数据源中的sql竟然被commit了,这让我觉得很诧异。后面我解决BUG后,强行制造了一个空指针异常,用JRebel重新加载后,发现事务竟然又生效了!之后我又多次进行测试,发现项目启动后UserService的事务实际已经失效,其

2021-03-13 03:41:17 828

原创 多数据源切换和分布式事务控制

SpringBoot2.x+Druid+Mybatis-plus+Atomikos实现多数据源切换和分布式事务前言简介本次项目的数据库结构为三台服务器,且每台服务器的mysql上分别都有十几个数据库。复杂的业务场景下,可能不仅要在各个服务器内切换不同的数据源,还要能切换到其他服务器的数据库连接上。所以我们需要考虑如何实现动态的切换数据源,并保证业务失败时能同时回滚所有的事务,防止数据出错。环境:SpringBoot + Mysql + Mybatis-plus + Druid + At

2021-03-10 23:50:47 811 2

原创 SpringBoot2.x整合Shiro

前言Shiro是Apache下的一个开源项目,用于身份和权限验证的轻量级框架,较Spring Security配置和使用简单,且这次项目对权限控制的细粒度不高。项目环境SpringBoot 2.1.5 + Redis + Mybatis-plus因为需要缓存用户信息,所以前期需要先搭建redis(可参考redis集群搭建)然后下图是项目所需配置的所有文件:因为我们的新ERP是基于原本老ERP(PHP语言)改造的,需要兼容老系统用户信息且新增了app端的部分,所以有以下几点需

2021-03-06 22:09:51 651

原创 SpringBoot2.x整合Redis集群

SpringBoot2.x整合Redis集群添加依赖<!-- redis --><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId></dependency><!-- 连接池 --><dependency&gt

2021-02-19 17:52:07 247

原创 CentOS7: Redis集群搭建

CentOS7上的Redis集群搭建下载并解压:地址wget http://download.redis.io/releases/redis-4.0.9.tar.gztar -zxvf redis-4.0.9.tar.gz 编辑安装cd redis-4.0.9make && make install将 redis-trib.rb 复制到 /usr/local/bin 目录下,方便直接执行命令cd srccp redis-trib.rb /usr/local/

2021-02-15 15:12:36 217

原创 CentOS7:Ruby安装

文章目录CentOS7安装Ruby环境需求具体操作参考CentOS7安装Ruby环境需求因为在搭建Redis集群使用redis-trib.rb构建集群时报错:"redis requires Ruby version >= 2.2.2"需要升级版本,所以上网查询总结以下三种方法:添加yum源安装:CentOS SCLo Software collections Repository下载tar包手动安装RVM(Ruby Version Manager)安装具体操作方

2021-02-05 16:19:24 1993

原创 钉钉工作流对接:多个公司同一回调接口处理

钉钉工作流对接相关资料(地址)应用创建项目对接相关资料(地址)钉钉开放平台钉钉管理后台SDK下载应用创建示例创建地址- git clone https://github.com/opendingtalk/eapp-corp-project.git白名单设置39.98.28.172,39.98.232.128,39.100.109.241,39.98.8.217,39.98.33.148,47.92.41.202,47.92.228.185,60.191.10

2021-02-02 16:52:37 941

空空如也

空空如也

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

TA关注的人

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