自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 简单使用SpringMVC写一个图书管理系统的登入功能和图书展示功能

这里我们主要是和前端响应数据用的,controller层调用service层,service层是用于处理业务数据的,这里我们用到了,依赖注入的属性注入来获取service层的对象,如代码中的@Autowired注解。这里的代码是和后端做交互的,后端的url为/user/login ,请求的类型为post请求,然后传递数据,后端再返回结果,如果登入成功就跳转到,“book_list.html”的界面,展示图书。上述代码,不做介绍了,我是主要写后端的代码的,关于这篇文章,仅仅展示图书即可,没涉及到增删改查。

2024-07-23 17:51:06 517

原创 Spring MVC 的常用注解

上面两个注解,是Spring MCV最常用的注解。@RequestMapping , 他是用来注册接口的路由映射。路由映射:当一个用户访问url时,将用户的请求对应到某个方法或类的过程叫做路由映射。@RequestMapping 注解的使用:它既可以又是类,也可以修饰方法,访问的地址是类的路径和方法路径。但是在这里我们只通过@RequestMapping 是不足以访问网页的,还要通过@RestController注解。

2024-07-17 22:06:57 639

原创 植物大战僵尸杂交版全新版v2.2解决无法打开问题和全屏问题

如我的电脑是windows11的系统。然后就可以打开了。

2024-07-09 18:16:57 2202 4

原创 网络中数据链路层详解

上述的目的地址和源地址,称作为mac地址或物理地址,当生产商刚生产出网卡的时候,电脑的物理地址就被确认好了,而且是补重复的。还有第一幅图中的,ARP和RARP这两个都不携带任何的业务数据,只在转发数据的时候起到辅助的作用。DNS服务器的具体的原理:当我们输入一组的字符串的时候,DNS服务器,会对应的搜索响应的ip地址,进而就得到了。2)作用不一样,ip协议,支持的是整个传输过程的转发,而mac协议,是支持两个相邻节点的传输。这里还有一个问题,就是当今越来越多的人,DNS服务器是否可以支撑嫩模大的请求。

2024-06-19 21:45:00 349

原创 IP协议的相关特性

开始,我自己的电脑会发送一个ip数据包,里面包含源IP地址(自己电脑的IP地址),源端口(自己的应用程序的端口号),还有目的IP和目的端口(都是cctalk)服务器的,在中间发送的过程中,NAT会进行转换,将源IP改变。IP自身实现了拆包组包这样的功能,如果携带的载荷超出了长度上线,IP就会自动拆分成多个数据包每个数据包携带一部分,发送对方后再拼好。这两个是最核心的部分,一个IP地址其实就是一个32位的整数,用点分十进制来表示,表示范围0~42亿9000万。和运营商的路由器会进行转换,返回的响应也是一样。

2024-06-18 21:55:40 330

原创 TCP协议详解及其相关的10个核心机制(面试重点)

TCP协议有连接,可靠性传输,面向字节流,全双工。他的数据格式如图:根据他的数据格式,在这里我们只知道 16位源端口号(表示客户端这里的端口号),16位目的端口号(服务器这边的端口号),还有16位校验和(这里在UDP中的校验和是一样的)。这里的选项其实就是 “可选” 或 “不选”,没有更加深层的含义。在这里学习之前我们只能了解到这几个,在后面介绍10大机制的时候会一一介绍。

2024-05-30 21:04:54 849

原创 UDP的报文结构和注意事项

对于UDP来说,应用层的数据到达,UDP之后,就会给应用层的数据报前面拼装,UDP的报头。因为在数据传输的过程中,会受到外界的干扰,此时会发生“比特翻转”。UDP数据报 = UDP报头 + UDP的载荷。一个UDP数据报的长度,最长就是64kb,不能再长了。UDP无连接,不可靠传输,面向数据报,全双工。此时,我们就需要校验和对UDP进行校验。学习网络协议,最主要的就是报文格式。数据在网络通信中有可能会出现错误的。UDP协议是在传输层的协议。

2024-05-25 21:22:33 355 1

原创 用UDP写一个回显服务器和一个字典服务器

操作系统提供了一些网络通信的api(socket)。1. 读取请求并解析。2. 根据请求计算响应。3. 把响应写回给客户端。

2024-05-21 22:59:12 549

原创 网络中的基本概念

局域网:把若干个电脑组成在一起,通过路由器进行组网。广域网:把局域网进一步的连接,构成更复杂的网络体系。IP地址:区分主机。端口号:区分主机上不同的程序。协议:是一种约定,通信双方,对于通信规则的约定,一定是通信双方都得认可。

2024-05-14 22:58:21 575 2

原创 InputStream,OutputStream的用法以及相应的案例

1. 文件系统的操作:File类。2. 文件内容的操作:Stream流。字符流:IntputStream , OutputStream。字节流:read , write。

2024-05-11 15:45:38 445

原创 java中对文件的基本操作

文件IO。啥叫文件的IO?他就是指:1.Input(输入)2.Output(输出)。比如,我们的电脑可以从网络中下载文件,也可以通过网络上传文件等等很多的例子,都体现了输入和输出。文件的输入和输出遵循一套规则:如图:基本都是通过这套规则进行输入输出的。

2024-05-03 23:26:48 329

原创 HashTable ,HashMap,和ConcurrentHashMap的区别

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

2024-04-23 20:55:42 316

原创 线程池详解

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

2024-04-15 10:45:56 232

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

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

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

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

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

2024-04-07 21:08:45 280

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

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

2024-03-24 22:31:04 447 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 1267 3

原创 Mysql增删改查(详解)

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

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

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

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

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

原创 AVL树和他的旋转

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

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

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

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

2024-02-20 18:18:33 851

原创 TopK算法

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

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

原创 二叉树经典面试题

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

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

原创 ArrayList 和 LinkedList 的比较

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

2023-12-05 21:07:03 348

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

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

2023-11-26 16:15:05 362 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 459 2

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

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

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

原创 抽象类和接口

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

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

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

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

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

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

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

2023-11-07 21:33:41 142 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 163 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 236 7

原创 JAVASE运算符详解

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

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

原创 JAVA基本数据类型详解

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

2023-10-29 12:57:41 182 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 123 1

空空如也

空空如也

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

TA关注的人

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