计算机网络HTTP——针对实习面试
目录
- 计算机网络HTTP
- 什么是HTTP?
- HTTP和HTTPS有什么区别?
- 分别说明HTTP/1.0、HTTP/2.0、HTTP/3.0
- 请说明访问网页的全过程
- 请说明HTTP常见的状态码
- Cookie和Session有什么区别?
- HTTP请求方式有哪些?请解释GET和POST的区别?
- HTTP请求和响应头部有哪些常见的字段?
计算机网络HTTP
什么是HTTP?
HTTP是一种用于分布式、协作式、超媒体信息系统的通信协议。它定义了客户端和服务器之间请求和响应的格式。HTTP是互联网上应用最广泛的协议之一。
-
通信方式:HTTP定义了客户端如何向服务器请求数据,以及服务器如何将数据返回给客户端的方式。
-
请求和响应:客户端发送一个请求到服务器,服务器收到请求后,会返回一个响应。这个响应包含了客户端请求的数据。
-
无状态:HTTP协议是无状态的,意味着每次请求都是独立的,服务器不会记住之前发生过的请求。
-
基于文本:HTTP的请求和响应都是基于文本的,这使得它们易于阅读和调试。
-
使用端口:HTTP默认使用80端口进行通信,而其安全版本HTTPS则使用443端口。
-
请求方法:HTTP定义了几种请求方法,最常见的是GET(获取资源)和POST(提交资源)。
-
状态码:服务器在响应中会包含一个状态码,告诉客户端请求是否成功。例如,200表示成功,404表示找不到资源,500表示服务器错误。
-
头部信息:HTTP请求和响应都包含头部信息,这些信息提供了关于请求和响应的额外数据,比如内容类型、内容长度等。
-
超媒体:HTTP最初设计用来传输超文本,即包含链接的文本,这些链接可以指向其他文档或资源。
-
安全性:虽然HTTP本身不加密,但其安全版本HTTPS通过SSL/TLS提供了加密,保护数据传输的安全。
简而言之,HTTP是一种让网页浏览器和其他客户端能够从服务器请求和接收网页内容的协议。
HTTP和HTTPS有什么区别?
HTTP(超文本传输协议)和HTTPS(安全超文本传输协议)是互联网上用于传输数据的两种协议,它们的主要区别在于安全性和加密。以下是HTTP和HTTPS之间的一些关键区别:
HTTP和HTTPS区别关键字记忆
HTTP | HTTPS | |
---|---|---|
加密 | 明文传输 | 密文传输 |
端口 | 80 | 443 |
安全性 | 低 | 高 |
性能 | 理论上略高 | 理论上略低 |
成本 | 无额外成本 | 需购买SSL/TLC证书 |
配置 | 无额外配置 | 需在服务器安装和配置SSL/TLC证书 |
-
加密:
- HTTP:是明文传输,不提供数据加密,传输的数据可能被窃听或篡改。
- HTTPS:在HTTP的基础上加入了SSL/TLS协议,提供了数据加密、完整性校验和身份验证,保护数据传输的安全。
-
端口:
- HTTP:默认使用80端口。
- HTTPS:默认使用443端口。
-
安全性:
- HTTP:由于没有加密,容易受到中间人攻击、数据泄露等安全威胁。
- HTTPS:通过SSL/TLS加密,提供了更高的安全性,可以有效防止数据在传输过程中被窃取或篡改。
-
性能:
- HTTP:由于没有加密和解密的过程,理论上性能略高于HTTPS。
- HTTPS:由于需要进行加密和解密,可能会有轻微的性能开销,但现代的SSL/TLS实现已经非常优化,性能差异不大。
-
搜索引擎优化(SEO):
- HTTP:搜索引擎可能会降低没有采用HTTPS的网站的排名。
- HTTPS:搜索引擎(如谷歌)倾向于提高采用HTTPS网站的排名,因为它提供了更好的安全性。
-
浏览器显示:
- HTTP:现代浏览器可能会对没有使用HTTPS的网站显示安全警告。
- HTTPS:浏览器会显示一个锁形图标,表示网站是安全的。
-
成本:
- HTTP:不需要额外的成本。
- HTTPS:需要购买SSL/TLS证书,虽然现在有很多免费的证书提供(如Let’s Encrypt)。
-
配置:
- HTTP:不需要额外的配置。
- HTTPS:需要在服务器上安装和配置SSL/TLS证书。
总的来说,HTTPS是HTTP的安全版本,它通过加密提供了更好的数据保护和隐私保护,已经成为现代网站的标准配置。
分别说明HTTP/1.0、HTTP/2.0、HTTP/3.0
HTTP/1.0、HTTP/2.0和HTTP/3.0是超文本传输协议(HTTP)的三个不同版本,每个版本都在前一个版本的基础上进行了改进和优化。以下是对这三个版本的详细说明:
HTTP/1.0
- 发布年份:1996年。
- 无连接:每个请求创建一个连接,请求完成后立即关闭连接,导致显著的开销,尤其是在处理多个小文件时。
- 队头阻塞:下一个请求必须在前一个请求响应到达之前才能发送,如果前一个请求响应一直不到达,那么下一个请求就不发送,后面的请求就阻塞了。
- 缓存:在HTTP1.0中主要使用header里的协商缓存last-modified/if-modified-since,强缓存Expires来做为缓存判断的标准。
HTTP/1.1
- 发布年份:1997年。
- 持久连接:默认启用持久连接(Keep-Alive),允许多个请求使用同一个TCP连接,减少了连接建立和关闭的开销。
- 管道化:支持请求管道化(Pipelining),即在收到响应前可以发送多个请求,但由于实现复杂和问题多,实际使用较少。
- 分块传输编码:引入分块传输编码(Chunked Transfer Encoding),使得服务器可以分块发送响应,提高了传输效率。
- 增强缓存控制:新增了许多缓存控制头部,如Cache-Control,增强了缓存机制。
- 虚拟主机支持:引入Host头部,允许在同一IP地址上托管多个域名(虚拟主机)。
HTTP/2
- 发布年份:2015年。
- 二进制分帧:HTTP/2头信息和数据体都是二进制,统称为“帧”:头信息帧和数据帧。
- 多路复用:通过单一的HTTP/2连接发起多重的请求-响应消息,即在一个连接里,客户端和浏览器都可以同时发送多个请求和响应,而不用按照顺序一一对应,这样避免了“队头堵塞”。
- 数据流:因为HTTP/2的数据包是不按顺序发送的,同一个连接里面连续的数据包,可能属于不同的回应。因此,必须要对数据包做标记,指出它属于哪个回应。
- 服务器推送:HTTP/2引入了服务器推送(Server Push)机制,这意味着服务器可以在客户端请求之前,主动向客户端推送数据。
HTTP/3
- 基于QUIC的传输层协议:HTTP/3不再依赖于TCP,而是使用QUIC来进行数据传输。QUIC具有更快的连接建立时间和更好的拥塞控制,同时支持快速的连接迁移和零RTT(Round-Trip Time)握手。
- 多路复用:HTTP/3延续了HTTP/2的多路复用特性,允许在单个连接上并行发送多个请求和响应,提高了网络利用率和性能。
- 0-RTT连接建立:基于QUIC的特性,HTTP/3支持零RTT连接建立,使得客户端可以在不进行完整的握手过程的情况下发送数据,进一步减少了延迟。
- 连接迁移:QUIC支持快速的连接迁移,即使在网络切换或IP地址变更的情况下,连接也能够快速恢复,提高了网络的稳定性和可靠性。
- 抗拥塞控制:HTTP/3内置了先进的拥塞控制算法,能够更好地适应网络环境的变化,提供更稳定和可靠的网络性能。
请说明访问网页的全过程
访问网页的全过程涉及多个步骤,包括DNS解析、建立TCP连接、发送HTTP请求、服务器处理请求、返回HTTP响应、浏览器渲染页面等。
简略说明
- 浏览器查找域名的IP地址
- 浏览器向web服务器发送一个HTTP请求
- 服务器处理请求
- 服务器发回一个HTML响应
- 浏览器开始显示HTML
详细说明
-
用户输入网址:
- 用户在浏览器地址栏输入一个网址(URL),如
https://www.example.com
。
- 用户在浏览器地址栏输入一个网址(URL),如
-
DNS解析:
- 浏览器首先需要将域名解析为IP地址。浏览器会查询本地的DNS缓存,如果没有找到,会向本地DNS服务器发送查询请求。
- 本地DNS服务器会尝试解析域名,如果它不知道答案,会向根DNS服务器查询,然后逐级查询直到找到对应的IP地址。
-
建立TCP连接(对于HTTP/1.1和HTTP/2):
- 浏览器使用解析得到的IP地址,通过TCP协议与服务器建立连接。这涉及到一个三次握手的过程:
- 客户端发送SYN(同步序列编号)报文给服务器。
- 服务器回应SYN-ACK(同步和确认)报文。
- 客户端发送ACK(确认)报文,完成握手。
- 浏览器使用解析得到的IP地址,通过TCP协议与服务器建立连接。这涉及到一个三次握手的过程:
-
TLS/SSL握手(对于HTTPS):
- 如果是HTTPS连接,接下来会进行TLS/SSL握手,以确保连接的安全性。
- 这个过程包括交换密钥、证书验证等步骤。
-
发送HTTP请求:
- 一旦TCP连接和TLS/SSL连接建立,浏览器会构建一个HTTP请求,包括请求行(如GET /)、请求头部(如User-Agent、Accept等)。
-
服务器处理请求:
- 服务器接收到HTTP请求后,会根据请求的URL、方法和头部信息处理请求。
- 服务器可能会查询数据库、执行后端逻辑,或者直接从文件系统中检索资源。
-
返回HTTP响应:
- 服务器处理完请求后,会返回一个HTTP响应给客户端,包括状态码(如200 OK)、响应头部(如Content-Type、Content-Length等)和响应体(即请求的资源内容)。
-
浏览器渲染页面:
- 浏览器接收到响应后,会根据响应内容进行渲染:
- 解析HTML文档,构建DOM树。
- 根据CSS样式表计算元素样式。
- 根据JavaScript脚本执行DOM操作和动态交互。
- 浏览器可能会发起额外的请求来获取页面中的图片、CSS文件、JavaScript文件等资源。
- 浏览器接收到响应后,会根据响应内容进行渲染:
-
关闭TCP连接(对于HTTP/1.0):
- 如果使用的是HTTP/1.0,或者HTTP/1.1但没有使用持久连接,服务器会在发送完响应后关闭TCP连接。
-
TCP连接复用(对于HTTP/1.1和HTTP/2):
- 如果使用的是HTTP/1.1或HTTP/2,并且启用了持久连接,那么同一个TCP连接可以被用来发送多个HTTP请求和响应,直到客户端或服务器决定关闭连接。
-
页面加载完成:
- 一旦所有资源都被加载和渲染,页面就完全显示在用户面前,网页加载完成。
这个过程涉及客户端(浏览器)、服务器以及中间网络设备(如DNS服务器、代理服务器)的协同工作,确保用户能够顺利访问和浏览网页。
请说明HTTP常见的状态码
HTTP状态码是服务器对客户端请求的响应状态的表示。它们分为五类,每类都反映了不同的响应情况:
状态码关键字记忆
状态码 | 说明 |
---|---|
1xx(信息性状态码) | 表示接收的请求正在处理 |
2xx(成功状态码) | 表示请求已已成功被服务器接收、理解、并接受 |
3xx(重定向状态码) | 表示需要进行额外操作以完成请求 |
4xx(客户端错误状态码) | 表示客户端的请求有错误 |
5xx(服务器错误状态码) | 表示服务器处理请求时发生了错误 |
-
1xx(信息性状态码):表示接收的请求正在处理。
100 Continue
:表明客户端可以继续发送请求的剩余部分,或者如果请求已经完成,则忽略它。101 Switching Protocols
:服务器已经理解了客户端的请求,并将通过Upgrade头信息进行协议切换。
-
2xx(成功状态码):表示请求已成功被服务器接收、理解、并接受。
200 OK
:请求成功,服务器返回请求的网页。201 Created
:请求成功并且服务器创建了新的资源。202 Accepted
:服务器已接受请求,但尚未处理。204 No Content
:服务器成功处理了请求,但没有返回任何内容。
-
3xx(重定向状态码):表示需要进行额外操作以完成请求。
301 Moved Permanently
:请求的网页已永久移动到新位置。302 Found
:请求的网页临时移动到另一个地址。303 See Other
:建议客户端使用GET方法获取资源。304 Not Modified
:自从上次请求后,请求的网页未修改,可以使用缓存版本。307 Temporary Redirect
:请求的网页临时移动到另一个地址,但应使用原方法(POST或GET)重新发起请求。308 Permanent Redirect
:与301类似,但要求使用原方法(POST或GET)重新发起请求。
-
4xx(客户端错误状态码):表示客户端的请求有错误。
400 Bad Request
:服务器无法理解请求,可能是请求格式有误。401 Unauthorized
:请求需要用户的身份认证。403 Forbidden
:服务器理解请求但拒绝执行,可能是权限问题。404 Not Found
:请求的资源在服务器上不存在或无法找到。405 Method Not Allowed
:请求方法不被允许。408 Request Timeout
:请求超时。409 Conflict
:请求与服务器当前状态冲突。410 Gone
:请求的资源已永久删除。
-
5xx(服务器错误状态码):表示服务器处理请求时发生了错误。
500 Internal Server Error
:服务器遇到错误,无法完成请求。501 Not Implemented
:服务器不支持请求的功能,无法完成请求。502 Bad Gateway
:服务器作为网关或代理,从上游服务器接收到无效响应。503 Service Unavailable
:服务器目前无法使用(由于超载或停机维护)。504 Gateway Timeout
:服务器作为网关或代理,但是没有及时从上游服务器收到请求。
这些状态码是HTTP协议的核心部分,它们帮助客户端理解服务器的响应,并根据响应采取适当的行动。
Cookie和Session有什么区别?
Cookie和Session是Web开发中用于管理用户会话和状态的两种常用技术。它们的主要区别在于存储位置、生命周期、安全性和使用场景,其他区别了解即可。以下是Cookie和Session的主要区别:
表格关键词记忆
Cookie | Session | |
---|---|---|
存储位置 | 客户端 | 服务器端 |
生命周期 | 设置过期时间 | 会话超时 |
安全性 | 低 | 高 |
存储空间 | 每个域名可存储Cookie有限 | 服务器端可以存储更多的数据 |
使用场景 | 数据不需要频繁变动 | 需要频繁读写用户状态 |
-
存储位置:
- Cookie:存储在客户端(用户的浏览器)上,通常以键值对的形式存在。
- Session:存储在服务器端,每个用户会话对应一个唯一的Session对象。
-
生命周期:
- Cookie:可以设置过期时间,当达到过期时间后,Cookie会被浏览器自动删除。如果未设置过期时间,则在浏览器关闭时消失(会话Cookie)。
- Session:依赖于服务器端的Session对象,当会话超时或服务器端Session对象被清除时,Session结束。
-
安全性:
- Cookie:由于存储在客户端,更容易受到XSS(跨站脚本攻击)和CSRF(跨站请求伪造)等攻击,因此敏感信息不应存储在Cookie中。
- Session:存储在服务器端,相对更安全,但需要确保Session ID的安全性,防止Session劫持。
-
存储空间:
- Cookie:每个域名下可以存储的Cookie数量有限,且每个Cookie的大小也有限制(通常每个Cookie不超过4KB)。
- Session:理论上服务器端可以存储更多的数据,但过多的Session会增加服务器的存储和处理负担。
-
传输:
- Cookie:每次HTTP请求都会携带Cookie数据,如果Cookie中存储了大量数据,会增加网络传输的开销。
- Session:不需要在每次请求中传输,只有Session ID在请求中传递,减少了网络传输的开销。
-
使用场景:
- Cookie:适用于存储用户偏好设置、会话标识(如Session ID)等不需要频繁变动的数据。
- Session:适用于需要频繁读写用户状态的场景,如购物车、用户登录状态等。
-
跨域问题:
- Cookie:可以设置为跨域访问,但需要服务器端配置CORS(跨源资源共享)策略。
- Session:由于存储在服务器端,不受跨域问题影响。
-
控制权:
- Cookie:由客户端控制,用户可以查看、修改或删除Cookie。
- Session:由服务器控制,用户无法直接访问Session数据。
总的来说,Cookie和Session各有优缺点,实际应用中可以根据需求和场景选择使用。为了提高安全性,通常会将Session ID存储在Cookie中,结合两者的优点来管理用户会话。
HTTP请求方式有哪些?请解释GET和POST的区别?
HTTP请求方式主要包括以下几种:
- GET:用于请求指定资源。GET请求应该只用于获取数据,而不会改变服务器上的数据。
- POST:用于向指定资源提交数据,通常会导致服务器上的状态变化或数据的创建。
- PUT:用于上传指定的资源,如果资源不存在则创建,如果资源已存在则更新。
- DELETE:用于删除指定的资源。
- HEAD:请求获取与GET请求相同的响应,但没有响应体。主要用于检查资源是否存在,以及获取资源的元数据。
- OPTIONS:用于描述目标资源的通信选项,可以用于跨域请求时获取服务器支持的方法。
- PATCH:用于对资源进行部分修改。
- CONNECT:用于将请求连接转换到由目标资源标识的服务器。
GET和POST的区别:
GET和POST关键字记忆
GET | POST | |
---|---|---|
数据可见性 | 可在URL中查看 | 不可在URL中查看 |
数据大小限制 | URL长度限制 | 没有数据大小限制 |
缓存 | 请求可被缓存 | 请求不可缓存 |
历史记录 | 请求浏览器保存 | 请求浏览器不保存 |
安全性 | 低 | 高 |
幂等性 | 是幂等 | 不是幂等 |
GET:
- 数据可见性:请求的数据会附在URL之后,通过查询字符串(query string)传递,因此数据在URL中可见。
- 数据大小限制:由于URL长度限制,GET请求传输的数据大小有限制。
- 缓存:GET请求可以被缓存。
- 历史记录:GET请求会被浏览器保存在历史记录中。
- 安全性:由于数据在URL中可见,因此GET请求不适合传输敏感信息。
- 幂等性:GET请求是幂等的,意味着多次执行相同的GET请求,结果总是相同的,不会影响资源的状态。
POST:
- 数据可见性:请求的数据放在请求体(body)中,不在URL中显示。
- 数据大小限制:理论上POST没有数据大小限制,可以传输大量数据。
- 缓存:POST请求不会被缓存。
- 历史记录:POST请求不会被浏览器保存在历史记录中。
- 安全性:由于数据不在URL中显示,POST请求相对更安全,适合传输敏感信息。
- 幂等性:POST请求不是幂等的,多次执行相同的POST请求可能会导致资源状态的不同变化。
总结来说,GET请求主要用于获取数据,而POST请求主要用于提交数据。GET请求的数据可见性和限制性使其不适合传输敏感或大量数据,而POST请求则适合处理这些情况。
HTTP请求和响应头部有哪些常见的字段?
HTTP请求和响应头部字段(Headers)是HTTP通信的重要组成部分,它们提供了关于请求和响应的附加信息。以下是一些常见的HTTP头部字段:
请求头部(Request Headers)
-
Host:指定请求的服务器的域名和端口号。
Host: www.example.com:8080
-
User-Agent:包含发出请求的浏览器或客户端信息。
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
-
Accept:客户端能够处理的媒体类型。
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
-
Accept-Language:客户端偏好的语言。
Accept-Language: en-US,en;q=0.5
-
Accept-Encoding:客户端能够处理的压缩编码。
Accept-Encoding: gzip, deflate, br
-
Connection:管理持久连接。
Connection: keep-alive
-
Cookie:存储在客户端的小块数据,用于跟踪会话状态。
Cookie: session_id=1234567890
-
Authorization:用于提供身份验证信息。
Authorization: Bearer token_value
-
Content-Type:请求体的媒体类型。
Content-Type: application/x-www-form-urlencoded
-
Content-Length:请求体的长度。
Content-Length: 1234
响应头部(Response Headers)
-
Content-Type:响应体的媒体类型。
Content-Type: text/html; charset=UTF-8
-
Content-Length:响应体的长度。
Content-Length: 1234
-
Set-Cookie:服务器发送给客户端的Cookie。
Set-Cookie: session_id=1234567890; Path=/; HttpOnly
-
Cache-Control:控制响应的缓存行为。
Cache-Control: no-cache, no-store, must-revalidate
-
Expires:响应过期的时间。
Expires: Thu, 01 Dec 1994 16:00:00 GMT
-
Last-Modified:资源最后被修改的时间。
Last-Modified: Wed, 21 Oct 2015 07:28:00 GMT
-
ETag:资源的特定版本标识符。
ETag: "3f80f-1b6-3z2"
-
Server:服务器软件名称。
Server: Apache/2.4.1 (Unix)
-
Location:用于重定向的URL。
Location: https://www.example.com/newpage.html
-
WWW-Authenticate:用于HTTP认证。
WWW-Authenticate: Basic realm="Access to the staging site"
这些头部字段在HTTP通信中扮演着重要的角色,它们帮助客户端和服务器交换必要的信息,以确保数据的正确传输和处理。
相关文章:

计算机网络HTTP——针对实习面试
目录 计算机网络HTTP什么是HTTP?HTTP和HTTPS有什么区别?分别说明HTTP/1.0、HTTP/2.0、HTTP/3.0请说明访问网页的全过程请说明HTTP常见的状态码Cookie和Session有什么区别?HTTP请求方式有哪些?请解释GET和POST的区别?HT…...
JAVA中对象实体与对象引用有何不同?举例说明
在 Java 中,对象实体(Object instance)和对象引用(Object reference)是两个不同的概念,虽然它们通常被一起讨论,但它们的作用和表现方式是不同的。下面我们来详细说明这两者的区别。 1. 对象实体…...
C++设计思想-001-设计模式-单例模式
1.单例模式优点 保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享; 实现: 1.1 单例模式的类只提供私有的构造函数 1.2类定义中含有一个该类的静态私有对象 1.3该类提供了一个静态的公有的函数用于创建或获取它本身的静态私有对象 2.单…...
远程连接服务器
1、远程连接服务器简介 ssh secure shell 非对称加密:一对公钥私钥 对称加密:加密和解密使用的是同一把密钥;(同一秘钥既可以进行加密也可以进行解密 )优势:使用一个秘钥它的加密效率高一些(快一些) …...
【分布式技术】ES扩展知识-Elasticsearch分词器的知识与选择
ES知识扩展 分词器有哪些?1. 标准分词器(Standard Analyzer):示例示例文本分析配置参数与自定义应用场景 2. Simple Analyzer:示例示例文本分析应用场景与限制结论 3. Whitespace Analyzer:示例示例文本分析…...

【网络安全 | 漏洞挖掘】通过密码重置污染实现账户接管
未经许可,不得转载。 文章目录 密码重置污染攻击漏洞挖掘的过程目标选择与初步测试绕过 Cloudflare 的尝试发现两个域名利用 Origin 头部污染实现账户接管攻击流程总结在今天的文章中,我们将深入探讨一种 账户接管 漏洞,并详细分析如何绕过 Cloudflare 的保护机制,利用密码…...

【Nginx从入门到精通】01 、教程简介
讲师:张一鸣老师 课程简介 重量级课程 由浅入深,内容非常广泛 几十个线上的实战案例(图谱),几乎涵盖当前所有互联网主流应用场景 性能:由压测得出结果 调优:从操作系统开始,使你对高并发系统架构的技…...

MySQL面试之底层架构与库表设计
华子目录 mysql的底层架构客户端连接服务端连接的本质,连接用完会立马丢弃吗解析器和优化器的作用sql执行前会发生什么客户端的连接池和服务端的连接池数据库的三范式 mysql的底层架构 客户端连接服务端 连接的本质,连接用完会立马丢弃吗 解析器和优化器…...

C2 追踪器:监控指挥与控制的重要性
12 款暗网监控工具 20 款免费网络安全工具 移动取证软件:为什么 Belkasoft X 应该是您的首选工具 网络安全已成为不断演变的威胁形势中的关键领域。 网络攻击者经常使用命令和控制 (C2) 基础设施来执行和管理攻击。 这些基础设施使恶意软件和攻击者能够与受害设…...

二、神经网络基础与搭建
神经网络基础 前言一、神经网络1.1 基本概念1.2 工作原理 二、激活函数2.1 sigmoid激活函数2.1.1 公式2.1.2 注意事项 2.2 tanh激活函数2.2.1 公式2.2.2 注意事项 2.3 ReLU激活函数2.3.1 公式2.3.2 注意事项 2.4 SoftMax激活函数2.4.1 公式2.4.2 Softmax的性质2.4.3 Softmax的应…...
java导出pdf
引入包 <properties><itext.version>8.0.5</itext.version></properties><dependencies><dependency><groupId>com.itextpdf</groupId><artifactId>itext-core</artifactId><version>${itext.version}</…...
muduo之线程同步CountDownLatch
简介 CountDownLatch称为门阀,用于等待另外线程执行完成 结构 #mermaid-svg-6Azuu15vhIS2hCP1 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-6Azuu15vhIS2hCP1 .error-icon{fill:#552222;}#mermaid-s…...

【Python系列】Python中打印详细堆栈信息的技巧
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...
SpringBoot中监听器、过滤器、拦截器和AOP详解
SpringBoot中监听器、过滤器、拦截器和AOP详解 在构建 Spring Boot 应用程序时,监听器(Listener)、过滤器(Filter)、拦截器(Interceptor)和面向切面编程(AOP)是四种常用…...

如何让手机ip变成动态
在数字化浪潮中,手机已成为我们日常生活中不可或缺的一部分。无论是浏览网页、使用社交媒体还是进行在线购物,手机都扮演着举足轻重的角色。然而,在享受网络带来的便利时,我们也需要关注网络安全和隐私保护。静态IP地址可能让手机…...

[Qt platform plugin问题] Could not load the Qt platform plugin “xcb“
Qt platform plugin 是 Qt 应用程序启动时加载的插件。不同的平台有不同的插件。 常见的插件有:linuxfb Wayland xcb 简单来说就是启动一个GUI程序, 离不开这些插件.选择其中一个就好 出现这个问题要么就是没有插件,要么就是插件依赖的库没有。 要么就是插件选则的…...
嵌入式开发人员如何选择合适的开源前端框架进行Web开发
在嵌入式系统的Web开发中,前端框架的选择对于项目的成败有着决定性的影响。一个合适的框架不仅能提高开发效率,还能保证系统的稳定性和可扩展性。本文将介绍几款适用于嵌入式Web开发的开源前端框架,并探讨它们的优缺点。 1. Element Plus V…...
MySQL数据库(七)----查询相关操作(子查询)
子查询是指在一个查询语句(主查询)内部嵌套的另一个查询语句。子查询可以出现在 SELECT、FROM、WHERE、HAVING 等子句中。它可以将一个复杂的查询问题分解为多个简单的查询步骤,从而更方便地获取所需的数据。 引入子查询: -- 查…...

01_Spring开胃菜
一、 为什么是Spring? 在正式进入Spring内容前我们先看看我们以往经典的程序设计。 当我们去登录时,会调用后端的Controller,Controller接收到用户的请求后会调用业务层的Service进行登录的业务处理,Service业务处理过程中会调用Dao层向DB获取数进行判断。 接下来我们用代…...
SpringBoot使用AspectJ的@Around注解实现AOP全局记录接口:请求日志、响应日志、异常日志
Spring 面向切面编程(AOP),系列文章: 《Spring面向切面编程(AOP)的简单实例》 《Spring使用AspectJ的注解式实现AOP面向切面编程》 《SpringBoot使用AspectJ实现AOP记录接口:请求日志、响应日志、异常日志》 《SpringBoot使用AspectJ的@Around注解实现AOP全局记录接口:…...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...
Leetcode 3576. Transform Array to All Equal Elements
Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到…...

Unity3D中Gfx.WaitForPresent优化方案
前言 在Unity中,Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染(即CPU被阻塞),这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案: 对惹,这里有一个游戏开发交流小组&…...

定时器任务——若依源码分析
分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...

多模态大语言模型arxiv论文略读(108)
CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题:CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者:Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...
【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统
目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索(基于物理空间 广播范围)2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...
Java多线程实现之Thread类深度解析
Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...

华硕a豆14 Air香氛版,美学与科技的馨香融合
在快节奏的现代生活中,我们渴望一个能激发创想、愉悦感官的工作与生活伙伴,它不仅是冰冷的科技工具,更能触动我们内心深处的细腻情感。正是在这样的期许下,华硕a豆14 Air香氛版翩然而至,它以一种前所未有的方式&#x…...

关于easyexcel动态下拉选问题处理
前些日子突然碰到一个问题,说是客户的导入文件模版想支持部分导入内容的下拉选,于是我就找了easyexcel官网寻找解决方案,并没有找到合适的方案,没办法只能自己动手并分享出来,针对Java生成Excel下拉菜单时因选项过多导…...

uniapp 小程序 学习(一)
利用Hbuilder 创建项目 运行到内置浏览器看效果 下载微信小程序 安装到Hbuilder 下载地址 :开发者工具默认安装 设置服务端口号 在Hbuilder中设置微信小程序 配置 找到运行设置,将微信开发者工具放入到Hbuilder中, 打开后出现 如下 bug 解…...