- 博客(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
470
原创 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
2883
原创 关于hibernate在实体类增加字段启动项目报错
如果出现这种情况,有可能涉及到hibernate或者mysql的缓存,因为第一次启动失败,mysql或者hibernate已经在数据库添加相应的字段,并生成缓存。然后之后的修改,启动项目也不会成功,因为hibernate会一直访问缓存,所以先要把要增加的字段,在mysql删除后,重新启动项目才可以。...
2022-03-30 20:29:50
1303
1
原创 如何将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
3881
原创 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
2650
原创 关于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
803
原创 Sql 关于如何通过多个id来查询多条数据
select * from t_news where FIND_IN_SET(news_id,‘1,20,3’)
2022-03-14 22:43:35
7772
原创 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
5538
原创 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
211
原创 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
1921
原创 关于idea重新编译compile后,还是无法识别target的本地类
首先把idea的.idea和target手动删除,然后重新编译,如果还不行,就再点击图中的按钮。
2022-03-11 15:43:16
1032
原创 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
476
原创 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
202
原创 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
104
原创 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
7085
原创 若依框架学习(九)关于登录token过期如何处理
在第一节的部分我们也知道登录的流程,但当后台发现redis缓存的登陆实体类过期了,是怎么处理并且怎么给前端发送消息?其实SpringSecurity有一个config配置SecurityConfig类,继承于WebSecurityConfigurerAdapter其中重写了configure()方法,用来自定义过滤和拦截处理红线框就是处理登录token过期,实质上认证失败处理类,只不过token过期是认证失败的一种情况。我们看下这个类做了什么?我们点击紫色的属性通过这个注入的实现类看看@C
2022-02-12 09:44:27
13083
原创 若依框架学习(八)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
2436
1
原创 线程池的拒绝策略CallerRunsPolicy
用于运行被拒绝任务的被拒绝任务的处理程序直接在{@code execute}方法的调用创建线程池的线程中,除非线程池已经关闭,在这种情况下,任务就会被丢弃。
2022-02-11 11:17:20
1142
原创 若依框架学习(七) 异步任务管理器
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
6990
原创 若依框架的学习(六)用户的修改删除
用户信息的修改这里和之前的新增用户一样,也要重置表单,和用户信息查询回滚参数信息过来/** * 根据用户编号获取详细信息 */ @PreAuthorize("@ss.hasPermi('system:user:query')") @GetMapping(value = { "/", "/{userId}" }) public AjaxResult getInfo(@PathVariable(value = "userId", required = fal
2022-02-09 18:24:53
5602
原创 若依框架学习(五)用户的增删改查
点击部门树状图来进行条件查询前端找到对应的页面,按照路由路径里面有个handleNodeClick()点击事件,点进去看看发现是复用了getList()方法,说明后台也是复用相应的方法/** * 获取用户列表 */ //@PreAuthorize在调用方法前先检查有没有权限,通过Service层的@ss.hasPermi()方法来校验 @PreAuthorize("@ss.hasPermi('system:user:list')") @GetMappi
2022-02-08 22:45:46
8388
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
6673
2
原创 springboot下全局异常处理器学习
这是根据若依框架下的学习,在平时做业务时,难免会出现对各种业务的异常进行捕抓和处理/** * 全局异常处理器 * * @author ruoyi */@RestControllerAdvicepublic class GlobalExceptionHandler{ private static final Logger log = LoggerFactory.getLogger(GlobalExceptionHandler.class); /** * 权限校验异
2022-02-08 09:55:17
463
原创 若依框架学习(三)PageHelper
用户数据分页对于如何分页显示用户数据,我们首先找到当前路由地址是:http://localhost/system/user这说明应该在对应的Controller有/system/user,并且有pageNum=1和pageSize=10这两个参数,找到对应的Controller后,往下找就找到了这里先讲下@PreAuthorize注解,这是SpringSecurity的注解,作用是限制对该方法的访问,在访问方法前,会校验目前用户是否有访问该资源,通过@ss的hasPermi()方法来处理,ctr
2022-02-07 22:50:26
3212
1
原创 若依框架学习(二)获取用户角色和权限以及所拥有的路由
获取用户角色和权限若依系统每次跳转某个页面时,都会调用该方法,以检查当前用户是否有权限访问该页面,或者说该页面能基于该用户的角色身份和权限来显示菜单数量。老办法前端用f12网络活动来获取后台请求路径。该方法主要作用是:1,从springsecurity中获取当前登录用户的信息2,根据当前用户信息来查询当前用户的角色集合3,根据当前用户信息来查询当前用户的权限集合4,将以上信息放入AjaxResult返回给前端。springsecurity是如何获取当前用户信息的呢?这里封装了一个安全服务
2022-02-07 17:17:16
12364
1
原创 SpringSecurity学习
AuthenticationManagerAuthenticationManager接口为springsecurity的接口之一,字面意思为认证管理器,该接口负责把将要认证对象进行校验,1.首先检查该账号是否被禁用,如果禁用的话而且该账号能够被检测的话,就抛出DisabledException。2.然后检查该账号是否被锁住,如果被锁住而且该账号能够被检测的话,就抛出LockedException3.如果出现不正确的凭据,则必须抛出{@link BadCredentialsException}。虽然
2022-01-26 20:03:41
2750
原创 若依框架学习(一)基于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
5698
原创 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
6549
原创 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),'734469638@qq.c
2022-01-07 15:40:31
396
原创 解决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
1491
原创 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
1981
原创 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
207
原创 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
837
原创 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
862
原创 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
377
原创 springboot 多环境配置的书写
想要用哪个环境下的配置,就在active中标明要用的环境,如pro但是多个环境放在一起,难免造成数据库密码安全隐患,所以也可以把上面配置分成多个文件,由一个文件来决定用哪个文件的配置properties版...
2021-12-07 18:43:32
571
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人