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

【Java ee初阶】http(1)

HTTP

全称为“超文本传输协议”,由名字可知,这是一个基于文本格式的协议,而TCP,UDP,以太网,IP...都是基于二进制格式的协议。

如何区别该协议是基于哪种格式的协议?

形如这种协议格式,按照xxx个字节,xxx个比特位,这样的方式来安排的妥妥的就是二进制(不涉及任何字符)

超文本:文本包含了一些更复杂的内容,例如图片、视频、音频、特殊字体、链接......

HTTP诞生于1991年,同时,Python,Linux,Vim,Qt(C++知名的库)同时诞生于这一年。

HTTP的各种版本

HTTP是应用层协议,传输层依赖于TCP来进行实现。(HTTP2.0及以前,是基于TCP;到了HTTP3.0,基于UDP)

因为TCP的传输效率更好,但是他的可靠性没有UDP好

HTTP协议,是一个非常经典的“一问一答”模型。

关心HTTP交互过程的时候,应该注重两方面:一方面需要关心HTTP请求是什么样子的,另一方面要关心HTTP响应是什么样子的。而上述二者就构成了HTTP的协议格式。

HTTP 请求格式
1. 首行 (请求的第一行)
2. 请求头 (header) 从第二行开始, 往后若干行
3. 空行 (请求头的结束标记)
4. 请求正文 (body) [有的请求有, 有的没有]

HTTP 响应,可能被压缩的
Content-Encoding: gzip

本来是文本,压缩了就变成二进制了。

网络通信过程中,最贵的硬件资源,就是网络带宽

直接把原始数据进行传输,比较大,消耗的网络带宽就多了。

可以把数据进行压缩,压缩之后数据就变少了,通过网络传输的内容也少了。
数据到了对端再通过 CPU 来进行解压缩

压缩 / 解压缩
压缩包 (rar, zip....) (一系列的压缩算法)

一个不太恰当的例子
比如你的数据
aabbbccccccdddd
压缩后
2a3b4c5d


点击这个条条就能解压缩

HTTP 响应格式
1. 首行
2. 响应头 (header)
3. 空行 (响应报头的结束标记)
4. 正文 (body)
(当前的正文部分就包含了网页的 HTML)

URL

方法(method)    URL                                                                                                     版本号

URL:统一资源定位器,描述了网络上的某个资源的具体位置,需要明确访问网络上的哪个资源

登录信息(认证):淘汰了,现在已经没有网站采取这种认证方式了。30年前,采取这样的方式来进行身份认证。

服务器地址:服务器地址

服务器端口:服务器的端口号

带层次的文件路径:path,一个机器上的一个服务器程序,可能管理着很多资源,这些资源可能是真实的文件,还可能是一些“虚拟的”“动态生成的”资源(根据请求,计算出来的响应)

查询字符串:query string。请求中的参数,通过参数进行进一步的解释说明。是键值对格式,=分割键和值,通过&分割多个键值对

片段标识符:标识网页的某个部分,实现“页面内跳转功能”。文档类网站会带有这个。

完整的 URL 包含了很多信息
重点关心的主要是 4 个部分
1) IP
2) 端口
3) 路径
4) 查询字符串


https://www.sogou.com/ 只有 IP 地址, 其他的好像都没有。
https://cn.vuejs.org/guide/introduction.html#single-file-components 没有端口, 也没有查询字符串
一个 URL 中, 有些部分是可以省略的

如果没有端口号, 浏览器会给一个默认值

一次通信, 需要
源 IP (浏览器客户端, 端口号, 系统分配的空闲端口)
源端口
目的 IP
目的端口 (URL 中的端口, 描述了你访问的服务器的端口, 不是你浏览器客户端的端口)


URL 中目的端口如果不写, 浏览器会给默认值. 根据协议类型确定.
http:// => 端口给 80 (http 服务器的端口号 也是作为 "知名端口号")
https:// => 端口给 443 (https 服务器的端口号也是 "知名端口号")

带层次的路径也能省略, 省略之后, 其实是一个 /
表示 "根目录"
访问一个服务器管理资源/目录 中的最顶层的目录/资源
通常就对应到一个网站的主页

query string 本来就不是必须的. 都属于程序员自行约定的

片段标识符, 也可以省略(需要页面内跳转, 才设定, 不需要的话就可以省略了)
程序员代码中自定义的(前端内容)

URL encode

https://cn.bing.com/search?q=%E5%93%94%E5%93%A9%E5%93%94%E5%93%A9&qs=n&form=QBRE&sp=-1&lq=0&pq=%E5%93%94%E5%93%A9%E5%93%94%E5%93%A9&sc=12-4&sk=&cvid=7CD8656EDA4749B08D5958CCF80B8679


url 的 query string 中的 value 部分, 可能需要进行 "转义" 的.

query string 的内容, 程序员可以自定义 (尤其是 value)
如果 value 中包含特殊符号, 就可能使 url 的解析出现错误.

url 中的特殊符号有特定含义.

中文也需要转义 (中文通过 utf8/gbk 之类的编码格式表示的, 有可能某个汉字的
utf8/gbk 编码中的某个字节, 恰好和某个特殊符号的 ascii 码相同了 还是可能造成误会)

转义的规则非常简单
把特殊符号的 ascii 取出来, 按照字节维度, 插入一些 %

上述 utf8 的编码解码 过程不需要手动实现
都有专门的库来进行


如果需要放中文/符号, 需要主动进行 url encode
否则, 浏览器/服务器可能解析失败

相关文章:

【Java ee初阶】http(1)

HTTP 全称为“超文本传输协议”,由名字可知,这是一个基于文本格式的协议,而TCP,UDP,以太网,IP...都是基于二进制格式的协议。 如何区别该协议是基于哪种格式的协议? 形如这种协议格式&#xf…...

《Deepseek从入门到精通》清华大学中文pdf完整版

资源介绍: 《DeepSeek:从入门到精通》是由清华大学新闻与传播学院新媒体研究中心元宇宙文化实验室的精心撰写的一份专业文档。该文档以通俗易懂的方 式,全面介绍了DeepSeek的使用方法,为用户提供了极具价值的指导。 这份文档内容丰…...

【图片识别工具】批量单据识别批量重命名,批量OCR识别图片文字并重命名,批量改名工具的使用步骤和注意事项

一、适用场景 ​​财务与发票管理​​:企业需处理大量电子发票或扫描件,通过OCR识别发票代码、金额等关键信息,自动重命名为发票号_金额.pdf格式,便于归档与税务审计。 ​​物流单据处理​​:物流公司需从运单中提取单…...

重磅发布!OpenAI 推出最新模型 GPT-4.1 系列!

今日凌晨,OpenAI宣布开放全新模型GPT-4.1,并于即日起在ChatGPT中投入使用。 超长上下文与卓越编码能力 GPT-4.1作为OpenAI的最新模型,支持长达100万tokens的上下文,是OpenAI首次发布的长窗口模型。相较于前代,GPT-4.1…...

游戏引擎学习第281天:在房间之间为摄像机添加动画效果

回顾并为今天的内容定下基调 这次我们要继续深入处理实体系统。在前一阶段对实体系统做了一些很酷的改动,但现在到了要认真面对和完善它的时候。 今天的主要目标是修复并优化摄像机在房间之间移动时的逻辑。在上一次的实现中,我们重新启用了基于房间的…...

机器学习 --- 模型选择与调优

机器学习 — 模型选择与调优 文章目录 机器学习 --- 模型选择与调优一,交叉验证1.1 保留交叉验证HoldOut1.2 K-折交叉验证(K-fold)1.3 分层k-折交叉验证Stratified k-fold 二,超参数搜索三,鸢尾花数据集示例四,现实世界数据集示例…...

PostgreSQL pgrowlocks 扩展详解

一、简介 pgrowlocks 是 PostgreSQL 官方提供的扩展模块,用于查看指定表中每一行当前的行级锁(Row Lock)信息。它非常适用于: 并发冲突排查行级锁等待分析死锁前兆探测热点数据行分析 二、安装与启用 1. 安装前提(…...

Makefile 详解

Makefile 是一个用于自动化构建过程的脚本文件,主要用于管理源代码的编译和链接过程。它定义了项目中的依赖关系以及如何从源文件生成目标文件。 基本概念 Make:一个构建自动化工具,读取 Makefile 中的指令目标(Target):要生成的…...

IntelliJ IDEA 集成AI编程助手全解析:从Copilot到GPT-4o Mini的实践

目录 AI编程助手的演进与核心价值GitHub Copilot深度集成指南国产新星DeepSeek配置实战GPT-4o Mini低成本接入方案三大助手对比与场景适配企业级安全与本地化部署未来发展趋势与开发者启示1. AI编程助手的演进与核心价值 1.1 技术演进图谱 #mermaid-svg-LwYPrW2Y2Pqvqgf0 {fon…...

wps excel将表格输出pdf时所有列在一张纸上

记录:wps excel将表格输出pdf时所有列在一张纸上 1,调整缩放比例 2,将表格的所有铺满到这套虚线...

【开源Agent框架】OWL:面向现实任务自动化的多智能体协作框架深度解析

一、基本介绍 1.1 项目概述 OWL(Optimized Workforce Learning)是基于CAMEL-AI框架构建的创新型多智能体协作系统,旨在通过动态智能体交互实现复杂任务的自动化处理。项目在GAIA基准测试中以69.09的平均分位列开源框架榜首,展现了强大的任务处理能力。 技术特性矩阵: 多…...

120页WORD方案 | 2025企业数字化转型AI大模型数字底座项目设计方案

这份文档是一份关于企业数字化转型AI大模型数字底座项目的设计方案,涵盖了从项目概述、业务需求分析到技术架构设计等多个方面。它详细阐述了企业为何需要构建AI大模型底座,以及如何通过这一底座实现智能化决策支持、业务流程优化和客户体验提升。方案中…...

Vue3 本地环境 Vite 与生产环境 Nginx 反向代理配置方法汇总【反向代理篇】

文章目录 一、前言二、问题场景三、开发环境配置(Vite)四、生产环境配置(Nginx)4.1 初始错误配置4.2 正确配置方案4.3 配置解析4.4高级配置选项 五、常见问题排查六、开发环境 vs 生产环境对比七、总结 一、前言 在前后端分离架构…...

机器视觉对位手机中框点胶的应用

在手机制造的精密世界里,每一个环节都关乎着产品的最终品质,而手机中框点胶工艺更是其中关键一环。点胶不仅起到固定内部组件、增强结构强度的作用,还影响着手机的防水、防尘性能。然而,随着手机设计日益轻薄化、复杂化&#xff0…...

Elasticsearch性能调优全攻略:从日志分析到集群优化

#作者:猎人 文章目录 前言搜索慢查询日志索引慢写入日志性能调优之基本优化建议性能调优之索引写入性能优化提升es集群写入性能方法:性能调优之集群读性能优化性能调优之搜索性能优化性能调优之GC优化性能调优之路由优化性能调优之分片优化 前言 es里面…...

Electron 主进程中使用Worker来创建不同间隔的定时器实现过程

背景 目前主进程使用 timer.setInterval 来做间隔任务执行,但是总有用户反馈养号卡主不执行了,或者某个操作不执行了,为了排除主进程的运行造成 setInterval 阻塞可能,将 setInterval 单独处理,可以排除主进程对定时器…...

用户安全架构设计

一、主动踢出,被动踢出 二、密码设计策略:密码复杂度,密码安全检查,密码失效设计,账号锁定设计,密码存储和传输加密 三、密码找回策略:密保问题,下行短信验证码,上行短信…...

2025年黑客扫段攻击激增:如何构建智能防御体系保障业务安全?

引言 2025年,随着全球物联网设备突破500亿台,黑客利用自动化工具发起的扫段攻击(IP段扫描漏洞利用)已成为企业业务安全的最大威胁之一。单次攻击可覆盖数万个IP,精准定位未修复漏洞,导致数据泄露、服务瘫痪…...

基于大模型预测胃穿孔预测与围手术期管理系统技术方案

目录 1. 系统架构模块2. 关键算法实现2.1 术前预测模型(Transformer多模态融合)2.2 术中实时分析(在线学习LSTM)3. 模块流程图(Mermaid)3.1 数据预处理系统3.2 术前预测系统3.3 术中实时分析系统4. 技术验证模块4.1 模型可解释性验证4.2 边缘计算部署架构1. 系统架构模块…...

Java转Go日记(三十六):简单的分布式

1.1.1. 简单的分布式server 目前分布式系统已经很流行了,一些开源框架也被广泛应用,如dubbo、Motan等。对于一个分布式服务,最基本的一项功能就是服务的注册和发现,而利用zk的EPHEMERAL节点则可以很方便的实现该功能。EPHEMERAL节…...

操作系统-进程与线程

操作系统 操作系统用来保护系统资源和提高稳定性的重要机制 文章目录 用户态和内核态为什么要区分状态? 进程管理进程,线程进程/线程切换进程的5种状态进程通信线程通讯进程调度算法 用户态和内核态 用户态 应用程序运行时所在的模式,权限受限…...

人体肢体渲染-一步几个脚印从头设计数字生命——仙盟创梦IDE

人体肢体动作数据集-太极拳 渲染代码 # 初始化Pygame pygame.init()# 设置窗口尺寸 WINDOW_WIDTH 800 WINDOW_HEIGHT 600 window pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT)) pygame.display.set_caption("动作回放")# 设置帧率 FPS 30 clock pyg…...

如何安全配置好CDN用于防止DDoS与Web攻击 ?

保护网站免受DDoS和Web攻击是至关重要的,CDN(内容分发网络)可以作为一种有效的防御工具。以下是一些安全配置CDN以防止DDoS和Web攻击的最佳实践: 1. 选择可靠的CDN提供商 安全功能: 选择拥有强大安全功能的CDN提供商…...

01-数据结构概述和时间空间复杂度

数据结构概述和时间空间复杂度 1. 什么是数据结构 数据结构(Data Structure)是计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的数据元素的集合。 2. 什么是算法 算法(Algorithm)就是定义良好的计算…...

【ArcGIS技巧】根据地块、界址点图层生成界址线

"农经权二轮延包我已经写的差不多了,需要的一些生成四至、分割地块的功能也分享了替代的插件。前面刚分享完界址点的生成,今天分享界址线的生成,有需要的自取,至此,基本可以用这些功能完成出成果工作。" 1、…...

PC:使用WinSCP密钥文件连接sftp服务器

1. 打开winscp工具,点击“标签页”->“新标签页” 2. 点击“高级"->“高级” 3. 点击"验证"->“选择密钥文件” 选择ppk文件,如果没有ppk文件选择pem文件,会自动生成ppk文件 点击确定 4. 输入要连接到的sftp服务器的…...

RedHat7 如何更换yum镜像源

RedHat7如何更换yum镜像源? # 删除系统自带 yum rpm -qa|grep -e yum -e python-urlgrabber |xargs rpm -e --nodeps# 下载yum与wget的rpm软件包 curl -O http://mirrors.aliyun.com/centos/7/os/x86_64/Packages/yum-3.4.3-168.el7.centos.noarch.rpm curl -O ht…...

k8s 1.10.26 一次containerd失败引发kubectl不可用问题

k8s 1.10.26 一次containerd失败引发kubectl不可用问题 开机k8s 1.10.26时,报以下错误 [rootmaster ~]# kubectl get no E0515 08:03:00.914894 7993 memcache.go:265] couldnt get current server API group list: Get "https://192.168.80.50:6443/api?…...

Qt信号槽机制与UI设计完全指南:从基础原理到实战应用

目录 前言一、信号槽1.1 传参1.2 Qt信号与槽的对应关系1.2.1一对多关系1.2.2 多对一关系 二、Designer三、Layout 布局3.1 基础用法3.2 打破布局3.3 贴合窗口3.4 伸展器(Spacer)3.5 嵌套布局 四、ui指针五、QWidget六、QLabel 标签使用指南总结 前言 本…...

微信小程序van-dialog确认验证失败时阻止对话框的关闭

使用官方(Vant Weapp - 轻量、可靠的小程序 UI 组件库)的before-close&#xff1a; wxml&#xff1a; <van-dialog use-slot title"名称" show"{{ show }}" show-cancel-button bind:cancel"onClose" bind:confirm"getBackInfo"…...

嵌入式学习--江科大51单片机day7

我们在听课的过程中&#xff0c;可能对老师讲的有疑问&#xff0c;或者有些自己的理解&#xff0c;我们可以去问豆包&#xff0c;包括在写博客的时候我也是&#xff0c;不断去问豆包保证思考的正确性。&#xff08;有人感觉豆包很low啊&#xff0c;其实这些基础性的东西豆包一般…...

spark和hadoop之间的区别和联系

Spark和Hadoop的对比 1. 架构层面 Hadoop&#xff1a; HDFS&#xff08;分布式文件系统&#xff09;&#xff1a;Hadoop的核心组件之一&#xff0c;用于存储大规模数据。它将数据分散存储在多个节点上&#xff0c;通过冗余存储&#xff08;默认三副本&#xff09;来保证数据…...

antd mobile 点击 TabBar 切换页面

switchRoute 函数&#xff0c;navigate 点击的 path import { Button, TabBar } from "antd-mobile"; import { useEffect } from "react"; import { Outlet, useNavigate } from "react-router-dom"; import { useDispatch } from "react…...

20250515让飞凌的OK3588-C的核心板在Linux R4下适配以太网RTL8211F-CG为4线百兆时的接线图

20250515让飞凌的OK3588-C的核心板在Linux R4下适配以太网RTL8211F-CG为4线百兆时的接线图 2025/5/15 20:19 缘起&#xff1a;以前做的网线找不到了&#xff0c;那就再来一条吧。 引脚定义要从头来过&#xff1f;还好找到了一条。 开干&#xff01; 万用表一对/点&#xff0c;几…...

大语言模型 07 - 从0开始训练GPT 0.25B参数量 - MiniMind 实机训练 预训练 监督微调

写在前面 GPT&#xff08;Generative Pre-trained Transformer&#xff09;是目前最广泛应用的大语言模型架构之一&#xff0c;其强大的自然语言理解与生成能力背后&#xff0c;是一个庞大而精细的训练流程。本文将从宏观到微观&#xff0c;系统讲解GPT的训练过程&#xff0c;…...

【学习心得】WSL2安装Ubuntu22.04

为了使用Docker desktop&#xff0c;所以我的win10需要安装一下wsl并且下载一个Ubuntu。默认Windows10/11是自带wsl的&#xff0c;你在进行下面操作的时候可以升级一下wsl --update 1、管理员身份打开cmd&#xff0c;输入命令查询所有可以下载的Linux版本 # 查看有哪些 Linux 发…...

人工智能、深度学习、机器学习的联系与区别

定义 人工智能&#xff08;AI - Artificial Intelligence&#xff09; &#xff1a;是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。它旨在让计算机能够像人类一样思考、学习和决策&#xff0c;涉及到诸如计算机视觉、自然语言处理…...

基于互联网和LabVIEW的多通道数据采集系统仿真设计

标题:基于互联网和LabVIEW的多通道数据采集系统仿真设计 内容:1.摘要 在当今科技飞速发展的背景下&#xff0c;多通道数据采集在众多领域有着广泛需求。本研究的目的是设计一个基于互联网和LabVIEW的多通道数据采集系统仿真方案。采用互联网技术实现数据的远程传输与共享&…...

【Android】Android 实现一个依赖注入的注解

Android 实现一个依赖注入的注解 &#x1f3af; 目标功能 自定义注解 Inject创建一个 Injector 类&#xff0c;用来扫描并注入对象支持 Activity 或其他类中的字段注入 &#x1f9e9; 步骤一&#xff1a;定义注解 import java.lang.annotation.ElementType; import java.lan…...

【Ansible基础】Ansible 核心组件深度解析:控制节点、受管节点、Inventory与Playbook

目录​​​​​​​ 1 Ansible架构概述 2 控制节点&#xff08;Control Node&#xff09;详解 2.1 控制节点定义与功能 2.2 控制节点配置文件 3 受管节点&#xff08;Managed Node&#xff09;详解 3.1 受管节点特点 3.2 受管节点准备工作 3.3 连接方式对比 4 Invento…...

数据库--处理模型(Processing Model)(二)

执行查询的方法有很多,接下来将介绍以更高效和更有效率的方式执行分析工作负载(在OLAP系统中)的不同技术,包括以下内容: 执行并行性(Execution Parallelism)执行引擎(Execution Engines)执行操作符输出(Execution Operator Output)中间数据表示(Intermediate Data …...

机器学习 day03

文章目录 前言一、特征降维1.特征选择2.主成分分析&#xff08;PCA&#xff09; 二、KNN算法三、模型的保存与加载 前言 通过今天的学习&#xff0c;我掌握了机器学习中的特征降维的概念以及用法&#xff0c;KNN算法的基本原理及用法&#xff0c;模型的保存和加载 一、特征降维…...

鸿蒙OSUniApp 制作简洁高效的标签云组件#三方框架 #Uniapp

UniApp 制作简洁高效的标签云组件 在移动端应用中&#xff0c;标签云&#xff08;Tag Cloud&#xff09;是一种常见的UI组件&#xff0c;它以视觉化的方式展示关键词或分类&#xff0c;帮助用户快速浏览和选择感兴趣的内容。本文将详细讲解如何在UniApp框架中实现一个简洁高效的…...

【测试】用例篇

目录 1、如何编写测试用例&#xff1a; 1.1、设计测试用例时&#xff1a;正向思维逆向思维发散思维 2.2、万能公式 2、设计测试用例的方法 2.1、基于需求设计方法 1&#xff09;等价类: 2&#xff09;边界类 3&#xff09;场景法 4&#xff09;正交表法 5&#xff09;…...

力扣-46.全排列

题目描述 给定一个不含重复数字的数组 nums &#xff0c;返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 class Solution {List<List<Integer>> res new ArrayList<>();List<Integer> path new ArrayList<>();void backtracking(i…...

【氮化镓】HfO2钝化优化GaN 器件性能

2025年,南洋理工大学的Pradip Dalapati等人在《Applied Surface Science》期刊发表了题为《Role of ex-situ HfO2 passivation to improve device performance and suppress X-ray-induced degradation characteristics of in-situ Si3N4/AlN/GaN MIS-HEMTs》的文章。该研究基…...

STL?list!!!

一、引言 之前我们一起完成了STL库中的vector&#xff0c;本期我们将一起完成list这一容器&#xff0c;在本期学习中&#xff0c;我们会更加加深对于模板的认识&#xff0c;让我们更加能感受到模板的魅力&#xff01; 二、list的介绍与相关接口 list是STL库中提供的一个链表容…...

2025.05.14华为机考笔试题-第一题-100分

📌 点击直达笔试专栏 👉《大厂笔试突围》 💻 春秋招笔试突围在线OJ 👉 笔试突围OJ 01. 优先级任务调度系统 问题描述 LYA公司的开发团队正在设计一个智能任务调度系统。该系统需要根据任务优先级动态调整执行顺序,以提高团队工作效率。系统需要支持以下三种操作:…...

紫外相机工作原理及可应用范围

紫外相机是一种利用紫外线&#xff08;UV&#xff09;波段进行成像的设备&#xff0c;紫外线可用于机器视觉应用中&#xff0c;以检测使用可见光无法检测到的特征&#xff0c;工业上使用最常见的紫外波长是365nm和395nm。紫外相机通常用于高分辨率视频显微镜、电晕检测、半导体…...

海外短剧H5/App开源系统搭建指南:多语言+国际支付+极速部署

在全球短视频与短剧内容消费热潮下&#xff0c;搭建一个支持多语言、集成国际支付且能快速部署的海外短剧平台&#xff0c;已成为内容创作者和运营者的核心需求。本文将结合行业前沿技术与开源方案&#xff0c;提供一套完整的系统搭建指南&#xff0c;助您高效实现全球化布局 …...