HTTP---基础知识
天天开心!!!
文章目录
- 一、HTTP基本概念
- 1. 什么是HTTP,又有什么用?
- 2. 一次HTTP请求的过程
- 3.HTTP的协议头
- 4.POST和GET的区别
- 5. HTTP状态码
- 6.HTTP的优缺点
- 二、HTTP的版本演进
- 1.各个版本的应用场景
- 2、注意要点
- 三、HTTP与HTTPS
- 1.HTTTPS的工作原理
一、HTTP基本概念
1. 什么是HTTP,又有什么用?
HTTP(Hyper Text Transfer Protocol,超文本传输协议),是用于客户端和服务器之间数据传输的应用层协议,主要用在Web浏览器和服务器之间的通信。HTTP最初是为传输HTML文档设计的,但现在支持多种类型的数据,如图片、视频、文本等。
- 举个例子
- Web浏览:浏览器使用HTTP从服务器获取网页和资源,如图片和CSS文件
- 数据传输:开发者使用HTTP在客户端和服务器之间发送和接收数据,特别是在Web API和RESTT服务中。每当你通过浏览器访问一个网页的时候。你往往会输入:http://www.baidu.com…
无状态性:每个HTTP请求都是独立的,不记录之前的任何请求,请求一次,就返回一次(与之前的单播类似)。这简化了协议的实现,但可能会需要使用其他格式(如Cookies或Sessions)来保存状态
2. 一次HTTP请求的过程
底层过程:
1. 输入域名 -> 浏览器跳转 -> 浏览器DNS缓存 -> 本地DNS缓存 -> 路由器DNS缓存 -> DNS服务器 - 客户端向服务端发起查询:递归查询 - 服务端向服务端发起查询:迭代查询 2. 浏览器向服务器发起TCP连接(三次握手) - 客户端:请求包连接,`SYN=1 seq=x` - 服务端:响应客户端,`SYN=1 ACK=1 seq=y ack=x+1` - 客户端:建立连接,`ACK=1 seq=x+1 ack=y+1` 3. 客户端发起http请求: 1)请求方法:`GET/POST/HEAD/...` 2)请求的Host主机:从URL中提取 3)请求资源:如`/xxx.html` `/statics/image/xxx.jpg` 4)请求端口:默认`http是80`,`https是443` 5)请求携带参数:请求首部信息 6)请求最后空行 4. 服务端响应内容: 1)使用WEB服务软件 2)响应请求文件类型 3)文件是否压缩 4)主机是否长连接 5. 客户端向服务端发起TCP断开(四次挥手) - 客户端:断开请求,`FIN=1 seq=x`服务端 --> 响应断开 `FIN=1 ACK=1 ack=x+1 seq=y` --> 客户端 服务端 --> 断开连接 `FIN=1 ACK=1 ack=x+1 seq=z` --> 客户端 客户端 --> 确认断开 `FIN=1 ACK=1 ack=z+1 seq=x+1` --> 服务端
3.HTTP的协议头
HTTP的协议头分为请求头和响应头
- HTTP的请求头(对应客户端)
- HTTP请求头包含三部分:请求行(构建请求阶段)、请求头、请求体。
需要注意的点
- Host:指定服务器的域名和端口号(例如:Host.example.com)
- User-Agent:描述客户端应用程序的名称和版本(例如:User-Agent:Mozilla/5.0)
- Accept:指示客户端可以处理的媒体类型(例如:Accept:text/html)
- Content-Type:指示请求主体的数据类型,常见于POST和PUT请求(例如:Content-Type:application/json)
- Authorization:包含认证凭据,用于保护的资源访问(例如:Authorization:Basic)
- 响应头(对应服务器)
服务器端接收客户端的请求,将做出处理并返回相应数据,包含响应行,响应头和响应体
浏览器会根据响应数据作出不同的反应,例如不同的Content-Encoding(编码格式)对应使用不同的解码方式;Content-type(数据类型)若为文件类型返回服务器文件,若为json返回XHR;状态码为200代表请求成功,404表示路径不存在等。
需要注意:
- Content-Type:描述响应内容的媒体类型(例如:Content-Type:text/html)
- Content-length:指示响应主体的长度(以字节为单位)
- Cach-Control:指定缓存策略(例如:Cache-Control:no-cache)
- Set-Cookie:在客户端存储一个Cookie,以后可以用于会话管理
4.POST和GET的区别
5. HTTP状态码
6.HTTP的优缺点
二、HTTP的版本演进
HTTp协议从1.0发展到3.0,经历了多次改进。每个版本都有其特定的功能改进和性能优化。
目前主流使用的HTTP版本仍然是HTTP /1.1,但HTTP/2.0正在快速普及,尤其是在性能要求高的环境中,CDN(内容分发网络)服务商普遍采用HTTP/2来提升性能,而HTTP/3也正在逐步被采用,未来可能会成为新的标准,它已经得到了许多现代浏览器(如Chrome、Firefox和Edge)和部分大型互联网公司的支持(如Google和FaceBook)。
- 各版本的区别
-
关于SPDY
SPDY是Google开发的基于TCP的会话层协议,用以最小化网络延迟,提升网络速度,优化用户的网络使用体验。SPDY并不是一种用于替代HTTP的协议,而是对HTTP协议的增强
新协议的功能包括数据流多路复用、请求优先级以及HTTP报头压缩,谷歌表示引入SPDY协议后,在实验室测试中页面加载速度比原先快64%。
随后SPDY协议得到Chrome、Firefox等大型浏览器的支持,在一些大型网站和小型网站中部署,这个高效的协议引起了HTTP工作组的注意在,在此基础上制定了官方HTTP2.0标准,
之后几年SPDY和http2.0继续演进互相促进,Htt2.9让服务器、浏览器和网站开发者在新协议中获得更好的体验,很快被大众所认可。 -
关于HTTP2.0的多路复用
客户端和服务器将交互数据分解为相互独立的帧,互不影响地交错传输,最后再对端根据帧头众的流标识符把它们重新组装起来,从而实现了TCP链接的多路复用。
- 关于服务端推送
服务器推送是2.0版本新增的一个强大的功能,和一般而对一问一答的C/S交互不同,推送式交互中服务器可以对客户端的一个请求发送多个响应,除了对最初请求的响应外还向客户端推送额外的资源,无需客户端明确地请求也可以推送。
就比如我们去餐厅吃饭,服务好的快的餐厅在我们点好一份牛肉面之后,还会给你送上餐巾纸、筷子、勺子等。这样主动式的服务,节约了客人的事件并且提高了用餐体验。
在实际的C/S交互众,这种主动推送额外资源的方法很有效,因为几乎灭个网络应用都会包含多种资源,客户端需要全部逐个获取它们,此时如果让服务器提前推送这些资源,从而可以有效减少额外的延迟时间,因为服务器可以知道客户端下一步要请求什么资源。
1.各个版本的应用场景
- HTTP/1.0:简单的网页加载场景
假设,你正在访问一个包含多个图片的简单网页,比如一个文章页面,其中包含文本、多个图片和有些样式表。
- HTTP/1.0的处理方式:每个资源(HTML文档、每张图片、每个CSS文件)都需要单独建立一个TCP连接。当你加载这个网页时,浏览器必须为每个资源与服务器进行三次握手和连接,再请求资源,最后关闭连接,假如,你的这个网页上有1000个资源,那么它就会建立1000个TCP连接,当然每个连接都需要经历三次握手、四次挥手,整个过程非常费劲
- HTTP/1.1:电商网站优化加载 假设,你正在浏览一个电商网站,页面包含几十个商品图片、JavaScript文件和样式表
- HTTP/1.1的改进:
持久连接:浏览器和服务器可以复用同一个TCP连接进行多个请求和响应,这意味着加载整个页面只需要建立一次TCP连接,极大减少了延迟
分块传输编码:如果网页内容是动态生成的,服务器可以逐块发送数据,而不必等所有内容准备好再发送,这提升了用户体验。
- HTTP/2:高流量新闻网站场景
假设,你在访问一个新闻网站,页面有大量图片、视频、广告和动态加载的内容
- HTTP/2的多路复用,所有这些资源都可以通过一个TCP连接同时传输。图片、视频、广告等内容不需要排队等待,而是可以并行加载
- 头部压缩:HTTP/2会压缩请求和响应头部,节省带宽,尤其是在使用CDN加载全球资源时效果显著
- 服务器推送:如果你在加载一个新闻页面时,服务器可以主动推送相关资源(如常用的CSS和JavaScript),即使浏览器还没有请求
- 整个页面几乎同时加载完毕,没有明显的等待,头部压缩还减少了数据流量,特别有助于移动网络用户
4.HTTP/3:实时视频应用场景
假设,你在使用一个实时视频会议应用,或者在玩一款实时在线游戏,这些应用都延迟非常敏感,且需要在网络波动时保持稳定。
- HTTP/3的优势
- 基于QUIC协议:HTTP/3使用UDP而非TCP传输数据,连接建立时间极短,即使网络有波动或数据包丢失,QUIC也能快速恢复,不会像TCP那样出现明显的卡顿
- 低延迟:HTTP/3能在一个连接上并行传输多个数据流,任何一个流的数据包丢失不会影响其他流,确保视频和音频流畅。
- 在网络不稳定的情况下,视频和音频仍然非常清晰,延迟显著降低。你不会感受到明显的卡顿,体验更流畅
2、注意要点
- HTTP/1.1的管道化问题
- 管道化的工作原理
在HTTP/1.1中,管道化允许客户端在同一个TCP连接上同时发送多个请求,而不必等待第一个请求的响应回来,然而,响应必须按顺序返回
例如:如果你发送了三个请求(请求A、B和C),服务器必须按顺序处理并发送响应(A的响应必须先到,然后是B,再是C),即使后面的请求可以更早完成 - 问题
- 推头阻塞(Head-of-Line Blocking):如果第一个请求A的响应很慢,所有后续请求(B和C)的响应都会被阻塞,必须等待A的响应完成才能处理,这大大限制了并行请求的效率
- 实现复杂性:由于队头阻塞和一些不兼容的问题,HTTP/1.1的管道化很少被实际采用,大多数浏览器甚至默认禁用这项功能。
- 多路复用的工作原理
- HTTP/2通过再同一个TCP连接上使用二进制分帧技术,将所有数据分成小的帧(frame),并为没饿过请求和响应分配唯一的流ID,这样,多个请求和响应可以同时在一个连接上传输,且帧可以交错进行,不需要按顺序
- 例如,如你发送了三个请求(A、B和C),这些请求的帧可以交错发送,且服务器可以按任意顺序发送响应帧,即使一个请求(如A)变慢了,其他请求(B和C)的响应仍然可以及时送达。
- 优势:
无对头阻塞:由于请求和响应可以交错传输,HTTP /2避免了HTTP/1.1中的队头阻塞问题,显著提升了传输效率
更高的并行性:所有请求和响应在一个TCP连接上独立传输,即使一个流变慢,也不会影响其他流。
- QUIC为什么那么快?为什么抛弃TCP?
QUIC(Quick UDP Internet Connections)是一种基于UDP的新一代传输协议,最早由Google开发,后来被HTTP/3采用。QUIC之所以比TCP快,是因为它解决了TCP在现代网络中存在的一些效率和延迟问题。
- QUIC为什么弃用TCP?
TCP自1970年诞生以来,设计上并为考虑现代网络的复杂性和需求。虽然TCP已经通过各种拓展(如快速重传、窗口缩放)来优化性能,但它仍然受到一些历史限制,例如队头阻塞和无法灵活调整的拥塞控制
QUIC基于UDP重新设计协议,可以绕过TCP的这些局限性,专注于现代网络需求
另外,现代互联网应用(如视频流、实施游戏和网页加载)对低延迟和高效率的需求越来越高,QUIC的设计更符合这些应用场景,可以在高延迟或丢包率高的环境中表现更佳。
- QUIC为什么快?
-
- 减少连接建立的延迟
TCP的连接建立:TCP使用三次握手来建立一个安全的连接,对于HTTPS连接,还需要再进行一次TLS握手,这意味着要经历多个来回,才能开始传输数据,这会导致较高的延迟,尤其是在高延迟的网络环境中(比如跨国网络访问)。
QUIC的连接建立:QUIC将加密和连接握手合并在一起,通常只需要一个往返(1-RTT)甚至零个往返(0-RTT,基于之前的会话缓存)就可以建立连接,这显著减少了初次连接时的延迟
- 减少连接建立的延迟
2. 内置加密(TLS 1.3)
QUIC在设计之初就内置了加密机制,使用了TLS 1.3来加密所有数据。相比之下,TCP需要通过一个单独的握手过程来启动TLS加密,QUIC的这种内置设计简化了加密过程并提高了安全性和连接速度。
3. 解决队头阻塞问题
TCP的队头阻塞:TCP是一个面向字节流的协议,如果某个数据包丢失,接收者必须等待该数据包被重新传输并恢复顺序,才能继续处理后面的数据包。这种重传机制会阻塞整个流的数据传输,增加延迟。
QUIC的多路复用:QUIC使用独立的流来传输数据,即使一个数据包丢失,也只会影响特定的流,不会阻塞其他流的数据传输。这种多路复用机制大幅减少了延迟,尤其在丢包率较高的网络中表现更优。
4. 更高效的丢包处理
TCP的拥塞控制:TCP的拥塞控制机制并不总能高效应对网络变化,而QUIC可以灵活的应对丢包和网络拥塞,使用高级的拥塞控制算法来优化传输性能
更快的丢包恢复:QUIC可以在传输层更快检测丢包并恢复数据,而不用等待传输层和应用层之间的多次交互。
三、HTTP与HTTPS
简单来说,https=http+ssl/tls,即加密的http
HTTP(HyperText Transfer Protocol Secure)是HTTP协议的安全版本,用于在客户端(如浏览器)和服务器之间安全地传输数据。HTTPS通过加密机制来保护用户和网站之间传输的信息,确保数据的机密性和完整性。
- HTTP:数据以明文形式传输,容易被拦截和篡改,适用于对安全性要求不高的通信
- HTTPS:数据加密传输,提供更高的安全性,特别适合保护敏感信息
1.HTTTPS的工作原理
- 握手过程:
当你在浏览器中访问一个HTTPS网站时,浏览器和服务器会进行一个加密“握手”过程。
握手的目的是交换加密密钥,并建立一个安全的加密连接,这个过程会使用SSL/TLS协议,并涉及验证服务器的数字证书。
- 加密传输
握手成功后,浏览器和服务器之间的所有数据都将通过加密通道传输,确保数据的安全性 - 使用数字证书
网站通过使用由可信任的证书颁发机构(CA)签发的数字证书来证明自己的身份。浏览器会见擦汗证书的有效性,并显示安全锁图标,提示用户这是一个安全的连接
- TLS握手过程解析
握手的目的:
- 商定双方通信所使用的TLS版本(例如TLS1.0,1.2,1.3等等)
- 确定双方所要使用的密码组合
- 客户端通过服务器的公钥和数字证书上的数字签名验证服务器的身份
- 生成会话密钥,该密钥将用于握手结束后的对称加密。
SSL/TLS握手过程
相关文章:
HTTP---基础知识
天天开心!!! 文章目录 一、HTTP基本概念1. 什么是HTTP,又有什么用?2. 一次HTTP请求的过程3.HTTP的协议头4.POST和GET的区别5. HTTP状态码6.HTTP的优缺点 二、HTTP的版本演进1.各个版本的应用场景2、注意要点 三、HTTP与…...
python基础学习三(元组及字符串的使用)
文章目录 元组什么是元组元组的创建方式为什么要将元组设计成不可变序列元组的遍历集合集合的相关操作集合操作集合的数学操作集合生成式列表,字典,元组,集合总结 字符串字符串的驻留机制判断字符串的操作方法字符串的比较操作字符串的切片操…...
c#winform,倒鸭子字幕效果,typemonkey字幕效果,抖音瀑布流字幕效果
不废话 直接上效果图 C# winform 开发抖音的瀑布流字幕。 也是typemonkey插件字幕效果 或者咱再网上常说的倒鸭子字幕效果 主要功能 1,软件可以自定义添加字幕内容 2,软件可以添加字幕显示的时间区间 3,可以自定义字幕颜色,可以随…...
1、C51单片机(STC8G2K64S4)串口实验
一、串口1接线图 1、下面是单片机外接电路图,P30,P31分别用于RXD和TXD功能引脚 2、我们来查看单片机手册 串口1需要设置的寄存器 串口1的功能脚配置选择位,看电路图选择的是P3.0,P3.1。 3、串口1:SCON控制寄存器 设置为0x50:0101 0000。&a…...
ue材质学习感想总结笔记
2025 - 3 - 27 1.1 加法 对TexCoord上的每一个像素加上一个值,如果加上0.1,0.1, 那么左上角原来0,0的位置变成了0.1,0.1 右上角就变成了1.1,1.1,那么原来0,0的位置就去到了左上角左上边,所以图像往左上偏移。 总而言…...
MFC TRACE 宏的使用说明
书籍:《Visual C 2017从入门到精通》的2.7 字符串 环境:visual studio 2022 内容:几个字符串类型->(将单字节char*转换为宽字节wchar_t *)(将宽字节wchar_t* 转换为单字节char *) 问题&am…...
latex笔记
1、基本结构 \documentclass[a4paper, 12pt]{article} %文档类型 \begin{document}\title{My First Document}\author{My Name}\date{\today}\maketitleA sentence of text. \end{document}2、带有章、节、小节的结构 \documentclass[a4paper, 12pt]{article}\begin{document…...
Unity编辑器功能及拓展(3) —[Attribute]特性
在 Unity 中,[Attribute]格式的特性是用于扩展编辑器功能、控制序列化行为和调整 Inspector 显示,进行编辑器拓展的核心工具。 一.基础编辑器拓展 1.基础序列化控制 1.[SerializeField] 强制显示私有变量到Inspector 2.[HideInInspector] 隐藏该字段在Inspect…...
Rust基础语法
以下是 Rust 语言基础语法的核心要点,结合与 JavaScript 的对比,帮助前端开发者快速掌握核心概念: 一、变量与常量 1. 变量声明 Rust:变量默认不可变,需用 mut 显式声明可变性。let x 5; // 不可变变量 le…...
<tauri><rust><GUI>基于rust和tauri,实现一个大寰电爪PGHL(串口设备)定制化控制程序
前言 本文是基于rust和tauri,由于tauri是前、后端结合的GUI框架,既可以直接生成包含前端代码的文件,也可以在已有的前端项目上集成tauri框架,将前端页面化为桌面GUI。 环境配置 系统:windows 10平台:visual studio code语言:rust、javascript库:tauri2.0概述 本文是…...
Sentinel 相关知识点
Sentinel 实现原理? Sentinel 是面向分布式服务架构的流量控制组件,主要以流量为切入点,从限流、流量整形、熔断降级、系统负载保护等多个维度来帮助开发者保障微服务的稳定性。以下是 Sentinel 的实现原理: 核心概念 资源&…...
DFS飞机降落
问题描述 NN 架飞机准备降落到某个只有一条跑道的机场。其中第 ii 架飞机在 TiTi 时刻到达机场上空,到达时它的剩余油料还可以继续盘旋 DiDi 个单位时间,即它最早可以于 TiTi 时刻开始降落,最晚可以于 TiDiTiDi 时刻开始降落。降落…...
SpringCould微服务架构之Docker(5)
Docker的基本操作: 镜像相关命令: 1.镜像名称一般分两部分组成:[repository]:[tag]。 2. 在没有指定tag时,默认是latest,代表着最新版本的镜像。 镜像命令的案例: 镜像操作常用的命令: dock…...
音乐webpack(通杀webpack-1)
本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 本文章未经许可…...
数据结构与算法——顺序表之手撕OJ题
文章目录 一、前言二、拿捏OJ题2.1移除元素2.2删除有序数组中的重复项2.3合并两个有序数组 三、总结 一、前言 Do you study today?up在上一次已经讲解完毕了有关顺序表的所有知识,不知道大家是否已经沉淀完毕了呢?有一句老话说得好啊——光看不练假把…...
减少采样空间方法 变成后验概率
又 因为后验概率很难计算 --所以通过引入变分分布来近似 后验概率分布 同时 引入 kl散度来度量 近似的效果好不好 什么是kl散度 kl散度带变分: 第一个问题 :积分变期望 问题二:贝叶斯公式 第三个问题:为啥可以独立出来 因为相比…...
如何使用K8S快速部署测试环境
目录 一、Windows 系统使用 Rancher Desktop 二、Linux系统 集群使用 Ansible 一键部署 三、Linux系统使用 kubeadm 快速搭建单节点集群 四、Kubernetes (K8S) 快速部署测试环境 4.1 准备 K8S 集群 4.2部署测试应用 4.3访问测试服务 4.4持久化存储(可选&…...
GAMES101-现代计算机图形学入门(Animation/simulation)
目录 一些科普Keyframe AnimatorPhysical Simulation质点弹簧系统 Mass Spring Rope粒子系统运动学 Forward Kinematics逆运动学Inverse KinematicsRiggingMotion Capture 第二次课 cont.Single Particle Simulation流体模拟 Fluid Simulation GitHub主页:https://g…...
2两数相加解题记录
哎呀,以为这道题也不用写题解的……结果还是有坑没跳出来。 最开始想法先计算总和再求出链表 func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode {// 先算出这个值。测试用例会int类型溢出total : 0wei : 1for l1!nil && l2!nil {total (l1.Vall…...
uniapp 获取dom信息(封装获取元素信息工具函数)
在uniapp开发中,需要获取到dom的信息,需要用到uniapp的指定方式 uni.createSelectorQuery(),但是每次需要用到的时候都需要很长一段的繁琐代码,本篇文章将呈现获取dom信息方法封装,话不多说,上菜࿱…...
Mybatis_Plus中常用的IService方法
查询 方法名 查询记录总数 /*** 查询总记录数** see Wrappers#emptyWrapper()*/default long count() {return count(Wrappers.emptyWrapper());} 方法实现 Testpublic void testGetCount(){long count userService.count();System.out.println("总记录数:&…...
【华为OD技术面试真题 - 技术面】- Java面试题(16)
华为OD面试真题精选 专栏:华为OD面试真题精选 目录: 2024华为OD面试手撕代码真题目录以及八股文真题目录 线程创建的方式 1. 通过继承Thread类 创建一个自定义线程类,继承Java中的Thread类,并重写run()方法。然后通过调用start()方法来启动线程。 示例代码: // 继承Th…...
React(六)React过渡动画-CSS编写方式
React过渡动画 react-transition-group介绍 在开发中,我们想要给一个组件的显示和消失添加某种过渡动画,提高用户体验→可通过react-transition-group实现。React曾为开发者提供过动画插件 react-addons-css-transition-group,后由社区维护…...
计算机视觉初步(环境搭建)
1.anaconda 建议安装在D盘,官网正常安装即可,一般可以安装windows版本 安装成功后,可以在电脑应用里找到: 2.创建虚拟环境 打开anaconda prompt, 可以用conda env list 查看现有的环境,一般打开默认bas…...
JAVA反序列化深入学习(九):CommonsCollections7与CC链总结
CC7 依旧是寻找 LazyMap 的触发点 CC6使用了 HashSet而CC6使用了 Hashtable JAVA环境 java version "1.8.0_74" Java(TM) SE Runtime Environment (build 1.8.0_74-b02) Java HotSpot(TM) 64-Bit Server VM (build 25.74-b02, mixed mode) 依赖版本 Apache Commons …...
软考《信息系统运行管理员》- 6.1 信息系统安全概述
信息系统安全的概念 信息系统安全是指保障计算机及其相关设备、设施(含网络)的安全,运行环境的安全, 信息的安全,实现信息系统的正常运行。 信息系统安全包括实体安全、运行安全、信息安全和 人员安全等几个部分。 影响信息系统安全的因素…...
MDK中结构体的对齐、位域、配合联合体等用法说明
测试环境:STM32H7R3MDK 5.39AC5 注:PC、PowerPC等环境不适用本文。 一.字节对齐 一般采用自然对齐(默认方式),提高数据存取速度。 采用1字节对齐,变量在内存中无空隙,紧密存储,节省存…...
C++实现布隆过滤器
1.布隆过滤器概念 位图虽然能高效且节省存储数据,但是类型必须是整型,不能存储其它类型。布隆过滤器是由布隆提出的一中紧凑型,比较巧妙的概率型数据结构,特点是高效的插入和查询,可以得知什么是一定不存在或者可能存…...
React 揭秘:从新手到高手的进阶之路
目录 React:前端开发新宠 React 初相识 什么是 React React 的核心特性 1.组件化开发 2.虚拟 DOM 与 Diff 算法 单向数据流 搭建 React 开发环境 环境准备 创建 React 项目 项目结构解析 React 基础语法与核心概念 JSX 语法 基本语法规则…...
JAVA的内存图理解
目录 一、方法区1、类常量池2、静态常量池3、方法区过程 二、栈三、堆1、字符常量池2、堆内存图的绘制 java中内存可以分为 方法区、 堆、 栈、 程序计数器、 本地方法栈,其中比较中重要的是方法区、堆、栈。 一、方法区 1.方法区(Method Area&…...
k8s存储介绍(六)StorangeClass
一、Kubernetes 存储类(StorageClass)详解 1. 什么是 StorageClass? 在 Kubernetes 中,StorageClass(存储类)是一种用于动态创建 PersistentVolume(PV)的资源对象。它允许管理员根…...
SourceMap原理
点击查看原文 1 webpack中使用 详见 js的模块化-webpack打包示例 2 webpack的配置 const { resolve } require(path)module.exports {mode: development,devtool: source-map,entry: ./src/index.js,output: {path: resolve(__dirname, dist),filename: "bundle.js&q…...
硬件基础--14_电功率
电功率 电功率:指电流在单位时间内做的功(表示用电器消耗电能快慢的一个物理量)。 单位:瓦特(W),简称瓦。 公式:PUI(U为电压,单位为V,i为电流,单位为A,P为电功率,单位为W)。 单位换算:进位为1000ÿ…...
练习题:110
目录 Python题目 题目 题目分析 需求理解 关键知识点 实现思路分析 代码实现 代码解释 函数定义: 计算值的总和: 测试函数: 运行思路 结束语 Python题目 题目 定义一个函数,接受一个字典作为参数,返回字…...
Promise使用
Promise 是 JavaScript 中用于处理异步操作的一种对象,它代表了一个异步操作的最终完成(或失败)及其结果值。Promise 有三种状态: 1. pending(进行中):初始状态,既不是成功也不是失…...
心理咨询法律咨询预约咨询微信小程序系统源码独立部署
预约咨询微信小程序:基于ThinkPHPUniapp的全场景解决方案与SEO深度优化指南 在心理健康、医疗问诊、法律咨询等领域线上化需求激增的背景下,预约咨询微信小程序凭借其灵活部署、多场景适配与隐私安全保障,成为机构与从业者提升服务效率的核心…...
JavaFX基础- Button 的基本使用
说明 本文记录一下对Button的基本使用,包括但不限于 样式的设置,事件的监听等。 按钮样式的设置 方式一 : Java代码的方式 // 创建一个按钮Button button new Button("按钮");// 设置按钮的位置button.setLayoutX(50);button.set…...
Golang使用 ip2region 查询IP的地区信息
利用 ip2region 进行 IP 地址定位 import ("fmt""log""github.com/lionsoul2014/ip2region/binding/golang/xdb" )func main() {ip : "213.118.179.98"dbPath : ".\\cmd\\ip\\ip2region.xdb"// 1、初始化查询器//searcher,…...
阿里云数据学习20250327
课堂链接:阿里云培训中心 (aliyun.com) 一、课堂问题 (一)课时3 1.支持字符集的含义是什么...
RAG - 五大文档切分策略深度解析
文章目录 切分策略1. 固定大小分割(Fixed-Size Chunking)2. 滑动窗口分割(Sliding Window Chunking)3. 自然语言单元分割(Sentence/Paragraph Segmentation)4. 语义感知分割(Semantic-Aware Seg…...
软件测试之接口测试
🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 接口测试定义 接口是前后端沟通的桥梁,是数据传输的通道,包括外部接口、内部接口。内部接口又包括:上层服务与下层服务接口ÿ…...
synchronized锁与lock锁的区别
引言 在学习多线程时,当时为了解决线程并发问题,曾有两种锁,一种是synchronized同步块,同步方法,一种就是Lock锁,那么这两种锁之间有什么区别?谁更好用呢? synchronized 同步方法…...
Open HarmonyOS 5.0 分布式软总线子系统 (DSoftBus) 详细设计与运行分析报告
1. HarmonyOS 5.0 与分布式软总线 (DSoftBus) 概述 1.1 HarmonyOS 5.0 架构概览 HarmonyOS 5.0,又称鸿蒙星河版,标志着操作系统架构的重大演进,其核心在于转向自研的微内核系统 1。此版本摒弃了先前版本中兼容安卓的双框架模式,全…...
蓝桥杯备考:多米诺骨牌
这道题要求上下方格子和之差要最小,其实就是算每个上下格子的差求和的最小值 这道题其实是动态规划01背包问题 我们直接按步骤做吧 step1:定义状态表示f[i][j]表示从1到i个编号的差值里选出刚好j个数的最小操作次数 step2:推导状态转移方程 如图这就是我们的状态…...
C++:allocator类(动态数组续)
1.为什么需要 allocator? 在 C 中,动态内存管理通常通过 new 和 delete 完成: int* p new int; // 分配内存 构造对象 delete p; // 析构对象 释放内存 但 new 和 delete 有两个问题: 耦合性:将内…...
Go语言手动内存对齐的四大场景与实践指南
Go语言手动内存对齐的四大场景与实践指南 引言:Go的内存对齐机制 Go语言通过编译器自动处理内存对齐问题,开发者通常无需关心底层细节。然而,在特定场景下,手动干预内存对齐是避免程序崩溃或数据错乱的必要操作。本文将深入探讨G…...
libva基础
Libva(Lib Video Acceleration)是一个开源的库,实现了 **VA-API**(Video Acceleration API),旨在为视频处理提供跨平台的硬件加速支持。 1、核心功能与作用 硬件加速抽象层:Libva 作为中间层&…...
如何在 AI 搜索引擎(GEO)霸屏曝光,快速提升知名度?
虽然大多数人仍然使用 Google 来寻找答案,但正在发生快速转变。ChatGPT、Copilot、Perplexity 和 DeepSeek 等 LLM 已成为主流。这主要是因为每个都有自己的免费和公共版本,并且总是有重大的质量改进。 许多人每天都使用这些工具来提问和搜索互联网&…...
Java入门知识总结——章节(二)
ps:本章主要讲数组、二维数组、变量 一、数组 数组是一个数据容器,可用来存储一批同类型的数据 🔑:注意 类也可以是一个类的数组 public class Main {public static class Student {String name;int age; // 移除 unsignedint…...
Python 序列构成的数组(元组不仅仅是不可变的列表)
元组不仅仅是不可变的列表 有些 Python 入门教程把元组称为“不可变列表”,然而这并没有完全概括 元组的特点。除了用作不可变的列表,它还可以用于没有字段名的记 录。鉴于后者常常被忽略,我们先来看看元组作为记录的功用。 元组和记录 元…...