自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 编码技巧——Springboot工程加密yml配置/Maven引入本地二方包

基于Springboot的工程项目,通常很多信息都是在application.yml中直接明文配置的,比如数据库链接信息,redis链接信息等;为了安全考虑,公司打算将yml配置文件中的数据库连接信息的账号,密码进行加密!公司有开发相关的安全规定,要求对源代码工程中所有的敏感信息进行加密,包括代码和配置文件,防止密码泄露;

2024-02-28 13:16:00 441

原创 编码技巧——在项目中使用Alibaba Cloud Toolkit远程部署

在新公司项目开发,当前项目为自建项目,意思是从开发到运维都需要自己负责,远程的服务器也是自己搭建的win操作系统;之前在大厂工作时,一般提交代码之后,CICD流水线会自动的执行最新代码的拉取、构建打包、启动;搜了下发现阿里提供了IDEA下的插件,可用于轻量级的远程服务部署,准备自己搭建配置下试试;由于没有运维经验,也没搞过cmd脚本,过程比较曲折,最终也算是顺利完成配置和使用,这里记录下完整的过程;

2024-02-07 17:52:03 1118

原创 编码技巧——基于Socket通信的接口调用

在新公司项目开发,发现内部服务之间竟然有基于Socket通信的"上古"接口,它甚至都不是Http,难找到一些类似Apache的工具包提供好用的操作api,所以需要自己实现;以下是代码示例;

2024-02-07 16:41:25 378

原创 编码技巧——基于RedisTemplate的RedisClient实现、操作Lua脚本

在新公司的脚手架中开发,需要用到redis,发现没有封装好一套能集成各种常用命令、包括Lua脚本的方便使用的RedisTemplateClient,于是自己来实现下;springboot整合redis之后,提供了操作redis的简便方式,可以通过通用对象RedisTemplate方式操作String,Hash,List,Set SortSet五大数据类型;本次的实现就是基于Spring的RedisTemplate做的二次封装;

2024-02-07 16:18:46 903

原创 编码技巧——批量删除数据

今天遇到个业务场景需要批量根据索引删除数据,ORM框架为mybatis,跟以往遇到的根据MySQL主键批量删除不同,本次使用的数据库时PgSQL,使用的联合主键索引;搜索相关资料网上大部分帖子都是使用类似whereidin (...)的写法,直到找到花了点时间才找到合适的写法,现在总结下;

2024-02-07 15:49:35 268

原创 编码技巧——Mybatis分表插件

背景是新公司的基础框架不支持分库分表,并且不能使用业界常用的分库分表插件二方包(内网Maven仓库),所以基于Mybatis2.X,基于Mybatis Interceptor自行实现分表插件,后期可作为二方包在公司内推广避免重复造轮子;下面不废话,直接上你们想要的源码;

2024-01-19 13:07:17 483

原创 杂谈——关于我从互联网大厂跳槽到国企做开发

关于我从互联网大厂跳槽到国企做开发,简要谈一下

2024-01-19 11:55:33 410

原创 开发工具——IDE安装 / IDEA子module依赖导入失败编译提示xx找不到符号 / IDEA在Git提交时卡顿

近期换了工作电脑,公司的IT团队不够给力,不能复制电脑系统,所以又到了需要重装IDE配置开发环境的时候了;在安装和导入Java编译器IDEA的时候遇到一些"棘手"问题,这里整理下解决方法以备不时之需;

2023-08-29 14:25:39 1501

原创 编码技巧——Sentinel的blockHandler与fallback

本文介绍Sentinel的blockHandler与fallback的区别,背景是:发生限流时,配置的sentinel的blockhandler没有生效而fallback生效了;排查原因,从而给出Sentinel配置异常降级和限流降级的代码写法;

2023-08-08 14:55:43 905

原创 《MySQL实战45讲》——学习笔记33 MySQL Server查询结果的发送流程 / 一次查询大量数据对innoDB bufferPool的影响 / 内存淘汰算法LRU与innoDB改进的LRU

本篇通过"大查询会不会把内存用光"这个问题,介绍了MySQL 的查询结果发送给客户端的过程,涉及的知识点包括:MySQL Server查询结果的发送流程(边读边发)、一次查询大量数据对innoDB bufferPool的影响、MySQL线程状态Sending to client&Sending data、内存淘汰算法LRU与innoDB改进的LRU;

2023-08-07 15:25:37 219

原创 编码踩坑——Redis Pipeline中调用Lua脚本报错JedisMoveDataException的问题 / Lua脚本常遇到的问题

本篇记录使用Redis Pipeline时,调用redis.clients.jedis.PipelineBase#eval时,报错JedisMoveDataException的问题;通过查看源码发现问题的原因,通过jedis在Github的issue了解了解决方案;涉及知识:Redis slot、Redis Pipeline、Redis Lua;

2023-05-24 14:29:32 2364

原创 《MySQL实战45讲》——学习笔记31 “误删数据的解决方案(删行/删表/删库/删实例)“

本篇介绍MySQL误删数据的几种情况以及误删后的处理方法,包括:1. 使用delete语句误删数据行;2. 使用drop table或者truncate table语句误删数据表;3. 使用drop database语句误删数据库;4. 使用rm命令误删整个MySQL实例;

2023-04-23 11:45:00 434

原创 面试代码——排序算法【建议收藏】

关于排序算法,网上关于排序算法的帖子和代码也比较多,有的帖子甚至连排序过程的动图都有,但是还存在一个问题——到了代码的实现层面,讲述的并不清楚,甚至没有一行代码注释,不便于理解和记忆,因此本文整理下相关代码并附上尽量详细的注释,便于理解和记忆;

2023-04-14 17:03:06 503

原创 MySQL——distinct与group by去重 / 松散索引扫描&紧凑索引扫描

本篇介绍MySQL中的 distinct 和 group by的区别,包括用法、效率,涉及松散索引扫描和紧凑索引扫描的概念;

2023-03-28 19:40:38 2965 2

原创 编码踩坑——MySQL order by&limit顺序不一致 / 堆排序 / 排序稳定性

本篇介绍一个MySQL下SQL查询语句同时包含order by和limit出现的一个问题及原因,其中涉及的知识点包括 :MySQL对limit的优化、MySQL的order排序、优先级队列和堆排序、堆排序的不稳定性;

2023-03-12 23:21:39 2594

原创 编码技巧——Redis Pipeline

本文介绍Redis pipeline相关的知识点及代码示例,包括pipeline与client执行多命令的区别、Redis客户端-服务端的一次完整的网络请求、pipeline与redis"事务"、pipeline的使用代码示例;

2023-03-09 16:39:34 688

原创 MySQL——插入加锁/唯一索引插入死锁/批量插入效率

本篇主要介绍MySQL跟加锁相关的一些概念、MySQL执行插入Insert时的加锁过程、唯一索引下批量插入可能导致的死锁情况,以及分别从业务角度和MySQL配置角度介绍提升批量插入的效率的方法;

2023-03-08 20:14:46 6562

原创 编码踩坑——运行时报错java.lang.NoSuchMethodError / 同名类加载问题 / 双亲委派【建议收藏】

本篇介绍一个实际遇到的排查异常的case,涉及的知识点包括:类加载机制、jar包中的类加载顺序、JVM双亲委派模型、破坏双亲委派模型及自定义类加载器的代码示例;

2023-02-16 15:11:57 7328

原创 《MySQL实战45讲》——学习笔记28 “读写分离/主从延迟的解决方案/GTID“

读写分离架构下,发生主从延迟时,可能出现主库已落表而从库因为主从延迟还查不到最新数据的问题;这种"在从库上读到过期数据"的现象,在本文里暂且称之为"过期读";本篇主要介绍从业务角度和MySQL架构角度处理主从延迟问题的一些方案,包括:读写分离架构、强制路由主库方案、延迟请求从库方案、设计库表时采用分库分表方案、判断是否存在主从延迟方案、GTID的概念,以及判断指定的事务是否已经在从库完成执行的方案(等主库位点/GTID方案);

2023-02-08 16:32:49 778

原创 《MySQL实战45讲》——学习笔记26 “备库怎么追上主库“

本篇介绍主备延迟产生时,备库如何追上主库的策略和思路;内容包括:为什么单线程下备库难以"追上"主库?MySQL 5.5版本下的按表分发策略、MySQL 5.6版本的库并行复制策略、MariaDB基于组提交 (group commit) 优化的并行复制策略、MySQL 5.7 版本在MariaDB的策略基础上的优化;

2023-02-07 17:13:34 411

原创 MySQL——关于删除/purge/删除加锁/删除大量数据/truncate&delete

本篇介绍MySQL执行删除命令时的一些机制,包括:解释为什么删除数据后表文件大小不变?MySQL如何删除一行数据?为什么建议删除数据的语句条件上加索引?如何删除大量数据?truncate与delete/drop的区别?

2023-02-06 20:00:30 3481

原创 《MySQL实战45讲》——学习笔记25 “主备延迟“

正常情况下,主库执行更新生成binlog,binlog传到备库并被正确地执行,备库就能达到跟主库一致的状态,保证数据的最终一致性;但是,MySQL要提供高可用能力,只有最终一致性是不够的,还需要考虑主备延迟;本篇介绍MySQL主备延迟相关的知识,包括什么是主备延迟、产生主备延迟的原因、准备切换的方式;

2023-02-06 10:50:54 494 1

原创 编码技巧——JDK版本切换/JDK7和JDK6下的文件输入输入

最近有使用低版本JDK实现文件输入输出的需求,主要是妹子计算机专业考研复试上级算法题,输入输入依赖文件而非纯算法代码,并且IDE一般使用JDK8以下的SDK,导致一些JDK8的API不适用;较早版本的JDK API代码是操作一大堆的缓冲区Buffer和输入输出流InputStream/OutputStream,代码较为复杂,不利于上机演示,因此帮整理下JDK7/JDK6下较为简洁的文件输入输出代码;

2023-01-31 20:22:58 386

原创 《MySQL实战45讲》——学习笔记24 “Master/Slave主备同步机制/binlog的三种格式“

binlog可以用来归档,也可以用来做主备同步,binlog在MySQL的各种高可用方案上扮演了重要角色;本篇主要介绍MySQL主备(M-S结构)的基本原理、不同格式binlog的优缺点和设计者的思考、MySQL双主结构和循环复制问题(双M结构)相关知识,这些点可以说是所有MySQL高可用方案的基础,在这之上演化出了诸如多节点、半同步、MySQL group replication等相对复杂的方案;在做系统开发时候,也能借鉴这些设计思想;

2023-01-31 16:42:27 389

原创 《MySQL实战45讲》——学习笔记23 “binlog&redolog 的写入机制/组提交机制“

本篇主要介绍数据的可靠性有关的知识,包括binlog的写入机制和redolog 的写入机制;

2023-01-29 09:55:24 794

原创 编码踩坑——MySQL更新存放JSON的字段、\“ 转义成 “

本篇介绍在执行MySQL线上变更时遇到的问题,表现为"更新JSON字段时,实际更新的值与SQL语句中的值不一致,JSON格式错误";原因是MySQL对value的转义处理导致;

2022-12-19 17:44:27 3040

原创 《MySQL实战45讲》——学习笔记22 “大量短连接/慢查询/QPS突增的临时处理方案“

22 | MySQL有哪些“饮鸩止渴”提高性能的方法?

2022-12-08 17:50:52 1007

原创 《MySQL实战45讲》——学习笔记21 “加锁规则、加锁案例、死锁示例“

21 | 为什么我只改一行的语句,锁这么多?

2022-12-08 14:55:25 701

原创 《MySQL实战45讲》——学习笔记20 “幻读、全表扫描的加锁方式、间隙锁、next-key lock“

20 | 幻读是什么,幻读有什么问题?

2022-12-06 16:21:48 1028

原创 《MySQL实战45讲》——学习笔记19 “SQL查一行执行慢的排查、锁等待/一致性读“【建议收藏】

19 | 为什么我只查一行的语句,也执行这么慢?

2022-12-04 23:00:54 567

原创 编码技巧——使用Easypoi导出Excel、多sheet、模板导出

本文主要介绍easypoi导出Excel的代码示例;自己之前手动实现过导出工具类《编码技巧——导出工具类》,基于实体和注解,通过反射来映射实体字段和exce列的关系;在部分工程里面看到了easypoi的二方包,于是准备试用下,记录下如何引入并使用Easypoi的过程;

2022-11-29 20:29:05 8676 8

原创 编码技巧——Mybatis分页插件PageHelper使用、遍历表数据

本篇介绍Mybatis分页插件PageHelper的使用,本质上是Mybatis拦截器起作用,在执行目标SQL之前添加count语句及拼接limit到目标SQL后面,这里不再赘述,可参考,本篇仅简单介绍如何让一个使用Mybatis+springboot的项目快速接入PageHelper;

2022-11-28 16:47:16 1033

原创 编码踩坑——记一次fastjson引发的空指针问题、引用标识$ref

本篇介绍在使用fastjson过程中遇到的一个问题,从而引申出使用fastjson时的注意事项——(1)尽量避免在实体中定义 get 开头的方法;(2)避免较深的实体字段层级;(3)避免实体字段之间的引用关系;

2022-11-22 20:56:53 1519

原创 《MySQL实战45讲》——学习笔记18 “索引失效、函数/隐式转换“【建议收藏】

18 | 为什么这些SQL语句逻辑相同,性能却差异巨大?

2022-11-18 11:20:11 538

原创 《MySQL实战45讲》——学习笔记17 “随机排序、内存临时表“

17 | 如何正确地显示随机消息(随机排序)?

2022-11-15 11:07:28 462

原创 《MySQL实战45讲》——学习笔记16 “order by排序原理、为什么定义varchar(255)、order by+limit不稳定、group by隐式排序“

16 | “order by”是怎么工作的?

2022-11-13 18:41:21 782

原创 《MySQL实战45讲》——学习笔记15 “redo log与bin log答疑“总结【建议收藏】

15 | 答疑文章(一):日志和索引相关问题

2022-11-09 20:09:48 1069 1

原创 《MySQL实战45讲》——学习笔记14 “count(*)的原理、与count(1)/count(id)的区别“

14 | count(*)这么慢,我该怎么办?-极客时间

2022-11-07 21:29:25 308

原创 《MySQL实战45讲》——学习笔记13 “数据删除流程、表空间释放、重建表过程、inplace&online DDL“

13 | 为什么表数据删掉一半,表文件大小不变?

2022-11-07 18:36:47 950

原创 《MySQL实战45讲》——学习笔记12 “InnoDB刷脏页的控制策略“

12 | 为什么我的MySQL会“抖”一下?

2022-11-06 11:22:52 1380

空空如也

空空如也

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

TA关注的人

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