自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 wkhtmltopdf把 html 原生转成成 pdf

安装 wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox_0.12.6-1.focal_amd64.deb。安装 指定版本:wkhtmltopdf 0.12.6 (with patched qt)ubuntu20 安装宋体 不然乱码(查了一个多小时)

2026-01-29 15:21:40 234

原创 如何安全批量更新数据库某个字段

通过备份和批量更新,前后字段对账、确保了数据安全和排序的准确性。字段排序混乱,需要重置为根据插入时间递增的顺序。由于前端 bug,尺码组的。:通过 SQL 更新。字段,确保数据正确。

2026-01-17 10:19:52 184

原创 MySQL8.0+ 永久开启sql_safe_updates 精简方案

1. 生产环境必开,核心配置为;2. 配置写在[mysqld]节点,Ubuntu/CentOS注意对应配置文件路径;3. 重启后验证3个维度,确保全场景生效。l。

2026-01-14 13:33:00 315

原创 IntelliJ IDEA 2025.3.1 中 Export → SQL Updates 不带 WHERE 的真实原因与解决方案(OpenAI 协助整理)

在 IntelliJ IDEA 2025.3.1 中,Export → SQL Updates 是否带 WHERE,不取决于 DataSource 是否刷新,而取决于该表节点是否已经缓存了 Primary Key 或 Unique Index 信息。在 2025.3.1 中,表级元数据更依赖“显式 Refresh”,而 Export SQL Updates 不会触发表级元数据加载,因此在未刷新过的表上导出时必然生成无 WHERE 的 UPDATE。

2026-01-14 10:21:09 817

原创 更新数据库之前,一定要备份

养成习惯,不能偷懒,先拿一条数据尝试 或者在本地测试环境跑过了 再去正式 不要相信自己直觉。今天用新版本 DataGrid 生成 update sql语句,竟然不带更新条件。精神恍惚了,DataGrid 提示了没带 where 条件 结果选择全部执行了。还好执行之前,习惯性的备份一下数据库。一不小心把整个表全更了。尝试了多次 才带上了。

2026-01-13 18:33:23 91

原创 使用 cursor 编码感悟

开发人员写出注释,tab会根据上下文 复用已有的业务逻辑,实现当前方法业务。写完之后,再把鼠标放到方法上面 /* ,会自动补充合适的注释。开发轻松 easy and fun。

2026-01-13 13:57:31 71

原创 复盘的一天20260108-实践后的思考

紧跟潮流了:不手写一行代码、专门写prd、ai快速认证思考、专注于核心内容:思考。未来的方向,现在控制计算机工作,以后控制ai工作,熟悉ai的很多最佳实践。让ai基于上下文,先整理详细设计,相当于一份详细的产品文档,多轮交互。如何描述需求 非常重要,程序员往往只会用代码描述出来。积累好的最佳实践,并进行分享csdn,再转给其他人。在执行的过程中,不断调整提示词,一条一条说话调整。vibe coding的一天,力大没出奇迹。询问ai 如何描述清楚,学习写提示词。把最佳实践保存下来,以后就可以复用了。

2026-01-09 19:41:43 221

原创 使用keychron Launcher改 K3Max 的功能键

操作,尝试很多次 界面都没翻译,操作流程也很复杂:还要下载官网 json文件(官网的文件也不找,还是 openai绑找到的),导入修改 再写入,但是一直卡在连接键盘上,显示设备已配对就是不显示配置界面,以为改键这么麻烦。点击 F1F1高亮,再点击下面的 basic区的F1 点完上面的 F2自动选中,继续点击下面的 F2~F12。看别人描述“而在我的日常工作中,常用的是F1~F12,期望F1~F12功能键和多媒体功能键的位置互换。非常好用,快速连接键盘,不需要导入导出 json等。改完立即生效不需要保存。

2026-01-07 16:21:13 299

原创 阿里云同区域不同账户下两个服务器打通内网

3.关闭服务器实例,在实例详情找到专用网络更换,不需要释放重建,现在阿里云把释放功能禁用了,不能点。可以部署系统了,不需要担心内部网速问题,4.注意创建交换器时选择区域要跟原专用网络保持一致,不然在更换专用网络时选不到。第一次操作,操作界面让人不好理解,胡乱操作,花了一晚上才明白具体怎么回事,2.遇到问题,两台服务器默认创建的专用网络 ip 段都是一样的,就是在 A 账户创建一条路由记录,在 B 账户创建一条路由记录。官方文档都写了,没接触过实际操作,不好理解。随后一写,做个记录,文字一般。

2026-01-01 22:01:26 202

原创 同一张表,并发更新不同数据,竟然事务超时

原因:回调处理时间挺长,更新又是按单号更新,单号没有加索引,导致第一次回调锁表。再一查发现 短时间内,飞书回调了四条数据,第一条数据处理成功。还没处理完,后面回调发生,只能阻塞等待 导致后续超时。客户报三条数据的飞书审批一直在审批中。查看数据,三条数据飞书回调处理失败。幸亏之前背过面试题,立即找到原因。

2025-12-28 10:34:12 126

原创 优化大数量展示

大数据量展示优化

2025-12-23 18:17:50 92

原创 Mac 上重新安装了Cursor 2.2.30,重新配置 springboot 过程记录

环境变量中,配置好 JAVA_HOME cursor会自动使用这个 javase, 不需要在setting.json 指定 Java 版本。cursor 运行需要依赖更改版本的 javase 根据 cursor 提示安装就好,它会在.cursor 目录下下载一个高版本的使用。但是不同的项目使用不同的 javase 时可在 setting.json 中配置。环境变量中、配置好 MAVEN_HOME 就好了,cursor 自动扫描到。## 新版本的Cursor配置 java 更简单了,但是花了很长时间。

2025-12-18 13:32:52 197

原创 业务链很长怎么办

链式校验:每个节点增加校验,确保准确后再往下流转 就能全局准确 降低焦虑。固定生命周期固定、添加很多钩子函数,降低认知成本。分成多个阶段,完成一个阶段就行存档,逐步全部完成。学习大厂 分布式 高并发经验。

2025-12-17 15:20:47 80

原创 如何根据 Excel 批量更新 mysql 表中数据

平时处理 Excel 数据,可麻烦了,都是通过写 java controller 上传后 解析成 java 对象再处理,时间老长了。这样把 Excel 数据瞬间导入一个临时表,就可以对这个表进行各种操作 以及连接更新其它表。

2025-12-09 09:59:08 263

原创 业务设计:单据号前缀或后缀增加业务标识大大降低认知与运维负担

定义问题 解决问题 总结成一个知识点 方便传播交流:基因法 (数据库分表字段常用)eg: 220251202000001与 120251202000001。在使用系统时顺序判断数据来源,人与代码都能降低负担。成衣码 前缀1 代表量体 2 代表量体。

2025-12-02 10:28:48 117

原创 mysql单表能存多少数据

根据主表id查询这个子表,因为有索引,没有丝毫压力。如果只是根据主表id查询,还是没有任何压力的。几个G服务器跟32g服务器还有有本质区别的。数据库备份时,多少有点耗时,还是很快的。一个子表三千万条数据。

2025-11-02 22:37:39 406

原创 如何使用 mysql 代替 redis 长时间持久化计数

保证与调用方事务隔离使用REQUIRES_NEW,REQUIRES_NEW执行完会立即提交,腾出资源供供其他模块调用,避免长时间等待调用方提交事务才结束。保证单线程:工具类方法使用synchronized,保住REQUIRES_NEW事务,保证全局线程安全,可以使用分布式锁,加同步锁降低复杂度。

2025-10-23 12:38:26 198

原创 接口返回 2 万条数据,easy-trans导致多了20s耗时排查过程

排查序列化问题:接口方法返回值改成 String, 把响应结果使用 ObjectMapper序列化成 json字符串(获取容器的 objectMapper) 不存在耗时,跟序列化貌似无关。排查页面渲染是否缓慢:F12 查看接口 等待服务器响应 20s 下载时间 30s, 故不考虑渲染问题。排查框架问题,把接口方法复制到新的 springboot项目中,不存在问题,断定框架存在问题。排查请求响应日志打印:关闭请求响应日志拦截器 问题依然存在。排查 sql:sql 比较简单。

2025-09-16 17:53:33 179

原创 Ubuntu系统设置的cron定时任务,总晚 8 小时

原因:服务器刚启动时时区不对,后台改了系统时区,cron一直没重启 使用了原时区。重启cron: systemctl restart cron 解决。

2025-09-04 09:41:17 171

原创 启动 Springboot 方式不同,导致无法读取中文文件名的文件

1.win10 系统 使用bat 执行 shpass -p "xxx" ssh user@192.168.xx.xxx "cd /data/app/java/ && /data/app/java/deploy.sh",没有这个问题。2.使用-Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8也能解决,但是其它功能会出现问题:easyExcel 解析Excel文档内容会出现无法解决的问题。3. ssh 登录进入系统,直接执行deploy.sh没有问题。

2025-09-02 19:37:20 302

原创 防止飞书重复回调通知分布式锁

所有 lock.tryLock(20,TimeUint.SECONDS) ,持有锁时间参数默认-1。对 lock.tryLock(20, 20, TimeUnit.SECONDS);发起飞书审批,飞书设置自动审核通过,导致会收到两次审核通过通知。原来是业务逻辑代码超过 20s了,导致自动释放锁了。第二个参数是持有锁的时间,租借时间,不会自动续锁。加了分布式锁 ,仍导致执行业务执行两遍了。销售订单下,明细25明细款,第一个参数是获取锁的等待时间。

2025-07-30 17:26:24 231

原创 限流算法与实现

窗口记录每个格子的请求量,每次滑动一下,新增一个格子,原本窗口第一个格子被划出,释放格子占用的请求量,给新格子。客户端速度大于服务器,就会出现丢包重发,随意客户端根据服务器返回的滑动窗口的格子内请求书,来调整速度。使用场景:tcp协议 滑动窗口,保证速度,还要保证可靠性。超过这个阈值,要么使用mysql集群、要么限流,防止宕机。缺点:不均匀,跨越临界点的一秒内,阈值会翻倍,导致宕机。就是个计数器,一秒内超过阈值,不允许访问。一秒代表一个窗口,同时一秒又划分多个格子。缺点:复杂,需要记录每个格子的请求数量。

2025-07-20 14:18:56 261

原创 费曼学习法

费曼学习解决我学习的焦虑:怎么学,学到什么程度,为什么学的不扎实,为什么会抗拒学习,为什么学完表达不出来,一张嘴就是错误逻辑表达不清楚,为什么学习时没有目标,只会盯着进度条,盯着时间,浮躁的下一节,下一节,最后啥都没学好,如何找到自己的驱动力。用自己的易懂语言输出博客,不是简单重复课程内容,获取反馈,哪里有漏洞,哪里没掌握,回归学习,再输入。方法错误,死记硬背,机械重复,追求进度条(要以理解某个点为核心,快进 重复,来回跳转)输出获取反馈,发现漏洞回归学习,找到那个漏洞点,重复播放学习直到理解。

2025-07-20 10:37:11 223

原创 Ubuntu20 搭建 Java、Redis、Nginx

Java 直接从 Oracle 官网下载免安装包设置修改。

2025-06-22 18:56:58 277

原创 idea 自带工具调试接口卡住了

调试接口 接口返货 4000 条 json 数据 调试工具长时间等待 其实接口已执行完成。通过界面调试+idea 自带工具配合 可早发现问题。

2025-04-17 16:31:43 198

原创 easypoi 根据Excel 模板导出数据

花了好几个小时才发现 单元格格式不知何时被设置了小数 2 位,整数不带零 Bigdecimal取零,导出后还是带 2 个零。Java BigDecimal 导出总是 2 位小数,

2024-12-02 21:52:51 269

原创 Ubuntu nginx let‘s encrypt免费 https 设置

如果测试成功,Certbot 会自动配置系统定期运行证书续期。通常情况下,Certbot 会自动将续期命令添加到系统的任务调度器中,确保证书在过期前得到更新。80 会跳 443,但是nginx如果是 代理接口,要配置两个 server 分别占用 80,443。3.certbot会自动修改 nginx 的配置文件,原来 80 端口不能被访问了,443 端口可访问了。1.保证服务器可域名访问,certbot需要验证 txt 记录。2.同时要保证nginx 已配置 80端口的域名,否则提示。

2024-11-16 11:15:48 839 2

转载 Java 线上日志不打印堆栈信息原因

原文链接:https://blog.csdn.net/u012745499/article/details/113729875。不过, 当相同位置发生相同异常达到一定次数 (具体次数不一定), 就会自动省略堆栈信息, 剩下一句孤零零的 null。最近有遇到正式环境中 Java 应用某个异常信息, 没有打印堆栈信息, 只有一行。为了避免忽略打印堆栈的情况, 我们可以显式指定 jvm 参数。对于我们排查问题, 非常致命, 无法准确定位异常发生原因。经过测试发现, 是 java 的默认优化导致。

2024-11-06 18:08:55 843

原创 easypoi模版导出-表格最后一行被覆盖

模版导出额Excel下载(集合若依的Excel的方法)解决方案:最后一行的下一行的第一个单元格加个空格。

2024-10-31 13:27:52 471

原创 cursor ai 快速生成 where if 动态sql

把url 查询条件 复制给 cursor(Ctril+K)

2024-10-25 14:29:23 376

原创 业务代码写的工具类与引用的jar中工具类,同包同名会发生什么

本地idea开发没有问题,部署到服务器 jar -jar 找不到自定义的业务代码。

2024-10-09 13:24:09 197

原创 企业微信审批-回调,开发测试环境共用一个回调

使用nginx 的mirror复制流量。nginx A 配置一个域名。

2024-10-09 10:46:55 584

原创 为什么本地开发的springboot项目,部署到服务器就出现循环依赖了

可能本地创建Bean的顺序运服务器不一致。

2024-09-26 15:45:36 376

原创 若依-数据权限控制-通过菜单权限区分不同角色的数据范围

/ 在部分业务需求中,在本人数据权限下,部门数据权限需要开放。也就是需要实现多选的效果,暂时先硬编码实现。// 数据权限为仅本人且没有userAlias别名不查询任何数据。// 如果有权限限制,则获取权限所在的菜单所属的角色,获取该菜单所关联的数据。* @param permission 权限字符串。* @param joinPoint 切点。* @param userAlias 别名。* @return 用户是否具备某权限。* @param user 用户。* 验证用户是否具备某权限。

2024-09-23 10:51:16 576

原创 windows bat 设置Java回滚记录垃圾回收日志

特殊字符% 要使用%% 不然 单个%会篡改命令 导致无法执行。

2024-09-03 12:40:46 199

原创 nginx生产环境-运维经验-404 Not Found

再看nginx的错误日志(一小时之前的))如上,因磁盘满了,错误日志不会一直打印。无意中,查看磁盘40G系统已占满,释放磁盘后,可正常上传图片。插件default.cnf 路由转发没有问题。突然有一天 系统的图片上传接口报404。查看是nginx报的。

2024-08-29 10:29:12 386

原创 K8S磁盘与Sleuth 引发的redis经常丢失链接等怪异问题。

Docker 容器挂载磁盘记录 Springboot 的日志,挂载磁盘性能很低,导致 java 应用响应缓慢。问题 2 看日志看不出明显耗时日志,使用skyWalking查看,日志之间都有规律的耗时相对较长。可断定,磁盘性能太差,导致每次写日志都很慢。寻找 slueth 的替代品,自己写过滤器,有请求时往 logback 的日志里添加标记。增加 SpringCloud的 sleuth ,标记出某次请求的日志,查看哪里耗时增加。问题 1出现了,redis 时不时丢失链接,使用 redis 客户端访问正常。

2024-08-23 11:23:06 384

原创 Mybatis插件:慢sql存储到数据库

sleuth的tranceId。sql语句,包含参数。

2024-08-22 17:34:22 306

原创 积木报表 1.6.6不支持sql in参数ids传递

2.积木报表 参数占位符是${},与Freemarker冲突,猜测是在Freemarker渲染之前,把${ids}转换成了:ids。4.只查询出一条,是为MySQL(5.7.32)的问题,已拿sql 到数据库中验证过。3.导致把ids作为一个字符串传给in:id in ("34,35")1.积木报表的动态sql使用了Freemarker渲染。传递参数ids=34,35,报表页面只展示34一条记录。ids=34,35时。

2024-08-20 16:47:59 682

原创 RedisTempate序列化的json字符串,如何反序列化

常见工具 Gson json = new Gson();无法解析,只能有Josn的反序列化来实现。

2024-08-15 18:34:00 370

空空如也

空空如也

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

TA关注的人

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