自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(69)
  • 资源 (1)
  • 收藏
  • 关注

原创 SpringBoot 关于参数校验的用法

适用范围: @Valid注解适用于标准的Java Bean校验(例如使用@NotNull、@NotBlank等注解),可以与JSR-303或JSR-380校验规范一起使用。@Validated注解主要用于Spring框架的参数校验,它支持Spring特定的校验功能,例如分组校验和自定义校验。这在需要根据不同场景进行不同校验时很有用。总的来说,@Valid注解更加通用,适用于标准的Java Bean校验,而@Validated注解则提供了更多Spring框架特定的功能,例如分组校验。

2023-07-06 19:11:48 381

原创 Maven的三种项目打包方式——pom,jar,war的区别

是怎么发现,因为我是从父模块打包的,但是发现我这个子模块找不到,我发现父子模块依赖关系也没错啊,我就单独打包这个子模块,结果没有错误,但是没生成target文件,也就是没编译出来,后来一查,原来pom是聚会模块的作用,子模块应该是jar或者war。记录一次项目启动失败,发现Could not resolve dependencies for project的错误,原因是我的子模块的打包方式是pom。1、pom:用在父级工程或聚合工程中,用来做jar包的版本控制,必须指明这个聚合工程的打包方式为pom。

2023-07-06 11:15:29 2383

原创 关于多线程任务出现的问题

多线程任务变成单线程的原因

2023-04-18 08:03:40 196 1

原创 迁移java项目,发现不可用的jar包如何找到对应的maven仓库导入pom

如何快速找到类对应的maven依赖

2023-01-10 22:55:18 425

原创 关于windows FTP 上传更新文件,下载文件重复

git细节

2022-06-14 10:43:32 496

原创 关于hibernate在实体类增加字段启动项目报错

如果出现这种情况,有可能涉及到hibernate或者mysql的缓存,因为第一次启动失败,mysql或者hibernate已经在数据库添加相应的字段,并生成缓存。然后之后的修改,启动项目也不会成功,因为hibernate会一直访问缓存,所以先要把要增加的字段,在mysql删除后,重新启动项目才可以。...

2022-03-30 20:29:50 1186

原创 如何将java的Date类返回给前端以yyyy-mm-dd格式

@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") private Date modifyDate;只需要在对应字段加上@JsonFormat即可

2022-03-23 17:07:34 3446

原创 Java 如何做到DNS解析工具类

首先引入maven依赖 <dependency> <groupId>dnsjava</groupId> <artifactId>dnsjava</artifactId> <version>2.1.8</version> </dependency>其中这个类是核心InetAddress[] addresses= Add

2022-03-22 22:45:34 2468

原创 关于Java需要展示多条同种类型的数据

可以用Map<String,Object> 来存储,其中Object可以用List<Map<String,Object>来存储相同类型的数据,经过层层封装返回的json数据如下{ "XXX" : "xxx1"{ "aaa" : 666, "bbb" : 777 } "xxx2"{ "aaa" : 6661, "bbb" : 7771 }}...

2022-03-15 22:37:23 750

原创 Sql 关于如何通过多个id来查询多条数据

select * from t_news where FIND_IN_SET(news_id,‘1,20,3’)

2022-03-14 22:43:35 7249

原创 Windows下的Nginx的配置使用

在nginx安装目录下的conf文件,找到nginx.conf文件,修改里面的配置信息如server { listen 9001; server_name localhost; location ~ /hosp/ { proxy_pass http://localhost:8201; } location ~ /cmn/ { proxy_pass http://localhost:820

2022-03-13 09:58:55 5420

原创 Spring Cache + Redis 缓存数据

项目集成Spring Cache + RedisSpring Cache 是一个非常优秀的缓存组件。自Spring 3.1起,提供了类似于@Transactional注解事务的注解Cache支持,且提供了Cache抽象,方便切换各种底层Cache(如:redis)使用Spring Cache的好处:1,提供基本的Cache抽象,方便切换各种底层Cache;2,通过注解Cache可以实现类似于事务一样,缓存逻辑透明的应用到我们的业务代码上,且只需要更少的代码就可以完成;3,提供事务回滚时也自动回滚缓

2022-03-12 22:35:42 176

原创 EasyExcel 在java中实现从数据库导入导出

@Override public void exportDictData(HttpServletResponse response) { try { //设置下载信息 response.setContentType("application/vnd.ms-excel"); response.setCharacterEncoding("utf-8"); // 这里URLEncoder.enc

2022-03-12 19:17:34 1859

原创 关于idea重新编译compile后,还是无法识别target的本地类

首先把idea的.idea和target手动删除,然后重新编译,如果还不行,就再点击图中的按钮。

2022-03-11 15:43:16 677

原创 hibernate实现条件分页查询的一些细节

如果用了原生sql,就用createNativeQuery,把查询结果进行反序列化到Entity.class对应的实体类,否则查询的是Object。String sql="select * from 表名 where 列名 like :xxx";Query query = entityManager.createNativeQuery(sql,Entity.class).setFlushMode(FlushModeType.COMMIT) .setParameter("xxx","%"+clus

2022-03-07 15:31:01 396

原创 Leetcode 热门100 4. 寻找两个正序数组的中位数

class Solution { public double findMedianSortedArrays(int[] nums1, int[] nums2) { int[] num=mergeArrays(nums1,nums2); int length=num.length; int mid=length>>1; double result=0; if (length%2!=0){

2022-02-17 15:03:41 166

原创 LeetCode 热门100题 1.两数之和

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。class Solution { public int[] twoSum(int[] nums, int target) { for(int i=0;i<nums.length;i++){ for

2022-02-15 21:44:19 74

原创 LeetCode 热门100题 2.两数相加

public class Solution { public ListNode addTwoNumbers(ListNode l1, ListNode l2) { int[] num1=ListToArray(l1); int[] num2=ListToArray(l2); int i1=arrayToInt(num1); int i2=arrayToInt(num2); int result=i1+i2; ..

2022-02-15 17:59:11 6980

原创 若依框架学习(九)关于登录token过期如何处理

在第一节的部分我们也知道登录的流程,但当后台发现redis缓存的登陆实体类过期了,是怎么处理并且怎么给前端发送消息?其实SpringSecurity有一个config配置SecurityConfig类,继承于WebSecurityConfigurerAdapter其中重写了configure()方法,用来自定义过滤和拦截处理红线框就是处理登录token过期,实质上认证失败处理类,只不过token过期是认证失败的一种情况。我们看下这个类做了什么?我们点击紫色的属性通过这个注入的实现类看看@C

2022-02-12 09:44:27 11162

原创 若依框架学习(八)aop的日志记录

如何记录用户在系统操作的行为我们可以定义一个LogAspect的切面类@Aspect@Componentpublic class LogAspect{ private static final Logger log = LoggerFactory.getLogger(LogAspect.class); /** * 处理完请求后执行 * * @param joinPoint 切点 */ @AfterReturning(pointcut

2022-02-11 20:58:17 2007

原创 线程池的拒绝策略CallerRunsPolicy

用于运行被拒绝任务的被拒绝任务的处理程序直接在{@code execute}方法的调用创建线程池的线程中,除非线程池已经关闭,在这种情况下,任务就会被丢弃。

2022-02-11 11:17:20 1080

原创 若依框架学习(七) 异步任务管理器

AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match"))); 在登录的业务层方法中,通过异步任务管理器来记录登录日志1,AsyncManager.me()获取一个AsyncManager对象2,执行execute方法,执行任务,传入的是一个task对象

2022-02-11 09:34:30 6073

原创 若依框架的学习(六)用户的修改删除

用户信息的修改这里和之前的新增用户一样,也要重置表单,和用户信息查询回滚参数信息过来/** * 根据用户编号获取详细信息 */ @PreAuthorize("@ss.hasPermi('system:user:query')") @GetMapping(value = { "/", "/{userId}" }) public AjaxResult getInfo(@PathVariable(value = "userId", required = fal

2022-02-09 18:24:53 4956

原创 若依框架学习(五)用户的增删改查

点击部门树状图来进行条件查询前端找到对应的页面,按照路由路径里面有个handleNodeClick()点击事件,点进去看看发现是复用了getList()方法,说明后台也是复用相应的方法/** * 获取用户列表 */ //@PreAuthorize在调用方法前先检查有没有权限,通过Service层的@ss.hasPermi()方法来校验 @PreAuthorize("@ss.hasPermi('system:user:list')") @GetMappi

2022-02-08 22:45:46 7716 1

原创 若依框架学习(四)部门树状图

部门树状图的实现点击用户管理,观察网络活动大概可以猜出treeselect应该是该方法,根据请求url:http://localhost/dev-api/system/dept/treeselect可以找到对应的controller/** * 获取部门下拉树列表 */ @GetMapping("/treeselect") public AjaxResult treeselect(SysDept dept) { List<SysDept

2022-02-08 21:15:41 5852 2

原创 springboot下全局异常处理器学习

这是根据若依框架下的学习,在平时做业务时,难免会出现对各种业务的异常进行捕抓和处理/** * 全局异常处理器 * * @author ruoyi */@RestControllerAdvicepublic class GlobalExceptionHandler{ private static final Logger log = LoggerFactory.getLogger(GlobalExceptionHandler.class); /** * 权限校验异

2022-02-08 09:55:17 362

原创 若依框架学习(三)PageHelper

用户数据分页对于如何分页显示用户数据,我们首先找到当前路由地址是:http://localhost/system/user这说明应该在对应的Controller有/system/user,并且有pageNum=1和pageSize=10这两个参数,找到对应的Controller后,往下找就找到了这里先讲下@PreAuthorize注解,这是SpringSecurity的注解,作用是限制对该方法的访问,在访问方法前,会校验目前用户是否有访问该资源,通过@ss的hasPermi()方法来处理,ctr

2022-02-07 22:50:26 2918 1

原创 若依框架学习(二)获取用户角色和权限以及所拥有的路由

获取用户角色和权限若依系统每次跳转某个页面时,都会调用该方法,以检查当前用户是否有权限访问该页面,或者说该页面能基于该用户的角色身份和权限来显示菜单数量。老办法前端用f12网络活动来获取后台请求路径。该方法主要作用是:1,从springsecurity中获取当前登录用户的信息2,根据当前用户信息来查询当前用户的角色集合3,根据当前用户信息来查询当前用户的权限集合4,将以上信息放入AjaxResult返回给前端。springsecurity是如何获取当前用户信息的呢?这里封装了一个安全服务

2022-02-07 17:17:16 11021 1

原创 SpringSecurity学习

AuthenticationManagerAuthenticationManager接口为springsecurity的接口之一,字面意思为认证管理器,该接口负责把将要认证对象进行校验,1.首先检查该账号是否被禁用,如果禁用的话而且该账号能够被检测的话,就抛出DisabledException。2.然后检查该账号是否被锁住,如果被锁住而且该账号能够被检测的话,就抛出LockedException3.如果出现不正确的凭据,则必须抛出{@link BadCredentialsException}。虽然

2022-01-26 20:03:41 2700

原创 若依框架学习(一)基于springsecurity的登录功能

登录生产验证码基本思路就是后端生成一个表达式,1+1=21+1=?@2将1+1=?转换成图片,传给前端展示,把答案2放入redis根据前端请求路径,以及前端项目部署的url,可以发现该请求其实是请求前端,但我们都知道图片信息是在后端生成的,所以这是怎么回事?答案是这里用了反向代理,url请求前端,映射到后端,解决跨域问题,我们可以在vue.config文件查看到相关配置:其中target是我们后端的地址。pathRewrite的功能是//把VUE_APP_BASE_API替换成’’,然

2022-01-24 22:01:07 5176

原创 Redis遇到常见的问题

当我们修改完配置文件想要重启redis时,却一直卡例如systemctl restart redis_6379.service可以通过redis的配置文件来启动redisredis-server redis的配置文件路径如果实在不行,可以先把redis的进程关闭,再执行上诉代码查找redis进程,看它对应的端口号:ps -ef | grep redis然后杀死对应端口号的进程kill -s 9 redis的端口号......

2022-01-22 18:25:57 5763

原创 MySql增加一百万数据的存储过程

DELIMITER $$CREATE FUNCTION mock_data()RETURNS INT DETERMINISTICBEGIN DECLARE num INT DEFAULT 1000000; DECLARE i INT DEFAULT 0; WHILE i<num DO INSERT INTO app_user (name, email,phone,gender,password,age) VALUES (CONCAT('用户',i),'[email protected]

2022-01-07 15:40:31 356

原创 解决Redis启动不了 # Creating Server TCP listening socket 127.0.0.1:6379: bind: No error

**解决方案如下按顺序输入如下命令就可以连接成功Redis-cli.exeshutdownexitredis-server.exe redis.windows.conf**

2021-12-16 19:18:21 1447

原创 Redis启动与关闭

安装redis之后在命令行窗口中输入 redis-server redis.windows.conf 启动redis关闭命令行窗口就是关闭 redis。redis作为windows服务启动方式redis-server --service-install redis.windows.conf启动服务:redis-server --service-start停止服务:redis-server --service-stop...

2021-12-16 19:13:57 1869

原创 Java实现归并排序

//合并两个有序表 static void Merge(int[] arr,int low,int mid,int high){ //申请一个辅助数组,长度为当前递归数组长度 int[] temp=new int[high-low+1]; //初始化辅助数组的指针,以及要排序数组的左右两个子表的初始指针 int i=0,p1=low,p2=mid+1; //两个子表指针没有越界 while (p1<

2021-12-09 18:19:06 186

原创 Java实现选择排序算法

简单选择排序//交换数组两个位置的数 static void swap(int[] arr,int i,int j){ int temp; temp=arr[j]; arr[j]=arr[i]; arr[i]=temp; } //简单选择排序算法 static void SimpleSelectSort(int[] arr,int length){ int i,j,min; /

2021-12-09 12:27:17 796

原创 Java实现交换排序

冒泡排序//交换数组两个位置的数 static void swap(int[] arr,int i,int j){ int temp; temp=arr[j]; arr[j]=arr[i]; arr[i]=temp; } static void BubbleSort(int[] arr,int length){ int i,j; //表示本趟冒泡是否发生交换的标志 bo

2021-12-08 16:50:55 772

原创 Java实现插入排序

直接插入排序//直接插入查找 static void InsertSort(int[] arr,int length){ int i,j; //依次将arr[2]~arr[n]插入前面已排序序列 for(i=2;i<=length;i++){ //若arr[i]关键字小于其前驱,则将arr[i]插入有序表 if(arr[i]<arr[i-1]){ //复制为哨

2021-12-08 11:21:05 311

原创 springboot 多环境配置的书写

想要用哪个环境下的配置,就在active中标明要用的环境,如pro但是多个环境放在一起,难免造成数据库密码安全隐患,所以也可以把上面配置分成多个文件,由一个文件来决定用哪个文件的配置properties版...

2021-12-07 18:43:32 548

原创 springboot自定义配置文件

可以写多个配置文件,以最后一个为最高优先级

2021-12-07 18:33:28 149

CodingLabs - MySQL索引背后的数据结构及算法原理_files.7z

CodingLabs - MySQL索引背后的数据结构及算法原理_files.7z

2022-01-08

空空如也

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

TA关注的人

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