自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 SpringBoot + MyBatisPlus多数据源 + ShardingSphere读写分离和数据分片 + Seata分布式事务

1. 版本说明SpringBoot:2.2.4.RELEASEMyBatisPlus:3.5.1ShardingSphere:5.1.1Seata:1.4.2<!-- spring-cloud版本 --><spring-cloud.version>Hoxton.RELEASE</spring-cloud.version><!-- spring-cloud-alibaba版本 --><spring-cloud-alibaba.version

2023-08-16 13:41:13 1329

原创 RocketMQ使用过程中需要注意的点

RocketMQ使用过程中需要注意的点

2022-12-20 17:55:56 400 1

原创 解决Failed to start bean ‘documentationPluginsBootstrapper‘; nested exception is java.lang.NullPointer

这个是Spring Boot 2.6.x 和Swagger 3.0.0 的兼容性问题。在swagger配置类中添加如下配置:

2022-12-05 16:13:57 316

原创 【Java】对象根据属性去重

准备需要去重处理的对象的集合:List<User> userList = new ArrayList<>();userList.add(new User(1L, "a"));userList.add(new User(2L, "b"));userList.add(new User(2L, "c"));1. 方法一(最简便)使用 TreeSet 去重,初始化 TreeSet 时指定排序规则,不用改动实体类。TreeSet<User> set1 = new T

2022-05-07 11:35:49 724

原创 【MyBatisPlus多数据源 | Seata数据源代理】SpringBoot+MyBatisPlus+Seata动态数据源代理

1.依赖MyBatisPlus多数据源管理的依赖<dependency> <groupId>com.baomidou</groupId> <artifactId>dynamic-datasource-spring-boot-starter</artifactId> <version>3.5.1</version></dependency>2.yml配置spring: datasource:

2022-04-21 21:02:08 1579

原创 【MySQL】binlog

简介  binlog 是逻辑日志,记录内容是语句的原始逻辑,类似于“给 ID=2 这一行的 c 字段加 1”,属于MySQL Server 层。 不管用什么存储引擎,只要发生了表数据更新,都会产生 binlog 日志。binlog的使用场景  MySQL数据库的数据备份、主备、主主、主从都离不开binlog,需要依靠binlog来同步数据,保证数据一致性。记录格式  binlog 日志有三种格式,可以通过binlog_format参数指定。  ① Statement  记录的内..

2022-04-07 23:23:23 916

原创 【MySQL】redo log

简介  redo log 它是物理日志,记录内容是“在某个数据页上做了什么修改”,属于 InnoDB 存储引擎。redo log(重做日志)是InnoDB存储引擎独有的,它让MySQL拥有了崩溃恢复能力。 比如 MySQL 实例挂了或宕机了,重启时,InnoDB存储引擎会使用redo log恢复数据,保证数据的持久性与完整性。刷盘策略  InnoDB 存储引擎为 redo log 的刷盘策略提供了 innodb_flush_log_at_trx_commit 参数,它支持三种策略:① 0 :设置为.

2022-04-07 23:07:57 993

原创 【MySQL】多版本并发控制(MVCC)

概念  多版本控制(Multiversion Concurrency Control): 指的是一种提高并发的技术。最早的数据库系统,只有读读之间可以并发,读写,写读,写写都要阻塞。引入多版本之后,只有写写之间相互阻塞,其他三种操作都可以并行,这样大幅度提高了InnoDB的并发度。在内部实现中,InnoDB通过undo log保存每条数据的多个版本,并且能够找回数据历史版本提供给用户读,每个事务读到的数据版本可能是不一样的。在同一个事务中,用户只能看到该事务创建快照之前已经提交的修改和该事务本身做的修..

2022-04-07 22:24:57 790

原创 【Java】使用ArrayList的subList的注意事项

subList结果不可强转成ArrayList,会抛出ClassCastException:java.util.ArrayList$SubList cannot be cast to java.util.ArrayList。(原因:subList返回的是ArrayList的内部类SubList,并不是ArrayList而是ArrayList的一个视图,对于SubList子列表的所有操作最终会反映到原列表上。)修改原集合元素的值,会影响子集合。修改原集合的结构,会导致子列表的遍历、增加、删除产生Conc.

2022-04-07 22:14:37 1019

原创 【Java】使用Arrays.asList的注意事项

使用工具类 Arrays.asList()把数组转换成集合时,不能使用其修改集合相关的方法,它的 add/remove/clear 方法会抛出 UnsupportedOperationException 异常。因为Arrays.asList返回的是Arrays的内部类ArrayList(并不是java.util包下的ArrayList),它继承了AbstractList但没有重写add、remove、clear方法。使用Arrays.ArrayList调用toArray方法生成的数组是带有泛型的数组,而.

2022-04-07 22:13:11 735

原创 【Java】如何实现深拷贝?

  方法一:Object类提供了clone方法,但是它是浅拷贝的。实现Cloneable接口,重写clone方法,引用类型的成员属性再次调用clone方法创建。  方法二:实现Cloneable接口,重写clone方法,通过序列化和反序列化方式创建对象。......

2022-04-07 22:12:05 350

原创 【Java】为什么说Java只有值传递而没有引用调用

  Java程序设计语⾔总是采⽤按值调⽤。也就是说,⽅法得到的是所有参数值的⼀个拷⻉,也就是说,⽅法不能修改传递给它的任何参数变量的内容。对于基本数据类型,方法得到的是值的拷贝。对于引用数据类型,方法得到的是引用的拷贝。总结:① ⼀个⽅法不能修改⼀个基本数据类型的参数(即数值型或布尔型)。② ⼀个⽅法可以改变⼀个对象参数的状态。③ ⼀个⽅法不能让对象参数引⽤⼀个新的对象。...

2022-04-07 22:08:23 272

原创 【Java】int类型为什么负数比正数多了一个数?

int占4字节,也就是32位二进制,最高位是符号位,剩下31位用来表示数字绝对值大小,但负零1000…和正零0000…都表示0,这是浪费的,于是约定正零表示0,负零表示-2147483648,也就是说0占用了二进制计数法表示正数的一个位置,导致比负数少了一个。...

2022-04-07 22:01:58 887 1

原创 【Java】为什么equals()和hashcode()要同时重写?

如果想把A类的实例放入jdk提供的哈希表容器中,比如在HashMap用作key,就必须保证以下原命题(命题1)为真:原命题(命题1):如果两个A类实例的hashcode不相等,那么这两个实例通过equals比较返回false。这个命题的逆反命题(命题2)是:逆反命题(命题2):如果两个实例通过equals比较返回true,那么这两个实例的hashcode相等。我们知道,原命题和逆反命题同真同假,所以,要维护原命题为真,只需保证其逆反命题为真即可。也就是说,equals返回true了,就必须

2022-04-07 18:49:44 1940

原创 【Linux】linux命令

后台启动jar包nohup java -jar jar包名称.jar >日志文件名称.log 2>1&后台启动seatanohup sh seata-server.sh > 日志文件名称.log 2>&1 &查看端口被哪个进程占用netstat -tunlp|grep 端口号杀死进程kill -9 进程号......

2022-04-02 01:56:12 2794

原创 【Java】isAssignableFrom()和instanceof

.isAssignableFrom()方法与instanceof关键字的区别总结为以下两个点:isAssignableFrom()方法是从类继承的角度去判断,instanceof关键字是从实例继承的角度去判断。isAssignableFrom()方法是判断是否为某个类的父类,instanceof关键字是判断是否某个类的子类。使用方法:父类.class.isAssignableFrom(子类.class)子类实例 instanceof 父类类型原文链接:https://blog.csdn

2022-03-31 09:04:37 199

原创 【Java】记一次parallelStream线程安全问题

1.错误: tokenInfo.getRoleIdSet().parallelStream().map(roleId -> { SysRole role = new SysRole(); role.setId(roleId); return role; }).forEach(role -> securityUser.getRoleList().add(role));2.改正: tokenInfo.getRoleIdSet().parallelStream().m

2022-03-30 22:52:14 2420 2

原创 【Java】ArrayList扩容过程 JDK1.8

无参构造ArrayList后,list长度为0,内部数组长度为0。如果是第一次add或addAll,添加数量不足10个时,都扩容为10,addAll数量n大于10个时,所需最小容量minCapacity被指定为n;如果不是第一次add,所需最小容量minCapacity被指定为当前list的size加上add或addAll进去的数量n。接下来,检查所需最小容量minCapacity是否超过了当前数组长度,如果超过了,则进行扩容,并且此时modCount加1。接下来,比较当前容量乘以1.5和所需最小容.

2022-03-30 21:51:07 428

原创 JRebel热部署使用注意点

1.Feign接口修改后不能热部署,需要重新启动项目。2.Controller修改后可以热部署。

2022-03-30 20:23:11 131

原创 记一次 SpringCloud OpenFeign 服务间调用传参异常

错误方式:/** * 参与方Controller中:更新角色缓存 */ @PostMapping(value = "/cacheSysUserRole") public Result<?> cacheSysUserRole(@RequestParam("userRoleList") List<SysUserRole> userRoleList) { cacheService.cacheSysUserRole(userRoleLis

2022-03-30 20:18:51 1015

原创 idea远程调试阿里云服务器ECS

一、在阿里云服务器ECS模块的安全组,开放端口号5005二、jar包启动时加相关参数java -Xms1024m -Xmx1024m -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar jar包名称.jar > log.log三、idea中连接,输入主机ip,端口号5005,选择要调试的模块四、要求本地代码和服务器严格同步...

2022-03-30 20:11:37 896

原创 【Java】Java中的位移运算

以下分析仅针对Java语言,可以直接看最下面的结论。一、左移(<<):高位舍弃,低位补0,所有位一起左移,包括符号位  代码(初始为正数1,连续左移,直到为0) int n = 1; int step = 0; System.out.println(step + ":" + Integer.toBinaryString(n) + ":" + n); while (n != 0) { n = n << 1; step++; System.out.p

2022-03-30 19:08:59 7817

空空如也

空空如也

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

TA关注的人

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