自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 JVM类加载和垃圾回收算法详解

如果一个类收到了类加载的请求,他首先不会自己去尝试加载这个类,而是把这个请求委派给父类加载器去完成,每一个层次的类加载器都是如此,因此所有的加载请求最终都应该传送到最顶层的启动类加载器中,只有当父类加载器反馈自己无法完成这个加载请求(他的搜索范围中没有找到所需的类)时,子类加载器才会尝试自己去完成加载。

2024-11-26 22:53:00 1060

原创 Linux指令的基本使用

ls [选项] [目录或文件]对于目录,该命令列出该目录下的所有子目录与文件. 对于文件,将列出文件名以及其他信息。

2024-11-11 20:09:50 619

原创 网络原理-------TCP协议

拥塞控制, 就是TCP协议想尽可能把数据传输给对方, 但是又要避免给网络造成太大压力的折中方案.

2024-05-28 16:35:03 1054

原创 【JavaEE】网络初识 (IP地址, 端口号, 协议, 封装和分用)

本章来介绍一下网络中的一些基本概念, 例如 : IP地址, 端口号, 协议, 协议分层, 封装, 分用等等.

2024-01-21 17:21:08 1296

原创 File类和InputStream, OutputStream的用法

修饰符及类型属性说明依赖于系统的路径分隔符,String 类型的表示依赖于系统的路径分隔符,char 类型的表示修饰符及返回值类型方法签名说明intread()读取一个字节的数据,返回 -1 代表已经完全读完了int最多读取 b.length 字节的数据到 b 中,返回实际读到的数量;-1 代表以及读完了int最多读取 len - off 字节的数据到 b 中,放在从 off 开始,返 回实际读到的数量;-1 代表以及读完了voidclose()关闭字节流签名说明。

2024-01-02 15:42:00 1458

原创 【Java多线程】: 线程池的详解和实现

在多线程编程中, 我们通常会面临创建和管理多个线程的任务, 而线程池就是管理这些线程的只能方式, 可以更有效的利用计算机资源.我们可以把线程池想象成一个工人队伍. 假设你有一堆任务需要去完成, 如果每次都雇佣一个工人, 等其把任务完成后再将其解雇, 这样可能会很低效. 而线程池就是提前雇佣好了一堆工人, 他们一直在哪里等待着接受任务, 当有新任务来时, 可以直接分配给工人,不用每次都重新雇佣和解雇 (线程的创建和销毁)

2023-11-26 17:42:45 1071

原创 锁(synchronized)和死锁

上一篇是讲述的进程和线程, 并讲述了他们之间的联系和不同之处, 多线程的存在很大程度上的解决了频繁创建销毁进程的开销过大, 但同时多线程在带来便利的同时带来了线程安全的问题, 这其中就包括我们经常能听到的死锁问题。

2023-11-16 16:51:43 274

原创 进程和线程是什么 (进程线程之间的联系和区别)

最典型的, 进程的内存空间需要有专门的区域储存要执行的指令, 以及指令依赖的数据 (同时还需要存储运行时产生的临时数据) , 进程启动的过程就是: 双击.exe 系统就会读取可执行文件的内容加载到内存中 (exe中的数据也是需要加载到内存中的) , 然后 CPU 才能从内存中取走指令, 进一步执行指令.每个进程在运行的时候, 都会分配一定的内存空间. 这个进程的内存空间, 具体是在哪里, 以及分配的内存空间有哪部分, 每个部分的作用…

2023-11-06 17:38:42 129

原创 哈希表的介绍 ( Java实现 )

像上面的例子, 如果插入的key是44的话, 那么计算出的哈希地址是4,然而已经有4在其位置了, 只能向后找空位置, 发现index为8的位置是空的, 那么就插入到8的位置。我们需要明确一点,我们哈希表中数组的存储容量往往是要小于实际要存储的关键字的数量,这就导致一个问题,冲突是必然的,但我们能做的是尽量降低冲突率。对元素的key进行同样的运算,把求得的值当作存储为止,取出该位置的元素,然后比较key知否相等,若相等,则成功。根据待插入的key,以此函数算出该元素的存储位置并按该位置存放。

2023-10-15 20:37:25 141 1

原创 Map和Set以及搜索二叉树的介绍

本章介绍二叉搜索树的实现,Map和Set的区别,TreeMap,TreeSet,HashMap.HashSet的区别Map和Set是一种专门用来进行搜索的容器或数据结构,也可以用于存储和操作数据集合,其搜索的效率与其具体的实例化子类有关.静态查找:一般不会对区间进行插入和删除操作,像以前的搜索方式为:直接遍历(O(n)),二分查找(O(log2n)).动态查找:那就与静态查找相反,在查找时会涉及到插入和删除的操作.即Map和Set所适用的查找.

2023-09-19 22:06:21 166 1

原创 七大排序算法——详细介绍(下)

这一篇文章主要想分享上次未讲完的两个排序算法——快速排序和归并排序(上一篇讲了前五个排序算法分别是,插入排序,希尔排序,选择排序,堆排序,冒泡排序,有兴趣可以去上一篇–>七大排序算法——详细介绍(上)

2023-09-01 23:20:34 97

原创 七大排序算法——详细介绍(上)

这一章主要是对七大排序算法进行详解,并对其稳定性及复杂度进行分析。那么什么是稳定性呢?其指的是即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排序算法是稳定的;否则称为不稳定的。

2023-08-04 21:02:18 135

原创 【Java】—— 接口

之前我们讲了抽象类,今天我们来共同探讨与其相似又不同的->接口, 抽象类和接口都不能被实例化,但可以定义抽象类和接口类型的引用。一个类如果继承了抽象类和接口,必须要对其中的抽象方法全部实现**接口**(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。JavaSE语法阶段就先到这里啦!在后续有补充的话我也会一直更新的!

2023-06-07 11:22:42 158

原创 【Java】—— 抽象类

我们在前一篇文章讲了继承和多态,如果说父类中的方法被子类重写后,再通过父类引用调用此方法则是调用的重写后的方法。那么原来父类中的方法是否实现就无所谓了,那么有没有一种类生来就是被继承的,然后重写其方法的呢?没错,他就是抽象类!🤩。

2023-05-29 21:58:44 189 1

原创 【Java】—— 继承和多态

4. this是当前对象的引用,当前对象即调用实例方法的对象,super相当于是子类对象中从父类继承下来部分成员的引用。:也称为后期绑定(晚绑定),即在编译时,不能确定方法的行为,需要等到程序运行时,才能够确定具体调用那个类的方法。多态的概念:通俗来说,就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会产生出不同 的状态。可以访问子类和父类的,当子类成员和父类成员中名字相同时,则this访问得到的子类中的成员,而。先有父,再有子:子类对象构造时,需要先调用父类构造方法,然后执行子类的构造方法。

2023-05-10 11:04:22 1305

原创 【Java】—— 类和对象(下)

【Java】—— 类和对象(上)本期介绍的是封装、包、及代码块等用法🥰基本规则在文件的最上方加上一个 package 语句指定该代码在哪个包中.包名需要尽量指定成唯一的名字, 通常会用公司的域名的颠倒形式(例如 com.bit.demo1 ).包名要和代码路径相匹配. 例如创建 com.bit.demo1 的包, 那么会存在一个对应的路径 com/bit/demo1 来存储代码.如果一个类没有 package 语句, 则该类被放到一个默认包中.

2023-05-04 12:59:27 145 1

原创 【Java】—— 类和对象(上)

Java是一门纯面向对象的语言(Object Oriented Program,简称OOP),在面向对象的世界里,一切皆为对象。面向对象是解决问题的一种思想,主要依靠对象之间的交互完成一件事情。用面向对象的思想来涉及程序,更符合人们对事物的认知,对于大型程序的设计、扩展以及维护都非常友好。面向对象程序设计关注的是对象,对象是生活中的实体,对实体进行简单的描述,包括你需要用到的他的各种属性,功能等,该过程成为对实体的抽象。在java中定义类时需要用到class关键字,具体语法如下。

2023-05-02 12:17:20 170

原创 汉诺塔问题——【C语言】

汉诺塔问题是什么简单来讲:就是有三根柱子,记为A,B,C,其中A上有n个盘子,我们需要借助B,把A上的所有盘子都移动到C上,并且有两条规则:1. 大盘子不能在小盘子的上面2. 一次只能移动一个盘子

2023-04-24 15:34:06 415

原创 初识【Java】—— main函数及数据类型与变量

Java是一种优秀的程序设计语言,它具有令人赏心悦目的语法和易于理解的语义。不仅如此,Java还是一个有一系列计算机软件和规范形成的技术体系,这个技术体系提供了完整的用于软件开发和跨平台部署的支持环境,并广泛应用于嵌入式系统、移动终端、企业服务器、大型机等各种场合。

2023-04-17 15:53:17 799 1

原创 数据结构-C-多项式加法

在学习多项式加法算法的过程中,我发现设计高效的算法并不是一件容易的事情。在使用链表实现多项式加法算法时,考虑链表的特点,尽可能利用链表的优势,降低算法复杂度,提高算法的执行效率。在实现多项式加法算法的过程中,我了解到了许多关于链表的基本操作和算法,例如链表的遍历、插入、删除、反转等等。学习多项式加法算法的过程中,我深刻地认识到,链表这种数据结构在实现复杂的应用程序时,其灵活性和可扩展性是无与伦比的。作为重要的算法之一,学习数据结构中的多项式加法算法,让我更加深入地了解了数据结构和算法之间的互相作用。

2023-04-10 20:33:27 108

原创 C---静态链表

静态链表就是借助数组来描述线性表的链式存储结构,此时的数组的分量就是我们自己定义的结构体,数组中的一个分量表示一个结点,同时用游标(int类型的元素)代替指针描述结点在数组中的相对位置,即数组的分量形式是结点+游标。此外,数组的第0个分量可以看成链表中的头结点,其游标即链表中的指针域则就指向链表的第一个结点。这种存储结构是需要预先分配一个较大的空间,但是在线性表的插入和删除时是不需要移动元素的,仅需要修改游标,因此是具有链式存储结构的主要优点的。使用静态链表存储数据,数据全部存储在数组。

2023-04-10 19:52:39 168

原创 【C语言】程序环境和预处理

_FILE__ //进行编译的源文件 __LINE__ //文件当前的行号 __DATE__ //文件被编译的日期 __TIME__ //文件被编译的时间 __STDC__ //如果编译器遵循ANSI C,其值为1,否则未定义这些预定义符号都是语言内置的。# define MAX 1000 # define reg register //为 register这个关键字,创建一个简短的名字 # define do_forever for(;;

2023-04-07 17:48:23 154 5

原创 数据结构之——单链表

链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) + 指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。为了能正确表示结点间的逻辑关系,在存储每个结点值的同时,还必须存储指示其后继结点的地址(或位置)信息(称为指针(pointer)或链(link))链式存储是最常用的存储方式之一,它不仅可用来表示线性表,而且可用来表示各种非线性的数据结构。① 用一组任意的存储单元来存放线性表的结点(这组存储单元既可以是连续的,也可以是不连续的)

2023-04-02 23:03:43 176

原创 【C语言】文件操作

为什么使用文件我们前面学习结构体时,写了通讯录的程序,当通讯录运行起来的时候,可以给通讯录中增加、删除数据,此时数据是存放在内存中,当程序退出的时候,通讯录中的数据自然就不存在了,等下次运行通讯录程序的时候,数据又得重新录入,如果使用这样的通讯录就很难受。我们在想既然是通讯录就应该把信息记录下来,只有我们自己选择删除数据的时候,数据才不复存在。这就涉及到了数据持久化的问题,我们一般数据持久化的方法有,把数据存放在磁盘文件、存放到数据库等方式。

2023-04-01 19:34:27 122 2

原创 数据结构——顺序表

【代码】数据结构——顺序表。

2023-03-28 10:30:53 89

原创 【C语言】自定义类型:结构体,位段、枚举,联合

本章主要是来介绍C语言中的自定义类型:结构体、位段、枚举、联合的介绍和使用有了结构体类型,那如何定义变量,其实很简单。定义的方法一班有两种,一种是在结构体的声明后面直接定义变量,如果要定义多个变量时,用逗号隔开;第二种是单独再定义变量,这与用int 类型来定义一个a变量并无差别。struct Stu //类型声明 {//名字 int age;//年龄 } s1;//初始化int data;} n1 = {10 , {//结构体嵌套初始化 struct Node n2 = {

2023-03-25 15:00:52 159 4

原创 初次接触数据结构的感受

在学习了数据结构的第一节课后,想与大家分享一下我的心得体会。

2023-03-22 21:59:57 157

原创 内存函数(memcpy、memmove、memcmp)的介绍使用或模拟实现

函数memcpy从source的位置开始向后复制num个字节的数据到destination的内存位置。这个函数在遇到 '\0' 的时候并不会停下来。如果source和destination有任何的重叠,复制的结果都是未定义的。一点注记:num是表示的是要复制的多少个字节的大小,而并非是元素的个数。例如:复制五个int类型的元素,那么num=4(int类型的大小)*5(元素个数)=20和memcpy的差别就是memmove函数处理的源内存块和目标内存块是可以重叠的。

2023-03-16 11:42:10 654 4

原创 浮点数在内存中的存储

当我们看到这样一段代码,那么他输出的结果是什么呢?想必大部分人看到这个结果和我第一次是一样的,第一行与第四行和我心中的答案是一样的,可中间两行的结果是怎么得出的呢?num 和 *pFloat 在内存中明明是同一个数,为什么浮点数和整数的解读结果会差别这么大?这就不得不提及浮点数在内存中的存储规则了!

2023-02-21 15:58:50 246

原创 【C语言】分支语句

本篇是讲述在C语言学习过程中我对于分支的一些理解和我们在平时写代码时容易犯的一些错误。C语言的语句可以分为以下五类:1. 表达式语句2. 函数调用语句3. 控制语句4. 复合语句5. 空语句控制语句用于控制程序的执行流程,以实现程序的各种结构方式(C语言支持三种结构:顺序结构、选择结构、循环结构),它们由特定的语句定义符组成,C语言有九种控制语句。可分成以下三类:1. 条件判断语句也叫分支语句:if语句、switch语句;

2023-01-11 18:41:16 551 4

原创 判断回文字符串—C语言

输入一个字符串,判断该字符串是否为回文。回文就是字符串中心对称,从左向右读和从右向左读的内容是一样的。输出在第1行中输出字符串。如果它是回文字符串,在第2行中输出Yes,否则输出No。输入在一行中给出一个不超过80个字符长度的、以回车结束的非空字符串。

2022-12-17 23:11:27 13015 7

原创 我的编程之路

高考落下帷幕,我的九年义务教育也就此与我say goodbye了,当录取通知书上的“计算机类” 落定尘埃,也算是提前奠定了我将来的程序员身份,那么我想畅谈一下我这个“小白”的编程之路。这是我的第一篇博客,在攻克编程的道路上我会时常与大家分享我的心得和体会,有缘我们下次再见。

2022-12-02 23:54:23 549

空空如也

空空如也

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

TA关注的人

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