自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 HashTable ,HashMap,和ConcurrentHashMap的区别

这里呢,在我们学习多线程之前,HashMap,在数据结构中我们都已经非常熟悉了,HashMap,有key和value,key和value都是一一对应的关系。key允许为null。而当我们学习过线程之后呢,HashMap是线程不安全的。而HashTable是线程安全的,在创建的时候,他会给 this加锁,使线程安全,但是这样的加锁,在我们多个线程对数据进行读写操作的时候,会发生阻塞,效率非常低,他的key不能为null。

2024-04-23 20:55:42 292

原创 线程池详解

如图:如图所示,上面的7个参数就是线程池的参数。1. int corePoolSize 和 int maximumPoolSize 这两个参数分别为,核心线程数和最大线程数。这里的maximumPoolSize,其实就是核心线程数 + 非核心线程数。2. long keepAliveTime 和 TimeUnit unit 分别表示,非核心线程的最大存活时间 和 单位时间。

2024-04-15 10:45:56 215

原创 单例模式(饿汉模型,懒汉模型)

在着里我们先了解什么是单例模式。就是某个类在进程中只能有单个实例,这里的单例模式需要一定的编程技巧,做出限制,一旦程序写的有问题,创建了多个实例,编程就会报错。如果我们学会了单例模式,这种模式会提高我们的下限。其中单例模式包含了两种模型,一种是饿汉模型,另一种是懒汉模型,这里的懒汉模型尤为重要,面试也会考。

2024-04-09 21:27:14 448 2

原创 线程安全性问题的原因

这里的意思就是,当两个线程同时启动的时候,两个线程会同时进行,并且是抢占式执行的。而且是随机调度资源的。如打印结果:以上我们可以看到,线程是同时进行的。

2024-04-07 21:08:45 267

原创 进程和线程,线程实现的几种基本方法

我们这里学习进程是为了后面的线程做铺垫的。一个程序运行起来,在操作系统中,就会出现对应的进程。简单的来说,一个进程就是跑起来的应用程序。在电脑上我们可以通过任务管理器可以看到,跑起来的应用程序有哪些,同时也是每一个的进程。在操作系统中,我们常常使用PCB这样的结构体来描述进程,pcb中包含了许多重要的信息,此处不做过多的讨论。在pcb中最核心的就是,其中包括了很多的内存指针,该指针,会根据操作系统的操作来指向所要进行的资源。如图:上图就是,关于操作系统的流程(cpu,pcb,硬件等)。

2024-03-24 22:31:04 423 1

原创 mysql驱动的下载和JDBC的使用(在idea上)

在这里我们需要进入中央仓库中去下载mysql驱动的下载。上面就是中央仓库的网址。如图:上面就是中央仓库的网址首页。1.在上面搜索框内输入mysql如图:这里呢,上面的mysql 是8.0以上版本的,下面的是老版本的mysql。2.如果是新版本点击第一个我这里使用的是新版本的,8.0.31/32/33 这里选一个就行了。3.我这里选中了8.0.31如图我上面标记的部分就是下载。点击就行了。

2024-03-17 21:59:01 730 3

原创 Mysql增删改查(详解)

insert into + 表名 + values + 新增字段。如图:这里我一共添加了三条数据。

2024-03-17 15:36:58 200 1

原创 mysql数据库和表的基本操作

查看数据库的基本操作是:show databases;

2024-03-14 16:52:23 166 1

原创 AVL树和他的旋转

AVL树分其节点有:父亲节点,val值,左孩子节点,右孩子节点,还有平衡因子。在这里的平衡因子属于int类型。AVL树的插入规则,就是左子树的val值要始终小于右子树的val值,并且其平衡因子的绝对值不能大于2,如果平衡因子大于2需要进行调节。当前节点的平衡因子=右子树高度-左子树的高度。但是,不是每棵树,都必须有平衡因子,这只是其中的一种实现 方式。一棵AVL树或者是空树,或者是具有以下性质的二叉搜索树:1. 它的左右子树都是AVL树。

2024-03-03 17:26:16 355 1

原创 Map和Set详解及其相应的例题

关于Map和Set他们的底层分别有搜索树和哈希桶,这里我就不介绍他们底层的结构是怎样的了,这里主要是说明了关于Map和Set的功能和使用。

2024-02-20 18:18:33 812

原创 TopK算法

根放的是倒数第k大的元素,才能保证其余的元素都是比他大的,也就是整个堆中都是我们要找的元素。假如列题:求数组arr[4] = {1,2,3,4}中前k大的元素,输出打印。关与topk是建立在优先队列的基础上的,关于优先队列的底层是利用的堆。关于堆,其实也就是一颗二叉数,堆分为两种一种是小根堆另一种是大根堆。首先我们需要了解,topk算法他是解决什么问题的。简单的来说其实就是,求一个数组中前k个最大的元素。这里从堆的角度思考我们需要在这里建立一个小根堆,分别调用了优先队列中的各方法,来解决问题。

2024-01-26 13:05:19 308 1

原创 二叉树经典面试题

2. 然后还有什么条件不满足呢,就是,当有一个数遍历完了之后,但另一颗数没有遍历完此时两颗数不相等。3. 最后一个就是,当两个数相等的时候,返回true,就是当两棵数都遍历完的时候也没有找到哪个地方有什么不同的地方,其为相同的树。1. 最好想到的就是当两个节点的值不想同的时候,其两棵树不相同,p.val!这里的a和b分别为递归左和递归又的结果,其中一个不为真则两棵树不相等。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。在这我们首先要考虑到的就是关于递归的终止条件是什么。

2024-01-25 20:28:13 325 1

原创 ArrayList 和 LinkedList 的比较

关于ArrayList 如图:关于LinkedList 如图:我们可以从两个图中看到,两个类都继承了List 接口,主要不一样表现在 其ArrayList 主要是基于顺序表的实现 而 LinkedList 基于链表的实现。

2023-12-05 21:07:03 336

原创 顺序表解决杨辉三角问题

其思路就是:我们先创建一个存储顺序表的对象,把顺序表放在每一行,第一行我们之间赋值为1,每一行顺序表的第一个和最后一个都为1,然后我们处理中间的就可以了,中间的其实就是上一行的第 i 个元素和第 i-1 个元素相加,随后我们一一放入顺序表内就可以了。杨辉三角是我们学习各种语言最常见的体型之一。下面是题目的链接,想挑战的可以写一下。这里的ret就是用来存储顺序表的。在这里我采用顺序表解决这类问题,

2023-11-26 16:15:05 357 4

原创 数据结构的时间复杂度和空间复杂度,及相应的例题。

1.如何分辨算法的好坏 算法的好坏就是看他的算法效率。算法效率分析分为两种:第一种是时间效率,第二种是空间效率。时间效率被称为时间复杂度,而空间效率被称作 空间复杂度。 时间复杂度主要衡量的是一个算法的运行速度,而空间复杂度主要衡量一个算法所需要的额外空间。2.时间复杂度什么是大O渐近法?如代码:void func1(int N){ int count = 0; for (int i = 0; i < N ; i++) { for (int

2023-11-23 21:40:58 448 2

原创 图书管理系统(java 代码实现)

先创建一个book包,里面包含,Book和BookList(书架)类。Book 类里面有属性 书名,作者,价格,类型,是否被借出。BookList 类里面有 Book类型的数组,用来存放各种书籍。还有总共有几本书用 countlist表示。

2023-11-19 21:13:07 284 9

原创 抽象类和接口

如果 一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。就比如:我们把动物统一为一个整体,狗属于动物的一种,但是动物是一个大整体,他不是具体的某一个动物,所以不能具体描述狗。因此我们可以把它看成一个抽象类。如上图代码,在定义一个类的时候,我们是 { 父类 + 对象 = new 子类()} 这样定义的,因为在抽象类定义的抽象方法中,我们在子类需要对父类进行重写,因此这样定义会向上转型,可以实现多态,即引用父类方法时,会调用子类重写的方法。如图所示:在我们不能对抽象类进行实例化。

2023-11-16 17:36:13 73 1

原创 封装 继承和多态详解(超级重要!)

Java中主要通过类和访问权限来实现封装:类可以将数据以及封装数据的方法结合在一起,更符合人类对事物的认知,而访问权限用来控制方法或者字段能否直接在类外使用。Java中提供了四种访问限定符:这里我们可以看到用private 修饰就可以保护我们的成员变量,把成员变量用private 修饰起来,这里我们对象的成员在另一个类中就无法实现。

2023-11-10 21:32:04 125 8

原创 JAVA类和对象和其中的注意要点!

首先在这里,进入了java最要的章节,类和对象,开始对面向对象进行学习。面向对象有几个特殊的过程:封装 继承 多态。关于这篇博客主要是对 类 和 对象 进行讲解,后面会介绍封装 继承和多态。

2023-11-07 21:33:41 135 7

原创 JAVA中的一维数组和二维数组并和C语言进行比较

在这里java中的一维数组和c语言的一维数组,有很大的相同之处,但也有很多不同之处,这里主要就是说说他们的不同之处。1.首先是关于定义放面。在c语言中,定义一个整型数组是 int arr[5] = {1,2,3,4,5};这样定义的,这样定义是不是很笼统啊。而在java中,定义一个整型数组是 int[] arr = {1,2,3,4,5};这样定义的,从这里我们可以准确的看出这里是什么类型,int[] 就是他的类型嘛,而c语言中不符合这样,所以java更能充分展示这一点。

2023-11-05 16:16:25 143 7

原创 汉诺塔问题详解

通过以上规律我们可以发现,都是要先把A柱最后一个盘子上的所有盘子先移到B柱上面,把最后一个盘子放在C盘子上,然后再把B柱上的盘子放到C上。2. 此时B柱上有 n-1 个盘子,然后把B柱上,最后一个盘子上 n-2 个盘子放到A柱上,然后把B柱的盘子放到C柱上。1. 我们需要先把A柱上的 n-1 个盘子放到B柱上,然后把最后A柱上的最后一个盘子放到C柱上。A柱上3个盘子打印。

2023-11-02 23:35:26 219 7

原创 JAVASE运算符详解

Java中运算符可分为:算数运算符(+ - * / %),关系运算符( > < ==),逻辑运算符,位运算符,移位运算符以及条件运算符等等。

2023-10-31 23:09:47 109 8

原创 JAVA基本数据类型详解

注意事项:1.java和c语言不一样,java中无论是在32位系统,还是64位系统下,int都占4个字节,long都占8个字节。2.整型和浮点型都是带有符号的。3.整型默认为int,浮点型默认为double。4.字符串属于引用类型,后续会介绍。

2023-10-29 12:57:41 164 1

原创 C语言冒泡排序算法实现

1.第一步需要计算arr[10]数组中有多少元素,如:int count = sizeof(arr) / sizeof(arr[0])。例如:将数组arr[10]={9,8,7,6,5,4,3,2,1,0},对其里面的元素进行升序排列。2.第2趟类比第1趟,但第2趟要比第1趟少一次比较,因为我们第一趟已经把最大的数放到了最后。2.第二步利用for循环和if语句实现arr[10]数组内部升降序的实现。所以再执行第2的时候对其进行减一,减少代码运行内存没必要的损耗。3.第三步打印输出结果。

2023-10-23 21:10:49 116 1

空空如也

空空如也

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

TA关注的人

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