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

【计算机网络】对应用层HTTP协议的重点知识的总结

˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱
ʕ̯•͡˔•̯᷅ʔ大家好,我是xiaoxie.希望你看完之后,有不足之处请多多谅解,让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客
本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN 如需转载还请通知˶⍤⃝˶​
个人主页:xiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客

系列专栏:xiaoxie的计算机网络学习系列专栏——CSDN博客●'ᴗ'σσணღ

"探索未来,掌握人工智能"🚀 点击加入我们的AI学习之旅,让技术变得有趣又易懂,点击跳转
我的目标:"团团等我💪( ◡̀_◡́ ҂)" 

( ⸝⸝⸝›ᴥ‹⸝⸝⸝ )欢迎各位→点赞👍 + 收藏⭐️ + 留言📝​+关注(互三必回)!

目录

​编辑​ 一.HTTP协议的框架

1.HTTP协议的格式

1.HTTP请求报文

1.首行

2.请求头(header)

3.空行

4.正文body

2.HTTP响应报文

1.响应的首行

2.响应的报头(header)

3.空行

4.正文

二.HTTP协议的具体总结

1.HTTP请求报文中的URL总结

1.URL的格式

2.协议名称:

3.IP地址/域名和端口号

4.路径

5.查询参数

6.片段标识符

7.urlencode

2.HTTP请求报文中的方法

1. GET方法 vs POST方法

1.目的

2.格式

3.应用场景

4.如何构造HTTP请求

2.谈一谈GET方法和POST方法的区别(面试题)

3.HTTP请求报头的总结

1.Host

2.Content-Length vs Content-Type

3.User-Agent

4.Referer

​编辑

5.Cookie(最重要的,面试,笔试,工作中非常高频的问题)

1.Cookie 是什么

2.Cookie如何存储

3.Cookie从哪里来的

4.Cookie到哪里去

5.Cookie的作用

1.会话管理

2.自动登录

3.使用Cookie构造用户画像

4.HTTP响应的总结

1.状态码

1.200 ok

2.404 Not Found

3.403 Forbidden

4.405 Method Not Allowed

5.500 Internal Server Error

6.504 Gateway Timeout

7.301 Moved Permanently

8.302 Found (Temporary Redirect)  与301类似,但这里的重定向是临时的。它告诉浏览器资源临时位于另一个URL,未来可能还会变回来。这也用于临时的页面跳转。


​ 一.HTTP协议的框架

它直接与用户的应用程序交互,提供网络服务给最终用户.可以说我们开发最常接触到的协议就是HTTPS协议,HTTPS协议本质其实就是HTTP协议加上加密层.在我们了解HTTPS协议之前我们应该要先了解一下HTTP协议之后在学习HTTPS协议.

1.HTTP协议的格式

使用抓包工具 fiddler 随便抓一个包,HTTP协议的格式如下图所示

我们就根据上图的HTTP协议的格式来讲解一些重点格式,以及重点参数和重点方法

1.HTTP请求报文

上图就是HTTP协议的格式,该格式由首行 + 请求头(header) + 空行 + 正文( body).这个先介绍一下大致的框架,具体的方法和参数后续在重点解释.

1.首行

首行又分为三个部分

1.请求的方法 及 GET (从服务器获取某个资源)

2.请求的URL (请求的对方的网址)这个后续会具体解释

 https://www.baidu.com/s?tn=44004473_8_oem_dg&ie=utf-8&wd=kimi 

 3.版本号

HTTP/1.1

这三个部分由空格来区分这三个部分.

2.请求头(header)

请求头由若干行组成,本质上其实就是键值对的形式结构,每一行就是一个键值对,键和值就由 : 来分割.具体的各个键值对表达的是什么意思,后续在介绍

3.空行

最后一个header后面有一个空行,就相当于header的结束标识符,并且和body的一个分割符.

4.正文body

这个是可选的可以有也可以没有,就和TCP/ IP协议的载荷一样,并且可以为任何格式比如CSS,HTML,JS,JSON,XML,YAML,图片,文件....(任何你想传输的数据).

2.HTTP响应报文

HTTP响应报文的格式和请求报文一样 响应的首行 + 响应头(header) + 空行 + 正文(body)

1.响应的首行

HTTP/1.1 200 OK

主要由三部分组成

1.版本号

2.状态码

3.状态码的描述

2.响应的报头(header)

3.空行

最后一个header后面有一个空行,就相当于header的结束标识符,并且和body的一个分割符.

4.正文

和请求的正文一样保存什么都可以,什么格式都行.

上述只是大致介绍了一下HTTP协议的框架,接下来将会重点介绍各个方法,参数的具体内容

协议格式总结

二.HTTP协议的具体总结

1.HTTP请求报文中的URL总结

URL(Uniform Resource Locator)统一资源定位符一个用于在互联网上定位资源的字符串,通常用来表示网页的地址即网址的意思.

1.URL的格式

协议://域名:端口/路径?查询参数#片段标识符

使用 fiddler抓取一个包为例:

2.协议名称:

HTTPS:// 

目前大多的URL的协议名称都为HTTPS.

3.IP地址/域名和端口号

www.sogou.com

表示了访问的服务器的域名为搜狗的服务器,域名后面使用 : 分割端口号,这里的端口号是可选的,可以写,也可以不写,如果不写就是默认的端口号例如HTTP协议的话默认端口号就为80,如果是HTTPS协议的默认端口号就为443.ssh就为22...等等,可以省略.

4.路径

/web

指定服务器上资源的路径,这个路径通常表示网页服务器上的一个特定资源或页面,用于区分服务器上不同的资源或页面,这些都是各个服务器上的,各个路径都是不一样的.

5.查询参数

query String 查询字符串.这些参数由等号(=)连接键(key)和值(value)

这里面的内容都是写这个模块的程序员自定义的,也只有他们才看得懂.如果我们以后要写相应的网站的话,这里的这个URL的格式也需要我们自定义的去设计.以及如何解析和利用这些参数来提供所需的功能.

6.片段标识符

# + 片段标识符

URL的一个可选部分,通常用于指向网页内的特定部分,它位于井号(#)之后例如在下面的URL中,section1是片段标识符

https://www.example.com/page#section1

注意:这个片段标识符是可选的可以有,也可以没有.

7.urlencode

 在URL中,某些字符具有特殊含义,例如冒号(:)、斜杠(/)、问号(?)和井号(#)。此外,一些字符在URL中是不被允许的,比如空格、特殊符号等。为了能够在URL中包含这些字符,需要将它们转换成合法的格式,这就需要用到URL编码。

URL编码的规则如下:

  1. 保留字符某些字符在URL中具有特殊含义,如: / ? # [ ] @ ! $ & ' ( ) * + , ; = - . _ ~,这些字符在URL中不需要编码。

  2. 空格空格字符通常被编码为%20

  3. 非ASCII字符非ASCII字符(如中文、日文等)会被转换成它们的UTF-8/gbk编码,然后每个字被编码为 %后跟两位十六进制数

  4. 其他字符除了保留字符和空格外的其他字符,如果它们在URL中没有特殊含义,通常也会被编码。

这里就举个小栗子:

在百度搜索http协议,百度客户端,返回给百度服务器的 url的格式如下:

我们可以看到在构造http请求的时候,把需要编码的字符,给进行urlencode.

http协议 => http%E5%8D%8F%E8%AE%AE

2.HTTP请求报文中的方法

 这里就主要介绍 GET 和 POST 这两种方法,主要是在所有HTTP方法中几乎80%左右是GET方法,10%左右为POST方法,剩下10%为其他方法.所以这里就主要介绍GET和 POST这两种方法剩下的方法如果有用到可以在去查资料.

1. GET方法 vs POST方法

1.目的

GET 方法是最常用的HTTP方法,用于从服务器中获取数据

POST方法往服务器发送或者提交某个数据.

2.格式

GET 方法通常不搭配body(正文),有需要传输的数据通常是通过query string(查询参数).

POST方法通常搭配body(正文),不搭配query string(查询参数)传输数据.

3.应用场景

网络上的HTTP请求大部分都是GET方法

一般登入,上传文件等情况使用POST方法

4.如何构造HTTP请求

GET方法:

1.直接在浏览器的地址栏输入URL,或者是点开收藏夹打开网址就是使用GET方法.

2.超链接:在网页中,可以通过创建超链接来构造GET请求。超链接的<a>标签中的href属性包含URL,当用户点击这个链接时,浏览器会发送一个GET请求到指定的URL。

3.表单提交:GET请求也可以通过表单提交来构造。在HTML表单中,设置method属性为"GET",然后用户填写表单并提交,浏览器会将表单数据附加到URL的查询字符串中。

4.在编程中,可以使用各种语言的库来构造HTTP GET请求

5.通过JS构造.

POST请求:

1.使用表单

2.使用JS

其余的请求只能通过JS构造.

注意:以上这些都是建议怎么做,或者说标准是这么做的,但其实在实际开发中POST方法和GET方法并没有什么区别,也就是说上文提到的区别,POST可以做的,GET也可以做,POST同理.

2.谈一谈GET方法和POST方法的区别(面试题)

1.GET方法和POST方法,从本质上讲没有什么区别,GET的应用场景使用POST可以,POST的应用场景GET也可以使用.

2.当从使用习惯上还是有区别的.

3.GET方法在语义上表示的是获取数据,POST方法在语义上表示的是提交数据

4.GET方法传输数据的时候通常搭配 query String,POST方法传输数据的时候通常搭配 body使用

5.服务器对GET方法请求的设计都常是幂等的,对POST方法请求的设计通常是不幂等的 这里解释一下幂等:幂等性用于描述一个操作,无论它在网络上传输多少次,接收端服务器的状态不会改变。举个例子:

果我们发送多次 GET 请求给服务器,无论这个请求发送一次还是多次,只要在请求之间服务器上的数据没有被其他操作修改,服务器都会返回相同的数据,并且不会对数据做任何修改。

注意这里的解释如果面试官没问就没有必要说.记住GET和POST的区别就好.

6.GET请求一般可以被浏览器缓存,或者使用收藏夹收藏,POST一般不行.

3.HTTP请求报头的总结

header中的键值对一般是标准规定的内容当然也可以自定义一些,这里就主要介绍一些重要的.

1.Host

请求对于的IP/域名 + 端口号(可以不写默认),这个一般和URL的IP和端口号一样.

2.Content-Length vs Content-Type

Content-Length :表示body中的数据长度.避免粘包问题.

Content-Type:表示请求body中的数据格式,传输的不同数据有不同的处理方式.

注意这两个键值对只要当body不为空的时候,才会出现,否则就没有这两个键值对.

3.User-Agent

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36 Edg/125.0.0.0 

User-Agent这里显示的主要就是两个信息:

1.浏览器版本

2.操作系统版本

服务器可以根据这个 User-Agent 字符串来定制响应,例如,为移动设备提供优化的网页布局,或者为特定浏览器版本提供特定的CSS样式或JavaScript代码。

4.Referer

表示当前界面从哪里跳转来,例如打开百度,搜索一个词,出来界面后,点击到某网站,对这个网站进行抓包的话,Referer就为 https://www.baidu.com.....

注意:如果你是在浏览器的搜索框或者从收藏栏中点击网址的话,Referer为空或者不存在.

5.Cookie(最重要的,面试,笔试,工作中非常高频的问题)

1.Cookie 是什么

Cookie 是一种存储在客户端浏览器上的数据,用于维护服务器与客户端之间的状态信息一般会存储像用户个性化设置,登录信息等等之类的内容.

 Cookie和query String一样也是键值对形式格式的, 也是由程序员自定义的,只有写这个模块的程序员才知道具体每个键值对表示的是什么内容.并且一般来说Cookie是存储在客服端的硬盘上持久性的保存的.

2.Cookie如何存储

1.浏览器会对不同网站(域名),每个网站都会有一份自己的Cookie文件,分别存储在硬盘上,不同域名的Cookie互不干扰,并且这意味着每个网站只能访问自己域名下的Cookie,无法访问其他网站的Cookie,从而保护了用户隐私和数据安全

2.浏览器对Cookie的大小和数量有限制。单个Cookie的大小通常限制在4KB左右,而一个域名下的Cookie总数也有限制,通常在几十到几百不等.

3.用户可以在浏览器设置中调整Cookie的使用策略,如禁用第三方Cookie,这可以阻止某些跟踪和广告行为。

3.Cookie从哪里来的

Cookie中的数据都是来自于服务器的,如果你第一次访问某个网站的时候,此时你对应的Cookie是空的.网站的服务器就会返回HTTP响应,其中就会包含Set-Cookie 这样的header

就会把这些键值对保存到浏览器的Cookie中.当然这些都是开发服务器的程序员自定义的,也不一定是第一次访问就返回HTTP响应.

4.Cookie到哪里去

在后续请求中浏览器就会通过HTTP请求的Header的Cookie字段又返回给服务器.至于为什么还需要返回Cookie,主要也是因为每个Cookie有的包含着用户的个性化设置,用户的登入状态,用户的偏好等等之类的信息而客服端有很多,每个客服端的这些信息肯定是不同的,所以自然就需要返回给服务器,服务器就可以识别用户,从而提供个性化的服务.

5.Cookie的作用
1.会话管理

虽然Cookie中的的键值对大多都是程序员自定义的,但是,在大部分的网站中都有一个特殊的键值对,它的key是用来表示用户的身份信息的.这个键值对通常包含一个由服务器生成的唯一ID,称为Session ID或是其他类似名称。这个ID并不直接包含用户的敏感信息,而是作为一个引用,服务器端根据这个ID在服务器的内存或数据库中查找对应的用户会话数据,以此来识别用户身份、权限以及之前保存的状态信息。举个例子:

1. 请求登录界面

  • 步骤:当用户首次访问一个需要身份验证的网站时,浏览器发送一个HTTP请求到服务器,请求登录页面。
  • 服务器响应:服务器接收到请求后,返回一个HTML页面给浏览器,这个页面就是登录界面。此时服务器不会在响应中设置任何与用户身份相关的cookie,因为用户尚未登录。

2. 用户登录

  • 用户操作:用户在登录界面上输入用户名和密码,然后提交表单。
  • 浏览器发送请求:浏览器将用户的登录信息(通常是明文加密后的形式)通过HTTP POST请求发送给服务器。
  • 服务器处理:服务器接收到登录请求后,验证用户名和密码是否匹配,这通常涉及到查询数据库。
    • 验证成功:如果用户名和密码正确,服务器会:
      • 创建一个会话(Session),这个会话在服务器端会分配一块存储空间,用来保存用户的相关信息,比如用户ID、权限等。
      • 生成一个会话ID(Session ID),这个ID是唯一标识这个会话的。
      • 将会话ID通过Set-Cookie头部作为响应的一部分发送给浏览器。这样,浏览器就会保存这个会话ID在本地的cookie中。
    • 验证失败:如果用户名或密码错误,服务器通常会返回一个错误消息,要求用户重新输入。

3. 后续浏览

  • 携带Session ID的请求:当用户已经登录并拥有会话ID的cookie后,每次向服务器发送请求(如访问网站内的其他页面),浏览器都会自动在HTTP请求头中附上这个cookie(即Cookie: sessionID=xxxxx)。
  • 服务器识别用户:服务器接收到请求后,检查请求头中的Session ID,使用这个ID在服务器端查找对应的会话数据。一旦找到,服务器就知道了当前请求的用户身份,可以据此提供个性化的服务或内容,而不需要用户再次登录。

同时需要注意这个会话是有生命周期的,一般来说像网银之类的可能设置的生命周期可能会比较短,就几分钟之内没有操作,就需要重新登入,这些都是根据具体业务来设置的.

总结

这个过程实现了用户的无感登录状态保持,提高了用户体验,同时确保了安全性,因为敏感的用户凭证(如密码)只在网络间传输一次,并且服务器端存储的是经过安全处理的会话数据而非直接的用户凭证。不过,需要注意的是,基于cookie的session管理也存在一些安全隐患,比如XSS攻击、CSRF攻击等,因此在实际应用中还需要采取相应的安全措施来加强防护。

2.自动登录

自动登录是在Cookie和Session应用上的扩展.

当用户勾选了“自动登录”或“记住我”选项时,网站会使用Cookie来实现这一功能。下面是自动登录功能利用Cookie的一般流程:

  1. 首次登录时用户在登录界面输入用户名和密码,并选择“自动登录”或“记住我”选项。服务器验证这些凭证无误后,不仅创建一个会话(Session)用于本次访问,还会生成一个Cookie。

  2. 生成Cookie这个Cookie通常包含一些标识用户身份的信息,但不会直接存储密码。为了安全起见,密码会被加密(如使用哈希加盐方法),或者根本不存储密码,而是使用一个经过安全处理的 token。此外,Cookie会设置一个过期时间,这决定了自动登录的有效期。

  3. 存储Cookie浏览器接收到这个Cookie后会保存起来。如果设置了过期时间,Cookie会保存在用户的硬盘上,即使关闭浏览器也会保留。

  4. 下次访问时当用户再次访问网站时,浏览器会自动将这个Cookie发送给服务器。服务器通过解析Cookie中的信息,识别出是之前选择自动登录的用户,然后自动完成登录过程,无需用户再次输入用户名和密码。

  5. 安全性考虑由于Cookie可以被用来自动登录,因此安全性至关重要。开发者会采取多种措施保护Cookie,比如使用HTTPS来加密传输、设置HttpOnly标志防止JavaScript访问、以及定期刷新Token等,以减少被盗用的风险。

3.使用Cookie构造用户画像
  1. 跟踪浏览行为:网站可以通过在用户浏览器设置第一方Cookie来记录用户的浏览历史、点击行为、停留时间等信息。这些数据有助于了解用户的兴趣偏好和行为模式。

  2. 跨站追踪:第三方Cookie(由不属于当前访问网站的域设置的Cookie)常被广告网络和数据分析公司用于跨网站追踪用户活动。它们可以在多个网站间共享,收集更全面的用户上网习惯,进而构建更加详尽的用户画像。

  3. 个性化推荐:基于Cookie收集到的数据,网站和应用程序能够提供个性化的内容、广告和服务。例如,如果你频繁浏览运动鞋信息,网站可能会利用这一信息展示更多相关产品的广告。

  4. 用户识别与认证:如之前讨论,Cookie可用于识别已登录用户,结合用户在平台上的互动历史,进一步细化个人资料和偏好。

4.HTTP响应的总结

HTTP响应的内容其实在HTTP请求中差不多都一样或者是提到过,这里就重点介绍一下HTTP响应的首行.

1.状态码

描述这次HTTP请求是否成功,如果失败,失败的原因.

这里重点介绍几个常见的状态码

1.200 ok

这个状态码表示请求已成功被服务器处理。如果你向服务器请求一个网页,网页内容正常返回,你就会看到这个状态码。这是最期望得到的响应类型。

2.404 Not Found

这意味着客户端请求的资源在服务器上未找到。比如,输入了一个不存在的URL,服务器就会返回404状态码。它是客户端错误的一种,表示请求的资源不存在.

例如我在B站上随意输入一个URL,结果就如下:

3.403 Forbidden

客户端没有足够的权限访问请求的资源,举个例子:我访问一个在gitee上别人私有的仓库,gitee服务器就会认为我没有权限拒绝我的访问.

4.405 Method Not Allowed

此状态码表示客户端使用了服务器不支持的HTTP方法来访问某个页面或资源。例如,尝试使用POST方法访问只允许GET请求的资源,服务器就会返回405状态码。它告知客户端其请求方式不允许被应用于请求的资源上。客户端应当检查请求方法,并确保其与资源支持的方法相符,如有必要,可更改请求方法后重新尝试。 这个简单了解即可.

5.500 Internal Server Error

这是一个服务器端错误状态码,表明服务器遇到了未知的错误,无法完成对请求的处理。这可能是服务器上的程序错误或配置问题。出现这个状态码,我们就应该要检查一下服务器代码了,查看服务器的错误日志,修改代码.

6.504 Gateway Timeout

此状态码表示服务器作为网关或代理,但是没有及时从上游服务器收到请求的响应。换句话说,服务器尝试向另一个服务器(例如,后端服务或另一个API)请求数据来完成你的请求,但是那个服务器没有在预定时间内响应。这通常意味着网络延迟或后端服务器过载.

7.301 Moved Permanently

此状态码表示请求的资源已被永久移动到了新的URL。浏览器会自动重定向到新的URL上。这对于网站迁移或者URL结构调整非常有用,可以保持SEO排名。

8.302 Found (Temporary Redirect)  与301类似,但这里的重定向是临时的。它告诉浏览器资源临时位于另一个URL,未来可能还会变回来。这也用于临时的页面跳转。

这里介绍一下301 和 302 .一般来说像我们登录网站的时候,登录成功之后,他就会跳转到另一个界面,这个时候,服务器响应的状态码就是302了.具体的例子:登录gitee之后就会跳转到我的仓库页面.

可以看到服务器响应的状态码为 302 并且 Location 表明跳转的界面在哪里.也就是说这个Location并不是固定的,而是根据具体的业务代码就可能跳转到别的地址.所以每次跳转都要访问一次服务器,如果是301的话,它的旧地址和新地址是固定的,只需要第一次的时候访问服务器就可以了,后续如果在访问不需要再访问服务器了,浏览器通常情况下会存储这个映射关系,即后续对该资源的请求会直接使用新URL,无需再次查询服务器所以301比较适用于,由于某些原因需要更换域名的情况.

总之,301和302都是实现URL重定向的手段,选择哪一个取决于重定向的性质是永久还是临时。

 总结:以上就是一些比较常用或者是常见的状态码了,如果需要用到或者是查询别的状态码可以通过查资料的发生去具体查询.

以上就是关于HTTP协议内容的总结了,博主这里是建议多使用抓包软件,多抓包,能够让你更深刻了认识到HTTP协议.感谢你的阅读,祝你一天愉快.

相关文章:

【计算机网络】对应用层HTTP协议的重点知识的总结

˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好&#xff0c;我是xiaoxie.希望你看完之后,有不足之处请多多谅解&#xff0c;让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN 如…...

30分钟快速入门TCPDump

TCPDump是一款功能强大的网络分析工具&#xff0c;它可以帮助网络管理员捕获并分析流经网络接口的数据包。由于其在命令行环境中的高效性与灵活性&#xff0c;TCPDump成为了网络诊断与安全分析中不可或缺的工具。本文将详细介绍TCPDump的基本用法&#xff0c;并提供一些高级技巧…...

Python | 刷题日记

1.海伦公式求三角形的面积 area根号下&#xff08;p(p-a)(p-b&#xff09;(p-c)) p是周长的一半 2.随机生成一个整数 import random xrandom.randint(0,9)#随机生成0到9之间的一个数 yeval(input("please input:")) if xy:print("bingo") elif x<y:pri…...

“JS逆向 | Python爬虫 | 动态cookie如何破~”

案例目标 目标网址:aHR0cHMlM0EvL21hdGNoLnl1YW5yZW54dWUuY29tL21hdGNoLzI= 本题目标:提取全部 5 页发布日热度的值,计算所有值的加和,并提交答案 常规 JavaScript 逆向思路 JavaScript 逆向工程通常分为以下三步: 寻找入口:逆向工程的核心在于找出加密参数的生成方式。…...

十.数据链路层——MAC/ARP

IP和数据链路层之间的关系 引言 在IP一节中&#xff0c;我们说IP层路由(数据转发)的过程&#xff0c;就像我们跳一跳游戏一样&#xff0c;从一个节点&#xff0c;转发到另一个节点 它提供了一种将数据从A主机跨网络发到B主机的能力 什么叫做跨网络&#xff1f;&#xff1f;&a…...

Linux主机安全可视化运维(免费方案)

本文介绍如何使用免费的主机安全软件,在自有机房或企业网络实现对Linux系统进行可视化“主机安全”管理。 一、适用对象 本文适用于个人或企业内的Linux服务器运维场景,实现免费、高效、可视化的主机安全管理。提前发现主机存在的安全风险,全方位实时监控主机运行时入侵事…...

Vite + Vue 3 前端项目实战

一、项目创建 npm install -g create-vite #安装 Vite 项目的脚手架工具 # 或者使用yarn yarn global add create-vite#创建vite项目 create-vite my-vite-project二、常用Vue项目依赖安装 npm install unplugin-auto-import unplugin-vue-components[1] 安装按需自动导入组…...

python-字符替换

[题目描述] 给出一个字符串 s 和 q 次操作&#xff0c;每次操作将 s 中的某一个字符a全部替换成字符b&#xff0c;输出 q 次操作后的字符串输入 输入共 q2 行 第一行一个字符串 s 第二行一个正整数 q&#xff0c;表示操作次数 之后 q 行每行“a b”表示把 s 中所有的a替换成b输…...

团队项目开发使用git工作流(IDEA)【精细】

目录 开发项目总体使用git流程 图解流程 1.创建项目仓库[组长完成] 2. 创建项目&#xff0c;并进行绑定远程仓库【组长完成】 3.将项目与远程仓库&#xff08;gitee&#xff09;进行绑定 3.1 创建本地的git仓库 3.2 将项目添加到缓存区 3.3 将项目提交到本地仓库&#…...

爬虫案例实战

文章目录 一、窗口切换实战二、京东数据抓取 一、窗口切换实战 案例实战&#xff1a;使用selenium实现打开百度和腾讯两个窗口并切换 知识点&#xff1a;用到selenium中execute_script()执行js代码及switch_to.window()方法 全部代码如下&#xff1a; import time import war…...

uniapp uni-popup内容被隐藏问题

今天开发新需求的时候发现uni-popup 过一会就被隐藏掉只留下遮罩(css被更改了)&#xff0c;作者进行了如下调试。 1.讲uni-popup放入其他节点内 失败&#xff01; 2.在生成dom后在打开 失败&#xff01; 3.uni-popup将该节点在包裹一层 然后将统计设置样式&#xff0c;v-if v-s…...

leetcode155 最小栈

题目 设计一个支持 push &#xff0c;pop &#xff0c;top 操作&#xff0c;并能在常数时间内检索到最小元素的栈。 实现 MinStack 类: MinStack() 初始化堆栈对象。void push(int val) 将元素val推入堆栈。void pop() 删除堆栈顶部的元素。int top() 获取堆栈顶部的元素。i…...

在Ubuntu乌班图上安装Docker

最近在学习乌班图相关的内容&#xff0c;找了一些文档安装的都是报错的&#xff0c;于是记录一下学习过程&#xff0c;希望也能帮助有缘人&#xff0c;首先查看乌班图的系统版本&#xff0c;我的是如下的&#xff1a; cat /proc/version以下是在Ubuntu 20.04版本上安装Docker。…...

【Redis数据库百万字详解】数据持久化

文章目录 一、持久化1.1、什么是持久化1.2、持久化方式1.3、RDB优缺点1.4、AOF优缺点 二、RDB持久化触发机制2.1、手动触发2.2、自动触发 三、RDB持久化配置3.1、配置文件3.2、配置查询/设置3.3、禁用持久化3.4、RDB文件恢复 四、RDB持久化案例4.1、手动持久化4.2、自动持久化案…...

echarts legend. icon的展示

默认展示 icon展示circle圆形rect矩形roundRect圆角矩形triangle三角形diamond菱形pin水滴arrow箭头none不显示...

PHPstudy情况下上传图片马需要的.htaccess文件

网上的方法是无效的&#xff1a; <FilesMatch "test.jpg">SetHandler application/x-httpd-php</FilesMatch>原因是新版本的phpstudy使用了cgi模式,而网上的方法只适用于linux模式。 <FilesMatch "tpm.png"> AddHandler fcgid-script …...

基于最大重叠离散小波变换的PPG信号降噪(MATLAB 2018)

光电容积脉搏波PPG信号结合相关算法可以用于人体生理参数检测&#xff0c;如血压、血氧饱和度等&#xff0c;但采集过程中极易受到噪声干扰&#xff0c;对于血压、血氧饱和度测量的准确性造成影响。随着当今社会医疗保健技术的发展&#xff0c;可穿戴监测设备对于PPG信号的质量…...

Gradio中Button用法及事件监听器click方法使用

Gradio中Button用法及事件监听器click方法使用 瞎想乱记 事情是这样的&#xff1a;入职时面试的是Java&#xff0c;简历中写了会python&#xff0c;刚好最近有个小项目需要用Python实现&#xff0c;老板就将这个项目交给了我&#xff0c;我… 项目中还真遇到了好几个坑&#…...

【Qt秘籍】[005]-Qt的首次邂逅-创建

一、如何创建文件&#xff1f; 当我们打开Qt Creator&#xff0c;你会发现整个界面类目繁多。现在&#xff0c;让我们直接开始新建一个项目。 1.点击左上角的“文件”>点击“新建文件或项目” 2.如图&#xff0c;选择“Application”>“Qt Wifgets application”> “…...

亚信安慧AntDB:值得信任的数据产品

AntDB的一个显著特点是其高度的容错性和可靠性。AntDB采用了先进的冗余和备份机制&#xff0c;确保在面对硬件故障或系统异常时仍能保持数据的完整性和可用性。这种稳定性不仅为运营商的核心业务提供了持久的保障&#xff0c;也提升了用户的信任和满意度。 AntDB的容错性和可靠…...

超越传统AI 新型多智能体系统MESA,探索效率大幅提升

探索多智能体强化学习的协同元探索 —— MESA 算法深度解读在多智能体强化学习&#xff08;MARL&#xff09;的征途中&#xff0c;如何高效探索以发现最优策略一直是研究者们面临的挑战。特别是在稀疏奖励的环境中&#xff0c;这一问题变得更加棘手。《MESA: Cooperative Meta-…...

[SWPU 2019]神奇的二维码、buuctf部分web题

目录 [SWPU 2019]神奇的二维码 [LitCTF 2023]Http pro max plus [SWPUCTF 2021 新生赛]finalrce ​[鹏城杯 2022]简单包含 [SWPUCTF 2022 新生赛]ez_ez_php(revenge) [GKCTF 2020]cve版签到 cve-2020-7066&#xff1a; [SWPU 2019]神奇的二维码 解码看看&#xff0c;是…...

Python正则表达式匹配中文:深入解析与实战应用

Python正则表达式匹配中文&#xff1a;深入解析与实战应用 在Python编程中&#xff0c;正则表达式是一种强大的工具&#xff0c;它可以用来处理和分析字符串数据。对于需要处理包含中文字符的文本数据的场景&#xff0c;掌握如何使用正则表达式匹配中文就显得尤为重要。本文将…...

实例Python对比两个word文档并找出不同

首先确保已经有了安装包docx 与 difflib&#xff0c;如果没有先用pip命令安装如下 pip install python-docx案例代码 import docx import difflib import os 在文件目录中存在两个待对比的word文档,必须是docx格式 # 获取文档对象 # path input(请输入文件目录&#xff1a;…...

2.1 QT随手简记(三)

新建QT工程 1.方法 第一种&#xff1a;点击new project按钮&#xff0c;弹出对话框&#xff0c;新建即可 第二种&#xff1b;点击文件菜单&#xff0c;选择新建文件或者工程 2.QT工程文件介绍 (1).pro文件 --》QT工程配置文件 QT …...

TechM-技术网站

介绍 你将为⼀个技术社区设计并实现⼀个官⽹。该社区旨在为软件⼯程师、开发⼈员和技术 爱好者提供⼀个交流平台&#xff0c;分享最新的技术动态、⽂章、项⽬案例。 项目模块 项目分为三个模块 &#xff1a; 主页展示模块&#xff0c;文章详情模块&#xff0c;文章专栏模块…...

SpringBoot: 使用GraalVM编译native应用

曾今Go语言里让我最艳羡的两个特性&#xff0c;一个是Goroutine&#xff0c;一个是native编译。 Java 21的虚线程实现了类似Goroutine的能力。Spring Boot 3.x开始提供了GraalVM的支持&#xff0c;现在Spring Boot也能打包成native文件了。 这一篇文章的目标是用一个案例讲解如…...

9. MySQL事务、字符集

文章目录 【 1. 事务 Transaction 】1.1 事务的基本原理1.2 MySQL 执行事务的语法和流程1.2.1 开始事务1.2.2 提交事务1.2.3 回滚&#xff08;撤销&#xff09;事务实例1&#xff1a;一致性实例2&#xff1a;原子性 【 2. 字符集 和 校对规则 】2.1 基本原理2.2 查看字符集查看…...

为什么要学习数据结构和算法

前言 控制专业转码学习记录&#xff0c;本科没学过这门课&#xff0c;但是要从事软件行业通过相关面试笔试基础还是要打牢固的&#xff0c;所以通过写博客记录一下。 必要性 1.越是厉害的公司&#xff0c;越是注重考察数据结构与算法这类基础知识 2.作为业务开发&#xff0c…...

CANoe仿真工程Switch控件关联dbc信号出现的问题及解决思路

小白学习CANoe仿真&#xff0c;参考CANoe-第2个仿真工程-XVehicle—1总线数据库设计&#xff08;思路&#xff09;_canoe vehicle-CSDN博客 CANoe-第2个仿真工程-XVehicle1总线数据库设计&#xff08;操作&#xff09;_canoe factor 参数什么意思-CSDN博客CANoe-第2个仿真工程…...

wordpress多站点是什么意思/网页优化seo公司

ORACLE_OCP多租户之CDB和PDB数据加密 一、通过透明数据加密对受保护的数据进行加密 每个PDB一个主密钥来加密PDB数据 每个PDB都有自己的主密钥&#xff0c;用于加密PDB中的数据。当PDB从一台主机移到另一台主机时&#xff0c;必须将主密钥从源数据库密钥库传输到目标数据库密…...

那个网站可以免费做风面/企业品牌推广

偶然看到了这个有趣的问题&#xff0c;有人问&#xff1a;既然普遍认为编程是比较难的工作&#xff0c;为什么业务分析人员和项目经理们会拿比程序员更多的薪水?虽然大多数的时候程序员都被发现是最晚离开公司的人&#xff0c;可那些家伙的工作却能拿更多的报酬&#xff0c;为…...

树莓派lamp WordPress/江苏seo团队

前面介绍了一个SSM项目整合MongoDB&#xff0c;想想顺便把SpringBoot项目整合MongoDB的也介绍一下吧&#xff0c;SpringBoot整合MongoDB比SSM项目整合简单多了。 因为SpringBoot本身集成了MongoDB&#xff0c;本身提供了相应的支持&#xff0c;只需要导入jar包即可。 在pom.xm…...

如何宣传推广自己品牌/青岛百度快速排名优化

mycat配置文件补充注释版本-server.xml server.xml作用&#xff1a; 配置mycat系统相关参数 配置mycat用户访问权限 配置SQL防火墙以及SQL拦截功能 <?xml version"1.0" encoding"UTF-8"?> <!-- - - Licensed under the Apache License, Version…...

百度权重排名高的网站/西安小程序开发的公司

现在面试基本上都会被问及到多线程&#xff0c;就有很高概率问到wait() 和 sleep() 这两者的区别 1、wait()、sleep() 方法相同点 &#xff08;1&#xff09;都是对线程的操作&#xff1b; &#xff08;2&#xff09;都需要抛异常&#xff1b; &#xff08;这一点我遇到很多…...

如何建设一个自己的网站/网页搜索引擎大全

【MoCo 论文逐段精读【论文精读】】 https://www.bilibili.com/video/BV1C3411s7t9/?share_sourcecopy_web&vd_source9ee2521627a11b87c06e3907e194e1ab MoCo是CVPR 2020的最佳论文提名&#xff0c;算是视觉领域里&#xff0c;使用对比学习的一个里程碑式的工作&#xff0…...