随笔分类 - Java
摘要:产品技术架构从SpringBoot2.x升级到SpringBoot3.x后,对原有代码进行单元测试时发现,之前通过CriteriaQuery查询对象实现的分页查询功能,在进行记录数count查询时,会抛出SqlTreeCreationException: Could not locate Table
阅读全文
摘要:优点 无侵入:仅需在mapper层接口中增加Pager<T>参数即可。 零配置:无需额外增加配置项,能够自动推断数据库分页方言。 使用方法 SpringBoot2 项目引入maven依赖 <dependency> <groupId>cn.codest</groupId> <artifactId>my
阅读全文
摘要:使用Maven向中央仓库推送项目时,遇到Unable to make field private final java.util.Comparator java.util.TreeMap.comparator accessible: module java.base does not "opens
阅读全文
摘要:在%TOMCAT_HOME%/bin目录下新建setenv.sh或setenv.bat脚本,添加如下内容: CATALINA_OPTS="-Dspring.profiles.active=release \ -DNACOS_NAMESPACE=bf8720f4-xxxx-xxxx-b713-957a
阅读全文
摘要:只发博客园,盗版必究 先说背景 平时我们的Spring Boot项目都是打成Executable Jar启动应用,最近接了个技术需求,需要打成War包,将多个项目放在同一个Tomcat中运行。 原本Jar包启动一切正常,但是打成WAR放Tomcat启动后报错了,异常栈如下: Caused by: o
阅读全文
摘要:背景 公司的中台产品,需要对外部API接口返回的JSON数据进行采集入湖,有时候外部API接口返回的JSON数据层级嵌套比较深,举个栗子: 上述的JSON数据中,最外层为请求返回对象,data里面包含返回的业务数据,业务数据按照学校 / 班级 / 学生进行嵌套 在数据入湖时,需要按照最内层的学生视角
阅读全文
摘要:书接上回 在 Java自定义ClassLoader实现插件类隔离加载文章中,我们通过 自定义ClassLoader + 插件独立打包引入的方式,实现了同依赖不同版本的隔离加载 这次咱们来分析下具体实现原理 打破双亲委派机制 首先,双亲委派机制不会自己去尝试加载类,而是把请求委托给父加载器去完成,依次
阅读全文
摘要:为什么需要类隔离加载 项目开发过程中,需要依赖不同版本的中间件依赖包,以适配不同的中间件服务端 如果这些中间件依赖包版本之间不能向下兼容,高版本依赖无法连接低版本的服务端,相反低版本依赖也无法连接高版本服务端 项目中也不能同时引入两个版本的中间件依赖,势必会导致类加载冲突,程序无法正常执行 解决方案
阅读全文
摘要:业务场景 需要同时从多个副本数据库中查询数据,并对查询结果进行合并去重处理后返回前端。 实现过程涉及多数据源切换,这里不作过多讨论。 编码实现 实现过程: 1、定义异步查询数据方法; 2、通过CompletableFuture的allOf方法对多个异步执行结果进行处理; public class C
阅读全文
摘要:【产品需求】 对所有元数据进行分析,匹配出表字段相似度达到阈值的向相似结构表关系数据。 网上没有搜到相关算法实现,只能自己动手了。 【算法实现】 简单点实现的话,可以轮询所有表,每张表都和其它表进行匹配相似度,不过这是人干的事?如果有1W张表岂不要查询1W × 9999次? 1、先统计出相同字段、表
阅读全文
摘要:import com.alibaba.druid.sql.SQLUtils; import com.alibaba.druid.sql.ast.SQLStatement; import com.alibaba.druid.sql.visitor.SchemaStatVisitor; import c
阅读全文
摘要:调用一个接口,发送POST请求,浏览器和Postman均返回正常,代码中用RestTemplate和HttpClient均返回乱码 开始一直以为是编码问题导致,网上查了解决方法,也看了源码,都不对症 最后发现在请求头header中有两个配置项,如下: "Accept-Encoding":"gzip,
阅读全文
摘要:报错现象 线上项目使用HttpClient请求第三方的HTTP资源,并发量高的时候,日志框报Timeout waiting for connection from pool 客户端的现象是有时正常,有时报错 原因分析 网上查找资料,很多照搬某个博客的解决方法,大致是合理的使用EntityUtils.
阅读全文