BurpSuite抓包与HTTP基础
文章目录
- 前言
- 一、BurpSuite
- 1.BurpSuite简介
- 2.BurpSuite安装教程
- (1)BurpSuite安装与激活
- (2)安装 https 证书
- 3.BurpSuite使用
- 4.BurpSuite资料
- 二、图解HTTP
- 1.HTTP基础知识
- 2.HTTP客户端请求消息
- 3.HTTP服务端响应消息
- 4.HTTP部分请求方法理解
- 5.HTTPS与HTTP
- 总结
前言
在网络安全和渗透测试领域,BurpSuite 是一个不可或缺的工具。它凭借强大的功能集和灵活的模块化设计,成为安全研究人员、开发者以及测试人员分析 Web 应用漏洞的“瑞士军刀”。然而,对于初学者来说,BurpSuite 的配置和使用可能略显复杂,尤其是代理设置、证书安装以及 HTTP/HTTPS 流量分析等环节。
与此同时,理解 HTTP 协议的基础知识是掌握 BurpSuite 的核心前提。HTTP 作为 Web 通信的基石,其请求与响应的结构、状态码的含义、以及 HTTPS 加密机制的原理,都是渗透测试中需要深入剖析的关键点。
本篇博客将从 BurpSuite 的安装与破解入手,逐步演示如何配置代理、安装证书、抓取流量,并结合 HTTP 协议的核心概念(如 URL/URI 结构、请求头与响应头、状态码分类、HTTPS 加密原理等),帮助读者构建完整的 Web 安全分析知识体系。无论你是刚入门的安全爱好者,还是希望巩固基础的开发者,都希望能通过本文的实践与理论结合,快速上手 BurpSuite 并更深入理解 HTTP 的底层逻辑。
一、BurpSuite
1.BurpSuite简介
BurpSuite 是一个集成化的渗透测试工具,它集合了多种渗透测试组件,使我们自动化地或手工地能
更好的完成对Web应用的渗透测试和攻击。
BurpSuite 是由 Java 语言编写而成,而依托 Java 自身的跨平台性,使得软件在不同系统平台使用
更加方便。
2.BurpSuite安装教程
(1)BurpSuite安装与激活
BurpSuite Professional 破解版压缩包: https://easylink.cc/9licrh(点击即下载)
双击keygen.bat
,启动BurpSuite破解程序
(双击 keygan.bat 后会自动启动cmd和激活页面)点击Run
后就会启动BurpSuite
界面功能解释
功能 | 解释 |
---|---|
Auto Run | 勾选会自动执行 Loader Command |
Ignore Update | 勾选忽略更新,不勾选可以点击上方蓝字下载 BurpSuite 最新稳定版 |
Early Adopter | 勾选可以点击上方蓝字下载 BurpSuite 前期测试版 |
Loader Command | 加载器启动 BurpSuite 命令,点击 Run 可执行 |
License Text | License 文本,可自己修改,比如 licensed to mingxyz |
License | 生成的 License |
Activation Request | 激活请求 |
Activation Response | 激活响应 |
勾选“Help improve Burp by submitting feedback about its performance”
点击 “I Accept” 同意协议
按下图示操作后点击Next
注意:点击Manual activation
按下图示操作后在“Activation Response”框中会自动生成字符串
将“Activation Response”中生成的字符串按下图示复制到相应位置后点击Next
Finish之后会自动打开BurpSuite
Next
Start Burp
关闭BurpSuite后可在压缩包解压后的解压文件中再次打开BurpSuite(可自行设置快捷方式于桌面)
BurpSuite.vbs为英文版
BurpSuite-cn.vbs为中文版
根据个人需要自行选择(建议初学者使用英文版进行学习)
(2)安装 https 证书
BurpSutie默认只能抓取http请求,由于HTTPS流量是加密的,为了能够查看和修改这些流量,需要在BurpSuite中安装CA证书,并在浏览器中信任这个证书。这样,BurpSuite可以作为中间人(MITM)来解密和重新加密流量。
打开BurpSuite后,依次点击Proxy > Proxy setting > Tools下的Proxy
点击Import/export CA certificate
勾选 Certificate in DER format 后点击Next
文件名的后缀一定要是.der
,文件前缀随意(建议整个文件名为“bp.der”)
文件类型:所有文件
Next
双击 安装证书.der ,点击安装证书
本地计算机
勾选 将所有的证书都放入下列存储
受信任的根证书颁发机构
注意:
1.操作完成上面的破解步骤后,证书已经成功写入系统,后续不必再重复破解
2.如果更新了BurpSuite
版本,可能需要重新破解激活才可正常使用
想要清除系统BurpSuite
激活信息,双击执行reset_license.bat
脚本
更新:
1.打开
keygen.bat
点击蓝色小字下载最新版本,或者自己去官网下载BurpSuite Pro
: https://portswigger.net/burp/releases
2.下载后复制到BurpSuite
目录下并重命名为burpsuite_pro.jar
然后按照上面的步骤依次破解、启动即可
注意:安装完证书后,一定记得重启浏览器,之后才会生效
3.BurpSuite使用
●代理监听
依次点击Proxy > Proxy settings > Tools > Proxy在 Proxy listeners 里可以看到有个127.0.0.1:8080
,
启动 BurpSuite 会默认监听这个地址,所有经过该地址的请求都会被记录下来。
●浏览器插件下载
为了使用 BurpSuite 捕获浏览器所有的 HTTP 及 HTTPS 请求,我们需要通过设置浏览器的代理,指
向 BurpSuite 的代理服务监听地址127.0.0.1:8080
。
SwitchyOmega 是一个浏览器代理插件,它允许用户在浏览器中快速设置和切换代理。它允许用户自
定义代理设置,以控制浏览器的网络流量。
ㅇEdge浏览器代理插件:ProxySwitchyOmega3(ZeroOmega)-Microsoft EdgeAddons
ㅇChrome浏览器代理插件(需要科学上网):ZeroOmega
ZeroOmega设置
1.以Edge浏览器为例,首先按照如下让其显示
点击“选项“”
点击新建情景模式,输入情景模式名称
情景模式名称可为:burp
选择代理服务器
并选择情景模式的类型为:代理服务器,点击创建
配置代理服务器
代理协议:HTTP
代理服务器:127.0.0.1
代理端口:8080
清空不可代理地址列表,并添加如下内容后点击“应用选项”
<-loopback>
proxy模块使用
●1.拦截选项卡:显示拦截的请求包
●2.HTTP history:HTTP历史记录,所有经过 127.0.0.1:8080
这个代理服务器的请求都会在这里显示
●3.WebSockets history:Websockets历史记录
●4.Match and replace:替换规则
●5.Proxy settings:代理设置
●6.lntercept off/on:拦截开关,off为关,on为开,为on时浏览器发出的请求会被拦截下来,off则相
反
●7.Forward:转发请求,把拦截到的数据包转发到服务器或客户端
●8.Drop:丢弃请求,会把拦截到数据包丢弃,丢弃后数据包不会到达服务器或客户端
●9.Open browser:打开bp自带的浏览器,该浏览器无需安装证书代理插件,在此浏览器中的http或
https请求都会被bp抓取
4.BurpSuite资料
● Burp Suite文档: https://portswigger.net/burp/documentation/desktop
● 拦截HTTP流量:https://portswigger.net/burp/documentation/desktop/getting-started/intercepting-http-traffic
二、图解HTTP
1.HTTP基础知识
HTTP 是超文本传输协议,也就是Hyper Text Transfer Protocol。
是一种用于分布式、协作式和超媒体信息系统的应用层协议。是一个基于请求与响应,无状态的,应用
层的协议,常基于 TCP/IP
协议传输数据,互联网上应用最为广泛的一种网络协议,所有的互联网文
件都必须遵守这个标准。
HTTP的名字「超文本协议传输」,它可以拆成三个部分:
● 超文本
● 传输
● 协议
- 协议
HTTP 是一个用在计算机世界里的协议。它使用计算机能够理解的语言确立了一种计算机之间交流通信的规范(两个以上的参与者),以及相关的各种控制和错误处理方式(行为约定和规范)。
- 传输
就是把一堆东西从A点搬到B点,或者从B点搬到A点。
HTTP协议是一个双向协议。
HTTP是一个在计算机世界里专门用来在两点之间传输数据的约定和规范。
我们在上网冲浪时,浏览器是请求方A,百度网站就是应答方B。双方约定用HTTP协议来通信,于
是浏览器把请求数据发送给网站,网站再把一些数据返回给浏览器,最后由浏览器渲染在屏幕,就可以
看到图片、视频了。
3. 超文本
HTTP 传输的内容是「超文本」。
「文本」,在互联网早期的时候只是简单的字符文字,但现在「文本」的涵义已经可以扩展为图片、视频、压缩包等,在 HTTP 眼里这些都算做「文本」。
「超文本」,它就是超越了普通文本的文本,它是文字、图片、视频等的混合体最关键有超链接,能从一个超文本跳转到另外一个超文本。
HTML 就是最常见的超文本了,它本身只是纯文字文件,但内部用很多标签定义了图片、视频等的链接,在经过浏览器的解释,呈现给我们的就是一个文字、有画面的网页了。
总结:
HTTP是一个在计算机世界里专门在「两点」之间「传输」文字、图片、音频、视频等「超文本」数据
的「约定和规范」。
统一资源定位符(URL)
URL(统一资源定位符):我们常说的网址,包含了用于查找资源的足够的信息,而一个完整的URL包
含下面几部分:
URL 遵守一种标准的语法,它由协议、主机名、域名、端口、路径、以及文件名这六个部分构成,其
中端口可以省略。
具体语法规则如下:
protocol://[[user[:password]@]host[:port]][/path][?query][#fragment]
[协议名]://[用户名]:[密码]@[主机名]:[端口]/[路径]?[查询参数]#[片段ID]
protocol:指定使用的传输协议,最常用的是通过 HTTP/HTTPS 协议来定位网络资源。mailto: 用户打开邮箱的客户端ftp: 用来做文件的转换file: 用来获取文件
user:password 需要认证后才能访问时的账号密码。
host:表示合法的因特网主机域名或者IP地址。
port:用于表示在传输层上交换信息的进程端口号,标明了获取服务器资源的入口,http协议默认端口号为80,不同的协议默认端口号不同。
path:指定请求服务器上资源的路径。
?query:可选,用于给动态网页传递参数,可以有多个参数,用"&"符号隔开,每个参数的键值之间用"="隔开。
#fragment:信息片断字符串,用于指定网络资源中的片断。例如一个网页中有多个名词解释,可使用fragment直接定位到某一名词解释。
例如:
https://en.wikipedia.org:443/wiki/Hypertext_Transfer_Protocol?id=123#HTTP/1.1_response_messages
统一资源标志符(URI)
URl:Universal Resource Identifier
统一资源标志符,用来标识抽象或物理资源的一个紧凑字符
串。
HTTP是基于客户端/服务端(C/S)的架构模型,通过一个可靠的链接来交换信息,是一个无状态的请
求/响应协议。
HTTP使用统一资源标识符(URI)来传输数据和建立连接。
URI和URL的区别:URL是URI的一个子集
URN:Universal Resource Name
统一资源名称,通过特定命名空间中的唯一名称或ID来标识资
源。
URI可被视为定位符(URL),名称(URN)或两者兼备。统一资源名(URN)如同一个人的名称,而
统一资源定位符(URL)代表一个人的住址。换言之,URN定义某事物的身份,而URL提供查找该事物
的方法。
2.HTTP客户端请求消息
HTTP请求报文:Web客户端向服务器发送的请求
HTTP请求由四个部分组成:
●请求行
●请求头部字段
●空行
●请求正文
请求行
Method Request-URI HTTP-Version CRLFMethod:表示请求方法;
Request-URI:是一个统一资源标识符;
HTTP-Version:表示请求的HTTP协议版本;
CRLF:表示回车和换行
除了作为结尾的CRLF外,不允许出现单独的CR或LF字符
●请求方法
请求方法 | 描述 |
---|---|
GET | 请求获取Request-URI所标识的资源 |
POST | 在Request-URI所标识的资源后附加新的数据 |
HEAD | 请求获取由Request-URI所标识的资源的响应消息报头 |
PUT | 请求服务器存储一个资源,并用Request-URI作为其标识 |
DELETE | 请求服务器删除Request-URI所标识的资源 |
TRACE | 请求服务器回送收到的请求信息,主要用于测试或诊断 |
OPTIONS | 请求查询服务器的性能,或者查询与资源相关的选项和需求 |
CONNECT | 保留将来使用,HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器 |
PATCH | 用于将局部修改应用到资源。 |
●HTTP1.0
定义了三种请求方法:GET
、POST
、HEAD
方法。
●HTTP1.1
新增了六种请求方法:OPTIONS
、PUT
、PATCH
、DELETE
、TRACE
、CONNECT
方法。
请求头部字段
http_header:https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers
content_type:http://tools.jb51.net/table/http_content_type
请求头部字段:(Request Header Fields)
Header:Header_Value CRLF
允许客户端传递关于自身的信息和希望的响应形式。
在HTTP/1.1
协议中,所有的请求头,除Host
外,都是可选的。
Header头部 | 解释 |
---|---|
Host | 指定请求的服务器的域名和端口号 |
Content-Length | 请求的内容长度 |
Accept | 指定客户端能够接收的内容类型 |
X-Requested-With | Ajax异步请求 |
User-Agent | 包含发出请求的用户信息 |
Content-Type | 请求的与实体对应的MIME信息 |
Origin | 指明当前请求来自于哪个站点 |
Referer | 先前网页的地址,当前请求网页紧随其后 |
Accept-Encoding | 指定浏览器可支持的web服务器返回内容压缩编码类型。 |
Accept-Language | 浏览器可接受的语言 |
Cookie | HTTP请求发送时,会把保存在该请求域下的所有cookie值一起发送给web服务器。 |
Connection | 表示是否需要持久连接 |
●Host
客户端发送请求时,用来指定服务器的域名。
Host: www.A.com
有了Host字段,就可以将请求发往「同一台」服务器上的不同网站。
●Content-Length
Content-Length字段指明发送给接收方的消息主体的大小。
Content-Length: 1000
如上面则是告诉接收方(不管是客户端还是服务端),本次发送的数据长度是1000个字节。
●Content-Type
Content-Type字段用于指定资源的媒体类型(也称为MIME类型)。这个字段告诉接收方–无论是
浏览器、服务器还是任何处理HTTP请求和响应的中间件一-正在传输的数据的类型。
Content-Type: text/html; charset=utf-8
●User-Agent
User-Agent用于在HTTP请求中向服务器提供发起请求的客户端(通常是浏览器)的信息。这个字段
可以让服务器知道请求是由哪种类型的浏览器、浏览器版本、操作系统以及其版本等信息发起的。
User-Agent字段的内容通常由客户端的浏览器自动生成,但也可以被开发者或用户自定义修改。
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 Edg/131.0.0.0
●Cookie
它包含了客户端存储的Cookie值,这些值会在客户端向服务器发起请求时自动附加到请求中。这个
字段使得服务器能够识别不同的用户会话和存储的用户偏好。
Cookie: User=admin
●Referer
Referer字段用于指示一个请求是从哪个页面发起的。这个字段通常由浏览器设置,当用户点击链接
或提交表单时,浏览器会将当前页面的URL作为Referer字段的值发送给目标服务器。
Referer: https://www.baidu.com/
●空行
表示请求头结束,请求正文(请求体)开始
●请求正文
GET方法:提交数据时,数据参数会作为URL的一部分,放在文件路径后面发送给服务器,被称为查询
字符串
http://www.hetianlab.com?username=12345%40qq.com&password=2f7402f......a592b&validateCode=&rtnJson=true
POST方法:发送的数据在请求体中
username=12345%40qq.com&password=2f7402f......a592b&validateCode=&rtnJson=true
3.HTTP服务端响应消息
HTTP响应报文:在接收和解释请求消息后,服务器返回一个HTTP响应消息。
HTTP响应也由四个部分组成,分别是:
●状态行
●响应头部字段
●空行
●响应正文
状态行
HTTP-Version Status-Code Reason-Phrase CRLFHTTP-Version:表示服务器HTTP协议的版本;
Status-Code:表示服务器发回的响应状态代码;
Reason-Phrase:表示状态代码的文本描述。
五大类HTTP状态码
●1xx
1xx
类状态码属于提示信息,是协议处理中的一种中间状态,实际用到的比较少。
●2xx
2xx
类状态码表示服务器成功处理了客户端的请求,也是我们最愿意看到的状态。
「200 OK」 是最常见的成功状态码,表示一切正常。如果是非 HEAD 请求,服务器返回的响应头都会有 body 数据。
「204 No Content」 也是常见的成功状态码,与 200 OK 基本相同,但响应头没有 body 数据。
「206 Partial Content」 是应用于 HTTP 分块下载或断电续传,表示响应返回的 body 数据并不是资源的全部,而是其中的一部分,也是服务器处理成功的状态。
●3xx
3xx
类状态码表示客户端请求的资源发送了变动,需要客户端用新的 URL 重新发送请求获取资源,也就是重定向。
「301 Moved Permanently」 表示永久重定向,说明请求的资源已经不存在了,需改用新的 URL 再次访问。
「302 Moved Permanently」 表示临时重定向,说明请求的资源还在,但暂时需要用另一个 URL 来访问。
301 和 302 都会在响应头里使用字段 Location,指明后续要跳转的 URL,浏览器会自动重定向新的 URL。
「304 Not Modified」 不具有跳转的含义,表示资源未修改,重定向已存在的缓冲文件,也称缓存重定向,用于缓存控制。
●4xx
4xx
类状态码表示客户端发送的报文有误,服务器无法处理,也就是错误码的含义。
「400 Bad Request」 表示客户端请求的报文有错误,但只是个笼统的错误。
「403 Forbidden」 表示服务器禁止访问资源,并不是客户端的请求出错。
「404 Not Found」 表示请求的资源在服务器上不存在或未找到,所以无法提供给客户端。
●5xx
5xx
类状态码表示客户端请求报文正确,但是服务器处理时内部发生了错误,属于服务器端的错误码。
「500 Internal Server Error」 与 400 类型,是个笼统通用的错误码,服务器发生了什么错误,我们并不知道。
「501 Not Implemented」 表示客户端请求的功能还不支持,类似“即将开业,敬请期待”的意思。
「502 Bad Gateway」 通常是服务器作为网关或代理时返回的错误码,表示服务器自身工作正常,访问后端服务器发生了错误。
「503 Service Unavailable」 表示服务器当前很忙,暂时无法响应服务器,类似“网络服务正忙,请稍后重试”的意思。
响应头部字段
响应头部字段(Response Header Fields):
响应报头允许服务器传递不能放在状态行中的附加响应信息,以及关于服务器的信息和对Request-
URI所标识的资源进行下一步访问的信息。
Header头部 | 解释 |
---|---|
Server | web服务器软件名称 |
Data | 原始服务器消息发出的时间 |
Content-Type | 返回内容的MIME类型 |
Set-Cookie | 设置Http Cookie |
Content-Length | 响应体的长度 |
ETag | 请求变量的实体标签的当前值 |
refresh | 应用于重定向或一个新的资源被创造 |
WWW-Authenticate | 表明客户端请求实体应该使用的授权方案 |
Allow | 对某网络资源的有效的请求行为,不允许则返回405 |
Content-Type | 返回内容的MIME类型 |
Location | 用来重定向接收方到非请求URL的位置来完成请求或标识新的资源 |
空行
表示响应头结束,响应正文(响应体)开始
响应正文
服务器返回的资源内容
{"result":"success","message":null}
4.HTTP部分请求方法理解
Get
Get 方法的含义是请求从服务器获取资源,这个资源可以是静态的文本、页面、图片视频等。
POST
POST:向Request-URI所标识的资源提交数据,数据就放在请求正文中用于向指定资源发送数据,指定的资源会对数据进行处理,然后将处理结果返回给客户端,一般用于表
单提交、文件上传
5.HTTPS与HTTP
HTTP 与 HTTPS 的区别
1.HTTP 是超文本传输协议,信息是明文传输,存在安全风险的问题。HTTPS 则解决 HTTP 不安全的缺陷,在 TCP 和 HTTP 网络层之间加入了 SSL/TLS 安全协议,使得报文能够加密传输。
2.HTTP 连接建立相对简单, TCP 三次握手之后便可进行 HTTP 的报文传输。而 HTTPS 在 TCP 三次握手之后,还需进行 SSL/TLS 的握手过程,才可进入加密报文传输。
3.HTTP 的端口号是 80,HTTPS 的端口号是 443。
4.HTTPS 协议需要向 CA(证书权威机构)申请数字证书,来保证服务器的身份是可信的。
HTTPS 解决的问题
HTTP 由于是明文传输,所以安全上存在以下三个风险:
●窃听风险,比如通信链路上可以获取通信内容,用户号容易没。
●篡改风险,比如强制入垃圾广告,视觉污染,用户眼容易瞎。
●冒充风险,比如冒充淘宝网站,用户钱容易没。
HTTPS在HTTP
与TCP
层之间加入了SSL/TLS
协议。
可以很好的解决了上述的风险:
●信息加密:交互信息无法被窃取,但你的号会因为「自身忘记」账号而没。
●校验机制:无法篡改通信内容,篡改了就不能正常显示,但百度「竞价排名」依然可以搜索垃圾广告。
●身份证书:证明淘宝是真的淘宝网,但你的钱还是会因为「剁手」而没。
总结
通过本文的探索,我们完成了两个核心目标:
BurpSuite 的实战部署:从破解安装、证书配置到代理监听,一步步搭建了渗透测试的基础环境。借助 BurpSuite 的拦截功能,读者可以直观地观察 HTTP/HTTPS 流量,分析请求与响应的细节,甚至修改数据包以模拟攻击场景。
HTTP 协议的深度解析:从 URL/URI 的语法规则,到请求方法(GET/POST)、头部字段(如 Cookie、User-Agent)的作用,再到状态码的分类逻辑(如 404 与 500 的区别),我们系统性地梳理了 HTTP 的核心机制。而 HTTPS 的加密原理与 HTTP 的明文传输风险对比,则进一步揭示了安全通信的重要性。
如果你觉得这篇文章对你有帮助,欢迎点赞,你的支持是我分享更多免费优质内容的动力!
相关文章:
BurpSuite抓包与HTTP基础
文章目录 前言一、BurpSuite1.BurpSuite简介2.BurpSuite安装教程(1)BurpSuite安装与激活(2)安装 https 证书 3.BurpSuite使用4.BurpSuite资料 二、图解HTTP1.HTTP基础知识2.HTTP客户端请求消息3.HTTP服务端响应消息4.HTTP部分请求方法理解5.HTTPS与HTTP 总结 前言 在网络安全和…...
SQLAlchemy 2.0的简单使用教程
SQLAlchemy 2.0相比1.x进行了很大的更新,目前网上的教程不多,以下以链接mysql为例介绍一下基本的使用方法 环境及依赖 Python:3.8 mysql:8.3 Flask:3.0.3 SQLAlchemy:2.0.37 PyMySQL:1.1.1使用步骤 1、创建引擎,链接到mysql engine crea…...
Android原生开发问题汇总
Fragment顶部出现一个白条怎么办?父类布局搞事情。 layer-list被拉伸问题 Android之 ImageView android:src和tools:src的区别是什么? Android运行时权限的总结,以及EasyPermissions框架的使用 Android Studio添加EasyPemissions Android中module怎…...
springboot中使用注解实现分布式锁
下面将详细介绍如何在 Spring Boot 里借助注解实现分布式锁,以login_lock:作为锁的 key 前缀,使用请求参数里的phone值作为 key,等待时间设为 0 秒,锁的持续时间为 10 秒。我们会使用 Redis 来实现分布式锁,同时借助 S…...
Android TabLayout 使用进阶(含源码)
android:layout_height“match_parent” android:orientation“vertical” tools:context“.mode2.ClassificationActivity”> <com.google.android.material.tabs.TabLayout android:id“id/tab_layout” android:layout_width“match_parent” android:layout_he…...
数据库系统概论的第六版与第五版的区别,附pdf
我用夸克网盘分享了「数据库系统概论第五六版资源」,点击链接即可保存。 链接:https://pan.quark.cn/s/21a278378dee 第6版教材修订的主要内容 为了保持科学性、先进性和实用性,在第5版教材基础上对全书内容进行了修改、更新和充实。 在科…...
管理etcd的存储空间配额
如何管理etcd的存储空间配额 - 防止集群存储耗尽指南 本文基于etcd v3.4官方文档编写 为什么需要空间配额? 在分布式系统中,etcd作为可靠的键值存储,很容易成为系统瓶颈。当遇到以下情况时: 应用程序频繁写入大量数据未及时清理…...
深入浅出 NRM:加速你的 npm 包管理之旅
文章目录 前言一、NRM 是什么?二、为什么需要 NRM?三、NRM 的优势四、NRM 的安装与使用4.1 安装 NRM4.2 查看可用的 npm 源4.3 切换 npm 源4.4 测试 npm 源速度4.5 添加自定义 npm 源4.6 删除 npm 源 五、NRM 的进阶使用六、总结 前言 作为一名 JavaScr…...
ESP32开发学习记录---》GPIO
she 2025年2月5日,新年后决定开始充电提升自己,故作此记,以前没有使用过IDF开发ESP32因此新年学习一下ESP32。 ESPIDF开发环境配置网上已经有很多的资料了,我就不再赘述,我这里只是对我的学习经历的一些记录。 首先学习一个…...
stm32点灯 GPIO的输出模式
目录 1.选择RCC时钟 2.SYS 选择调试模式 SW 3.GPIO 配置 4.时钟树配置( 默认不变)HSI 高速内部时钟8Mhz 5.项目配置 6.代码 延时1s循环LED亮灭 1.选择RCC时钟 2.SYS 选择调试模式 SW 3.GPIO 配置 4.时钟树配置( 默认不变)…...
[paddle] 矩阵的分解
特征值 设 A A A 是一个 n n n \times n nn 的方阵, λ \lambda λ 是一个标量, v \mathbf{v} v 是一个非零向量。如果满足以下方程: A v λ v A\mathbf{v} \lambda\mathbf{v} Avλv 则称 λ \lambda λ 为矩阵 A A A 的一个 特征值…...
【基于SprintBoot+Mybatis+Mysql】电脑商城项目之修改密码和个人资料
🧸安清h:个人主页 🎥个人专栏:【Spring篇】【计算机网络】【Mybatis篇】 🚦作者简介:一个有趣爱睡觉的intp,期待和更多人分享自己所学知识的真诚大学生。 目录 🎃1.修改密码 -持久…...
【深度学习】DataLoader自定义数据集制作
第一步 导包 import os import matplotlib.pyplot as plt %matplotlib inline import numpy as np import torch from torch import nn import torch.optim as optim import torchvision from torchvision import transforms,models,datasets import imageio import time impo…...
【Elasticsearch】Geo-distance聚合
geo_distance聚合的形状是圆形。它基于一个中心点(origin)和一系列距离范围来计算每个文档与中心点的距离,并将文档分配到相应的距离范围内。这种聚合方式本质上是以中心点为圆心,以指定的距离范围为半径的圆形区域来划分数据。 为…...
【R语言】apply函数族
在R语言中使用循环操作时是使用自身来实现的,效率较低。所以R语言有一个符合其统计语言出身的特点:向量化。R语言中的向量化运用了底层的C语言,而C语言的效率比高层的R语言的效率高。 apply函数族主要是为了解决数据向量化运算的问题&#x…...
Vue - shallowRef 和 shallowReactive
一、shallowRef 和 shallowReactive (一)shallowRef 在 Vue 3 中,shallowRef 是一个用于创建响应式引用的 API,它与 ref 相似,但它只会使引用的基本类型(如对象、数组等)表现为响应式…...
双目标定与生成深度图
基于C#联合Halcon实现双目标定整体效果 一,标定 1,标定前准备工作 (获取描述文件与获取相机参数) 针对标准标定板可以直接调用官方提供描述文件,也可以自己生成描述文件后用PS文件打印 2,相机标定 &…...
实名制-网络平台集成身份证实名认证接口/身份证查询-PHP
在当今数字化快速发展的时代,线上平台的安全性和用户体验成为了衡量其成功与否的关键因素。其中,身份证实名认证接口的集成显得尤为重要,它不仅为用户提供了更加安全、可靠的网络环境,同时也增强了平台的信任度和合规性。 对于任…...
全面解析机器学习优化算法中的进化策略
全面解析机器学习优化算法中的进化策略 全面解析机器学习优化算法中的进化策略引言什么是进化策略?基本概念核心组件算法流程数学基础高斯扰动期望值更新与其他优化方法的比较梯度下降法(Gradient Descent, GD)遗传算法(Genetic Algorithm, GA)Python案例基本实现改进版:…...
go数据结构学习笔记
本博文较为完整的实现了go的链表、栈,队列,树,排序,链表包括顺序链表,双向链表,循环链表,队列是循环队列,排序包含冒牌、选择 1.链表 1.1 顺序链表 type LNode struct {data intn…...
【深度学习】DeepSeek模型介绍与部署
原文链接:DeepSeek-V3 1. 介绍 DeepSeek-V3,一个强大的混合专家 (MoE) 语言模型,拥有 671B 总参数,其中每个 token 激活 37B 参数。 为了实现高效推理和成本效益的训练,DeepSeek-V3 采用了多头潜在注意力 (MLA) 和 De…...
使用SpringBoot发送邮件|解决了部署时连接超时的bug|网易163|2025
使用SpringBoot发送邮件 文章目录 使用SpringBoot发送邮件1. 获取网易邮箱服务的授权码2. 初始化项目maven部分web部分 3. 发送邮件填写配置EmailSendService [已解决]部署时连接超时附:Docker脚本Dockerfile创建镜像启动容器 1. 获取网易邮箱服务的授权码 温馨提示…...
【工具篇】深度揭秘 Midjourney:开启 AI 图像创作新时代
家人们,今天咱必须好好唠唠 Midjourney 这个在 AI 图像生成领域超火的工具!现在 AI 技术发展得那叫一个快,各种工具层出不穷,Midjourney 绝对是其中的明星产品。不管你是专业的设计师、插画师,还是像咱这种对艺术创作有点小兴趣的小白,Midjourney 都能给你带来超多惊喜,…...
构成正方形的数量:算法深度剖析与实践
目录 引言算法核心概念 定义正方形的构成条件数据结构与输入形式算法数学原理 几何关系的数学表达坐标运算与判定逻辑Python 实现 代码展示代码解析Python 实现的优势与局限C 语言实现 代码展示代码解析C 语言实现的性能特点性能分析与优化 性能分析 时间复杂度空间复杂度优化思…...
Spring设计模式(9种)(详细篇)
总体分为三大类: 创建型模式:工厂方法模式、单例模式。 结构型模式:适配器模式、代理模式、装饰器模式。 行为型模式:观察者模式、策略模式、模板方法模式。 一、简单工厂模式(Simple Factory) 概述&…...
使用Express.js和SQLite3构建简单TODO应用的后端API
使用Express.js和SQLite3构建简单TODO应用的后端API 引言环境准备代码解析1. 导入必要的模块2. 创建Express应用实例3. 设置数据库连接4. 初始化数据库表5. 配置中间件6. 定义数据接口7. 定义路由7.1 获取所有TODO项7.2 创建TODO项7.3 更新TODO项7.4 删除TODO项 8. 启动服务器 …...
2025年2月6日(anaconda cuda 学习 基本命令)
查看电脑的显卡型号是否支持CUDA的安装 https://developer.nvidia.com/zh-cn/cuda-gpus 查看可以安装的CUDA版本 https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html CUDA安装地址 https://developer.nvidia.com/cuda-toolkit-archive Anaconda下载地址 htt…...
大数据方向知识图谱及发展前景分析
目录 一、知识体系 二、大数据领域前景分析: 1. 市场需求 2. 技术趋势 3. 职业发展路径 4. 学习路线建议 5. 推荐认证体系 一、知识体系 大数据知识体系 ├── 基础理论 │ ├── 数学基础:概率统计、线性代数、离散数学 │ ├── 计算机基…...
Docker深度解析:安装各大环境
安装 Nginx 实现负载均衡: 挂载 nginx html 文件: 创建过载目录: mkdir -p /data/nginx/{conf,conf.d,html,logs} 注意:在挂载前需要对 conf/nginx.conf 文件进行编写 worker_processes 1;events {worker_connections 1024; …...
Verilog语言学习总结
Verilog语言学习! 目录 文章目录 前言 一、Verilog语言是什么? 1.1 Verilog简介 1.2 Verilog 和 C 的区别 1.3 Verilog 学习 二、Verilog基础知识 2.1 Verilog 的逻辑值 2.2 数字进制 2.3 Verilog标识符 2.4 Verilog 的数据类型 2.4.1 寄存器类型 2.4.2 …...
K8S Deployment 实现 蓝绿 发布
一、何为蓝绿发布 蓝绿发布(Blue - Green Deployment)是一种软件部署策略,旨在最大程度减少应用程序停机时间,确保新老版本系统平稳过渡。以下为详细介绍: 1.1、基本概念 存在两个完全相同的生产环境,通…...
2025新鲜出炉--前端面试题(一)
文章目录 1. vue3有用过吗, 和vue2之间有哪些区别2. vue-router有几种路由, 分别怎么实现3. webpack和rollup这两个什么区别, 你会怎么选择4. 你能简单介绍一下webpack项目的构建流程吗5. webpack平时有手写过loader和plugin吗6. webpack这块你平时做过哪些优化吗?7…...
【ArcGIS Pro 简介1】
ArcGIS Pro 是由 Esri (Environmental Systems Research Institute)公司开发的下一代桌面地理信息系统(GIS)软件,是传统 ArcMap 的现代化替代产品。它结合了强大的空间分析能力、直观的用户界面和先进的三维可视化技术…...
CentOS 6.5编译Rsyslog 8.1903.0
个人博客地址:CentOS 6.5编译Rsyslog 8.1903.0 | 一张假钞的真实世界 个人很早之前的博文,迁移至此作为历史记录。 源码下载参考我的另外一片博文:CentOS 7.3 编译 Rsyslog 8.1903.0。 本篇博文从创建构建环境开始填坑/(ㄒoㄒ)/~~。通过上…...
SQLAlchemy-2.0中模型定义和alembic的数据库迁移工具
SQLAlchemy-2.0中模型定义和alembic的数据库迁移工具 一、SQLAIchemy的介绍二、数据库引擎1、支持的数据库1.1、sqlite数据库1.2、MySQL数据库1.3、数据库引擎的参数 三、定义模型类1、定义模型2、engine负责数据库迁移 四、alembic数据库迁移⼯具1、安装alembic2、初始化alemb…...
两种文件类型(pdf/图片)打印A4半张纸方法
环境:windows10、Adobe Reader XI v11.0.23 Pdf: 1.把内容由横排变为纵排: 2.点击打印按钮: 3.选择打印页范围和多页: 4.内容打印在纸张上部 图片: 1.右键图片点击打印: 2.选择打印类型: 3.打印配置&am…...
【React】合成事件语法
React 合成事件是 React 为了处理浏览器之间的事件差异而提供的一种跨浏览器的事件系统。它封装了原生的 DOM 事件,提供了一致的事件处理机制。 合成事件与原生事件的区别: 合成事件是 React 自己实现的,封装了原生事件。合成事件依然可以通…...
深入解析:如何利用 Python 爬虫获取商品 SKU 详细信息
在电商领域,SKU(Stock Keeping Unit,库存单位)详细信息是电商运营的核心数据之一。它不仅包含了商品的规格、价格、库存等关键信息,还直接影响到库存管理、价格策略和市场分析等多个方面。本文将详细介绍如何利用 Pyth…...
Unity 加载OSGB(webgl直接加载,无需转换格式!)
Unity webgl加载倾斜摄影数据 前言效果图后续不足 前言 Unity加载倾斜摄影数据,有很多的插件方便好用,但是发布到网页端均失败,因为webgl 的限制,IO读取失效。 前不久发现一个开源项目: UnityOSGB-main 通过两种方式在 Unity 中…...
Maven架构项目管理工具
1.1什么是Maven 翻译为“专家”,“内行”Maven是跨平台的项目管理工具。主要服务于基于Java平台的项目构建,依赖管理和项目信息管理。什么是理想的项目构建? 高度自动化,跨平台,可重用的组件,标准化的 什么…...
【漫画机器学习】083.安斯库姆四重奏(Anscombe‘s Quartet)
安斯库姆四重奏(Anscombes Quartet) 1. 什么是安斯库姆四重奏? 安斯库姆四重奏(Anscombes Quartet)是一组由统计学家弗朗西斯安斯库姆(Francis Anscombe) 在 1973 年 提出的 四组数据集。它们…...
【梦想终会实现】Linux驱动学习5
加油加油坚持住! 1、 Linux驱动模型:驱动模型即将各模型中共有的部分抽象成C结构体。Linux2.4版本前无驱动模型的概念,每个驱动写的代码因人而异,随后为规范书写方式,发明了驱动模型,即提取公共信息组成一…...
QT修仙之路1-1--遇见QT
文章目录 遇见QT二、QT概述2.1 定义与功能2.2 跨平台特性2.3 优点汇总 三、软件安装四、QT工具介绍(重要)4.1 Assistant4.2 Designer4.3 uic.exe4.4 moc.exe4.5 rcc.exe4.6 qmake4.7 QTcreater 五、QT工程项目解析(作业)5.1 配置文件(.pro)5.2 头文件&am…...
【实战篇】Android安卓本地离线实现视频检测人脸
实战篇Android安卓本地离线实现视频检测人脸 引言项目概述核心代码类介绍人脸检测流程项目地址总结 引言 在当今数字化时代,人脸识别技术已经广泛应用于各个领域,如安防监控、门禁系统、移动支付等。本文将以第三视角详细讲解如何基于bifan-wei-Face/De…...
【图像处理】- 基本图像操作
基本图像操作详解 基本图像操作是图像处理的基础,涵盖了对图像进行简单但重要的变换。以下是几种常见的基本图像操作及其详细说明: 1. 裁剪 (Cropping) 描述:从原始图像中提取一个矩形区域。 实现方法: 使用图像的坐标系指定…...
代码随想录算法训练营| 二叉树总结
代码随想录 二叉树的理论基础:二叉树种类、存储方式、遍历方式、定义方式 二叉树遍历:深度优先和广度优先 二叉树属性:对称、深度、节点、平衡、路径、回溯 修改与构造:反转、构造、合并 涉及到二叉树的构造,无论普…...
Sentinel的安装和做限流的使用
一、安装 Release v1.8.3 alibaba/Sentinel GitHubA powerful flow control component enabling reliability, resilience and monitoring for microservices. (面向云原生微服务的高可用流控防护组件) - Release v1.8.3 alibaba/Sentinelhttps://github.com/alibaba/Senti…...
八、Spring Boot 日志详解
目录 一、日志的用途 二、日志使用 2.1 打印日志 2.1.1 在程序中获取日志对象 2.1.2 使用日志对象打印日志 2.2、日志框架介绍 2.2.1 门面模式(外观模式) 2.2.2 门面模式的实现 2.2.3 SLF4J 框架介绍 2.3 日志格式的说明 2.4 日志级别 2.4.1 日志级别的分类 2.4.2…...
vue2:如何动态控制el-form-item之间的行间距
需求 某页面有查看和编辑两种状态: 编辑: 查看: 可以看到,查看时,行间距太大导致页面不紧凑,所以希望缩小查看是的行间距。 行间距设置 行间距通常是通过 CSS 的 margin 或 padding 属性来控制的。在 Element UI 的样式表中,.el-form-item 的下边距(margin-bottom)…...
智能门铃市场:开启智能家居新时代
在科技日新月异的今天,智能家居产品正以前所未有的速度融入我们的生活,而智能门铃作为其中的重要一员,不仅为我们的家居生活带来了极大的便利,更在安全方面提供了坚实的保障。它就像一位忠诚的守门人,无论白天黑夜&…...