- 博客(50)
- 收藏
- 关注
原创 项目中的MD5、盐值加密
1. md5简介md5的全称是md5信息摘要算法(英文:MD5 Message-Digest Algorithm ),一种被广泛使用的密码散列函数,可以产生一个128位(16字节,1字节8位)的散列值(常见的是用32位的16进制表示,比如:0caa3b23b8da53f9e4e041d95dc8fa2c),用于确保信息传输的完整一致。2. md5原理md5将整个文件当做一个大文本信息,通过不可逆的字符串变换算法,产生一个唯一的MD5信息摘要。
2023-03-03 23:18:43
3649
3
原创 Exception in thread “main“ java.lang.NoClassDefFoundError
验证继承情况下子类创建对象时,先调用父类的构造方法,再调用子类的构造方法。
2022-12-22 22:00:30
7146
原创 秒懂数据结构之Map _ Set ,竟如此简单
TreeMap:基于二分搜索平衡树(红黑树的实现) TreeSet 元素的添加和更新操作都是同一个方法, 将键值对key和value保存到当前的Map集合中 HashMap部分: key和value可以为null,key值唯一,只能存在一个null值的key TreeMap部分:key不可为空,value可为空,元素的添加顺序也为乱序(在TreeMap中key不可为空,且k
2022-12-04 22:58:16
1316
10
原创 HTTP状态 404 - 未找到-源服务器未能找到目标资源的表示或者是不愿公开一个已经存在的资源表示。“的一种解决方法
tomcat启动:源服务器未能找到目标资源的表示或者是不愿公开一个已经存在的资源表示。已解决 - ai石桥 - 博客园 (cnblogs.com)
2022-10-25 16:19:17
1664
1
原创 Mismatched property value (<length-percentage>{1,4} [/ <length-percentage>{1,4}]? .....报错
我的idea版本是2021.3.2报错的原因在于我把c3p0-config.xml 放在了src目录下,把其放在src的resource目录下即可
2022-10-24 20:58:08
1796
原创 内存以及垃圾回收
5、终结器引用无需手动编码,但其内部配合引用队列使用,在垃圾回收时,终结器引用入队(被引用对象暂时没有被回收,再由finalizer线程通过终结器引用找到被引用对象,并调用它的finalize方法,第二次Gc时才能回收被引用对象)必须配合引用队列来使用,主要配合ByteBuffer使用,被引用对象回收时,会将虚引用入列,由Reference Handler线程调用虚引用相关方法释放直接内存。仅有软引用 引用该对象时,在垃圾回收后,内存仍不足时会再次出现垃圾回收,回收软引用对象。
2022-10-21 16:10:13
506
原创 JVM系列一
在运行时数据区所包含的几块内存空间中,方法区和堆是线程之间共享的内存区域,而虚拟机栈、本地方法栈、程序计数器则是线程私有的区域,就是说每个线程都有自己的这个区域。3. 当程序运行时,JVM需要内存来存储许多内容,例如:字节码、对象、参数、返回值、局部变量、运算的中间结果,等等,JVM会把这些东西都存储到运行时数据区中,以便于管理。(1)与类的结构相关的一些信息(成员变量、方法数据、成员方法、构造器方法、特殊方法:类的构造器 运行时常量池)如果方法内局部变量没有逃离方法的作用访问,他是线程安全的。
2022-10-21 15:40:21
354
原创 常见算法的Api(Arrays)
copyOfRange:拷贝数组(指定范围,包头不包尾)copyOf:拷贝数组(指定范围)sort:排序 (底层使用的是快速排序)默认情况下给基本数据类型进行升序排列。需要倒序遍历(降序)时。
2022-10-04 18:44:37
385
原创 常见的算法
数据必须是有序的,如果数据是乱的,先排序后再用二分查找得到的索引没有实际意义,只能确定当前数字在数组中是否存在,因为排序之后数字的位置就可能就发生变化了。将0索引的元素到N索引的元素看作是有序的,把N+1索引的元素到最后一个当成无序的,遍历无序的数据(从0索引开始,拿着每一个索引上的元素跟后面的元素依次比较,小的放前面,大的放后面。(3)如果要查找的元素在mid的左边,缩小范围时,min不变,max-1。),将遍历到的数据插入到有序序列中合适的位置,如遇相同的数据,插在后面。
2022-10-04 18:21:19
222
原创 Map集合
实际上:Set系列集合的底层就是Map实现的,只是Set集合中的元素只要键数据,不需要值数据而已。(1)HashMap是Map里面的一个实现类,特点都是由键决定的,无序、不重复、无索引。1、HashMap:元素按照键是无序,不重复,无索引,值不做要求(与Map体系一致)2、LinkedHashMap:元素按照键是有序的,不重复的,无索引的,值不做要求。2、Map集合的键时无序的,不重复的,无索引的,值不做要求(可重复)3、TreeMap:元素按照键是排序的,不重复的,无索引的。
2022-10-01 16:28:32
3500
2
原创 Set系列集合
3>判断当前位置是否为null,如果是null直接存入,如果位置不为null,表示有元素,则调用equals方法比价属性值,如果一样则不存,如果不一样,则存入数组。(1)HashSet元素的底层原理:HashSet集合底层采取哈希表存储的数据,哈希表是一种对于增删改查数据性能都较好的结构。(1)让自定义的类(如学生)实现Comparable 接口,重写里面的CompareTo方法来定制比较规则。(3)哈希值: 是JDK根据对象的地址,按照某种规则算出来的int类型的数值。
2022-09-30 11:04:56
299
原创 List集合
原文链接:https://blog.youkuaiyun.com/m0_65725031/article/details/125483564。ArrayList LinkedList :有序、可重复、有索引。有序:存储和取出的元素顺序一致。有索引:可以通过索引操作元素。可重复:存储的元素可重复。
2022-09-30 10:38:15
108
原创 常见的数据结构
1>红黑树是一种自平衡的二叉查找树,是计算机科学中用到的一张数据结构,1972年被发现,当时被称之为平衡二叉树B树,1978年又称为红黑树。平衡二叉树的要求:任意节点的左右两个子树的高度差不超过一,任意节点的左右两个子树都是一颗平衡二叉树。节点的度:节点拥有的子树的个数,二叉树的度不大于2,叶子节点度为0的节点也称为终端节点。高度:叶子节点的高度为1,叶子节点的父节点高度为2,以此类推,根节点的高度最高。链表中的元素是游离存储的,每个元素节点包含数据值和下一个元素的地址。
2022-09-30 10:24:41
174
原创 迭代器概述
3>实现Iterable 接口的类才可以使用迭代器和增强for,Collection已经实现了Iterable接口。它是JDK5之后出现的,其内部原理是一个Iterator迭代器,遍历集合相当于是迭代器的简化写法。Iteratoriterator() : 得到迭代器对象,默认指向当前集合的索引0。迭代器在java中的代表是Iterator , 迭代器是集合的专用遍历方式。遍历是一个个的把容器的元素访问一遍。4.集合存储的是对象的地址。
2022-09-29 21:16:45
240
原创 集合的概述
(3)数组适合的场景:当业务数据的个数是固定的,且都是同一批数据类型的时候,可以采取数组存储。注意:集合和泛型都只能支持引用数据类型,不支持基本数据类型,所以集合中存储的元素都认为是对象。(2)集合对于泛型的支持:集合都是支持泛型的,可以在编译阶段约束集合只能操作某种数据类型。(2)在进行增删数据操作的时候,数组是不太合适的,增删数据都需要放弃原有数组或者移位。(2)集合的大小不固定,启动后可以动态变化,类型也可以选择不确定。(4)集合适合的场景:数据的个数不确定,需要进行增删操作的时候。
2022-09-29 21:08:50
116
原创 数据结构篇
hashCode和equals方法继承自根类Object,如果你用自定义的类当作key的话,要相当小心,按照散列函数的定义,如果两个对象相同,即obj1.equals(obj2)=true,则它们的hashCode必须相同,但如果两个对象不同,则它们的hashCode不一定不同,如果两个不同对象的hashCode相同,这种现象称为冲突,冲突会导致操作哈希表的时间开销增大,所以尽量定义好的hashCode()方法,能加快哈希表的操作。这个类中的一些方法保证了Vector中的对象是线程安全的。
2022-09-08 11:21:09
83
原创 笔试题总结——包装类Integer的“天坑”
true(i1自动装箱后由于值在-128——127,因此会被Java放在Integer常量池中,而i3再次赋值时会直接从常量池中取得,因此从与i1的地址就是相同的)1、在-128——127之间的赋值,Integer对象在Integer常量池中产生,会复用已有对象,这个区间内的Integer值可以直接使用==判断。false(i4自动装箱后为一个包装类,i5也就会直接new一个新的Integer了,因此两者地址不相同)该代码的输出为(==比较的是地址)...
2022-08-08 12:09:19
170
原创 Java基础——final关键字
由于final修饰属性为常量不能改变且所有对象的该属性的值都相同,所以可以将该属性用static final(全局变量)来修饰,所有对象共享变量,并且在类加载(1.类声明时初始化2.静态代码块)中初始化,效率较高,通过类名调用访问。被fina修饰的属性为常量,不论是普通数据类型还是引用数据类型都代表值不能发生变化,引用数据类型:对象的引用不能变,对象本身可以变。被final修饰的类不能有子类,该类中的所有方法皆被final修饰,多用于工具类。final修饰的变量:值和类型都不能变化。1、final修饰类。.
2022-08-08 12:05:30
79
原创 日志框架,阶段项目
logback-classic它是log4J的一个改良版本,同时它完整实现了slf4jApi(日志规范)作用用于控制系统中哪些日志级别是可以输出的,只输出级别不低于设定级别的日志信息。可以将系统执行的信息选择性的记录到指定的位置(控制台,文件中,数据库中)日志框架牛人或者第三方公司已经做好的日志记录现代码,后者或者可以直接使用。程序中的日志可以用来记录程序运行过程中的信息,并可以运行永久存储。日志规范一些接口,提供给日志的实现框架设计的标准。不能将其记录到其他的位置(文件数据库)...
2022-07-24 20:56:17
83
原创 泛型深入知识
泛型接口可以约束实现类,实现类可以在实现接口的时候传入自己操作的数据类型,这样重写的方法都将是针对该类型的操作。把运行时期的问题提前到了编译期间,避免了强制类型转换可能出现的异常,因为编译阶段类型就确定下来了。泛型是JDK5中引入的新特征,可以在编译阶段约束操作的数据类型,并进行检查。extendCar?把出现泛型变量的地方全部替换成传输的真实数据类型。可以在使用泛型的时候代表一切类型。ETKV是在定义泛型的时候使用的。泛型的格式泛型的好处统一数据类型。...
2022-07-22 18:03:57
149
原创 常见数据结构
红黑树红黑树是一种自平衡的二叉查找树,是计算机科学中用到的一种数据结构,1972年出现,当时被称之为平衡二叉B树,1978年又称为红黑树。平衡二叉树的要求任意节点的左右两个子树相当于高度差不超过1,任意节点的左右两个子树都是一颗平衡二叉树。节点的度节点拥有的子树的个数,二叉树的度不大于2叶子节点度为0的节点,也称之为终端节点。每一个节点可以是红或者黑,红黑树不是通过高度平衡的,它的平衡是通过红黑规则进行实现的。高度叶子节点的高度为1,叶子节点的父节点高度为2,以此类推,根节点的高度最高。...
2022-07-22 17:45:52
161
2
原创 迭代器概述
实现Iterable接口的类才可以使用迭代器和增强for循环,Collection接口已经实现了Iterable接口。它是Jdk5之后出现的,其内部原理是一个Iterator迭代器,遍历集合相当于是迭代器的简化写法。得到迭代器对象,默认指向当前集合的索引0。迭代器在Java中的代表是Iterator,迭代器是集合的专用遍历方式。增强for循环既可以遍历集合也可以遍历数组。2.迭代器如果取元素越界会出现什么问题?遍历是一个个的把容器中的元素访问一遍。1.迭代器的默认位置在哪里?集合存储的是对象的地址。...
2022-07-22 16:04:31
213
原创 集合的概述
数组适合的场景当业务数据的个数都是固定的,且都是同一批数据类型的时候,可以采取定义数组存储。注意集合和泛型都只能支持引用数据类型,不支持基本数据类型,所以集合中存储的元素都认为是对象。集合对于泛型的支持集合都是支持泛型的,可以在编译阶段约束集合只能操作某种数据类型。在进行增删数据的操作的时候,数组是不太合适的,增删数据都需要放弃原有数据或者移位。集合的大小不固定,启动后可以动态变化,类型也可以选择不固定。集合适合的场景数据的个数不确定,需要进行增删元素的时候。一、集合和数组都是容器。...
2022-07-22 15:56:08
174
原创 异常机制详解
java.exe(运行时异常,在编译成class文件不需要处理,在运行字节码文件时可能出现的异常)javac.exe(编译时异常,是在编译成class文件时必须处理的异常,也称之为受检异常)(3)RuntimeException及其子类运行时异常,编译阶段不会报错(空指针异常、数组索引越界异常)try......catch监视捕获异常,用在方法内部,可以将方法内部出现的异常直接捕获处理。简单来说编译时异常就是在编译的时候出现的异常,运行时异常就是在运行时出现的异常。...
2022-07-22 10:07:49
62
原创 Lambda概述
Lambda的好处Lambda是一个匿名函数,我们可以把Lambda的表达式理解成是一段可以传递的代码,它可以写出更简洁、更灵活的代码,作为一种更紧凑的代码风格,使java语言表达能力得到了提升。如果Lambda表达式的方法体只有一行代码,可以省略大括号不写,此时如果这行代码是return语句,必须省略return不写,同时也必须省略","不写。如果Lambda表达式的方法体代码只有一行代码,可以省略大括号不写,同时要省略分号。首先必须是接口,其次是接口中有且仅有一个抽象方法的形式。......
2022-07-21 22:27:30
125
原创 包装类知识
java为了实现一切皆对象,为8种基本数据类型提供了对应的引用类型。后面的集合和泛型其实也只能支持包装类型,不支持基本数据类型。自动装箱基本类型的数据和变量可以直接赋值给包装类型的变量。自动拆箱包装类型的变量可以直接赋值给基本数据类型的变量。可以把字符串类型的数值转换成真实的数据类型(真的很有用)可以把字符串类型的数值转换成真实的数据类型(很有用)可以把基本类型的数据转换成字符串的类型(用处不大)可以把基本数据类型的数据转换成字符类型(用处不大)包装类其实就是8种基本数据类型对应的引用类型。...
2022-07-19 21:47:22
102
原创 构造器知识
封装的原则对象代表什么,就得封装对应的数据,并提供数据对应的行为,有需要的自己去找已经被定义封装好的方法。一旦定义了有参数构造器,无参数构造器就没有了,此时需要自己写去参数构造器。无参数构造器(默认存在的)初始化对象时,成员变量的数据均采用默认值。定义在类中的,可以用于初始化一个类的对象,并返回对象的地址。有参数的构造器在初始化对象时,同时可以接收参数为对象赋值。任何类定义出,则默认自带了无参数构造器,写不写都有。可以用于指定访问当前段对象的成员变量,成员方法。可以出现在构造器,方法中,...
2022-07-18 15:33:22
178
原创 static
实例成员变量属于每个对象,且每个对象的该信息时(如name,age,money)如果表示对象是自己的行为,且方法中需要访问实例成员的,且该方法必须申明成实例方法。(1)static修饰的成员变量静态成员变量,只在内存中有一份,可以被共享。静态成员方法(有static修饰,归属于类)建议用类名访问,也可以用对象访问。(2)无static修饰,实例成员变量,属于每个对象的,必须用对象名访问。实例成员方法(无static修饰,归属于对象),只能用对象触发访问。...
2022-07-18 15:21:20
556
原创 Map集合
注意实际上,Set系列集合的底层就是Map实现的,只是Set集合中的元素只要键数据,不要值数据而已。HashMap是Map里面的一个实现类,特点都是由键决定的、无顺序、不重复、无索引。注意TreeMap集合是一定要排序的,可以默认排序,也可以将键按照指定的规则进行排序。(1)Map是双列集合的祖宗接口,它的功能是全部双列集合都可以继承使用。由键决定,无序、不重复、无索引,HashMap底层是哈希表结构的。可排序,按照键数据的大小,默认升序(由小到大)排序,只能对键排序。...
2022-07-17 20:27:39
93
原创 IO流概述
Ooutput,是内存程序的数据从内存到写出到硬盘文件的过程,称之输出、负责写。Iinput,是数据从硬盘文件读入到内存的过程,称之为输入,负责读。以内存为基准,把磁盘文件中的数据以字符的形式读取到内存中。定义一个与文件一样大的数组,一次性读取完文件的全部字节。读取中文字符不会出现乱码(如果文件和代码的编码一致)(3)文件字符输入流(FileReader)的作用。(4)直接把文件数据全部读取到一个字节数组怎样?字节流适合做一切文件数据的拷贝(音视频、文本)(5)字节输出流如何实现写出去的数据能换行?...
2022-07-16 10:32:25
3098
原创 字符集的详解
计算机底层不可以直接存储字符,计算机中底层只能存储二进制(0,1),二进制是可以转换成十进制的。(2)使用一个字节存储一个字符,一个字节是八位,总共可以表示2^8=128个字符。(1)Unicode是万国码,以UTF-8编码后一个中文一般以三个字符的形式存储。(4)编码前和编码后的字符集要一致,负责会出现中文乱码。(5)英文和数字在任何国家字符集中都占一个字节。(2)UTF-8也要兼容ASCII编码表。(3)技术人员应用UTF-8字符集编码。(1)包含了数字、英文、符号。...
2022-07-16 10:08:40
134
原创 递归的概念及用法
非规律化递归问题自己看着办,需要注释化的编程思维(有猴子吃桃、啤酒瓶换兑问题)(1)方法递归方法直接调用自己或者间接调用自己的形式称为方法递归。把一个复杂的问题层面转化为一个与原问题相似的、规模较小的问题求解。递归如果没有控制好终止,会出现递归死循环,导致栈内存溢出现象。间接递归方法调用其他方法,其他方法又回调方法自己。(1)递归的公式f(n)=f(n-1)*n;递归作为一种算法在程序设计语言中广泛应用。(2)递归的终结点f(1)(3)递归的方向必须走向终点。直接递归方法自己调用自己。...
2022-07-16 09:59:48
1252
原创 idea关于logback.xml不生效的解决办法
今天在src目录下插入了logback.xml,无论如何就是不生效,输出的总是默认的debug,并且无法产生日志在系统里,试过各种办法后,最后发现了原因。 我的idea为较高版本,操作也不同以往,应该把 logback.xml 放在resource目录下,就完全可以了...
2022-07-14 11:15:39
1454
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人