Git 恢复本地删除的分支

今天开发功能的时候,发现之前的分支忘记合并(分支太多),并且还删除了😂,于是 Google 了一番,根据以下步骤进行了分支恢复。

阅读全文

MySQL 8.0 的一些变化

在使用 MySQL 8.0 的过程中,碰到一些坑,记录一下。 账号密码加密策略MySQL 8.0 修改了账号密码加密策略,默认的认证插件由 mysql_native_password 更改成了 caching_sha2_password,导致一些可视化工具无法连接数据库。如果需要,可以修改默认的策略或者账号密码的认证策略。 查询当前账号密码加密策略: 1sh...

阅读全文

MySQL sql_mode 配置

GROUP BY 在 MySQL 5.7 后,默认使用 ONLY_FULL_GROUP_BY 模式,不允许使用 GROUP BY 时,如果 select 中的列,没有在 GROUP BY 中出现,会报错。我们可以通过更改 MySQL 的 sql_mode 来解决。

阅读全文

Spring Boot 大事务优化

所谓大事务,就是耗时较长的事务。 Spring 有两种方式实现事务,分别是声明式事务和编程式事务,如果不开启事务,MySQL 默认自定提交事务,也就是语句执行完后自动提交。 大事务产生的场景 操作的数据量大,或者事务中包含慢查询。 在事务中调用了外部 HTTP接口 或 RPC 服务。 大量的锁竞争。 执行了比较耗时的计算。 大事务造成的影响 大并发情况下,...

阅读全文

MySQL 优化逗号分隔符字段查询

最近在优化旧业务时,发现一个慢查询的问题,单表数据量190w,当查询某个包含逗号分隔符字段时,该字段有添加二级索引,因为是 VARCAHR 类型逗号分隔的值( 100,300,32455,1435 ),所有检索起来只能 LIKE %,100,%,或者使用 FIND_IN_SET,但是这两种方式都会全表扫描

阅读全文

Spring Boot Scheduled 单线程执行引发的问题

这两天发现生产上某些定时任务没有正常执行,查了下发现 Spring Boot 使用 @Scheduled 执行定时任务是在单线程中,由于数据量增长过大,导致定时任务执行时间过长,导致其他后续任务阻塞、卡死,导致其它任务没有执行。

阅读全文

Spring Boot Request Body 重复读取问题

有些场景,比如验签,需要在拦截器中读取 Request Body 进行校验的操作。如果通过 HttpServletRequest#getInputStream() 方法读取,会导致后续的读取操作都失败。因为它只能读取一次,第二次读取会抛出异常。最常见的问题就是 @RequestBody 注解失效。

阅读全文

Apache HttpClient 4.5.x 性能优化

HTTPClient 提供了一个高效、最新且功能丰富的包,实现了最新 HTTP 标准和建议的客户端。

阅读全文

Spring Cloud Feign Hystrix 相关

以下配置了 feign 的请求超时时间(默认值根据版本情况不同,一般是 1s 或者 2s),以及 hystrix thread pool 的参数,避免并发量过大时,出现线程池拒绝执行请求的情况。

阅读全文

Spring Boot Tomcat 参数优化

Spring Boot 程序 Tomcat 是内嵌在程序里面的,我们可以通过下面配置对 Tomcat 进行参数调优,提高系统吞吐量。

阅读全文