计算机网络(一) —— 网络基础入门

news2024/11/28 2:52:13

目录

一,关于网络

二,协议

2.1 协议是什么,有什么用?

2.2 协议标准谁定的?

2.3 协议分层

 2.4 OSI 七层模型

2.5 TCP/IP 四层模型

三,网络传输基本流程

3.1 局域网中两台主机通信*

3.2 报文的封装与解包

3.3 以太网通信

3.4 数据碰撞

3.5 跨网络的两台主机通信*

四,网络中的地址管理

4.1 Mac地址

4.2 IP地址

五,补充

5.1 “以太网”名字的由来

5.2 集线器

5.3  如何看待局域网


一,关于网络

独立模式:计算机之间相互独立

在早期的时候,计算机是相互独立的,但有时一台计算机难以完成某个大型计算,所以需要多台计算机协同完成业务,那么就只能等一台计算机处理完后再将数据传递给下一台计算机,然后下一台计算机再进行相应的业务处理,效率比较低下

网络互联:多台计算机相互独立

于是,为了更方便计算机之间进行数据交互,于是就用一根数据线,将三台电脑连上一个总的计算机,这个计算机就叫做“服务器”,所以这时,就可以将共享的数据放到服务器中进行集中管理,此时各个计算机就能获取到这些共享的数据了,所以各个业务在处理时就能随时进行切换了

局域网LAN:计算机的数量更多了,通过交换机和路由器连接在一起 

后来这样的网络雏形逐渐发展,连入这个网络中的机器变得越来越多,于是就有了局域网的概念

交换机的作用后面会介绍

 广域网WAN:将远隔千里的计算机连接在一起

 各个局域网之间通过入口路由器和出口路由器相互连接在一起,便组成了一个更大的网络结构,我们称之为“广域网”。广域网和局域网是相对的概念,也可以把广域网看作一个非常大的局域网

  •  比如我们在学校里使用的校园网,就是一个在校园范围内建立的局域网,只在校园里有信号,出了校园就没了

二,协议

2.1 协议是什么,有什么用?

协议是一种约定

两台计算机使用网络连接上后,相隔距离可能会变得非常长,而且数据也是有类别的,有些数据就单纯的就是数据,而有些数据是对另一台计算机的请求指令,所以数据类别不同,对数据的处理方式可能也会不同

场景

  • 以前家里只有座机,打电话时对方接了就要收费,对方没接就不收费
  • 我在远方上大学,老爸在家里,于是我就和老爸约定:每次往家里打电话,响一声代表报平安,响两声代表需要打生活费,响三声才接电话
  • 这种我和我爸对响几声有什么含义表示我和我爸的一种约定,而这就叫做我和你爸达成的某种协议

问题:为啥要这样做?

解答:能减少沟通的成本,提高双方沟通的效率 

问题:如何保证你的数据能准确到达下一个设备?长距离传输的数据丢失如何解决?如何定位主机?接收方如何处理数据?

解答:前三个是数据问题,第四个是应用问题;丢包有tcp协议来解决,定位主机就通过ip协议来,数据能准确到达下一个设备用数据链路层来解决

上面所有的数据问题,归根结底就一点:单纯的传输距离变长了

场景:

  • 我们收快递,我们只需要快递盒子里面的东西,但是我们买的东西都会有一个盒子包装起来,并且还贴上一张纸,这个盒子以及上面的那张纸,我们就称之为“协议”,(发给我们的东西比原来的东西多发给了我一些东西)
  • 那张纸上面有很多信息,如果对应到代码上,就可以用结构体来表示
  • 计算机之间的传输媒介是光信号和电信号,通过“频率”和“强弱”来表示 0 和 1 这样的信息,要想传递各种不同的信息,就需要约定好双方的数据格式

 总结

  • 协议就是双方的一种约定,最终它的表现形式就是结构体对象。两个主机有相同的结构体对象,这样的话传输的时候另一个主机就能立马识别到收到的结构体信息,提高数据传输效率
  • 计算机生产厂商有很多,OS也有很多,硬件设备也有很多,所以光光有协议也不够,所以必须要有一个硬件通信标准,称为“行业标准”,硬件标准,软件协议,协议只是标准的一个子集

2.2 协议标准谁定的?

 上面也说过了,现在的计算机生产厂商很多,计算机操作系统也很多,计算机硬件更多,那么为了让这样的不同厂商的计算机能够相互顺畅地使用网络通信,那么就需要有一个代表站出来,与所有厂商约定一个共同地标准,并且要求大家都遵守这样地标准,这就是“网络协议”。

而这个代表一般都是该领域中地“大佬”,因为网络协议地定制就是“规则”的定制,比如5G标准就是华为定义的,因为华为在通信领域已经是“大佬”了,所以它就是通信领域的代表

正所谓“一流的企业做标准,二流的企业做品牌,三流的企业做产品”。标准的定制已不是是公益性,开源性的,制定标准的目的是为了更方便人们的生活的,同时在服务人们的同时,还有一部分是有一定盈利性质的,就比如“专利”,毕竟人家也是要吃饭的,能够理解

2.3 协议分层

  • 操作系统里有多种协议,所以要进行协议管理 -- 先描述,再组织
  • 协议本质就是软件,软件是可以“分层”的(分层:比如在类里面编写成员方法,main函数去调用;或者C++有继承体系,每一层继承可以认为就是一层软件层,改子类不影响父类)
  • 所以协议在设计的时候,就是被层状划分的

生活中的例子:我们打电话的时候,本质是你的手机在和对方的手机进行通信,表面上是人在人的语言层上交流,底层则是两部电话用它们的方式来进行通信,这也是一种分层

问题: 为什么要划分为层状结构呢?

解答

  • 场景逐渐变得复杂:比如前面打电话的例子,随着技术发展,人与人沟通从面对面沟通到远距离沟通,这也是应用场景变复杂的体现
  • 功能解耦,便于人们进行各种维护:还是打电话的例子,人与人沟通,电话与电话沟通,两者之间不影响,而且便于维护是指如果出问题,只需要在人的层面或者电话层面找问题就好了,不用整体找)-->所以把网络协议也搞成了层状结构

总结: 协议为什么要分层呢?技术上,网络代码的规模太大,需要解耦;实际情况下,就是问题是分层的,而协议是为了解决问题的,所以协议也是分层的。

 2.4 OSI 七层模型

  • OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型, 是一个逻辑上的定义和规范。
  • OSI把网络从逻辑上分为了7层. 每一层都有相关、相对应的物理设备,比如路由器,交换机。
  • OSI 七层模型是一种框架性的设计方法,其最主要的功能使就是帮助不同类型的主机实现数据传输,比如手机和电视之间的数据传输
  • 它的最大优点是将服务、接口和协议这三个概念明确地区分开来,概念清楚,理论也比较完整. 通过七 个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯
  • 但是,由于OSI七层模型比较复杂并且不太实用,于是在后面具体实现的时候对其进行了跳转,于是就有我们现在看到的TCP/IP 五层模型(其中物理层我们做应用的暂不考虑,于是也可以称为四层模型)

分层名称

功能每层功能概览
应用层针对特定应用的协议
表示层通信固有数据格式和网络标准格式的转换
会话层通信管理。负责建立和断开通信连接(数据流动的逻辑通路)。管理传输层以下的分层
传输层管理两个节点之间的数据传输。负责可靠传输(确保数据被可靠地传送到目标地址)
网络层地址管理与路由选择
数据链路层互连设备之间传送和识别数据帧
物理层以 0/1 代表电压地高低以及灯光地山灭,界定连接器地网线的规格

2.5 TCP/IP 四层模型

TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇。TCP/IP通讯协议采用了5层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。

  • 物理层: 负责 光/电 信号的传递方式。比如现在以太网通用的网线(双绞线)、早期以太网采用的的同轴电缆 (现在主要用于有线电视)、光纤,现在的wifi无线网使用电磁波等都属于物理层的概念。物理层的能力决 定了最大传输速率、传输距离、抗干扰性等。集线器(Hub)工作在物理层。
  • 数据链路层: 负责设备之间的数据帧的传送和识别. 例如网卡设备的驱动、帧同步(就是说从网线上检测 到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作。有以太网、令牌环网, 无线LAN等标准。交换机(Switch)工作在数据链路层。
  •  网络层: 负责地址管理和路由选择。例如在IP协议中,通过IP地址来标识一台主机,并通过路由表的方式规划出两台主机之间的数据传输的线路(路由)。路由器(Router)工作在网路层。
  • 传输层: 负责两台主机之间的数据传输。如传输控制协议 (TCP),能够确保数据可靠的从源主机发送到目标主机。应用层:负责应用程序间沟通,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问 协议(Telnet)等。我们的网络编程主要就是针对应用层

TCP/IP 四层模型和OSI七层模型的关系如下:

通信的复杂程度,本质是和距离成正比的

问题:复杂体现在哪里,是协议栈要解决的问题吗?

应用范畴:

  •  如何处理数据 --> 应用层协议 --> 对应计算机体系结构的“用户层”
  • 丢包(我发出去的消息对方没接收到) --> 传输层协议 --> 对应OS层
  • 定位问题(如何快速定位对方的主机) --> 网络层协议 --> 也是OS层,这两个传输层和网络层协议,都对应这Linux内核中的模块
  • 前两个问题解决了,但是两个主机相隔几千米,数据传输时会经过很多路由器,所以要解决主机切换的问题(解决下一跳主机的问题) --> 数据链路层协议(还有物理层协议,但不是软件层的,所以暂时不考虑) --> 对应驱动层(物理层对应硬件层)

 这五种协议就称之为 --> TCP/IP协议的五层层状协议

问题:网络协议栈和我们之前学习的Linux系统有什么关系呢?

解答

  • 往后我们学习的网络层和传输层就是在OS内实现的,所以我们要花大量时间学习OS的知识。
  • 网卡是一个硬件,所以网络通信的本质就是用户在访问硬件,而我们写的各种代码本质也是在和硬件交流,所以网络通信本质也是在访问硬件。
  • 但是用户没资格直接访问硬件,因为OS是硬件的管理者,它不允许上层用户直接访问硬件。但是我们用户要想达成目的就必须得访问网卡等硬件,所以OS要给用户提供对应的相关系统调用接口。

所以操作系统有很多,但是网络都是一样的,都必须遵守上面的网络标准,不然你这个操作系统就没法入网,网络协议栈都是一样的

网络通信的本质: 就是贯穿协议栈的过程

三,网络传输基本流程

3.1 局域网中两台主机通信*

同一个局域网内的主机是可以不用跨网络直接通信的,因为局域网最初的设计目的,就是为了让局域网内的主机进行快速通信

局域网协议有很多,但是现在以太网是主流,以太网是属于局域网通信标准的一种:

网络通信的的本质就是贯穿协议栈的过程,所以当用户要将文件传输给另一台主机前,要对该文件数据贯穿网络协议栈进行封装: 

  • ①应用层(FTP协议):首先如果用户发送信息“你好”,首先对在“你好”前面加上应用层自己对应的报头,然后拼接起来,形成了在应用层的一个报文
  • ②传输层(TCP协议):我们需要保证发送的消息有序,所以需要两个设备的传输层要有一定的协商,所以传输层也要有自己的协议,然后给每一个报文信息加上序号,而这个需要由传输层自己实现
  • ③网络层(IP协议):一样的再次在报文前面加上网络层它自己的报文信息(src,dst等)
  • ④链路层(以太网协议):和上面一样的逻辑

像上面这样将信息自顶向下添加各自层报文的动作我们叫做“封装”的过程,每层都要添加的信息我们叫做“报头”,其中我们把去掉报头的剩下的部分称之为“有效载荷” --> 所以我们目前可以认为:报文 = 报头 + 有效载荷

我们把数据发出去后,最先是对方的网卡最先拿到数据,然后网卡把数据放到OS的内存里

问题:为什么要交到内存里?

解答:冯诺依曼体系结构这样规定的,外设拿到的数据要想被CPU处理必须先放到内存里

通过以太网把报文从一个设备放到另一个设备的链路层,然后接收方再一层一层把报头去掉,把有效载荷向上交付,最后到应用层时,就能够把“你好”呈现给对方的屏幕上,完成一次局域网通信过程。

去报头的过程叫做“解包”,而局域网两台设备通信的过程,本质就是不断进行 封装解包 的过程

3.2 报文的封装与解包

  • 不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报 (datagram),在链路层叫做帧(frame)。
  • 应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装 (Encapsulation)。
  • 首部信息中包含了一些类似于首部有多长,载荷(payload)有多长,上层协议是什么等信息。后面详细介绍协议报头字段时会具体介绍
  • 数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,根据首部中的 "上层协议字段" 将数据交给对应的上层协议处理

下面是数据封装的过程:

 

下面是数据分用的过程:

 

重点

封装的时候,也要考虑未来对方设备解包的问题,如果不考虑解包问题,那么就相当于把两杯水倒在一起容易,但是想从一杯水中分离原来两杯水就难。

  1. 几乎任何层的协议,都要提供一种能力:将报头和有效载荷分离的能力
  2. 几乎任何层的协议,都要在报头中提供:决定将自己的有效载荷交付给上层的哪一个协议的能力 --> 报文的分用的过程

上面两点是大部分协议的共性,未来我们具体学习协议的时候会经常涉及这两个问题,就和之前学习Linux的“先描述,再组织”一样 

3.3 以太网通信

以太网解决的问题是:一台主机是怎么把数据准确交给另一台主机的

场景

  1. 一个教室有很多人,老师叫张三站起来答问题,张三站起来了,但其他同学没有,这时候,老师说的话全班都听到了,但是只有张三站起来了。
  2. 李四当然也听到了老师的话,所以李四对老师发的报文做提取,然后发现这个消息是要发给张三的,然后李四将自己的名字和张三做对比,发现自己不是张三,然后李四就把接收到的报文全部丢弃了。
  3. 然后老师问张三要作业,然后张三说他昨天交了,然后老师想起来昨天已经收了作业了,于是让张三坐下。张三说昨天交了的时候,全班同学再次听到了张三发出的报文,但是依旧丢弃,因为这个报文是发给老师的,这样,老师就和张三在局域网中完成了一次通信

以太网通信和上面的场景类似,一台主机发送报文的时候,其实所有的主机都接受到了消息,每个设备读取报文然后丢弃报文,但是只有指定的设备才会开始解包,丢弃报文的阶段在链路层就已经完成,上层不关心

像这种所有主机收到了报文,但是大部分都在数据链路层都丢弃了,只有指定设备才会继续解包,这种所有主机都遵守的“约定”叫做“以太网协议”,以“以太网协议”构建的网络通信叫做“以太网通信”,保证以太网通信的基础是Mac地址,后面介绍

3.4 数据碰撞

场景:还是教室的场景,在课间的时候,都会乱糟糟的,大家都在大声喧哗,张三对李四说的话李四可能都听不清楚。

所以局域网也和教室类似,每台主机都可以往网络中发送报文,同时每台主机也可以接收报文

但就和上面场景一样,当每台主机都往局域网中发送大量报文,就又可能发生“数据碰撞”,所以要想“搞掉”局域网,就可以直接往网络里塞大量垃圾报文,就可以增加碰撞概率,使所有数据失效

我们也把多台主机构成的局域网叫”碰撞域“。

所以发送方主机都要执行避免碰撞的算法,让可能会发送碰撞的数据等待随机时间再发

问题:我咋知道碰撞了?

解答

  • 最简单的例子,我们自己说话我们自己也能听到,数据发送也是同理。
  • 当主机收到一个数据后将其与之前发送的数据做对比,如果收到的数据与之前发送的数据不一样,则可以计算出发送过程中发送了碰撞
  • 那么当检测到发生了碰撞之后,主机可以选择等待一段时间再重新发送该数据。就像现实生活中的两个人想要同时说话,此时会有一方说:“你先说吧”,这也是一种碰撞避免

注意: 

  • 大多数情况下,网卡会直接丢掉不属于自己的报文,但是网卡有一种工作模式叫做”混杂模式“,可以通过系统接口打开,这种模式下,网卡拿到报文之后,如果不是自己的报文也会交给上层去解包,而这样肯定会有安全问题。
  • 但是我们一般不用担心,如果我们的数据在应用层做了加密,就算被抓包了,它也看不到,所以我们怕的就是没有加密的数据被抓包
  • 在局域网中主机越多碰撞的概率越大,所以大的局域网都会有”交换机“这个设备,它的原理类似把一个大的局域网再次分成了很多个小局域网,当一个小局域网的两台设备要进行数据交换的时候,只要在它的那个小局域网内进行数据交流即可,防止了数据交流的进一步扩大。所以交换机的核心工作就是: 划分碰撞域

3.5 跨网络的两台主机通信*

局域网之间是通过路由器连接起来的,路由器可以认为是局域网中的一台“特殊”主机;没错,路由器也是主机,它的“特殊”是因为路由器可以跨局域网与其他局域网的路由器进行数据通信,因此路由器是跨网络两台主机通信的基本保证

上面的是路由器级联的两个采用相同的通信标准进行通信的过程,但是被路由器级联的局域网可能采用的是不同的通信标准,比如局域网1采用的是“以太网通信”而局域网2采用的是“令牌环网”通信

由于 以太网 和 令牌环 网采用的是不同的通信表春,因此它们给数据添加的报头也是不一样的,所以令牌环网中的主机无法对以太网的数据帧进行解包

这样的问题一般是由路由器来解决的:

  • 路由器也是局域网中的主机,当数据从局域网1发到局域网2时,最先是路由器的数据链路层收到报文
  • 然后路由器先对报文进行解包,将以太网对应的报头去掉,然后交给上层网络层
  • 网络层进行一系列数据分析后,再将数据向下交付给链路层,此时链路层会再次给报文添加上令牌环网对应的报头,然后再发送到局域网2中,这样就能使数据在令牌环网中传输了,具体过程如下图:

 

四,网络中的地址管理

4.1 Mac地址

  • 前面在以太网通信时提到了“如何保证局域网中每台主机的唯一性”,就是通过Mac地址来的保证的
  • 每一个网卡在出厂时都有一个48比特位的长度的序列号,并且在全球是唯一的(其实只要保证其在局域网的唯一性即可),然后这个序列就是Mac地址,不能修改。

在Linux中,使用 ifconfig 命令可以查看当前主机对应的网卡信息:

4.2 IP地址

场景:假如你是辽宁人,你要去云南玩,不坐飞机,就坐火车,边坐边玩,你们先到河北,然后再去山西,接着陕西,四川,最后云南。最后我们规划出来一条辽宁到四川的路线,而在每两个节点之间,都有两套地址:“上一站你从哪来,下一站要到哪里去”。我们这个两站地址一直变化的,但是总路程的不变,还是辽宁到云南。中间站变化的依据是“我要去哪里”。当我们到四川时,问当地人问题,当地人会说:“你从哪里来(辽宁)”,“你要去哪里(云南)”,“你上一站从哪来(陕西)”
所以我们会有两套地址,一套是你从辽宁到四川,这个不变,另一套是你的临时地址,你的上一站和下一站,这个会根据你当前的位置一直变化,而前者我们不变的地址就叫做 “IP”地址,有原地址IP和目的IP地址,后者变化的地址就是Mac地址

问题:①IP地址是什么?②为什么要有IP地址?

解答

  • ①:IP地址是IPv4的简称,为四字节,32比特位的整数,类似 192.168.1.1 这样的风格
  • ②:可以指导我们进行路径规划,我们就可以拿着ip地址不断进行路径规划

IP地址的使用过程:

  • ip协议加报头时,会加个srcip和dstip,表示发送地和接收地,然后继续往下交付给以太网驱动程序,以太网也添加报头
  • 然后我要把客户端C的数据转发给客户端S,如果目的ip和我在一个子网,就不给路由器了;如果不在一个子网,就要先把数据交给路由器1,而两者的本质是一样的:局域网通信
  • 当C要把数据给路由器1,就得先知道路由器1的Mac地址,假设路由器的ip地址是IP_R,Mac地址为Mac_R,所以以太网驱动加报头时,就把Mac_C和Mac_R加进去,然后扔到以太网去,然后就和前面的局域网通信原理一样, 最后只有路由器1拿到了报文
  • 然后路由器1做报头方面的解析,然后识别到ip协议报文中目的地S的ip,然后如果路由器查自己的路由表,发现刚好和S的ip相连,于是就把报文直接发到S所在局域网的路由器2
  • 但是路由器2不能把数据直接交给S,要先向下交付交给令牌环驱动程序,然后添加令牌环的报头,然后令牌环进行识别,将报头和有效荷载分离,然后就和前面一样一层层向上交付,就到了S主机的应用层。在这个给过程中, 除了令牌环协议,每一层的收发结果是完全一样的

 总结

  • 有了路由器,就保证了ip报文才可以在全球所有的子网当中自由通行,因为到一个子网当中,路由器会去掉老的报头,在封装个符合当前局域网的新的报头,这样的话,我们的局域网中以太网和令牌环网在整个网络中底层的差异就屏蔽了,因为路由器会更新报头,并且路由器要横跨两网络,所以路由器也必须有以太网驱动也要有令牌环驱动
  • 所以报文在每个路由器跳转过程中,虽然每个路由器都会对报文进行解包,但是都只是解包局部,然后重新封装时也是只封装局部
  • 在路由器会重新解包和封装的过程之中,IP层往上所有的协议都可以做成一样的,底层协议可以有很大的差异,但正是因为有IP地址,再加上工作在IP层的路由器的存在,IP实现了全球主机的软件虚拟层的“一切皆是IP报文”,屏蔽了底层硬件的各种差别
  • Mac的使命就是在局域网中把数据从一个主机送到另一个主机,然后到下一个路由器时,会把旧的Mac地址丢掉,然后加上新路由器在它的局域网中的Mac地址,

ip尤其是目的ip,一般是不会改变的,协助我们进行路径选择;mac地址,出局域网之后,来源和目的都要丢弃,让路由器重新封装 

五,补充

5.1 “以太网”名字的由来

“以太”这个名字来源于物理学,在20世界初,很多科学家认为“光的传播也是需要介质的”,那么科学家们就发现:光能从太阳经过太空传播到地球上,那么地外空间的真空中一定也有一种物质能使光传播,所以科学家们就把这个物质称为:“以太

但是后面科学家们经过实验发现,“以太”不可能存在,真空就是真空,里面没有任何东西;但值得一提的是,在这个故事线中,图灵和冯诺依曼也参与过这场讨论,因为它们不仅仅是科学家,也是数学家

经过后面的发展,诞生了互联网,而互联网也需要有个名字,于是当时的人们将其命名为“以太网”,因为在物理学史上人们认为“以太”就是传送物质的介质,也就是说“以太”具有某种通信能力,虽然“以太”实际上不存在,诞生现在计算机领域出来了一个能够传输信息的“网络”,于是早期的局域网标准就被命名为“以太网”

5.2 集线器

集线器是工作在物理层上的一个设备

电磁信号在长距离传输过程中,信号是会衰减的,所以集线器的功能就是对接收到的信号进行再生整形放大,以扩大传输距离

需要注意的是,集线器属于纯硬件网络底层设备,基本上不具有类似于交换机的“只能记忆”能力和“学习”能力,也不具备交换机有的Mac地址表,所以它发送数据没有针对性,所以是采用广播方式发送,简单来说就是把数据包发送到与集线器相连的所有节点

5.3  如何看待局域网

局域网某种程度上算是该局域网中所有主机的共享资源,任何时刻都只允许一个主机向局域网当中发数据,换句话说就是保证多台设备访问共享资源时的互斥访问,所以局域网可以看作多台设备共享的临界资源
未来我们往网络发送数据本质也是通过进程在网络读网络写
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2099836.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

智能化浪潮赋能工业制造与报废拆解,基于高精度YOLOv8全系列参数【n/s/m/l/x】模型开发构建工业生产场景下车辆不同部位智能化分割检测识别分系统

随着科技的飞速发展,数字化与智能化已成为推动社会进步的强大引擎。在工业生产制造与汽车报废处理这一传统领域中,这一变革尤为显著。曾经,流水线作业与人工拆解是这些行业的主要生产方式,它们不仅效率低下,且高度依赖…

如何从 AWS CodeCommit 迁移到极狐GitLab?

极狐GitLab 是 GitLab 在中国的发行版,可以私有化部署,对中文的支持非常友好,是专为中国程序员和企业推出的企业级一体化 DevOps 平台,一键就能安装成功。安装详情可以查看官网指南。 本文将分享如何从 AWS CodeCommit 服务无缝迁…

【无标题】XSS安全防护:responseBody (输入流可重复读) 配置

接上文:配置XSS过滤器 XXS 安全防护:拦截器+注解实现校验-CSDN博客XSS(跨站脚本)攻击是一种网络安全威胁,允许攻击者注入恶意脚本到看似安全的网站。当用户浏览这些被注入恶意代码的网页时,恶意脚本会在用户的浏览器环境中执行,这可能导致多种安全问题,如窃取敏感数据、…

链表算法题(上)

在之前单链表和双链表两个专题中我们学习了链表相关的概念和性质,同时了解了单链表和双链表各自的特征,那么接下来在本篇中我们就将使用这些链表的知识来解决链表相关的算法题,在本篇中这些算法题能强化我们的算法思想,会对我们之…

HTML5好看的花店商城源码2

文章目录 1.设计来源1.1 主界面1.2 界面效果11.3 界面效果21.4 界面效果31.5 界面效果41.6 界面效果51.7 界面效果61.8 界面效果71.9 界面效果8 2.效果和源码2.1 动态效果2.2 源代码 源码下载万套模板,程序开发,在线开发,在线沟通 作者&#…

postgresql数据库创建表分区和分区分区查询失效问题

postgresql数据库创建表分区和分区失效场景 一、前言二、分区表创建1、范围分区(Range Partitioning)2、列表分区(List Partitioning)3、hash分区(hash Partitioning) 三、表分区查询失效问题 一、前言 在…

AcWing算法基础课-785快速排序-Java题解

大家好,我是何未来,本篇文章给大家讲解《AcWing算法基础课》785 题——快速排序。这篇文章介绍了使用快速排序算法对整数数列进行排序的方法,包括选择基准元素、分区操作和递归排序子数组。通过详细的步骤和示例,解释了快速排序的…

Axure打造科技感数据可视化大屏原型

在数字化浪潮的推动下,数据已成为企业决策不可或缺的核心驱动力。面对海量且复杂的数据集,如何高效解读并转化为洞见,是企业面临的重大挑战。数据可视化,尤其是科技感十足的大屏展示,不仅为企业提供了直观的数据洞察&a…

9,sql 约束

创建表时添加非空约束 create table sys3(name int,age int not null) 建表后修改 alter table sys3 modify name int null 删除 创建表时添加默认值约束 关键字 default 默认值的意思 后面跟着默认的值create table sys_4(列名1 数据类型 default 默认值,列名2 数据类型 no…

网络安全售前入门09安全服务——安全加固服务

目录 1.服务概述 2.流程及工具 2.1服务流程 2.2服务工具 3.服务内容 ​​​​​​​4.服务方式 ​​​​​​​5.风险规避措施 ​​​​​​​6.服务输出 1.服务概述 安全加固服务是参照风险评估、等保测评、安全检查等工作的结果,基于科学的安全思维方式、长期的安全…

Apache CloudStack Official Document 翻译节选(十三)

快速部署一朵 Apache CloudStack 云 (二) 部署一朵pache CloudStack 云 安装Apache CloudStack的云内管理服务组件 本部分我们将安装Apache CloudStack的云内管理服务组件及周边工具。 关于数据库的安装与配置: 我们会安装和配置MySQL并配…

【机器学习入门】一文读懂非线性支持向量机SVM

前面已经分别介绍了基于硬间隔最大化的线性可分支持向量机、基于软间隔最大化的线性支持向量机,这次来总结下使用核函数来解决非线性可分问题的非线性支持向量机。 【机器学习入门】一文读懂线性可分支持向量机【机器学习入门】一文读懂线性支持向量机SVM 一 非线…

GCViT实战:使用GCViT实现图像分类任务(一)

摘要 GC ViT(全局上下文视觉转换器)是一种创新的深度学习架构,旨在提升计算机视觉任务中的参数和计算效率。它通过将全局上下文自注意力模块与标准的局部自注意力相结合,有效地建模长程和短程空间交互,同时避免了传统…

IJCAI-信也科技杯全球AI大赛-华东师范大学亚军队伍分享

作者:彭欣怡(找不到工作版) 华东师范大学; 马千里(搬砖版) 虾皮; 指导:闫怡搏(科研版) 华东师范大学 比赛链接:https://ai.ppdai.com/mirror/goToMirrorDetailSix?mirrorId34 前言 这是我们首次参加语音领域的比赛,最初只是抱着…

深度学习之 OpenCV 图像边缘检测算法解析及代码演示

引言 在计算机视觉领域,边缘检测是一种重要的图像预处理技术,用于识别图像中对象的边界。边缘检测有助于提取图像的关键特征,这对于后续的图像分析(如物体识别、运动检测等)至关重要。OpenCV 是一个强大的计算机视觉库…

Zabbix 企业级高级应用(Zabbix Enterprise Advanced Application)

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:Linux运维老纪的首页…

备忘录1【java环境变量手动更改】

B站视屏链接:https://www.bilibili.com/video/BV1cV8BeCESA?vd_source3e4562475feb55327a8adde111050d4e 1.电脑设置 2.系统-------系统信息 3.高级系统设置 4.环境变量 5.系统变量中,更改之前创建好的JAVA_HOME 版本可以将1.8改成本机安装的其他版本…

Java进阶13讲__第九讲

Stream流 1. 案例初体验 package cn.hdc.oop9.stream.using;import java.util.LinkedList; import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream;public class t1 {public static void main(String[] args) {LinkedList<String&g…

认知杂谈30

今天分享 有人说的一段争议性的话 I I 《豁然开朗&#xff1a;男性成长的关键转折》 在男人的人生旅程当中啊&#xff0c;最金贵的可不是那些让人眼馋的钱财啥的&#xff0c;也不是啥惊天动地的事儿&#xff0c;更不是偶尔碰到的贵人帮忙。真正无价的宝贝呢&#xff0c;是在…

培训第四十一天(docker-compose一键部署项目,haproxy容器代理多个web或java容器)

# 创建脚本&#xff0c;可以在java环境中运行任何的jar包或者war包#!/bin/bash/usr/local/jdk/bin/java -jar /java/src/*.?ar 一、思路分析&#xff1a; &#xff08;1&#xff09;nginx 1、下载镜像&#xff0c;将本地的dist项目的目录挂载在容器的/usr/share/nginx/html…