网络面试题总结

url从输入到渲染页面的全过程

URL 从输入到页面渲染可以分为以下步骤:

  1. 输入 URL:在浏览器地址栏中输入 URL(统一资源定位符)。
  2. DNS 解析:浏览器通过 DNS(域名系统)将 URL 解析成 IP 地址,以便向服务器发送请求。
  3. 建立 TCP 连接:浏览器通过 HTTP 或 HTTPS 协议与服务器建立 TCP 连接,发起网络请求。
  4. 服务器处理请求:服务器接收到请求后,进行处理。这可能包括请求的验证、路由处理、查询数据库或读取文件等操作。
  5. 服务器响应:服务器将处理结果以 HTTP 响应的形式返回给浏览器。
  6. 浏览器接收响应:浏览器接收到服务器的响应,如果响应中包含 HTML 内容,则开始解析 HTML。
  7. 构建 DOM 树:浏览器根据 HTML 内容构建 DOM(文档对象模型)树,表示网页的结构。
  8. 构建 CSSOM 树:同时,浏览器也会解析 CSS 样式文件,构建 CSSOM(CSS 对象模型)树,表示网页的样式信息。
  9. 合并 DOM 和 CSSOM:将 DOM 树和 CSSOM 树合并,生成渲染树(Render Tree),这是浏览器用于渲染页面的树形结构。
  10. 布局(Layout):浏览器根据渲染树计算每个元素在页面中的位置和大小,进行布局。
  11. 绘制(Painting):浏览器根据布局信息将页面内容绘制到屏幕上。
  12. 页面渲染完成:整个页面加载、布局和绘制过程完成,用户可以看到完整的页面内容。

这些步骤构成了从输入 URL 到页面渲染的全过程。在此过程中,浏览器和服务器之间的网络请求、数据传输、内容解析和页面渲染等环节相互配合,最终将网页呈现给用户。

tcp三次握手,四次挥手,可靠传输原理

TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层协议。它通过三次握手建立连接和四次挥手断开连接来确保数据可靠传输。

三次握手(Establishing Connection):

  1. 客户端发送 SYN:客户端向服务器发送一个 SYN(同步)标志的数据包,表示请求建立连接,并指定自己的初始序列号(sequence number)。
  2. 服务器响应 SYN + ACK:服务器接收到 SYN 数据包后,会回复一个确认包,其中也包含 SYN 标志和确认号(acknowledgment number),表示确认客户端的连接请求,并指定自己的初始序列号。
  3. 客户端发送 ACK:客户端收到服务器的确认包后,再发送一个确认包,确认服务器的响应。此时连接建立完成,双方可以开始数据传输。

四次挥手(Terminating Connection):

  1. 发起关闭:当客户端或服务器想要关闭连接时,发送一个 FIN(结束)标志的数据包,表示数据发送完毕,但仍能接收数据。
  2. 确认关闭:接收到 FIN 的一方发送 ACK 确认收到,并进入半关闭状态,即不再向对方发送数据,但仍能接收数据。
  3. 对方关闭:当另一方确认后,它也发送一个 FIN 数据包给另一端,表示自己也准备好关闭连接。
  4. 最后确认:接收到对方的 FIN 后,发送 ACK 确认收到,双方完成关闭连接,进入 TIME-WAIT 状态,等待一段时间后彻底关闭连接。

可靠传输原理:

TCP 通过序列号、确认号、校验和、重传机制等手段来确保可靠传输:

  • 序列号和确认号:序列号用于按序传输数据,并确保数据的可靠性。确认号用于确认收到的数据,双方交互确认数据的收发情况。
  • 校验和:TCP 对数据包进行校验和计算,接收端可以通过校验和来检测数据是否损坏,如果损坏则要求重新发送。
  • 重传机制:当发送方发送数据后,如果在一定时间内未收到确认,就会触发超时重传机制,重新发送数据。同时,接收端会丢弃重复的数据包。

通过这些机制,TCP 实现了可靠传输,保证了数据的正确性和可靠性,即使在网络不稳定或出现丢包的情况下,也能保证数据的正确传输。

http200302 的区别

HTTP 200HTTP 302 是 HTTP 协议中的两种状态码,表示服务器对请求的响应状态不同。

  • HTTP 200:表示请求成功。当服务器成功处理请求并返回所请求的页面或资源时,会返回状态码 200。这通常是在正常情况下返回的状态码,表示服务器成功地处理了客户端的请求。
  • HTTP 302:表示临时重定向。当服务器接收到请求后,发现请求的资源暂时被移到了另一个位置,会返回状态码 302,并在响应头中包含一个 Location 字段,指向新的资源位置。客户端会自动跳转到新的位置去获取资源。

简单来说,HTTP 200 表示请求成功,服务器正常响应;而 HTTP 302 表示临时重定向,告诉客户端资源暂时被移动到其他位置,需要去新的位置获取资源。

通常情况下,HTTP 302 会和其他状态码一起使用,比如 302 + 200 表示重定向到新的资源成功获取。

你知道哪些http首部字段?

HTTP 协议定义了许多不同类型的首部字段,这些字段可以用于请求和响应消息中,提供了关于消息、服务器、客户端等信息的描述和控制。以下是一些常见的 HTTP 首部字段:

通用首部字段(General Headers):

  • Cache-Control:控制缓存行为。
  • Connection:控制连接的选项。
  • Date:表示消息产生的日期和时间。
  • Pragma:用于包含实现特定的首部字段。

请求首部字段(Request Headers):

  • Host:指定请求资源的主机名和端口号。
  • User-Agent:包含发起请求的用户代理信息。
  • Accept:指定客户端能够接收的内容类型。
  • Cookie:包含 HTTP 请求发送的 Cookie。
  • Authorization:包含授权信息。

响应首部字段(Response Headers):

  • Server:包含服务器的信息。
  • Content-Type:指定响应的内容类型。
  • Set-Cookie:服务器通过响应头设置客户端的 Cookie。
  • Location:用于重定向时指定新的资源位置。

实体首部字段(Entity Headers):

  • Content-Length:表示实体主体的长度(以字节为单位)。
  • Content-Encoding:指定实体主体的编码方式。
  • Content-Disposition:指示浏览器应该如何显示附加的文件。

这些是 HTTP 协议中的一部分首部字段,不同的首部字段提供了各种不同的功能和控制,用于帮助服务器和客户端处理请求和响应消息。

说一下http缓存策略,有什么区别,分别解决了什么问题?

HTTP 缓存策略是为了提高性能、减少网络负载而设计的,主要有以下几种:

1. 强缓存(Strong Cache):

  • Expires 头部:服务器返回资源时,在响应头中包含过期时间。客户端再次请求资源时,会先检查本地缓存是否过期,如果没有过期,则直接使用缓存数据,不发起请求。
  • Cache-Control 头部:使用 Cache-Control: max-age=seconds 来指定资源在缓存中的有效时间,单位是秒。与 Expires 不同的是,Cache-Control 可以提供更加精确的缓存控制。

问题解决:减少请求次数,加快页面加载速度,降低服务器压力。

2. 协商缓存(Conditional Cache):

  • Last-Modified 和 If-Modified-Since 头部:服务器在响应头中返回资源的最后修改时间(Last-Modified),客户端再次请求资源时,通过 If-Modified-Since 发送上次资源的最后修改时间,服务器判断资源是否更新,若未更新则返回 304 Not Modified,客户端直接使用本地缓存。
  • ETag 和 If-None-Match 头部:服务器返回资源的唯一标识符(ETag),客户端再次请求资源时,通过 If-None-Match 发送上次资源的 ETag,服务器判断资源是否更新,若未更新则返回 304 Not Modified,客户端直接使用本地缓存。

问题解决:确保缓存的资源与服务器上的资源保持同步,并减少了传输的数据量。

区别和作用:

  • 强缓存协商缓存都能减少服务器负载和网络传输量,但强缓存是直接使用本地缓存,不与服务器发生交互;而协商缓存需要向服务器发送请求来验证资源是否更新,与服务器有交互。
  • 强缓存解决了“不需要向服务器发起请求”的问题,而协商缓存解决了“需要向服务器询问资源是否更新”的问题。

综合使用强缓存和协商缓存可以在一定程度上提高网站性能,并根据资源的特性选择合适的缓存策略。

为什么浏览器要限制TCP的最大个数

浏览器限制 TCP 连接的最大数量是为了保护系统资源、提高网络性能和防止过度占用服务器资源。

为什么要限制?

  1. 资源限制:每个 TCP 连接都需要消耗系统资源,包括内存、CPU 和网络资源。过多的连接可能导致系统资源不足,影响系统稳定性和性能。
  2. 性能优化:当浏览器同时建立大量的 TCP 连接时,可能导致网络拥塞、延迟增加、丢包率提高等问题,从而影响网络性能和用户体验。
  3. 防止滥用:过多的连接可能被恶意利用,例如 DDoS 攻击、爬虫等,会给服务器带来不必要的压力,限制连接数量可以防止这种滥用。

浏览器对连接数量的限制:

浏览器通常对同一域名下的连接数量有一定限制。不同浏览器可能有不同的限制,但一般情况下是针对同一域名,对并行连接数量有一定的限制,这被称为同一域名的并发连接数限制。

这种限制可以通过在不同域名下加载资源(比如使用 CDN、多个子域名等)来规避,因为浏览器对于不同域名的连接数限制是独立的。同时,HTTP/2 或者 HTTP/3 的多路复用机制可以更有效地利用 TCP 连接,减少了过多连接带来的压力。

HTTP2.0的特点

HTTP/2 是 HTTP 协议的一个重要更新版本,相对于 HTTP/1.1 带来了许多改进和优化,其主要特点包括:

1. 多路复用(Multiplexing):

  • 单一连接:HTTP/2 允许在单个 TCP 连接上同时发送多个请求和响应,避免了 HTTP/1.x 中的队头阻塞问题(头部阻塞影响并发请求),提高了性能和效率。

2. 二进制分帧(Binary Framing):

  • 二进制传输:HTTP/2 将所有传输的信息分割为更小的帧(frames),并采用二进制格式对数据进行编码传输,相比于 HTTP/1.x 中的文本格式,更加高效。

3. 头部压缩(Header Compression):

  • HPACK 算法:HTTP/2 使用 HPACK 算法对 HTTP 头部进行压缩,减少了重复头部信息的传输,节省带宽,提高效率。

4. 服务器推送(Server Push):

  • 主动推送:HTTP/2 允许服务器在客户端请求某个资源时,主动将相关的资源一并推送给客户端,减少了额外的往返请求时间,提高了页面加载速度。

5. 流量控制(Flow Control):

  • 流量控制:HTTP/2 引入了流量控制机制,可以避免因服务器推送资源过多而导致客户端性能问题,保证资源传输的平稳性。

6. 优化首部字段:

  • 二进制首部:HTTP/2 使用二进制格式传输数据和头部信息,相较于文本格式,减少了额外的数据传输和开销。

总体来说,HTTP/2 带来了许多性能和效率上的改进,能够更快速、更高效地传输数据,减少了延迟,提高了网络性能。

说一下HTTP2 多路复用原理,以及多路复用优势?

HTTP/2 中的多路复用是指在单个 TCP 连接上可以同时传输多个请求和响应的能力,其原理和优势如下:

多路复用原理:

  1. 单一连接:HTTP/2 使用单个 TCP 连接来传输所有的请求和响应。
  2. 数据分帧:所有 HTTP/2 通信都在一个连接上完成,数据被分割成更小的帧(frames),每个帧都标记了其在消息中的位置。
  3. 流(Stream):每个 HTTP/2 连接上可以有多个流(stream),每个流都是一个虚拟的数据通道,可以独立传输请求和响应的数据。
  4. 并发传输:在单个 TCP 连接上,多个流可以同时进行数据传输,不再受到 HTTP/1.x 中的队头阻塞问题。

多路复用优势:

  1. 提高并发性:HTTP/2 可以在一个连接上同时发送多个请求和响应,解决了 HTTP/1.x 中的队头阻塞问题,提高了并发性能。
  2. 减少连接数:相对于 HTTP/1.x 中需要多个连接来处理并发请求,HTTP/2 中的多路复用减少了连接数,减少了网络开销和资源占用。
  3. 降低延迟:多路复用减少了连接建立和关闭的时间,减少了往返时间(RTT),加速了请求和响应的传输。
  4. 资源有效利用:充分利用单个 TCP 连接的带宽资源,提高了网络的有效利用率。

总的来说,HTTP/2 的多路复用能够在单个连接上更有效地管理和传输多个请求和响应,避免了 HTTP/1.x 中连接数过多、队头阻塞等问题,提高了网络性能和效率。

简述https原理,以及与http的区别

HTTPS(HyperText Transfer Protocol Secure)是一种安全的通信协议,相对于 HTTP,在传输过程中对数据进行加密,保证数据在传输过程中的安全性和完整性。

HTTPS 原理:

  1. 加密通信:HTTPS 使用 SSL/TLS 协议对传输的数据进行加密和认证,保证数据在传输过程中的安全性。在建立连接时,通过公钥加密的方式来确保通信的安全性。
  2. 数字证书:服务器需要获得数字证书,证明网站身份。这个证书由权威的证书颁发机构(CA,Certificate Authority)颁发,包含了服务器的公钥。
  3. 加密方式:HTTPS 使用对称加密和非对称加密相结合的方式,对称加密用于加密传输的数据,非对称加密用于传输对称加密的密钥。

HTTP 与 HTTPS 区别:

  1. 安全性:HTTP 是明文传输,数据不加密,容易被窃听和篡改;而 HTTPS 通过加密传输数据,确保通信的安全性。
  2. 协议:HTTP 是超文本传输协议,直接传输数据;HTTPS 是在 HTTP 上加入 SSL/TLS 加密协议传输数据。
  3. 端口:HTTP 默认端口为 80,HTTPS 默认端口为 443。
  4. 证书:HTTPS 需要获取有效的数字证书,用于验证服务器的身份和加密通信;HTTP 不需要数字证书,是明文传输。
  5. 性能:HTTPS 因为加密和解密的过程,相对于 HTTP 会稍微降低性能,但随着硬件和算法的发展,这种差距已经减小。

综上所述,HTTPS 主要在数据传输过程中加入了加密和认证机制,保障了数据的安全性,而 HTTP 则是明文传输,安全性较低。因此,对于涉及隐私信息、支付等敏感操作的网站,通常会采用 HTTPS 来保障通信安全。

CDN 是什么?描述下 CDN 原理?为什么要用 CDN?

CDN(Content Delivery Network,内容分发网络)是一种通过部署在全球不同地理位置的服务器来提供高效内容传输的网络架构。它通过将内容分发到离用户更近的服务器上,以加速用户访问网站或应用程序的速度,提高性能和可靠性。

CDN 原理:

  1. 内容缓存:CDN 提供商在全球不同的节点上部署服务器(缓存节点),这些节点存储着网站或应用程序的静态内容,如图片、视频、脚本、样式表等。
  2. 就近访问:当用户请求访问某个网站或应用时,CDN 系统会根据用户的位置,将请求路由到距离用户最近的缓存节点。
  3. 缓存策略:如果缓存节点中已经存在用户请求的内容,CDN 直接从缓存中返回内容,减少了数据传输的时间和成本。
  4. 动态内容加速:对于动态内容,CDN 也可以通过一些优化技术,如负载均衡、内容压缩、TCP/TLS 协议优化等来加速传输。

使用 CDN 的原因:

  1. 加速访问速度:通过在全球范围内部署节点,提高了用户对网站和应用程序的访问速度,减少了网络延迟。
  2. 减轻源服务器负载:CDN 可以分担源服务器的负载,将部分请求分发到各个节点,降低源服务器的压力。
  3. 提高可靠性和稳定性:分布式部署使得即使在某个地区出现故障,仍然可以从其他节点获取内容,提高了系统的稳定性和可靠性。
  4. 节省带宽成本:通过缓存内容和就近访问,减少了数据传输的成本。

总的来说,CDN 可以提高网站和应用程序的性能、稳定性,降低服务器负载,节省带宽成本,是优化网络内容传输的重要手段。

DNS 查询的过程,分为哪两种,是怎么一个过程

DNS(Domain Name System,域名系统)查询过程可以分为递归查询和迭代查询两种。

1. 递归查询(Recursive Query):

  • 客户端请求:客户端向本地 DNS 服务器发出查询请求,本地 DNS 服务器负责完成整个解析过程。
  • 追踪查询:本地 DNS 服务器根据查询的域名(例如:www.example.com)开始查询,如果本地 DNS 服务器有缓存或配置了相应的记录,则直接返回解析结果给客户端。
  • 迭代查询:如果本地 DNS 服务器没有缓存或者配置了相应记录,它会向根域名服务器发出查询请求,根域名服务器告知本地 DNS 服务器所查询域的顶级域名服务器的地址。
  • 向下查询:本地 DNS 服务器再向顶级域名服务器发送查询请求,顶级域名服务器告知本地 DNS 服务器所查询域的权威域名服务器的地址。
  • 获取结果:本地 DNS 服务器向权威域名服务器发出最后的查询请求,权威域名服务器返回请求的域名对应的 IP 地址,并将结果返回给客户端。

2. 迭代查询(Iterative Query):

  • 客户端请求:客户端向本地 DNS 服务器发出查询请求,本地 DNS 服务器并不负责完成整个解析过程。
  • 指导查询:本地 DNS 服务器根据查询的域名(例如:www.example.com)开始查询,如果本地 DNS 服务器有缓存或配置了相应的记录,它会返回结果给客户端,否则会返回一个指向更高级别的 DNS 服务器的指引。
  • 层层查询:客户端根据本地 DNS 服务器返回的指引,向指定的 DNS 服务器发出新的查询请求,依次进行下一层的查询,直到找到对应域名的 IP 地址,然后将结果返回给客户端。

这两种查询方式的主要区别在于递归查询是由本地 DNS 服务器负责完成整个解析过程,而迭代查询是根据指引由客户端逐级发起查询。

强缓存和协商缓存的区别

强缓存和协商缓存都是用于缓存资源的机制,它们之间的主要区别在于缓存判断的依据和判断流程。

强缓存(Strong Cache):

  • 依据:利用响应头中的 Cache-ControlExpires 字段进行判断。
  • 判断流程:当客户端发起请求时,浏览器会先检查缓存的过期时间或者最后修改时间,如果没有过期或者未到最后修改时间,则直接使用缓存数据,不会向服务器发送请求。
  • 相关字段:常用字段有 Cache-Control 中的 max-age(最大缓存时间)和 Expires(过期时间)。

协商缓存(Conditional Cache):

  • 依据:利用响应头中的 Last-ModifiedETag 字段进行判断。
  • 判断流程:当客户端发起请求时,浏览器会向服务器发送一个条件请求,包含上次请求资源的 Last-ModifiedETag 值。服务器根据请求头中的条件值来判断资源是否发生了修改,若未修改则返回 304 Not Modified,客户端直接使用缓存数据。
  • 相关字段:响应头中包含 Last-Modified(资源最后修改时间)和 ETag(资源标识符)字段。

区别:

  • 判断依据:强缓存是根据缓存的时间或过期标识来判断是否使用缓存;协商缓存则是根据请求头中的条件字段与服务器进行通信,由服务器来判断资源是否需要更新。
  • 优先级:强缓存优先级高于协商缓存,如果强缓存生效,则不会进行协商缓存的验证。
  • 缓存失效机制:强缓存失效后会进行协商缓存验证,若未发生改变,则继续使用缓存;协商缓存失效后,会重新获取完整的资源。

综合利用强缓存和协商缓存可以更有效地控制缓存的策略,提高网页加载速度,减少服务器压力。

为什么from表单提交没有跨域问题,但ajax有跨域问题

这个差异源于浏览器对不同类型请求的跨域策略不同。主要是因为浏览器对于不同类型请求的安全策略有所区别:

Form 表单提交:

  • 当使用 HTML <form> 表单提交时,这种提交方式不会触发浏览器的同源策略限制,即使提交的目标地址与当前页面的地址不同也可以成功提交。这是由浏览器设计和规范决定的,早期的 Web 应用主要通过表单提交来进行数据交互,因此这种方式并未受到同源策略的限制。

AJAX 请求:

  • 通过 JavaScript 发起的 AJAX 请求,是由浏览器内置的 XMLHttpRequest 对象发起的。浏览器对 AJAX 请求实施了同源策略,即当前网页发起的 AJAX 请求只能访问与该页面同源(协议、域名、端口完全相同)的资源。这是为了防止跨站请求伪造(CSRF)等安全风险,确保用户数据的安全性。

所以,尽管表单提交与 AJAX 请求都可以向不同的源提交数据,但浏览器对于这两种方式的跨域处理是不同的,主要出于安全考虑。如果需要在 AJAX 请求中进行跨域访问,可以通过 CORS(Cross-Origin Resource Sharing,跨源资源分享)等机制来进行处理,服务器端需要进行相应的配置以允许跨域请求。

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

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

相关文章

美易官方:美联储FOMC声明重点

美联储FOMC声明重点 美联储FOMC声明是美联储货币政策的重要文件&#xff0c;其重点内容主要包括以下几个方面&#xff1a; 1. 利率政策 美联储FOMC声明中最重要的内容之一是利率政策。声明会明确美联储的利率目标区间&#xff0c;以及未来可能的调整方向。利率政策是美联储调节…

git查看commit提交记录详情

相关的命令 git log&#xff1a;查看所有的commit提交记录&#xff1b;git show&#xff1a; 查看提交的详情&#xff1b; 首先&#xff0c;需要通过git log显示所有commit记录&#xff1a; 查看最新的commit&#xff1a;git show查看指定commit的所有修改&#xff1a;git s…

Zxing库的使用⭐️实现给自己的博客主页生成一张二维码链接,有源码可以直接复制到本地执行

目录 前言 一、简介 二、本地实现 2.1 引入依赖&#xff08;根据自己springboot项目来&#xff09; 2.2 实现类 三、运行一次 前言 小伙伴们大家好&#xff0c;自从地铁上刷到Zxing库的使用后&#xff0c;一直想本地部署玩一玩 一、简介 ZXing&#xff08;全称为 Zebra Cr…

Mac搭建Frida逆向开发环境

一、简介 Frida是一种基于Python+JavaScript的动态分析工具,可以用于逆向开发、应用程序的安全测试、反欺诈技术等领域,本质是一种动态插桩技术。Frida主要用于在已安装的应用程序上运行自己的JavaScript代码,从而进行动态分析、调试、修改等操作,能够绕过应用程序的安全措…

nodejs使用express框架启动服务操作mysql数据库

描述: 首先在本地搭建mysql数据库,配置:host: ‘192.168.3.249’,user: ‘mkx’,password: ‘123456’,database: ‘gg’.测试连接正常.使用express写两个接口, 1.查询所有学生的接口,使用的get请求,无参数. 2.插入一条学生信息,使用post请求,body是一个json的学生信息{name:“…

土壤科学灌溉CG-36 土壤水势传感器

土壤科学灌溉CG-36 土壤水势传感器产品概述 土壤水势传感器可以很方便地插入到土壤剖面坑中&#xff0c;在其周围包裹上湿土即可。测定和记录非常简单。免维护、无需校准即可测量较大范围的土壤水势&#xff1b;无需灌水&#xff0c;大量程使得它成为测量自然系统水势的理想传…

十个Vue3实用但是冷门的API

文章目录 一、前言二、readonly三、shallowRef四、shallowReactive五、toRef & toRefs5.1、 toRef5.2、toRefs 六、toRaw & markRaw & unref6.1、toRaw6.2、markRaw6.3、unref 七、effectScope & onScopeDispose7.1、收集副作用7.2、全局状态管理 八、provide …

Docker - Android源码编译与烧写

创建源代码 并挂载到win目录 docker run -v /mnt/f/android8.0:/data/android8.0 -it --name android8.0 49a981f2b85f /bin/bash 使用 docker update 命令动态调整内存限制&#xff1a; 重新运行一个容器 docker run -m 512m my_container 修改运行中容器 显示运行中容器 d…

【1day】复现I Doc View系统upload接口任意文件读取漏洞

注:该文章来自作者日常学习笔记,请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与作者无关。 目录 一、漏洞描述 二、影响版本 三、资产测绘 四、漏洞复现

【剑指offer|图解|二分查找】点名 + 统计目标成绩的出现次数

&#x1f308;个人主页&#xff1a;聆风吟 &#x1f525;系列专栏&#xff1a;剑指offer每日一练 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 一. ⛳️点名1.1 题目1.2 示例1.3 限制1.4 解题思路一c代码 1.5 解题思路二c代码 二. ⛳️统计目标成绩…

开发信的基本要点有哪些?如何撰写开发信?

开发信的关键要素是什么&#xff1f;外贸开发信的写作技巧方法&#xff1f; 开发信是一种至关重要的沟通工具&#xff0c;无论是初创企业还是已经建立的公司&#xff0c;开发信都是与潜在客户、合作伙伴或投资者建立联系的关键步骤。蜂邮将讨论开发信的基本要点&#xff0c;以…

(NeRF学习)3D Gaussian Splatting Instant-NGP环境配置

学习参考&#xff1a; 3D gaussian splatting 安装步骤拆解23.9月3D Gaussian Splatting入门指南【五分钟学会渲染自己的NeRF模型&#xff0c;有手就行&#xff01;】 三维重建instant-ngp环境部署与colmap、ffmpeg的脚本参数使用 一、3D Gaussian Splatting &#xff08;一&…

快看!AI竟然可以这样……

自从ChatGPT诞生之后&#xff0c;还有谁不知道AI的名号吗&#xff1f;我相信只有极少部分人吧。人工智能技术在21世纪粉墨登场&#xff0c;拉开了信息化时代的蓝图&#xff0c;被广泛应用于各个产业&#xff0c;来实现产业赋能&#xff0c;推动了经济社会的快速发展。 5G使用还…

PyPDF2库对PDF实现读取的应用

目录 一、PyPDF2 库的使用 1. 文档打开和页面读取 2. 文本提取功能 3. 示例代码

java获取字符串最后一个字符

要获取字符串的最后一个字符&#xff0c;你可以使用以下方法之一&#xff1a; 方法1&#xff1a;使用 charAt() 方法 String str "Hello World"; char lastChar str.charAt(str.length() - 1); System.out.println("最后一个字符是&#xff1a;" last…

【数据结构】什么是堆?

&#x1f984;个人主页:修修修也 &#x1f38f;所属专栏:数据结构 ⚙️操作环境:Visual Studio 2022 堆的概念及结构 堆的定义如下: n个元素的序列{k1,k2,...,kn}当且仅当满足以下关系时,称之为堆. 或 把这个序列对应的一维数组(即以一维数组作此序列的存储结构)看成是一个…

基于springBoot + Vue电影售票系统分前后台【完整源码+数据库】

一、项目简介 本项目是一套基于springBoot Vue的电影售票系统&#xff0c;主要针对计算机相关专业的正在做bishe的学生和需要项目实战练习的Java学习者。 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目可以直接作为bishe使用。 项目都经过严格调试&#xff0c;确…

示例讲述类、接口继承,类、抽象类实现接口相关内容

定义A接口&#xff1a; public interface IService<T> {default boolean save(T entity) {return SqlHelper.retBool(this.getBaseMapper().insert(entity));} }定义B接口继承A接口&#xff1a; public interface IBaseService<T> extends IService<T> {Re…

<蓝桥杯软件赛>零基础备赛20周--第10周--二分

报名明年4月蓝桥杯软件赛的同学们&#xff0c;如果你是大一零基础&#xff0c;目前懵懂中&#xff0c;不知该怎么办&#xff0c;可以看看本博客系列&#xff1a;备赛20周合集 20周的完整安排请点击&#xff1a;20周计划 每周发1个博客&#xff0c;共20周&#xff08;读者可以按…

门窗企业网站建设作用是什么

门窗作为市场重要的组合部分&#xff0c;其应用广泛使得众多商家入局经营&#xff0c;无论大型建筑还是家庭应用&#xff0c;都有较高需求度&#xff0c;尤其对品牌商来说&#xff0c;无论直售还是加盟都可以获得不菲效益。 但对门窗企业来说&#xff0c;也需要解决几个痛点&a…