当前位置: 首页 > news >正文

TCP/IP相关面试题

1. 什么是TCP/IP协议?它的作用是什么?

	TCP/IP(Transmission Control Protocol/Internet Protocol)互联网中最常用的协议,是计算机网络通信的基础。由TCP协议和IP协议两部分组成。IP协议负责数据的传输和路由选择,是一种无连接的、不可靠的数据传输协议;TCP协议则提供可靠的、面向连接的数据传输服务,通过三次握手建立连接,保证数据的可靠性、有序性、完整性和流量控制等功能。TCP/IP协议实现了不同设备之间的数据通信,并且可以跨越不同的物理网络和链路层协议进行通信。保证数据传输的可靠性和正确性,同时还支持多种应用协议,如HTTP、FTP、SMTP等,为互联网的各种应用提供了基础支持。除了在互联网中广泛应用之外,TCP/IP协议也被用于许多企业内部的局域网(LAN)和广域网(WAN)中,为企业内部的通信和数据传输提供支持。

2. 请解释TCP/IP的四层模型,包括每一层的作用和主要协议。

	TCP/IP协议族被划分为四个层次,每个层次都有特定的功能和对应的协议。这四个层次分别是应用层、传输层、网络层和数据链路层。1. 应用层:该层负责处理特定的应用程序细节,如电子邮件、文件传输、远程登录等。应用层使用特定的协议来完成通信,如HTTP、FTP、SMTP、POP3等。2. 传输层:该层提供可靠的端到端的数据传输,主要包括两个协议:TCP和UDP。TCP协议提供可靠的、面向连接的数据传输服务,保证数据传输的可靠性、完整性和顺序性;UDP协议则是一种无连接的协议,传输数据时不保证数据的可靠性和完整性,但是速度更快。3. 网络层:该层处理网络间的数据传输,负责将分组从源主机发送到目的主机。网络层主要使用IP协议,IP协议提供了无连接的、不可靠的数据传输服务。4. 数据链路层:该层负责控制物理层面上的数据传输,如网卡的驱动程序。数据链路层的协议通常包括以太网协议、Wi-Fi协议等。总之,TCP/IP四层模型是一种通用的网络协议框架,它规定了在网络中数据的传输和处理的层级结构,这使得不同厂商的设备和不同类型的网络都能够互相通信。

3. 请描述TCP的三次握手和四次挥手过程,并解释每个阶段的作用。

	TCP的三次握手和四次挥手是TCP建立连接和关闭连接的过程,是TCP可靠传输机制的核心。TCP的三次握手过程如下:1. 客户端向服务器发送一个SYN包,表示请求建立连接,其中SYN标志位被设置为1,同时客户端会随机选择一个初始的序列号Seq。2. 服务器收到SYN包后,向客户端回复一个SYN+ACK包,表示确认客户端的请求,并告诉客户端自己也准备好了建立连接,其中SYN和ACK标志位都被设置为1,同时服务器也随机选择一个初始的序列号Seq和Acknowledge Number(ACK),其中Seq为服务器的初始序列号,ACK为客户端初始序列号加1。3. 客户端收到服务器的SYN+ACK包后,向服务器发送一个ACK包,表示确认服务器的回复,并告诉服务器自己也准备好了建立连接,其中ACK标志位被设置为1,同时将Acknowledge Number设置为服务器的初始序列号加1,表示已经收到服务器的SYN+ACK包。三次握手的作用:确保客户端和服务器都能够发送和接收数据,同时防止已失效的连接请求报文段突然又传送到了服务器,导致服务器错误地打开连接。TCP的四次挥手过程如下:1. 客户端向服务器发送一个FIN包,表示希望关闭连接,其中FIN标志位被设置为1,同时将序列号Seq设置为已经发送的数据字节数加1。2. 服务器收到FIN包后,向客户端回复一个ACK包,表示确认客户端的请求,并告诉客户端自己已经准备好关闭连接,其中ACK标志位被设置为1,同时将Acknowledge Number设置为客户端的序列号Seq加1。3. 服务器关闭与客户端的连接,同时向客户端发送一个FIN包,表示服务器也准备好关闭连接,其中FIN标志位被设置为1,同时将序列号Seq设置为已经发送的数据字节数加1。4. 客户端收到服务器的FIN包后,向服务器回复一个ACK包,表示确认服务器的请求,并告诉服务器自己也已经准备好关闭连接,其中ACK标志位被设置为1,同时将Acknowledge Number设置为服务器的序列号Seq加1。四次挥手的作用:确保客户端和服务器都能够安全地关闭连接,防止出现数据传输不完整的情况。在第四次握手之后,客户端和服务器的连接就正式关闭了。

4. 请列出TCP头部中的各字段含义,并解释它们的作用。

5. 请列出IP头部中的各字段含义,并解释它们的作用。

6. 请解释TCP/IP协议中的MTU和MSS是什么,它们之间有什么关系?

	MTU(Maximum Transmission Unit)和MSS(Maximum Segment Size)与网络数据包大小有关。MTU是指一个网络接口所能传输的最大数据包大小,以字节为单位。MSS是指TCP协议在一个TCP报文段中所能承载的最大有效载荷数据大小,也以字节为单位。MSS通常比MTU小,因为TCP报文段需要添加TCP头部和IP头部,这些头部的长度会减少报文段的有效载荷数据大小。在TCP协议中,如果要传输的数据包大于MTU,则需要对该数据包进行分片。由于每个分片都需要额外的TCP头和IP头,因此会导致网络带宽的浪费。为了最大程度地利用网络带宽,TCP在建立连接时会根据网络的MTU和主机的MSS计算出最大的报文段大小(Maximum Segment Lifetime, MSL),这个值应该小于MTU。当数据包从一个网络传输到另一个网络时,如果两个网络的MTU不同,则可能发生分片。如果一个分片丢失,则整个数据包需要被重传,这会浪费更多的带宽和时间。因此,为了避免分片和重传,TCP在建立连接时会使用Path MTU Discovery(PMTUD)技术,通过发送探测数据包来发现两个网络之间的最大MTU,从而避免分片和重传。

7. 请解释TCP的滑动窗口是什么,它的作用是什么?

	TCP的滑动窗口是一种流量控制机制,用于控制发送方和接收方之间的数据流量。在TCP的传输过程中,接收方会在TCP头中的确认号字段(ack)中返回自己所期望收到的下一个字节的序号(seq),以告知发送方已成功接收数据。滑动窗口机制就是为了在这个确认机制的基础上实现流量控制。发送方通过TCP头中的窗口大小字段告知接收方自己的发送窗口大小。接收方会不断更新自己的窗口大小,并在确认数据时将自己当前的窗口大小告知发送方。通过这个窗口大小,发送方就可以控制自己发送的数据量,保证不会发送超过接收方能处理的数据量,从而防止因数据过多而导致网络拥塞。也就是说,滑动窗口机制会在发送方和接收方之间维护一个固定大小的窗口,表示接收方当前可以接收的数据量。发送方发送的数据量不能超过接收方当前窗口大小,而接收方收到数据后,会将窗口滑动一个固定的大小,以表示自己已经处理完这个窗口中的数据,可以接收更多的数据。如果发送方发送的数据超过了接收方的窗口大小,接收方会返回一个告知发送方窗口大小为0的TCP报文段,从而停止发送方的数据发送,以避免网络拥塞。

8. 请解释TCP的拥塞控制算法,包括慢启动、拥塞避免、快重传和快恢复算法。

	TCP协议的拥塞控制算法旨在通过动态调整发送方的数据发送速率,以避免网络拥塞。它包括慢启动、拥塞避免、快重传和快恢复算法。1. 慢启动算法当TCP连接建立时,发送方要确定初始拥塞窗口大小,并随着时间的推移逐渐增加拥塞窗口的大小。慢启动算法就是为了实现这个过程。慢启动算法将初始拥塞窗口设为一个MSS(最大分段大小),然后每当收到一个确认ACK时,就将拥塞窗口的大小加倍。也就是说,每经过一个RTT(往返时间),拥塞窗口的大小就会翻倍。这种增长速度称为指数增长。2. 拥塞避免算法一旦拥塞窗口的大小超过了一个阈值(通常是一个固定值),TCP就会进入拥塞避免算法。在拥塞避免阶段,拥塞窗口的大小将会以线性增长的方式增加,而不是指数增长。3. 快重传算法在发送方接收到重复的ACK时(≥3),不等待超时,而是立即重传相应的数据包。ACK是对未收到的包中,序列最小包的回复确认。这样可以提高数据传输的效率。4. 快恢复算法在发送方接收到重复的ACK时,不仅进行快速重传,还会将拥塞窗口的大小减半。这样可以更快地适应网络拥塞的变化,避免造成更大的拥塞。在减半之后,发送方会进入拥塞避免状态(线性增长)。

9. 请解释TCP的可靠传输机制,包括序号、确认号和重传机制等。

	TCP (Transmission Control Protocol) 是一种面向连接的可靠传输协议,可靠传输是 TCP 协议最重要的功能之一。TCP 的可靠传输机制包括以下几个方面:1. 序号和确认号在 TCP 中,每个数据包都有一个序号和一个确认号。序号(seq)用于标识数据包在整个数据流中的位置,确认号(ack)用于表示接收方期望收到下一个数据包的序号。发送方发送数据时,会给每个数据包分配一个唯一的序号。接收方接收到数据包后,会向发送方发送一个确认包,确认包中包含下一个期望接收的数据包的序号。如果发送方没有收到确认包,就会认为数据包没有被成功接收,于是就会进行重传操作。2. 超时重传机制当发送方发送一个数据包后,会等待一段时间来等待接收方的确认包。如果发送方在规定的时间内没有收到确认包,就会重新发送该数据包。3. 滑动窗口TCP 的滑动窗口是一种流量控制和拥塞控制的机制,它通过动态调整发送窗口的大小来控制发送方发送数据的速度。接收方通过告知发送方可以接收的数据量来控制数据的流量。滑动窗口包括接收窗口和发送窗口。接收窗口的大小由接收方动态调整,用来告知发送方当前可以接收多少数据。发送窗口的大小由发送方动态调整,用来控制发送数据的速率。4. 确认机制TCP 的确认机制用于保证数据的可靠传输。接收方会给发送方发送确认包,确认包中包含确认号。发送方接收到确认包后,就知道哪些数据已经成功传输了,哪些数据需要重新发送。5. 流量控制	TCP 的流量控制机制是通过滑动窗口实现的。接收方通过调整接收窗口的大小来告诉发送方可以接收多少数据。发送方则根据接收方发送的窗口大小来动态调整发送窗口的大小,控制数据的流量。

10. 请解释TCP的流量控制是什么,它的作用是什么?

	在发送端和接收端之间通过协商来控制数据的传输速度,以保证接收端的缓冲区不会溢出。在TCP的可靠传输机制中,接收端会向发送端发送确认号,表示已经接收到了哪些数据,而发送端需要维护一个发送窗口,表示可以发送的数据量。如果发送端的发送窗口被接收端缓冲区大小所限制,那么发送端需要暂停发送数据,等到接收端空出一部分缓冲区后再继续发送数据。TCP的流量控制可以防止发送端发送过多的数据导致接收端缓冲区溢出而丢失数据,同时也可以避免网络拥塞的发生,提高网络的稳定性和吞吐量。

11. 什么是UDP协议?它与TCP的区别是什么?

	UDP(User Datagram Protocol,用户数据报协议)是一种无连接的传输层协议,它与TCP相比,不提供可靠的数据传输服务和数据流量控制,但具有简单、轻量级的特点,适用于数据传输速度要求高、但对数据完整性要求不高的应用场景。TCP和UDP的主要区别如下:1. 连接和状态:TCP需要建立连接和维护状态,而UDP不需要。2. 可靠性:TCP提供可靠的数据传输服务,通过序号、确认号、重传机制等保证数据的完整性和顺序,而UDP不提供可靠的数据传输服务。3. 流量控制:TCP提供流量控制机制,根据对方的接收能力动态调整发送数据的速率,而UDP不提供流量控制机制。4. 包头长度:TCP包头相对较长,至少20个字节,而UDP包头相对较短,只有8个字节。5. 应用场景:TCP适用于对数据完整性和可靠性要求较高的场景,如文件传输、网页访问等;UDP适用于对数据实时性和速度要求较高,但对数据完整性要求不高的场景,如视频直播、实时游戏等。

12. 什么是ARP协议?它的作用是什么?

	ARP(Address Resolution Protocol)协议用于将IP地址解析为MAC地址。在一个局域网中,通信的两个设备需要知道对方的MAC地址才能进行通信,而设备只能知道对方的IP地址,不知道对方的MAC地址。因此需要ARP协议来完成IP地址和MAC地址的映射。当一个设备需要和另一个设备通信时,它会先发送一个ARP请求,广播在网络上。网络上所有的设备都会收到这个请求,但只有和请求中的IP地址匹配的设备会回复一个包含自己MAC地址的ARP响应。这样请求方就可以得到目标设备的MAC地址,然后才能向目标设备发送数据。ARP协议的作用是减少在网络通信过程中需要处理的数据包,提高网络传输效率。如果没有ARP协议,每个设备都需要将数据包发送给所有其他设备,由于每个设备都需要处理大量不相关的数据包,这会导致网络拥堵和通信效率低下。

13. 什么是ICMP协议?它的作用是什么?

	ICMP(Internet Control Message Protocol)互联网控制报文协议,是TCP/IP协议族的一个子协议,用于在IP网络中传递控制消息和错误信息。ICMP的主要作用有:1. 提供错误报告:ICMP可以向源主机发送错误报告,通知源主机网络故障或主机不可达等情况,帮助源主机及时发现和解决网络问题。2. 提供路由选择信息:ICMP包含了许多控制信息,如网络和主机地址不可达等信息,这些信息可以被路由器用来选择路由。3. 提供网络检测和诊断:ICMP提供了许多网络检测和诊断的工具,如ping命令就是利用ICMP来检测网络是否连通。与TCP协议不同,ICMP协议不提供可靠的数据传输服务,也不保证报文传输的顺序,因此它被认为是一种“无连接”协议。此外,ICMP报文通常是由网络设备生成和发送的,而不是由应用程序发送。

14. 什么是DNS协议?它的作用是什么?

	DNS(Domain Name System)协议是一种分布式数据库系统,用于将主机名(例如 www.example.com)转换为 IP 地址(例如 192.0.2.1)。DNS 协议的作用是提供域名解析服务,使得用户能够通过易于记忆的主机名来访问互联网上的资源,而无需记忆对应的 IP 地址。当用户在浏览器中输入一个域名时,浏览器会向本地 DNS 服务器发送一个 DNS 查询请求,本地 DNS 服务器会根据该域名查询 DNS 服务器并返回对应的 IP 地址。如果本地 DNS 服务器没有缓存该域名对应的 IP 地址,则会向根域名服务器发送请求,并依次向下查找,最终找到该域名所对应的 IP 地址。整个过程中使用的就是 DNS 协议。

15. 请解释IPv4地址和IPv6地址的区别是什么?

	IPv4和IPv6是Internet协议中使用的两种不同的地址格式。主要的区别在于地址长度和编码方式。IPv4地址是32位二进制数,通常用十进制点分格式表示,例如:192.168.0.1。IPv4地址的可用地址空间有限,只有约42亿个可用的地址。这在今天的互联网规模下已经不够用了,所以需要更长的地址空间。IPv6地址是128位二进制数,通常用冒号分隔的十六进制表示,例如:2001:0db8:85a3:0000:0000:8a2e:0370:7334。IPv6地址的地址空间非常大,约有340万亿亿亿亿亿个可用地址,可以满足未来的互联网需求。IPv6在地址编码、地址类型、地址分配、路由协议等方面也有很多改进。IPv6的地址编码采用了更加高效的压缩算法,地址类型支持多播和任播,地址分配更加灵活,路由协议也更加先进。

16. 请解释网络地址转换(NAT)是什么?它的作用是什么?

	网络地址转换(Network Address Translation,NAT)是一种将私有网络地址转换为公共网络地址的技术。其主要作用是解决因为IPv4地址不足而产生的地址瓶颈问题,同时也可以增强网络安全性。当一台计算机在私有网络中向公共网络发送数据包时,NAT会将该数据包的源IP地址修改为路由器在公共网络中的IP地址,并且在其内部维护一个地址映射表,记录下私有IP地址和公共IP地址的映射关系。当公共网络中的服务器向私有网络发送数据包时,NAT会将目标IP地址修改为对应的私有IP地址,并将数据包转发到对应的主机。NAT的优点在于可以实现多个计算机共享一个公共IP地址,减少了IP地址的浪费,同时也增强了网络安全性,因为私有IP地址对于公共网络不可见,从而减少了被攻击的可能性。缺点在于会影响网络的可靠性,因为NAT的操作会增加数据包的延迟,并且有可能导致某些网络应用无法正常工作,比如某些P2P应用。

17. 请解释TCP/IP协议中的路由是什么?路由表是什么?

	在TCP/IP协议中,路由(Routing)是指数据从源主机到目的主机所需经过的一系列网络节点的路径。路由器(Router)是一个用于连接不同网络的设备,它具有转发和路由选择功能,用于在不同的网络之间转发数据包,从而实现网络间通信。路由表(Routing Table)是路由器内存中保存的路由信息表,它记录着各个目的网络的地址和所对应的出接口。当路由器接收到数据包时,会查找路由表中与目的地址匹配的路由信息,然后根据路由信息选择对应的出接口将数据包转发出去。路由表通常包括以下字段:- 目的网络地址:指网络地址或子网地址,通常用IP地址和掩码表示。- 下一跳:指数据包到达该目的网络时应该走的下一条路由器或主机的地址。- 出接口:指数据包到达下一跳时应该走的物理接口,通常用端口号表示。- 路由标识:路由器在处理路由表项时使用的标识符,通常是一个数字或字符串。路由表的建立方式可以通过静态路由和动态路由两种方式。静态路由是由网络管理员手动配置路由表,而动态路由是路由器之间通过协议自动交换路由信息更新路由表。常用的动态路由协议包括RIP、OSPF、BGP等。

18. 请解释TCP/IP协议中的ARP缓存是什么?它的作用是什么?

	在TCP/IP协议中,ARP缓存是一种用于缓存网络设备之间MAC地址和IP地址映射关系的机制。当一个网络设备需要发送数据包到目标设备时,需要知道目标设备的MAC地址。但是,设备通常只知道目标设备的IP地址,因此需要使用ARP协议来获取目标设备的MAC地址。ARP缓存的作用是为了避免每次需要发送数据包时都要发送ARP请求,从而提高网络的性能和效率。当一个设备发送数据包时,它首先会检查自己的ARP缓存中是否已经存在目标设备的MAC地址。如果存在,它就可以直接将数据包发送到目标设备,而不需要发送ARP请求。如果目标设备的MAC地址不在ARP缓存中,设备就会发送一个ARP请求,询问网络中是否有设备拥有目标设备的IP地址,并等待一个ARP响应。一旦设备收到了ARP响应,它就可以将目标设备的MAC地址添加到自己的ARP缓存中,以便在将来的通信中更快地获取目标设备的MAC地址。ARP缓存通常是有限制的,缓存中的条目会过期或被替换掉。如果一个设备长时间不使用,则其对应的MAC地址映射可能会被移除,这意味着当需要发送数据包到该设备时,将需要重新发送ARP请求来获取其MAC地址。

19. 什么是负载均衡?它的作用是什么?常用的负载均衡算法有哪些?

	负载均衡(Load Balancing)是指将网络流量分配到多台服务器上,以实现更好的资源利用和服务响应速度。它是通过将请求分发到不同的服务器来平衡整个系统的压力,以达到提高系统性能、可靠性和可用性的目的。负载均衡的作用主要有两个方面:一方面可以提高系统的性能,通过平均分配请求到多台服务器上,可以减轻单台服务器的压力,提高整个系统的吞吐量;另一方面可以提高系统的可靠性和可用性,当某台服务器出现故障时,负载均衡可以将请求转发到其他正常运行的服务器上,保证服务的连续性和可用性。常见的负载均衡算法有以下几种:1. 轮询算法(Round Robin):按照事先定义的顺序依次将请求分配到各个服务器上,每个请求依次分配到不同的服务器,直到所有的服务器都被分配过一次,然后再按照同样的顺序重新开始。2. 最少连接算法(Least Connections):将请求分配到连接数最少的服务器上,以实现对服务器的负载均衡。该算法可以确保负载更均衡,但需要监测服务器连接数并动态调整负载。3. IP散列算法(IP Hash):根据请求的来源IP地址计算一个哈希值,并将请求分配到具有相应哈希值的服务器上。通过这种方式,可以确保来自同一IP地址的请求始终被分配到同一台服务器上。4. 最短响应时间算法(Shortest Response Time):将请求分配到响应时间最短的服务器上,以实现对服务器的负载均衡。该算法需要测量每个服务器的响应时间,并动态调整负载。5. 加权轮询算法(Weighted Round Robin):将请求分配到按照权重分配的服务器上,以实现对不同服务器的负载均衡。通过给不同的服务器分配不同的权重值,可以在保证每个服务器至少能够处理一定量请求的同时,使负载更均衡。

20. 什么是虚拟专用网(VPN)?它的作用是什么?常用的VPN协议有哪些?

	虚拟专用网(Virtual Private Network,VPN)是一种可以通过公共网络(如互联网)进行加密通信的技术。其作用是在公共网络上建立一个安全的、私密的网络通道,使得远程的用户或分支机构可以像使用专用网络一样访问公司内部的资源。常用的VPN协议有以下几种:1. PPTP协议(Point-to-Point Tunneling隧道化 Protocol):一种基于PPP协议的VPN协议,具有易于设置和广泛兼容的优点,但是由于安全性较弱而逐渐被替代。2. L2TP协议(Layer 2 Tunneling Protocol):一种基于PPP协议和L2F协议的VPN协议,具有较高的安全性和可靠性,但是会影响网络性能。3. IPSec协议(Internet Protocol Security):一种基于IP协议的VPN协议,可以为IP数据包提供端到端的加密和认证,具有较高的安全性和可靠性。4. SSL/TLS协议(Secure Sockets Layer/Transport Layer Security):一种基于加密的VPN协议,常用于Web应用程序的加密通信,具有易于实现和广泛兼容的优点。5. OpenVPN协议:一种基于SSL/TLS协议的开源VPN协议,具有较高的安全性和可靠性,且易于部署和配置。

21.什么是TCP粘包,怎么导致的,如何解决呢?

TCP粘包是指发送方发送的多个数据包在接收方收到时被粘合成一个数据包的现象。
这种情况常常出现在一次性发送多个数据包或者数据包大小不固定的情况下。造成TCP粘包的原因主要有两个:1. 发送方连续发送多个数据包,在传输过程中可能会被合并成一个大的数据包,到达接收方时就出现了粘包现象。
2. 接收方缓冲区的大小限制,如果接收方缓冲区的大小小于发送方发送的数据包总大小,那么就会出现粘包现象。解决TCP粘包问题的方法有多种,其中比较常见的有以下几种:1. 定长分包:发送方将每个数据包的大小固定为一个固定值,接收方按照这个固定值进行拆包,从而解决粘包问题。
2. 在数据包之间添加特殊标识符:在每个数据包之间添加特殊的标识符,接收方根据这些标识符来判断数据包的开始和结束位置,从而拆分数据包。
3. 包封装:在每个数据包前面添加一个包头,包头中包含数据包的长度信息,接收方根据包头中的长度信息来拆分数据包。需要注意的是,解决TCP粘包问题的方法也可能会带来一些额外的开销和复杂度,
开发者需要根据具体情况进行权衡。

相关文章:

TCP/IP相关面试题

1. 什么是TCP/IP协议?它的作用是什么? TCP/IP(Transmission Control Protocol/Internet Protocol)互联网中最常用的协议,是计算机网络通信的基础。由TCP协议和IP协议两部分组成。IP协议负责数据的传输和路由选择&#…...

MySQL数据库——MySQL存储过程是什么?

我们前面所学习的 MySQL 语句都是针对一个表或几个表的单条 SQL 语句,但是在数据库的实际操作中,经常会有需要多条 SQL 语句处理多个表才能完成的操作。 例如,为了确认学生能否毕业,需要同时查询学生档案表、成绩表和综合表&…...

消息队列中的事务消息

大家好,我是易安!今天我们谈一谈消息队列中的事务消息这个话题。 一说起事务,你可能自然会联想到数据库。我们日常使用事务的场景,绝大部分都是在操作数据库的时候。像MySQL、Oracle这些主流的关系型数据库,也都提供了…...

03. 路由参数.重定向.视图

学习要点: 1.路由参数 2.路由重定向 3.路由视图 本节课我们来开始进入学习路由的参数设置、重定向和路由的视图。 一.路由参数 1. 上一节课,我们已经学习了部分路由参数的功能,比如动态传递{id}; 2. 那么,有…...

Flowable入门

Flowable初体验 Flowable是什么 Flowable 是一个使用 Java 编写的轻量级业务流程引擎,常用于需要人工审批相关的业务,比如请假、报销、采购等业务。 为什么要使用工作流呢? 对于复杂的业务流程,通过数据库的状态字段难以控制和…...

Scala Option类型,异常处理,IO,高阶函数

Option类型 实际开发中, 在返回一些数据时, 难免会遇到空指针异常(NullPointerException), 遇到一次就处理一次相对来讲还是比较繁琐的. 在Scala中, 我们返回某些数据时,可以返回一个Option类型的对象来封装具体的数据,从而实现有效的避免空指针异常。S…...

unity进阶学习笔记:单例模式

游戏框架: 游戏框架一般包括消息框架,状态机,管理器,工具类。 消息框架指游戏物体之的通信框架,虽然unity引擎自带一套消息框架,但该框架只能用于父子物体之间通信,无法实现大部分非父子关系的…...

软件测试——性能指标

登录功能示例: 并发用户数500; 响应时间2S; TPS到500; CPU不得超过75%; 性能指标有哪些? 响应时间 并发用户数 TPS CPU 内存 磁盘吞吐量 网络吞吐量 移动端FPS 移动端耗电量 APP启动时间 性能…...

leetcode 405. 数字转换为十六进制数

题目描述解题思路执行结果 leetcode 405. 数字转换为十六进制数. 题目描述 数字转换为十六进制数 给定一个整数,编写一个算法将这个数转换为十六进制数。对于负整数,我们通常使用 补码运算 方法。 注意: 十六进制中所有字母(a-f)都必须是小写。 十六进制…...

部门来了个软件测试,听说是00后,上来一顿操作给我看呆了...

前段时间公司新来了个同事,听说大学是学的广告专业,因为喜欢IT行业就找了个培训班,后来在一家小公司干了三年,现在跳槽来我们公司。来了之后把现有项目的性能优化了一遍,服务器缩减一半,性能反而提升4倍!给…...

使用篇丨链路追踪(Tracing)很简单:链路拓扑

作者:涯海 最近一年,小玉所在的业务部门发起了轰轰烈烈的微服务化运动,大量业务中台应用被拆分成更细粒度的微服务应用。为了迎接即将到来的双十一大促重保活动,小玉的主管让她在一周内梳理出订单中心的全局关键上下游依赖&#…...

2023年厦门等保二级备案办理流程

根据规定,已运营/运行或新建的第二级以上信息系统的企业,事业单位/行政机关/民办非企业单位/社团组织/其他组织必须办理等保备案。 2023年厦门等保二级备案办理流程 办理机构:公安局 办结时限:受理后10个工作日 办理方式:网上…...

提高开发效率,从这些小技巧开始——5个让你爱上IDEA的增加体验小技巧

前言 如果你是一名Java开发人员,那么你一定会使用IntelliJ IDEA这个IDE。IntelliJ IDEA作为目前最受欢迎的Java IDE之一,已经成为了众多Java开发人员必备的工具之一。但是,你是否知道如何利用IDEA中的一些小技巧来提高你的开发效率和体验呢&a…...

Python基础合集 练习22 (错误与异常处理语句2)

‘’’ try: 语句块 except: 语句块2 else ‘’’ class Mobe1(): def init(self) -> None: pass def mob1(self):while True:try:num int(input(请输入一个数: ))result 50 / numprint(result)print(50/{0}{1}.format(num, result))except (ZeroDivisionError, ValueEr…...

ELK -- kibana 用nginx代理后无法访问

背景: 本地搭建好elk后,一切正常,后面改成用nginx代理kibana的5601端口,发现代理后无法正常访问(未代理的地址可正常访问),花了很多时间去查问题,报错基本都是http://ip:port/spaces…...

什么是分布式事务

目录 分布式事务基础 事务 本地事务 分布式事务 分布式事务的场景 分布式事务解决方案 全局事务 优点 缺点 可靠消息服务 第一步 :消息由系统A投递到中间件 超时访问机制 最大努力通知 第一步:消息由系统A投递到中间件 第二步:消息…...

在 Python 中将整数转换为罗马数字

罗马数字使用以下七个符号书写。 Symbol Value I 1 V 5 X 10 L 50 C 100 D 500 M 1000这些符号用于表示数以千计的数字。 罗马写20,可以用两个X拼成XX。 但是 XXXX 不…...

HashTable,Properties,TreeSet源码分析

目录 HashTable基本介绍 Hashtable和HashMap对比 Properties Properties基本介绍 应该如何选择集合 TreeSet源码分析 HashTable基本介绍 1)存放的元素是键值对:即K-V 2)hashtable的键和值都不能为null,否则会抛出NullPointerException 3)hashTab…...

多维图像去噪方法研究

一、背景介绍 由于传感器技术的快速发展,高光谱(HS)遥感(RS)成像为飞机等数据采集设备远距离观测和分析地球表面提供了大量的空间和光谱信息,航天器和卫星。 HS RS 技术的最新进展甚至革命为实现各种应用的…...

托福口语考察内容和形式

首先我们来简单介绍一下托福口语考试的构成和task1的任务形式。 目录 TOEFL Speaking Test Format Independent Task 1 Task 1 Test Format Task 1 Testing Interface(考试界面)​ Task 1 Question Type...

【地铁上的设计模式】--结构型模式:代理模式

什么是代理模式 代理模式是一种结构型设计模式,通过代理对象控制对原始对象的访问。代理对象充当客户端和实际对象之间的中介,隐藏了实际对象的复杂性,并提供了一些额外的控制。 在软件系统中,代理模式可以有多种应用。例如&…...

Oracle 体系结构

文章目录 Oracle体系结构Oracle的内存结构Oracle的进程结构服务器进程后台进程可选后台进程 物理存储结构逻辑存储结构 概念: Oracle server由Oracle instance和Oracle database组成,Oracle instance由后台进程和共享内存组成,Oracle的实例包…...

java手写日历系统(亲测)

package com.test.test02;import java.util.Calendar; import java.util.GregorianCalendar; import java.util.Scanner;public class Test08 {//这是一个main方法,是程序的入口public static void main(String[] args) {//录入日期的StringScanner sc new Scanner…...

35-40的技术人员为什么会被“不友好”,请你们自身反思-拒做职场的“嗯嗯”怪

35-40真的是IT人员的一道坎吗? IT技术做不到35-40,可是我身边有大量35-40事业发达、职业发展更好的朋友。同时,我身边也有大量35-40被“毕业”的人更多。 本人经过7年来先后带队过3个大型研发团队,最少的也有60-70号人。最多的达到…...

工地烟火AI监控识别分析系统 yolov7

工地烟火AI监控识别分析系统通过yolov7网络模型技术,工地烟火AI监控识别分析系统对工地或者厂区现场监控区域内的烟火进行实时分析报警。YOLOv7 的发展方向与当前主流的实时目标检测器不同,研究团队希望它能够同时支持移动 GPU 和从边缘到云端的 GPU 设备…...

MATLAB算法实战应用案例精讲-【人工智能】对比学习(概念篇)(补充篇)

目录 前言 几个高频面试题目 基于对比学习(ContrastiveLearning)的文本表示模型【为什么】能学到文本【相似】度? 为什么对比学习能学到很好的语义相似度? 那么如何评价这个表示空间的质量呢? 知识储备 监督学习和非监督学习 算法原理…...

代码随想录算法训练营第三十一天 | 贪心1,想不到怎么找局部最优就做不出来

贪心算法理论基础 代码随想录 (programmercarl.com) 贪心算法理论基础!_哔哩哔哩_bilibili 贪心的本质是选择每一阶段的局部最优,从而达到全局最优。 例如,有一堆钞票,你可以拿走十张,如果想达到最大的金额&#xff…...

【SVN】版本控制管理的文件(夹)如何重命名

目录 一、前言二、操作步骤1. 使用SVN重命名(SVN rename)2. 输入新名称3. 确定重命名4. 立刻进行一次提交(commit)5. 补充 三、可能遇到的问题1. 情况一2. 情况二3. 情况三 一、前言 如果只是在本地的文件系统中修改SVN中的文件&a…...

必须包含数字,字母组合的密码正则表达式

输入要求:由数字和字母组成,并且要同时含有数字和字母,且长度要在2-64位之间。 ^(?![0-9]$)(?![a-zA-Z]$)[0-9A-Za-z]{2,64}$ 分开来注释一下: ^ 匹配一行的开头位置 (?![0-9]$) 预测该位置后面不全是数字 (?![a-zA-Z]$) 预…...

JavaScript:栈和对列

文章目录 栈和对列Js 有栈与队列吗20. 有效的括号 - 力扣(LeetCode)思路 1047. 删除字符串中的所有相邻重复项 - 力扣(LeetCode)思路代码分析array.join() 操作打印const s of str 操作遍历 150. 逆波兰表达式求值 - 力扣&#xf…...

犀牛做网站的公司/西青seo

括号检查 题目 现有一字符串 仅由 (,),{,},[,] 六种括号组成,若字符串满足以下条件之一,则为无效字符串 任意类型的左右括号数量不相等 存在未按正确顺序(先左后右)闭合的括号, 输出括号的最大嵌套深度 若字符串无效则输出 0 0 <= 字符串长度 <= 100000 输入 一个只…...

北京网站优化托管/引流推广网站

配置kotlin的环境变量&#xff0c;添加到path 下载kotlin的编译器工具 下载后解压放到固定目录下&#xff0c;找到bin文件夹添加到path&#xff0c;配置完成后使用 路径如&#xff1a;D:\kotlinc\bin 命令&#xff1a; kotlinc -version 查看是否安装成功 安装插件 安装Kot…...

中搜网站提交/策划网络营销活动

QList是一种表示链表的模板类。QList是Qt的一种泛型容器类。它以链表方式存储一组值&#xff0c;并能对这组数据进行快速索引&#xff0c;还提供了快速插入和删除等操作。QList、QLinkedList和QVector提供的操作极其相似&#xff1a;*对大多数操作来说&#xff0c;我们用QList就…...

单招网站开发/企业网站建设公司

eclipse插件的安装方法大体有以下三种:...

直接IP做网站/企业网站seo

前言&#xff1a;对于动态路由协议的***&#xff0c;向来是***关注的目标&#xff0c;OSPF协议作为园区网络中较为常见的路由协议&#xff0c;其配置的安全性和重要性自然不言而喻。如何有效防御OSPF的安全隐患&#xff0c;更多的网管往往将目标投向了路由器自身安全&#xff0…...

网站制作模板代码/爱站工具包怎么使用

仿网易彩票,最终要做成的效果如下&#xff1a; 一、分层搭建 1.新建一个项目&#xff0c;Lottery.只支持7.1以上坚屏。 2.将素材全部图片全部拉到相应的文件夹里。 3.选中Lottery--右键Show in Finder ,在Lottery文件夹下新建一个Classes&#xff0c;并分别分层成MVC文件夹。 4…...