- 博客(44)
- 收藏
- 关注
原创 Dbeaver启动报错找不到树元素“/General/Scripts/Script-xx.sql”
经过我打开所有文件并重命名排查后,找到关键性文件。来解决,但是会丢失所有用户配置信息,不推荐。Dbeaver异常关闭再次打开提示错误。将这个文件备份后删除,异常解除。网上一般都是通过改名或者删除。
2025-03-21 17:19:59
155
原创 RAGFlow 的 agent 知识库异常
使用chat回答都没问题,使用agent配置workflow就不行。业务上需要根据病历数据结合大模型来做一些编码功能。RAGFlow版本ragflow:v0.17.2。的向量模型、文档解析比较强,所以选择了。官方issue,等发布新版本。换成Dify轻松解决。
2025-03-21 17:16:35
257
原创 shenyu2.5.0 报错 Expected a com.google.gson.JsonObject but was com.google.gson.JsonPrimitive; at path
shenyu网关
2022-10-12 23:53:47
1451
原创 SpringBoot和MyBatisPlus中枚举自动转换
一、请求参数自动转换@Getterpublic enum UserType{ BACKEND(1, "后台"), FRONT(2, "前台"), ; @JsonCreator UserType(Integer val, String desc) { this.val = val; this.desc = desc; } @EnumValue private final Integer val;
2021-05-12 23:07:22
1958
原创 @Builder和@Accessors那个更香
一、对象的创建方法new Object()工厂模式建造者模式二、优劣性2.1 直接创建对象构造方法多个参数时无法明确含义,比如Object(String name, String phone)和Object(String name, String addr)当参数大于4个时,需要组合所有参数的构造方法,造成代码太大2.2 使用工厂模式可以通过定义方法newInstance和getInstance来确定单例还是多例,再则可以通过方法名来区别方法参数2.3 建造者模式支持链式表达
2021-05-12 23:06:00
294
原创 ThreadLocal、MDC线程池传递和自动清理
一、背景比如TraceId、UserContext、RequestContext需要在线程池进行传递和清理二、实现统一的ThreadLocal垃圾回收public class ThreadLocalCleaner { private static final List<ThreadLocal<?>> CONTAINER = Lists.newArrayList(); public static void register(ThreadLocal<
2021-05-12 23:05:19
3729
原创 解决Unable to find a single main class from the following candidates [xxx,xxx]
一、问题描述1.1 开发环境配置pom.xml<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <!--一定要对上springboot版本号,因为新版springboot不再设置这个插件的依赖--> <version>${spring-boot.vers
2021-05-12 23:04:11
1273
原创 springboot敏感数据脱敏
一、背景像身份证、手机号、住址等敏感信息在日志打印、前端用户展示时需要对数据脱敏处理。二、实现方案在数据库查询阶段处理可以在mybatis拦截器中对结果映射时进行脱敏处理数据序列化阶段处理基于Jackson序列化器对数据动态处理三、实现代码以下是基于Jackson的脱敏方案常用的脱敏类型枚举@Getter@AllArgsConstructorpublic enum MaskType { PHONE(3, 4), //... NONE(0, 0),
2021-05-12 23:03:52
2862
原创 扩展MybatisPlus批量插入(忽略唯一索引冲突行)
一、背景再数据同步或者幂等场景下,常常需要设置唯一索引来避免重复请求,select and update效率低,且并发时还是会报错,并不友好,那么可以用Mysql的Insert ignore语法来优化。MybatisPlus官方并没有针此处场景进行支持二、环境<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifac
2021-05-12 23:03:21
4307
原创 解决MyBatis Plus不支持多个MetaObjectHandler实现类
一、背景MybatisPlus不支持注入多个MetaObjectHandler实例二、原因查看MybatisPlusAutoConfiguration类@Bean@ConditionalOnMissingBean public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception { ... // TODO 此处必为非 NULL GlobalConfig globalConf
2021-05-11 23:00:51
2891
1
原创 解决Mybatis Plus使用insertBatchSomeColumn批量插入Null字段非空问题[终版]
一、场景Mybatis Plus默认提供了insertBatchSomeColumn选装件当批量插入的PO对象是NULL值,且数据库字段是NotNull且有默认值时就会报Value Not Null异常二、解决思路在代码生成器时对PO对象赋予默认值在BaseServiceImpl实现类中对PO对象值为Null,数据库字段NotNull且有默认的值字段自动设置默认值三、实现3.1 代码生成器解决方法重写AutoGenerator/*package com.taco.sprin
2021-05-11 23:00:16
9183
原创 解决数据库批量插入和批量更新死锁问题
一、背景因为上游系统不可控性,下游系统的唯一约束不可知,数据推送的过程中可能数据乱序的如果存在并发上传,没有加锁,非常大的可能性出现死锁二、解决思路手动对数据进行排序接口对相同来源请求进行加锁、队列在代码生成的过程标记唯一索引字段,统一抽象服务层插入和更新方法,对数据排序和拆分单次插入量三、实现基于统一抽象服务层解决思路查询唯一索引字段MYSQL:INNODB_SYS_INDEXES中记录表的索引INNODB_SYS_FIELDS记录索引的字段和顺序自定义唯一索引
2021-05-11 22:59:42
1917
原创 批量查询优化思路
一、背景跨库查询连表查询,小表大部分都重复数据仅查询无事务隔离性要求IN数量过大全表扫描二、思路将主表先查询出来,再异步查询子表数据IN批量查询可以使用forkJoin思路,将大批量查询分解成多个子查询,再聚合返回结果查询时可能存在连续字段是索引,可以对数据先排序在查询基于Reactor思路,可以将数据返回流的,先返回先处理...
2021-05-11 22:59:09
244
原创 提升反射效率
一、背景在框架层、业务通用处理层经常会使用反射来做一些统一的处理,但是反射往往效率很低二、解决方法2.1 缓存可以用ConcurrentMap懒缓存Class、Field、Method等元数据,减少ClassLoader的寻找时间可以参考spring的ReflectionUtils工具 /** * Cache for {@link Class#getDeclaredMethods()} plus equivalent default methods * from Java 8 based
2021-05-11 22:58:17
234
原创 REST API版本控制的三种方式
一、背景在多版本同时运行的场景下(APP),会存在不同版本的接口,同时新版本也需要向下兼容,那么就需要客户端传递版本号信息二、Version版本传递的方式2.1 版本信息放在Path或RequestParam中api.example.com/v3api_v3.example.comapi.example.com/xxx?version=v3优点:版本号清晰缺点:版本号侵入了url中,业务无关的参数应该放在请求头中2.2 在请求头中传递Accept-version:v1Accept-v
2021-05-11 22:57:44
487
原创 多读实例数据一致性问题
一、背景大部分业务都是读多写少场景,通过读写分离增加读节点来增加负载二、数据库同步方式在从节点同步主节点时,可以设置同步方式异步复制(Asynchronous replication)MySQL默认的复制即是异步的,主库在执行完客户端提交的事务后会立即将结果返给给客户端,并不关心从库是否已经接收并处理,这样就会有一个问题,主如果crash掉了,此时主上已经提交的事务可能并没有传到从上,如果此时,强行将从提升为主,可能导致新主上的数据不完整。全同步复制(Fully synchronous r
2021-05-11 22:56:50
270
原创 XXL-JOB接入trace链路
一、背景目前XXL-JOB使用自定义XxlJobHelper来做日志埋点,但是实际上很多内部框架的日志都未接入,此时定时任务出现错误,需要上执行器上查看日志信息,这时候无法查询到本次调度相关日志。二、环境<dependency> <groupId>com.xuxueli</groupId> <artifactId>xxl-job-core</artifactId> <version>2.3.0</version>
2021-05-11 22:55:34
1935
原创 Mybatis Plus自定义分页(自动开闭分页)
一、 背景Mybatis Plus对于分页数量大小默认有限制,同时有的时候分页接口和导出接口通常是一模一样,这时候需要自动判断是否需要开启分页。二、实现思路基于mybatis plus的文档// 当`page`参数为null时,会抛出空指针异常<E extends IPage<T>> E selectPage(E page, @Param(Constants.WRAPPER) Wrapper<T> queryWrapper);如果想实现自动开闭分页需要这样实
2021-05-11 22:54:53
1244
原创 Sentinel Dashboard支持Nacos和注解启动改造
一、背景sentinel官方并没有对nacos持久化进行完整适配改造代码还需要对代码重新打包,对于代码的将来升级的合并都不太方便一般情况只需要在网关层做限流二、环境 <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-sentinel</artifac
2021-05-11 22:54:08
601
1
原创 解决Mybatis Generator 将tinyint映射为Byte和Boolean
Mybatis Generator 对于Tinyint映射为Byte和Boolean1. 对于tinyint(4)映射为Byte1.1 环境spring boot 2.1.xmybatistk.mybatismysql1.2 自定义类型解析器(1) 新建以下类public class CustomerJavaTypeResolver extends JavaTypeResolverDefaultImpl { public CustomerJavaTypeResolver()
2021-05-10 19:50:25
3525
原创 docker安装jenkins
#使用docker安装jenkins一 、拉取jenkins镜像镜像地址docker镜像配置文档#拉取镜像docker pull jenkins/jenkins二 、运行容器2.1 docker安装docker run -d -p 18081:8080 -p 50000:50000 #数据文件挂载-v /usr/local/use_data/jenkins/data:/var/jenkins_home #时间同步-v /etc/localtime:/etc/localtime -
2021-05-10 00:20:32
207
原创 恢复虚拟机时,Docker中的容器无法访问
一、问题最近在VMware恢复挂起虚拟机时,GitLab无法访问二、查找原因在局域网的其他主机上访问gitLab的都超时尝试在安装gitlab的虚拟机上访问$ curl 192.168.25.140<html><body>You are being <a href="http://192.168.25.140/users/sign_in">redirected</a>.</body></html>有登录页面访问,
2021-05-10 00:19:40
640
1
原创 Harbor使用之同步镜像
1. 新建仓库管理目标来到harbor页面,进入系统管理/仓库管理,新建目标完成后2. 新建同步Job进入/系统管理/同步管理3. 执行同步4. 执行结果5. 注意事项新建同步任务时,如果远程镜像没有项目前缀,必须要加上harbor的前缀,例如:jdk1.8:latest镜像必须改成/${project}/jdk1.8:latest,否则执行同步会一直失败...
2021-05-10 00:18:45
4211
原创 springboot更新版本造成no main manifest attribute
最近把springboot版本提升到2.1.6.RELEASE,springcloud版本提升到Greenwich.SR2推送远程镜像到rancher时一直无法启动,查看日志显示no main manifest attribute, in /app.jar打包工具都没有改过,以前都没问题的,然后鼠标点了一下打包插件发现没有版本号! <plugin> <groupId>org.springframework.boot</groupId> <art
2021-05-10 00:18:04
361
原创 Harbor安装
Harbor安装一 、介绍1. Docker register和Harbor区别略二、 安装1. docker安装略2. docker-compose安装略3. Harbor安装3.1 下载安装包Harbor-1.8.0高速下载地址github地址推荐第一个下载,github如果没有vpn下载很慢3.2 解压tar -zxvf harbor-offline-installer-v1.8.0.tgz3.3 修改配置文件3.4 导入离线包docker load -i ha
2021-05-10 00:17:04
129
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人