当业务中被第三方库的一些方法限制时,我们可以通过修改第三方库的方法实现来满足我们的需求
本文使用了byte-buddy[1]参考资料
1、场景
es用Query.Builder 构建条件的时候,查询字段太长了 被截断了
断点图如下
造成这种方法的原因
通过查阅源码发现他重写了toString方法,当构建的参数过长是就会截断
最后拼接…
所以造成了dsl截断
但是这个需求是必须要做的,我们可以修改这个maxToStringLength的返回值值来解决这个问题
2、如何修改?
上边只是一种场景,下边如何修改举例,就不使用公司项目是,我们从stream-query中选一个方法来修改
我们之间修改这个方法的内容,让他直接返回一个我们想要的值
2.1、引入byte-buddy
12345678910<dependency> <groupId>net.bytebuddy</groupId> <artifactId>byte-buddy</artifactId> <version>1.14.12 ...
1、 场景
当项目中存在一个枚举类,里边的数据不需要一直更新,但是在某些场景下需要进行配置时,
我们可能就要改一次数据就打一次包,这个样的话效率会很低所以可以放到配置文件中
2、 实现
3、 原始处理
1234567891011121314151617181920212223242526272829/** * @author Eliauk,微信:Cizai_,邮箱:zang.dromara.org <br/> * @date 2024/5/16 <br/> * @Copyright 博客:https://eliauku.gitee.io/ || per aspera and astra <br/> */@Getter@AllArgsConstructorpublic enum QaDataSetEnum { //生产环境 ALL("1794970287076651009", "综合知识库","1"), GE_REN_RONG_YU( "17931 ...
大家平时获取用户的真实IP的时候可能会遇到的一些问题 如果发生问题可以按照以下思路排查应该会帮到你
1、查看Nginx配置
一般情况下,我们的项目都是通过Nginx进行代理的,所以我们需要查看Nginx的配置文件
12345678910111213141516location / {proxy_set_header X-Real-IP $remote_addr;}2. 使用X-Forwarded-For头字段:类似于X-Real-IP,可以使用X-Forwarded-For头字段来传递客户端的真实IP地址。在NGINX配置文件中,可以通过添加如下代码来设置X-Forwarded-For头字段的值:location / {proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}
查看是否有以上配置进行了代理转发
2、查看GateWay配置(如果单体项目没有使用网关忽略)
首先要查看网关中的过滤器链里边所有的自定义过滤器有没有对请求头进行了修改,如果有修改的话请根据当前业 ...
1、当前使用ORM框架以及配置
当前我使用的ORM框架是:Mybatis-Plus,然后进行了多租户的配置
使用依赖如下:
1234567891011121314151617181920212223<dependencies> <dependency> <groupId>com.gitee.sunchenbin.mybatis.actable</groupId> <artifactId>mybatis-enhance-actable</artifactId> <version>1.5.0.RELEASE</version> <exclusions> <exclusion> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-a ...
初始化ukey
绑定ukey和用户(前端打开web助手绑定)
通过硬件设备标识、公钥、证书 绑定用户
加字段还是建表?
安全管理员负责开启双因子认证
!!!前提 必须先将可以管理用户的几个用户绑定ukey不然谁都没办法登录了
账密用户登录
这个做一个配置 是否开启了双因子认知(这里要怎么去做配置,通过nacos还是持久化)
如果开启了的话需要输入pin0码
校验
前端调用web助手 拿数据 (考虑使用硬件设备标识 + token)做签名
然后调用后端接口传参 硬件设备标识 + token
1. (后端) 通过后端通过token拿到用户id,然后判断用户id与设备硬件标识是否一致,不一致抛出异常
2. 一致的话去验签
123456789101112131415161718192021// 验签伪代码public boolean verifySignature(String message , String signature, String userId) { try { ...
1、需求
有多个excel文件,每个文件都有多个表头,现在需要将这些excel文件合并成一个excel文件,并且筛选出指定表头的数据。
2、代码
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576@Value("${OriginalFile}")private String originalDocument;@Value("${finalDocument}")private String finalDocument;private static int findColumnIndex(Sheet sheet, String headerName) { Row headerRow = sheet.getRow(0); // 假设第一行是表头 if (h ...
1、前置需要
申请Gemini账号,并获取API Key
官网地址:Gemini
2、测试所引入依赖
123456789101112131415161718192021222324252627282930313233<dependency> <groupId>com.dtflys.forest</groupId> <artifactId>forest-spring-boot-starter</artifactId> <version>1.5.33</version></dependency><dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId></dependency><dependency> <groupId>cn.hutool</groupI ...
1、部署FolkMQ
这里我是使用的docker-compose部署的,如果是本地部署,请自行修改docker-compose.yml文件
现在我使用的版本是1.0.20
1234567891011121314 folkmq-server: image: noearorg/folkmq-server:1.0.20 container_name: folkmq-server ports: - 8602:8602 - 18602:18602 volumes: - ./data/broker:/data - ./logs/broker:/logs environment: - folkmq.admin=zangzang #管理后台密码 - folkmq.access.folk=sk1 #消息访问账号,可以配置多个# - folkmq.access.ak2=sk2 ...
Dromara 是由国内顶尖的开源项目作者共同组成的开源社区。提供包括分布式事务,流行工具,企业级认证,微服务RPC,运维监控,Agent监控,分布式日志,调度编排等一系列开源产品、解决方案与咨询、技术支持与培训认证服务。技术栈全面开源共建、 保持社区中立,致力于为全球用户提供微服务云原生解决方案。让参与的每一位开源爱好者,体会到开源的快乐。Dromara开源社区目前拥有10+GVP项目,总star数量超过十万,构建了上万人的开源社区,有成千上万的个人及团队在使用Dromara社区的开源项目。