- 博客(144)
- 收藏
- 关注
原创 jdk安装多个版本,但是java -version显示最早安装的版本,换掉Path或者JAVA_HOME不生效问题
原因:windows电脑装jdk17后 会在你的环境变量当中的path开头 自动加上了 C:\ProgramData\Oracle\Java\javapath;导致你后续如果安装jdk17然后重新配置了JAVA_HOME执行 java -version 还是8的版本,解决方法很简单,显示最早安装的,如下图所示:环境变量配置的17,但是命令行显示的是8。问题一:当你的电脑上又多个jdk版本,如17 或者8时,使用命令行。
2024-05-14 16:10:45
292
2
原创 关于版本号正则表达式中英文符号问题
我所希望的版本号格式为x.x.x其中x是一到两位数1-99,使用.进行分割([1-9]\d|[1-9])(.([1-9]\d|\d)){2}$后来发现,该正则表达式无法区分中文还是英文句号,也就是说1。1。1也是符合以上正则表达式的,但很显然不符合要求。所以,在经过不断的思索和查找后,依旧没有找到,后来不经意看了一眼浮点型数据的合适匹配,得出结论,可以使用小数点,经过改良,得到一下表达式,完美符合我的要求([1-9]\d|[1-9])(\.([1-9]\d|\d)){2}$
2022-09-13 14:46:24
367
1
原创 getOrDefault(Object key, V defaultValue)的作用
// getOrDefault(Object key, V defaultValue)// 这个方法等价于// 首先判断hashMap中是否存在key,如果存在,使用原来的值,如果不存在就赋值if (hashMap.containsKey("key")) { String key= (String) hashMap.get("key"); if (null == key|| "".equals(key)) { key= "
2022-05-09 08:37:43
266
原创 关于IDEA报错 java.lang.NoSuchMethodError: scala.util.matching.Regex.<init>(Ljava/lang/String;Lscala
原因开始学习Spark的时候,遇到这个问题,经过去网上了解,发现是Scala的版本不一样,与本地的版本不同导致的。解决办法首先了解你的Scala的版本,win+r输入cmd,输入指令scala,查看Scala版本了解到Scala的版本之后,回到Idea,找到File ->Project Structure这个选项进入设置之后,找到Global Libraries,点击减号删除当前的Scala-sdk,完成后点击加号,重新加在Scala-sdk,当然版本号就选择你安装的的那个,没有的话就
2022-03-31 15:34:43
2762
原创 包装类与基本数据类型的区别
包装类与基本数据类型的区别首先默认值不同,基本数据类型都有各自的初始值,例如int类型的初始值是0,而包装类的初始值都是一样的,都是NULL存放的位置不同,基本数据类型存放在栈,包装类存放在堆里面包装类有很多的操作方法,例如equals,hashCode之类的,而基本数据类型没有常见重点// 情景一,int与其包装类进行比较,是一直相等的,没有范围要求int i1 = 128;Integer i2 = 128;System.out.println(i1 == i2); // true/
2021-10-12 19:50:55
562
原创 思考long 和 double都是8个字节为什么double范围更大?
System.out.println(Double.MAX_VALUE);System.out.println(Double.MIN_VALUE);System.out.println(Long.MAX_VALUE);System.out.println(Long.MIN_VALUE);// 结果如下1.7976931348623157E3084.9E-3249223372036854775807-9223372036854775808很明显上面的double表示的范围更大,但是我们都
2021-09-30 09:45:13
5838
2
原创 初步深入了解HashSet,HashMap,HashTable
HashSet我们要弄明白hashSet就需要去看它的代码,所以我新建了一个hashSet然后ctrl点了进去,看到了这个 public HashSet() { map = new HashMap<>(); }我们看到hashSet无参的构造函数竟然是个map,但是看到这里,我又有了一个疑问,我们都知道map结构是个键值对即(key,value)格式,而我们在用set的时候只需要输入一个value就可以了,那么问题来了,既然HashSet底层是HashMap,那么
2021-09-18 10:50:37
260
原创 全排列问题
全排列问题给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案(力扣46)输入:nums = [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]我们先进行一个手写那么,我们得到的规律是:以1开头的排列有:[1,2,3] ,[1,3,2]以2开头的排列有:[2,1,3] ,[2,3,1]以3开头的排列有:[3,1,2] ,[3,2,1]简单总结的公式就是// 使用递归回溯方式解决
2021-09-17 11:17:28
179
原创 Redis 了解
凡是学过计算机的,多多少少都听说过Redis,或许有的人也清楚它是一个数据库,但是和关系型数据库不一样,那么它究竟是什么呢?Redis数据库文件链接:https://pan.baidu.com/s/1jOHEca7Q8VjapRRdNFiXqg提取码:q9pq简介非关系型数据库,NoSQL(No: Not Only):redis, mongodb, hbase…存储key,value,可以理解为是一个很大的Map结构如 name:zhangsanage:23数据之间没有关联关系数据时存
2021-09-14 11:41:03
145
原创 并发并向简单理解
并发并行简单区别举例子我们正在洗澡,然后来了个电话,你洗完澡以后才去接电话,这说明你基本支持并发,又不支持并行我们正在洗澡,然后来了个电话,你洗澡洗一半,然后去接电话,电话结束又回来洗澡,这说明,你支持并发。我们正在洗澡,然后来了个电话,你一边洗澡一遍打电话,这说明你支持并行个人总结:并发指的是你具备处理多种事务的能力,但是不一定是同时进行,通俗的来说,你支持事务插队并行指的是你具备同时处理多个任务的能力,通俗的来说,你能够同时干多件事。那么可以理解为并行是并发的一种特殊情况吗?也就是并行是并
2021-09-14 09:52:44
299
原创 MySQL相关问题
MySQL的技术特点是什么MySQL数据库软件是一个客户端或者服务器系统,其中包括:支持各种客户端程序和库的多线程SQL服务器,不同的后端,广泛的应用编程接口和管理工具。Heap表是什么Heap表存在于内存中,用于临时告诉存储,BLOB或TEXT字段是不允许的,只能使用比较运算符 >= , =, >, <, <=, Heap表不支持 Auto_INCREMENT,索引不能为NULL如何控制Heap表的最大尺寸Heap表的大小可以通过称为 max_heap_size的MySQ
2021-09-13 09:23:12
110
原创 Aop简单理解
AOP 面向切面编程事务保证要么同时成功,要么同时失败(失败之后回滚)对事务进行举例就是,张三给李四转账1000元,正常情况是张三账户-1000,李四账户+1000,需要调用两个sql语句进行操作,但是如果张三-1000,系统由于不明原因出错了,导致转账失败,那么,会出现什么结果,张三账户-1000,李四账户不变,平白无故少了1000,就很令人费解,所以,我们需要事务,进行回滚rollback,rollback的作用就是出现上面情况的时候,进行数据回滚,将张三的账户变成原来的样子,用代码举个例子就是下
2021-09-09 11:43:24
243
原创 事务简单理解
事务保证要么同时成功,要么同时失败(失败之后回滚)对事务进行举例就是,张三给李四转账1000元,正常情况是张三账户-1000,李四账户+1000,需要调用两个sql语句进行操作,但是如果张三-1000,系统由于不明原因出错了,导致转账失败,那么,会出现什么结果,张三账户-1000,李四账户不变,平白无故少了1000,就很令人费解,所以,我们需要事务,进行回滚rollback,rollback的作用就是出现上面情况的时候,进行数据回滚,将张三的账户变成原来的样子,用代码举个例子就是下面的private
2021-09-09 11:35:17
71
原创 更改SpringBoot的打印图案
更改SpringBoot的打印图案原理:在resource文件里面创建一个banner.txt文件,并将要打印的图案放进去,再次启动,就成功了举例banner.txt ii. ;9ABH, SA391, .r9GG35&G &#ii13Gh;
2021-09-09 10:35:26
338
原创 快速排序(附带java代码)
快速排序的思路是,设置两个标记(指针),分别指向数组的下标,将第一个元素设置为标记元素,并临时保存为temp,然后两个指针分别往中间走,直到出现左边的比标记元素大(右边的比标记元素小的),就交换left 和right两个标记位置的值,否则左边标记往右移动即left++(右标记向左走即right–),最后到left和right相遇的地方,我们就把标记元素放进去,这个位置就是标记元素的位置,然后我们将这个数组分割成了两部分(只要标记元素不是最大值,或者最小值,当然,如果是也没有问题,我们进行这步的关键就是确定一
2021-09-07 09:06:05
120
原创 Spring IOC简单理解
spring框架控制反转(Inversion on Control)在spring框架里面,一般交给Spring容器,这叫控制反转什么是控制反转呢?先来说一下控制正转,class Demo{ Student student = new Student();}简单地来说就是自己去创建对象,需要什么对象,就创建什么对象,实在当前文件中创建出来的,自己new出来的,这就叫做“控制正转”那么控制反转是什么:就是跟控制正转反着来,就是我需要的对象,我不需要自己new创建出来,我只需要到一个地
2021-09-06 20:21:09
145
原创 力扣704.二分查找
力扣704.二分查找(简单)给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。标准的二分查找,每次去中间的数比较,如果比中间的数大,就递归判断中间数的右边的,如果比中间的数小,就递归判断数的左边。class Solution { public int search(int[] nums, int target) { int left = 0;
2021-09-06 11:00:53
132
原创 希尔排序(ShellSort)
import java.util.Arrays;// 希尔排序public class ShellSort { public static void main(String[] args) { int[] arr = {3, 44, 38, 5, 47, 15, 36, 26, 27, 2, 46, 4, 19, 50, 48}; int length = arr.length; int temp; // 希尔排序首先是分.
2021-09-02 09:09:58
91
原创 查看当前路径是否是你想象中的绝对路径
我的绝对路径为什么和你们的不一样为什么前面一样的操作,照着视频写的路径,创建的文件,到这里,我的路径就不行了呢?那么,请你看看,你的绝对路径定位在哪里?看看这个working directory是否是当前项目或者Modul。...
2021-08-26 14:26:31
108
原创 字符串的匹配(暴力匹配,KMP)
暴力匹配法如果是用暴力匹配的思路,并假设现在str1匹配到i位置,子串str2匹配到j位置,则有:入股当前字符匹配成功(即str1[i] == str2[j]),则i++, j++,继续匹配下一个字符如果失配(即str1[i] != str2[j]),令i= i - (j - 1), j = 0; 相当于每次匹配失败时,i回溯,j被置为0用暴力方法解决的话就会有大量的回溯,每次只移动一位,若是不匹配,移动到下一位接着判断,浪费大量时间暴力匹配算法实现package KMP;// 暴力匹配算
2021-08-26 09:42:04
157
原创 关于继承Thread和实现Runable的区别,谈谈个人理解
关于继承Thread和实现Runable的区别,谈谈个人理解下面是使用继承Thread的代码,运行的结果是总共卖出了15张票(本应该卖出5张票),那么原因是什么,我的个人理解是,我使用了三个对象,每个对象都有各自的计数器,所以就是三倍的票。public class TicketThread extends Thread{ private int num = 5; @Override public void run() { for (int i = 0; i &l
2021-08-24 10:57:00
151
原创 IO流笔记常用实例
IO:Input Output流的概念和作用流是一组顺序的,有起点和终点的字节集合,是对数据传输的总成或抽象,即数据在两设备间传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。IO流的分类根据 处理的数据类型不同可以分为:字符流和字节流根据数据的流向可以分为:输入流和输出流什么情况下使用字符流:如果读写的都是字符数据,这时候我们就使用字符流。文本文件。什么情况使用字节流: 读取到数据不需要经过编码或者解码的情况情况下这时候使用字节流。比如:图片数据
2021-08-23 19:25:12
167
原创 IDEA插件个人推荐一(暂定有后续)
前言插件只能提高编程效率,并不能够提高水平,所以凡是都要脚踏实地。插件只能锦上添花,不能让人一飞冲天。后续如果还有推荐的话,还会进行更新。lombox这个插件对于实体类的效率可是提高太多了,平时我们写实体类,我们要写get和set方法吧,还要写toString()方法吧,虽然有快捷键,能够快速创建出来,但是创建出来的代码又臭又长,很不美观,现在给大家推荐这个插件,原来的get和set方法变成了注释,toString也变成了注释,能够提高代码的可读性。先放一个使用不适用lombox的代码packa
2021-08-21 15:33:32
86
原创 常用到的正则表达式
正则表达式:\d 匹配一个数字字符。等价于 [0-9]。\D 匹配一个非数字字符。等价于 [^0-9]。\f 匹配一个换页符。等价于 \x0c 和 \cL。\n 匹配一个换行符。等价于 \x0a 和 \cJ。\r 匹配一个回车符。等价于 \x0d 和 \cM。\s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。\S 匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。\t
2021-08-21 11:16:00
47
原创 EL表达式与jsp原生代码区别例子
<%@ page import="entity.Student" %><%@ page import="java.util.List" %><%@ page import="java.util.ArrayList" %><%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head> <title>Title</
2021-08-21 11:11:22
112
原创 AJAX入门
JSON想要学习ajax,除了要会html,jQuery,javaScript(能够简单使用,或者看懂简单地代码就可以了),我们还要了解什么是JSON。JSON是一种数据结构,对于AJAX来说十分重要,是JavaScript Object Notation缩写,是一种轻量级的数据交换格式,你可以把他理解成同一首歌,你的格式是mp3, 而其他人的格式 m4a格式,是用来存储数据的一种形式特点是:易于程序员阅读和理解易于计算机解析和生成其实是JavaScript的子集,原生JavaScript支持
2021-08-20 20:13:50
96
原创 过滤器浅谈
过滤器过滤器是什么,为什么需要用过滤器过滤器就是它的字面意思,它能够对任何非法请求进行拦截。举个例子来说,就是你去银行取钱不能够不登录账号就直接进入到取钱页面,这是为什么呢?原因是你直接访问取钱页面的请求被过滤器拦截了。有人可能就问了,不就是个判断吗,直接在取钱页面直接加上就好了,效果是一样的。不可否认,说的很对,但是,如果我要是有100个不同的页面请求呢,咬咬牙也能加,要是有1万个呢,过滤器的创建方便以外,其实你想想每个页面都加,会增加多少代码量呢?为了减轻负担,活用我们四大特性之一抽象,我们就把它
2021-08-20 19:33:52
218
转载 初入分布式
事务是什么?事务定义:是数据操作的最小工作单元,是作为单个逻辑工作单元执行的一些列操作。这些操作作为一个整体向系统提交,要么都执行,要么都不执行;事务是一组不可分割的操作集合(工作逻辑单元),是访问并可能更新数据库中各种数据项的一个程序执行单元事务组成:一个数据库事务通常包括对数据库进行 读或 写的一个操作序列(单独的sql语句并不能够称为事务,它必须是一个操作序列,那才能称为事务)目的:为数据库操作提供了一个从失败中恢复到正常状态的方法,同时提供了数据库即使在异常状态下仍能保持一致性(包括数据一
2021-08-20 17:25:32
49
原创 Invocation failed Server returned invalid Response.
问题关于git码云提交的时候连接超时的问题我的解决方案加长连接时间
2021-08-19 09:07:50
255
原创 当jQuery的gt(索引值)或lt(索引值)把索引变成负数时,会出现什么情况(脑洞大开)
jQuery 筛选选择器前言突发奇想,忽然想到jQuery里面的gt()方法和lt()方法,它们里面都是填索引值,我就在想,它们的索引值如果是负数的话会怎么办,下列代码中我对其进行了尝试并进行了个人解释。gt()方法,great than的简写,意思是找到下标比索引值要大的值,但是如果是负数的话,需要分情况,当这个负数小于你要找的 标签的个数 或者 下标数+1 的话,他会自动 不上一个表格个数(长度length),就好像下面代码中 -1 相当于 8 (选中的li标签的个数) + (-1)(前面的负数)
2021-08-18 20:07:13
389
原创 动态规划(背包问题)
16. 动态规划16.1 应用场景背包问题,有一个背包,容量为4磅,现有如下物品物品重量价格吉他(G)11500音响(S)43000电脑(L)32000要求 讲物品装入背包,在不超出容量的情况下使背包的总价值最大要求装入的物品不能重复16.2动态规划算法介绍动态规划(Dynamic Programming)算法的核心思想是:讲大问题划分为小问题,进行解决,从而进一步获取最优解得处理算法动态规划算法与分治算法类似,其基本思想也是讲待求解
2021-08-18 16:32:42
5300
原创 分治算法(经典汉诺塔)
15. 分治算法(Divide-and-Conquer§)15.1 分治算法介绍:分治算法是一种很重要的算法,字面解释就是“分而治之”,就是把一个复杂的问题分成两个或更多享用或相似的子问题,再把子问题分成更小的子问题…知道最后子问题可以简单地直接求解,原问题的解即子问题的解得合并。这个技巧是很多高效算法的基础,如排序算法(快速排序,归并排序),傅里叶变换(快速傅里叶变换)分治算法可以求解答一些经典问题二分搜索大整数乘法棋盘覆盖归并排序快速排序线性时间选择最接近点问题循环赛日程表汉
2021-08-18 13:43:03
182
原创 广度优先遍历(Broad First Search)
14.2.2 广度优先遍历(Broad First Search)广度优先遍历:图的广度有限搜索(Broad First Search)类似于一个分层搜索的过程,广度优先遍历需要使用一个队列以保持访问过的节点的顺序,以便按这个顺序来访问这些结果的邻接节点。广度优先遍历算法步骤访问初始节点v并标记节点v为已访问节点v入队列当队列费控时,继续执行,否则对于v节点算法结束出队列,取得队头节点u。查找节点u的第一个邻接节点w。若节点u的邻接节点w不存在,则转到步骤3;否则循环执行以下三个步骤:
2021-08-17 20:47:59
938
原创 使用ParepareStatement就可以防止SQL注入了吗
使用RrepareStatement真的能够防止sql注入吗原理参考大佬的博客之所以PreparedStatement能防止注入,是因为它把单引号转义了,变成了\',这样一来,就无法截断SQL语句,进而无法拼接SQL语句,基本上没有办法注入了,另外,虽然PrepareStatement可以转义单引号但是不能转义%百分号,所以在模糊查询的时候可能会出现消耗资源的问题...
2021-08-17 18:55:42
215
原创 图的深度优先遍历(Depth First Search)
14.2.1 深度优先遍历(Depth First Search)深度优先遍历,从初始访问节点出发,初始访问节点可能有多个邻接节点,深度优先遍历的策略就是首先访问第一个邻接节点,然后再以这个被访问的邻接节点作为初始节点,反问他的第一个邻接节点,可以这样理解: 每次都在访问完当前节点后首先访问当前节点的第一个邻接节点。我们可以看到,这样的访问策略是优先往纵向挖掘深入,而不是对一个节点的所有邻接节点进行横向访问显然深度有限搜索时一个递归的过程深度优先遍历算法步骤访问初始节点V,并标记节点V已访问
2021-08-16 21:45:01
1055
原创 平衡二叉树
13.8 平衡二叉树如果给定一个数列{1, 2, 3, 4, 5, 6}, 我们生成二叉排序树的话,我们不难看出来,所有结点都是其父节点的右子节点,就像一条链表一样,那样,我们的查询效率将受到影响,甚至不如链表(因为我们要额外判断左子节点是否为空)基本介绍:平衡二叉树也叫平衡二叉搜索树(Self-balancing binary search tree) 又被称为 AVL树,可以保证 查询效率特点是:他是一棵空树或者它的做哟两个字数的高度的绝对值不超过1,并且左右两个字数都是一个平衡二叉树。平衡二
2021-08-14 11:38:14
66
原创 二叉排序树创建和中序遍历(因为中序刚好是有序的)
二叉排序树介绍:BST(Binary Sort(Search) Tree),对于二叉排序树的任何一个非叶子节点,要求左子节点的值比当前结点的值小,右子节点的值比当前节点的值大。 如果相同:则可以将该节点的放在左子节点或右子节点上13.7.1 二叉树的创建和遍历:package binarysorttree;public class BinarySortTreeDemo { public static void main(String[] args) { int[] arr
2021-08-13 19:53:09
189
原创 二叉排序树删除
13.7.2 二叉排序树的删除二叉排序树情况分为三种:删除叶子节点需要先找到要删除的节点 targetNode找到targetNode的父节点 parent确定 targetNode 是 parent的左子节点还是右子节点根据前面的情况来对应删除左子节点:parent.left = null右子节点:parent.right = null删除只有一棵子树的节点需要先找到要删除的节点 targetNode找到targetNode的父节点 parent确定 targetN
2021-08-13 19:50:59
208
原创 赫夫曼解压缩
13.6 赫夫曼编码解码思路:将 huffmanCodeBytes[]重新转成 赫夫曼编码对应的二进制对应的字符串‘1010100010111…’将赫夫曼编码对应的二进制字符串‘1010100010111…’ 对照 赫夫曼编码 重新生成i like like like java dot you like a javapackage huffmancode;import java.util.*;public class HuffmanCode { public static vo
2021-08-13 09:18:34
60
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人