自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 数据结构概述

总结:1、数据结构就是数据与数据之间的关系2、数组是最基础、最常用的数据结构。很多数据结构的底层都是基于数组做的常用数据结构类别特点数组1、在内存中的存储空间是连续分配的2、遍历速度快3、按照索引查询速度快4、无法扩容5、存储类型单一6、增、删操作效率低栈1、线性表2、只可以在栈顶进行操作3、先入后出(类似于叠盘子,永远拿到的都是最后放上去的盘子)队列1、线性表2、先入先出(类似于排队)链表1、非连续性存储结构2、元素中包含上一个或下一个元素的内存地址3

2020-11-26 16:17:19 131

原创 java中的值传递和引用传递

java中的值传递和引用传递到底是怎么回事总结:java中只存在值传递什么是值传递?值传递(pass by value)是指在调用函数时将实际参数复制一份传递到函数(方法)中,这样在函数中如果对参数进行修改,将不会影响到实际参数。什么是引用传递引用传递(pass by reference)是指在调用函数时将实际参数的地址直接传递到函数(方法)中,那么在函数中对参数所进行的修改,将影响到实际参数。值传递和引用传递的区别重点来了,为什么值传递不会影响到实际参数,而引用传递会影响到实际参数?其实这就

2020-11-24 16:23:48 141 3

原创 在JAVA中如何删除ZIP等等的压缩文件

因为自己在项目中遇到了无法删除压缩文件的问题,所以当时很费解,为什么压缩文件无法被删除呢,后来经过检查之后发现是因为有文件流没有被关闭导致的,所以只要涉及到IO操作,最后一定要记得关闭流。

2024-01-31 23:52:41 502 1

原创 关于接口返回的数据,每次顺序都不一致的问题

在默认情况下,如果排序字段包含 NULL 值,MySQL 会将 NULL 值视为最小值,并将其排在所有非 NULL 值的前面,如果使用 DESC 排序,NULL 值会被视为最大值,排在所有非 NULL 值的后面。这是因为在 SQL 标准中,NULL 值被视为未知值,无法进行比较大小的操作。因此,MySQL 在排序过程中无法确定 NULL 值与其他非 NULL 值之间的大小关系,从而无法正确排序。在 MySQL 中,当排序字段包含 NULL 值时,排序结果的顺序可能会出现不确定的情况,即顺序会乱。

2023-04-26 10:34:52 1047 1

原创 关于Redis集群模式下,使用mget通过keys批量获取value时的解决方案

redis 集群 mget获取失败

2023-03-29 10:45:12 1450 2

原创 VUE项目启动流程

VUE启动流程

2022-12-12 11:17:05 291

原创 org.apache.ibatis.binding.BindingException: Invalid bound statement

org.apache.ibatis.binding.BindingException: Invalid bound statement

2022-07-21 10:38:52 740

原创 java: JPS incremental annotation processing is disabled.解决方案

java: JPS incremental annotation processing is disabled.解决方案

2022-07-12 10:27:27 10023 2

原创 @Validated中的分组Group实战使用心得

在日常开发中,经常会对参数的格式进行校验,所以我们常用的就是基于标准实现的,通常是要用的格式包含:邮件格式、字符串判空等等,但是有时候创建和编辑中所涉及的属性基本上都一样,除了编辑可能包含主键ID之外,基本没有差别,通常情况下,我们应该将分成两个对象接收处理,但是有时候会想偷懒,就想着使用同一个对象,但是这就这涉及到了参数验证的问题,比如只有在编辑的时候,主键ID才是不可为空的,而创建的时候,主键ID是交给数据库自动生成的,因此这里就需要使用到分组这个概念,按照这种思路,我们先把代码写出来:版本一:我们会

2022-06-07 14:08:46 5015

原创 `Mysql`配置成`Windows`服务流程

从官网下载免安装版的最新版本为配置好环境变量以管理员身份运行

2022-06-06 09:19:53 93

原创 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)

今天启动项目,发现报错org.apache.ibatis.binding.BindingException: Invalid bound statement (not found),阅读相关资料,发现自己的配置并没有任何问题,通过和同事交流,发现将项目重新打包编译就解决了,暂时不知道为啥,但是记录一下,如果有同学出现类似问题,而配置都是OK的话,那不妨试试我的这个方法...

2022-05-31 08:54:53 352

原创 记一次测试环境坑点

使用jenkins构建java项目时,新加入的代码始终不生效,并且通过反复确认,jenkins打包构建已经成功,形成了新的jar包,但是执行shell命令停止原来的服务,然后重启服务后,新加入的代码依旧失效。通过3小时排查,最终发现,原来是同一个服务由于反复启动,导致同时存在多个进程,因此使用kill命令杀死当前服务的所有进程,然后重新启动该服务即可,代码最终生效...

2022-05-11 18:06:18 174

原创 都java1.8了,你还不会遍历`List`时移除元素吗?

1.8之前,如何在遍历List的同时移除元素?没错,就是使用 Iterator迭代器List<String> list = new ArrayList<>();list.add("add");list.add("remove");Iterator<String> iterator = list.iterator();String condition = "remove";while (iterator.hasNext()) { String next

2022-04-24 10:07:27 998

原创 Mysql配置成Windows服务流程

Mysql配置成Windows服务流程从Mysql官网下载免安装版的最新版本为Mysql配置好环境变量以管理员身份运行cmdmysqld --remove # 移除以前残留的服务信息mysqld --install # 安装mysql服务mysqld -- initialize # 初始化mysqlnet start mysql # 启动mysql服务net stop mysql # 停止mysql服务执行net start mysql时,如果提示**MySQL服务正在启动

2022-04-08 09:23:13 1242

原创 项目启动报错,内存outofmemory

项目启动报错:error:java: java.lang.outofmemory error: gc overhead limit exceeded解决方案:将编译时的内存调大

2021-12-01 10:03:48 192

原创 项目DTO规范

任意一项新功能添加,对应功能的DTO必须包含基本的5个DTO:命名规范说明XXXCreateDto对应创建功能XXXEditDto对应编辑功能XXXIdDto对应查询、删除等等功能XXXIdsDto对应查询、删除等等功能XXXQueryPageDto对应分页查询功能...

2021-11-26 10:33:46 991

原创 Lombok boolean 属性没有get、set方法

场景:使用Lombok时,发现对于boolean的属性以isXXX开头时,会导致Lombok不会为该属性生成getXXX和setXXX方法,这是由于Lombok特性所致,具体原因可以见其官网说明。解决方案:使用包装类型即可Boolean...

2021-11-23 15:28:52 3105

原创 day 1 两数之和 IV - 输入 BST

两数之和 IV - 输入 BST要求:给定一个二叉搜索树 root 和一个目标结果 k,如果 BST 中存在两个元素且它们的和等于给定的目标结果,则返回 true。代码:/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode.

2021-11-18 16:21:14 57

原创 day 1

leetcode 637. 二叉树的层平均值要求:给定一个非空二叉树, 返回一个由每层节点平均值组成的数组。备注:就是看了题解才做的,不过,也记住了一个套路,但凡是要计算树的每一层节点的平均值直接套一下这个框架就行了思路:平均值 = 所有节点值的总和 / 节点的个数,而解决该题最好的遍历方式就是层序遍历,代码如下: public List<Double> getAvgArray(TreeNode root){ List<Double> result = new Array

2021-11-18 15:40:47 302

原创 注解成员类型范围

基本数据类型String类型枚举注解Class类型上述类型的数组类型如果注解成员非以上类型,则IDE会报:invalid type for annotation member

2021-11-11 15:26:36 928

原创 正式环境下,excel导出异常

场景:正式环境excel导出异常,0秒就导出成功,excel字节数为0KB测试环境下,excel导出正常代码历史比对完全一致解决方案:通过比对代码,发现代码历史版本并无改动,无意间听到系统日志打印,导致服务器磁盘已经满了,从而导致了没有多余的空间进行IO操作,所以导致了该问题的出现...

2021-11-10 10:19:14 1147

原创 评论功能-数据库设计思想

数据库DDL:-- auto-generated definitioncreate table comment( id int auto_increment comment '主键id' primary key, news_id int not null comment '新闻ID', user_id int

2021-08-17 09:40:56 777

原创 shell入门一

shell1、位置参数变量位置参数变量作用$nn代表数字nn代表数字,$0代表命令本身,$1~$9代表第一个参数到第九个参数,十以上的参数需要使用大括号表示:${10}、${11}$*这个变量代表命令行中的所有参数,$*把所有的参数看做一个整体【不包含命令本身】$@这个变量也代表命令行的所有参数,但是$@把每个参数作为一个整体看待【不包含命令本身】$#这个变量代表命令行中所有参数的个数【不包含命令本身】test.shecho $0echo $1e

2021-08-16 08:50:48 60

原创 清除git某个分支的提交记录信息

清除git某个分支的提交记录信息场景:dev分支提交的信息中不小心带入了敏感信息,需要清除掉提交记录,同时不能影响其他人继续向dev分支做操作(操作完之后,还是要保留dev分支)解决方案:1、新建分支2、将Dev分支中的所有文件加入到新分支3、删除原dev分支4、将新分支更名为dev或额外从新分支中抽离一个分支命名为新dev分支# 新建分支$ gti checkout --orphan new# 将被删除分支的所有文件加入到当前新分支中$ git add -A# 提交新分支$ g

2021-08-10 16:07:34 2539

原创 Linux环境下搭建MongoDB

Linux环境下搭建MongoDBMongoDB企业版官方下载地址,下载版本:说明选择VersionMongodb版本最新版本(5.0.1)Platform 运行平台CentOS 7.0Package打包形式taz使用远程工具登录Linux系统后, 将Mongodb压缩文件上传到/usr/local目录下解压缩cd /usr/localtar -zxvf 压缩包名称将解压好的mongodb文件名修改为mongodb-server【看个人喜好,可以不做

2021-07-26 09:57:52 1004

原创 mybatis-plus自动填充功能

官方推荐写法:@Slf4j@Componentpublic class MyMetaObjectHandler implements MetaObjectHandler { @Override public void insertFill(MetaObject metaObject) { log.info("start insert fill ...."); this.strictInsertFill(metaObject, "createTime",

2021-07-13 11:34:23 305

原创 lombok @Singular

在lombok日常使用场景中,总会碰到对象中包含集合的情况,这种情况下,我们对于对象中集合的赋值就需要像其他属性一样使用set方法进行赋值操作:@Data@Builderclass Student{ private String name; private List<String> skills;}builder源码剖析:public static class StudentBuilder { // 省略其他部分 public Student.Studen

2021-07-12 11:38:30 1560

原创 lombok @RequiredArgsConstructor注解解析

关于lombok,常用的方法已经烂大街了,今天挖掘点不一样的。在项目中,当我们某个类的属性过多时,如果使用构造方法创建对象那将是一件很恐怖的事情,我甚至不知道每个参数对应的是什么意思,因此最常规的解决手段是按需添加一个初始化对象的静态方法,由于不是所有的属性都需要自定义,因此,这个方法就比较人性化,也让代码更加易于理解和使用:class Car{ private String origin = "德国"; private String model; private Car

2021-07-12 10:41:16 16185 3

原创 java 位运算总结

说明:位运算全部都是针对二进制进行操作的位运算符操作数个数说明&至少2个同为1,才为1|至少2个有一个为1,就为1^至少2个相同则为0,否则为1~至少1个1则变成0,0则变成1...

2021-06-28 11:16:10 52

原创 JAVA 命名规范

包名:包名的命名应该是层次状的,使用.分割,每个部分都可以使用小写字母和数字,一般按照组织的域名倒序类名 & 接口名:首字母大写,尽量避免缩写,如果是通用的缩写形式则可以例外使用。类名包含多个单词时,每个单词首字母都要大写类成员属性 & 类成员函数 & 静态成员函数:使用驼峰命名法静态成员属性:字母全部大写,属性名包含多个单词时,用_分割...

2021-06-25 10:15:09 43

原创 泛型参数描述

字母类型T任意类型E集合的元素类型K & V映射的键和值X异常T、U、V任意类型的序列

2021-06-25 10:04:53 40

原创 深入理解java枚举

enum ComputeEnum{ PLUS("加"){ @Override public Long compute(Long a, Long b){ if (a == null || b == null){ throw new NullPointerException(); } return a + b; } }, SUBTRAC

2021-06-23 11:53:19 72

原创 mysql返回值值异常报错

异常报错:org.apache.ibatis.binding.BindingException: Mapper method 'XXXMapper.XXXMethod attempted' to return null from a method with a primitive return type (int)SQL语句:<select id = "XXXMethod" resultType = "int"> select id from emp where emp_name =

2021-06-21 14:23:35 351

原创 项目上线,读取项目本地文件`txt`失败记录

服务器环境:Linux项目编程语言:java项目类型:jar问题描述:项目打包成jar包后上到测试环境服务器,读取项目本地资源文件频繁报错:File Not Found 或 File Not Exists排查细节:由于本地资源文件是txt文件,所以直接使用了HuTool的FileReader工具类对项目中的文件进行读取,不出意外,报错文件找不到,切换其他的File工具类继续读取,还是继续报同样的错,最后通过查询资料了解到,当java项目打包成jar包时,jar包内的文件时无法使用文件流进行读取的,必

2021-06-18 17:23:43 143

原创 java中的lambda表达式

lambda表达式在java1.8中,更新了很多特性,其中最常用的要属于lambda表达式,但是首次接触lambda表达式的人可能对于lambda的语法可能会很疑惑或者不知道怎么去编写一个lambda表达式,这次就和大家分享一下关于个人在工作中使用lambda表达式的一些个人经验。Talk is cheap, show me the code以前的写法:interface Tools{ void toDo(String thing);}public class Demo {

2021-06-05 13:31:09 259

原创 记一次线上项目mysql 时区错乱问题

记一次线上项目mysql 时区错乱问题有一次线上项目做数据操作时,发现时区对不上,通过项目的DEBUG跟踪调试发现,项目代码中的时间正常的,但是一旦存储到数据库时,就出现了八个小时的时差问题,排查也是费了好大劲才解决问题,下面是解决方案:1、数据库连接中添加属性serverTimeZone=Asia/Shanghai,设置使用时区为东八区/* serverTimezone可以设置为北京时间GMT%2B8、上海时间Asia/Shanghai或者香港时间Hongkong */url: jdbc:mysq

2021-04-30 16:17:37 161 1

原创 Mybatis Plus 中 Wrappers使用的坑点

Mybatis Plus 中 Wrappers使用的坑点// 假设param对象中存在一个list集合,如果list集合不为空是时,取list集合最后一条的数据作为条件public void test(Param param){ LambdaQueryWrapper<TeacherModel> wrapper = Wrappers.lambdaQuery(); wrapper.eq(collUtil.isNotEmpty(param.getList()), Entity::c

2021-04-28 18:30:46 3740 2

原创 bool初试

bool#include <iostream>int main() { while (true) { int a; std::cout << "enter a number:"; std::cin >> a; if (a) // 只有a为0时,才是false { std::cout << "a is " << a << " and condition is true" << std::en

2021-04-25 15:58:45 42

原创 C++构造函数深入理解

C++构造函数深入理解#include <iostream>class Example {public: int x, y; Example(int x, int y) :x(x), y(y) { std::cout << "normal constructor" << std::endl; } Example(const Example& ex) : x(ex.x), y(ex.y) { std::cout << "cop

2021-04-25 15:31:41 66

原创 java lambda指定返回集合

java lambda指定返回集合需求:去重并且最后的展示顺序是:4 5 1 2 3方案一、直接使用hashSet去重@Testpublic void testLambdaCollectors(){ ArrayList<Integer> list = Lists.newArrayList(4,4,5,5,1, 1, 2, 2, 3, 3, 3, 3); Set<Integer> set = list.stream().collect(Collectors.to

2021-04-23 11:47:02 1130

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