![](https://img-blog.csdnimg.cn/20200416110353699.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
JAVA核心技术
文章平均质量分 89
该目录下主要是我在学习Java核心技术知识中的一些学习笔记,比如一些java基础语法以及Java中思想的一些理解。
云杉木屋
流浪在北方蔚蓝的路
展开
-
关于多线程操作单个变量进行加1问题的分析
摘要:在多线程的学习中,我们经常会接触到一个例子,这个例子也是一个重要的面试题,在此我详细的分析这个问题。原创 2022-08-17 22:19:37 · 1359 阅读 · 0 评论 -
简述HashSet的扩容机制以及我们在重写equals()的时候为何会重写hashcode()
摘要:在背面试知识点的时候存在这样一条著名的面试题:我们重写equals()的时候为什么要重写hashcode()?答案往往是:二者是配套使用的,只重写equals()不重写hashcode()会导致判断的时候出错误,这是一个非常模糊的回答,直接记住往往会导致我们持续的错误理解,今天在看HashSet的源码的时候发现了其本质上的原因,特来记录原创 2022-10-08 14:35:26 · 579 阅读 · 0 评论 -
多线程初学
摘要:在Java核心技术的学习中我们学到过一个叫做线程的模块,在程序开发中离不开高并发和多线程,在此我们来好好研究一下线程与线程池的关系。线程池是面试的高频考点,在项目开发中使用线程池解决问题是一个亮点,而线程池的运行过程也是面试的重点。...原创 2022-06-19 15:06:20 · 581 阅读 · 0 评论 -
快速排序详解
摘要:快速排序是一种使用到了递归的重要排序方法,其具备比较低的平均时间复杂度,但是它的最坏情况时间复杂度并不是特别优秀。在某些情况下存在使用快速排序的必要,因此其作为主要的八大排序还是有很大的学习价值的,在此我们详细分析整理快速排序。原创 2022-04-02 15:26:45 · 22180 阅读 · 4 评论 -
二叉排序树节点删除详解
摘要:本篇笔记作为补充笔记,主要讲解在二叉排序树中的节点删除这一行为的操作原创 2022-04-01 21:43:15 · 13060 阅读 · 3 评论 -
二叉排序树详解
摘要:本篇笔记专门介绍二叉排序树,重点讲解了二叉排序树的特性,以及二叉排序树各方面的基本实现。原创 2022-04-01 16:49:42 · 20820 阅读 · 1 评论 -
数据结构——哈希表
摘要:本篇笔记主要讲解了重要数据结构——哈希表,以及键值对的含义,为什么要用键值对,哈希表的应用场景,以及内存中运行的数据库的基础知识原创 2022-03-24 00:16:16 · 10770 阅读 · 0 评论 -
基数排序详解
摘要:基数排序是一种代码量比较复杂,但是时间复杂度比较低的排序,其时间复杂度和数组规模以及使用到的桶的个数相关,基数排序和计数排序、桶排序有很大的相关性,我们在学习排序的时候一般会成套的学习这三种排序,基数排序是这三种使用到“桶”的排序中时间复杂度比较高的一个,但是它的最好情况与最坏情况也比较稳定。接下来我们学习基数排序。原创 2022-03-16 22:09:29 · 2360 阅读 · 1 评论 -
堆排序(第二遍分析)
摘要:堆排序作为最复杂的排序,值得我们进行深入的学习与反复的练习,具说通常情况下的堆排序是需要进行4~5轮学习的,因此我对堆排序进行了第二轮的学习,以增加熟练度与理解程度。原创 2022-03-15 18:23:12 · 1258 阅读 · 0 评论 -
算法学习——快慢指针与相遇问题
摘要:在之前上大学时我就对算法十分怵头,记得其他同学们应该和我也差不多,每到算法课的时候总能听见一片开游戏的声音,考研二战失败之后我打算找工作,结果发现找工作还是绕不过算法,真是难受。在算法的初级学习中,我遇到了一个快慢指针问题,其中有一个难度稍高的问题我认为非常有意思,这让我再次深刻的认识到了算法的本质其实是数学原理,或者是数论之类的,也就是说,我不仅绕不过算法,还绕不过数学。这篇博客介绍了快慢指针与追击相遇问题。原创 2022-03-13 12:23:08 · 810 阅读 · 1 评论 -
希尔排序详解
摘要:插入排序固然是个好排序,因为它的排序效率是和数组状态挂钩的,它的最好情况时间复杂度很理想,但是它存在一个巨大的问题,那就是在整个数组的前n-1个数字都有序,唯独最后一个数字的存在导致整个数组无序时,会出现比较严重的浪费现象,因此人们更新了插入排序,并命名这种更新的方法为希尔排序,接下来我们详细介绍希尔排序。原创 2022-03-09 17:29:26 · 2005 阅读 · 2 评论 -
插入排序详解
摘要:插入排序是一种非常有意思且比较高效的排序方法,同时插入排序是希尔排序的基础,现在我们来看看插入排序。原创 2022-03-08 17:37:37 · 39106 阅读 · 15 评论 -
选择排序详解
摘要:选择排序算法是一种比较容易理解的排序算法,记得我在第一次学习C语言的时候,老师让我们自己尝试写一个排序,我们很多人下意识写出来的就是一种具有选择排序思想的排序算法,只不过那种算法会花费一个额外的数组进行存储,在学习了选择排序算法之后,我知道了那个数组是没有必要声明的原创 2022-03-08 15:31:48 · 4933 阅读 · 1 评论 -
冒泡排序详解
摘要:冒泡排序是是最为经典,最为简单也是最为易懂的排序方法,通常来讲我们最早学习的排序算法就是冒泡排序了,经典铸就永恒,冒泡排序算法是每个学习排序算法的人都必须学习的一个排序算法。接下来我们来详细解研究冒泡排序。原创 2022-02-06 23:40:22 · 4484 阅读 · 2 评论 -
关于排序二叉树和平衡二叉树的基础知识
摘要:这篇文章主要对排序二叉树和平衡二叉树的基础知识进行简要的说明,关于二叉树的详细笔记将在数据结构的学习中进行记录,这里只进行基础知识的了解。原创 2022-02-04 20:47:53 · 1508 阅读 · 0 评论 -
Java学习笔记:2022年1月11日
摘要:这篇笔记主要讲解了一些数据在计算机中的存在方式相关的知识点,并由此延伸出了数据在计算机中的操作以及一些数据结构的知识。原创 2022-02-04 17:39:49 · 831 阅读 · 0 评论 -
堆排序详解
摘要:堆排序是一种效率非常高的排序算法,同时它的理解以及书写方式都是比较复杂的,以至于很多企业在进行面试的时候都喜欢考察堆排序的书写速度,而堆排序在项目应用中也是有着广泛的天地,因为它的高效率,使得很多数据统计场合都会有堆排序的身影。...原创 2022-03-06 10:42:09 · 8068 阅读 · 0 评论 -
Java学习记录:2022年1月13日(其二)
摘要:本篇笔记主要记录了在设计类时的一些注意事项,类加载时类中各个部分的加载顺序以及继承和多态的知识。原创 2022-02-06 19:40:55 · 544 阅读 · 0 评论 -
Java学习笔记:2022年1月13日(其一)
摘要:这篇笔记主要讲解了Java中的自定义类、以及构造一个类时所需要了解的一些重点知识。原创 2022-02-05 22:45:39 · 471 阅读 · 0 评论 -
深入探究Java中的对象类型变量声明操作——在声明对象时,系统究竟做了什么?
摘要:本文主要对Java中的对象类型变量的声明的底层原理做了探究。原创 2022-02-03 00:56:54 · 1215 阅读 · 0 评论 -
Java学习笔记:2022年1月10日
摘要:这篇笔记主要记录了学习《Java核心技术 卷一》的第四章时的一些心得,主要阐述了对象与类这一部分的内容。需要注意的是,这一章的内容需要精心学习,因为很多知识点在笔试面试中很容易考到。原创 2022-02-02 11:16:30 · 692 阅读 · 0 评论 -
Java学习笔记:2022年1月9日(其二)
摘要:这篇笔记主要记录了1月9日学习的第四章的类的基础知识,以及访问器以及访问器于多线程的意义。原创 2022-01-30 00:56:16 · 790 阅读 · 1 评论 -
Java学习笔记:2022年1月9日(其一)
摘要:这篇笔记主要记录了Java运行时中的两种变量、以及参数的两种传递方式。原创 2022-01-29 22:22:09 · 1243 阅读 · 0 评论 -
Java学习笔记:2022年1月8日
摘要:这天主要学习了HTML超文本标记语言以及CSS层叠样式表的基本知识,主要就是通过这两种技术进行基本的网页渲染原创 2022-01-28 01:08:36 · 780 阅读 · 0 评论 -
Java学习笔记:2022年1月7日
摘要:今天的这篇笔记主要是通过讲解基本的JVM结构来理解Java中一些行为的运行机制,进而更加的深入理解Java的运行原理。原创 2022-01-21 00:59:44 · 563 阅读 · 0 评论 -
Java学习笔记:2022年1月6日(补充)
摘要:这篇笔记主要记录了2022年1月6日下午的笔记,主要内容为Java语言中的基础操作,以及基础知识点,了解这些后基本上就可以使用Java写算法了。原创 2022-01-19 18:46:30 · 641 阅读 · 0 评论 -
深入探讨进制转换问题
深入探讨进制转换问题1.十进制的拆分 对于一个十进制的数字:4572,我们实际上可以将其拆分成:4000+500+70+2。十进制是逢十进一,因此我们可以知道2是2个1,0个10;70是7个10;500是50个10;4000是400个10,我们更进一步的讲,最前边的首位,是其高位上的个位,而后边的零,则代表了数量级,因此4000的数量级是1000,它是一个千位级别的4,而500则是百位级别的5,以此类推。 当然上边的思路并不值得理解,因为这是我自己的脑回路,大家可以按照自己的方式去理解,但总之原创 2022-01-19 09:49:28 · 765 阅读 · 0 评论 -
关于进制问题
关于进制文章目录关于进制1.进制为何物?2.计算机使用什么进行计数以及为何?3.二进制4.传统的进制转化1.二进制转化为十进制2.十进制转化为二进制3.八进制转化为十进制4.十进制转化为八进制5.n进制转化为十进制6.十进制转化为n进制7.总结1.进制为何物? 进制是人类进行计数的计数方式,据说是根据系绳结演化而来的,也有可能是外星人教的,不过这不重要。所谓进制就是为了计数方便,在低位数达到一定数量之后便向高位进一位,用高位的这一位来表示低位的全部计量。如在十进制中,当各位9再加一个1时,那么个位清原创 2022-01-18 16:15:24 · 817 阅读 · 0 评论 -
关于记事本的实现原理
关于记事本的实现原理文章目录关于记事本的实现原理1.记事本的实现原理2.扩展:编码与字体3.Word和WPS的实现原理 记事本是我们计算机上的最基础的文本编辑器,使用记事本我们可以写各种各样的文档,只要修改后缀就可以改变成我们想要的文档,比如我们可以使用记事本写Java文件,HTML文件等,那么记事本的实现原理是什么呢? 记事本和Word以及WPS的实现其实基本原理类似,只不过后两个加上了更多额外的附加功能,让我们编辑起来更加省力而已,他们基础的文件编辑功能的实现原理都是一样的,即编码。原创 2022-01-18 16:13:11 · 1124 阅读 · 0 评论 -
Java学习笔记:2022年1月6日
摘要:不可变字符串为什么不可变?StringBuffer类与StringBuilder类,字符串操作拾遗,记事本原理,进制转化问题。原创 2022-01-18 16:11:23 · 933 阅读 · 0 评论 -
Java学习笔记:2022年1月4日
摘要:字符串的基本介绍,字符串的基本概念,不可变字符串的含义,字符串在内存中的存在机制,字符串的API。原创 2022-01-14 15:11:08 · 637 阅读 · 0 评论 -
布尔类型为何有32位?(补充)
布尔类型为何有32位?(补充) 昨天我总结了一些关于布尔类型为何占据32位内存空间的知识,尽管里边大部分的解释意思都到点上了,但我仍然觉得很不严谨,因此我在这里进行进一步补充。 其实关于变量这个东西,它在硬盘上的状态和在内存上的状态是不一样的,变量对于我们来说,实际上是屏幕上的字符,而屏幕上的字符其本质上是以文件的形式存储的,即使它处于编辑状态位于内存上时,它本质上还是编辑器上的编码,它此时占用的内存大小其实就是这些字符的真实大小,而我们所说的32bit实际上是它被编译器编译成class文件后并原创 2022-01-14 08:58:25 · 363 阅读 · 0 评论 -
布尔类型为何占32个比特位?
布尔类型为何占32个比特位? 学过C语言的同学都知道,我们表示真和假时仅用一个1或者0就好了,比如在while循环中,只要往while()的括号中加一个1,它就会变成一个死循环,往里边加一个0,这个循环就不会执行了,在C语言中的布尔运算的结果也是用0和1来表示的,或者说在C语言中根本没有布尔类型,这个结果用0和1表示即可,那在Java中为何要单独设置一个布尔值,用麻烦的英文表示,而且就这两个值,为什么还要占用32位呢?我们知道32位可以表示2^32个数值,布尔类型仅有两个数值,这样一来就浪费了32位的原创 2022-01-13 23:43:50 · 1556 阅读 · 1 评论 -
浅析码点和代码单元
浅析码点和代码单元 这几天在学习《Java核心技术 卷一》的时候学习到了一个叫“码点和代码单元”的小节,感觉不是十分明白,在多次查阅资料求证之后,对其有了比较基本的正确的了解。 码点和代码单元的概念是基于Unicode编码集的,Unicode编码集是一个由国际标准化组织建立的旨在标准化全球计算机字符编码的大编码集,它收录了人类所创造的几乎所有文字,它规定了每个字符对应的编号,然而它并没有规定这些编号该如此存储,UTF-8,UTF-16这些编码规则,规定的就是字符对应的编号在计算机中如此存储。顾名原创 2022-01-13 08:27:43 · 1088 阅读 · 0 评论 -
Java学习笔记:2022年1月2日
为何学习Java及Java的基础语法知识,记事本的显示原理,Java中的重要知识点原创 2022-01-12 22:42:51 · 302 阅读 · 2 评论 -
Java学习笔记:2021年12月31日下午-2022年1月1日上午
摘要:主要记录了计算机的电气构成,学习Linux系统的原因以及关于Linux以及相关操作的基础知识。原创 2022-01-12 10:35:26 · 637 阅读 · 0 评论 -
Java学习笔记 :2021年12月31日 上午
Java学习笔记 :2021年12月31日 上午文章目录Java学习笔记 :2021年12月31日 上午**关于计算机语言**1.关于语言的分类2.小结关于Java语言的基础语法1.主方法2.其他方法3.数据类型笔记重点※数据类型关于计算机语言 人们通过计算机语言来进行程序的编写,实际上任何系统都离不开语言,我们人类的社会系统需要语言,因为文明的构成是通过人与人沟通来形成的,文明就是传达,因此人类和计算机的沟通也是需要一些信号的,这些信号就叫做语言。 计算机自身的语言实际上就是高低电平,从逻原创 2022-01-10 17:56:39 · 768 阅读 · 0 评论 -
Jdk中没有jre文件夹怎么办?
jre包是运行Java程序必不可少的运行环境,比如我们在玩Java版的Minecraft时就必须配置jre包的路径。jre包中还有其他很重要的东西,具体都有什么我也没有研究过,但是如果我们想查看一个Java版本的源代码,我们需要使用到jre包。不走运的是新版本的jdk中似乎没有jre包的存在,这是因为在Java8之后在安装jdk时便不再提供jre包安装,而是让我们根据自己的需要自行的安装,接下来我会展示如何自己安装jre包(以Java11为例)。1.打开命令行工具,win+R或者直接搜都可以,但是一定要原创 2020-11-13 09:22:10 · 38989 阅读 · 36 评论 -
编译原理LL(1)型文法的操作——判空,First 集,Follow集,select集,预测分析表,预测过程
编译原理实验之LL(1)型文法 这个实验是我们编译原理的一个作业,我花了不少时间,问了很多同学,参考了老师给的文档终于把实验做了出来,在这里我打算把整个实验解决的过程来分享一下,也希望大家分享更好,更优质的算法和代码。这个实验我最早打算用C语言去写,但是后来发现如果用C语言写会非常麻烦,所...原创 2019-11-21 16:14:45 · 1400 阅读 · 0 评论 -
6-2 sdust-Java-模拟主板、USB口、TypeC口、PS2口设备 (10 分)
6-2 sdust-Java-模拟主板、USB口、TypeC口、PS2口设备 (10 分) 使用Java编码设计实现模拟计算机硬件中的主板、USB口、TypeC口、PS2口及其组合方式。通常,计算机主板中提供了各种不同类型的对外接口,可以对接不同类型的设备。例如,可以接USB口的U盘、鼠标等,可以接口TypeC口的鼠标、键盘,可以接PS2口的键盘。要求:通过下面Main类中ma...原创 2019-03-21 17:38:22 · 1298 阅读 · 2 评论