自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 排序个人总结

定义一个i下标,和 j= i + 1,将i下标定义为minIndex,j向后遍历,寻找i后面比minIndex还要小的值,找到了就重新定义minIndex,循环结束后和i的位置进行交换。默认 i 前面的数都是有序的,j 定义为 i 的前一个数,把 i 的值给tmp,tmp与j对应的值进行比较,如果arr[j] > tmp,将arr[j] (大的数前移一位),如下图。因为是大根堆,所以头节点是最大的,将头节点和尾节点进行交换,让后向下调整,每次调整后都将最大的节点放到尾部,调整完后就是从小到大的排序。

2024-09-25 20:49:26 673 1

原创 MyBatis 的XML实现方法

MyBatis是⼀款优秀的持久层框架,⽤于简化JDBC的开发。而持久层指的就是持久化操作的层, 通常指数据访问层(dao), 是⽤来操作数据库的,简单来说就是MyBatis就是更简单的操作和读取数据库的。

2024-07-27 14:43:42 1149 4

原创 Spring IoC & DI

其实IoC我们在前⾯已经使⽤了, 我在前⾯讲到, 在类上⾯添加 @RestController 和 @Controller 注解, 就是把这个对象交给Spring管理, Spring 框架启动时就会加载该类. 把对象交 给Spring管理, 就是IoC思想IoC:Inversion of Control (控制反转),也就是说Spring是一个“控制反转”的容器DI: Dependency Injection(依赖注⼊)容器在运⾏期间, 动态的为应⽤程序提供运⾏时所依赖的资源,称之为依赖注⼊。

2024-07-21 17:44:44 1334 7

原创 SpringMVC 中的常用注解和用法

在SpringMVC中,我们经常通过注解来简化开发,提高开发效率。以下是一些常用的 Spring MVC 注解及其用法总结。

2024-07-15 18:42:32 517 5

原创 Session和Cookie的工作原理和区别

简单的说,当你登陆一个网站的时候,如果web服务器端使用的是session,那么所有的数据都保存在服务器上,客户端每次请求服务器的时候会发送当前会话sessionid,服务器根据当前sessionid判断相应的用户数据标志,以确定用户是否登陆或具有某种权限。

2024-07-15 18:40:16 598 2

原创 优先级队列(堆)

在之前的文章中介绍过,队列是一种先进先出(FIFO)的数据结构,但有些情况下,操作的数据可能带有优先级,一般出队列时,可能需要优先级高的元素先出队列。在优先级队列PriorityQueue中,底层使用的是堆这种数据结构,而堆实际就是在完全二叉树的基础上进行了一些调整。每一个父亲节点都比子节点小称为小根堆,每一个父亲节点都比子节点大称为大根堆,如下图所示。

2024-07-11 20:20:00 342 3

原创 数据结构:栈和队列详解

概念图如下。

2024-06-25 15:09:47 515 3

原创 JVM的垃圾回收机制

垃圾回收机制GC是java提供的对于内存自动回收的机制,相对于C/C++的手动回收是方便不少的,但是一切的方便都是需要代价的,GC需要消耗额外的系统资源,而且存在非常影响执行效率的STW(stop the world)问题,触发GC的时候,就可能一瞬间把系统负载拉满,这些是C/C++无法容忍的。

2024-06-02 01:04:14 1108 6

原创 JVM内存划分&&类加载的过程&&双亲委派模型的详解

检查.class里的内容是否符合要求,.class是javac编译器生成的,.class文件的格式的格式在java的官方文档中是有明确定义的,在验证过程中,会把读取进来的内容往明确定义的格式里套,能不能套进去,看是否有问题。上述过程主要是为了应对这个场景:比如你自己代码里写了一个类,类的名字和标准库/扩展库冲突了, 会确保加载的类是标准库的类(就不加载你自己写的类了)在JVM中包含的一个特定的模块/类,这个类负责完成后续的类加载工作,在JVM中内置了三个类加载器,负责加载不同的类,分别是。

2024-05-30 23:49:26 710 5

原创 HTTPS 的加密流程

HTTPS 本质上就是 HTTP 的基础上增加了一个加密层,抛开加密之后,剩下的部分就和 HTTP 是一样的,在HTTPS中,比HTTP多了一个"S",这里的S是SSL。HTTPS引入的背景是臭名昭著的运营商劫持在当年,法律在互联网相关的东西上面还不是很完善在使用https,加密的过程中,涉及到了密码学中的几个核心的概念(1)明文:要传输的真正的意识是啥(2)密文:加密之后得到的数据(3)密钥:用来加密和解密的重要道具这个过程简单来说就是,把明文通过密钥变成密文 ,把密文通过密钥变成明文。

2024-05-27 18:11:07 1605 5

原创 HTTP 协议的基本格式和Fidder的简单使用

HTTP协议诞生于1996(开玩笑哈,),http协议用于网页和手机app和服务器交互的场景。通过HTTP协议,客户端(例如网页浏览器或手机应用)可以向服务器发送请求,服务器则会响应这些请求并返回相应的数据。这种交互包括获取网页内容、提交表单数据、传输文件等各种操作。虽然 HTTP 作用很大,应用很广,但是实际开发中,不一定是真正直接使用 HTTP,更大的概率是使用HTTPS(下一篇博客会介绍到),本质上还是 HTTP,但是引入了额外的加密层,使其更加的安全。

2024-05-27 15:21:50 1038 5

原创 数据链路层简单介绍

通过mac地址是可以定位到你这个人的,加入你用电脑做了一些违法乱纪的活动,被jc叔叔定位到是很容易的,mac地址绑定网卡,每个网卡通过那个销售卖出去的都是有记录的,所有互联网不是法外之地,一定要遵纪守法。mac地址和ip地址,目的都是为了区分网络上的不同设备的,在最开始的时候,mac地址和ip地址是两伙人,独立各自提出的,ip地址是4个字节(计算机访问各种域名,就会在这里进行查询,之前每个人的电脑上,都会有一个这样的很大的文件,所有网站的域名对应的情况。西安 -> 北京 ->长春 ->白城 ->安广。

2024-05-22 22:54:58 836 1

原创 总结ip协议的相关特性

ip协议是网络层上的协议,在一个协议中,是以点分十进制来表示的,就是3个“.”把数字分成4个部分,每个部分1字节,例如192.168.1.1。在每一次通信中,有4个核心信息,分别是源IP地址,源端口,目的ip和目的端口,标志这这个信息从哪来,到哪去。在IPv4中,由于采用32位地址,理论上可以表示的IP地址个数为2的32次方,大约是42亿9千万,这在IP协议刚出来的年代是完全够用了,但是现在人口增加,手机和电脑被广泛的使用,这个数量是远远不够大家使用的了。

2024-05-21 00:58:47 693 5

原创 自己实现链表的简单功能

创建接口说面链表中有哪些功能。

2024-05-19 00:23:09 149

原创 TCP 协议的相关特性

TCP协议是有连接的,可靠传输,面向字节流,全双工的,针对这些特性,介绍一下TCP协议的10个较为核心的机制。

2024-05-15 23:41:15 1178

原创 JAVA文件的简单操作

listFiles() 返回 File 对象代表的⽬录下的所有 ⽂件,以 File 对象表⽰。mkdirs() 创建 File 对象代表的⽬录,如果必 要,会创建中间⽬录。isDirectory() 判断 File 对象代表的⽂件是否是⼀ 个⽬录。isFile() 判断 File 对象代表的⽂件是否是⼀ 个普通⽂件。list() 返回 File 对象代表的⽬录下的所有 ⽂件名。getParent():返回 File 对象的⽗⽬录⽂件路径。getPath(): 返回 File 对象的⽂件路径。

2024-05-09 14:42:44 436

原创 UDP 的报文结构

UDP是传输层协议,它是无连接,不可靠传输,面向数据报,全双工1.无连接:UDP是一种无连接的传输协议,通信双方不需要在发送数据之前建立连接。相比之下,TCP是面向连接的协议,在传输数据之前需要建立连接,并且在数据传输结束后要释放连接。2.不可靠传输:UDP不提供数据传输的可靠性保证。它不会跟踪数据包的状态,也不会重传丢失的数据包。因此,如果数据包在传输过程中丢失或损坏,UDP协议不会自动处理,而是由应用程序自行处理。3.面向数据报:UDP是面向数据报的协议,它以独立的、完整的数据报为传输单位。

2024-05-05 16:35:46 604

原创 网络中的一些基本概念

调用这样的 api, 就会把刚才的应用层数据交给传输层.(进入到系统内核了),传输层拿到应用层数据包之后,就会把这个数据包进行进一步的封装,构造成 传输层数据包。传输层 构造好数据包之后,就会继续吧数据包, 交给网络层,(传输层会调用网络层提供的 api,这个调用的过程都是系统内核,自行负责了,咱们程序员感知不到)又进一步调用数据链路层的api,把上述的IP数据包交给数据链路层的协议,同样也是系统内核完成的,程序员感知不到的。2.应用层数据包,已经有了,QQ 程序, 就要调用系统的 api, 来进行传输,

2024-04-25 17:52:26 754 2

原创 锁策略 和 synchronized 优化过程

借助系统中的线程调度机制,当尝试加锁,并且锁被占用了,出现锁冲突,就会让当前这个尝试加锁的线程,被挂起.(阻塞状态)此时这个线程就不会参与调度了,直到这个锁被释放,然后系统才能唤醒这个线程,去尝试重新获取锁,synchronized 即使悲观锁,也是乐观锁,既是轻量级锁,也是重量级锁,轻量级锁是自旋锁实现,重量级锁是挂起等待锁实现.是可重入锁,不是读写锁,是非公平锁.在上述的伪代码中,要一直不停的判断锁是否被占用,这个过程消耗了更多的 cpu 资源,但是一旦锁被释放,就能第一时间拿到锁,

2024-04-22 15:33:06 991

原创 线程池小结

corePoolSize(核心线程数)核心线程数是线程池中保持活动状态的最小线程数量。即使线程处于空闲状态,核心线程也不会被销毁maximumPoolSize(最大线程数)最大线程数是线程池中允许存在的最大线程数量。当提交的任务数超过核心线程数时,且工作队列已满时,线程池会创建新的线程来执行任务,直到达到最大线程数。如果工作队列也已满,并且线程数已达到最大线程数,新的任务会被拒绝执行。keepAliveTime(线程空闲时间)线程空闲时间指的是非核心线程在空闲状态下被保留的时间。

2024-04-21 17:11:09 496

原创 线程安全问题的原因和解决方案

线程安全是指多个线程同时访问共享资源时,不会产生不正确的结果。线程安全问题的主要原因是多个线程对共享数据进行读写操作时的并发性。这可能导致竞态条件(Race Condition)、数据不一致、死锁等问题。

2024-04-18 17:31:57 359

原创 进程和线程的区别和联系

线程是进程中的实体,执行实际的工作。一个进程中可以包含多个线程,它们共享进程的资源。

2024-04-16 23:36:55 649

原创 Java 线程的几种状态

(1)BLOCKED 表⽰等待获取锁, WAITING 和 TIMED_WAITING 表⽰等待其他线程发来通知. (2)TIMED_WAITING 线程在等待唤醒,但设置了时限;使⽤ jconsole 可以看到 t1 的状态是 TIMED_WAITING , t2 的状态是 BLOCKED。)时,线程的状态是RUNNABLE,当线程执行完毕后,线程的状态是TERMINATED。上述代码中,在线程还没开始调用的时候,状态是NEW,在线程是出于活动状态的时候,即。(6) TERMINATED: ⼯作完成了。

2024-04-15 23:46:14 265 1

原创 Thread 类的基本用法

Java 中的线程(Thread)是一种轻量级的子进程,用于执行程序中的一段代码。线程的使用可以实现程序的并发执行,提高程序的运行效率。在 Java 中,线程的基本用法涉及线程的创建、中断、等待、休眠以及获取线程实例等操作。上述代码中,在t1执行完后再执行t2,在t2执行完后再执行t3,按照顺序打印出ABC,大家可以试试把join注释掉,看看运行的结果。有时,我们需要等待⼀个线程完成它的⼯作后,才能进⾏⾃⼰的下⼀步⼯作,我们使用join()方法来进行。如果线程未被中断,则继续执行耗时操作,否则退出循环。

2024-04-14 23:45:34 469 1

原创 关于进程的调度

一个程序,运行起来,在操作系统中,就会出现一个对应的进程,进程就是一个跑起来的应用程序,想要让一个程序运行起来,就必须得给这个进程分配系统资源,包括但不限于:cpu,内存,硬盘,网络带宽,显卡.....在操作系统的中,通常称为进程控制块(PCB)这样的结构体来描述进程的,所以结构体中就需要包含一些进程的核心信息。在操作系统上,上面包含了很多进程,一旦东西多了,就要考虑管理,对于管理,通常的做法是,先描述,再组织。2.创建新的进程:新的进程创建出一个对应的新的PCB,并且添加到上述链表中。

2024-04-14 11:36:27 126 1

原创 JAVA简单的图书管理系统

要编写这个程序我们首相要清楚这个程序中有哪些对象,分别是书,普通用户,管理员书中会有 :书名,编号(id), 作者, 类别, 价格, 是否被借 这些简单的属性用户分为管理员和普通用户管理员它会有:姓名, 增加书籍, 删除书籍, 查找书籍, 打印所有书籍信息, 退出系统 这些简单属性。普通用户它会有:姓名, 查找书籍, 借阅书籍, 归还书籍, 退出系统这些简单的属性。我们把这三个对象分别放入三个包中,这样在分别完成这些对象中所需的动作(

2024-02-22 14:46:34 400 1

原创 初步认识继承与多态

继承(inheritance)机制:是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特 性 的基础上进行扩展,增加新功能,这样产生新的类,称派生类。继承主要解决的问题是:共性的抽取,实现代码复用。在上述代码中,当类的调用者在编写 eat 这个方法的时候, 参数类型为 Animal (父类), 此时在该方法内部并不知道, 也不关注当前的 a 引用指向的是哪个类型(哪个子类)的实例. 此时 a这个引用调用 eat方法可能会有多种不同的表现(和 a 引用的实例 相关), 这种行为就称为。

2024-02-08 15:29:20 816

原创 初步认识类与对象

类是用来对一个实体(对象)来进行描述的,主要描述该实体(对象)具有哪些属性(外观尺寸等),哪些功能(用来干 啥),描述完成后计算机就可以识别了。// 成员变量// 构造方法// 成员方法class为定义类的关键字,ClassName为类的名字,{}中为类的主体类中包含的内容称为类的成员。属性主要是用来描述类的,称之为类的成员属性或者类成员变量。方法主要说明类 具有哪些功能,称为类的成员方法。举例,定义一个小狗类//名字 //(成员变量)//颜色// 狗的属性。

2024-02-06 16:12:49 936 1

原创 JAVA运算符详解

在 Java 中,运算符用于执行各种算术、逻辑和比较操作。本文将介绍 Java 支持的运算符以及它们的使用方法。

2024-02-01 19:54:34 342 1

原创 简单的扫雷游戏的实现

再继续分析,我们在棋盘上布置了雷,棋盘上雷的信息(1)和⾮雷的信息(0),假设我们排查了某 ⼀个位置后,这个坐标处不是雷,这个坐标的周围有1个雷,那我们需要将排查出的雷的数量信息记录 存储,并打印出来,作为排雷的重要参考信息的。假设我们排查(8,6)这个坐标时,我们访问周围的⼀圈8个⻩⾊位置,统计周围雷的个数时,最下⾯的三 个坐标就会越界,为了防⽌越界,我们在设计的时候,给数组扩⼤⼀圈,雷还是布置在中间的9*9的坐 标上,周围⼀圈不去布置雷就⾏,这样就解决了越界的问题。game . c 如下。

2024-01-27 16:20:11 363 1

原创 初始结构体

结构体是 C 语言中的一种复合数据类型,它可以由多个不同的基本数据类型组成一个自定义的数据类型。struct 结构体名 {类型 成员1;类型 成员2;...类型 成员n;其中,结构体名是自定义的标识符,成员可以是任意数据类型,包括基本数据类型、指针类型、数组类型以及其他结构体类型等。在定义了结构体类型之后,我们可以创建一个或多个结构体变量来存储数据。int id;// 创建一个结构体变量。

2024-01-26 19:45:00 500 1

原创 数据在内存中的存储

其实超过⼀个字节的数据在内存中存储的时候,就有存储顺序的问题,按照不同的存储顺序,我们分 为⼤端字节序存储和⼩端字节序存储,下⾯是具体的概念:⼤端(存储)模式:是指数据的低位字节内容保存在内存的⾼地址处,⽽数据的⾼位字节内容,保存 在内存的低地址处。⼩端(存储)模式:是指数据的低位字节内容保存在内存的低地址处,⽽数据的⾼位字节内容,保存 在内存的⾼地址处。上述概念需要记住,⽅便分辨⼤⼩端。

2024-01-26 14:51:33 961 1

原创 C语言中常用字符串函数的使用详解

在C语言中,字符串是一种常见的数据类型,为了方便对字符串进行操作,C标准库提供了一系列字符串函数。本文将详细介绍常用的字符串函数,包括strlen、strcpy、strcat、strcmp、strncpy、strncat、strncmp、strstr、strtok和strerror的使用方法。

2024-01-25 20:32:18 429

原创 指针(进阶版)

⼆维数组的数组名表⽰的就是第⼀⾏的地址,是⼀ 维数组的地址。根据上⾯的例⼦,第⼀⾏的⼀维数组的类型就是 int [5] ,所以第⼀⾏的地址的类 型就是数组指针类型 int(*)[5]。那就意味着⼆维数组传参本质上也是传递了地址,传递的是第⼀ ⾏这个⼀维数组的地址,那么形参也是可以写成指针形式的。parr[i]是访问parr数组的元素,parr[i]找到的数组元素指向了整型⼀维数组,parr[i][j]就是整型⼀维数 组中的元素。我们类⽐⼀下,整型数组,是存放整型的数组,字符数组是存放字符的数组。

2024-01-25 19:55:25 714 2

原创 指针的初步认识

指针是一种特殊的变量,它存储了一个内存地址。我们可以通过指针来访问该地址中存储的数据。int *p;上述代码定义了一个名为“p”的指针变量,它可以指向一个整型变量。

2024-01-25 14:35:18 310

原创 C语言编译和链接

我们已经知道,每个源⽂件都是单独经过编译器处理⽣成对应的⽬标⽂件。test.c 经过编译器处理⽣成 test.o add.c 经过编译器处理⽣成 add.o 我们在 test.c 的⽂件中使⽤了 add.c ⽂件中的 Add 函数和 g_val 变量。

2024-01-24 11:08:18 814 1

原创 C语言中的文件和文件操作

当我们开发应用程序时,经常需要与文件进行交互,读取或写入数据。C语言提供了一组标准库函数,使我们能够有效地进行文件操作。在本文中,我们将学习如何在C语言中使用文件和文件操作。

2024-01-23 09:55:38 1168 5

原创 用c语言打印杨辉三角

这里输入了5行,对每一行的第一列,和每一行的最后一列赋值为 1,没有赋值的地方数组默认为0,之后只要对为0的位置进行赋值就可以了。arr[i - 1][j - 1] + arr[i - 1][j]为上一行相邻两列的和,上述代码打印出来,验证结果。注意,这里在给数组定义的时候,是10行10列的,所以输入的input只能是10以内的数字。可以看到,从第三行开始,每一行的第二列,到倒数第二列为上一行相邻两个数的和,代码如下。如果放心,可以打印数组验证一下,代码如下。

2023-11-18 23:59:25 113 1

原创 关于选择语句if,while.

上面的代码中,根据表达式expression不同的值,执行相应的case分支,如果找不到对应的值,就执行default分支。在上面的代码中,只用使用break才能跳出switch,如果case后面的语句中没有break;一个if配一个else,else不可以单独存在,如果存在多个if和else,则else总是和上方距离最近的if匹配。需要注意的是,if语句只能控制第一个if下的语句,如果if想控制多条语句,需要用{};如果输入的年龄>=18,表达式的结果为真,则执行"你可与谈恋爱了"

2023-10-30 22:31:22 65 2

空空如也

空空如也

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

TA关注的人

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