- 博客(355)
- 问答 (2)
- 收藏
- 关注
原创 问题解决 Caused by: java.util.zip.ZipException: Unexpected record signature: 0X9
但是通过 SpringBoot 提供的加载文件API或运行时动态获取却报错了。但是通过Path.get 直接加载文件绝对路径去访问的时候,却是正常的。代码是读取 resources下的docx文件,然后报错了。
2025-03-21 11:22:14
158
原创 服务器查看空间占用的命令
非常好用,/ 可加目录du -sh /* 2>/dev/null mysql的 每个表占用selecttable_schema as '数据库',table_name as '表名',table_rows as '记录数',truncate(data_length/1024/1024, 2) as '数据容量(MB)',truncate(index_length/1024/1024, 2) as '索引容量(MB)'from information_schema.tablesorder by
2025-02-26 16:22:34
177
原创 UNIAPP 动态菜单实现方法
在 tab 页,底部放入该 tab 组件,并设置当前回显的页面,这里使用了根据页面name回显的方式。由于每次都是新请求权限接口,会造成不必要的性能损耗。所以前端这里缓存一下。由于这里是动态菜单,所以菜单的位置不太确定,所以name非常合适。
2024-10-02 03:12:58
993
1
原创 class org.bouncycastle.jcajce.provider.asymmetric.edec.BCXDHPublicKey cannot be cast to class 支付问题
今天在 Jdk17 环境下接入 支付工具包 com.egzosn pay-java-wx ,竟然无法启动。经过我不断的尝试终于解决了,心情舒畅了。同样的代码却在 jdk8 中正常启动。
2024-08-25 11:36:07
543
原创 Vue 使用 v-model 绑定自定义组件值
2. 当前组件内值改变的时候 触发 input 事件,并传递改变后的值。1. 接受 value 字段。
2024-08-14 11:32:35
297
原创 vite 打包到二级目录下
"build:prod": "vite build --mode production --base=/manager/"
2024-07-31 11:46:11
713
原创 InfiniteScroll Ant-Mobile 替换默认文字 “加载中” “没有更多了”
【代码】InfiniteScroll Ant-Mobile 替换默认文字 “加载中” “没有更多了”
2024-07-10 10:33:01
295
原创 前端组件业务数据选择功能优雅写法
1. 业务场景后台管理在实际业务中,经常可见的功能为:在当前的页面中从其他列表中选择数据。例如,在一个商品活动列表页面中 需要选择配置的商品。2.遇到问题从代码划分的角度来说,每个业务列表代码首先分散开来,各自为一个文件夹。如果想在业务A中选择业务B的数据,那么常规写法为封装一个组件,然后在当前页面中引用,代码大概如下。import DataList from '@/xxx'
2024-06-02 22:38:34
475
原创 el-select 模糊搜索 实现一
本实现方式采用,页面打开后直接请求全部数据,然后输入框输入后搜索的话采用前端本地搜索(list.find 方式)
2024-02-27 22:56:03
546
原创 RabbitMQ 发送消息 绕过系统配置的 消息转换器方法
所以问题来了,系统目前已经集成好了, 都是用的 JSONB,这也是统一的配置。所以,直接就是看发送消息的源码,convertAndSend 方法,这里具体是哪里使用到了配置的消息转换器,消息转换器何时何以参加?起初想的是再弄一套配置,也就是 rabbitmqTemplate,这套配置就不配 JSON 的消息转换器了。不再走下面的消息转换了。我负责的系统需要与其他系统交互,需要我将消息发送到 MQ 上,其他系统监听消息。遇到问题,两个系统的发送消息格式都是不一致的,所以这个地方是需要协商打通的。
2024-01-03 14:05:44
812
原创 根据一个类型 获取该类型的 特殊判断 优雅写法
如果我要查询的话,SQL 里的条件必定是一个时间范围,所以就需要根据类型来算好这个时间范围,所以可以写成下面这样。需求:一个统计接口,时间类型参数有以下:今日、近七天、近三十日等。到时候直接就是 获取该类型的 日期范围就好了,非常优雅。
2023-11-04 18:22:54
273
原创 Java 工具类 列表动态维护
常规实现:先删除原来的全部数据,再重新插入,这样就很耗时了,所以这里写一个工具类出来。具体参数如何传,已经写在了工具类的注释中。原本需求:一个二级 list 更新功能。1. 如果有新增的数据:仅对这些数据新增。2. 如果有删除的数据:仅删除这些数据。3. 其他的话就是更新了。
2023-10-28 23:14:58
346
1
原创 Redis 与 MySQL 一致性 实现方案
解决方法:MySQL 中的数据更新的时候 ,在更新之前先删一次 Redis 中的数据,在更新之后再删一次 Redis 中的数据。正常情况下的流程是:请求来了,先检查 Redis 有没有数据,有返回;没有便查询 MySQL 然后 放入 Redis。此时,如果 MySQL 的数据发生了变化,所以需要同步到 Redis 中。
2023-10-27 09:43:50
502
原创 RabbitMQ 消息模型
然后,生产者发送消息的时候就要传这个值了:比如 传一个 info,那么 交换机就会把消息转发给 绑定了 info 的队列 C2 上。首先可能存在多个交换机,所以 队列是需要绑定到交换机的,交换机转发消息时 可选择的队列列表 只能是绑定到它的 队列。消费者不与队列交互,只给交换机发送,交换机再把消息转发给指定队列,消费者监听到自己的队列有消息了,就可以消费了。所以消费者最终发的消息是:消息要发给哪个交换机的哪个 bindingKey 的队列上。广播就是将消息转发给 绑定到该交换机的 全部队列上。
2023-10-20 10:59:45
453
原创 git 项目带分支迁移到另一个 git 服务器
1. 指定迁移 git 仓库地址git remote add target 2. 全部代码推送git push target --all
2023-09-26 22:21:14
922
原创 MyBatisPlus 底层用 json 存储,Java 仍然使用 对象操作
PO 类的字段定义为一个对象,然后使用以下注解修饰@TableField(typeHandler = JacksonTypeHandler.class)当然 jsonTypeHandler 有多种可以选择。PO 类的字段定义为一个对象,然后使用以下注解修饰。
2023-09-21 11:59:21
206
原创 MybatisPlus 数据库字段为 int,PO 类定义为 枚举类
当一张表的某个字段是int,并且有不同的状态时,可以使用枚举类都列出来,就不用写死数值或者额外定义常量类了。其中该类的 grade 字段在数据库中为 int。而在 Java 类里使用Enum,那么该如何对应呢。将 @EnumValue 注解修饰到真正要数据库关联的字段上面。同理,字符串也可以这样操作。这样写之后,代码就更优雅了。首先定义一个 Java 类。
2023-09-21 11:39:42
323
原创 保留 N 条数据功能 实现方案
需求:用户浏览某信息后 就插入一条浏览记录,该浏览记录限制只保留 N 条。实现方案:1. 插入记录2. 查询总记录3. 判断:总记录 是否大于 阈值 3.1 如果大于:总记录 - 阈值 获取到超出数量,将超出数量做处理 3.1.1 UPDATE 方式:UPDATE xxx SET is_del = 1LIMIT 超出数量 DELETE 方式:DELETE FROM xxx LIMIT
2023-09-06 14:34:08
115
原创 React Antd 实现表格合计功能
思路:首先拿到 表格数组对象,然后写一个工具类,然后向数组对象最后插入一条数据,这条数据的字段时根据表格数组里合计算出来的。
2023-08-03 14:55:24
1960
原创 ShardingSphere 源码模块介绍
Sharding - JDBC 主要实现数据库的分库分表,它通过解析应用程序的 SQL 语句,将其中的表名和条件就行解析和分析,然后根据预先配置的规则,将数据分散到不同的数据库和表中。用于提供数据库代理功能,它的作用是在应用程序和数据库之间充当一个中间层,接收来自应用程序的数据库请求,并根据配置进行相应的处理和路由。主要负责项目的整合和发布,该模块中的文件主要是一些配置和脚本文件,用于控制项目的构建和打包流程。公共基础设施模块,为其他模块提供一些共享的基础功能和工具类,它包含了以下几个主要的子模块。
2023-07-30 20:51:53
423
原创 动态线程池 dynamic-tp 源码
官方文档(1)支持运行时动态修改线程池参数字段包括:核心线程数、最大线程数等(2)近实时监控线程池情况,如果发现超过指定阈值就告警通知用户告知用户后,用户就可以修改线程池配置,怎么修改呢?直接修改配置中心的数据,也就是将线程池字段存储在配置中心,线程池也从配置中心读取,用户也从配置中心修改。如想了解更多使用信息,请查看上方官方文档。
2023-05-27 02:58:17
2539
2
原创 【Spring - beans】 BeanDefinition 源码
目录1. BeanDefinition1.1 AbstractBeanDefinition1.2RootBeanDefinition1.3ChildBeanDefinition1.4GenericBeanDefinition2.BeanDefinitionReader2.1AbstractBeanDefinitionReader2.2XmlBeanDefinitionReader2.3GroovyBeanDefinitionReader2.4Prope
2023-05-22 19:03:52
1236
1
原创 MyBatis Plus 插件 动态数据源实现原理与源码讲解 (dynamic-datasource-spring-boot-starter-master)
多数据源即一个项目中同时存在多个不同的数据库连接池。比如 127.0.0.1:3306/test 127.0.0.1:3307/test127.0.0.1:3308/test总之项目存在需要操作多个库的需求。具体在编码方面呢,具体就是一个service 中,方法1使用库1查询,方法2使用库2查询。
2023-05-16 15:12:51
7572
2
原创 Nacos 鉴权系统源码讲解
鉴权功能默认没有开启,开启后的效果就是 Nacos 的接口需要用户登录并且具有权限才能调用该接口。例如注册实例、发布配置等。鉴权也就是 我是谁、我能干什么。
2023-04-22 14:34:57
2016
原创 实现 2PC 协议
2PC 协议(Two Phase Commit)是一个分布式事务协议。2PC 为两阶段提交,分为两个阶段。两个角色。1. PREPARE2PC 有两个角色1. Transaction Manger / TM 事务管理者2. Resouce Manager / RM 资源管理者。
2023-04-01 16:49:04
1051
原创 Nacos 注册中心 - 健康检查机制源码
当一个服务实例注册到 Nacos 中后,其他服务就可以从 Nacos 中查询出该服务实例信息,就可以调用使用了。然而服务提供者如果此时挂掉了,此时其他服务拿到信息后就会调用不通,所以Nacos中的服务信息应该有一个更新机制(即删除掉挂掉的服务)那么服务注册信息应该如何维护呢,那就是判断某个服务实例是否有问题,如果检测到服务实例出现问题了就将他剔除掉。那么如何判断 服务实例 是否有问题呢?这就是健康检查要做的事情,即检查服务实例的健康状态。不健康则剔除下线。
2023-03-18 16:25:20
1689
4
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人