自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(75)
  • 资源 (4)
  • 收藏
  • 关注

原创 Java8用Stream流一行代码实现数据分组统计,排序,最大值、最小值、平均值、总数、合计

Java8对数据处理可谓十分流畅,既不改变数据,又能对数据进行很好的处理,今天给大家演示下,用Java8的Stream如何对数据进行分组统计,排序,求和等汇总统计方法找到汇总统计的方法。这些方法属于java 8的汇总统计类。getAverage(): 它返回所有接受值的平均值。getCount(): 它计算所有元素的总数。getMax(): 它返回最大值。getMin(): 它返回最小值。getSum(): 它返回所有元素的总和。看官可以根据自己的需求进行灵活变通。

2022-12-02 18:47:01 22057 1

原创 异步发送邮件

在Spring Boot]项目中开启异步多线程非常简单,只需要下面几个步骤即可。一、首先在启动类上面加@EnableAsync注解。如果说是系统内部邮件,可以加入以下灵活配置。二、在配置文件中加入以下配置信息。四、创建邮件任务类,定义线程任务。三、加入线程的配置代码。

2025-03-07 23:32:01 167

原创 @RequiresPermissions注解解释

要求用户拥有权限才可访问,它拥有两个参数,一个是value,一个是logical。value就是拥有什么权限,logical是权限之间的判断关系。要求该用户有root权限并且可以添加用户,权限之间的关系是or。

2025-03-06 15:23:23 491

原创 @PostConstruct注解的作用

注解功能是在一个类的所有依赖被注入完成后,才会被执行的方法。这种方法通常用于类的初始化,初始化过程中可以进行一些资源加载、方法仅被调用一次,通常修饰符是public或者protect,返回值是void,并且该方法通常不带参数。在启动程序的时候会看到该init()方法在类加载完的时候被执行了。、或其他必要的配置工作。

2025-03-05 22:22:32 1576

原创 如何精简返回给客户端的异常内容

测试代码,自己测试的,有问题可以留言。

2025-03-02 22:48:21 134

原创 授权与认证之jwt(五)创建Aop切面类

后,现在我们要利用AOP,把更新的令牌返回给客户端我们在写OAuth2Filter的时候,把更新后的令牌写到ThreadLocalToken里面的ThreadLocal。那么本篇,我们要创建AOP切面类,拦截所有Web方法的返回值,在返回的R对象中添加更新后的令牌。

2025-03-02 22:20:13 130

原创 授权与认证之jwt(五)创建ShiroConfig类

我们要创建的Shiroconfig类,是用来把OAuth2Filter和OAuth2Realm配置到Shiro框架,这样我们辛苦搭建的Shiro+WT才算生效。

2025-03-02 22:06:42 244

原创 授权与认证之jwt(四)创建OAuth2 Filter类

一、在配置文件中,添加)WT需要用到的密钥、过期时间和缓存过期时间。ThreadLocal中的数据,所以OAuth:2 Filter类。必须要设置成多例的,否则ThreadLocal将无法使用。因为在OAuth2 Filter类中要读写。二、创建OAuth2Filter类。

2025-03-02 20:57:34 205

原创 授权与认证之jwt(三)刷新令牌该如何设计

那么问题来了,假设Token过期时间为15天,用户在第14天的时候,还可以免登录正常访问系统。JWT的令牌过期时间能不能做成HttpSession那样超时时间,只要用户间隔操作时间不超过15天,系统就不需要用户重新登录系统。只要用户成功登陆系统,当后端服务器更新Token的时候,就在响应中添加Token。当第15天,用户的Token失效以后,我们让Shiro程序到Redis查看是否存在缓存的Token,如。在我们的方案中,服务端刷新Token过期时间,其实就是生成一个新的Token给客户端。

2025-03-02 20:03:09 404

原创 授权与认证之jwt(二)把令牌封装成认证对象

OAuth2Realm类是AuthorizingRealm的实现类,我们要在这个实现类中定义认证和授权的方法。因为认证与授权模块设计到用户模块和权限模块,现在我们还没有真正的开发业务模块,所以我们这里先暂时定义空的认证去授权方法,把Shiro和WT整合起来,后续我们再实现认证与授权。洁求提交的Token是否有效。客户端提交的Token不能直接交给Shiro框架,需要先封装成AuthenticationToken类型的对象,所以我们我们需要先创建AuthenticationToken的实现类。

2025-03-02 17:12:39 353

原创 授权与认证之jwt(一)创建Jwt工具类

在application文件中加入,建议大家把密钥和过期时间定义到Spring Boot配置文件中,然后再值注入到javaBean中,这样维护起来比较方便。JWT的Token要经过加密才能返回给客户端,包括客户端上传的Tokn,后端项目需要验证核。于是我们需要一个WT工具类,用来加密Token和验证Token的有效性。二、定义密钥和过期时间。三、创建jwt工具类。

2025-03-02 15:51:13 508

原创 配置后端验证功能之validation

之前用过validation后端验证功能但没进一步了解,都只是简单用一下。假如开发中要求传参必须按照规则 不能毫无底线什么都能传,本篇介绍的就是针对此功能的方法。讲了这么多除了让大家更熟悉@Validation这个注解外,更重要的是了解以下正则表达式的使用,这样可以是我们开发效率事半功倍且bug会更少。由于我之前加入了swagger大家可以忽略@Api()和@ApiOperation()注解,可以用postman来调用接口。2.编下以下方法代码,最重要的就是pattern中的正则表达式。

2025-03-02 11:24:02 289

原创 用Java实现根据数据库中的数量,生成年月份+序号递增

在日常开发中,经常会遇到根据年月日和第几号文件生成对应的编号,今天给大家提供一个简单的工具类。该示例 测试为年月日+序号递增,如果该业务要求实现按年份+序号递增 只需改一下图一代码即可。sequenceCode方法的代码如下。

2023-12-11 10:52:03 1677

原创 Mysql的instr()函数用法详解

最近接手了一个大型老项目,用到的jfinal技术,后端大部分都是拼写的sql,对一些sql函数不太理解的我算是一个挑战,也是一个进步的很大空间。今天来说下instr这个函数。首先看下我们的表数据。

2023-08-08 16:06:04 1887 2

原创 使用SpringBoot记录用户操作日志

COMMENT ON COLUMN "SCOTT"."SYS_LOG"."CREATE_TIME" IS '创建时间';COMMENT ON COLUMN "SCOTT"."SYS_LOG"."OPERATION" IS '用户操作';COMMENT ON COLUMN "SCOTT"."SYS_LOG"."METHOD" IS '请求方法';在工作中我们可能会遇到一个需求,就是记录用户的操作信息,接下来使用spring的aop特性实现这一需求。二、自定义一个注解,用于标注需要监控的方法。

2023-05-20 14:05:20 3973

原创 java常用日期操作大全

在最近的工作中遇到了一个新奇的事情,就是往数据库中存日期类型的数据,时分秒都是0。检查了数据库中的表字段是datetime,然后前端传的日期格式为:yyyy/MM/dd。最后时分秒由后台生成。比如传某个时间区间,前端传值为:2023/04/07---2023/04/08。我后台保存到数据库中的数据应该为:2023-04-07 00:00:00---2023/04/08 23:59:59。试了拼接,转换 最后存到表中的都是2023-04-07 00:00:00---2023/04/08 00:00:00。

2023-04-07 11:23:31 767

原创 idea报错:bad config line 1 in file C:/Users/Administrator/.gitconfig

这样的话,刚刚删除的.gitconfig就会重新生成,git也可以正常使用了,如果按照以上操作还未解决,可以重启一下idea。最近电脑经常蓝屏死机,导致打开idea后提示错误,git提交不了代码。第二步:在桌面鼠标右键打开 git bash。第一步:首先去c盘找到该文件进行删除。

2023-03-31 18:54:01 1734 1

原创 使用jsoup爬取网页资源(某东为例)

根据相应的标签找到对象的属性,最后输出我们需要的东西即可。其中JD是创建的一个实体类,来接收爬取到的资源。第二步,直接复制粘贴这个工具类即可。

2023-02-16 10:32:33 437

原创 Java调用WebService接口之利用hutool工具包实现

而且测试接口地址还是内网的,每改一处代码都要部署堡垒机去测试,光是一个登录接口就花了我两天时间很是无语(主要是接口文档地址不会看)相信看到这,大家都有点蒙,不知如何下手,今天就以我的亲身经历告诉大家如何解决这种问题(hutool)是个好东西。调用成功之后就会返回下图获取sessionId,我们还可以获取cookie等参数,具体要根据你们的业务来获取即可。到此处就算是调用成功了,后面如遇到其他问题还会继续更新此文章的!上面传参的内容可以参考图四,map是要传入的参数。接口的地址大就是这种,以wsdl结尾的。

2023-01-11 21:47:03 2313 5

原创 简单实现多线程的Demo

/ 最大线程数 非核心线程数=最大线程池数-核心线程池数。// 非核心线程池最大空闲时间单位。// 非核心线程池最大空闲时间。

2022-12-10 15:45:58 472

原创 一行代码快速取两个集合的交集,并集,差集

两个集合不去重的并集为:[张三, 李四, 王五, 赵六, 小红, 小黄, 小蓝, 王五]两个集合去重的并集为:[张三, 李四, 赵六, 小红, 小黄, 小蓝, 王五]两个集合的差集为:[张三, 李四, 赵六]ListUtils工具类来实现。s1.add("张三");s1.add("李四");s1.add("王五");s1.add("赵六");s2.add("小红");s2.add("小黄");s2.add("小蓝");s2.add("王五");两个集合的交集为:[王五]

2022-12-10 15:25:16 830

原创 Java实现文件上传与下载(后端)

作为刚踏入Java开发的我们,在接触到项目时,文件上传与下载是必不可少的功能点。up主刚入职那几天也是很懵,不知如何下手,今天给大家简单演示一下后端如何实现。大家可以拷贝直接就用了 文件上传成功 当然除了以上这种还有很多方式,还可以直接使用io流来完成,大家灵活变通应用在自己项目钟即可

2022-12-05 17:48:46 2219

原创 Mybatis-Plus中的and和or用法

先看Mybatis-Plus官网中对这两个关键字用法的介绍 数据库文件: 表数据: 最直接的方法: 也可以用下面的方法用mybatis-plus最直接的方法 也可以用以下方法

2022-12-05 17:00:39 5927

原创 今年世界杯预测(阿根廷队冠军)

2022年卡塔尔世界杯即将拉开帷幕,预测今年世界杯冠军是阿根廷国家队。作为南美双雄之一,阿根廷国家队一直以来便是足球界的强队之一,在近些年来,球队诞生了新的球王梅西,也是当今足坛最优秀的足球运动员之一,在梅西的带领下阿根廷队取得了很好的成绩,近年来更是达到了巅峰。去年的美洲杯赛场上阿根廷国家队击败巴西队获得美洲杯冠军,在今年的欧美超级杯上,阿根廷队面对欧洲杯新的冠军意大利队也不落下风。今年是三十四岁的梅西的最后一届世界杯之旅,已经保持了三十多场比赛连续不败的记录,阿根廷队本届世界杯夺冠概率最高。 但足球运动

2022-12-05 15:01:17 1133 1

原创 maven打包提示找不到符号

在用package打包自己模块时会提示找不到符号,我们install之后还是提示该错误。刚入职的小伙伴,在用maven打包部署时会遇到maven提示找不到符号等错误。等install完成之后,我们再去我们的模块下面进行打包即可。这时我们可以选择打包install整个项目。

2022-11-14 14:21:56 5358 4

原创 MySQL中你不知道的count(主键)、count(字段)、count(1)和count(*)的区别

当我们要对表中的数据进行统计时,就要使用到count()函数,那么count(主键)、count(字段)、count(1)和count(*)这些都能对表数据进行统计,但是他们有什么区别呢?

2022-11-13 17:38:24 937

原创 关于MySQL的索引,你知道多少呢

在创建好索引之后,我们通过explain关键字来查看该sql语句的执行过程,即在该sql语句前加入explain,explain sql语句;稍不注意,可能你写的查询语句是会导致索引失效,从而走了全表扫描,虽然查询的结果没问题,但是查询的性能大大降低。我个人经常关注的几个字段有 type,possible_key,Key,rows。建立了索引,并不意味着任何查询语句都能走索引扫描。在工作中,如果我们想提高一条语句查询速度,通常都会想对字段建立索引。首先介绍一下索引的语法,如何创建,查看,删除索引。

2022-11-13 12:23:18 449

原创 “JSON parse error: Cannot deserialize value of type `java.util.ArrayList<XXX>` from Object value ...

今天周末加班改bug时,用postman传参遇到上述一个错误,搞了我十分钟。今天分享给大家避免踩坑。可以看到enclosureList是一个集合形式的数据。因为enclosureList是一个集合,要在后面加上。EnclosureUploadDTO里面有这几个参数。乍一看没啥问题啊,一执行的时候就报告错误。大概能看出是我这个集合数据传参方式不对。好了,这就是我解决以上错误的方法。给大家看下我用postman传参方式。首先我的controller类如下。通过错误提示最后一句话。

2022-11-12 11:32:41 50751 3

原创 一篇文章搞懂MYSQL的脏读、不可重复读、幻读出现的原因以及用事务隔离级别来解决问题详解

假如张三希望下午办一张中国银行的储蓄卡放在钱包里,中午他的女友去中国银行办了卡并把卡偷偷放到张三的钱包里面,等到下午张三准备去办理的时候发现他的钱包竟然有中国银行的储蓄卡,这就像产生幻觉一样。加入张三准备提交事务时突然因断电发生异常回滚了事务,该转账操作实际并未完成,那么张三看到的1500块就是脏数据、一个事务按照条件查询数据时,没有对应的数据行,但是在插入数据时,又发现这行数据已经存在,好像出现幻觉。假如张三和李四现在各有1000块钱,现在张三要给李四转500.但是现在张三并未提交事务。

2022-11-10 10:10:54 1162

原创 idea配置springBoot或者SpringCloud微服务多环境配置

一.在Edit Configurations里找到Program arguments:输入指令--nacos-ip=10.9.119.40:30848 --nacos-namespace=lq 如配置--spring.profiles.active=dev也可以指定dev文件。在SpringBoot项目中,我们可能需要配置环境变量来应对不同运行环境,例如我们需要在公司环境连nacos才可以跑本地项目,但是到甲方环境就是另外一种环境。本文章列出几种除了配置application.yml的方法。

2022-11-08 20:20:14 4904

原创 postman出现Required request part ‘file‘ is not present

Required request part 'files' is not present 所需的请求部分“文件”不存在。这里我写的是file,实际后台接收的是files。另外还要检查你的传参名字是否正确。

2022-11-08 16:01:58 4894

原创 postman错误提示“Current request is not a multipart request”

今天在写业务进行批量上传文件时,用postman测试发现报500错误----Current request is not a multipart request,翻译了一下大概意思是。需要把Content-Type设置成multipart/form-data或着去掉Content-Type即可,有问题欢迎大家留言。从错误提示看,报错的原因可能和Headers头文件信息有关,去查看Headers信息时如下。看到mutipart字样,大概出错原因和它有关系了。当前请求不是多部分请求。

2022-11-08 15:07:05 8479

原创 Mybatis-Plus判断数据是否存在,不存在则插入

因为是用的Mybatis-Plus所以直接用它来实现业务功能,起初是把要插入的数据放到mybatis-plus中,代码如下。就是把要插入的数据先在表中查出来是否存在,查出来的结果放到List集合中,但是在遍历时始终想不到合适的思路,起初是这样写的。然后判断这个结果是不是空的,如果是空的则说明数据库中没有该数据,则可以进行插入。今天写业务代码有这么一个场景,就是在数据库表中插入一条数据,并且这个表中只有这么一条。因为是周五,要着急下班,所以异常信息自己定义的一个,今天就说这么多吧。喜欢的话可以给个赞哦。

2022-11-04 20:25:33 9560

原创 MySQL去重中 distinct 和 group by 的区别

今天在写业务需要对数据库重复字段进行去重时,因为是去重,首先想到的是distinct关键字。于是我在distinct后面加上了id,distinct查出来的数据就是全部数据了,相当于distinct没起作用。而 group by 可以针对要查询的全部字段中的部分字段去重,它的作用主要是:获取数据表中以分组字段为依据的其他统计数据。distinct适合查单个字段去重,支持单列、多列的去重方式。即只有所有指定的列信息都相同,才会被认为是重复的信息。多列的去重则是根据指定的去重的列信息来进行,

2022-11-04 17:04:23 4063

原创 io流调用feign失败解决办法

IO流调用feign失败,执行该业务方法时personId输出的报错信息为: {"code":500,"msg":"Failed to parse multipart servlet request;nested exception is java.lang.RuntimeException: java.io.IOException: UT000036: Connection terminated parsing multipart data","data":null}再次运行时可以看到成功拿到了数据。

2022-11-03 15:35:35 1674 4

原创 记录我毕业的这三年

当时签署是3.2k,实际每个月到手2.5k左右,每个月除去房租,生活费基本上没剩什么钱,就这样在呆了有一年,这份工作也很轻松,每天早上巡检一下服务器就没什么事了,也是在这段时间,自己自学了Java编程,做了几个mvc项目。做了几个mvc项目之后,就硬着头皮找工作去了,现在工资翻了有2.5倍左右,自己负责一个项目,11.10号左右就开始上线第一版了,基本上都是9 10 6.明天周六依然要过来加班。每天忙的起飞要学的东西也很多,经常会来c站找一些解决方案,也想把自己工作遇到的一些问题记录在c站。

2022-10-28 16:41:59 162

原创 对象集合根据其中某个字段去重

写代码时经常遇到对集合中某个字段进行去重,用遍历的话既浪费时间又要写大量代码,今天给大家介绍借助jdk8的新特性--> Stream流进行处理listVOS.stream() .collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(StageCheckListVO::getStackBatch))), ArrayList::

2022-10-25 18:30:27 1920

原创 电脑连WiFi怎么查看密码是多少

2.命令提示符输入(下面的代码可以复制粘贴到命令栏) for /f "skip=9 tokens=1,2 delims=:" %i in ('netsh wlan show profiles') do @echo %j | findstr -i -v echo | netsh wlan show profiles %j key=clear 按回车键。然后,根据WiFi的名称,查看相应的密码。1.win+R键,输入cmd,点击确定。查看关键内容即可看到密码。

2022-10-10 19:35:59 471

原创 @JsonFormat与@DateTimeFormat的区别

经过该注解会转化为2022/10/5,如果想加上时分秒的话可以@JsonFormat(pattern = "yyyy/MM/dd HH:mm:ss") ,timezone="GMT+8",中国时区是东八区,所以加8小时即是中国时间。这样的话,就算前端传入了 2022-10-15 18:19这样的日期值,经过这个注解会转化成 2022/10/15。一、@JsonFormat,后台从数据库中取出时间数据,以@JsonFormat定义的格式传给前端进行展现。pattern的格式可以自定义。如果想加上时分秒的话,

2022-10-05 18:26:16 842

原创 Java实现统计文章中出现多少字,每个字出现的次数

一、我们使用谷歌提供的 Multiset 集合来实现。会显示q出现2次,a出现1次,s出现2次等。

2022-10-03 16:42:57 626

电商系统-技术难点-技术亮点

电商系统-技术难点-技术亮点

2022-09-12

Java实现动态验证码生成

Java实现动态验证码生成

2022-08-19

布隆过滤器工具类,拿来直接用

布隆过滤器工具类,拿来直接用

2022-08-15

java生成二维码工具,拿来即可使用

java生成二维码工具,拿来即可使用

2022-08-10

随机生成订单编号的工具类,简单易上手,拿来就可以用

随机生成订单编号的工具类,简单易上手,拿来就可以用

2022-08-09

Md5加密工具直接拿来用即可

Md5加密工具直接拿来用即可,加密效果杠杠的

2022-08-08

log4j.xml文件配置

log4j.xml文件配置 ,可以实现日志保留的位置,日志格式,可以配置策略(每一天转存,文件大小)文件个数,单个文件的最大Mb, 以及过滤类的包名功能还有日志的级别

2022-07-26

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除