Linux - 第22节 - 网络基础(其他重要协议或技术)

news2024/9/24 15:19:59

1.DNS协议

• DNS(Domain Name System,域名系统)协议,是一个用来将域名转化为IP地址的应用层协议。

• DNS协议属于应用层协议,由UDP实现其域名解析功能。

1.1.DNS背景

TCP/IP中通过IP地址和端口号的方式,来确定网络中一个主机上的一个程序。但IP地址是一长串数字,并不便于人们记忆,于是人们发明了一种叫做主机名的东西,并用hosts文件夹来描述主机名和IP地址之间的对应关系。

最初,这个hosts文件是由互联网信息中心(SRI-NIC)来管理的。

• 如果一个新计算机要接入网络,或者某个计算机IP变更,都需要到信息中心申请变更hosts文件。
• 其他计算机也需要定期下载更新新版本的hosts文件才能正确上网。
• 当用户通过域名访问互联网服务时,会先通过域名在本地的hosts文件中找到其对应的IP地址,然后再用这个IP地址去访问对应的服务。
但这样太麻烦了,于是产生了DNS系统。

• 由一个组织的系统管理机构,维护系统内的每个主机的IP和主机名的对应关系。
• 如果新计算机要接入网络,或者某个计算机IP变更,就需要将对应信息注册到数据库中。
• 当用户通过域名访问互联网服务时,会自动查询DNS服务器,由DNS服务器检索数据库,得到对应的IP地址。
至今,我们的计算机上仍然保留了hosts文件,这个hosts文件当中一般存储的是主机名与IP地址之间的映射,用户也可以在hosts文件中自主添加域名和IP映射关系,在域名解析的过程中会优先查找hosts文件的内容。

注:使用 cat /etc/hosts 命令可以查看hosts文件当中的内容。

1.2.域名简介

域名是用来识别主机名称和主机所属的组织机构的一种分层结构的名称,例如www.baidu.com。

• com:一级域名,表示这是一个工商企业域名。同级的还有.net(网络提供商)和.org(开源组织或非盈利组织)等。
• baidu:二级域名,一般对应的就是公司名。
• www:只是一种习惯用法,之前人们在使用域名时,往往命名成类似于ftp.xxx.xxx/www.xxx.xxx这样的格式,来表示主机支持的协议,该部分也可以不写。

1.3.域名解析过程

在浏览器中输入url后,如果url当中包含域名,则需要进行域名解析。

• 首先会在浏览器的DNS缓存中去查询是否有对应的记录,如果查询到记录就可以直接得到对应的IP地址,完成解析。
• 如果在浏览器的DNS缓存中没有找到,就会去查询操作系统中的DNS缓存,如果查询到对应的IP地址则完成解析。
• 如果在操作系统的DNS缓存中没有找到,就会去查找本地的hosts文件,如果查询到对应的IP地址则完成解析。
• 如果在本地的hosts文件中也没有找到,就会去本地DNS服务器中查找。本地DNS服务器IP地址一般由本地网络服务商提供,如电信、移动等公司,一般通过DHCP自动分配。目前使用的比较多的是谷歌提供的公用NDS 8.8.8.8和国内公用DNS 114.114.114.114。如果在本地DNS服务器中有对应域名的缓存,则直接返回对应的IP地址,完成解析。
• 如果本地DNS服务器中仍然没有找到,那么本地DNS服务器就会拿着域名去根DNS服务器中询问,根DNS服务器会告诉本地DNS顶级域名服务器的IP地址。
• 本地DNS拿到顶级域名服务器的IP地址后,就会拿着域名去找顶级DNS服务器,顶级域名服务器会告诉本地DNS权威域名服务器的IP地址。
• 本地DNS服务器拿着域名去权威域名服务器中,查询域名对应的IP地址,最终将该域名对应的IP地址返回给浏览器,此时整个域名解析过程就完成了。

1.4.使用dig工具分析DNS过程

我们可以使用dig工具来查看域名解析的过程,例如查看百度域名www.baidu.com的解析过程。

dig工具的分析结果如下:

结果解释:

• 开头位置是dig工具的版本号。
• 第二部分是服务器返回的详情,其中status参数为NOERROR表示查询成功。
• QUESTION SECTION表示待查询的域名。
• ANSWER SECTION表示查询的结果,首先www.baidu.com被查询成了www.a.shifen.com,而最终www.a.shifen.com被查询成了两个具体的IP地址。
• 最下面是一些结果统计,包含查询时间和DNS服务器的地址等。

1.5.DNS协议的价值

价值一:

域名解析技术是一种非常重要的战略级技术,这里不是说其技术门槛很高,而是其功能和模式很重要。

域名解析服务最早由美国占有,如果美国对其他国家进行制裁,停掉域名解析服务,那么所有公司的网站就无法用域名进行访问,会直接影响公司效益乃至国家发展。

对于域名解析服务被美国占有,其他很多国家是反对的。信息化中心经过多次会议,最终决定域名解析服务器允许其他国家镜像。如今,我们国家也有国家信息中心,会对域名解析做安全性考虑。

价值二:

如今的互联网大场一般在多个地区都有自己的服务器机房,例如A公司在北京、内蒙、贵州三处有自己的服务器机房,三个服务器机房那么就对应三个IP,即三个域名,但是一个公司对外仅会提供一个域名,那么存在所有用户都去访问其中一个域名,即都去访问一个服务器机房而其他两个服务器机房闲置的问题。

其实互联网大场对外提供的那个域名是对应多个IP地址的,客户端进行域名解析时会被随机分配一个IP地址,该IP地址可能对应任意一个服务器机房。这样就根据域名解析,实现了服务器机房访问的负载均衡。


2.ICMP协议

ICMP(Internet Control Message Protoco)Internet控制报文协议,用于在IP主机、路由器之间传递控制信息,是一个TCP/IP协议。

2.1.ICMP协议的定位

在TCP/IP四层模型中,网络协议栈自顶向下分为应用层、传输层、网络层和数据链路层。

其中应用层最典型的协议有HTTP、HTTPS和DNS等,传输层最典型的协议有TCP和UDP,网络层最典型的协议就是IP,数据链路层最典型的协议就是MAC帧协议,但实际网络层还有两种协议叫做ICMP和IGMP。

ICMP、IGMP和IP协议虽然都属于网络层的协议,但ICMP协议和IGMP协议属于IP的上层协议。

• 也就是说,IP的上层协议不一定就直接是传输层的协议,IP的上层协议有可能也属于网络层的协议,但就是位于IP的上层。
• 与之类似的,数据链路层当中的ARP协议和RARP协议,这两个协议虽然与MAC帧协议都属于数据链路层,但这两个协议属于MAC帧的上层协议。

2.2.ICMP功能

ICMP的主要功能包括:

• 确认IP包是否成功到达目标地址。

• 通知在发送过程中IP包丢弃的原因。

• ICMP只能搭配IPv4使用,如果是IPv6的情况下,需要使用ICMPv6。

举个例子:

比如当主机A在向主机B发送数据的过程中,主机B因为某些原因已经离线了。

当发送的数据包到达主机B所在局域网的入口路由器时,入口路由器为了获得主机B的MAC地址,于是会向主机B发送ARP请求包,但由于主机B已经离线了,因此路由器在多次发送ARP请求包而得不到响应后,就会返回一个ICMP Destination Unreachable的包给主机A,此时主机A就知道自己发送的数据无法到达主机B。

2.3.ICMP协议格式


3.NAT技术

NAT(Network Address Translation,网络地址转换)技术,是解决IP地址不足的主要手段,并且能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机。

3.1.NAT技术背景

在IPv4协议中,IP地址数量不足是一个大问题,而NAT技术就是当前解决IP地址不够用的主要手段,是路由器的一个重要功能。

• 在进行对外通信时,NAT能够将私有IP经过一系列替换操作最终转为全局IP,也就是说,NAT是一种将私有IP和全局IP相互转化的技术方法。
• 装有NAT软件的路由器叫做NAT路由器,所有使用私有IP的主机在和外界通信时,都要在NAT路由器上将其私有IP转换成全局IP。
• 很多学校、家庭、公司内部每个终端设置的IP都是私有IP,而只在路由器或必要的服务器上设置全局IP。
• 全局IP要求唯一,但是私有IP不需要,在不同的局域网中出现相同的私有IP是完全不影响的。

3.2.NAT IP转换过程

假设某个局域网当中有A、B、C三台主机,在公网当中有一台服务器,以主机A访问公网中的这台服务器为例,我们来看看数据包在传输过程中IP地址的转换过程。

数据包从局域网到公网的过程:

主机A向服务器发起数据请求的过程中,数据包中IP地址的转换过程如下:

• 刚开始,该数据包当中的源IP地址就是主机A的私有IP地址,目的IP地址就是服务器的公网IP地址。
• 当数据包经过NAT路由器时,路由器会将该数据包的源IP地址替换成自己的WAN口IP地址,此时该数据包的源和目的IP地址就都是公网IP了。
• 该数据包在互联网中经过各种路由转发,最终到达服务器主机。
服务器收到主机A的数据请求并处理后,就会对主机A发来的请求进行响应。

数据包从公网到局域网的过程:

服务器向主机A进行响应的过程中,数据包中IP地址的转换过程如下:

• 刚开始,该数据包当中的源IP地址就是服务器的公网IP地址,目的IP地址就是路由器的WAN口IP地址。
• 数据包在互联网中经过各种路由转发,到达主机A所在局域网的NAT路由器,此时路由器会将该数据包的目的IP地址替换成主机A的私有IP地址。
• 最终路由器就会将该数据包转发给局域网中的主机A。
需要注意的是,因为主机A向服务器发起数据请求时,该数据包当中的源IP地址被替换成了NAT路由器的WAN口IP地址,相当于是该路由器代替主机A向服务器发起了数据请求,因此服务器发出的响应数据包的目的IP地址应该是NAT路由器的WAN口IP地址。

3.3.NAPT技术

3.3.1.地址转换表

• 当局域网当中的主机要访问外网时,NAT路由器会将这些数据包的源IP地址替换成自己的WAN口IP地址。
• 当外网发来响应数据时,NAT路由器又会将响应数据包的目的IP地址替换成局域网中对应主机的IP地址。
那NAT路由器是如何判断,应该将从外网收到的响应数据包转发给局域网中的哪一台主机呢?

• 实际在NAT路由器内部,有一张自动生成的,用于地址转换的表。
• 该转换表中维护的就是局域网中主机的私有IP,与其对应访问的外网当中的某个公网IP之间的映射关系。
• 局域网中的主机第一次向外网发起数据请求时,就会生成表中的映射关系。
• 比如在TCP建立连接时,会建立对应的映射关系,在TCP断开连接后,就会删除对应的映射关系。
在刚才的例子中,主机A第一次向服务器发起数据请求时,路由器中就会建立以下映射关系。

当NAT路由器收到服务器向主机A发来的响应数据时,就可以通过查表得知该响应数据是发送给局域网当中的主机A的。

但如果转换表中维护的只是局域网中主机的私有IP,与其对应访问的外网当中的某个公网IP之间的映射关系,那么就会出现某些问题。

如果局域网中的主机A和主机B同时都在访问该服务器,那么此时转换表中就会建立如下两对映射关系:

此时这张转换表只能保证从左到右的唯一性,而不能保证从右到左的唯一性,当服务器发来响应数据时,该数据包中的目的IP地址都是路由器的WAN口IP,此时NAT路由器就无法判断该数据包应该转发给主机A还是主机B,此时就需要用到NAPT技术。 

3.3.2.NAPT技术

NAPT(Network Address Port Translation,网络地址端口转换),可以将多个内部地址映射为一个合法公网地址。

• 当局域网中的主机向外网发送数据时,路由器会将该数据包的源IP地址替换为自己的WAN口IP地址,并建立该主机私有IP与其对应访问的公网IP之间的映射关系。
• 但如果局域网中的多台主机同时访问同一个外网服务,当路由器收到外网发来的响应数据时,路由器无法判断该响应数据应该转发给局域网中的哪台主机,因为该局域网中所有主机的数据包都由路由器代替发送了,因此发来的响应数据包的目的IP地址都是路由器的WAN口IP地址。
• 于是NAPT在建立转换表的映射关系时,除了建立局域网中私有IP与其对应访问的公网IP之间的映射关系外,还会加上一个由NAT路由器选定的端口号。
• 此时当局域网中的多台主机同时访问同一个外网服务时,虽然外网发来的响应数据的目的IP地址都是路由器的WAN口IP,但发给局域网中不同主机的响应数据对应的目的端口号是不同的,此时路由器就能通过IP+Port的方式来区分发给不同主机的数据包。
比如局域网中的主机A和主机B都在访问同一个服务器,并且它们访问服务器时采用的端口号都是1025。

• 假设主机A发送的数据包先到达路由器,此时路由器将数据包的源IP地址替换成自己的WAN口IP地址,由于路由器用于访问该服务器的1025号端口没有被使用,因此该数据包的源端口号可以不变。
• 当主机B发来的数据包到达路由器时,路由器同样将数据包的源IP地址替换成自己的WAN口IP地址,但此时路由器用于访问该服务器的1025号端口已经被主机A使用了,因此路由器会重新选定一个端口号对数据包的源端口号进行替换。
此时转换表中就会建立如下两队映射关系:

此时这张转换表既能保证从左到右的唯一性,也能保证从右到左的唯一性。

• 当服务器发来的响应数据到达路由器时,虽然服务器发给主机A和主机B的数据包对应的目的IP地址是一样的。
• 但路由器是用自己的1025号端口代替主机A进行数据请求的,而用的是1026号端口代替主机B进行数据请求的。
• 因此现在路由器可以继续根据数据包的源端口号,来判断应该将该数据包转发给主机A还是主机B,进行对数据包中的目的IP地址和目的端口号进行替换,然后转发给局域网内对应的主机。

谈谈路由器:

路由器是工作在网络层的一个设备,负载将数据包从一个网络转发到另一个网络,但不能狭义的认为路由器只能工作在网络层。

NAT路由器在进行数据转发时,不仅有能力替换数据包的源和目的IP地址,而且在必要的情况下还可能会替换数据包的源和目的端口号,而端口号实际是传输层的概念。
为了对IP地址进行动态管理,大部分路由器都带有DHCP功能,而DHCP实际是应用层的一个协议。
因此现在的路由器其实并不仅仅提供网络层相关的服务,网络协议栈中的各层路由器可能都有涉及。

3.4.NAT技术的缺陷

NAT技术进行私有IP和公网之间的替换,主要就是依赖NAT路由器当中维护的网络地址转换表,但这张转换表也体现出了NAT的一些缺陷:

• 无法从NAT外部向内部主机或服务器建立连接,因为外部无法知道内部的私网IP,即使知道了内部的私网IP,因为NAT路由器没有建立转换表,NAT路由器也无法转发,因此NAT外部也就无法主动与内部主机或服务器建立连接(该缺陷可以用NAT穿透技术解决)。
• 转换表的生成和销毁都需要额外开销。
• 通信过程中一旦NAT设备异常,即使存在热备,所有的TCP连接也都会断开。

3.5.NAT穿透技术

NAT穿透技术:

• NAT穿透技术可以使得局域网外(NAT外部)的主机主动访问局域网内(NAT内部)的私有IP主机。

• NAT穿透技术其实就是让NAT内部的主机定时访问NAT外部主机,只要NAT内部的主机访问了NAT外部主机,那么NAT路由器内就建立了转换表,这样NAT外部主机如果想主动访问NAT内部主机也就可以直接访问了。

• 如果想进行NAT穿透,可以在NAT内部主机上下载一些内网穿透软件,这些软件可以帮助我们定时访问NAT外部主机,即让NAT路由器建立对应的转换表。

• 内网穿透软件推荐:NATAPP、内网云、cpolar、花生壳、飞鸽、网云穿等。

• 如果我们的主机实现了内网穿透,那么该主机也可以充当一台服务器,给对应的主机提供服务,被对应的主机访问了。

3.6.NAT和代理服务器

代理服务器(Proxy Server)的功能就是代理网络用户去取得网络信息,代理服务器又分为正向代理和反向代理。

正向代理:

正向代理,是一个位于客户端和目标服务器之间的服务器,客户端并不直接访问目标服务器,而是先访问代理服务器,由代理服务器代替客户端去访问对应的目标服务器,并将目标服务器的响应结果返回给客户端。

比如公司内部一般都会有自己的服务器,当我们使用公司内网上网时。

• 我们对外网发起的数据请求,首先会转发到公司的这台服务器上,然后由公司的这台服务器代替你对外网进行访问。
• 当公司的服务器收到对应外网的响应数据后,再由公司的这台服务器将数据转发给你。
正向代理的好处:

• 正向代理最大的一个好处就是可以加速资源访问。
• 比如公司中大量员工都要访问外网的同一个资源,那么正向代理服务器就可以将对应的资源缓存到本地,此时当其他人要访问该资源时,直接在正向代理服务器就可以获取,而不需要再次进行外网访问。

反向代理:

反向代理,也是一个位于客户端和目标服务器之间的服务器,对于客户端而言,反向代理服务器就相当于目标服务器,用户不需要知道目标服务器的地址,用户只需要访问反向代理服务器就可以获得目标服务器提供的服务。

反向代理,也是一个位于客户端和目标服务器之间的服务器,客户端直接向反向代理服务器发起数据请求,然后再由反向代理服务器将客户端的数据请求转发给真正的目标服务器进行处理,数据处理完毕后反向代理服务器再将数据结果返回给客户端。

比如域名www.baidu.com对应的服务器实际就是一个反向代理服务器。

• 百度内部实际并不是只有一台服务器,但不同地区的人们都可以通过访问www.baidu.com享受到百度提供的服务,实际我们访问的就是百度的反向代理服务器。
• 当这台反向代理服务器收到客户端的数据请求后,就会将我们的数据请求转发给百度内部的某台服务器进行数据处理,然后再将数据处理的结果返回给客户端。
反向代理的好处:

• 反向代理可以起到负载均衡的作用。比如不设置反向代理服务器,那么用户在访问百度时,就会随机访问到百度内部的某台服务器,此时就可能导致某些服务器压力太大,而某些服务器却处于闲置状态。而设置了反向代理服务器后,我们就能够通过某些方法让用户的数据请求较为平均的落到每台服务器上。
• 反向代理还能起到安全防护的作用。有了方向代理服务器后,我们不需要直接将提供服务的服务器对应的信息暴露出去,此外,当由非法请求发送到反向代理服务器时,反向代理服务器就相当于一层软件屏障,可以在反向代理服务器当中部署一些防护措施,让这些非法请求在反向代理服务器这里就被过滤掉,而不会影响内部实际提供服务的服务器。
需要注意的是,代理服务器的主要工作只是对数据进行转发,因此代理服务器处理数据的压力不会特别大,并且代理服务器也可以有多个,因此不必担心代理服务器过载的情况。

正向代理和反向代理的异同:

正向代理和反向代理的相同点:

• 正向代理服务器和反向代理服务器都是位于客户端和服务器之间的。
• 正向代理服务器和反向代理服务器的主要工作,都是把客户端的请求转发给服务器,再把服务器的响应转发给客户端。

正向代理和反向代理的不同点:

• 正向代理是客户端的代理,帮助客户端访问其无法访问的服务器资源的,而反向代理则是服务器的代理,帮助服务器做负载均衡、安全防护等工作的。
• 正向代理一般是客户端架设的,比如公司的正向代理服务器是公司作为客户端架设的,而反向代理一般是服务端架设的,比如百度的反向代理服务器是百度作为服务端架设的。
• 正向代理中,服务器不知道真正的客户端到底是谁,服务器认为正向代理服务器就是真实的客户端,而反向代理中,客户端不知道真正的服务器是谁,客户端认为反向代理服务器就是真实的服务器。

NAT和代理服务器的区别:

NAT和代理服务器都是代替我们向服务器发起数据请求的,但它们有如下区别:

• 从应用上讲,NAT设备是网络基础设备之一,解决的是IP不足的问题,而代理服务器则是更贴近具体应用,比如通过代理服务器进行翻墙,另外像迅游这样的加速器,也是使用的代理服务器。
• 从底层实现上讲,NAT工作在网络层,直接对IP地址进行替换,而代理服务器往往工作在应用层。
• 从使用范围上讲,NAT一般在局域网的出口部署,而代理服务器可以在局域网代理,也可以在广域网代理,也可以跨网代理。
• 从部署位置上看,NAT一般集成在防火墙、路由器等硬件设备上,而代理服务器则是一个软件程序(比如Nginx和Apache),需要部署在服务器上。


4.网络协议总结

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

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

相关文章

地震勘探基础(七)之地震静校正

地震静校正 首先,为什么要进行地震静校正处理呢?主要的原因是地震勘探中激发和接收的观测面不完全是水平的。尤其是在山区、沙漠和黄土原地区。而且近地表还存在风化层或低、降速带低、降速带的厚度和速度会发生变化,这就导致反射波的传播时…

HTML5 FormData对象

利用FormData对象,你可以使用一系列的键值对来模拟一个完整的表单,然后使用XMLHttpRequest发送这个"表单". 创建一个FormData对象 你可以先创建一个空的FormData对象,然后使用append()方法向该对象里添加字段,如下: var oMyForm new FormData();oMyForm.append(&…

Web服务器的工作原理

Web服务器的工作原理 什么是web服务器、应用服务器和web容器?什么是Servlet?他们有什么作用?什么是ServletContext?它由谁创建?ServletRequest和ServletResponse从哪里进入生命周期?如何管理Session&#x…

界面开发框架Qt新手入门教程:Dir视图使用实例

Qt 是目前最先进、最完整的跨平台C开发工具。它不仅完全实现了一次编写,所有平台无差别运行,更提供了几乎所有开发过程中需要用到的工具。如今,Qt已被运用于超过70个行业、数千家企业,支持数百万设备及应用。 点击获取Qt Widget组…

容器(第一篇)docker安装、基础操作命令

docker是什么? docker是一个go语言开发的应用容器引擎。 docker的作用? ①运行容器里的应用; ②docker是用来管理容器和镜像的一种工具。 容器 与 虚拟机 的区别? 容器 虚拟机所有容器共享宿主机…

AIGC大模型之——以文生图介绍

一、什么是以文生图? 以文生图是AIGC ( AI Generated Content )框架中的一个关键技术,通过文字描述,将文字转化为图像并展示出来。以文生图具有白动化程度高、精度高、可扩展性强、可定制化等优势,具有广泛的应用前景&…

PyTorch 提示和技巧:从张量到神经网络

张量和梯度 我们将深入探讨使用 PyTorch 构建自己的神经网络必须了解的 2 个基本概念:张量和梯度。 张量 张量是 PyTorch 中的中央数据单元。它们是类似于数组的数据结构,在功能和属性方面与 Numpy 数组非常相似。它们之间最重要的区别是 PyTorch 张量…

Hadoop中HDFS概述

Hadoop概述之HDFS HDFS架构概述优缺点HDFS架构HDFS文件块大小HDFS的shell命令HDFS读写流程写数据流程 HDFS读数据流程NameNode 和 SecondaryNameNode工作机制DataNode工作机制DataNode数据完整性如何保证 端口名称Hadoop2.xHadoop3.xNameNode内部通信端口8020/9000NameNode HTT…

【STM32单片机】基于语音识别的智能分类垃圾桶,ld3320语音识别模块如何使用,mp3播放模块如何使用

文章目录 需求语音识别模块MY1690 播放模块舵机源码 需求 对于“可回收物”“有害垃圾”“厨余垃圾”“其它垃圾”,不能分清扔到哪个垃圾桶怎么办? 基于语音识别的智能分类垃圾桶,识别到关键词就打开对应的垃圾桶,完全没有分不清…

echarts中彻底清除所有实例和相关数据

单个实例 dispose销毁实例&#xff0c;销毁后实例无法再被使用。 myChart.dispose();实例比较多的时候 获取Dom元素 let doms document.getElementsByClassName(my-chart)销毁所有实例 if(doms && doms.length) {for (let i 0; i < doms.length; i) {let chartIn…

Jumpserver 2.28.8使用分享

目录 一、Jumpserver 介绍 1、跳板机和堡垒机理解 1.1、跳板机 1.2、堡垒机 2、jumpserver简介 二、Jumpserver 安装部署 2.1、部署规划 2.2 、安装要求 JumpServer 环境要求: 2.3、安装方法介绍 官方提供了多种安装方法 三、Jumpserver平台使用 3.1、Admin登录 3.…

bug(Tomcat):StandardContext.startInternal 由于之前的错误,Context[/day01]启动失败

引出 项目启动失败&#xff0c;一个困扰了一上午的bug 报错信息 org.apache.catalina.core.StandardContext.startInternal 一个或多个筛选器启动失败。完整的详细信息将在相应的容器日志文件中找到 org.apache.catalina.core.StandardContext.startInternal 由于之前的错误…

骨传导是哪个意思,推荐几款性能优的骨传导耳机

​骨传导耳机是通过头部骨迷路传递声音&#xff0c;而不是直接通过耳膜的振动来传递声音。与传统的入耳式耳机相比&#xff0c;骨传导耳机不会堵耳朵&#xff0c;在跑步、骑车等运动时可以更好的接收外界环境音&#xff0c;保护听力&#xff0c;提升安全性。此外&#xff0c;骨…

图解LeetCode——114. 二叉树展开为链表

一、题目 给你二叉树的根结点 root &#xff0c;请你将它展开为一个单链表&#xff1a; 展开后的单链表应该同样使用 TreeNode &#xff0c;其中 right 子指针指向链表中下一个结点&#xff0c;而左子指针始终为 null 。 展开后的单链表应该与二叉树 先序遍历 顺序相同。 二…

公式+ChatGPT:为你的标题创作注入新鲜活力

大家是不是经常遇到文章已经写好了&#xff0c;但是标题却还空着&#xff0c;不是不会写&#xff0c;就是写得平淡无奇&#x1f602;。自己都觉得无趣的标题又怎么能吸引有趣的灵魂呢&#xff1f;何不让chatGPT来试试呢&#xff1f; 首先&#xff0c;我们要明白一个基础理念&am…

微软 AD 已成过去式,这个身份领域国产化替代方案你了解吗?

随着全球互联网和数字化浪潮的不断发展&#xff0c;信息安全已成为不可忽视的问题&#xff0c;并随着日益复杂的国内外市场格局&#xff0c;其重要性更加凸显。我国政府也相继印发和实施了《数字中国建设整体布局规划》、《全国一体化大数据体系建设指南》等一系列政策&#xf…

【JavaEE】Servlet的API详解

Servlet的API详解O(∩_∩)O~&#xff1a; 文章目录 JavaEE & Servlet的API详解1. HttpServlet抽象类1.1 init方法1.2 destroy方法1.3 service方法 2. HttpRequest接口2.1 在浏览器上显示请求首行2.2 在浏览器上显示请求header2.3 getParameter方法 - 最常用的API之一2.4 js…

Stable Didffusion 学习笔记经验总结

值的概念 在Stable Diffusion中&#xff0c;有很多要设置的参数&#xff0c;这些参数起到的作用非常重要&#xff0c;直接决定了出图的各种样子和质量&#xff0c;经过实践&#xff0c;我大概搞明白他们遵循的规律&#xff0c;因为程序员是要与AI对话的&#xff0c;所以所谓的…

【CMake 入门与进阶(3)】 CMakeLists.txt 语法规则基础及部分常用指令(附使用代码)

在上两篇中&#xff0c;笔者通过几个简单地示例向大家演示了 cmake 的使用方法&#xff0c;由此可知&#xff0c;cmake 的使用方法其实还是非常简单的&#xff0c;重点在于编写 CMakeLists.txt&#xff0c;CMakeLists.txt 的语法规则也简单&#xff0c;并没有 Makefile 的语法规…

操作系统复习2.3.4-进程同步问题

生产者-消费者 系统中有一组生产者进程和一组消费者进程 两者共享一个初始为空&#xff0c;大小为n的缓冲区 缓冲区没满&#xff0c;生产者才能放入 缓冲区没空&#xff0c;消费者才能取出 互斥地访问缓冲区 互斥要在同步之后&#xff0c;不然会导致想要同步&#xff0c;但由…