自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 多数据源切换方案

根据基础数据库表中配置的其他数据源,在代码中动态切换数据源,springboot如何实现?我刚启动项目时,读取的是base数据源,在代码中,我希望从base库的db表中得到其他数据源的信息,然后选取这条信息进行切换数据源,读取该连接中某张表的数据可以使用Spring Boot的AbstractRoutingDataSource来实现动态数据源切换。首先,创建一个自定义的RoutingDataSource,它会根据某种条件选择合适的数据源。

2024-09-10 20:44:40 361

原创 【MYSQL】5 性能优化

•Com_insert:插入操作的次数。•Innodb_rows_inserted:执行INSERT操作插入的行数。• Innodb_rows_updated:执行UPDATE操作更新的行数。• Innodb_rows_deleted:执行DELETE操作删除的行数。• Innodb_rows_read:Select查询返回的行数。• Slow_queries:慢查询的次数。• Com_select:查询操作的次数。• Com_update:更新操作的次数。• Com_delete:删除操作的次数。

2024-08-31 15:47:43 946

原创 【MYSQL索引】2 索引创建原则

① 冗余索引举例:建表语句如下我们知道,通过 idx_name_birthday_phone_number 索引就可以对 name 列进行快速搜索,再创建一个专门针对 name 列的索引就算是一个 冗余索引 ,维护这个索引只会增加维护的成本,并不会对搜索有什么好处。② 重复索引col2 INT,我们看到,col1 既是主键、又给它定义为一个唯一索引,还给它定义了一个普通索引,可是主键本身就会生成聚簇索引,所以定义的唯一索引和普通索引是重复的,这种情况要避免。

2024-08-31 14:48:03 803

原创 【MYSQL索引】1 索引基础&数据准备部分

在已经存在的表中创建索引可以使用ALTER TABLE语句或者CREATE INDEX语句。

2024-08-31 14:47:44 413

原创 【MySQL索引】4索引优化

COUNT(*):最常用且效率最高的方法,大多数现代数据库系统对此做了专门的优化。COUNT(1):在性能上与 COUNT(*) 基本相同,大多数数据库系统会将它们处理得一样快。COUNT(具体字段):可能会更慢,特别是在字段上没有索引时。它只计算非 NULL 的字段值,因此可能需要扫描整个表来完成计数。

2024-08-31 14:44:45 1074

原创 【MySQL索引】3 索引失效场景

索引失效

2024-08-20 19:35:33 177

原创 【线程工具类】优雅关停 和 捕获异常信息

开始有序关闭线程池,与此同时,已提交的任务将继续执行,但不再接收新的任务,如果线程池已关闭,此方法调用不会产生额外影响。(不会等任务执行完毕的意思是这个方法不会阻塞,也就是说任务队列的任务会继续执行,但是其他的线程可能会抢在这些任务之前执行,而awaitTermination()方法可以实现阻塞并等待任务执行完毕)execute在任务执行时,如果出现异常,默认在执行线程中会抛出异常并打印堆栈信息,且会删除执行的线程,本次execute要执行的任务就视为结束了,异常的抛出不会中断调用者线程;

2024-08-19 10:32:15 327

原创 EasyExcel实现100w数据导入导出

他山之石,可以攻玉。

2024-08-09 16:43:56 564

原创 【K8S】搭建K8S集群教程

修改daemon配置文件/etc/docker/daemon.json来使用加速器。新加入node报错:(应该是复制虚拟机没完全克隆导致的)2.zcytwo kubelet 状态错误。1.zcythree没启动docker。2.5 部署CNI网络插件。从节点notReady。

2024-07-31 22:15:55 512

原创 【缓存】SpringCache

是一个框架,实现了基于注解的缓存功能,只需要简单地加一个注解,就能实现缓存功能,大大简化我们在业务中操作缓存的代码。Spring Cache只是提供了一层抽象,底层可以切换不同的cache实现。具体就是通过接口来统一不同的缓存技术。CacheManager是Spring提供的各种缓存技术抽象接口。描述使用EhCache作为缓存技术使用Google的GuavaCache作为缓存技术使用Redis作为缓存技术。

2024-07-29 20:55:36 660

原创 Java中 普通for循环, 增强for循环( foreach) List中增删改查的注意事项

for foreach

2024-07-07 10:34:14 873

原创 IP工具类

【代码】IP工具类。

2024-07-01 16:23:44 220

原创 【Redis】 缓存双写一致性

给缓存设置过期时间,定期清理缓存并回写,是保证最终一致性的解决方案。我们可以对存入缓存的数据设置过期时间,所有的写操作以数据库为准,对缓存操作只是尽最大努力即可。也就是说如果数据库写成功,缓存更新失败,那么只要到达过期时间,则后面的读请求自然会从数据库中读取新值然后回填缓存,达到一致性,切记,要以mysql的数据库写入库为准。上述方案和后续落地案例是调研后的主流+成熟的做法,但是考虑到各个公司业务系统的差距,不是100%绝对正确,不保证绝对适配全部情况,请同学们自行酌情选择打法,合适自己的最好。

2024-03-11 16:11:03 614

原创 @Valid和@NotNull字段校验使用

为了捕获@Valid和@NotNull校验后抛出的异常/*** 异常通用处理*/@Slf4j//处理Get请求中 使用@Valid 验证路径中请求实体校验失败后抛出的异常//处理请求参数格式错误 @RequestBody上validate失败后抛出的异常是MethodArgumentNotValidException异常。Result.failed换成你自己的统一处理类。

2024-01-23 21:57:37 466 1

原创 ubuntu 20.04文件系统根目录空间不足

sort -hr 将输出按照文件大小进行排序,-h 表示使用人类可读的格式,-r 表示逆序排序(从大到小)。要查看特定目录下各个文件的大小,您可以使用 du 命令。du 命令用于显示文件或目录的磁盘使用情况。如果以上方法仍无法解决问题,您可能需要进一步调查哪些文件或目录占用了大量空间,并相应地采取措施。这些命令将显示目录中每个文件和子目录的大小,以及总大小。-h 选项用于以人类可读的格式显示文件大小(如 KB、MB、GB 等)。-a 选项显示所有文件和目录的大小。如何查看文件下各文件的大小。

2024-01-06 21:46:52 1266

原创 【微服务合集】

但是,容器的网络IP其实是一个虚拟的IP,其值并不固定与某一个容器绑定,如果我们在开发时写死某个IP,而在部署时很可能MySQL容器的IP会发生变化,连接会失败。MybatisPlus的批处理是基于PrepareStatement的预编译模式,然后批量提交,最终在数据库执行时还是会有多条insert语句,逐条插入数据。MySQL的客户端连接参数rewriteBatchedStatements。MyBatisPlus也支持手写SQL的。发现可以互联,没有问题。

2024-01-06 21:41:40 706

原创 【Java反射】反射获取Class、Constructor、Field、Method的方式

反射

2024-01-04 21:07:40 478

原创 自定义注解实现 后台系统-记录日志功能

自定义注解实现日志记录

2023-12-21 14:59:11 1051

原创 如何使用PostMan进行并发测试?

请注意,进行压力测试时要确保目标服务器能够承受相应的负载。此外,压力测试可能会对目标服务器产生一定的负担,请谨慎操作,避免对生产环境或敏感系统造成不良影响。在这里(View -> Show Postman Console)可以看到log的内容。生成的id: a54dc69c8ba94dffb2a0813fcf88c069。生成的procureId: P20231201132925285867。

2023-12-04 16:24:17 5498

原创 EasyExcel listener无法通过Autowired注入xxMapper

productMapper注入一直为null,而procureDetailMapper却正常注入?springboot在listener和filter中注入mapper会为null?

2023-11-22 16:16:58 1044

原创 【SpringCloud Alibaba -- Nacos】Linux 搭建 Nacos 集群

centos安装docker。

2023-11-04 20:03:49 301

原创 【文件存储服务器】Minio使用

目前可用于文件存储的网络服务选择也有不少,比如阿里云OSS、七牛云、腾讯云等等,可是收费都有点小贵。为了节约成本,很多公司使用MinIO做为文件服务器。官网:https://www.minio.org.cn/MinIO是一个开源的分布式对象存储服务器,支持S3协议并且可以在多节点上实现数据的高可用和容错。它采用Go语言开发,拥有轻量级、高性能、易部署等特点,并且可以自由选择底层存储介质。它基于Apache License 开源协议,兼容Amazon S3云存储接口。

2023-10-30 14:04:49 418

原创 【远程调用】如何发送HTTP请求?RestTemplate

Springboot之restTemplate。

2023-10-19 16:25:35 206

原创 JUC之CompletableFuture

在 Java 里面被用于异步编程,异步通常意味着非阻塞,可以使得我们的任务单独运行在与主线程分离的其他线程中,并且通过回调可以在主线程中得到异步任务的执行状态,是否完成,和是否异常等信息。只要在多个 future 里面有一个返回,整个任务就可以结束,而不需要等到每一个future 结束。合并两个有依赖关系的 CompletableFutures 的执行结果。一系列独立的 future 任务,等其所有的任务执行完后做一些事情。消费处理结果, 接收任务的处理结果,并消费处理,无返回结果。没有返回值的异步任务。

2023-10-13 17:15:13 112

原创 JUC之ForkJoin并行处理框架

JUC的forkjoin并行处理框架

2023-10-13 17:14:12 101

原创 JUC之BlockingQueue

JUC的阻塞队列介绍

2023-10-13 17:12:03 85

原创 JUC之ReentrantReadWriteLock

而对于获得写锁的线程,它一定独占了读写锁,因此可以继续让它获取读锁,当它同时获取了写锁和读锁后,还可以先释放写锁继续持有读锁,这样一个写锁就“降级”为了读锁。• 在线程持有读锁的情况下,该线程不能取得写锁(因为获取写锁的时候,如果发现当前的读锁被占用,就马上获取失败,不管读锁是不是被当前线程持有)。• 在线程持有写锁的情况下,该线程可以继续获取读锁(获取读锁时如果发现写锁被占用,只有写锁没有被当前线程占用的情况才会获取失败)。(3)锁降级:遵循获取写锁、获取读锁再释放写锁的次序,写锁能够降级成为读锁。

2023-09-18 13:47:54 60

原创 JUC提供的Lock辅助类

JUC 中提供了三种常用的辅助类,通过这些辅助类可以很好的解决线程数量过多时 Lock 锁的频繁操作。这三种辅助类为:• CountDownLatch: 减少计数• CyclicBarrier: 循环栅栏• Semaphore: 信号灯CountDownLatch 类可以设置一个计数器,然后通过 countDown 方法来进行减 1 的操作,使用 await 方法等待计数器不大于 0,然后继续执行 await 方法之后的语句。

2023-09-15 14:30:36 49

原创 【Spring Data Redis_Mybatis】SpringBoot 整合 Redis_Mybatis 简单demo

2.配置文件3.建立开发所需类entity, mapper,service,controller要缓存的 Java 对象必须实现 Serializable 接口,因为 Spring 会将对象先序列化再存入 RedisSolution1:http://localhost:8001/setUserToRedis/1redis中是乱码Solution2:自定义Redis序列化方式

2023-09-12 16:08:51 56

原创 【Spring Data MyBatis】入门demo及常见问题

userId为null?xml路径没告知配置yml。

2023-09-12 16:07:29 46

原创 【Spring Data Scheduled】定时任务简单demo

表示在每分钟的每秒的第0秒开始,每隔10秒执行一次。你可以根据需要修改cron表达式来实现更精确的调度。依赖将会自动包含Spring的调度模块,并且还会包含其他必要的Spring Boot依赖。:在你的主应用程序类中添加@EnableScheduling注解,以启用定时任务调度。确保你的定时任务方法是线程安全的,并且不会阻塞线程太长时间,以免影响其他任务的调度。:运行你的Spring Boot应用程序。你可以根据需要进行更复杂的配置,比如使用。注解来实现定时任务,你需要引入Spring的调度模块依赖。

2023-09-05 17:18:56 89

原创 【Spring Data Jpa】入门demo

使用JPA完成了简单的查询和按名字模糊查询

2023-09-04 11:04:39 206

原创 【JVM】基础工具和命令

jdk5以上可以通过Thread.getAllStackTraces()方法获取StackTraceElement,来代替jstack方法。监视虚拟机各种运行状态信息的命令行工具,显示类加载、内存、垃圾回收、即时编译等运行时数据。生成堆转储快照(headdump 或dump文件),查询finalize执行队列、Java堆和方法区详细信息。更详细参数参考别人博客 https://zhuanlan.zhihu.com/p/476375396。传递虚拟机进程启动时传给主类main()函数的参数。

2023-08-15 16:26:05 72

原创 【Spring Data Jpa】Jpa的方法命名规则

JPA框架

2023-08-15 11:29:58 94

原创 【SpringBoot】依赖管理入门使用

springboot依赖管理

2023-08-14 14:12:12 139

原创 【RabbitMq入门】HelloWorld

rabbitmq

2023-08-01 16:18:55 156

原创 springboot配置文件优先级

springboot配置文件优先级

2023-02-26 20:53:34 1325

原创 【Go tour】并发章节

Go 并发

2023-02-22 21:18:16 154

原创 手写Spring-IOC

实现一个简易的Spring-IOC容器

2023-02-22 20:51:36 134

原创 【大疆2022/8/7后台开发机试】

大疆机试凉

2022-08-07 20:47:10 280

空空如也

空空如也

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

TA关注的人

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