- 博客(33)
- 收藏
- 关注
原创 DNS(域名解析系统)
当我们想要访问其他人的电脑或者服务器的内容的时候,我们就需要准确知道对方的IP地址,如果IP地址出错,那么我们就会访问出错,但是IP地址是一长串无关联的数字,想要记住实在是太困难了,从而诞生了DNS(域名解析系统)去解决这个问题,采用一些简单的单词构成的字符串来表示IP地址。以百度为例:百度的IP地址是202.108.22.5,与www.baidu.com相比,前者的记忆难度显然大于后者DNS,全称为域名系统(Domain Name System),是一种负责将域名解析为IP地址的系统。
2023-12-05 19:46:56 902
原创 阻塞队列与生产者消费者模型
生产者消费者模型是一种用于解决多线程并发问题的编程模式。在这个模型中,生产者负责生产数据,而消费者负责处理这些数据。这种模型的主要目标是将数据的生产和消费过程解耦开来,使得它们可以独立地进行开发、测试和优化。如何来理解这个模型呢?以包饺子为例,一个人负责生产饺子皮,进行擀皮,并将饺子皮放在桌子上,被称为生产者,一个人负责包饺子,消耗饺子皮,从桌子上拿饺子皮,被称为消费者,桌子就是阻塞队列,如果生产饺子皮的人慢了,那么包饺子的就要等一会,如果我生产太快了,桌子上放不下了,我就等一会。
2023-11-29 15:34:07 938
原创 设计模式--单例模式说明
设计模式是在软件设计中常见的一种解决问题的方法论,它是经过反复验证和实践的一种通用的解决方案,用来解决在软件设计中常见的问题。设计模式就是套路,就好像你学习六级的时候,针对阅读问题有阅读的套路,针对听力问题有听力的套路,你根据那些套路,可以更好的做题。在软件开发中也有很多常见的"问题场景",针对这些问题场景,大佬们总结了一些套路,按照套路来实现代码,会更顺利,减少出错的可能性。今天我们来说一下单例模式。单例模式是一种设计模式,它确保一个类只有一个实例,并提供一个全局访问点。
2023-11-22 19:50:42 80
原创 理解wait和notify
线程最大的问题是抢占式执行,随机调度,但是随机性的东西,往往是最难掌握的,为了解决这个问题,从而会使用一些API让线程主动阻塞,主动放弃CPU,而wait和notify就是其中之一。在Java中,wait和notify是两个用于线程间通信的方法,它们通常与synchronized关键字一起使用,需要注意的是,wait、notify和notifyAll方法必须在同步代码块或同步方法中调用,否则会抛出IllegalMonitorStateException异常。
2023-11-20 14:22:40 107
原创 对于volatile关键字说明
volatile关键字是Java中的一个关键字,用于修饰变量,它保证变量的可见性:当一个线程修改了一个volatile变量的值,新值对于其他线程来说是立即可见的。这样可以确保多个线程在操作同一个变量时,能够看到该变量的最新值,需要注意的是,volatile关键字不能保证原子性,也不能保证复合操作的原子性,如果需要保证原子性,可以使用synchronized关键字。
2023-11-20 08:22:00 23
原创 死锁问题说明
多个进程竞争有限数量的资源时,当一个进程申请的资源被其他等待进程占用,那么该等待线程有可能再也无法改变状态,这种情况被称为死锁,一旦程序发生死锁,线程就会崩溃,无法执行后续工作。
2023-11-13 23:46:26 62 1
原创 Linux的常用命令
2.不要使用 rm -rf /root/text.txt,因为在实际使用中,很有可能rm -rf /_root/text.txt,在/后面多了一个空格(_下划线代表空格),rm 会认为你想删除两个目录,1./,2.root/test.txt,第一个代表根目录,所有文件目录均没有,只能重装系统(5.如果vim没有正确关闭,在下次启动的时候,会报错提示,按D键就是删除未保存的内容,R就是恢复之前的编辑内容。2.输入ls后面加上一个路径(绝对/相对),查看指定目录的内容," / "是·根目录的意思。
2023-11-06 21:00:40 27
原创 IP地址和IP协议
*NAT要求:**公网IP必须是唯一,私网IP可以在不同的局域网中重复,如果某个私网里的设备想访问公网的设备,就需要对应的 NAT 设备(路由器),把 IP 地址进映射,从而完成网络访问,反之,公网的设备,无法直接访问私网的设备,不同局域网的私网的设备无法直接相互访问。,IPv6使用16个字节表示IP地址即128位,是4个版本4相乘,即42亿 * 42亿 * 42亿 * 42亿,这样世界上的每一粒沙子都可以分配到单独的地址,从而解决了IP地址不够用的问题,但是实际上并没有投入使用。
2023-10-31 21:54:46 1115
原创 UDP协议
UDP协议是无连接的传输层协议,它不保证数据传输的可靠性和顺序性。与TCP协议相比,UDP协议具有以下特点:1.速度快:因为UDP协议不需要建立连接、确认数据包和重传丢失的数据包等操作,所以它的传输速度更快。2.简单:UDP协议没有复杂的控制流程和错误处理机制,因此它比TCP协议更加简单易用。3.应用场景广泛:由于UDP协议的速度快和简单,因此它适用于一些对实时性要求高但不需要可靠传输的应用,例如音视频流媒体、游戏等。
2023-10-11 20:52:13 945
原创 TCP协议中的几个机制
TCP协议一: TCP协议之特点和首部格式TCP协议二: TCP协议之可靠传输TCP协议三: TCP的三次握手和四次挥手确认应答,超时重传,连接管理都是给TCP的可靠性提供的支持,引入了可靠性,那就牺牲了传输效率,可靠性和效率是冲突的,因此UDP虽然没有可靠性,但是传输效率要比TCP高,TCP竭尽可能的提高传输效率运输(本质上补救措施),滑动窗口本质上就是降低了确认应答,等待ack消耗的时间。对于基本确认应答就是如此,每次都是发送一个数据后,等待ack到达后,再发送下一个数据而滑动窗口的本质是批量发送
2023-10-09 23:15:24 103
原创 TCP的三次握手和四次挥手
TCP作为一个有连接的协议,需要建立连接和断开连接,其建立连接就是三次握手,断开连接就是四次挥手,理解三次挥手的意义:1.让通信双方各自建立对对方的"认同",2.验证通信双方各自的发送能力和接受能力是否OK,3.在握手过程中,双方来协商一些重要的参数;四次挥手,理解为什么是四次挥手,理解FIN和ACK的传输机制以及TIME_WAIT意义和作用。
2023-09-24 22:36:43 59
原创 TCP协议之可靠传输
可靠传输是TCP最核心的部分,TCP的可靠传输是通过确认应答+超时重传来进行体现的,确认应答描述的是传输顺利的情况,超时重传描述的是传输出现问题的情况,这两者相互配合,支撑TCP可靠性。
2023-09-23 20:00:00 296
原创 TCP协议之特点和首部格式
TCP是一种面向连接的运输层协议,它提供了可靠的数据传输服务。在使用TCP之前,必须先建立TCP连接,在传输完成后释放连接。每一条TCP连接只能有两个端点,即两个套接字(socket)。每个套接字由IP地址和端口号组成。每一条TCP连接都是唯一的,由通信两端的两个套接字所确定。一个IP地址可以对应多个不同的TCP连接,同一个端口号也可以出现在多个不同的TCP连接中。这种特性使得TCP能够在复杂的网络环境中实现可靠的数据传输。
2023-09-21 12:00:00 101 1
原创 对接口的理解和说明
Java中的接口是一种特殊的抽象类,它只包含常量和抽象方法的定义,没有任何具体实现,简单而言,接口是多个类的公共规范,是一种引用数据类型。
2023-05-19 14:08:34 215
原创 对抽象类的解释说明
Java中的抽象类是一种不能直接被实例化的类,需要通过被继承之后才能被使用。抽象类通常被用来作为其他类的基类,以定义一组通用的属性和方法,并强制子类实现其中的一些方法。简单而言,如果一个类没有包含足够的信息来描绘一个具体的对象,那么这个类就是抽象类。使用抽象类的主要目的是为了将一些通用的行为和状态抽象出来,从而实现更好的代码重用和维护。
2023-05-18 18:51:18 120
原创 HTTP协议的基本格式
HTTP(全称为 “超文本传输协议”) 是一种应用非常广泛的应用层协议。HTTP 往往是基于传输层的 TCP 协议实现的,其中HTTP1.0, HTTP1.1, HTTP2.0 均为TCP, HTTP3 基于 UDP实现,这里是主要讨论的是HTTP 以 1.1 版本。平时所用的网站就是通过HTTP来传输数据。对于定义的理解:1.为什么说是超文本: 因为传输的内容不仅可以是文本(html,css),还可以是其他资源(图片,视频,音频等二进制的数据)。2.HTTP应用层协议的理解。
2023-04-05 16:09:22 585
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人