![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 59
Array_new
这个作者很懒,什么都没留下…
展开
-
布隆过滤器
当一个元素加入布隆过滤器中的时候,会进行如下操作:使用布隆过滤器中的哈希函数对元素值进行计算,得到哈希值(有几个哈希函数得到几个哈希值)。得到值之后判断位数组中的每个元素是否都为 1,如果值都为 1,那么说明这个值在布隆过滤器中,如果存在一个值不为 1,说明该元素不在布隆过滤器中。相比于我们平时常用的的 List、Map、Set 等数据结构,它占用空间更少并且效率更高,但是缺点是其返回的结果是概率性的,而不是非常准确的。理论情况下添加到集合中的元素越多,误报的可能性就越大。原创 2023-05-28 09:33:03 · 71 阅读 · 0 评论 -
JVM面试总结
双亲委派模型的工作过程是:如果一个类加载器收到了类加载的请求,它首先不会 自己去尝试加载这个类,而是把这个请求委派给父类加载器去完成,每一个层次的类加 载器都是如此,因此所有的加载请求最终都应该传送到最顶层的启动类加载器中,只有 当父加载器反馈自己无法完成这个加载请求(它的搜索范围中没有找到所需的类)时, 子加载器才会尝试自己去完成加载。标记出所有需要回收的对象,在标记完成后,统一回收掉所有被标记的对 象,也可以反过来,标记存活的对象,统一回收所有未被标记的对象。原创 2023-02-23 09:07:58 · 194 阅读 · 0 评论 -
JVM内存布局
heap(堆)通过new关键字创建的对象都会使用堆内存特点:他是线程共享的,堆中的对象都需要考虑线程安全的问题由垃圾回收机制。原创 2023-02-19 16:37:22 · 365 阅读 · 0 评论 -
类加载子系统
解析动作主要针对类或接口、字段、类方法、接口方法、方法类型等。直接引用就是直接指向目标的指针、相对偏移量或一个间接定位到目标的句柄。使用 BinaryViewer软件查看字节码文件,其开头均为 CAFE BABE ,如果出现不合法的字节码文件,那么将会验证不通过。这里不包含用final修饰的static,因为final在编译的时候就会分配好了默认值,准备阶段会显式初始化。注意:这里不会为实例变量分配初始化,类变量会分配在方法区中,而实例变量是会随着对象一起分配到Java堆中。原创 2023-01-15 18:19:22 · 450 阅读 · 0 评论 -
JVM内存模型
JMM 即 Java Memory Model,它定义了**主存(共享内存)、工作内存(线程私有)**抽象概念,底层对应着 CPU 寄存器、缓存、硬件内存、 CPU 指令优化等。JMM体现在以下几个方面退出不出的循环为什么无法退出该循环原子性可见性有序性多线程下的指令重排会影响安全性可以使用double-checked locking模型实现单例以上的实现优点是:但在多线程的情况下,上面的代码有问题JDK1.5以后的版本的voltile才会有效happens-before规则线程对volatile变量的写原创 2022-12-04 15:27:16 · 373 阅读 · 0 评论 -
JVM之方法的调用
随着高级语言的横空出世,类似于Java一样的基于面向对象的编程语言如今越来越多,尽管这类编程语言在语法风格上存在一定的差别,但是它们彼此之间始终保持着一个共性,那就是都支持封装、继承和多态等面向对象特性,既然这一类的编程语言具备多态特性,那么自然也就具备早期绑定和晚期绑定两种绑定方式。早期绑定就是指被调用的目标方法如果在编译期可知,且运行期保持不变时,即可将这个方法与所属的类型进行绑定,这样一来,由于明确了被调用的目标方法究竟是哪一个,因此也就可以使用静态链接的方式将符号引用转换为直接引用。原创 2022-11-26 16:40:39 · 630 阅读 · 1 评论 -
JVM类文件结构
Class文件结构:Class文件是一组以8位字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑地排列在Class文件之中,中间没有添加任何分隔符,这使得整个Class文件中存储的内容几乎全部是程序运行的必要数据,没有空隙存在。当遇到需要占用8位字节以上空间的数据项时,则会按照高位在前(最高位字节在地址最低位,最低位字节在地址最高位)的方式分隔若干个8位字节进行存储。原创 2022-11-20 15:36:27 · 285 阅读 · 0 评论 -
浅谈JVM
heap堆通过new关键字创建的对象都会使用堆内存他是线程共享的,堆中的对象都需要考虑线程安全的问题由垃圾回收机制。原创 2022-11-12 19:31:30 · 706 阅读 · 1 评论 -
MySQL索引
索引是对数据库表中一列或多列的值进行排序的一种结构。MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度首先按照物理划分为聚簇索引和非聚簇索引。原创 2022-11-05 17:07:29 · 174 阅读 · 0 评论 -
ThreadLocal使用
通常弱引用都会和引用队列配合清理机制使用,但是ThreadLocal是个例外,它并没有这么做。这意味着,废弃项目的回收依赖于显式地触发,否则就要等待线程结束,进而回收相应ThreadLocal每次使用过ThreadLocal后都要手动进行删除防止出现内存溢出的情况。它表示线程局部变量:为当前线程绑定一个变量,这样在线程的声明周期内的任何地方均可取出。ThreadLocal是线程本地的变量,只要是本线程内都可以使用,线程结束了,那么相应的线程本地变量也就跟随着线程消失了。获取值:获取和当前线程绑定的变量值。原创 2022-10-30 09:42:12 · 132 阅读 · 0 评论 -
LinkedHashMap和Hashmap
一般情况下,我们用的最多的是HashMap,在Map 中插入、删除和定位元素,HashMap 是最好的选择。LinkedHashMap的containsValue方法:首先处理value为null的情况, 其次它不像HashMap一样遍历整个数组, 而是通过遍历双线链表header来查找value;默认以插入顺序排序,性能比HashMap略低,线程也是不安全的。1.linkedHashMap虽然继承HashMap, 但实现了双线链表 ,有固定的顺序,与插入entry的顺序一样;原创 2022-10-22 21:33:49 · 1068 阅读 · 0 评论 -
浅谈Synchronized和Vector
3.有序性:有序性值程序的执行顺序按照代码先后执行, synchronized和volatile都具有有序性,Java允许编译器和处理器对指令进行重排,但是指令重排并不会影响单线程的顺序,它影响的是多线程并发执行的顺序性。2.可见性:可见性是指多个线程访问一个资源时,该资源的状态、值等信息对于其他的线程都是可见的。修饰的类或对象都是原子的,因为操作之前都要先获取类或对象的锁,直到执行完毕才能被释放。1.原子性:那么所谓的原子性是指一个或多个操作要么全部执行,要么全部不被执行。原创 2022-10-08 19:57:45 · 313 阅读 · 0 评论 -
关于序列化
对象序列化,将对象中的数据编码为字节序列的过程。反序列化;将对象的编码字节重新反向解码为对象的过程。JAVA提供了API实现了对象的序列化和反序列化的功能,使用这些API时需要遵守如下约定:被序列化的对象类型需要实现序列化接口,此接口是标志接口,没有声明任何的抽象方法,JAVA编译器识别这个接口,自动的为这个类添加序列化和反序列化方法。为了保持序列化过程的稳定,建议在类中添加序列化版本号。原创 2022-09-25 08:07:44 · 110 阅读 · 0 评论 -
Java基础—反射
反射是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为 Java 语言的反射机制。原创 2022-09-17 16:36:04 · 111 阅读 · 0 评论 -
TCP网络通信
TCP与UDP都属于TCP/IP协议TCP(Transmission Control Protocol,传输控制协议)是面向连接的协议,也就是说,在收发数据前,必须和对方建立可靠的连接。一个TCP连接必须要经过三次“对话”才能建立起来,其中的过程非常复杂, 只简单的描述下这三次对话的简单过程:1)主机A向主机B发出连接请求数据包:“我想给你发数据,可以吗?”,这是第一次对话;2)主机B向主机A发送同意连接和要求同步 (同步就是两台主机一个在发送,一个在接收,协调工作)的数据包 :“可以,你什么时候发。原创 2022-09-10 16:33:07 · 1059 阅读 · 0 评论 -
矩阵中的路径
输入:board = [[“A”,“B”,“C”,“E”],[“S”,“F”,“C”,“S”],[“A”,“D”,“E”,“E”]], word = “ABCCED”如果 word 存在于网格中,返回 true;单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。输入:board = [[“a”,“b”],[“c”,“d”]], word = “abcd”例如,在下面的 3×4 的矩阵中包含单词 “ABCCED”(单词中的字母已标出)。原创 2022-09-04 09:21:13 · 88 阅读 · 0 评论 -
排序算法-堆排序
堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。原创 2022-08-13 23:13:10 · 77 阅读 · 0 评论 -
数据结构学习(Java)
一种特殊的树结构堆,是一棵完全二叉树,也就是一棵深度为k的有n个结点的二叉树,对树中的结点按从上至下、从左到右的顺序进行编号,如果编号为i(1≤i≤n)的结点与满二叉树中编号为i的结点在二叉树中的位置相同。:树是一种典型的非线性结构,它是由 n(n>0)个有限节点组成的一个具有层次关系的集合。相对于此类更多的运用的是双端队列(Deque),具有更强的灵活性,扩展了Queue类,同样可以使用于栈结构的使用,不同于单调的队列,栈(Stack)是先进后出。4.除了根节点外,每个子节点可以分为多个不相交的子树。..原创 2022-08-06 22:27:40 · 219 阅读 · 0 评论 -
滑动窗口的最大值
方法找出最大值,这样就可以利用简单的for循环来求解答案,存放在最终的数组中,同样也可以利用队列或栈来求解来减少时间复杂度。你可以假设k总是有效的,在输入数组不为空的情况下,1≤k≤输入数组的大小。输入nums=[1,3,-1,-3,5,3,6,7],和k=3。给定一个数组nums和滑动窗口的大小k,请找出所有滑动窗口里的最大值。这个指针指向滑动窗口的第一个值由于循环的。本题可以利用数组和指针来求解,先声明。输出[3,3,5,5,6,7]就可以得到新的数组,利用。...原创 2022-07-31 18:48:31 · 146 阅读 · 0 评论 -
linux下运行二进制文件
对于前后端完全分离的项目来说,都需要分别打包运行,前端文件就需要打包成二进制文件或者是在windows环境下的.exe文件。在linux下,首先来说需要注意的是要进行更改文件权限的操作使用chmod命令的语法为。表示只有当该文件是个子目录或者该文件已经被设定过为可执行。需要注意的是打包二进制文件是没有后缀名的。如果需要后台使用的话可以用。还有一种是八进制语法。执行二进制文件直接用。...原创 2022-07-24 09:52:43 · 13044 阅读 · 0 评论 -
BigDecimal使用
在使用单双精度float和double的运算过程中面对千万级的小数级上出现错误,对于我们的项目而言很不友好,对此BigDecimal就能很好的解决问题所在BigDecimal类提供了算术,缩放操作,舍入,比较,散列和格式转换的操作。...原创 2022-07-17 13:02:23 · 266 阅读 · 1 评论 -
Stream流使用
在写项目的过程中数组与collection集合的转换中我首先使用的是list集合的形式,其它基本类型数组形式转换为list集合再将使用for循环将其转为数组形式,中间迭代加入list集合仍然使用for循环迭代的形式Stream流处理:可以看出这种方法比较费事儿,经由学长指点才晓得还可以用Stream流的方式将代码缩减少了几步将数组数据转为list集合形式可以说非常省事Stream流除了这种使用外,还有很多常用的方法将list种的元素遍历不用使用for循环就能将数据转到另一个里边...原创 2022-07-09 23:16:42 · 147 阅读 · 0 评论 -
Redis-缓存问题
每次启动项目时都会由于数据库的数据太多导致刚进去的时候会由于数据存放过多,首页信息多个请求体直接用MySQL数据库速度慢,影响用户体验一下是用redis解决缓存问题的解决思路,以提高能。指的是客户端请求的数据在缓存中和数据库中都不存在,这样的缓存永远也不会生效,这些请求都会打到数据库 优点:实现简单,维护方便 缺点:额外内存消耗,可能造成短期的不一致[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Uao7fFL9-1656169792615)(原创 2022-06-25 23:11:42 · 188 阅读 · 0 评论 -
关于RSA加密解密原理
随着我们的学习的不断深入,信息的安全也愈加重要,我们发布的代码中可能含有我们的私密信息,比如对接支付宝沙箱api,下载一些专业软件时就需要我们输入公钥和私钥以此来验证我们的身份信息,就相当于用钥匙去开锁一样,公钥代表着锁,私钥代表着开锁的钥匙,而公钥与私钥也是可以互换的,理解完这点,下面就详细说一下他们的原理。首先取俩个质数(p,q),N=pq然后求他们的欧拉函数 T = (p-1)(q-1)取出公钥E 它的规则是1.是一个质数。2.1...原创 2022-06-11 19:35:05 · 804 阅读 · 0 评论 -
SpringBoot心得
前言:上次的项目没有整好,很多的判断没有加,针对于上次的不足,本次项目需要再次考核,而本次又得用springboot进行重新整合原本的项目,下面就是我在springboot学习的一些心得体会。关于springboot心得:上次的ssm项目弄的swagger就有版本冲突问题,各个依赖版本之间不匹配让项目的启动变的复杂,而springboot就能够统一版本,spring相关的包自动导入不用再每个导进去,弄不好就会导致冲突,<dependency> <groupId&g原创 2022-05-14 23:21:20 · 3157 阅读 · 0 评论 -
2022.05.08
前言:我们前后端交互的第一个ssm项目做成了,本次的项目与我而言不仅仅是磨砺更是一次成长锻炼,由于是第一次合作,总归有很多的问题,仓库的使用不熟练,让我们在合并分支的时候总会出现一些意想不到的bug,幸好我的好搭档会,出问题了就回退到之前的版本,让后再一个个重新手动合并上去,我平常写代码的时间也不多,分配时我是组长,但实际上对项目的整体掌控基本上都是交有他去处理,整个项目的沟通交流是前端的一个人运作,感觉自己好废,写的东西也没有比其他的几个组好多少,基础仍是我们的弱项,每次考核时很多的问题都答不出来,但原创 2022-05-08 15:53:22 · 274 阅读 · 0 评论 -
2022.05.01
前言:如今写这个项目的时间也快结束了,我们的后端的接口也基本上完成的差不多了,前后交互部分现在也可以了,对于本次的项目也有些许感悟。关于MySQL:本人认为在本次的项目过程中只要操作好MySQL数据库,管理好配置,基本上一个小的ssm网站就可以建立成功了,所以本次仍是谈一些关于MySQL的数据库操作,我们本次写的是小说网站,所以我建立了三个表关于小说的表,分别是小说名表,小说章节表,小说内容表,三个表的连接全靠中间的章节表,我想给他们返回一个小说的信息以及一个小说的字数和小说最近更新的章节名原创 2022-05-01 20:41:54 · 76 阅读 · 0 评论 -
2022.04.23
前言:如今写项目的时间已经过去了一大半了,我们后端的接口基本的写的差不多了,现在的问题主要集中在交互问题上,有的接口也有点问题,在测试的时候没出现的,在交互上也许就会出现一些分歧,显示小说大致的信息也基本可以实现了,感觉写的仍然不够好,功能写的也不多,我的很多的东西都是数据库直接处理,用完动态sql完全可以做到一个接口多个页面进行使用,可以省下很多时间,下面是我在写项目过程中的一些感悟。关于写小说网站的感悟:在之前每次拉取git仓库的时候,都会出现问题,tomcat都跑不动,让我重新配置了一下t原创 2022-04-24 00:13:42 · 87 阅读 · 0 评论 -
2022.04.16
前言: 现在写的这个小说网站我们前后端已经可以进行交互了,关于本次的项目我感觉接口好写,就是那些在此过程中的bug解决的时间长,基本上就是接口几分钟改bug几小时,有时也可能因为在git仓库中合并的时候出的问题,就导致项目启动出现问题,所以版本一定要控制好,否则会出现一些冲突,找bug的时候也不好找。下面就是我在此过程中的一些感悟。项目心得体会:因为在前期讨论的时候没清除相互之间的需求,导致我现在写的时候还要更改数据库中的表,添加字段,比如我写的将书库的分类给显示,原本想着把所有过...原创 2022-04-17 00:14:55 · 110 阅读 · 0 评论 -
2022.04.09
前言: 本周是我们前后端交互的第一周,在开始的没有头绪后现在也逐渐步入正轨,初始时都不知到该怎么给他们提供接口,该如何去写这个项目,也没有大致思路,也就是走一步看一步,等我们配好了这个让人抓狂的swagger接口文档后,就像着该如何去前后端交互一下,看一下项目的大致效果,都有哪些问题,让bug可视化一些,不能都留到最后,不然可能要重写一下,重新构建,现在也是前期没有考虑出那么多的问题,有些表没有建好需要重新整改,下面就是我的在写的过程中遇到的一些问题和心得。swagger接口文档在SSM...原创 2022-04-09 23:59:52 · 81 阅读 · 0 评论 -
2022.04.02
前言:最近这段时间都在练习算法,备战蓝桥杯,关于Java数组和链表的学习,因为有过C语言学习链表的基础,再次学习Java语言的链表,就不觉得那么难了。C语言是通过指针来连接,而Java通过对象来创建,进行连接。二者有异曲同工之妙。学习感悟:首先来说就是创建一个节点类存放数据和指针,指向下一个节点,由此一个普通的节点类就创建好了代码实现:public class Node { public int data;//其中的类型可以换成其他自己封装定义的Data类,存储的东西更丰富原创 2022-04-02 22:16:45 · 1618 阅读 · 0 评论 -
2022.03.26
前言:对于SSM的学习我仍不熟练,还有待提高,将类交与Spring处理,简化我们的代码操作,在此同时也增强了实用性,所以本次的文章仍是关于SSM整合过程中的一些心得体会。关于SSM的配置:以下是web.xml的配置信息<web-app> <display-name>Archetype Created Web Application</display-name> <context-param> <param-name&原创 2022-03-26 23:38:01 · 1214 阅读 · 0 评论 -
2022.03.19
前言:在我们开发过程中,Java框架显得尤为重要,在学习JavaSSM框架学习中,Spring、SpringMVC、MyBatis的进行主要都需要运用maven的依赖管理去进行,不然就需要再自行导入依赖文件,同时也不好进行管理,所以本次的学习主要围绕maven进行。Spring:Spring是一个开源的框架,是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。他的核心主要就是控制反转,利用Spring来进行创建管理SpringMVC:Controller(控制层)、Mod原创 2022-03-19 21:33:31 · 955 阅读 · 0 评论 -
2022.08.21
前言: 在本周的前一段时间,我们仍然完善之前写的项目,时隔五天,虽说小有进步,但仍还有诸多的不足之处需要改正,就比如MySql连表查询的操作,对于项目的整体框架不了解,导致项目写的代码有些乱,还有对于正则表达式也不会使用,其中的文件上传的类的导入包后的类也不了解其中原理,所以在以后的学习过程中不仅要学习新的内容,还要回顾之前的内容。这几天我也在进行Spring的框架的学习,如下也是我关于本次学习过程中的笔记以及一些心得体会。Spring概述:Spring 框架是一个分层的、面向切面...原创 2022-03-13 08:46:30 · 395 阅读 · 0 评论