
学习笔记
Xiao5xiao122
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
自定义注解切面入参校验
又是一个0到1的项目,项目要求入参一个字段对应一个错误码,凡是校验不合格就要返回对应的错误码,不能把错误码集中起来返回,得校验一个返回一个,直到把数据修改正确才能走业务逻辑。我一想这校验框架不就不能用吗,校验框架能返回错误信息,但是不能定义对应的错误码啊。想了一下还是算了自己写一个吧,用自定义注解+切面搞定,特地记录一下。定义注解:此注解作用在方法上,只有检测到有该注解才继续往下校验字段。至此字段入参校验注解就完成了。不足之处请看官多多指教!原创 2025-04-10 11:02:26 · 187 阅读 · 0 评论 -
数据绑定注解功能
在实际开发中会遇到code转name的情况,一般情况下的写法就是先把数据查出来,然后再把数据中code对应的名称查出来,最后组装成需要的数据返回给前端展示,这种情况是没与问题的。但是无形之中增加了一些不必要代码显的有些臃肿,如果是在访问量比较高的接口还会影响一些性能。今天就记录一下利用缓存cache,反射写的一个数据绑定的注解,无需关注code转name的过程,仅需写出主要代码就可以了,剩下的用注解操作。可以看到,数据绑定相同条件下第二次请求直接走缓存不查库,可以提高效率。原创 2024-07-09 14:43:10 · 357 阅读 · 0 评论 -
mybatis-Plus分页失效【已处理】
今天自己搭建一个项目玩玩,用到了mybatis-Plus框架,环境搭建好后写了一个分页查询的接口测试下的,结果发现用的mybatis-Plus的page方法失效。仅为了记录自己遇到的问题,以便后续遇到同样的问题方便处理。如有问题,还望指教。可以看到我查询第一页,每页仅一条,但是结果却是查的全部。添加完后再测试就可以完成分页的目的了。原创 2024-07-02 10:15:40 · 714 阅读 · 0 评论 -
springboot 缓存框架Cache整合redis组成二级缓存
项目性能优化的解决方案除开硬件外的方案无非就是优化sql,减少sql 的执行时间,合理运用缓存让同样的请求和数据库之间的连接尽量减少,内存的处理速度肯定比直接查询数据库来的要快一些。经测试,请求详情后的10秒内(设置的有效时间是10秒)不论请求几次都仅和数据库连接一次,过期后重复第一次的结果,过期时间可以自定义。首先定义注解:缓存注解和删除注解。缓存公共接口,和多级缓存接口。如有不合理的地方还请指教!redis缓存实现类。原创 2024-06-27 18:31:08 · 1187 阅读 · 0 评论 -
bean实体转换工具
里面适用 方法:BeanUtils.copyProperties();但是如果返回是个list呢?用这个方法是不是要循环遍历然后赋值?方法当然可以,但是代码看起来就非常的臃肿,不雅观。所以记录一个工具,使用于单个,集合,分页的转换,让代码看起来更优雅。原创 2024-06-12 16:30:38 · 306 阅读 · 0 评论 -
java 导入excel文件数据到数据库
java 导入excel文件数据到数据库今天又偶发想起来,平时工作中除了需要导出数据为excel文件外,有些时候还需要将excel中的数据导入到数据库中。所以今天就来记录一下这个步骤。主要记录的是把文件流转化为集合数据的一个工具类,使用这个工具类可以减轻很多相关转换的代码量。废话不多数老规矩先贴上代码示例:可以看到最为主要的是用到了一个ExcelUtil的工具类做了数据转换,接下来直接贴上工具类代码,其中包含其他操作的代码,有需要的仅选中的就好。仅为记录,不足之处还请指教!原创 2024-05-20 14:59:33 · 1526 阅读 · 1 评论 -
java post、get请求第三方https接口
前段时间做项目新加功能由于要对接其它系统,请求系统接口传输数据。写完后发现我写的这个方法和网上现有的例子有点不太一样,可能是因为我做的项目是政务网的原因,但我想正常的即便是互联网的系统请求方式也都是一样的,所以记录一下。如果有不符合的地方请各位看官指教。废话不多说直接上代码;有不足之处还请指教!原创 2024-03-22 09:07:06 · 2584 阅读 · 0 评论 -
入参数据批量数据校验
在业务处理中一般入参是单条数据,这样数据校验比较容易,直接用注解标注对应的校验用注解就可以了,但是这种方法对于集合数据的校验不适用。但是业务中也有可能是传入的批量数据,还要校验每个字段值是否合规。我搜过其他猿友写的批量校验的逻辑,感觉很繁琐,所以我记录一下我的我感觉比较简便的方法,代码量减少,还能满足校验要求。废话不多说,看代码。具体使用方法就很简单了,直接按照单个校验的方式添加注解,修改一下接收的集合就可以了。这样,批量校验的功能就可以了并且可以被复用。原创 2024-02-05 08:55:38 · 608 阅读 · 0 评论 -
java纯代码导出文件为压缩包
今天做需求突然看到之前产品提的需求,导出多个文件为压缩包。功能部分早就已经完成了,想到还没有过类似的记录,今天就记录下来吧,是记录也是学历,如果有不对的地方还请多多指教。以下贴出的代码是下载压缩包的源代码,我的文件资源是存储在服务器根目录下,表中记录的文件存储的绝对路径,通过路径反查获取资源下载,看官可根据自己项目的情况判断是否适用你当下的需求场景。用java包里面的方法导出压缩包。如有不足,请多多指教!原创 2024-02-04 17:40:32 · 1591 阅读 · 0 评论 -
java 纯代码导出pdf合并单元格
后有一部分猿友叫我提供一下源码,实际上我的源码已经贴在帖子上了,都是同样的步骤,只是加多一点设置就可以了。该用到的步骤我已经标注的很详细了,即是我自己的学习记录希望能帮到各位猿友。如有不足之处还望多多指教!以下为导出PDF头部设置,具体在另外一个帖子中有。原创 2023-12-28 11:48:52 · 1264 阅读 · 0 评论 -
java easyPOI导出一对多数据,设置边框,字体,字体大小
今天碰到导出excel是一对多结构的,以往导出的数据都是一条一条的,所以采用的是比较方便简单的方法easyExcel,今天猛然碰到一对多导出虽然用easyExcel也可以,但是相对比较麻烦,没有easyPOI快捷,之前有自己写过导出excel一个表格一个表格画,但是太麻烦。今天正好需求不急,就慢慢研究用easypoi导出,写出通用方法,以后遇到类似的就好办多了,直接调方法。好了,完整的过程就是这样了,直接掉接口导出就可以了。如有不足之处还请多多指导!需求总是千奇百怪,解决的方式也可以是多种多样。原创 2023-12-05 18:46:26 · 3180 阅读 · 0 评论 -
java导出pdf(纯代码实现)
在项目开发中,产品的需求越来越奇葩啦,开始文件下载都是下载为excel的,做着做着需求竟然变了,要求能导出pdf。导出pdf倒也不是特别大的问题关键就是麻烦。方法二:利用HTML页面导出,奈何自己不会写HTML,前端忙没时间帮忙写。本着求人不如靠己的想法就选择了第三种比较麻烦的方法,自己用table画。方法一:利用模板导出,但是首先编辑模板的工具不好找,现有的国外的工具要收费,所以放弃了这个。方法三:自己用纯代码画格式(可调字体大小,颜色,对复杂没有规则的数据都可以)然后就可以了直接导出pdf。原创 2023-07-14 18:58:12 · 26411 阅读 · 45 评论 -
文件上传与文件下载
注:需要注意的是 获取完整文件路径方法中的 uploadFilePath :是文件将要保存在服务器中的位置路径,可以在配置文件中配置好后引用。最后把返回的信息存在在表中使用。在开发中项目难免会遇到文件上传和下载的情况,如果公司有部署文件服务器是再好不过啦,直接调用文件服务器上传和下载的接口,保留返回的文件id即可。但是如果公司没有文件服务器就比较苦逼了,得手写文件上传和下载的接口把文件存储在服务器的某个位置,以便使用。传入的参数为文件上传是保存的文件的id即可。首先controller层。原创 2023-06-13 16:34:21 · 209 阅读 · 0 评论 -
idea连接达梦数据库并操作数据
目前项目用到的是达梦的数据库,虽然有数据库可视化界面可以操作数据库,但由于达梦是国产数据库除了自带的界面外很少有第三方界面支持达梦的连接。在idea和数据库间切换有时候也挺麻烦,这个时候就可以直接用idea自带的数据库连接功能连接数据库,直接在idea中操作数据库。6:打开编辑器,可以写SQL语句和数据库可视化操作工具一样。电脑必须安装有达梦数据库(驱动)3:选择达梦数据库驱动,然后应用。2:修改连接数据库名和选择驱动。4:选中新建的数据库。原创 2023-02-07 16:02:50 · 1917 阅读 · 3 评论 -
批量插入数据SQL写法,批量处理数据
减少与数据库的交互,把之前的一条一条查的代码优化为一次性全部查出,然后在批量处理数据。如果数据量太大(超2万)直接用SQL去批量处理有可能会报错,那是因为数据库单次处理数据的能力有限所以可以分批次处理。今天在进行功能优化中遇到了碰到了一个功能,要处理10万条数据。在最开始开发时没有考虑那么多直接以单条数据来处理没有考虑到大批量数据的情况,导致功能不符合预期。**1:**批量插入数据的SQL ,xml文件编写。查出的几万条数据分批次处批量插入。原创 2022-10-24 18:20:55 · 7700 阅读 · 0 评论 -
达梦数据库导出数据表结构为excel或html或文本(写文档用)
因为是国产数据库所以他和mysql,oracle,sqlServer的工具是不能互通共享的只能用他本身携带的工具来进行数据迁移,表迁移,数据导入导出等一系列操作。项目中用的是国产达梦数据库,项目做了一期后应该是要数据库设计文档。其中就有一个需要表结构(字段,字段精度,说明。导出的内容和数据库结果集一样。学习笔记,仅供参考!有更好的方法的,欢迎指导。经过查阅文档和资料终于找到了方法。原创 2022-08-25 15:31:41 · 6709 阅读 · 5 评论 -
一套代码中的定时任务被多个机器运行,数据容易变多或变大的解决办法。分布式锁,代码执行时间
开发中遇到了这样的一个场景,同一套代码在多台机器运行。奇葩的是数据库表都是同一个。但是在运行过程中发现,当多台机器同时运行同一套代码对同一个数据源操作同一个表的时候会出现跑出来的数据比正式数据要打,或者要多,这个时候就想到了要用锁。加入分布式锁后不论几台机器几个线程同时运行,最后只能运行最先抢到线程拿到锁的那个任务。并不能解决问题,这时就要用到分布式锁了。可以用redis的分布式锁。但是单纯的锁只能锁住仅在一台机器运行时并发请求线程的问题(步骤,代码如下,不多解释。......原创 2022-07-26 11:42:04 · 1397 阅读 · 0 评论 -
电话号码,身份证号,日期校验正则表达式
电话号码,身份证号,日期校验正则表达式原创 2022-07-04 09:23:59 · 1046 阅读 · 0 评论 -
SQL 达梦数据库父子表(树表)查询所有子集,父级
SQL 达梦数据库父子表(树表)查询所有子集,父级先看表图中 dic_id 为子健 parent_dic_id 为父建 即 dic_ic = parent_dic_id现在要查出 父id为1 的所有子集sql 对应为 :下面展示一些 内联代码片。select * from T_SYS_DIC start with dic_id = '1000076' CONNECT BY PRIOR dic_id = parent_dic_id对应结果:可以看出所有数据均为父 id为 1000原创 2022-05-28 20:09:57 · 4003 阅读 · 0 评论 -
mysql获取近7天,7周,7月,7年日期,根据当前时间获取近7天,7周,7月,7年日期,获取近几月每月的最后一天的日期
mysql获取近7天,7周,7月,7年日期,更具当前时间获取近7天,7周,7月,7年日期废话不多说,直接看图1:根据表中最大时间获取近7天日期SELECT DATE_FORMAT(creattime, "%Y-%m-%d") b FROM t_stock_realtime_inventory WHERE DATE_FORMAT(creattime, "%Y-%m-%d") > ( SELECT DATE_FORMAT(DATE_SU原创 2022-04-25 18:44:19 · 8686 阅读 · 0 评论 -
streaml流判断两个对象集合中元素是否相等并把一个数组中的元素添加到另一个集合中、根据某个元素排序
stream 流判断两个对象集合中元素是否相等并把一个数组中的元素添加到另一个集合中个人经验: 如果仅判断是否相等的话可以直接用双层for循环判断,但这种写法虽然可以实现功能,但是他的缺点就是,如果在数据量很大的情况下,性能不是那么好,数据处理不合理。不推荐这种写法。还有第二种方法:就是用stream流处理,效率要稍微好一点。既可以判断元素是否相等,也可以处理两个对象集合中元素的数据。废话不多说,直接看实例://集合一:List<ProjectFinishedSubjectStatistic原创 2021-09-03 11:39:20 · 4592 阅读 · 0 评论 -
sql(达梦数据库)获取本周所有数据(周一至周日,周一至所选当前时间所有数据)、获取上周所有数据,获取近一段时间内的日期,和本月的日期
sql(达梦数据库)获取本周所有数据(周一至周日,周一至所选当前时间所有数据)、获取上周所有数据废话不多说,直接上图:图一: 本周所有数据SELECT INDUSTRY_NAME industryName, SUM(COUNT_NUM) heatValue FROM GFACE_INDUSTRY_DAILY_STAT WHERE SRC_TYPE = #{type} AND datediff(WEEK,#{year},DATE-1) = 0 GROUP B原创 2021-08-19 20:40:01 · 7761 阅读 · 0 评论 -
Linux系统文件操作权限设置
Linux系统文件操作权限设置打开linux ll 或ls 查看文件时文件最前面有一排符号:即为文件的操作权限drwxrwxrwx:一般分为4部分d: 文件类型第一组rwx: 表示文件所有者对该文件所拥有的权限第二组rwx: 表示文件所属组对该文件所拥有的权限第三组rwx: 表示其他用户对该文件所拥有的权限下面表格详细的表述了各个部分意义读(read),写(write),执行r(recute)简写即为(r,w,x),亦可用数字来(4,2,1)表示举例:如果某文件权限为7则代表可读(4原创 2021-08-14 23:45:25 · 404 阅读 · 1 评论 -
服务器部署jar包运行并打印日志设置步骤(针对新项目)
服务器部署jar包运行并打印日志设置步骤(新项目)1: 前期准备工作、项目配置文件先配置好(1): 配置生产环境的 主要指向 Dev测试环境的,或者公司有配置测试环境或生产环境都在这里指定(2):项目主要配置文件 在里面配置日志打印级别(4)level 日志级别 ,path:日志文件打印位置,file:日志存储文件位置 ,config:日志设置配置文件指向(3),(3)具体设置看图具体不多 阐述<?xml version="1.0" encoding="UTF-8"?><!--原创 2021-08-14 11:19:12 · 5983 阅读 · 0 评论 -
Error running ‘ xxx[clean]‘: Maven 3.3.1+ requires JDK 1.7+. Please set appropriate JDK
Error running ‘changgou-parent [clean]’: Maven 3.3.1+ requires JDK 1.7+. Please set appropriate JDK前几天java推送了新的版本,并且打开idea后提示更新java,由于项尝试一下新版本的java所以就手欠的点了同意,在安装完后我还特意选了保留老版本,结果左后的安装结果就是新版本不知道安装在哪儿,旧版本也给删掉了。后来我又重新装了一个jkd 在idea中配置配置能用。后来突然想把自己写的项目放在服务器上跑一原创 2021-08-08 19:50:52 · 6605 阅读 · 0 评论 -
如何在idea中将自己的项目添加到Git上并且推送到远程仓库
如何在idea中将自己的项目添加到Git上并且推送到远程仓库(学习笔记仅供参考)1.首先我们要在idea中查看git的默认安装路径选择File>>Settings>>搜索git2.这里idea会自动帮你找到你默认安装git的位置可以点击Test 查看是否配置正确3.如果在安装git中修改了安装位置 这边需要手动修改接下来我们需要将项目交给git管理点击VCS>>Import into Version Control>>找到Create Gi原创 2021-07-26 00:08:55 · 6967 阅读 · 3 评论 -
Swagger接口文档配置
/** * swagger配置 */@EnableSwagger2@Configurationpublic class Swagger2Config { @Bean public Docket createReviewRestApi() { ArrayList<Parameter> params = Lists.newArrayList(); return new Docket(DocumentationType.SWAGGER_2).原创 2021-07-12 17:56:56 · 223 阅读 · 0 评论 -
公共返回工具Result<返回实体类>
公共返回工具Result<返回实体类>import io.swagger.annotations.ApiModelProperty;public class Result<T> { @ApiModelProperty( value = "响应码, 0成功,其它失败", position = 101, example = "0" ) private String code; @ApiModelPr原创 2021-07-10 19:59:21 · 1667 阅读 · 0 评论 -
stream流根据对象中的某个元素去重、把相同条件的某个不同字段值拼接为一个字符并按规定的符号隔开
stream流根据对象中的某个元素去重学习笔记仅供参考创建一个类@ApiModel@Datapublic class TopicList2RspDTO { /** * 项目名称 */ @ApiModelProperty(value = "名称") private String projectName; @ApiModelProperty(value = "项目详情") private String age;}去重public原创 2021-06-29 16:23:54 · 2489 阅读 · 0 评论 -
处理页面传入特殊字符的工具类(针对模糊查询时使用)
处理页面传入特殊字符的工具类(针对模糊查询时使用)模糊查询时,当页面传入空的字符串时经过工具类的处理可以正常查询出需要的内容不会导致查询结果和想要的效果不一致的问题。package com.smartcity.gov.fgw.core.utils;import org.apache.commons.lang3.StringUtils;import java.io.UnsupportedEncodingException;import java.util.Objects;public cla原创 2021-06-11 11:07:00 · 1222 阅读 · 1 评论 -
StringUtils工具之StringUtils.isNotEmpty()和StringUtils.isNotBlank()的区别
StringUtils工具之StringUtils.isNotEmpty()和StringUtils.isNotBlank()的区别学习笔记仅供参考:1.2.3.4.5.原创 2021-06-10 10:34:08 · 7424 阅读 · 2 评论 -
Linux常用命令
Linux常用命令1:进入目录test(返回用两个点":")cd test12:打开文本文件test-a.txtvi test-a.txt3:复制test-a.txt 到并命名为test-b.txtcp test-a.txt test-b.txt4:移动test-b.txt到/home/file/test2/并命名为test-a.txtmv test-b.txt …/test2/test-a.txt5:删除文件test-b.txtrm text-b.txt6:执行text.sh脚本s原创 2021-04-19 22:54:41 · 800 阅读 · 0 评论 -
文件下载(导出excel文件)可自定义宽高样式字体大小
文件下载(学习笔记仅供参考)controller层:@GetMapping("/download") @ApiOperation(value = "下载") public void download(HttpServletResponse response){ xiaZaiService.loading(response); }service层:@Override public void loading(HttpServletResponse re原创 2021-04-16 18:31:56 · 506 阅读 · 0 评论 -
枚举类定义(项目中尽量少魔法值或数字)
枚举类定义(项目中尽量少出现字)/** * 会议收集材料上传来源 */public enum CollectorAttachUploadSource { LAUNCH(1, "发起人"), ATTEND(2, "参会人员"); CollectorAttachUploadSource(int value, String text) { this.value = value; this.text = text; } private i原创 2021-03-24 10:20:12 · 317 阅读 · 0 评论 -
微服务框架自带uuid生成器
微服务框架自带uuid生成器代码如下:UUID.randomUUID().toString().replace("-", “”);原创 2021-03-17 19:31:11 · 330 阅读 · 0 评论 -
日期转换格式工具、String、Date格式互转
日期转换格式工具package com.xxxxx.smartcity.gov.fgw.meeting.utils;import org.apache.commons.lang3.ObjectUtils;import org.apache.commons.lang3.StringUtils;import org.apache.commons.lang3.time.DateFormatUtils;import java.text.ParseException;import java.text.原创 2021-03-17 12:25:33 · 279 阅读 · 0 评论 -
Apache POI 操作excel文件导入/导出,及工具类
Apache POI 操作excel文件导入/导出,及工具类(个人学习笔记仅供参考)Apache POI简介:Apache POI是用Java编写的免费开源的跨平台的Java API,Apache POI提供API给Java程序对Microsoft Office格式档案读和写的功能,其中使用最多的就是使用POI操作Excel文件。依赖坐标:<dependency> <groupId>org.apache.poi</groupId> <artif原创 2021-03-07 18:18:19 · 1794 阅读 · 0 评论 -
定时任务Quartz,spring、springboot 整合Quartz定时任务(面试题可能会问到步骤)
定时任务Quartz,spring整合sing是任务(个人学习笔记,仅供参考!)定时任务的依赖包<!--quartz的基础包--><dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.2.1</version></dependency><原创 2021-03-06 18:57:57 · 885 阅读 · 1 评论 -
一个非常好用的插件,直接从持久层的方法跳转到xml文件对应的sql上
一个非常好用的插件,直接从持久层的方法跳转到xml文件对应的sql上只需要点箭头就可以了,可以直接跳转到对应的sql上。下载插件具体步骤如下:下载完好久可以了。原创 2021-03-02 15:16:42 · 292 阅读 · 0 评论 -
equalsIgnoreCase()方法与equals()、“==”的区别
equalsIgnoreCase()方法与equals()、“==”的区别1.equalsIgnoreCase()是从词意上直译就能大概知道他的意思了。equalsIgnoreCase()和equals()都是比较字符串的内容,但equalsIgnoreCase()忽略大小作比较。equals()比较时区分大小写2.“= =” 和前两个都不一样,他比较的是地址,也就是说就是equalsIgnoreCase()和equals()都为true,“= =”有可能为true,也有可能是false;示例如下:原创 2021-03-01 16:14:58 · 4746 阅读 · 0 评论