自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 收藏
  • 关注

原创 Springboot引入Knife4j接口文档

前后端联调时使用knife4j文档能大大减少沟通成本,为前端测试接口连通性以及接口参数带来很大的方便。本文档在jdk11,springboot 2.7.17版本下编写。

2024-03-12 18:35:56 428

原创 Java线程池,看这一篇足够

在阿里开发手册中明令禁止使用Executors创建线程池,通过以上第一点介绍的6种线程池可以看出,Executors提供的线程池中有些maxinumPoolSize设置为max integer,或者workQueue的容量设置为max integer(如newFixedThreadPool和newSingleThreadExecutor中,workQueue使用LinkedBlockingQueue,其size为),这存在内存溢出风险。因而在实际开发中,最好自定义线程池。

2024-01-24 01:24:16 866

原创 @Async注解的注意事项

前面说了,使用@Async注解时最好声明使用的线程池,那么下面说说线程池的创建,事实上线程池的创建比较简单,直接添加一个Executor的Bean即可。例如// 核心线程数// 最大线程数// 队列容量// 线程存活时间// 线程前缀// 拒绝策略另外,因为是异步执行,所以springboot中的ControllerAdvice无法捕获异步方法中的异常,Springboot中提供异常捕获接口,例如@Slf4j@Override// 异步异常处理方法 todo……

2024-01-23 00:39:50 996

原创 记一次DateTimeFormat注解的坑

总而言之,使用@DateTimeFormat时注意留意是否提前8小时,主要是开发测试时还可能发现不了,我就是上生产时才发现的问题,还好影响不大。

2024-01-18 22:41:17 573

原创 springboot获取用户ip

springboot,或者spring,通过HttpServletRequest获取请求者ip,通过方法即可,但是该方法获取的不全是用户的ip地址,如果请求通过第三方转发或者重定向,获取的就不是需求的ip。

2024-01-08 17:59:14 607

原创 Redis反序列化的一次问题

springboot+redis不少用,但是一直没遇到什么问题,直接代码拷贝上去就用了。这次结合spring-security,将自定义的spring-security的UserDetails接口的实现类SecurityUser,取出时报错。

2024-01-07 22:58:52 1112

原创 记一次http换成https的过程

http默认端口是80,https默认端口是443,此文章主要记录一次网站配置https的过程。

2024-01-05 14:06:45 659

原创 springboot实现用户操作日志记录

之前写了《aop实现日志持久化记录》一文,主要介绍自定义aop标注方法上,通过切面方法对用户操作插入mysql。思路正确但是实际操作上存在一些小问题,本文将从项目出发,对细节进行补充。

2024-01-01 13:07:38 618

原创 Semaphore的简单使用

以上就是Semaphore的简单使用介绍,日常开发中Semaphore使用还是比较少的,但是面试题会常常拿来提问。在限流方面,Google的guava也提供了令牌桶算法做接口限流,感兴趣的可以找相关资料看看。

2023-12-22 15:52:16 420

原创 springboot使用validation-api对入参进行校验

在实际开发中,我们不能完全相信前端给我们的参数是否符合预期或规范,为了避免恶意入参,引发系统或数据安全问题,需要对前端传过来的参数进行校验。例如字符串长度校验,空值校验,手机号校验,邮箱校验,字符串复杂性校验等等。springboot提供了validation-api,对入参校验做了封装,方便使用。2. 创建入参实体类dto使用validation-api校验注解标注入参dto注意点非常重要的一点是:**以上注解是独立的,@Email不会去验证Email是否为空,就是说即便添加了@Email、

2023-12-15 20:11:43 177

原创 springboot使用EasyExcel导出数据

本文主要描述使用EasyExcel导出数据的简单流程,事实上企业需求一般都比较简单,就是表单数据输出到Excel即可,如果数据量大的话,为了避免占用内存过高或者OOM,使用多次读数据多次写入的方法,下面就简单介绍下两种情景的实现。

2023-12-14 22:09:21 359

原创 springboot使用EasyExcel导入数据

*** 自定义EasyExcel监听器*/// 设置缓存数据量// 缓存数据List/*** 每条数据都会调用该方法* @param userInfoForExcel 读取的一行数据* @param analysisContext 上下文对象,包含excel表的很多基本信息*/@Override// 达到预定数据量,进行插入数据库操作// …… todo// 然后清空缓存数据/*** 所有数据执行完invoke,会调用该方法。

2023-12-13 19:45:52 173

原创 springboot整合日志框架log4j2

springboot提供了默认的日志框架logback,结合slf4j门面,基于简单配置即可实现日志输出记录。但是实际开发中很多项目会使用log4j2,log4j2是log4j的升级版本,性能和安全性上比log4j更优。而相较之springboot默认的logback,结合了logback的优点,并优化了输出效率。但是过去几年,log4j2爆过几次大雷,21年12月出现的高危漏洞一度让许多公司紧急排险,加班升级版本或者更改框架,但虽然有缺陷,但升级后依旧是市面上现存的最优日志框架。

2023-12-12 16:52:39 210

转载 spring boot 默认日志框架logback

spring boot默认使用logback作为日志框架Logback 和 Log4j 都是 Java 中常用的日志框架,而 Logback 实际上是 Log4j 的后继者,由 Log4j 的创始人 Ceki Gülcü 开发。Logback 旨在修复一些 Log4j 的设计缺陷并提供更好的性能。Logback 在性能上进行了一些优化,相对于 Log4j,它在一些方面可能表现更好。Logback 的配置相对简单,支持 Groovy 配置文件,相比 Log4j 更容易理解和配置。

2023-12-10 22:28:07 281

原创 算法题:买汽水(瓶子瓶盖换水)

1元一瓶水,两个瓶子可以换1瓶水,三个瓶盖可以换一瓶水,问,20元可以喝到多少瓶水。

2023-12-06 20:23:39 88

原创 记一次若依二开的简单流程

我也是第一次接触若依,就以上描述的体验下来,真的感叹该框架的强大,能无代码实现普通模块的增删修查,能大大节省开发时间,降低开发成本。但是,虽然看似降低了程序员使用门槛,事实上应用在正式项目上时,修改的地方还是很多的,如果对框架底层结构不理解的话,使用上来说依旧很吃力。框架只是个辅助工具,应用上还是得靠开发者扎实的基本知识和求真创新的自我价值实现精神。

2023-12-01 13:00:27 472

转载 springboot实现数据脱敏(重写序列化方法)

对敏感数据进行隐藏的做法成为脱敏,实际项目中为了符合等保要求,需要对重要数据进行脱敏显示,例如非管理员不能查看其他用户的手机号登信息。在实现脱敏的方式中,最直观就是通过在接口中对敏感字符串进行替换,但此方式会增加代码量,耦合大,增加维护成本,因此采用自定义序列化方式。

2023-11-29 13:06:55 215

原创 springboot实现数据脱敏

基于AOP代理,实现返回数据脱敏的,具体流程是:在controller做切面,实现返回通知返回通知中获取返回值对象利用反射获取返回值字段标有脱敏注释的字段做脱敏处理。

2023-11-27 19:56:35 236

原创 shiro的前后端分离模式

在上一篇《shiro的简单认证和授权》中介绍了shiro的搭建,默认情况下,shiro是通过设置cookie,使前端请求带有“JSESSION”cookie,后端通过获取该cookie判断用户是否登录以及授权。但是在前后端分离模式中,前后端不在同一个域内,后端无法自动给请求添加cookie,因而默认的模式不能实现正常的认证授权逻辑。

2023-11-25 01:25:51 675

原创 shiro整合redis

shiro默认的session是存储在jvm内存中的,这样会导致java服务内存占用更大以及一旦服务器宕机或者版本迭代需要重启服务时,缓存中的数据不能恢复,导致用户需要重新登录认证,体验很差。因此利用第三方服务作为缓存十分重要。shiro有相关的shiro-redis整合的依赖包,使用起来也十分方便,下面就介绍下使用方法本文前提是已搭建好shiro的简单框架,配置好realm以及配置类(设置好SecurityManager等)

2023-11-24 01:32:57 351

原创 shiro实现认证与授权

shiro是一个功能强大且易于使用的Java安全框架,可用于身份验证、授权、加密和会话管理。使用Shiro易于理解的API,您可以快速轻松地保护任何应用程序,从最小的移动应用程序到最大的web和企业应用程序。注:此文档例子基于springboot version2.7.17。

2023-11-23 23:01:21 50

原创 sa-token的session

sa-token做权限校验十分简单,只需要创建一个实现StpInterface接口的类,重写`getPermissionList`和`getRoleList`两个方法,返回权限列表以及角色列表就可以,sa-token内部会自动判断接口所需的权限字符串或者角色字符串是否在返回的List中。

2023-11-21 22:09:52 163

原创 sa-token做权限认证

sa-token做权限校验十分简单,只需要创建一个实现StpInterface接口的类,重写`getPermissionList`和`getRoleList`两个方法,返回权限列表以及角色列表就可以,sa-token内部会自动判断接口所需的权限字符串或者角色字符串是否在返回的List中。

2023-11-21 19:48:39 137

原创 sa-token做登录验证

sa-token是一个轻量级 java 权限认证框架,和spring security,shiro一样,能实现**登录认证**、**权限认证**等功能,但使用上比spring security,shiro简单。本文主要简述sa-token的使用,以及登录认证及权限认证等操作。

2023-11-21 02:59:07 272

原创 vue设置无效页面跳转404页面

vue设置无效页面跳转404页面。

2023-11-17 14:25:57 175

原创 vue2实现路由拦截

实现路由拦截,很多系统尤其是管理系统中,通常只有登录验证后才能访问后续资源,否则显示没有权限或跳转登录页面。在登录请求成功后,判断是否有redirect参数,有则跳转到redirect路由中去。在需要登录才能访问的路由添加上meta: {authRequired: true}在mounted中添加是否跳转判断(Message是Element的组件)在router文件中,编写beforeEach方法。

2023-11-17 13:25:54 288

原创 vue2 引入Element UI和Axios

在项目中控制台输入npm install element-ui --save命令进行安装,项目中引进Element UI依赖

2023-11-17 13:16:47 100

原创 Springboot全局异常处理类

在实际开发中,经常需要向前端返回各种各样的错误信息,例如账号密码错误,验证码错误,数据格式错误,操作超时,权限不足,非法操作等等等。每次在service层针对性一一写进结果封装类(例如Result类),十分麻烦,因此为了简化这些错误信息的封装,可以选择抛出自定义异常,然后让全局异常处理类进行捕获封装。自定义一个抽象类MyBaseException实现其继承类,例如验证码错误异常super("验证码错误");这样的话,我们就可以在验证验证码错误的时候,service层直接抛出自定义异常。

2023-11-16 15:41:53 24

原创 aop实现日志持久化记录到mysql

项目中会要求对系统的操作日志进行记录,例如用户登录,添加、修改、删除等操作,记录进数据库,方便管理员查看数据或者明确事故责任链。日志内容一般包含操作者id,请求ip,uri,方法类型,参数以及操作结果,返回值等等。获取请求ip,参数的话通过过滤器或者拦截器会比较简单,但是PostBody中参数是以流方式记录只能被读取一次,如果在过滤器或者拦截器中进行读取,则controller将捕获不到,影响正常的接口逻辑。

2023-11-14 20:32:48 68

原创 Docker快速搭建Nginx服务器

nginx的作为一个高性能的 HTTP 和 反向代理 web服务器,版本的更新迭代变化不大,一般直接安装最新即可,但是我比较喜欢自己熟悉一点的版本(Nginx 1.18)所以一下安装部署以1.18版本为例。,没有问题的话,应该就完成部署了,可以直接访问服务器80端口,可以正常访问页面。此文档是基于已部署Docker的前提。

2023-11-13 19:32:36 59

原创 Docker快速搭建Mysql服务

先确认自己需要的MySQL版本,MySQL版本之间差别还是挺大的, 常用的mysql5.7,mysql8,处于习惯,我喜欢使用5.7,所以这里以mysql5.7为例子。在确保宿主机端口没做防火墙拦截,以及服务器运行商管理台没做规则限制,应该就能通过第三方软件对数据库进行连接了。拉取速度可能很慢,可以选择设置阿里云作为镜像仓库,速度能大大提升,具体做法参考其他文章。,将数据卷,cnf,日志及cnf配置文件等挂载到宿主机目录,这里目录地址选择。注意:本文前提默认已安装docker服务。

2023-11-13 19:17:38 32

原创 Cent OS 7.9 安装docker

直接从docker官方源上下载镜像比较慢,特别国内,建议使用第三方源,推荐阿里源。docker有社区和企业两个大版本,普通人安装ce就行,ee属于企业收费版。可见yum-utils没有安装,下面安装yum-utils及其他一些工具。没有报错且显示Complete说明安装成功。

2023-11-13 16:11:24 70

原创 评论区模块设计与实现(springboot+mybatis+mysql)

在创作个人博客网站时想添加一个评论模块,就是那种常规的评论区,用户可以针对博客进行评论,其他用户可以针对用户的评论进行评论回复。

2023-09-01 01:01:59 834

原创 解决mysql问题:invalid default value for ‘date‘

sql_mode参数导致的日期格式默认值不能为0问题解决方案。invalid default value for 'date'

2022-09-13 17:42:49 4411 1

原创 SpringBoot中Spring-data-redis入门使用

SpringBoot中Spring-data-redis入门使用编者的话Spring-data-redis是基于Spring框架的redis链接插件,功能强大,简单好用(至少对我这种小白,不深究其原理和强大功能的话,是简单好用的),其和Jedis两者是Spring中常用的操作Redis服务的工具,两者的区别及其优缺点自行百度,我也不会,推荐大佬的博文 JAVA与Redis的结合这里,小编只是介绍Spring-data-redis的简单使用,其包括引依赖,application.yml中对进行简单配置,

2022-04-08 17:24:40 2539

原创 ant-design-vue文件上传中的beforeUpload方法和change方法

ant-design-vue文件上传中的beforeUpload方法和change方法使用vue+ant-design时,遇到了点小问题,文件上传的过程中,如果文件不立马上传,需要在beforeUpload方法中返回false。我以为只要在beforeUpload方法中返回false后,change方法便不再执行,但事实上并不是这样子的。一些背景我的需求是,多个文件上传,然后对单个文件大小作限制,如果大于20M的话就去掉不上传,仅上传小于20M的文件。先说下beforeUpload和change

2021-08-24 10:27:41 10407 6

原创 jdk动态代理报UndeclaredThrowableException异常

jdk动态代理报UndeclaredThrowableException异常1、发现问题在使用LG大佬开源的ThinkItCMS系统的时候,出现了一个困扰好久的问题,添加内容的时候怎么都没办法渲染成html页面,java后端控制台什么问题都没报,找问题简直无从下手,作者说走断点看下,于是发现在service层调用操作数据库方法的时候出错,但是错误没报,直接跳到UndeclaredThrowableException方法中。先上LG大佬的开源CMS系统的链接,以示感谢:@slfj大佬的Thin

2021-08-12 12:14:31 341

原创 解决yaml.snakeyaml.error.YAMLException异常

解决yaml.snakeyaml.error.YAMLException异常刚工作,然后前辈给一个项目让运行,看代码,了解项目架构,然后发现给的项目不能直接运行,添加进maven,然后下载各种依赖包,然后修改java版本,有乱码,然后修改文本格式,可以运行了。几天之后,有空想起自己的毕业设计,然后打开,运行,然后报以下异常:14:22:26.182 [restartedMain] ERROR org.springframework.boot.SpringApplication - Applicati

2021-08-02 14:39:28 3004 2

原创 用户密码的加密解密操作(前端加密,后端解密)

用户密码的加密解密操作作者是个小菜狗,行文过程基本都基于自己理解,没有深入查阅文献,如有错误,还请大神指出背景:公司做的是一个某某平台的系统,包括前台和后台,作者刚毕业,刚开始试用,带我的师傅让我实现密码的加密解密,说实话,都有封装好的api,直接调用什么的,真的没啥难度,后来被其他小事情耽搁了,回过头来,前辈已经做好了,就叫我好好看看,理解下,嗯嗯……说好的让我做的,咋就自己弄了呢?嘿嘿1、流程先说说加密的需要,http协议默认情况下是以明文进行传输的,即没有对网上传输的数据进行加密的,

2021-08-02 12:07:38 16601 7

原创 Spring Boot切面Aspect实现日志记录

Spring Boot切面Aspect实现日志记录刚接触到公司项目的时候还是能学到学校里学不到的东西,比如项目里将每个前端请求都记录在日志中,持久化到数据库,后来细看代码才发现,是使用切面实现的。阅读这篇文章,你可能需要了解Spring Boot的一些知识,例如切面编程AOP1、Maven依赖首先肯定是要先引入依赖,依赖如下: <!--spring切面aop依赖--> <dependency> <groupId

2021-07-30 16:21:53 521

空空如也

空空如也

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

TA关注的人

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