- 博客(102)
- 收藏
- 关注
原创 【java-电子签章功能实现】
本文主要描述如何对已有的word文档进行字段填充后,进行电子签章(CA证书)生成pdf文件废话不多数,上代码(涉及的工具类较多,有不全的评论即可,看到会及时补充)
2024-06-24 10:08:01
3043
2
原创 【问题解决】-若依springboot接入feign踩坑记录 error creating bean with name ‘configurationPropertiesbean’
简单的项目采用了若依的前后端分离版本单体应用,之前采用forest请求调用第三方接口,改为feign接口调用后,引入feign报错。springboot版本和springcloud版本不一致导致。问题解决,版本对照可参考。
2024-02-29 15:45:52
805
原创 【java】批量导出pdf优化方案
项目中存在web页面点击一键导出,导出所有数据对应的pdf文件,由于有些pdf文件是实时生成的,之前最简答的写法for循环处理速度太慢,超过了nginx配置的最大响应时间了,且对用户交互体验上很不友好,所以进一步进行优化。2.通过threadPoolTaskExcetor.submit()方法进行多线程任务处理。第二步:具体的task需要实现callalbe。1.对大量的数据进行分段处理;第一步分段处理后的list。
2024-02-04 11:29:28
1341
原创 Java 将对象List转为csv文件并上传远程文件服务器实现方案
在MappingsBean类中,我们留下了CsvBindByPosition注释 - 以控制排序(在此解决方案中, CsvBindByName注释)。由于自定义映射策略,标题列名称包含在生成的 CSV 文件中。最近项目中遇到了根据第三方系统传递过来的参数,封装为List<实体类对象>后,将该实体类转换为csv文件,然后上传到远程的sftp服务器指定目录的需求。1.最开始遇到了生成的csv文件的第一行生成的字段名,变成了实体类的大写字段名了,例如userName变为USERNAME并且排序混乱。
2023-10-27 17:08:39
1260
原创 Mybatis传参为对象列表的查询处理
上述代码中,我们使用了 标签遍历传入的 List 对象,并且在每次遍历过程中使用 标签判断属性是否为 null。foreach元素会遍历这个列表,将每个对象中的name和age属性作为查询条件的一部分。separator属性指定了在每个查询条件之间使用的分隔符,open和close属性指定了整个条件块的开始和结束符号。其中,(name, age)是一个元组,表示按照name和age两个属性组合成的唯一键来查询。如果你的表中没有这样的唯一键,你需要使用其他条件来替代。
2023-06-01 19:14:55
2274
原创 【java 多线程实现pdf打包成zip下载】
最近一个需求是需要在某个逻辑中处理2000多条数据,并且生成pdf打包成zip进行下载,之前是量不多,是同步for循环进行生成pdf然后打包下载,目前由于要与web端进行交互,下载完将zip流返回给前端,所以必须要优化速度。
2023-05-24 21:48:49
595
原创 【问题解决】@Retryable和@Recover的使用踩坑记录
最开始的时候没有触发到托底操作,也就是@Recover方法的一直没有被执行,后面发现几次系统中的全局捕捉异常会抓到系统异常,由于日志加的不全,没有怀疑是托底操作的原因,后面发现是由于@Recover修饰的方法的返回值类型与@Retryable修饰方法的返回值类型不一致导致。在项目中有调用第三方公司数据接口,因为调用该接口的时候存在不稳定因素,比如网络波动、接口数据返回超时等等,代码中做了重试策略,采用了@Retryable和@Recover组合的方式进行处理。
2023-04-26 18:46:15
1184
原创 【excel导入/excel前端预览/pdf下载/zip文件下载/】
对于多级表头的需求,可以通过@Group注解进行处理,之前4.0.0版本存在@Group分组失败的问题,版本提升到4.3.0解决。通过new ZipOutputStream(自定义的输出流) ,通过putNextEntry()方法组装,最终写入流。-element-xlsx在线读取Excel数据预览。建议使用easyPoi,但是开源框架存在更新迭代,
2023-04-11 19:25:49
140
原创 【微信小程序】-授权获取微信绑定手机号两种方案
最近在做小程序的时候要求自动获取微信绑定手机号,本来以为很简单和获取定位一样直接使用微信api,后期使用中发现需要与后台进行交互,整理以下两种方案。前端获取手机号api的code,带着accessToken去调用最新的api接口去获取手机号,无需解密。前端获取参数,后端解密,注意这种方案需要的code是wx.login的获取的code。...
2022-08-09 09:12:12
4513
原创 Java-请求参数格式验证常用表达式-更新中
时间格式:1.格式为20211223140517 @Pattern(regexp = "^((([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})(((0[13578]|1[02])(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[246
2021-12-23 16:20:32
451
原创 java使用 Socket 作为客户端连接网络键盘 实操
项目情境: 有一个第三方的网络键盘(键盘按键连接后会发送指令)配置到项目上,实现键盘按键,发送的指令经服务层接收封装后发送给各个业务线,实现键盘的交互。解决思路: 因为交互是持久的,键盘操作命令是断断续续的,所以采用socket的长链接模式,与以往不同,此次java服务层作为socket的客户端主动去连接键盘,并与键盘实现心跳连接,接收发命令,根据键盘配置的手册,实现整个交互。编码示例:1.连接服务线程package com.jovision.mix.keyboard.service.
2021-12-01 11:06:11
746
原创 java-@WebFillter注解使用问题
如果添加了@Component或@Configuration,又添加了@WebFilter(),那么会初始化两次Filter,并且会过滤所有路径+自己指定的路径 ,便会出现对没有指定的URL也会进行过滤
2021-10-12 10:20:43
213
原创 Java-无法找到jar包内文件报错 本地idea调试没问题 服务器报错
问题情景:ideajar包内放入json文件,本地读取没有问题,部署到服务器后报找不到文件的错误。解决方案:ClassPathResource resource = new ClassPathResource(path);File flowFile = resource.getFile();使用以上方式读取resource下的文件,IDEA本地测试ok的,但是打成jar包后扔到linux就读不到了,因为打成jar包后,文件在jar里面,resource.getFile()不会读取jar的压缩包,导
2021-09-28 10:13:08
703
原创 Java---@WebFilter中urlPatterns失效
问题描述:在项目中针对某个接口请求进行特殊处理,通过过滤器的方式进行开发,当部署后发现一些本不该过滤的请求过滤了,但是urlPatterns中未添加相关url。@Slf4j@Component@WebFilter(urlPatterns = { OpenConstant.OPEN_PATH + "/alarm_report/*"})解决方案:去掉@Component注解 在启动类中增加@ServletComponentScan参考文章:https://blog.csdn
2021-09-08 14:55:26
1590
原创 idea打包项目-maven依赖红波浪线-jar本地仓库已有的情况打包报错
问题:maven项目打包时报错找不到某个jar包,代码中编译没有问题,类方法等可以正常使用,idea右侧的maven查看该jar包红波浪线,尝试过删除本地jar重新引入,maven clean等操作,扔未解决。原因:由于是微服务的其他项目B引入该jar包,该jar包在其他项目配置了远程私库,引入该jar到本地仓库,出问题的项目A由于没有配置私库地址,本地编译使用的是本地仓库提供的jar,导致打包时打包失败。配置私库地址后问题解决。(最开始一直没往这方面想导致浪费了很多时间)...
2021-09-02 09:24:24
326
原创 MySQL之group by 版本使用区别
1.MySQL5.7之后,sql_mode中ONLY_FULL_GROUP_BY模式默认设置为打开状态。2.ONLY_FULL_GROUP_BY的语义就是确定select target list中的所有列的值都是明确语义,简单的说来,在此模式下,target list中的值要么是来自于聚合函数(sum、avg、max等)的结果,要么是来自于group by list中的表达式的值3.MySQL提供了any_value()函数来抑制ONLY_FULL_GROUP_BY值被拒绝4.any_value()会
2021-08-24 11:48:26
661
1
原创 AOP-对切点请求参数对象的属性处理
问题情境:在web系统对应的后台查询方法中,有一些鉴权问题的处理,每次都要根据当前登陆用户来获取权限对应的数据库字段,每次都要写一堆代码,感觉封装的话每次的使用的参数也不太一致,于是想到用aop的形式进行处理,主要对切面方法的请求参数进行处理。解决方案:代码如下:@Before(value = "pointCut()") public void queryAreaIds(JoinPoint joinPoint) { Object param = joinPoint.getAr
2021-04-29 16:12:43
1124
原创 Mybatis-plus 枚举使用报null问题
在使用mybaits-plus 对字典项数据进行处理时,使用到了枚举类的方式,使用时出现null问题。枚举类下图所示:@Getterpublic enum GoodsFlagEnum implements IEnum { DOWN(0, "下架"), UP(1, "上架"), ; private final Integer value; private final String desc; GoodsFlagEnum(Integer value,
2021-04-09 17:06:42
1516
原创 java问题处理---若依框架下对某个url权限放开,登陆后访问403 Forbidden
问题情景:在若依框架下搭建了一套前后端代码,对某个url放开权限,后端SecurityConfig进行如下配置但当登陆系统后,请求放开权限的url,403报错。解决方案:参考:https://gitee.com/y_project/RuoYi-Vue/issues/I1N6Y8在前端请求设置headerheaders: { isToken: false },问题解决。...
2021-04-02 11:08:34
5599
原创 java String字符串每隔两位截取后进行处理
代码示例:public enum ThroughWayTypeEunm { IN_FACE(1,"刷脸") , IN_QR(2,"扫码") , IN_CARD(3,"刷卡"), IN_FINGERPRINT(4,"指纹"), IN_IDCARD(5,"身份证"), IN_HEALTHCODE(6,"健康码"), IN_FACT_TMP(7,"人脸测温"),; private int value; private String t
2021-03-17 13:59:38
2270
原创 idea好用的注释模板(亲测param可以获取)
模板设置:** * 功能描述 * @author sww * @date $date$ $time$$params$ * @return $return$ */param配置:groovyScript("def result=''; def params=\"${_1}\".replaceAll('[\\\\[|\\\\]|\\\\s]', '').split(',').toList(); for(i = 0; i < params.size(); i++) {result+='
2021-02-25 11:02:52
360
原创 Maven:父子模块项目,子模块配置不引用父模块某个依赖
问题发生情景:由于项目原因,微服务项目下,某个模块的代码是单独部署启动的,有些依赖引用父模块的依赖,但是不引用Eureka模块的依赖,没有对其配置之前,出现下图所示错误。报错:DiscoveryClient_UNKNOWN/192.168.86.108:8202 - was unable to send heartbeat!通过设置子模块不在引用父模块的eureka依赖解决该问题。子类重写,定义scope为test,打包则不会出现,亲测可用参考以下文章:https://www.oschi
2021-02-20 11:57:55
3614
1
原创 Mybatis的xml文件中,一个方法中包含多条sql语句报错
报错如下:Caused by: java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'delete from Table where face_det_time <= DATE_SUB(CURDATE(), IN' a
2021-01-29 10:30:47
611
原创 前端传递数组,mybatis 遍历后根据数组中的内容进行条件判断
前端传递数组,mybatis 遍历后根据数组中的内容进行条件判断sql如下:SELECT * FROM t_frs_contrast_record WHERE 1 = 1 AND ( t_frs_contrast_record.user_id IS NULL OR EXISTS ( SELECT id FROM t_frs_user tfu WHERE tfu.validity_type = '0' AND t_frs_contrast_record.user_id = tfu.id
2021-01-07 13:39:19
857
原创 Token高并发解决方案
Token高并发解决方案一:作为token使用的第三方 客户端模式使用token可以采用单例模式或定义一个全局变量isRefresh 标志,加同步锁Synchronized来保证token过期的那个时间点,刷新token方法只被调用一次。二:作为token服务器端:后端方案:利用 Redis 缓存当同时发起多个请求时,第一个接口刷新了 Token,后面的请求仍然能通过请求,且不造成 Token 重复刷新。那么,后端在用户第一次登录时,需要将生成的 Token 数据(token 和 createTi
2021-01-05 15:57:48
2773
1
原创 Restful请求之@PutMapping使用总结
接收方法中的注解常见注解:@PathVariable(路径变量)注解的使用带占位符的 URL 是 Spring3.0 新增的功能,该功能在SpringMVC 向 REST 目标挺进发展过程中具有里程碑的意义。@PathVariable(“xxx”)通过 @PathVariable 可以将URL中占位符参数{xxx}绑定到处理器类的方法形参中@PathVariable(“xxx“)@RequestMapping(value=”user/{id}/{name}”)请求路径:http://localh
2020-11-26 14:56:08
49129
6
原创 base64图片转换工具类以及base转图片工具
import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import org.apache.commons.codec.binary.Base64;/** * 将图片转换为Base64<br> * 将base64编码字符串解码成img图片 *
2020-11-20 16:53:44
1419
转载 idea连接数据库 The specified database user/password combination is rejected: com.mysql.cj报错
报错如下图:解决方法:jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC转载自:https://blog.youkuaiyun.com/weixin_39938635/article/details/90212775..
2020-11-10 09:15:06
12447
原创 VUE-前端-JS对象数组根据某个属性字段去重
var arr = [{ key: '01', value: '乐乐' }, { key: '02', value: '博博' }, { key: '03', value: '淘淘' },{ key: '04', value: '哈哈' },{ key: '01', value: '乐乐' }]; // 方法1:利用对象访问属性的方法,判断对象中是
2020-11-07 10:52:22
2977
原创 VUE-两层for循环 外层长度会变化时,外层i--
for (let i =this.dataForm.roleList.length-1; i>=0; i--) { let obj = this.dataForm.roleList[i] let deptTabId = obj.id debugger if (obj.type === '组织') { if (common.commonDeptRoles.length < 1) { thi
2020-11-04 20:36:07
252
原创 通过web.client.RestTemplate在java后端代码中发送https请求
import org.springframework.web.client.RestTemplate;一.在外层定义token和urlprivate String token = “token值”;private String URL = “xxxxxxxxx”;二.方法体如下: public boolean lossReportCard(String workId, String cardNum) { Integer code;
2020-09-28 10:39:37
316
原创 Mysql模糊查询防止sql注入
使用concat配合escape 防止sql注入escape意思就是说/之后的_不作为通配符<if test="params.jobName != null and params.jobName !='' and params.jobName !='空'.toString()"> and r1.jobName like CONCAT('%',#{params.jobName},'%') escape '#'</if>...
2020-09-23 17:49:05
1176
原创 MySQL中group_concat()函数的排序方法
行转列:GROUP_CONCAT(spec_id ORDER BY spec_id SEPARATOR ‘,’)ORDER BY :排序SEPARATOR : 分隔关键字CONCAT():字段拼接字符SELECT type_id,CONCAT(’[’,GROUP_CONCAT(spec_id ORDER BY spec_id SEPARATOR ‘,’),’]’) AS spec_idsFROM (SELECT spec_id, type_idFROM goods_type_specWH
2020-09-23 11:37:19
384
原创 Oracle复制一份数据库到本地
问题情境:需要将服务器上的数据库导一份到本地数据库,想到的处理方案有两种,方案一:导出一份sql脚本,在本地执行(无奈navcat和plsql等工具使用起来遇到了各种各样的问题,遂采用方案二)方案二:服务器为linux数据库:imp 账号/密码@ip:11521/orcl full=y file= E:\20200508qys.dmp ignore=yexp 账号/密码@ip:11521/orcl file= E:\20200722qys.dmp owner=qys...
2020-07-28 14:55:45
543
原创 java后端代码模拟前端发送websocket请求
怎么调用websocket作为通道发送数据1.现有多个线程查询不同的设备获取不同的数据。2.当网页打开后自动产生一个websocket连接。上面12两点已经完成,但是现在对我来说查询线程和websocket它们相互独立,怎么才能在查询线程中调用websocket的send方法把数据传到前台网页呢。解决方案:package com.quantfn.strategy.atrfuture.test;import org.java_websocket.client.WebSocketClient;i
2020-07-28 14:51:06
6555
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人