前端面试题 计算机网络
文章目录
- ios 7层协议
- tcp协议和udp协议的区别
- tcp协议如何确保数据的可靠
- http和tcp的关系
- url输入地址到呈现网页有哪些步骤
- post和get本质区别,什么时候会触发二次预检
- GET请求:
- POST请求:
- 触发二次预检(CORS中的预检请求):
- http 和 https 区别
- https加密过程
- 浏览器缓存
- http 各版本协议的差异
- http响应码
- 同源策略
- 如何解决跨域
ios 7层协议
tcp / udp 协议属于哪一层?
ip 协议 属于哪一层?
应用层:http协议 https协议
表示层
会话层,
传输层: tcp udp协议
网络层: ip协议 ipv4/ipv6,
数据链路层,
物理层
tcp协议和udp协议的区别
TCP: 是面向连接的协议。在数据传输之前,必须先建立一个连接,数据传输完成后再释放连接。这确保了数据的可靠性和顺序性。
UDP: 是无连接的协议。每个数据包都是独立的,发送端和接收端不需要建立持久的连接。这使得UDP更轻量和快速,但也意味着它不提供数据包的可靠性和顺序性。
tcp协议如何确保数据的可靠
tcp协议在传输前会建立连接,对传输的数据有确认机制(确认对方是否收到),有丢失重传机制(如果对方未收到,重新传一份),有流量控制机制(防止传输过快而导致对方来不及处理导致丢包)等,确保数据的完整性和顺序性。
http和tcp的关系
HTTP使用TCP作为其传输层协议,通过TCP建立的连接来传输数据,确保可靠性和完整性。
url输入地址到呈现网页有哪些步骤
解析URL:
当用户在浏览器中输入URL(统一资源定位符),浏览器首先对URL进行解析,提取出协议(通常是HTTP或HTTPS)、主机名(域名)、路径等信息。
域名解析(DNS):
浏览器需要将主机名解析为对应的IP地址,这一过程通过DNS(域名系统)完成。如果浏览器缓存中没有对应的IP地址,它会向DNS服务器发送查询请求,获取目标服务器的IP地址。
建立TCP连接:
使用获得的IP地址,浏览器通过TCP协议与目标服务器建立连接。对于HTTPS,还需要进行SSL/TLS握手过程以建立安全连接。
发起HTTP请求:
一旦TCP连接建立,浏览器通过HTTP协议向服务器发送请求。该请求包含要访问的资源的详细信息,如路径、请求方法(GET、POST等)等。
服务器处理请求:
服务器收到请求后,会根据请求的内容进行处理,可能涉及数据库查询、业务逻辑执行等。服务器将处理结果封装成HTTP响应并返回给浏览器。
接收和解析响应:
浏览器接收服务器的HTTP响应,然后开始解析响应的内容。这包括检查状态码(例如200表示成功,404表示未找到等)、解析报头信息等。
下载页面资源:
如果响应包含HTML页面,浏览器会开始下载HTML文档。随后,它会解析HTML文档,同时发起对文档中引用的其他资源(如CSS、JavaScript、图像等)的请求。
构建文档对象模型(DOM):
浏览器解析HTML文档并构建DOM,这是浏览器用于表示页面结构的内部模型。
渲染页面:
浏览器使用DOM和CSSOM(CSS对象模型)来构建渲染树,然后根据渲染树和布局信息执行绘制操作,最终将页面呈现在用户的屏幕上。
执行JavaScript:
如果页面包含JavaScript代码,浏览器会执行这些脚本。脚本可以修改DOM、处理用户交互等,影响页面的动态行为。
post和get本质区别,什么时候会触发二次预检
HTTP协议中的POST和GET是两种常见的请求方法,它们有一些本质区别。
GET请求:
- 参数位置: GET请求的参数附在URL上,通过URL的查询字符串传递。
- 安全性: GET请求的参数可见,因为它们附在URL上,不适合传输敏感信息。
- 数据长度: 由于参数在URL中,GET请求对传输的数据有长度限制,因此适用于较小的数据。
- ** 请求会被缓存: ** 默认情况下,GET请求会被浏览器缓存,这是因为GET请求通常用于获取资源
POST请求:
- 参数位置: POST请求的参数通过请求体传递,而不是附在URL上。
- 安全性: POST请求的参数不可见,因为它们在请求体中,适合传输敏感信息。
- 数据长度: POST请求对传输的数据没有固定的长度限制,适用于传输较大的数据。
- ** 请求会被缓存: ** 默认情况下,POST请求不会被浏览器缓存,这是因为POST请求通常用于提交表单或者传递敏感信息,缓存这类请求可能导致安全性问题
触发二次预检(CORS中的预检请求):
对于跨域请求,浏览器会执行CORS(跨域资源共享)策略。当满足以下任一条件时,就是非简单请求,浏览器会触发CORS预检(Preflight):
- 使用了非简单请求方式: 请求方式不是 HEAD、GET、POST不是这三种,比如DELET、PUT。
- 使用了特殊的Content-Type: Content-Type不是以下三者之一:
application/x-www-form-urlencoded
、multipart/form-data
、text/plain
。
在这种情况下,浏览器会先发送一个OPTIONS预检请求,以确定实际请求是否安全。如果服务器确认可以接受实际请求,然后浏览器才会发送实际请求。这样做是为了确保跨域请求不会对服务器产生未预期的影响,从而提高安全性。
总结:
- GET和POST的本质区别在于数据传递的位置和安全性。
- 二次预检通常在跨域的情况下,对非简单请求进行预检。
http 和 https 区别
HTTP(HyperText Transfer Protocol)和HTTPS(HyperText Transfer Protocol Secure)是用于在网络上传输数据的两种协议,它们之间存在几个关键的区别:
-
安全性:
- HTTP: 是明文传输的协议,数据传输过程中不加密,因此容易被中间人窃听和篡改。
- HTTPS: 使用了SSL/TLS协议进行加密,确保数据在传输过程中的安全性。因此,HTTPS更适用于涉及隐私和安全性要求较高的场景,如登录、支付等。
-
端口:
- HTTP: 默认使用端口80进行通信。
- HTTPS: 默认使用端口443进行通信。
-
证书:
- HTTP: 不涉及证书的使用。
- HTTPS: 使用SSL/TLS证书,这是由证书颁发机构(CA)颁发的,用于验证服务器的身份。这可以防止中间人攻击,确保用户连接的是正确的服务器。
-
协议:
- HTTP: 是基于TCP协议的。
- HTTPS: 在HTTP的基础上通过SSL/TLS协议进行加密。
-
性能:
- HTTP: 由于不需要进行加密解密的过程,通常比HTTPS略快。
- HTTPS: 加密和解密的过程会引入一些额外的计算,因此在性能上可能稍慢一些。然而,随着硬件和加密算法的改进,这种差距正在减小。
-
SEO:
- HTTP: 被搜索引擎更容易抓取和索引。
- HTTPS: 被搜索引擎更青睐,Google等搜索引擎将HTTPS作为搜索排名的一个因素,并在浏览器地址栏标记非HTTPS网站为“不安全”。
-
使用场景:
- HTTP: 适用于不涉及敏感信息的场景,如阅读新闻、博客等。
- HTTPS: 适用于需要保护用户隐私和数据安全的场景,如登录、支付、个人信息传输等。
总的来说,HTTPS在安全性和隐私方面更为可靠,因此在涉及用户敏感信息的情况下,推荐使用HTTPS。在现代互联网环境中,越来越多的网站都采用了HTTPS协议。
https加密过程
非对称加密 + 对称加密
1.客户端向服务端发起第一次握手请求,告诉服务端客户端所支持的SSL的指定版本、加密算法及密钥长度等信息。
2.服务端将自己的公钥发给数字证书认证机构,数字证书认证机构利用自己的私钥对服务器的公钥进行数字签名,并给服务器颁发公钥证书。(证书一直保存在服务器)
3.服务端将证书发给客户端。(证书里面有服务器的公钥,中间人能够拿到服务器的公钥,但他没有认证机构的私钥,无法加密生成数字签名,纂改证书)
4.客服端利用数字认证机构的公钥(浏览器保存在客户端的)解密证书的数字签名,确认服务器公开密钥的真实性(证书的数字签名解密后,必须与服务端的公钥相同)。
5.客户端使用服务端的公开密钥加密自己生成的对称密钥,发给服务端。
6.服务端收到后利用私钥解密信息,获得客户端发来的对称密钥。
7.通信双方可用对称密钥来加密解密信息。
浏览器缓存
HTTP协议定义了一套缓存机制,允许浏览器或其他客户端缓存已获取的资源,以减少对服务器的请求和提高性能。HTTP缓存主要通过两个头部实现:Cache-Control
和Expires
。
-
Cache-Control头部: 这是最常用的控制缓存的头部之一。通过该头部,服务器可以指示浏览器如何处理缓存。常见的指令包括:
public
: 允许所有的缓存(默认值)。private
: 只允许单个用户缓存。max-age
: 指定资源在缓存中保持的最长时间(秒)。no-cache
: 表示缓存需要重新验证,即每次都需要向服务器发送请求验证资源是否过期。no-store
: 要求浏览器不要缓存资源,每次都要向服务器请求。
示例:
Cache-Control: max-age=3600, must-revalidate
-
Expires头部: 这是另一个控制缓存的头部,指定了资源的过期时间。过期时间是一个HTTP日期,表示资源过期的确切时间,缺点是它依赖服务器和客户端的时间同步。
示例:
Expires: Wed, 21 Oct 2023 07:28:00 GMT
除了这两个头部,还有其他一些与缓存相关的头部,如Last-Modified
和ETag
,用于验证缓存的新鲜度。这些头部一起协助客户端和服务器在资源请求和响应之间进行有效的缓存管理。浏览器会优先判断是否有ETag
- ETag:
强标识符: ETag通常是一个资源的强标识符,因为它可以使用更复杂的算法,例如哈希函数,以确保唯一性。
更精确: 由于可以使用更精确的标识符,ETag比Last-Modified更能捕捉到资源的实际变化。
处理时钟回退: 与Last-Modified不同,ETag不受时钟回退的影响,因为它通常是基于内容的。
- Last-Modified:
简单: Last-Modified使用资源的上次修改时间,这是一种相对简单的方法,可以很容易地从文件系统或者HTTP头中获取。
降低服务器负担: 由于不需要额外的计算,使用Last-Modified可能会在服务器性能上更具优势。
时钟回退: 如果服务器与客户端的时钟有轻微的不同步,Last-Modified相对容忍时钟回退。
流程图
http 各版本协议的差异
HTTP(超文本传输协议)是用于在Web上传输数据的协议。不同版本的HTTP协议有一些显著的变化和改进。以下是几个主要版本的HTTP及其主要区别:
-
HTTP/1.0:
- 初始版本,定义在RFC 1945。
每个请求/响应都需要建立一个新的TCP连接,导致高延迟。
不支持持久连接,每个请求/响应都需要独立的连接。
-
HTTP/1.1:
- 引入了持久连接(persistent connections),一个连接可以传输多个请求和响应。
引入了管道化(pipelining),允许客户端同时发送多个请求而不必等待之前的响应。
引入了更多的缓存控制机制,如Cache-Control头部。
- 支持范围请求(Range Requests)。
- 引入了虚拟主机(Virtual Hosts),允许一台服务器托管多个域名。
-
HTTP/2:
- 定义在RFC 7540。
引入了二进制传输,替代了HTTP/1.x中的文本协议,提高了效率。
多路复用(Multiplexing):允许在一个连接上同时发送多个请求和响应,解决了HTTP/1.x中的队头阻塞问题。
头部压缩:使用HPACK算法对HTTP头部进行压缩,减少了数据传输量。
- 服务器推送(Server Push):服务器可以在客户端请求之前主动向客户端推送资源。
- 支持优先级和依赖关系。
-
HTTP/3:
- 定义在RFC 7540。
基于UDP协议,使用QUIC(Quick UDP Internet Connections)协议。
- 进一步提高性能和安全性。
- 具有更低的连接建立时间,支持快速迁移(Fast Handover)和移动性。
- 使用多个流进行并行传输。
- 通过QUIC的特性,减少了握手的时间,提高了连接的安全性。
http响应码
HTTP状态码是指示客户端请求服务器的结果的三位数字。它们是HTTP(超文本传输协议)标准的一部分,由服务器返回,以响应客户端发给服务器的请求。以下是一些常见的HTTP状态码:
-
1xx(信息性): 请求已收到,继续处理。
100 Continue(继续)
- 101 Switching Protocols(切换协议)
-
2xx(成功): 请求已成功接收、理解并接受。
200 OK(成功)
- 201 Created(已创建)
- 204 No Content(无内容)
- 206 Partial Content(部分内容)
-
3xx(重定向): 需要进一步采取措施才能完成请求。
301 Moved Permanently(永久移动)
302 Found(临时重定向)
304 Not Modified(未修改)
- 307 Temporary Redirect(临时重定向)
-
4xx(客户端错误): 请求包含错误的语法或无法满足。
400 Bad Request(错误的请求)
401 Unauthorized(未经授权)
403 Forbidden(禁止)
404 Not Found(未找到)
- 405 Method Not Allowed(方法不被允许)
- 429 Too Many Requests(请求过多)
-
5xx(服务器错误): 服务器未能完成有效请求。
500 Internal Server Error(服务器内部错误)
- 502 Bad Gateway(错误的网关)
- 503 Service Unavailable(服务不可用)
504 Gateway Timeout(网关超时)
同源策略
同源策略是一个重要的安全策略,它用于限制一个源的文档或者它加载的脚本如何能与另一个源的资源进行交互。
它能帮助阻隔恶意文档,减少可能被攻击的媒介。
同源是指协议、域名、 端口 三个都相同的才能互相访问,即若协议、域名、端口有一个不相同时,浏览器禁止页面加载或执行与自身不同域的脚本。
URL | 结果 | 原因 |
---|---|---|
http://store.company.com/dir2/other.html | 同源 | 只有路径不同 |
http://store.company.com/dir/inner/another.html | 同源 | 只有路径不同 |
https://store.company.com/secure.html | 失败 | 协议不同 |
http://store.company.com:81/dir/etc.html | 失败 | 端口不同(http:// 默认端口是 80) |
http://news.company.com/dir/other.html | 失败 | 主机不同 |
如何解决跨域
- 通过html几个特殊的标签进行访问
<script>
、<link>
、img
、<iframe>
当然并不是所有的外部链接都支持,这取决对方网站服务器的配置 - 通过jsonp来实现跨域请求 本质也是通过插入script标签,利用其src属性来实现的,并且,只能get请求。
- 通过CORS(跨域资源共享)实现跨域请求,需要服务器设置跨域资源共享
Access-Control-Allow-Origin:*
Access-Control-Allow-Methods:POST,GET,OPTIONS
Access-Control-Allow-Headers:Origin,x-requested-with,content-type,Accept
- 通过代理实现跨域请求(例如nginx 、node中间件)
在同源服务器里通过node.js(express/koa)来请求目标服务器的资源,实现转发。
//引入 express 框架
const express = require('express');
//引入 代理中间件
const { createProxyMiddleware } = require('http-proxy-middleware');
//创建服务实例
const app = express();// 使用一下代理中间件,第一个参数为我们需要代理的 url
// 第二个参数为跳转的 url
app.use('/api', createProxyMiddleware({ target: 'http://www.example.com:5000', changeOrigin: true }));//监听5000端口
app.listen(5000);
相关文章:

前端面试题 计算机网络
文章目录 ios 7层协议tcp协议和udp协议的区别tcp协议如何确保数据的可靠http和tcp的关系url输入地址到呈现网页有哪些步骤post和get本质区别,什么时候会触发二次预检GET请求:POST请求:触发二次预检(CORS中的预检请求)&…...

windows aseprite编译指南(白嫖)
aseprite是画像素图的专业软件,steam上有售卖,不过官方也在github开源了,需要自己编译。 1. 首先获取源码 直接在github上clone源码到本地指定目录 需要先下载git,下载好后在git.bash中执行(需要腾一个用来安放源码的…...

生活污水处理一体化处理设备有哪些
生活污水处理一体化处理设备有多种类型,包括但不限于以下几种: 鼓风机:提供曝气系统所需的气流。潜水污水提升泵:将污水从低处提升到高处。旋转式滚筒筛分机:对污水中的悬浮物进行分离和筛选。回旋式格栅:…...

JSON可视化管理工具JSON Hero
本文软件由网友 zxc 推荐; 什么是 JSON Hero ? JSON Hero 是一个简单实用的 JSON 工具,通过简介美观的 UI 及增强的额外功能,使得阅读和理解 JSON 文档变得更容易、直观。 主要功能 支持多种视图以便查看 JSON:列视图…...

P6入门:项目初始化7-项目详情之代码/分类码Code
前言 使用项目详细信息查看和编辑有关所选项目的详细信息,在项目创建完成后,初始化项目是一项非常重要的工作,涉及需要设置的内容包括项目名,ID,责任人,日历,预算,资金,分类码等等&…...

跨国企业如何选择安全靠谱的跨国传输文件软件?
随着全球化的不断发展,跨国企业之间的合作变得越来越频繁。而在这种合作中,如何安全、可靠地将文件传输给合作伙伴或客户,成为了跨国企业必须面对的问题。 然而,跨国文件传输并不是一件容易的事情,由于网络物理条件的…...

Command Injection
Command Injection "Command Injection"(命令注入),其目标是通过一个应用程序在主机操作系统上执行任意命令。当一个应用程序将用户提供的数据(如表单、cookies、HTTP头等)传递给系统shell时,就可能发生命令注入攻击。在…...

LeetCode | 20. 有效的括号
LeetCode | 20. 有效的括号 OJ链接 这道题可以使用栈来解决问题~~ 思路: 首先我们要使用我们之前写的栈的实现来解决此问题~~如果左括号,就入栈如果右括号,出栈顶的左括号跟右括号判断是否匹配 如果匹配,继续如果不匹配&#…...
英语语法 - 祈使句 | 虚拟语气
目录 [ 祈使句 ] 1. [ 及物动词原形 宾语 (状语) | 不及物动词原形 (状语) | be 表语 (状语) ] 2. [ Dont 及物动词原形 宾语 | dont 不及物动词原形 ] 3. [ dont be 表语 ] 4. 特殊 you [ 虚拟语气 ] 1. [ 条件状语从句 - 虚拟语气 ] 现在时态虚拟语气 将来…...

记录pytorch实现自定义算子并转onnx文件输出
概览:记录了如何自定义一个算子,实现pytorch注册,通过C编译为库文件供python端调用,并转为onnx文件输出 整体大概流程: 定义算子实现为torch的C版本文件注册算子编译算子生成库文件调用自定义算子 一、编译环境准备…...

ARPG----C++学习记录04 Section8 角色类,移动
角色类输入 新建一个角色C,继承建立蓝图,和Pawn一样,绑定输入移动和相机. 在构造函数中添加这段代码也能实现。打开UsePawnControlRotation就可以让人物不跟随鼠标旋转 得到旋转后的向前向量 使用旋转矩阵 想要前进方向和旋转的方向对应。获取当前控制…...

拆解软件定义汽车:OS突围
软件作为智能汽车的核心组成部分,由于自身较为独立和复杂的IT学科体系,其技术链路、产业分工、价值分配、商业模式相对硬件产品(如域控、激光雷达、摄像头等硬件)而言,在汽车产业内探讨和传播相对较少。 11月3日&…...
并发线程使用介绍(二)
2.2.6 线程的强占 Thread的非静态方法join方法 需要在某一个线程下去调用这个方法 如果在main线程中调用了t1.join(),那么main线程会进入到等待状态,需要等待t1线程全部执行完毕,在恢复到就绪状态等待 CPU调度。 如果在main线程中调用了t1.j…...

【Proteus仿真】【51单片机】多路温度控制系统
文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真51单片机控制器,使用按键、LED、蜂鸣器、LCD1602、DS18B20温度传感器、HC05蓝牙模块等。 主要功能: 系统运行后,默认LCD1602显示前4路采集的温…...

一些可以参考的文档集合15
之前的文章集合: 一些可以参考文章集合1_xuejianxinokok的博客-CSDN博客 一些可以参考文章集合2_xuejianxinokok的博客-CSDN博客 一些可以参考的文档集合3_xuejianxinokok的博客-CSDN博客 一些可以参考的文档集合4_xuejianxinokok的博客-CSDN博客 一些可以参考的文档集合5…...

k8s的service自动发现服务:实战版
Service服务发现的必要性: 对于kubernetes整个集群来说,Pod的地址也可变的,也就是说如果一个Pod因为某些原因退出了,而由于其设置了副本数replicas大于1,那么该Pod就会在集群的任意节点重新启动,这个重新启动的Pod的I…...

项目笔记记录
一、node下载版本报错:npm install --legacy-peer-deps 二、Scheduled: 任务自动化调度 Scheduled 标记要调度的方法的注解,必须指定 cron,fixedDelay或fixedRate属性之一 fixedDelay:固定延迟 延迟执行任务,任务在…...
【leetcode】1137. 第 N 个泰波那契数
题目 泰波那契序列 Tn 定义如下: T0 0, T1 1, T2 1, 且在 n > 0 的条件下 Tn3 Tn Tn1 Tn2 给你整数 n,请返回第 n 个泰波那契数 Tn 的值。 示例 1: 输入:n 4 输出:4 解释: T_3 0 1 1 2 …...

【解决】conda-script.py: error: argument COMMAND: invalid choice: ‘activate‘
运行conda activate base报错: 试了网上找到的解决方法都不行: 最后切换了一下terminal: 从powershell改回cmd(不知道为什么一开始手贱换成powershell) 就可以了...

Linux 性能调优之硬件资源监控
写在前面 考试整理相关笔记博文内容涉及 Linux 硬件资源监控常见的命名介绍,涉及硬件基本信息查看查看硬件错误信息查看虚拟环境和云环境资源理解不足小伙伴帮忙指正 对每个人而言,真正的职责只有一个:找到自我。然后在心中坚守其一生&#x…...

深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录
ASP.NET Core 是一个跨平台的开源框架,用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录,以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)
本文把滑坡位移序列拆开、筛优质因子,再用 CNN-BiLSTM-Attention 来动态预测每个子序列,最后重构出总位移,预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵(S…...
scikit-learn机器学习
# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...

接口自动化测试:HttpRunner基础
相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具,支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议,涵盖接口测试、性能测试、数字体验监测等测试类型…...

【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看
文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...

【Linux系统】Linux环境变量:系统配置的隐形指挥官
。# Linux系列 文章目录 前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变量的生命周期 四、环境变量的组织方式五、C语言对环境变量的操作5.1 设置环境变量:setenv5.2 删除环境变量:unsetenv5.3 遍历所有环境…...

脑机新手指南(七):OpenBCI_GUI:从环境搭建到数据可视化(上)
一、OpenBCI_GUI 项目概述 (一)项目背景与目标 OpenBCI 是一个开源的脑电信号采集硬件平台,其配套的 OpenBCI_GUI 则是专为该硬件设计的图形化界面工具。对于研究人员、开发者和学生而言,首次接触 OpenBCI 设备时,往…...
Python实现简单音频数据压缩与解压算法
Python实现简单音频数据压缩与解压算法 引言 在音频数据处理中,压缩算法是降低存储成本和传输效率的关键技术。Python作为一门灵活且功能强大的编程语言,提供了丰富的库和工具来实现音频数据的压缩与解压。本文将通过一个简单的音频数据压缩与解压算法…...

使用SSE解决获取状态不一致问题
使用SSE解决获取状态不一致问题 1. 问题描述2. SSE介绍2.1 SSE 的工作原理2.2 SSE 的事件格式规范2.3 SSE与其他技术对比2.4 SSE 的优缺点 3. 实战代码 1. 问题描述 目前做的一个功能是上传多个文件,这个上传文件是整体功能的一部分,文件在上传的过程中…...