自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 多线程4(Thread)

前面谈到创建销毁进程太消耗资源而引入了线程,而频繁的创建和销毁线程就失去了线程轻量化的特点,而无法忽视线程的创建和销毁,所以进一步优化就得到了线程池这个概念。提前将线程准备好,放进一个“池”(数据结构)中,当需要时就去池中申请,用完后就放回池中。

2025-06-10 12:27:07 726

原创 多线程3(Thread)

线程调度是随机的,但是我们可以使用wait/notify进行规划。join是控制线程结束顺序,而wait/notify是控制详细的代码块,例如:线程1执行完一段代码,让线程2继续执行,此时线程2就通过wait进行阻塞,等到线程1执行结束后,再通过notify唤醒线程2。线程饿死:线程1释放锁资源后,其他线程和线程1要进行竞争锁,但是由于其他线程还要进行唤醒操作,可能会出现线程1一直拿到锁资源,导致其他线程拿不到锁的情况。wait/notify可以解决线程饿死问题。

2025-06-08 22:22:21 1013 1

原创 多线程2(Thread)

NEW:线程创建出来了,但是还是没有被start。创建好Thread后,先使用getState方法查看状态,再start,看到的就是NEW。TERMINATED :线程执行结束,入口方法执行结束,但是Thread对象还在。线程结束后调用getstate,观察到的线程状态就是terminated。RUNNABLE :线程执行过程中一直是此状态。在线程start和join之间创建就可以看到RUNNABLE状态。

2025-06-06 17:59:32 721

原创 多线程1(Thread)

在进程中,要创建一个进程和销毁一个进程所消耗的硬件和软件资源是巨大的,因此为了优化上述过程,我们引入了“线程”。1)线程和进程的关系可以认为进程包含线程,一个进程里最少有一个线程,每个线程都可以单独执行一段逻辑,并且可以单独在CPU上调度,因此线程可以叫做“轻量级进程”。在一个进程中,多个线程共享进程资源,而在后面在这一进程中创建的线程就直接使用进程创建的资源,可以省下申请资源的开销。2)线程安全问题。

2025-06-03 21:37:28 737

原创 MySQL初阶:JDBC

JDBC编程就是使用JAVA代码操作MySQL数据库。:就是数据库提供了一组API供程序员使用。:就是提供了一组函数/类,供我们调用,不同的数据库提供的API也是不同的。因此如果要操作不同的数据库就要学习多套API,为了方便JAVA提供了一套API,让数据库们都要和JAVA的API对接上,这样我们只要学习JAVA提供的API就可以进行操作数据库了。数据库并非单独提供一套API,而是通过驱动程序(类似于转接口)将数据库的原生API转换成符合JAVA要求的API。

2025-05-22 14:56:08 513

原创 MySQL初阶:sql事务和索引

可以类似理解为一本书的目录,一个表可以有多个索引。

2025-05-17 19:09:07 1011

原创 MySQL初阶:查询进阶

查询可以搭配插入操作进行使用:创建一个class表(id int,varchar(10) classname),和一个student表(id int,varchar(10) studentname),class表中有三条记录,student表无记录:此时使用查询和搭配操作就可以实现将class表中的记录全部插入到student表中:注意事项:可以进行实行多次插入;插入表和被插入表的参数列表的列和类型要相同,否则会报错。表达式查询是针对列和列之间进行运算,聚合查询是在行和行之间进行运算。sql中通过-- 或

2025-05-13 21:51:13 554 1

原创 MySQL初阶:数据库约束和表的设计

数据库约束是针对数据库中的表中的数据进行施加规则和条件,用于确保数据的准确性和可靠性。

2025-05-09 18:24:37 411

原创 MySQL初阶:基础增删改查(CRUD)

先创建一个表1)单独插入一条insert into 表名 values (列名 类型)...;插入的记录要和表一开始创建记录的类型,个数,结构一样。如果不一样,就会报错。2)指定列进行插入insert into 表名 (列名,列名...) values (值,值...);这里选的列名设的值要和创建表时的一样,没选择的列在插入时会被设为NULL。3)一次性插入多行insert into 表名 values (值,值),(值,值)....;

2025-05-06 21:43:53 708

原创 MySQL初阶:数据库基础,数据库和表操作,数据库中的数据类型

数据库处理的主要内容是数据的存储,查找,修改,排序,统计等。

2025-05-02 12:34:30 1122

原创 进程(Process)和操作系统(Operation System)

操作系统是计算机中最重要的一个软件。市面上最常见的操作系统有:windows,Linux,MacOs,IOS,Android。

2025-05-01 13:51:31 571

原创 CPU中的指令(Instruction)

1110是内存地址,换算成十进制是14,所以是14号内存地址,14号内存的值换算值是3。我们所编写的代码实际上都会变成机器语言被CPU所执行,这里说的机器语言实际就是指令,更准确的说是机器语言是一系列的指令构成的集合。操作码是用来给CPU指导要做什么工作,被操作数是这条指令要操作的数据,可能是寄存器编号,可能是内存地址。3)执行指令:CPU将14号地址中的值加载到寄存器A中,此时寄存器A:3,寄存器B为空。3)执行指令:此时CPU中的寄存器A中的值是17,寄存器B中的值还是14。

2025-04-28 15:48:51 527

原创 栈(Stack)和队列(Queue)

栈(stack)是一种特殊的线性表,只允许在固定的一端进行插入和删除操作。我们可以将栈近似看作一个桶,要取出桶底的元素,就要将桶顶的元素先取出,再将底部元素取出,也可以叫做后进先出。这里所见的栈,本质上是一个顺序表/链表,但是,是在线性表/链表的基础上进行了一些限制。对于栈而言,禁止了顺序表/链表的各种增删改查,只支持三个操作,入栈(push),出栈(poll),取栈顶元素(peek),可以认为栈是只能进行头删,尾删,取尾部元素的顺序表/链表。

2025-04-24 22:31:49 434

原创 顺序表(Arraylist)和链表(Linkedlist)

Linkedlist实现了List。Linkedlist的底层是双向链表。Linkedlist没实现RandomAccess接口,表明不支持随机访问。Linkedlist在随机插入和删除时,时间复杂度为O(1)。

2025-04-16 22:51:03 423

原创 Map&Set常用的集合类(二叉搜索树,哈希表)

Set继承了Collection。保存的元素不会重复。保存的元素不能修改。保存的元素无序,和List不同,如果有两个:List {1,2,3},List {2,1,3},认为两个List不相同,但是将List换成Set,则认为两个Set相同。Set的核心操作:add,remove,contains。Set是接口,需要创建实现Set的类,可以通过两种方式进行实现,TreeSet和HashSet,TreeSet的底层是红黑树,Hashset底层是哈希表这种数据结构。

2025-04-13 20:55:15 558

原创 优先级队列(堆),比较器(Comparator,Comparable)

优先级队列(PriorityQueue),比较普通的队列可以提供了一个基本操作,返回最高优先级元素。PriorityQueue的底层使用了堆这种数据结构,而堆则是在完全二叉树的基础上进行调整。堆的特点:堆的父节点一定是大于(大堆)或小于(小堆)子节点。堆的逻辑结构是二叉数,但存储结构是一维数组。堆一定是完全二叉树。普通二叉树不使用一维数组存储的原因是二叉树的节点可能为空,要还原二叉树就要将空节点null也存入数组,使空间利用率较低。

2025-03-30 10:49:23 546

原创 排序算法(插入,希尔,选择,冒泡,堆,快排,归并)

插入排序的主要思想是额外申请一个空间cur,让cur一开始等于数组的第1号位置,设置i=1,让i-1的元素与其比较,如果arr[i-1]>arr[i],就让arr[i+1] = arr[i],当进行到最后一次对比结束,i=-1,再让arr[i+1] = cur。排序算法的特点是序列越有序,时间效率越高,下面的希尔排序也体现出来。时间复杂度:O(n^2)空间复杂度:O(1)是一种稳定的排序算法。

2025-03-24 22:28:44 800

原创 抽象类和接口

JAVA中被abstract修饰的类被称为抽象类,abstract修饰的方法称为抽象方法,抽象类也可以包含普通方法和普通属性,甚至构造方法。

2025-02-25 00:15:50 308

原创 理解JAVA封装.继承.多态

JAVA面向对象的三大特征:封装,继承,多态。

2025-01-07 15:35:06 963

原创 JAVA实现汉诺塔问题

我们要将A上的盘子放到C上,要先将A最小的盘子盘子放到C,然后将A中间的盘子放到B,再将C的盘子放到B上,把A最大的一个盘子移到C,把B最上的盘子放到A,把B上的放到C,最后将A上盘子移到C,就完成交换。现在A上有一些大小不一盘子,盘子由大到小自下而上放置,要将A上的盘子转移到C上,并且大盘子一定要在小盘子下面。汉诺塔是递归思想中的一道经典例题,电影《猩球崛起》中就有描写汉诺塔。汉诺塔问题就是有三个柱子,我们设为A,B,C,如图。现在假设A上有3个盘子。最终3个盘子的效果为。

2025-01-03 17:31:28 463

原创 JAVA中的方法和数组介绍

return x+y;1.public static 是修饰符,现阶段我们只要这样记住,在后期作者会进行具体介绍,int 是返回类型,sum是方法名,方法名可以为任意,但不能为中文,括号内的为形式参数,return是返回值。2.返回值类型:当方法中有返回值时,返回值类型必须和返回值相同。例如:上面的X+Y是两个整形相加,所以返回值类型是int。当没有返回值时,返回值类型是void。3.参数列表:当我们要进行传参时,实参和形参类型相同,多个参数用逗号隔开。例如(int x,int y)。

2024-12-10 22:19:16 601

原创 c语言中杨辉三角的实现

变成这样之后我们可以将它放进一个10*10的二维数组,数组的第一列为1,数组的对角线也为1,那我们如果设行为i,列为j,只要判断[i][1]=1,i=j=1,就完成外面的打映。杨辉三角是一道经典的算法题,只要明白其主要思想,就能用不同的编程语言实现,今天介绍其思想和用c语言打映。

2024-12-06 23:36:40 720

原创 JAVA中的基本数据类型

JAVA中数据类型分为基本数据类型和引用数据类型。

2024-12-04 20:49:46 742

原创 c语言扫雷的实现

带.c的文件是进行测试和代码的实现,.h文件是函数的声明,在扫雷中的一个重要思想,是要创建两个数组,一个用来实现逻辑,另一个进行打映。扫雷和和我们往期写的三字棋的大概模板相似,都是要分模块进行书写。

2024-12-02 18:34:35 551

原创 打印二进制的奇数和偶数

之前我们实现了二进制中1的统计,那我们也可以将二进制中的每一位打映并且将奇数和偶数也表达出来。那么就是奇数和偶数的判断了,这个也可以轻松实现了,只需要让奇数和偶数分别判断就行了。

2024-11-29 22:59:59 613

原创 实现水仙花数的打映

了解定义,接下来就是逻辑的实现,首先要知道数的位数,用while就可以实现,接下来就是立方相加,这里介绍两种方法,第一种是常规的方法,将要判断的数%10,取。寻找水仙花数是一道经典的算法题,水仙花数定义是一个整数的每一位乘以位数的立方相加等于这个数本身,例如153=1^3+5^3+3^3,所以153是水仙花数。

2024-11-26 23:40:09 474

原创 如何统计整形二进制中1的个数

整形在数内存中是以二进制的方式存储,要想了解整形在内存中的存储方式,我们要先了解原码,反码,补码。如果要打映出数据,则要将补码转换为原码,三者的关系是原码按位取反得到反码,反码加一得到补码。内存中以补码的形式存储整形数据类型,并且我们知道一个整形在内存中占32比特。这样就统计了一个1,接下来让每一位都向右移,完成32次。这样就可以明显观察&操作符的效果。

2024-11-23 22:29:32 470

原创 了解和使用函数递归

函数递归是C语言中一种重要的实现方式,通俗一点就是函数自己调用自己。函数递归可以将大事化小,把一个大的问题拆解成一个个子问题,递是发散的意思,归是回归的意思。用一道例题来演示:将1234中每一位数分别打映出来,例如:1 2 3 4。这里就是函数自己调用自己,最后死循环打映main函数中的内容。1.存在限制条件,当满足这个限制条件的时候,递归便不再继续。2.每次递归调用之后越来越接近这个限制条件。

2024-11-22 13:36:41 376

原创 C语言三字棋游戏的实现

game.h是头文件,jim.c用来存放分装的函数,test.c存放主函数,在test文件中我们要先构建函数主体。三字棋游戏是在3×3的棋盘上进行下棋的游戏,如果有一方的三个棋子连续,则一方获胜,下面我们用c实现它。首先我们要建立一个头文件和两个源文件,在头文件中存放函数的声明,一个实现游戏,一个测试函数。函数测试jim.c文件。

2024-11-19 18:41:37 316

C语言刷题-lesson5_1731564764305.pdf

C语言刷题-lesson5_1731564764305.pdf

2024-11-26

空空如也

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

TA关注的人

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