深度解析与实践:HTTP 协议

一、引言

HTTP(HyperText Transfer Protocol,超文本传输协议)是 Web 应用程序、API、微服务以及几乎所有互联网通信的核心协议。虽然它是我们日常使用的基础技术,但要深刻理解其高效使用、优化以及如何避免性能瓶颈,我们需要从 工作原理优化策略工具最佳实践 等多个角度进行深入分析。

本文将重点讨论 HTTP 协议在实际工作中的应用,帮助开发者理解 HTTP 协议如何在现代 Web 和 API 服务中发挥作用,并提供相关的优化和性能提升建议。


二、HTTP 协议的核心工作原理

HTTP 协议是基于请求/响应模型的客户端-服务器协议。虽然它看起来简单,但其底层的细节直接影响性能和可扩展性。我们将从请求、响应、连接管理等方面进行详细分析。

2.1 HTTP 请求和响应
  • 请求结构

    1. 请求行:包含 HTTP 方法(GET、POST、PUT 等)、请求的 URL 和协议版本。例如:GET /index.html HTTP/1.1
    2. 请求头:包含与客户端和请求相关的元数据,如 User-AgentAccept-Language 等。
    3. 请求体:仅在某些方法(如 POST、PUT)中存在,包含实际数据。
  • 响应结构

    1. 响应行:包含协议版本、状态码和状态描述。例如:HTTP/1.1 200 OK
    2. 响应头:包含与服务器和响应相关的元数据,如 Content-TypeContent-Encoding 等。
    3. 响应体:实际返回的内容(如 HTML、JSON、图像等)。
2.2 连接管理

HTTP 协议采用 TCP 协议进行传输,而每次建立 TCP 连接都需要进行握手,因此优化连接管理是提升性能的关键。

  • 长连接(Keep-Alive):HTTP/1.1 默认启用长连接,即同一个 TCP 连接可以用于多个请求/响应周期。避免了在每个请求时建立新的连接,从而减少了延迟和开销。
  • 多路复用(HTTP/2):HTTP/2 引入了流的概念,允许多个请求/响应在同一个 TCP 连接中并发进行,解决了 HTTP/1.x 中的队头阻塞问题。
2.3 状态码和缓存

状态码和缓存是 HTTP 协议中至关重要的部分,帮助客户端和服务器管理请求和响应。

  • 缓存控制:通过 Cache-Control 头部,服务器可以指定资源的缓存策略。

    • Cache-Control: no-cache:表示该资源不应缓存。
    • Cache-Control: max-age=3600:表示该资源可以缓存 3600 秒。
  • 状态码:合理的使用 HTTP 状态码可以帮助客户端正确理解响应。

    • 200 OK:请求成功。
    • 404 Not Found:资源未找到。
    • 500 Internal Server Error:服务器错误。

三、HTTP 协议的优化策略

在实际开发过程中,HTTP 的性能往往会成为瓶颈,尤其是在高并发、高流量的场景下。因此,针对 HTTP 协议的优化至关重要。以下是一些常见的优化手段,帮助你提高 HTTP 请求和响应的效率。

3.1 减少请求的数量

每个 HTTP 请求都伴随有网络延迟和资源消耗,因此减少请求的数量是提升性能的有效策略。以下是一些常见的做法:

  • 合并请求

    • CSS 和 JS 文件合并:将多个 CSS 或 JavaScript 文件合并成一个文件,从而减少 HTTP 请求次数。
    • 图像雪碧图(Sprite Image):将多个小图标合并成一个大图,从而减少多个图像请求。
  • 异步加载:对于某些不需要立即加载的资源(如广告、社交插件等),可以通过 JavaScript 延迟加载,避免阻塞主页面加载。

3.2 使用压缩技术

HTTP 支持数据压缩(如 Gzip 和 Brotli),通过压缩响应体,可以有效减少数据的传输量,提升响应速度。

  • 启用 Gzip/Brotli 压缩:在 Web 服务器(如 Nginx、Apache)上启用 Gzip 或 Brotli 压缩,减少响应体的大小。

  • 服务器设置

    • Nginx:gzip on;
    • Apache:SetOutputFilter DEFLATE
  • 缓存压缩后的内容:对于静态资源(如 CSS、JS、HTML 等),压缩后的内容可以缓存,从而避免重复的压缩操作。

3.3 优化 DNS 查询和连接

每个 HTTP 请求都需要先进行 DNS 查询,将域名解析成 IP 地址。如果每次请求都要进行 DNS 查询,会增加延迟。因此,优化 DNS 查询和连接非常重要。

  • DNS 预解析:通过在 HTML <head> 标签中使用 <link rel="dns-prefetch" href="//example.com">,浏览器会提前解析指定的域名,减少 DNS 查询时间。
  • 保持 TCP 连接:利用 HTTP/1.1 的长连接和 HTTP/2 的多路复用,减少频繁的连接建立和拆卸。
3.4 采用 HTTP/2 或 HTTP/3

HTTP/2 和 HTTP/3 在 HTTP/1.x 的基础上做了很多优化,可以显著提升性能,特别是在并发请求的场景下。

  • HTTP/2

    • 多路复用:HTTP/2 支持多个请求/响应共享一个 TCP 连接,避免了 HTTP/1.x 中的队头阻塞问题。
    • 头部压缩:HTTP/2 使用 HPACK 算法对 HTTP 头进行压缩,减少了带宽消耗。
  • HTTP/3

    • 基于 QUIC 协议:HTTP/3 基于 QUIC 协议,该协议使用 UDP 代替 TCP,减少了连接建立的延迟,尤其适用于高延迟或不稳定的网络环境。
    • 零 RTT(0-RTT):QUIC 支持零 RTT 连接,首次连接时可以减少握手的时间。
3.5 优化缓存策略

合理配置 HTTP 缓存策略,不仅可以减少请求次数,还能减轻服务器负担。

  • 设置缓存有效期:通过 Cache-Control 头部设置资源的缓存策略。对于静态资源(如图片、JS 文件),可以设置较长的缓存时间;对于动态内容,缓存时间可以设置较短。

    • Cache-Control: max-age=86400:表示缓存 24 小时。
    • Cache-Control: no-store:表示不缓存任何数据。
  • ETag 与 If-None-Match:ETag 是一个服务器生成的文件标识符,当文件内容未变化时,客户端可以通过 If-None-Match 请求头告诉服务器使用缓存的资源,从而避免无谓的下载。


四、HTTP 的高级实践与常见问题

4.1 跨域问题(CORS)

在开发 Web 应用时,跨域问题(CORS,跨源资源共享)是一个常见的挑战。为了允许跨域请求,服务器需要正确配置 Access-Control-Allow-Origin 头。

  • 设置 CORS 头部:服务器可以设置 CORS 相关的 HTTP 头部,允许来自指定域的请求。
    Access-Control-Allow-Origin: https://example.com
    Access-Control-Allow-Methods: GET, POST, PUT
    Access-Control-Allow-Headers: Content-Type
    
4.2 Cookie 和 Session 管理
  • Cookie:用于在客户端存储信息,可以在 HTTP 请求中发送。需要注意的是,Cookie 会增加请求头的大小,因此不宜存储过多数据。

    • Set-Cookie:服务器通过该头部向客户端发送 Cookie。
    • Cookie:客户端发送 Cookie 给服务器。
  • Session:通常与 Cookie 一起使用,Session 存储在服务器端,客户端通过 Cookie 存储 Session ID 来实现会话管理。

4.3 防止 DoS 和 DDoS 攻击

HTTP 协议面临的一个常见安全问题是 DoS(Denial of Service)和 DDoS(Distributed Denial of Service)攻击。为了减轻这种攻击的影响,可以采取以下措施:

  • 限制请求频率:通过限制每个 IP 地址的请求频率,防止单个用户过多的请求占用服务器资源。
  • 使用 Web 防火墙:部署 WAF(Web Application Firewall)来过滤恶意请求。

五、实践指导

HTTP 协议不仅是互联网通信的基石,也是构建高效、安全 Web 应用和服务的关键。通过深入理解 HTTP 协议的工作原理和各种优化策略,开发者可以显著提升系统的性能、稳定性和安全性。

在现代 Web 开发中,HTTP 协议不仅仅是一个简单的请求和响应模型。它涉及到多方面的考量,包括请求优化、连接管理、安全防护、API 设计等多个层面。通过实践中使用的一些优化策略,例如减少请求次数、启用压缩、优化缓存策略以及采用 HTTPS 加密,开发者可以有效降低延迟、提高响应速度并增强系统的安全性。
对于 Web 应用的开发者而言,理解 HTTP 协议及其优化的核心概念,不仅能帮助提升性能,也能让你更有能力在面对复杂系统架构时做出更加合理的设计选择。无论是在微服务架构中优化跨服务的通信,还是在客户端-服务器通信中减少带宽消耗和延迟,精通 HTTP 协议的各种细节和高级特性都是实现高效、可扩展系统的关键。

要在实际应用中落实这些知识,我们建议开发者不仅要具备基础的 HTTP 理解,还要学会如何通过工具(如 Nginx、API 网关等)和技术(如 HTTP/2、WebSocket、TLS 等)来进一步优化和增强应用的整体表现。通过不断测试和调整,确保你的应用能够在高并发和高流量的环境中稳定运行,最终为用户提供更加流畅和安全的体验。
HTTP 协议并不仅仅是一个技术细节,它是构建现代 Web 应用程序的基础。在深入理解其原理后,开发者可以更好地应对网络通信中的挑战,并设计出性能优越且安全可靠的系统架构

六、HTTP 协议的安全性与加密

在现代 Web 开发中,HTTP 协议的安全性至关重要。随着互联网安全问题的日益严峻,简单的 HTTP 已经无法满足保护用户数据和隐私的需求。因此,HTTP 的加密版本 HTTPS(即通过 TLS 加密的 HTTP)应当成为 Web 应用的标准。

6.1 HTTPS 与 HTTP 的区别

HTTPS(Hypertext Transfer Protocol Secure)是在 HTTP 协议的基础上引入了加密机制,通过 TLS(Transport Layer Security)SSL(Secure Sockets Layer) 协议来确保数据的机密性和完整性。主要区别包括:

  • 加密:HTTPS 使用 SSL/TLS 加密传输数据,确保数据在传输过程中不被窃取或篡改。
  • 认证:HTTPS 通过 SSL/TLS 证书提供服务器的身份验证,避免中间人攻击(Man-in-the-Middle)。
  • 完整性:HTTPS 通过哈希算法(如 HMAC)确保数据在传输过程中没有被篡改。
6.2 HTTPS 的工作原理
  1. 客户端发起连接:客户端向服务器发送一个加密请求,要求建立 HTTPS 连接。
  2. SSL/TLS 握手:服务器与客户端通过 SSL/TLS 握手协议确定加密算法、生成会话密钥等。
    • 服务器返回证书,证明其身份。
    • 客户端验证服务器的证书,确保它来自信任的证书颁发机构(CA)。
    • 双方交换密钥,用于加密后续的数据传输。
  3. 数据加密传输:一旦建立了安全的连接,客户端和服务器就可以安全地交换数据。
  4. 断开连接:数据传输完毕后,双方可以关闭连接。
6.3 启用 HTTPS 的实践
  • 获取 SSL/TLS 证书:为确保 HTTPS 的安全性,网站需要从可信的证书颁发机构(CA)购买或获取免费的证书(如 Let’s Encrypt)。
  • 配置 Web 服务器:大多数 Web 服务器(如 Nginx、Apache、Tomcat 等)都支持 HTTPS 配置。配置过程通常包括:
    • 配置 SSL 证书和私钥。
    • 强制使用 TLS 1.2 或 TLS 1.3 协议。
    • 禁止使用已知的弱加密算法(如 SSLv2、SSLv3、TLS 1.0 等)。
6.4 强制 HTTPS(HTTP Strict Transport Security,HSTS)

HSTS 是一种 HTTP 头部机制,强制客户端仅使用 HTTPS 与服务器通信,避免恶意用户通过 HTTP 攻击中间人(MITM)对通信进行篡改。

  • 启用 HSTS:服务器可以通过 Strict-Transport-Security 头部来启用 HSTS。
    Strict-Transport-Security: max-age=31536000; includeSubDomains
    
    这个头部表示客户端在接下来的 365 天内只通过 HTTPS 与服务器通信。
6.5 防止 HTTP 走私(HTTP Smuggling)与 HTTPS 混合内容
  • HTTP 走私:攻击者通过发送恶意构造的 HTTP 请求,绕过 Web 服务器的正常处理逻辑,获取未授权的资源。为了防止这种攻击,建议仔细检查请求格式和代理配置。
  • HTTPS 混合内容:在 HTTPS 页面中引用 HTTP 资源会导致浏览器警告或阻止加载。为了避免混合内容问题,确保页面中所有资源都通过 HTTPS 加载,避免加载不安全的资源。

七、HTTP 协议与现代 Web 应用架构

随着微服务架构、单页应用(SPA)、移动应用和 RESTful API 的普及,HTTP 协议的应用场景变得更加复杂和多样化。针对不同应用场景,我们可以在 HTTP 协议的基础上构建出灵活、可扩展的架构。

7.1 RESTful API 与 HTTP

在 Web 开发中,RESTful API 是一种非常流行的架构风格,它通过 HTTP 协议实现不同服务之间的通信。RESTful API 基于 HTTP 的方法(如 GET、POST、PUT、DELETE 等),并要求 API 设计遵循一定的规范和约定。

  • HTTP 方法与资源操作

    • GET:用于读取资源。
    • POST:用于创建资源。
    • PUT:用于更新资源。
    • DELETE:用于删除资源。
  • 资源的表示:在 RESTful API 中,资源通常以 JSON 或 XML 格式表示,服务器根据客户端的请求返回相应的资源。

  • 无状态性:RESTful API 是无状态的,这意味着每个请求都应当携带所有必要的认证信息、请求数据和请求上下文。

7.2 WebSocket 与 HTTP 的关系

WebSocket 是一种与 HTTP 协议兼容的协议,旨在实现全双工通信。它适用于需要实时通信的应用场景,如在线游戏、即时通讯、股票交易等。

  • WebSocket 握手:WebSocket 建立连接时,客户端通过 HTTP 发起一个升级请求(Upgrade 请求头)来升级为 WebSocket 协议。一旦建立连接,客户端和服务器可以通过 WebSocket 协议进行双向数据传输。
  • 性能优势:与 HTTP/2 或 HTTP/3 不同,WebSocket 提供了更加高效的长连接传输,避免了 HTTP 请求和响应的开销,适用于高频交互的场景。
7.3 微服务架构中的 HTTP

在微服务架构中,各个服务通过 HTTP 协议(通常是 HTTP/2 或 gRPC)进行通信。为了提高性能和可扩展性,微服务架构通常采用以下模式:

  • API 网关:API 网关充当客户端与后端微服务之间的中介,负责请求路由、负载均衡、安全性、认证和授权等功能。
  • 服务发现与负载均衡:微服务架构中通常使用服务注册和发现机制(如 Consul、Eureka)来动态发现服务实例,并通过负载均衡算法(如轮询、加权轮询等)分配请求。
7.4 反向代理与负载均衡

HTTP 反向代理服务器(如 Nginx、HAProxy)通常用来分发客户端的请求到多个后端服务器。通过负载均衡,反向代理可以分担流量负载,提升系统的可扩展性和容错能力。

  • 负载均衡算法

    • 轮询:将请求均匀分配到各个服务器。
    • 最少连接数:将请求分配给连接数最少的服务器。
    • 加权轮询:根据各个服务器的权重(如处理能力)分配请求。
  • SSL 终止:反向代理服务器还可以处理 SSL/TLS 终止,即解密 HTTPS 请求,然后将其以 HTTP 形式转发到后端服务,从而减轻后端服务器的负担。


八、常见 HTTP 性能问题及调试技巧

8.1 HTTP 请求延迟

请求延迟是性能优化中的关键问题之一。常见的延迟来源包括 DNS 解析、TCP 连接建立、TLS 握手等。

  • DNS 优化:通过 DNS 预解析、使用 CDN 缓存 DNS 记录等方式减少 DNS 查询时间。
  • TCP 连接优化:使用 HTTP/2 多路复用、持久连接等方式减少 TCP 握手次数。
  • TLS 握手优化:启用 SSL 会话缓存或会话票据(Session Tickets)来减少 TLS 握手的延迟。
8.2 网络带宽限制

当网络带宽有限时,大量数据的传输可能导致 HTTP 请求和响应变慢。

  • 启用压缩:通过启用 Gzip 或 Brotli 压缩来减少响应体的大小。
  • 分块传输:使用 HTTP 的分块传输编码(Chunked Transfer Encoding),将大文件分成多个块进行传输,减少等待时间。
8.3 HTTP 请求失败

HTTP 请求失败通常与网络问题、服务器错误、请求头过大等因素有关。

  • 监控和日志:通过集成监控工具(如 Prometheus、Grafana)和日志系统(如 ELK Stack)实时跟踪 HTTP 请求的成功率和失败原因。
  • 请求重试:针对临时故障的请求,设计合理的重试机制,避免因网络波动导致的请求失败。

九、结语

HTTP 协议作为 Web 的基础协议,贯穿了从前端到后端、从请求到响应、从客户端到服务器的所有通信。虽然 HTTP 协议本身简单易懂,但要在现代 Web 和微服务架构中高效、安全地使用它,

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/948411.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

快速上手LangChain(四)LangChain Hub和LangSmith

文章目录 快速上手LangChain&#xff08;四&#xff09;LangChain Hub和LangSmith什么是LangChain HubLangChain Hub功能 LangSmith使用 快速上手LangChain&#xff08;四&#xff09;LangChain Hub和LangSmith 什么是LangChain Hub LangChain Hub官网地址&#xff1a;https:…

vip与haproxy构建nginx高可用集群传递客户端真实ip

问题 系统使用了vip与haproxy实现高可用以及对nginx进行负载均衡&#xff0c;但是发现在上游的应用服务无法拿到客户端的请求ip地址&#xff0c;拿到的是主haproxy机器的ip&#xff0c;以下是nginx与haproxy的缩减配置&#xff1a; location ~* ^/(xx|xx) {proxy_pass http:/…

使用python调用翻译大模型实现本地翻译【exe客户端版】

以前分享过一个 关于python 部署 网页端的 翻译大模型的 文章 有兴趣的小伙伴可以去看一下 https://blog.csdn.net/Drug_/article/details/144488795 今天就再分享一个 使用python 来制作一个 exe 客户端版的 本地大模型。 实际也很简单 只不过把 用 fastApi 框架 做的 网页端…

Windows系统下载、部署Node.js与npm环境的方法

本文介绍在Windows电脑中&#xff0c;下载、安装并配置Node.js环境与npm包管理工具的方法。 Node.js是一个基于Chrome V8引擎的JavaScript运行时环境&#xff0c;其允许开发者使用JavaScript编写命令行工具和服务器端脚本。而npm&#xff08;Node Package Manager&#xff09;则…

PHP如何删除数组中的特定值?

php 中删除数组特定值的方法有三种&#xff1a;unset()&#xff1a;直接删除指定索引的值&#xff0c;但会保留数组索引结构和未删除元素&#xff0c;适合小数组。array_filter()&#xff1a;根据自定义回调函数筛选数组元素&#xff0c;返回一个新数组&#xff0c;原数组不变&…

(九千七-星河襟)椭圆曲线加密(ECC, Elliptic Curve Cryptography)及其例题

椭圆曲线加密&#xff08;ECC&#xff09;是一种基于椭圆曲线数学的公钥加密技术。它提供了一种高效的加密方法&#xff0c;能够在较小的密钥长度下实现与传统加密算法&#xff08;如RSA&#xff09;相同的安全级别。以下是ECC的主要特点和工作原理的总结&#xff1a; 1. 基本…

大模型系列17-RAGFlow搭建本地知识库

大模型系列17-RAGFlow搭建本地知识库 安装ollama安装open-wehui安装并运行ragflowRAG&#xff08;检索、增强、生成&#xff09;RAG是什么RAG三过程RAG问答系统构建步骤向量库构建检索模块生成模块 RAG解决LLM的痛点 使用ragflow访问ragflow配置ollama模型添加Embedding模型添加…

5大常见高并发限流算法选型浅析

高并发场景下&#xff0c;如何确保系统稳定运行&#xff0c;成为了每一个开发工程师必须面对的挑战。**你是否曾因系统崩溃、请求超时或资源耗尽而头疼不已&#xff1f;**高并发限流算法或许能帮你解决这些难题。 在处理高并发请求时&#xff0c;应该如何选择合适的限流算法呢…

高等数学学习笔记 ☞ 无穷小比较与等价无穷小替换

1. 无穷小比较 1. 本质&#xff1a;就是函数的极限趋于0时的速度&#xff0c;谁快谁慢的问题。 2. 定义&#xff1a;若是在同一自变量的变化过程中的无穷小&#xff0c;且&#xff0c;则&#xff1a; ①&#xff1a;若&#xff0c;则称是比的高阶无穷小&#xff0c;记作&…

配置嵌入式服务器

一、如何定制和修改Servlet容器的相关配置 修改和server有关的配置&#xff08;ServerProperties&#xff09; server.port8081 server.context‐path/tx server.tomcat.uri-encodingUTF-8二、注册servlet三个组件【Servlet、Filter、Listener】 由于SpringBoot默认是以jar包…

大模型系列18-AI Agents

什么是AI Agents Al Agent智能体&#xff0c;是指一种能够模拟人类思考和行为来自动执行任务&#xff0c;以解决复杂问题的程序或系统 架构图 思考->行动->观测 思考依赖记忆以及规划决策&#xff0c;行动依赖工具&#xff0c;观测依赖感知 举例 长沙今天白天和晚上的…

springCloud 脚手架项目功能模块:Java分布式锁

文章目录 引言分布式锁产生的原因:集群常用的分布式锁分布式锁的三种实现方式I ZooKeeper 简介zookeeper本质上是一个分布式的小文件存储系zookeeper特性:全局数据一致性ZooKeeper的应用场景分布式锁(临时节点)II 基于ZooKeeper 实现一个排他锁创建锁获取锁释放锁Apache Zo…

Appium(二)--- ADB命令操作

一、ADB概述 什么是ADB?ADB全称Android Debug Bridge&#xff0c;起到调试桥的作用&#xff0c;是一个客户端-服务器端程序。其中客户端是用来操作的操作&#xff0c;服务端是Android设备。ADB也是Android SDK的一个工具&#xff0c;可以直接操作管理Android模拟器或者真实的…

基于SpringBoot在线竞拍平台系统功能实现十五

一、前言介绍&#xff1a; 1.1 项目摘要 随着网络技术的飞速发展和电子商务的普及&#xff0c;竞拍系统作为一种新型的在线交易方式&#xff0c;已经逐渐深入到人们的日常生活中。传统的拍卖活动需要耗费大量的人力、物力和时间&#xff0c;从组织拍卖、宣传、报名、竞拍到成…

Android GameActivity(NativeActivity)读写文件

最近研究native android相关内容&#xff0c;其中最棘手的就是文件读写问题&#xff0c;最主要的是相关的文档很少。这里写下我所知道的方法。 由于本人使用的是Android14[arm64-v8a]版本的设备,能访问的路径相当有限&#xff0c;如果想要访问更多的路径&#xff0c;就不得不申…

conda指定路径安装虚拟python环境

DataBall 助力快速掌握数据集的信息和使用方式&#xff0c;会员享有 百种数据集&#xff0c;持续增加中。 需要更多数据资源和技术解决方案&#xff0c;知识星球&#xff1a; “DataBall - X 数据球(free)” -------------------------------------------------------------…

计算机网络练习题

学习这么多啦&#xff0c;那就简单写几个选择题巩固一下吧&#xff01; 1. 在IPv4分组各字段中&#xff0c;以下最适合携带隐藏信息的是&#xff08;D&#xff09; A、源IP地址 B、版本 C、TTL D、标识 2. OSI 参考模型中&#xff0c;数据链路层的主要功能是&#xff08;…

【算法不挂科】算法期末考试【选择题专项练习】<多单元汇总>

前言 大家好吖&#xff0c;欢迎来到 YY 滴算法不挂科系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过C的老铁 主要内容含&#xff1a; 一.选择题 【1】算法绪论 1.算法与程序的区别是( ) A.输出 B.输入 C.确定性 D.有穷性 D 2.算法复杂度分析的两种基本方法…

MIPI_DPU 综合(DPU+MIPI+Demosaic+VDMA 通路)

目录 1. 简介 2. 创建 Platform 2.1 Block Design 2.1.1 DPU PFM Lite 2.1.2 DPU prj 2.1.3 DPU MIPI Platform 2.2 pin 约束 2.2.1 GPIO 约束 2.2.2 IIC 约束 2.1.3 DPHY 约束 3. 报错总结 3.1 AXI_M 必须顺序引用 3.2 DPU 地址分配错误 4. Design Example 4.…

李宏毅机器学习课程笔记01 | 1.Introduction of Machine/Deep Learning

笔记是在语雀上面做的&#xff0c;粘贴在CSND上可能存在格式错误 机器学习的本质就是借助机器寻找一个转换函数 根据函数的输出类型&#xff0c;可以将机器学习进行分类 regression 回归任务&#xff1a;函数输出时一个数值classification 分类任务&#xff1a;人类设定好选项…