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

网络原理(一)—— http

什么是 http

http 是一个应用层协议,全称为“超文本传输协议”。

在这里插入图片描述

http 自 1991 年诞生,目前已经发展为最主流使用的一种应用层协议。

HTTP 往往基于传输层的 TCP 协议实现的,例如 http1.0,http1.0,http2.0

http3 是基于UDP 协议实现的,目前还在完善中,我们目前主要使用的还是 http1.1 和 http2.0 版本,本文章将以 http1.1 来进行展开。


http 的 工作流程:
在这里插入图片描述

抓包工具 Fiddler

Fiddler 主要用来抓取 http 和 https 的数据包,我们可以通过 fiddler 来进行抓包学习 http 和 https

使用也很简单,按住 ALT + A,全选然后可以使用 删除键来进行删除所有抓到的包

在这里插入图片描述

简单介绍一下,不同颜色对应的是什么数据报,红色说明发生了错误,蓝色表明一个包含 html 的数据包,绿色说明是包涵 js 的数据报,紫色则是包含 css 的数据包。

我们点击一下蓝色的数据包,会发现右边出现了两个面板,右上的面板是http 的 请求内容,右下的是 http 的响应内容。

选择 Raw ,然后点击 View in Notepad ,就可以在记事本查看请求的内容。

在这里插入图片描述

查看响应:先点击 Raw,然后点击上面的黄色的条进行解析,最后点击 View in Notepad 就可以查看响应的内容。

在这里插入图片描述

抓包工作原理:实际上 fiddler 相当于一个 “代理”,类似于中间商,浏览器的 http 请求的数据本来是发送给服务器的,因为我们开启了 fiddler ,在中间会多加一个停留点,也就是浏览器和服务器之间多了 fiddler,二者传输的数据都要通过 fiddler ,所以 fiddler 才能抓取 http 的数据包。
在这里插入图片描述

http 协议格式

请求包含:首行,请求头,空行和正文

请求的数据包不一定包含正文的:
在这里插入图片描述
在这里插入图片描述


响应包含:首行,响应头,空行和正文
在这里插入图片描述


协议格式总结:
在这里插入图片描述
右边的 Response 的请求正文是响应正文,打错字了。


http 请求的分析

在http 的请求的首行里,包含 请求方法 + url + http 的版本号
在这里插入图片描述

url

url 就是我们平时说的网址,URL(Uniform Resource Locator 唯一资源定位符

互联网上的每一个文件都有一个唯一的 URL,它包含的信息置出了文件的位置以及浏览器应该怎么处理它。

在这里插入图片描述

http 是我们使用的协议,现在大多数你看到的是 https 协议,这是后话了。url 不是只用 http 能使用,url 可以给各种协议提供支持的。

之后会跟上 IP 地址和端口号,一般来说这里的位置信息为了用户方便记忆,使用域名来充当,域名和 ip 是可以通过 DNS 域名解析系统来实现的(DNS 既是一套服务器系统,也是一种应用层协议)

在IP后面可能会跟上带层次的文件路径

?后面跟的是查询字符串(Query String) 对要访问的资源进行补充说明,使用的是键值对结构,键值对与键值对之间使用 & 来进行分割,键和值之间使用等号 = 来进行分割。

键值对是由程序员自主定义的。

片段标识符一般用于文档的阅读,就是你在网站访问官方网站,阅读官方手册的时候,会使用片段标识符说明你此时阅读的是哪一页的内容。

urlencode

由于 url 本身就携带特殊字符例如 / ? : & =

如果查询字符串 query string 的内容如果包含上面的特殊字符,就会导致 url 解析错误,为了防止这一现象的出现,这里使用了 urlencode 来进行转码,把每一个字节转为 16进制的数据,并且在前面使用 % 来进行分割

举个例子:在百度搜索 C++,会得到下面的 url
https://www.baidu.com/s?ie=UTF-8&wd=C%2B%2B&tn=15007414_dg

%2B 就是 + 转码而来的。


在百度搜索 “你好”,会发现 url 没有转码,但是我们通过 fiddler 抓包的时候确确实实是发生了转码的,为了方便用户观看,浏览器 url 显示的是没有进行转码的 “你好”,但是实际传输给服务器的 url 是发生过转码的

https://www.baidu.com/s?ie=UTF-8&wd=%E4%BD%A0%E5%A5%BD&tn=15007414_dg
在这里插入图片描述

但是在我们Java服务器写的时候,我们不需要进行转码的代码书写,因为 Spring 帮我们自动转码好了。

请求的方法

在这里插入图片描述

在开发中我们最常用的是 GET 和 POST 方法。其次是 PUT 和 DELETE 方法

GET 与 POST (重点)

GET 方法一般是向服务器发送请求使用的,一般使用 query string 来向服务器传输数据,GET 方法一般 body 部分为空(也可以不为空),GET 也不是完全不能带 body (有些客户端/浏览器不支持)。

POST 方法一般是服务器向客户端发送的响应数据包使用的方法,通过 body 来传输响应内容。

GET 和 POST 可以混用

GET请求通常建议设计成 幂等,POST 则没有要求,这是 HTTP 标准文档给出的建议,不是强制要求,幂等是指请求一定的等到的响应也是一定的,例如支付环节中,你付了多少钱,就会相应地扣除多少钱

GET 设计成 幂等,就可以 允许 GET 请求的结果被缓存,POST 由于不要求幂等,所以结果不能被缓存,但是现在开发中 GET 不幂等的情况很常见,GET 和 POST 方法也经常被混着用。


网上的一些错误的说法:
POST 比 GET 更安全,在登录场景中输入用户名和密码,使用 GET 方法,用户名和密码就会放到 url 的 query string 里面,也就是显示在浏览器的地址栏上。

POST 方法也就是把 用户名和密码放到了 body 里面,我随便抓个包不都看到了吗?安不安全这个问题考虑的是“加密传输”。如果POST 传输数据没有加密,这就不安全了。

GET 传输的数据是有长度限制的,在上古时期的 IE 浏览器时代,对 url 的长度是有限制的,但是限制主流的浏览器已经不存在这个问题了,比较长的 url 很多时候我们也能见到。

GET 只能传输文本,POST 可以传输二进制:GET 确实 url 只能放文本,但是可以将二进制 通过 base64 转码成文本。

请求报头(header)

header 的状体的格式是 “键值对” 结构,每个键值对占一行,键和值之间使用分号分割,报头的种类有很多,这里只介绍常见的几种。

Host

Host 表示服务器主机的地址和端口

在这里插入图片描述

Content-Length 与 Content-Type

Content-Length 表示 body 的数据长度,Content-Type 表示 body 的数据格式,这两个要么同时存在要么都不存在。如果 http 请求没有包含 body 就不会有这两个。如果有 body ,但是没有这两个 header (哪怕只有其中一个 header),都是错误的 / 非法的 http 报文。

在这里插入图片描述

在这里插入图片描述

User-Agent (UA)

UA 表示的是浏览器 / 操作系统的属性

在这里插入图片描述
在互联网发展早期的时候,有些浏览器只能显示文本,不支持更多的功能,后来网页引入了图片、样式、js…

在同一时间段内,有些用户的浏览器版本比较低,很多页面的功能不能支持,也有一些用户的浏览器更新过了,能支持更多的功能,因此为了区分不同用户使用的设备,通过 UA 就可以知道用户的设备最多支持哪些特性,到了今年浏览器已经大差不差了,现在 UA 的用途主要是区分用户使用的是 手机还是 PC 端,然后服务器根据不同的设备返回不同的网页。

Referer

表示这个页面是从哪个页面跳转过来的

如果直接咋爱浏览器输入 URL 或者通过收藏夹访问页面时是没有 Referer 的。

在这里插入图片描述

Cookie

Cookie 中存储了一个字符串,这个数据可能是客户端 (网页) 自行通过 JS 写入的,也可能来自于服务器
(服务器在 HTTP 响应的 header 中通过 Set-Cookie 字段给浏览器返回数据)

在这里插入图片描述

Cookie 的数据都是程序员自定义的内容。

Cookie 有一个经典的应用场景是登录和用户认证

http 响应解析

在 http 首行里包括了 http 版本号,状态码,以及状态码描述
在这里插入图片描述

状态码

状态码表示访问一个页面的结果. (是访问成功,还是失败,还是其他的一些情况…)

在这里插入图片描述

下面我们只介绍几种常见的状态码:

200 OK

表示访问正常。
在这里插入图片描述

404 Not Found

表示访问的资源没找到

在这里插入图片描述

403 Forbidden

访问被拒绝了(没有权限)
在这里插入图片描述

405 Method Not Allowed

说明客户端的请求的方法和服务器这边声明的注解不匹配。

在JavaEE部分 会给大家演示

500 Internal Server Error

服务器出现错误。

504 Gateway Timeout

Gateway 是网关的意思(也就是网络的入口)

当服务器负载比较大的时候,服务器处理单条请求的时候消耗的时间就会很长,就可能会导致出现超时的情况.

302 Move Temporarily

临时重定向

永久重定向. 当浏览器收到这种响应时,后续的请求都会被自动改成新的地址.
302 也是通过 Location 字段来表示要重定向到的新地址.

301 Moved Permanently

永久重定向

永久重定向. 当浏览器收到这种响应时, 后续的请求都会被自动改成新的地址.
301 也是通过 Location 字段来表示要重定向到的新地址.

小结

2xx 表示成功
3xx 表示重定向
4xx 表示客户端出错,用户构造的请求有问题
5xx 表示服务器出错,Java程序员主要关注这个错误,修 bug

相关文章:

网络原理(一)—— http

什么是 http http 是一个应用层协议,全称为“超文本传输协议”。 http 自 1991 年诞生,目前已经发展为最主流使用的一种应用层协议。 HTTP 往往基于传输层的 TCP 协议实现的,例如 http1.0,http1.0,http2.0 http3 是…...

redis学习面试

1、数据类型 string 增删改查 set key valueget keydel kstrlen k 加减 incr articleincrby article 3decr articledecyby article 取v中特定位置数据 getrange name 0 -1getrange name 0 1setrange name 0 x 设置过期时间 setex pro 10 华为 等价于 set pro 华为expire pro…...

前端工程化18-邂逅Promise(待更新)

6、邂逅Promise 6.1、函数对象与实例对象 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>准备_函数对象与实例对象</title> </head> <body><script>/* 函数对象、实例对象…...

Linux(ubuntu)系统的一些基本操作和命令(持续更新)

操作&#xff1a; Ctrl Alt T&#xff08;打开命令终端&#xff09; Ctrl Shift &#xff08;放大命令终端窗口&#xff09; Ctrl c&#xff08;退出当前在终端运行的程序&#xff09; 在命令终端窗口按Tab键可以补全要写的命令 命令&#xff1a; pwd&#xff08;查…...

IDEA Mac快捷键(自查询使用)

Editing&#xff08;编辑&#xff09; Control Space 基本的代码补全&#xff08;补全任何类、方法、变量&#xff09;Control Shift Space 智能代码补全&#xff08;过滤器方法列表和变量的预期类型&#xff09;Command Shift Enter 自动结束代码&#xff0c;行末自动添…...

认识redis 及 Ubuntu安装redis

文章目录 一. redis概念二. redis应用场景二. redis的特性四. 使用Ubuntu安装redis 一. redis概念 redis 是在内存中存储数据的中间件, 用在分布式系统 redis是客户端服务器结构的程序, 客户端服务器之间通过网络来通信 二. redis应用场景 redis可用作数据库 类似MySQL, 但…...

6.结果处理组件之ResponseHandler

前言 feign发送完请求后, 拿到返回结果, 那么这个返回结果肯定是需要经过框架进一步处理然后再返回到调用者的, 其中ResponseHandler就是用来处理这个返回结果的, 这也是符合正常思维的处理方式, 例如springmvc部分在调用在controller端点前后都会增加扩展点。 从图中可以看得…...

【C#】调用外部应用

以WINFORM应用程序为例&#xff0c;在C#应用程序中调用PYTHON程序&#xff08;Matplotlib绘制图形程序&#xff09;&#xff0c;将调用PYTHON程序生成的窗口程序嵌入在WINFORM窗口中 窗口程序类 using System; using System.Collections.Generic; using System.Data; using S…...

JavaWeb--JDBC

JDBC&#xff08;Java Database Connectivity&#xff0c;Java数据库连接&#xff09;是一种Java API&#xff0c;可以让Java程序连接到数据库并进行数据的操作。它是Java平台的一部分&#xff0c;由Sun Microsystems&#xff08;现为Oracle Corporation的一部分&#xff09;开…...

神经网络归一化方法总结

在深度学习中&#xff0c;归一化 是提高训练效率和稳定性的关键技术。以下是几种常见的神经网络归一化方法的总结&#xff0c;包括其核心思想、适用场景及优缺点。 四种归一化 特性Batch NormalizationGroup NormalizationLayer NormalizationInstance Normalization计算维度…...

Debian/Ubuntu 、Fedora 、Arch Linux, 在Linux上,对文本文件进行多线程压缩 xz、pxz、zstd、7z、lrzip

Debian/Ubuntu 、Fedora 、Arch Linux&#xff0c; 在Linux上&#xff0c;对文本文件进行多线程压缩 xz、pxz、zstd、7z、lrzip 前言对比多线程压缩1. 使用 pxz安装 pxz使用 pxz 2. 使用 xz 的 -T 选项使用 xz -T 3. 其他压缩命令1. 使用 gzip2. 使用 bzip23. 使用 xz4. 使用 7…...

前端使用fontfaceobserver库实现字体设置

要使用FontFaceObserver来加载设置项目本地的字体&#xff0c;先确保字体文件位于项目中或者可以从服务端获取到&#xff0c;这样就可以使用FontFaceObserver来检测并加载这些字体 主要有以下几步&#xff1a; npm或者yarn安装引入fontfaceobserver字体资源引入和font-face配置…...

SSM--SpringMVC复习(二)

请求 URL匹配&#xff1a; RequestMapping RequestMapping 负责将请求映射到对应的控制器方法上。 RequestMapping 注解可用于类或方法上。用于类上&#xff0c;表示类中的所有响应请求的方法都以该地址作为父路径。 在整个 Web 项目中&#xff0c;RequestMapping 映射的请求…...

Oracle 11gR2 坏块修复实例一则

背景 前段时间在 Oracle 11gR2 数据库中发现了坏块问题。环境是 64 位 Linux 平台。本文将详细介绍如何使用 DBMS_REPAIR 进行在线修复&#xff0c;当然也可以基于备份和 RMAN 的修复方法这里暂时不做介绍。 发现坏块 1. 从 alert.log 中发现错误 在 alert.log 文件中发现了…...

使用 Docker Compose 来编排部署LMTNR项目

使用 Docker Compose 来部署一个包含 Linux、MySQL、Tomcat、Nginx 和 Redis 的完整项目的例子。假设我们要部署一个简单的 Java Web 应用&#xff0c;并且使用 Nginx 作为反向代理服务器。 项目目录结构 首先需要确保 Docker 和docker-compose已经安装并正在运行。docker --v…...

el-table 根据屏幕大小 动态调整max-height 的值

<template><div><p>窗口高度&#xff1a;{{ windowHeight }} px</p></div> </template><script> export default {data() {return {// 下面的 -250 表示减去一些表单元素高度 这个值需要自己手动调整windowHeight: document.docume…...

el-cascader 使用笔记

1.效果 2.官网 https://element.eleme.cn/#/zh-CN/component/cascader 3.动态加载&#xff08;官网&#xff09; <el-cascader :props"props"></el-cascader><script>let id 0;export default {data() {return {props: {lazy: true,lazyLoad (…...

Cookie概念和API

Cookie概念 Cookie在HTTP中它表示服务器送给客户端浏览器的小甜点。其实Cookie就是一个键和一个值构成的&#xff0c;随着服务器端的响应发送给客户端浏览器。然后客户端浏览器会把Cookie保存起来&#xff0c;当下一次再访问服务器时把Cookie再发送给服务器。 Cookie是由服务器…...

Linux服务器安装mongodb

因为项目需要做评论功能&#xff0c;领导要求使用mongodb&#xff0c;所以趁机多学习一下。 在服务器我们使用docker安装mongodb 1、拉取mongodb镜像 docker pull mongo &#xff08;默认拉取最新的镜像&#xff09; 如果你想指定版本可以这样 docker pull mongo:4.4&#…...

32.4 prometheus存储磁盘数据结构和存储参数

本节重点介绍 : prometheus存储磁盘数据结构介绍 indexchunkshead chunksTombstoneswal prometheus对block进行定时压实 compactprometheus 查看支持的存储参数 prometheus存储示意图 内存和disk之间的纽带 wal WAL目录中包含了多个连续编号的且大小为128M的文件&#xff0c…...

两个生活中的例子反向理解正/反向代理?

正向代理 场景&#xff1a;你在学校里想访问一个被限制的网站&#xff0c;比如某个社交媒体平台。 操作方式&#xff1a; 你把访问请求发送给学校的代理服务器&#xff08;正向代理&#xff09;。代理服务器代表你向互联网发出请求&#xff0c;去访问那个受限的网站。网站的响…...

数据结构-线性表

数据结构-线性表 线性表的任意元素存放地址&#xff1a;Ai a1 L *(i-1) 当i0 则 Aia0L*i 少了一次计算 按照计算方法&#xff0c;当下标为0&#xff0c;可以少执行一次减法&#xff0c;这也是c数组下标取0的原因。 无论n多大都是一个固定时间称之为O(1) 时间复杂度 顺序表的运…...

Python酷库之旅-第三方库Pandas(245)

目录 一、用法精讲 1156、pandas.tseries.offsets.MonthEnd.is_month_start方法 1156-1、语法 1156-2、参数 1156-3、功能 1156-4、返回值 1156-5、说明 1156-6、用法 1156-6-1、数据准备 1156-6-2、代码示例 1156-6-3、结果输出 1157、pandas.tseries.offsets.Mon…...

贵阳思普信息技术有限公司 OA系统 apilogin 接口存在SQL注入漏洞风险

免责声明: 本文旨在提供有关特定漏洞的深入信息,帮助用户充分了解潜在的安全风险。发布此信息的目的在于提升网络安全意识和推动技术进步,未经授权访问系统、网络或应用程序,可能会导致法律责任或严重后果。因此,作者不对读者基于本文内容所采取的任何行为承担责任。读者在…...

重学 Android 自定义 View 系列(九):侧边字母选择器

前言 本文来实现一个侧边字母选择器&#xff0c;很常见的一个控件&#xff0c;和上篇文章星星评分用到的关键技术点类似&#xff0c;难度不大&#xff0c;本篇再来温故知新一下。 最终效果如下&#xff1a; 1. 效果分析 每个字母被均匀分布在整个控件区域中&#xff1b;触摸…...

网络原理->DNS协议和NAT协议解

前言 大家好我是小帅&#xff0c;今天我们来了解应用层的DNS协议和NAT技术 个人主页&#xff1a;再无B&#xff5e;U&#xff5e;G 文章目录 1.重要应⽤层协议DNS(Domain Name System)1.1 DNS背景 2. NAT技术3. 总结 1.重要应⽤层协议DNS(Domain Name System) DNS是⼀整套从域…...

亚马逊开发视频人工智能模型,The Information 报道

根据《The Information》周三的报道&#xff0c;电子商务巨头亚马逊&#xff08;AMZN&#xff09;已开发出一种新的生成式人工智能&#xff08;AI&#xff09;&#xff0c;不仅能处理文本&#xff0c;还能处理图片和视频&#xff0c;从而减少对人工智能初创公司Anthropic的依赖…...

【JS】React与Vue的异步编程对比:深度解析与实战案例全面指南

文章目录 前言更多实用工具React与Vue概述ReactVue 异步编程基础回调函数PromiseAsync/Await React中的异步编程使用Axios进行数据请求异步操作与组件生命周期React Hooks中的异步处理 Vue中的异步编程使用Axios进行数据请求异步操作与Vue生命周期Vue Composition API中的异步处…...

CTF-WEB: 2024强网杯青少年专项赛 ezFindShell writeup

打开直接下载www.zip 通过百度网盘分享的文件&#xff1a;ezFindShell.zip 链接&#xff1a;https://pan.baidu.com/s/1JQjOk-qxaOf0s4f3Fgww7w?pwd1111 提取码&#xff1a;1111 --来自百度网盘超级会员V2的分享使用阿里webshell进行检测,找到可利用文件,或者直接全全局搜索…...

docker网络配置

文章目录 前言一、docker网络访问原理二、docker配置多台机器可以相互访问三、高级网络配置四、最佳实践总结前言 在当今的软件开发和运维领域,Docker 已经成为了容器化服务的标准之一。它不仅简化了应用的部署过程,还大大提高了资源利用率。然而,随着Docker应用的深入,网…...

AI生成的一个.netcore 经典后端架构

下面是一个完整的 .NET Core 后端项目示例&#xff0c;使用 Dapper 作为轻量级 ORM 访问 Oracle 数据库&#xff0c;并实现高性能架构。我们将实现学生表、课程表、成绩表和班级表的基本增删改查功能&#xff0c;以及查询某个班级学生成绩的功能&#xff0c;并使用自定义缓存来…...

docker学习的初识

一、docker官方安装地址: 根据官网找对应的环境,相关的安装命令自行官网不在累赘; 查看Docker的版本号:docker -v Docker version 27.3.1, build ce12230查看相应的镜像docker images REPOSITORY TAG IMAGE ID CREATED SIZE docker/wel…...

【Git】Git 完全指南:从入门到精通

Git 完全指南&#xff1a;从入门到精通 Git 是现代软件开发中最重要的版本控制工具之一&#xff0c;它帮助开发者高效地管理项目&#xff0c;支持分布式协作和版本控制。无论是个人项目还是团队开发&#xff0c;Git 都能提供强大的功能来跟踪、管理代码变更&#xff0c;并保障…...

webrtc ios h264 硬编解码

webrtc ios h264 硬编解码 一 ios 系统支持 从ios8开始&#xff0c;苹果公司开放了硬解码和硬编码API&#xff08;即 VideoToolbox.framework API&#xff09; 二 主要api 1 主要解码函数 VTDecompressionSessionCreate // 创建解码 session VTDecompressionSession…...

ubuntu20.04更换安装高版本CUDA以及多个CUDA版本管理

Ubuntu 20.04下多版本CUDA的安装与切换 CUDA安装配置环境变量软连接附上参考博客CUDA安装 cuda官方下载地址 因为我需要安装的是11.1版本的,所以这里按着11.1举例安装 安装命令如下: wget https://developer.download.nvidia.com/compute/cuda/11.1.0/local_installers/cu…...

生鲜食品o2o商城系统|Java|SSM|VUE| 前后端分离

【重要1⃣️】前后端源码万字文档部署文档 【重要2⃣️】正版源码有问题包售后 【重要3⃣️】可复制品不支持退换货 【包含内容】 【一】项目提供非常完整的源码注释 【二】相关技术栈文档 【三】源码讲解视频 【其它服务】 【一】可…...

C 语言静态库与动态库的生成和使用

在 YouTube 上找到一个视频 动态链接库静态链接库的生成和使用&#xff0c;它把用 GCC 生成静态库和动态库&#xff0c;以及如何使用他们说的很明白&#xff0c;有条件的可以直接看那个视频。本文就是一个观后的实操和笔记&#xff0c;加添了更多如何查看动态库&#xff0c;静态…...

分布式锁的实现方案有哪些?各自的原理是怎样的?使用场景有哪些?与单体架构中锁区别?存在哪些问题?如何解决?注意事项?

一、分布式锁的实现方案 分布式锁的实现方案主要包括以下几种&#xff1a; 基于数据库的分布式锁&#xff1a; 利用数据库的事务特性来实现锁功能。在数据库中创建一个具有唯一约束的锁表&#xff0c;加锁时插入一行记录&#xff0c;释放锁时删除这行记录。简单易用&#xf…...

企业如何落地搭建商业智能BI系统

随着新一代信息化、数字化技术的应用&#xff0c;引发了新一轮的科技革命&#xff0c;现代化社会和数字化的联系越来越紧密&#xff0c;数据也变成继土地、劳动力、资本、技术之后的第五大生产要素&#xff0c;这一切都表明世界已经找准未来方向&#xff0c;前沿科技也与落地并…...

python学习——元组的创建于删除

在 Python 中&#xff0c;元组&#xff08;tuple&#xff09;是一种内置的数据类型&#xff0c;用于存储不可变的有序元素集合。以下是关于 Python 元组的一些关键点&#xff1a; 文章目录 定义元组1. 使用圆括号 ()2. 使用 tuple() 函数3. 使用单个元素的元组4. 不使用圆括号…...

智能化图书馆导航系统方案之系统架构与核心功能设计

hello~这里是维小帮&#xff0c;点击文章最下方获取图书馆导航系统解决方案&#xff01;如有项目需求和技术交流欢迎大家私聊我们~撒花&#xff01; 针对传统图书馆在图书查找困难、座位紧张、空间导航不便方面的问题&#xff0c;本文深入剖析了基于高精度定位、3D建模、图书搜…...

Linux网络——IO模型和多路转接

通常所谓的IO&#xff0c;其本质就是等待通信和进行通信&#xff0c;即IO 等 拷贝。 那么想要做到高效的IO&#xff0c;就要在单位时间内&#xff0c;减少“等”的比重。 一.五种IO模型 阻塞 IO: 在内核将数据准备好之前, 系统调用会一直等待. 所有的套接字, 默认都是阻塞方…...

浅谈网络 | 应用层之HTTP协议

目录 HTTP 请求的准备HTTP 请求的构建HTTP 请求的发送过程HTTP 返回的构建HTTP 2.0QUIC 协议HTTP 3.0 在讲完传输层之后&#xff0c;我们接下来进入应用层的内容。应用层的协议种类繁多&#xff0c;那从哪里开始讲起呢&#xff1f;不妨从我们最常用、最熟悉的 HTTP 协议 开始。…...

【CSS】页面滚动到一定位置时,指定区域固定不变

一. 需求 移动端&#xff1a;下滑时&#xff0c;当下滑到一定位置时&#xff0c;指定区域不跟随下滑-【固定跟随区域】一直在顶部效果 &#xff08;1&#xff09;未滚动前 &#xff08;2&#xff09;滚动后 二. 实现 <template><div class"global-application…...

瀚高创库建表pgsql

1.瀚高下载地址&#xff1a; 下载 (highgo.com)https://www.highgo.com/down_main.html 2.瀚高linux安装 上传deb文件到ubuntu系统中 执行 dpkg -i hgdb-see-4.5.8-fe4791c.x86_64.deb 命令安装数据库 安装完成后&#xff0c;会在/opt 目录下生成安装目录 数据库安装完毕后…...

Vim 高级操作与技巧指南

在上一篇文章中&#xff0c;我们了解了 Vim 的基本操作和模式&#xff0c;掌握了如何进行文件编辑、光标移动、文本操作等基本技能。现在&#xff0c;我们将深入探讨 Vim 的一些高级功能&#xff0c;包括插件管理、脚本编写、定制快捷键等内容&#xff0c;以进一步提高你的工作…...

Vue3.0里为什么要用 Proxy API 替代 defineProperty API ?

Vue 3.0 之所以使用 Proxy API 替代 Object.defineProperty,主要是为了提升性能、减少代码复杂性,并解决 Vue 2.x 在响应式处理中的一些局限性。下面我们通过对比这两种方式的工作原理、优缺点,并结合实际项目代码示例来详细讲解。 1. Object.defineProperty 的局限性 在 …...

【基于规则】n-sigma

在正态分布中: 约68%的数据点会落在均值1σ的范围内约95%的数据点会落在均值2σ的范围内约99.7%的数据点会落在均值3σ的范围内这称为68-95-99.7法则(Empirical Rule)。 假设我们有一组数据,其均值为μ,标准差为σ。某个数据点x的n-sigma计算公式如下: 若z=1.2,说明该…...

JavaScript 判断字符串是否包含子字符串的几种方法

这里写目录标题 方法 1: 使用 includes()方法 2: 使用 indexOf()方法 3: 使用正则表达式方法 4: 使用 search()方法 5: 用 startsWith() 或 endsWith()推荐使用 JavaScript 判断字符串是否包含子字符串&#xff0c;不要只知道 indexOf() &#xff0c;还可以尝试一下其他写法。 …...

goframe框架bug-记录

implement not found for interface ICompany, forgot register? 错误解决检查&#xff1a; 1.有没有init 2. 注入问题 3. 注入问题...