自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(74)
  • 收藏
  • 关注

原创 MySQL必知必会,我的MySql复习宝典

声明:本篇博客是学习B站韩顺平老师mysql课程的笔记目录数据库基础知识使用命令行窗口连接MySQL数据库数据库三层结构 - 破除MySQL神秘SQL语句SQL语句分类数据库相关操作查看、删除数据库备份恢复数据库创建和删除表MySQL常用数据类型(列类型)定义无符号的bit的使用小数的使用字符串的基本使用日期类型的基本使用创建练习表修改表数据库C(create)R(read)U(update)D(delete)Insert 语句update语句Delete 语句Select 语句使用表达式对查询的列进行计

2022-03-18 18:02:40 1352 6

原创 原码-补码-反码

二进制的最高位是符号位:0表示正数,1表示负数。正数的原码,反码,补码都一样。负数的反码 = 它的原码符号位不变,其他未取反。负数的补码 = 它的反码 + 1,即负数的反码 = 负数的补码 - 10的反码,补码都是0java没有无符号数,换言之,java中的数又是有符号的在计算机运算的时候,都是以补码的方式来运算的。当我们看运算结果的时候,要看他的原码。...

2022-03-10 19:31:35 284

原创 Java基本数据类型和String类型的转化

基本数据类型转String类型只需要 + ""即可,如下public static void main(String[] args) { int n1 = 100; float n2 = 1.1f; double n3 = 3.4; boolean b1 = true; String str1 = n1 + ""; String str2 = n2 + ""; String str3 = n3

2022-03-10 18:13:49 496 2

原创 异或的魅力

异或(^)作为一个位运算符,它的运算速度是很快的,它的运算规则是将两个数据的二进制数去一一比较,结果是当对应两个二进制位的数相同为0,不同为1,即:同时异或运算还满足交换律和结合律,这些就使得两个相同的数因为二进制每一位都对应一模一样,所以当两个相同的数在做异或运算时结果为0,即 a ^ a = 0;因为异或运算满足交换律,所以 a ^ b ^ a = a ^ a ^ b = 0 ^ b,因为b有1的位,而0全都是0位,所以 0 ^ b = b,即0异或任何数都等于这个数本身。当有一堆数在异或时:

2021-11-08 12:45:17 269

原创 更高效地刷OJ——Java中常用的排序方法,Array.sort(),Arrays.parallelSort(), Collections.sort()

对于几大传统的排序算法我在前面博客中已经介绍过了,如果有想要了解的同学可以去看这篇博客八大排序:冒泡排序,选择排序,插入排序,堆排序,希尔排序,归并排序,计数排序但是我们在刷题过程中如果题目中没有对排序算法做特别要求,排序只是当前题目的一个小过程的话我们大可不必自己实现以便排序算法,因为Java中已经提供了几个对数据做排序的方法。文章目录用Array.sort()进行排序Arrays.parallelSort() 是什么 和 Array.sort()有什么区别用 Collections.sort()进行排

2021-09-12 17:47:10 854 50

原创 模拟实现HashMap

为了方便实现,突出重点,将key指定为String类型,将Value指定位Integer类。在实际中,如果Key的类型为自己的实现类,那么必须重写该类的hashCode()和equals()两个方法,重写hashCode()方法是因为在找key对应的下标时需要调用hashCode()方法,重写equals()方法是因为两个相同对象的哈希值必须相同,程序怎么知道哪两个对象相同,就是通过equals方法。对于还不了解哈希表的同学建议先去看上一篇博客哈希表(HashTable),哈希冲突的避免、解决。下面开

2021-09-11 17:38:46 230

原创 哈希表(HashTable),哈希冲突的避免、解决

文章目录什么是哈希表哈希表概念哈希冲突哈希冲突概念解决冲突闭散列闭散列平均查找次数的问题开散列/哈希桶冲突严重时的解决办法避免冲突哈希函数设计常见的哈希函数负载因子调节什么是哈希表先举一个很常见的例子:我们有一个衣柜这是一个杂乱无章的衣柜,里面放了四季的衣服,每当要去找一件合适的衣服去穿的时候,要翻箱倒柜麻烦半天,为了解决这个问题,我们买了四个柜子,规定它们分别存放春夏秋冬四季的衣服:从此之后找衣服就方便了很多,什么季节去哪个衣柜找就能找到合适的衣服,这个例子背后就是哈希表的原理。哈希表概念

2021-09-11 12:13:45 2360 24

原创 Java中的Map

Map的介绍Map和Set一样是一种专门用来进行搜索的数据结构,和Set不同的是Map中存的是Key-Value键值对,什么是键值对呢?举两个例子:统计文件中每个单词出现的次数,统计结果是每个单词都有与其对应的次数:这里的key就是单词,value就是出现的次数。词典中每个单词就是key,单词对应的意思是value。Java中的Map是一个接口,该类不同于Set,该类没有继承字Collection。Map中的key不能重复,value可以重复。Map的常用方法:返回值方法

2021-09-10 21:46:02 243 2

原创 Java中的Set

Set可以被认为是一个集合,集合内部是同类型的元素,他们之间没有先后顺序,但是不允许重复!!!Set中常用的方法有以下几个:返回值方法booleanadd( ) 向集合中添加元素无clear( ) 去掉集合中所有的元素booleancontains( ) 判断集合中是否包含某一个元素booleanisEmpty( ) 判断集合是否为空Iteratoriterator( ) 主要用于递归集合,返回一个It

2021-09-10 15:32:41 7864 16

原创 二叉搜索树的思想,以及增删查改的实现

目录搜索树的概念查找操作插入操作删除操作改的操作搜索树的概念二叉搜索树又被称为排序树,它或者是一颗空树,或者是一棵具有以下性质的二叉树:若它的左子树不为空,则左子树上所有节点的值都小于根节点的值若它的右子树不为空,则右子树上所有节点的值都大于根节点的值它的左右子树也分别为二叉搜索树下图就是一棵二叉搜索树,可以对应上面性质加深理解:查找操作实现思想:实现代码:// O(树的高度) public boolean find(int key) { Node curren

2021-09-07 22:48:38 670 21

原创 ❤️万字总结八大排序:冒泡排序,选择排序,插入排序,堆排序,希尔排序,归并排序,计数排序❤️

目录主要排序算法性能对比冒泡排序选择排序插入排序堆排序希尔排序快速排序Hoare版挖坑版前后指针法归并排序计数排序主要排序算法性能对比冒泡排序各位同学接触最早的排序算法应该就是冒泡排序了,他的过程如下图所示:拿图中升序举例他每次小循环都会从0开始在遍历的过程中将遇到的最大的数像冒泡泡一样一路冒到有序区间,一次大循环让有序区间增加一,大循环执行完毕全部区间就有序了。下面是它的代码:import java.util.Arrays;public class BubbleSort { //升

2021-09-06 17:15:49 394 21

原创 归并排序(Merge Sort)思想,代码实现

归并排序是分治算法一个非常典型的例子,归并排序的思想是将待排序序列递归分为左右两个子序列,递归到子序列只有一个数的时候,停下来,这就是分治算法的分的意思,将问题化简,当子序列只有一个元素的时候是不是可以认为这个序列为有序序列了,然后再将左右有序子序列通过递归合并起来,最终让整个序列有序,这是分治算法治的过程,下面我们通过图片来理解这个过程:通过动图理解就是:线面看代码:public class MergeSort { public static void mergeSort(long[]

2021-09-05 22:54:57 681 20

原创 快速排序思路(前后指针版),代码实现

快速排序的前后指针法相比于Hoare版和挖坑版在思路上有点不同,前后指针版的思路是引入两个指针cur和prev,在开始的时候先规定一个基准值val(一般为最右边或者最左边的那个数据),然后让两个指针指向基准值的下一个数,开始下面循环:若cur指向的内容小于key,则prev先向后移动一位,然后交换prev和cur指向的数,然后cur++;如果cur指向的内容大于val,则cur++。直到cur走完整个序列,此时为了让基准值在中间,只需val和prev交换单次排序就完成了。下面是单次排序的动图:在循环

2021-09-04 11:45:08 496 4

原创 快速排序思路(挖坑版),代码实现

挖坑版是在Hoare版的基础上做了改造,答题思路还是和Hoare版一样。挖坑版partition单次过程:选一个基准值,一般选最左或者最右面,把该基准值存在val变量中,因为值存到了变量里,所以可以视为这个位置能放其他值了。定义一个left和一个right引用,left从序列左向右走,right相反(如果基准值在左边则right先走,如果基准值在右边,left先走)走的过程中,如果right遇到小于val的数,则把个数放在坑中,并在次形成坑位,然后left向右走,如果遇到大于val的数,则将值填入

2021-09-03 23:04:31 611 10

原创 确定不进来看看?分享一个插件,让敲代码不再枯燥,activate-power-mode

已经支持很多IDE了:https://github.com/codeinthedark/awesome-power-mode因为我用的是IDEA,所以主要来介绍一下IDEA的安装流程:打开这个网址https://github.com/ViceFantasyPlace/activate-power-mode/releases,然后在IDEA中选Preferences -> Plugins -> Install pliugin form disk -> 找到刚才下载的jar包->.

2021-09-02 20:00:32 126 12

原创 快速排序思路(Hoare版),代码实现

快速排序是一种相对比较快的排序,它的思想为:选取待排序元素序列中的一个元素作为基准值,然后(以升序为例)比基准值小的元素放在基准值左边,比基准值大的元素放在基准值右边,这样的话,原先待排序序列就被分为了左子序列,右子序列,基准值,三个部分,,然后把左子序列看做新的待排序序列进行上述操作,左子序列又被分为新的左右子序列(递归的思想),当左子序列处理完之后再去处理右子序列,最后着呢个待排序序列就有序了。下面是动图演示过程:public static void quickSort(int[] array)

2021-09-01 23:18:39 287 13

原创 安居客西安房源爬取 + pyecharts 数据展示

第一步是数据爬取:import xlwtfrom bs4 import BeautifulSoupfrom selenium import webdriverimport time,randomfrom selenium.webdriver import ChromeOptionsdef main(): baseurl = "https://xa.fang.anjuke.com/loupan/all/p" datalist = getData(baseurl) sav

2021-08-31 16:39:25 797 15

原创 希尔排序(Shell Sort)

希尔排序(Shell’s Sort)是插入排序的一种又称“缩小增量排序”(Diminishing Increment Sort),是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因 D.L.Shell 于 1959 年提出而得名。上面的这段叙述来自百度百科,我们可以知道希尔排序是插入排序的改进版,如果插入排序还没有搞清楚的话,建议先去看这篇博客补一补:都是❤️两层循环❤️的冒泡排序,选择排序,插入排序该怎么区分。这里我们也大致在对插入排序做个复习。插入排序将第一个数(也可.

2021-08-30 23:41:03 538 8

原创 堆排序,为什么升序排列要建大堆,降序排列要建小堆

堆排序中用到了建立大小堆和向下调整的内容,对这些内容有些不了解的同学可以去补一补专门写堆的博客,方便更好的理解堆排序数据结构之堆(Heap),堆的相关操作,用堆模拟优先级队列。如果把待排序序列分为未排序区间和有序区间,堆排序大的思想是每次选一个数放到有序区间,没经历一个循环有序区间就会加一,无序区间减一,循环结束序列也就有序了,像这样:可以发现堆排序的思路和选择排序很像,没错,思路确实一样,只不过选择排序每次要遍历无序区间去找当前无序区间的最大值(升序找最大值,降序找最小值),而堆排序呢是吧无序区间

2021-08-30 20:26:16 3567 14

原创 都是❤️两层循环❤️的冒泡排序,选择排序,插入排序该怎么区分

目录冒泡排序选择排序插入排序这三个排序都有两层循环这是他们表面的特点,我把外部循环叫大循环,内部循环叫小循环,他们算法根本思想都有相同点,就是将待排序序列分为无序区间和有序区间,每过一次大循环都能让有序区间增加一个相应的无序区间减少一个:科普一下这种每次通过相同操作让问题规模减小的算法称为减治算法,现在我们清楚了他们的底层思想,再来分别讨论以作区分。冒泡排序各位同学接触最早的排序算法应该就是冒泡排序了,他的过程如下图所示:拿图中升序举例他每次小循环都会从0开始在遍历的过程中将遇到的最大的数像冒

2021-08-29 12:16:52 307 32

原创 建堆解决TopK问题

对于找海量的数据中最大(小)个数据的问题被称为TopK问题。解决这个问题的方法有很多比如排序然后相应的取前K个数据,排序的算法有很多种,其中不乏时间复杂度低的,可问题很多排序算法都需要将所有数据同时加载到内存中去处理,海量数据加载到内存中这无疑是一个很废内存空间的操作,而建堆解决TopK问题就可以解决这个问题。先将建堆操作的结论告诉大家:要TopK最大的就建小堆要TopK最小的就建大堆为什么要反着来呢?我们来讨论具体操作思路。拿TopK最大举例,要找K个最大数据就先建立一个能放K个数据的小堆

2021-08-28 16:36:03 121

原创 数据结构之堆(Heap),堆的相关操作,用堆模拟优先级队列

目录堆的概念堆的存储方式堆的相关操作堆的向下调整。堆的创建堆的插入和向上调整堆的删除用堆模拟优先级队列堆的概念堆是逻辑结构为二叉树存储结构为数组数组的一种数据结构,为什么这么说呢?因为我们就是把堆想象成一棵有特殊功能的二叉树,然后把它按照层序遍历的顺序放到数组中。堆有大堆小堆之分,大堆是指根节点为堆中最大值的堆,小堆是指根节点为堆中最小值的堆。堆中某个节点的值总是小于等于或大于等于其父亲节点的值,前者称为就是大堆,后者为小堆。堆总是一棵完全二叉树。小堆:大堆:可以看到小堆的父亲节点都小于

2021-08-27 23:55:40 264 2

原创 Java中的PriorityQueue优先级队列

以前的博客中介绍过队列是一种先进先出(FIFO)的数据结构,但有些情况下,操作的数据可能带有优先级,此时出队列时需要优先级高的元素先出队列,这个时候传统的队列显然不能胜任,Java中有一个新的实现类继承了Queue接口,这个类实现了上述优先级队列——PriorityQueue。PriorityQueue是怎么知道队列中哪个元素优先哪个元素不优先的呢?Java中的Comparable和Comparator到底该怎么用看完就全明白了大家可以看一下我这篇文章(不看不影响,看理解的更深刻)有两个路子:队列中对

2021-08-27 00:21:35 179 4

原创 Java中的Comparable和Comparator到底该怎么用看完就全明白了

很多同学搞不清楚Comparable和Comparator这两个接口,单看这两个单词,一个是形容词一个是名词,但是可以看出来都和比较有关,我个人把实现了Comparable接口的某个类理解成这个类具备了比较能力,而把实现了Comparator的类称为比较器类,那么他们分别该怎么用呢?目录Comparable(比较能力)PriorityQueue队列Comparator(比较器)小结Comparable(比较能力)PriorityQueue队列在正式介绍他们俩之前,先给大家介绍一下Java中的优先级队

2021-08-26 21:41:49 873 18

原创 二叉树最简单的遍历方式——二叉树的层序遍历

遍历分为深度优先和广度优先,对于二叉树的深度优先遍历我们已经讨论过了常规的递归遍历,迭代遍历和优化了空间复杂度的Morris遍历,这篇博客我们来讨论二叉树的广度优先遍历,也就是我们常说的层序遍历。以下图中二叉树为例:顾名思义二叉树的层序遍历是一层一层的顺序遍历的,上图的二叉树遍历顺序是: A B C D E F G H。层序遍历大体的遍历方向是由浅到深,由左到右,也就是下图中箭头所示方向:对于递归遍历和迭代遍历都是关于栈的应用,而层序遍历是关于队列的应用,代码层面的思路是,创建一个队列,根节点先

2021-08-23 00:25:49 311 9

原创 彻底理解被称为二叉树神级遍历的莫里斯(Morris)算法

二叉树的遍历我们已经介绍过了最常见的递归遍历:用Java描述数据结构之二叉树,前序遍历,中序遍历,后序遍历和迭代遍历二叉树前序,中序,后序遍历的迭代实现,实现思路及代码上面两种遍历虽然看上去不同,但是底层的思路是大同小异的,都是调用栈,递归是用java虚拟机栈,而迭代使用我们自己创建的栈。今天要介绍的莫里斯算法,它的背后没有用任何栈相关的知识,而且相比于前两种空间复杂度为O(n)(因为进栈最差会所有数据全部进栈)的遍历来说,莫里斯算法的空间复杂度只有O(1),这对于量很大的数据来说无疑是天上地下的区别。

2021-08-22 18:41:45 3971 17

原创 win10默认浏览器总是自动重置为edge浏览器怎么办?

在系统默认应用中设置了想要的浏览器为默认浏览器之后在每次系统更新之后系统都会充值为Edge浏览器。想要解决这个问题,我们需要下载一个电脑管家,我用的是联想电脑自带的电脑管家在电脑管家中我们打开工具箱打开浏览器保护(其他电脑关键应该也叫类似的名称)在图示位置选择默认浏览器并且锁定就可以了...

2021-08-19 15:11:45 5367 5

原创 二叉树前序,中序,后序遍历的迭代实现,实现思路及代码

用Java描述数据结构之二叉树,前序遍历,中序遍历,后序遍历这篇博客中我介绍了二叉树的相关概念和递归实现的二叉树的前中后序遍历。今天来介绍非递归迭代版遍历的思路及实现代码。首先我们要明白所谓遍历就是集合中每个节点都要经过,就下面这棵树而言,我们从根节点开始要怎么走才能经过每个节点?下面是上图树的构建代码:public static TreeNode buildTree() { // 博客中所用到的树的构建 TreeNode a = new TreeNode('a');

2021-08-19 15:06:04 942 13

原创 哪两种遍历方式可以唯一确定一棵二叉树,结合力扣105题

对于一棵树的前中序三种顺序的遍历方式,任何一种单独拿出来都无法确定一棵树,那么两种遍历方式得到的节点数据能否组成一棵二叉树呢?先来看看能有哪几种组合:先序遍历 + 中序遍历后序遍历 + 中序遍历先序遍历 + 后续遍历(不可行)以上三种组合都可以组成二叉树,但是只有前两种组合可以唯一确定一棵二叉树,最后一种也就是先序遍历 + 后序遍历无法唯一确定一棵二叉树。为什么呢?下给出一棵树的前中后序遍历:先序遍历:A B D H L E C F I J M N G K中序遍历:D H L B E A

2021-08-18 23:46:11 8151 2

原创 二叉树的旋转,左旋和右旋

在AVLTree中经常会有以某个节点为点对子树进行旋转的操作,今天就和大家分享一下什么是二叉树的旋转。这是一棵二叉树,上图称为图一。将图一中的树以1为旋转点进行左旋后得到图二:将图一中的树以1为旋转点进行右旋旋后得到图三:将图三一节点1为旋转点点做右旋得到图四:看了几次左旋和右旋之后相信有很多同学已经明白了什么是左旋,什么是右旋,如果还不清楚的话,请结合下面的结论再去理解上图。左旋:旋转点的右子树(包括旋转点)成为旋转点左子树的根节点的右子树,旋转点左子树的根节点的原右子树变为原旋转点的

2021-08-17 00:54:26 2933 1

原创 二叉树节点数目计算的两种思路

介绍两种思想,虽然根本上都是遍历每个结点,但是在写代码的时候采用的是不同的思想。遍历思想先定义一个类变量就是采用二叉树遍历的代码,在经过每个节点的时候类变量++,具体代码如下:public class CountTreeNodeSize { public static int count = 0; //任何一种遍历方法都可以 public static void countTreeNodeSize1(TreeNode root){ if (root == nul

2021-08-10 11:38:44 723

原创 树的常见概念,二叉树的性质

树的常见概念节点的度:树的度:叶子结点或终端节点:双亲节点或父节点:孩子节点或子节点:根节点:节点的层次:输的高度或深度:下面概念只需了解非终端节点或分支节点:兄弟节点:堂兄弟节点:节点的祖先:子孙:森林:二叉树的性质...

2021-08-09 00:00:03 110 2

原创 Java堆溢出,虚拟机栈和本地方法栈溢出

Java堆溢出JVM运行时分区的堆区是占比最大的,它用来存储对象的,每当我们new一个对象,而且要保证这个对象到GC Roots 那些对象是有路径可达的(不可达就有很大可能性被清除),那么当对象的数量超过最大堆容量后就会产生内存溢出异常(Out Of Memory)。我们可以自己设置JVM的相关参数:-Xms:用来设置堆的最小值;-Xms:用来设置堆的最大值。Java堆内存出现的OOM异常其实是我们实际开发中最常见的内存溢出的一种情况。Java堆内存溢出时,Java异常堆栈信息“java.lang

2021-08-08 10:23:27 250

原创 JVM垃圾回收,面试问到的都有了

为什么我们在写Java程序的时候没有过多地去关注内存的分配和回收问题?因为JVM会帮助我们完成这两个工作,准确的说是JVM内存管理器来完成的。内存管理器(Memroy Collector)通常我们又叫它垃圾回收器(Garbage Collector)也就是GC。在上一篇博客中我们讲了JVM运行时内存分区,大体上分为线程共享和线程私有,线程私有的分区有Java虚拟栈,本地方法栈和程序计数器,对于这三个内存分区的具体分配和回收是显而易见的,他们的生命周期与线程的创建和结束同步,是确定的,因此这篇博客我们讨论方

2021-08-07 00:12:35 111

原创 初识JVM执行引擎

这篇博客主要记录我对执行引擎刚开始学习的认识。当程序开始运行之后,开始以下步骤:1.执行类的加载。2.创建主线程3.启动类main方法第一条字节码所在地址放入主线程pc(程序计数器)中4.开始执行引擎的整形周期那么什么是执行引擎的执行周期呢?想象一个执行引擎是C语言写的,字节码最终表现为 unsigned int32_t。那么执行周期就如下所示:执行引擎还有一个重要的责任:负责优化执行逻辑。把这个过程称为:JIT(Just In Time)即时化编译,负责把用户的代码进行无害改写,这个

2021-08-02 12:56:57 53

原创 Java类的加载过程,类加载器,双亲委派原则

Java一个类的加载过程:1.加载a.jvm会根据类名找到对应的类文件b.进行文件内容读取2.链接链接主要是验证类中数据是否合法,然后把刚加载进来的类和其他类和其他类的惯性系建立清楚,主要有以下几个步骤a.验证b.准备c.解析3.初始化a.在内存对应位置申请空间b.按照jvm的组织方式,将数据放到各自位置c.执行类的静态初始化说到这里就不得不说一下静态属性的初始化顺序:1.父类的初始化必须在子类的初始化之前2.每个类中的初始化可以按照代码书写顺序依次进行,这里可能有两种书写风格

2021-08-02 11:19:06 82

原创 JVM运行时内存分区

什么是JVM?JVM概述——初识JVM(类加载器,垃圾回收器,执行引擎)上一篇博客我们对jvm以及它的三个“部件”有了初步的认识,这一篇我们探讨一下源码经过编译、加载后这些数据被jvm分类存储在内存中,根据数据的特性,jvm从逻辑上把内存划分为以下几个区域:方法区、虚拟机栈、本地方法栈、程序计数器、堆。程序计数器(线程私有)程序计数器是一块比较小的内存空间,可以看做是当前线程所执行的字节码的行号指示器。如果当前线程正在执行一个Java方法,这个计数器记录的是正在执行的虚拟机字节码指令的地址;如果

2021-08-01 19:23:14 239

原创 什么是JDK,什么是JRE?JDK的安装和环境变量的配置

JDK 基本介绍JDK 的全称(Java Development Kit Java开发工具包)JDK = JRE + Java的开发工具(java,javac,javadoc,javap等)JDK是提供给Java开发人员使用的,其中包含了java的开发工具,也包括了JRE。这也是为什么安装了JDK,就不用在安装JRE了。JRE 基本介绍JRE(Java Runtime Environment java运行环境)JRE = JVM + Java的核心类库包括了Java虚拟机(JVM Jav

2021-07-30 22:38:28 1344

原创 java17都快出了,为什么现在大多还在用java8

为什么现在都在用java8或者java11?下面是甲骨文官网截的图,可以看到,java8和java11都是LTS版本,LTS即Long-term_Support,就是长期支持版,从下图可以看到java8会一直被支持到2022年3月,它的扩展更是会到2030年12月,java11则会被一直支持到2023年11月,扩展回到2026年11月。像java8后边出来的好多版本比如下图中的java9,java10不是LTS版本,所以现在已经不被支持了。这就是为什么java17都快除了,现在大都还在用java8的原

2021-07-30 22:09:17 8002 4

原创 什么是JVM?JVM概述——初识JVM(类加载器,垃圾回收器,执行引擎)

此篇文章属于作者初识之后的概述总结,谈论的层面很浅,大佬勿喷。目录类加载器内存管理器(垃圾回收器)执行引擎JVM全称是Java Virtual Machine,意为java虚拟机,所以要了解什么是JVM我们应该先了解什么是虚拟机。虚拟机指通过软件模拟的具有完整硬件功能的、运行在一个完全隔离的环境中的完整的的计算机系统。虚拟机模拟为什么要模拟一个计算机系统?因为这样做就可以让java程序员不用太多的关注底层操作系统和计算机组成方面的东西,我们编写出的代码在jvm之上运行,这大大减小了java程序员的负

2021-07-30 11:18:51 229

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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