大模型快速 ASGI 服务器uvicorn
基础概念类
1. 什么是 Uvicorn,它的作用是什么?
答案:Uvicorn 是一个基于 Python 的快速 ASGI(异步服务器网关接口)服务器。它的主要作用是作为 Web 应用程序的服务器,负责接收客户端的请求,并将请求传递给应用程序处理,然后将应用程序的响应返回给客户端。由于采用异步编程模型,它能高效处理大量并发请求,提升应用程序的性能和响应速度。
2. 简述 ASGI 以及 Uvicorn 与 ASGI 的关系。
答案:ASGI 即异步服务器网关接口,是为了支持 Python 异步 Web 应用程序而设计的标准接口,它允许异步 Web 服务器、框架和中间件之间进行交互。Uvicorn 是一个实现了 ASGI 标准的服务器,它可以运行符合 ASGI 规范的 Web 应用程序,比如 FastAPI、Starlette 等框架构建的应用。
安装与使用类
3. 如何安装 Uvicorn?
答案:可以使用 Python 的包管理工具 pip
来安装 Uvicorn,在命令行中执行以下命令:
pip install uvicorn
4. 怎样启动一个简单的 Uvicorn 服务器?
答案:假设你有一个简单的 ASGI 应用程序,例如一个使用 FastAPI 构建的应用,保存在 main.py
文件中,代码如下:
from fastapi import FastAPIapp = FastAPI()@app.get("/")
async def read_root():return {"Hello": "World"}
在命令行中,进入包含 main.py
文件的目录,然后执行以下命令启动 Uvicorn 服务器:
uvicorn main:app --reload
这里的 main:app
表示 main.py
文件中的 app
实例,--reload
用于开启热重载功能,方便开发调试。
性能与配置类
5. Uvicorn 有哪些提升性能的方法?
答案:
- 增加工作进程数量:通过
--workers
参数指定更多的工作进程,可充分利用多核 CPU 的性能。例如:
uvicorn main:app --workers 4
- 使用异步 I/O:确保应用程序中的 I/O 操作使用异步方式,这样可以在等待 I/O 完成时处理其他请求。
- 优化应用代码:避免在应用程序中进行阻塞操作,如长时间的计算或同步 I/O 调用。
6. 如何配置 Uvicorn 的日志级别?
答案:可以使用 --log-level
参数来配置 Uvicorn 的日志级别。常见的日志级别有 debug
、info
、warning
、error
等。例如,将日志级别设置为 debug
:
uvicorn main:app --log-level debug
问题排查与应用场景类
7. 如果 Uvicorn 服务器启动失败,可能的原因有哪些?
答案:
- 端口被占用:若指定的端口已被其他应用程序使用,Uvicorn 无法绑定该端口,导致启动失败。可以通过修改
--port
参数来指定其他端口。 - 应用代码错误:应用程序代码存在语法错误、导入错误或其他逻辑错误,会使 Uvicorn 无法正确加载应用。需要检查应用代码并修复错误。
- 依赖缺失:应用程序依赖的库未正确安装,会导致启动失败。要确保所有依赖项都已安装。
8. 举例说明 Uvicorn 的应用场景。
答案:
- Web 应用开发:在使用 FastAPI、Starlette 等异步 Web 框架开发 Web 应用时,Uvicorn 可作为生产环境的服务器,高效处理大量并发请求。
- 实时应用:如聊天应用、实时数据监控系统等,需要处理大量实时连接和消息,Uvicorn 的异步特性能够很好地满足这些需求。
原理与架构类
9. 简述 Uvicorn 的工作原理。
答案:Uvicorn 基于异步 I/O 模型,其工作原理主要包括以下几个步骤:
- 监听端口:启动时,Uvicorn 会监听指定的主机和端口,等待客户端的连接请求。
- 接受连接:当有客户端连接请求到达时,Uvicorn 会异步地接受连接,将连接交给异步处理程序。
- 解析请求:将客户端发送的 HTTP 请求解析成 ASGI 规范的事件,如
http.request
事件。 - 传递请求:把解析后的事件传递给符合 ASGI 规范的 Web 应用程序进行处理。
- 处理响应:应用程序处理完请求后,会生成 ASGI 规范的响应事件,Uvicorn 接收这些事件并将其转换为 HTTP 响应返回给客户端。
10. Uvicorn 与传统的 WSGI 服务器(如 Gunicorn)有什么区别?
答案:
- 接口标准:Uvicorn 基于 ASGI 标准,支持异步编程,能更好地处理高并发的 I/O 密集型任务;而传统的 WSGI 服务器基于 WSGI 标准,只支持同步编程。
- 性能表现:在处理大量并发连接时,Uvicorn 由于其异步特性,性能通常优于 WSGI 服务器。WSGI 服务器在处理每个请求时是同步的,在处理 I/O 操作时会阻塞线程,影响并发处理能力。
- 应用场景:Uvicorn 适用于现代的异步 Python Web 框架,如 FastAPI、Starlette 等;而 WSGI 服务器更适合基于同步编程的 Web 框架,如 Django、Flask 等。
部署与集成类
11. 如何在生产环境中部署 Uvicorn?
答案:
- 使用进程管理器:可以使用
systemd
或supervisor
等进程管理器来管理 Uvicorn 进程,确保其在服务器重启后自动启动,并且在出现异常时能够自动重启。例如,使用systemd
可以创建一个服务文件,配置 Uvicorn 服务的启动参数和环境变量。 - 反向代理:在生产环境中,通常会使用 Nginx 或 Apache 等反向代理服务器将请求转发给 Uvicorn 服务器。反向代理可以处理静态文件、负载均衡、SSL 加密等任务,提高系统的安全性和性能。
- 多进程配置:通过
--workers
参数配置多个工作进程,充分利用多核 CPU 的性能。同时,要注意合理调整工作进程的数量,避免资源过度占用。
12. Uvicorn 可以和哪些 Python Web 框架集成?
答案:Uvicorn 可以与多种符合 ASGI 标准的 Python Web 框架集成,常见的有:
- FastAPI:一个快速的 Web 框架,基于 Starlette 和 Pydantic 构建,具有高性能、易用性和自动生成 API 文档等特点,与 Uvicorn 结合使用能发挥出强大的性能优势。
- Starlette:一个轻量级的 ASGI 框架,提供了基础的路由、中间件和请求/响应处理功能,非常适合构建高性能的 Web 应用和 API。
- Quart:一个异步版本的 Flask 框架,保留了 Flask 的简洁易用性,同时支持异步编程,可与 Uvicorn 无缝集成。
高级特性与优化类
13. Uvicorn 的热重载功能是如何实现的,在生产环境中是否可以使用?
答案:Uvicorn 的热重载功能是通过监测项目文件的变化来实现的。当 Uvicorn 启动时,如果开启了热重载(使用 --reload
参数),它会启动一个文件监控器,持续检查项目目录下的文件是否有修改、创建或删除等操作。一旦检测到文件变化,Uvicorn 会自动重启服务器,加载最新的代码。
热重载功能主要用于开发环境,方便开发者在修改代码后无需手动重启服务器即可看到修改后的效果。在生产环境中不建议使用热重载功能,因为文件监控和重启服务器会消耗额外的系统资源,并且可能会导致服务中断,影响系统的稳定性和性能。
14. 如何优化 Uvicorn 在高并发场景下的性能?
答案:
- 合理配置工作进程:根据服务器的 CPU 核心数和内存资源,合理调整
--workers
参数,以充分利用多核 CPU 的性能。一般来说,工作进程的数量可以设置为 CPU 核心数的 2 倍左右。 - 使用异步中间件:在应用程序中使用异步中间件,避免中间件中的阻塞操作,确保请求处理过程中的每个环节都是异步的,提高并发处理能力。
- 优化网络配置:调整服务器的网络参数,如 TCP 缓冲区大小、最大连接数等,以提高网络传输性能。
- 使用缓存:对于一些频繁访问的数据或计算结果,可以使用缓存机制(如 Redis)来减少重复计算和数据库查询,提高响应速度。
安全与监控类
15. Uvicorn 本身有哪些安全方面的考虑,开发者还需要做什么额外的安全措施?
答案:
- Uvicorn 自身安全考虑:Uvicorn 本身在设计上遵循了一些基本的安全原则。例如,它可以与反向代理服务器(如 Nginx 或 Apache)配合使用,利用反向代理的安全功能,像过滤恶意请求、进行 IP 封禁等。同时,它支持 HTTPS 连接,可通过配置 SSL 证书来加密数据传输,防止数据在传输过程中被窃取或篡改。
- 开发者额外安全措施:开发者需要在应用层面进行更多的安全处理。比如,对用户输入进行严格的验证和过滤,防止 SQL 注入、XSS(跨站脚本攻击)等常见的 Web 安全漏洞。还要妥善管理 API 密钥和敏感信息,避免泄露。另外,定期更新应用及其依赖的库,以修复已知的安全漏洞。
16. 如何监控 Uvicorn 服务器的性能和运行状态?
答案:
- 日志监控:Uvicorn 会输出详细的日志信息,通过查看日志可以了解服务器的运行状态,如请求处理时间、错误信息等。可以使用日志分析工具(如 ELK Stack 或 Graylog)来收集、存储和分析这些日志,以便及时发现潜在的问题。
- 性能指标监控:使用性能监控工具(如 Prometheus 和 Grafana)来收集和可视化 Uvicorn 服务器的性能指标,如 CPU 使用率、内存使用率、请求处理速率、响应时间等。可以通过 Prometheus 监控 Uvicorn 暴露的指标端点,然后使用 Grafana 来创建仪表盘,直观展示这些指标的变化情况。
- 进程监控:使用进程监控工具(如
systemd
或supervisor
)来监控 Uvicorn 进程的运行状态,确保进程在出现异常时能够自动重启。
扩展与生态类
17. Uvicorn 有哪些插件或扩展可以增强其功能?
答案:
- 日志插件:可以使用
uvicorn[log]
来扩展日志功能,例如实现更详细的日志记录、日志分级和日志存储等。 - 中间件扩展:开发者可以编写自定义的 ASGI 中间件来增强 Uvicorn 的功能,如添加请求限流、身份验证、请求/响应转换等功能。例如,使用
slowapi
库可以实现请求限流的中间件。 - 监控扩展:通过集成
prometheus-fastapi-instrumentator
等工具,可以为 Uvicorn 应用添加 Prometheus 监控指标,方便对应用的性能进行监控和分析。
18. Uvicorn 与 Docker 结合使用时,有哪些注意事项?
答案:
- 端口映射:在 Docker 容器中运行 Uvicorn 时,需要确保正确映射容器内 Uvicorn 监听的端口到宿主机的端口,以便外部可以访问应用。例如,在 Dockerfile 或
docker run
命令中使用-p
参数进行端口映射。 - 环境变量配置:可以使用 Docker 的环境变量功能来配置 Uvicorn 的参数,如
--host
、--port
、--workers
等。这样可以在不同的环境中灵活调整 Uvicorn 的配置,而无需修改应用代码。 - 资源限制:在 Docker 中运行 Uvicorn 时,要根据宿主机的资源情况合理限制容器的 CPU 和内存使用,避免容器过度占用资源影响其他服务的运行。可以使用
--cpus
和--memory
参数来进行资源限制。 - 镜像构建优化:在构建 Docker 镜像时,要注意优化镜像的大小,只包含运行 Uvicorn 应用所需的依赖项,减少镜像的下载和启动时间。
故障排查与调优类
19. 如果 Uvicorn 服务器响应缓慢,可能的原因有哪些,如何排查和解决?
答案:
- 可能原因:
- 应用代码问题:应用程序中存在阻塞操作,如长时间的数据库查询、文件读写等,会导致请求处理缓慢。
- 资源瓶颈:服务器的 CPU、内存或网络带宽不足,无法满足高并发请求的处理需求。
- 配置不合理:Uvicorn 的配置参数(如
--workers
数量)设置不合理,可能导致性能不佳。 - 外部服务问题:应用依赖的外部服务(如数据库、缓存服务器等)响应缓慢,影响了整体的响应时间。
- 排查方法:
- 日志分析:查看 Uvicorn 和应用程序的日志,找出响应缓慢的请求和相关的错误信息。
- 性能监控:使用性能监控工具(如
top
、htop
、netstat
等)检查服务器的资源使用情况,确定是否存在资源瓶颈。 - 代码审查:检查应用代码,找出可能存在的阻塞操作和性能瓶颈。
- 解决方法:
- 优化代码:将阻塞操作改为异步操作,使用异步数据库驱动和异步文件操作库等。
- 增加资源:根据监控结果,增加服务器的 CPU、内存或网络带宽等资源。
- 调整配置:合理调整 Uvicorn 的配置参数,如增加
--workers
数量。 - 优化外部服务:检查并优化应用依赖的外部服务的性能,如调整数据库查询语句、优化缓存策略等。
20. 如何对 Uvicorn 的配置进行调优以适应不同的业务场景?
答案:
- I/O 密集型场景:对于 I/O 密集型业务,如 Web 应用、实时数据处理等,应充分利用 Uvicorn 的异步特性。可以适当增加
--workers
数量,一般设置为 CPU 核心数的 2 - 4 倍,以提高并发处理能力。同时,确保应用程序中的 I/O 操作都是异步的,避免阻塞线程。 - CPU 密集型场景:在 CPU 密集型业务中,如大数据分析、机器学习模型推理等,过多的工作进程可能会导致 CPU 资源竞争加剧。此时,应减少
--workers
数量,通常设置为 CPU 核心数或略小于核心数,以避免过多的上下文切换。 - 高并发小流量场景:对于高并发但每个请求处理时间较短的场景,可以通过调整
--backlog
参数来增加服务器的请求队列长度,以应对大量的并发请求。同时,优化应用代码和中间件,减少请求处理时间。 - 低并发大流量场景:在低并发但每个请求处理时间较长的场景中,要确保应用程序有足够的资源来处理单个请求。可以适当增加服务器的内存和 CPU 资源,同时优化数据库查询和文件读写操作,提高处理效率。
相关文章:
大模型快速 ASGI 服务器uvicorn
基础概念类 1. 什么是 Uvicorn,它的作用是什么? 答案:Uvicorn 是一个基于 Python 的快速 ASGI(异步服务器网关接口)服务器。它的主要作用是作为 Web 应用程序的服务器,负责接收客户端的请求,并…...
android studio 基础
1.android Module not specified 今天做一个实验时出现:Android Studio Run/Debug configuration error: Module not specified,要想解决这个问题: 1、打开根目录的 settings.gradle,删除 include :exampleapp 2、在 Android Stu…...
python爬虫爬取淘宝热销(热门)零食商品加数据清洗、销量、店铺及词云数据分析_源码及相关说明文档;售后可私博主
TOC 如有侵权,联系删除 一、环境说明 使用前必须检查以下环境 (1)python编译环境 (2)python脚本执行所需要的库,具体看代码(main.py)import导入的部分库 (3)确保电脑可…...
Android /proc/meminfo解释
高通8295设备 msmnile_gvmq:/proc # cat meminfo MemTotal: 16433968 kB MemFree: 7709832 kB…...
VScode 玩 MCP的server
vscode 1.99版本刚支持MCP server,我就测试了一下 翻到一个gitte的MCP sever 我本身是Mac版本1.99居然没更新agent,所以我就直接用1.100版本的vscode inside了来掩饰一下了 点击setting,然后你要edit一下这个json配置文件 主要修改的其实是…...
详解 MySQL 索引的最左前缀匹配原则
MySQL 的最左前缀匹配原则主要是针对复合索引(也称为联合索引)而言的。其核心思想是:只有查询条件中包含索引最左侧(第一列)开始的连续一段列,才能让 MySQL 有效地利用该索引。 一、 复合索引的结构 复合…...
ROS Master多设备连接
Bash Shell Shell是位于用户与操作系统内核之间的桥梁,当用户在终端敲入命令后,这些输入首先会进入内核中的tty子系统,TTY子系统负责捕获并处理终端的输入输出流,确保数据正确无误的在终端和系统内核之中。Shell在此过程不仅仅是…...
【Mysql】数据库备份与恢复
一、备份类型 物理备份:直接对数据库的数据文件、日志文件、索引文件进行备份 逻辑备份:对数据库对象(库、表)以SQL语句的形式导出进行备份 二、备份工具 1、使用tar、gzip等方式压缩打包数据库文件(完全备份、物理冷…...
Java HttpURLConnection修仙指南:从萌新到HTTP请求大能的渡劫手册
一、筑基篇:初识HttpURLConnection 1.1 基础开光(创建连接) URL url new URL("https://api.example.com/data"); HttpURLConnection conn (HttpURLConnection) url.openConnection(); // 注意!此处可能抛出Malforme…...
python 重要易忘 语言基础
Collections 1、Counter 计数器 counter:计数器 类似字典 统计可迭代对象中元素的出现次数, Counter({b: 3, c: 2, a: 1, d: 1}) 相当于字典{b: 3, c: 2, a: 1, d: 1} a.items() 取键值对 对应为dict_items([(a, 1), (b, 3), (c, 2), (d, 1)]) 也可以是 list(a.items…...
【新能源汽车研发测试数据深度分析:从传感器到智能决策的硬核方法论】
摘要: 本文系统性解构新能源汽车(NEV)研发测试中的数据采集、处理及分析全链条,覆盖传感器融合、大数据清洗、AI算法优化等核心技术,并引入行业顶级案例(如特斯拉Autopilot验证、宁德时代BMS算法迭代&#…...
GD32H759IMT6 Cortex-M7 OpenHarmony轻量系统移植——接管中断修改为不接管
笔者在去年利用国庆时间,将Cortex-M7 的国产厂商兆易创新GD32H459移植OpenHarmony轻量系统,但是适配不太完善——只能选择liteos-m接管中断。这样导致使用中断非常麻烦。于是笔者最近将接管中断模式修改为不接管,这样可以方便的使用gd32提供的…...
MySQL基础学习笔记
学习笔记 1. 基础小知识1.1 数据库分类1.2 下载安装、变量配置过程(略)1.3 连接命令1.4 连接mysql服务端的软件选择1.4.1 要求不高的话,选择有很多1.4.2 适合做企业级管理的工具(适合团队协作)1.4.3 总结 1.5 编程语言…...
[Linux]进程状态、僵尸进程处理回收、进程优先级 + 图例展示
目录 一、进程状态 1.一般操作系统学科的进程状态 二、Linux操作系统的进程状态 运行状态(R) 睡眠状态(S) 深度睡眠状态(D) 暂停状态(T) 追踪暂停状态&#x…...
2022 年 6 月青少年软编等考 C 语言七级真题解析
目录 T1. 有多少种二叉树思路分析T2. 城堡问题T3. 快速堆猪思路分析T4. 重建二叉树思路分析T1. 有多少种二叉树 题目链接:SOJ D1189 输入 n ( 1 < n < 13 ) n\ (1<n<13) n (1<n<13),求 n n n 个结点的二叉树有多少种形态? 思路分析 此题考查 C a…...
flutter修改 Container 中的 Text 和 Image 的样式
在Flutter中,Container 是一个常用的布局组件,它可以包含子组件(如文本、图片等),并允许你通过设置各种属性来自定义样式。如果你需要修改 Container 中的 Text 和 Image 的样式,可以通过以下方式实现。 1.…...
零基础入门unity游戏开发——动画篇】Animation动画窗口,创建编辑动画
考虑到每个人基础可能不一样,且并不是所有人都有同时做2D、3D开发的需求,所以我把 【零基础入门unity游戏开发】 分为成了C#篇、unity通用篇、unity3D篇、unity2D篇。 【C#篇】:主要讲解C#的基础语法,包括变量、数据类型、运算符、…...
【设计模式】命令模式
简介 假设你有一个智能家居遥控器,上面有多个按钮,每个按钮对应不同的设备操作(如开灯、关灯、调空调温度)。 命令模式的解决方案是: 将每个操作(如“开灯”)封装成一个独立的命令对象&#x…...
Python作业3 字符田字格绘制
字符田字格绘制:编写程序,用字符方式打印输出一个简单的田字格,要求采用函数方式,以田字格宽度为参数,能够根据参数绘制任意大小的田字格。 def draw(n):line 3 * n 1for i in range(1, line 1):if i % 3 1:print(n * " —— —— ", end"&quo…...
文章记单词 | 第23篇(六级)
一,单词释义 occupy /ˈɒkjupaɪ/v. 占用,占领,使忙碌thermal /ˈθɜːml/adj. 热的,热量的,保暖的;n. 热气流persistent /pəˈsɪstənt/adj. 执着的,坚持不懈的,持续存在的wee…...
【算法】滑动窗口
什么是滑动窗口算法? 滑动窗口算法本质上就是双指针的一种情况,当两个指针进行移动的方向是同一个方向,并且这两个指针并不会向后回退,一直是往一个方向进行移动的。这也就是滑动窗口的使用场景。 滑动窗口算法的一般步骤 进窗…...
可视化工具
在PyTorch中,可视化工具对于模型调试、性能分析和结果解释至关重要。以下是常用的可视化工具及其应用场景: 1. 训练过程监控 TensorBoard (PyTorch官方集成) 用途:跟踪训练指标(损失、准确率)、可视化模型结构、分析…...
hashtable遍历的方法有哪些
在 Java 中,遍历 Hashtable(或其现代替代品 HashMap)有多种方式,以下是 6 种常用方法的详细说明和代码示例: 1. 使用 keySet() 增强 for 循环 Hashtable<String, Integer> table new Hashtable<>(); // …...
LeetCode --- 443周赛
题目列表 Q1. 到达每个位置的最小费用 Q2. 子字符串连接后的最长回文串 I Q3. 子字符串连接后的最长回文串 II Q4. 使 K 个子数组内元素相等的最少操作数 一、到达每个位置的最小费用 题目要求返回从队尾到达任意位置的最小费用,规则:如果下标 i i i …...
从零构建大语言模型全栈开发指南:附录与资源-3.面试与进阶-200道大模型面试真题与职业发展路线图-基础理论篇50题
👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 附录与资源-3. 面试与进阶:200道大模型面试真题与职业发展路线图一、大模型面试真题分类与解析1. 基础理论篇(50+题精选)2. 进阶实战篇(50+题精选)3. 应用场景篇(70题精选)二、职业发展路线图1. …...
使用Android Studio开发基于Java+xml的安卓app之环境搭建
以下是使用Android Studio搭建基于Java和XML的Android应用开发环境的详细步骤: 一、系统要求 操作系统:Windows 7/8/10/11(64位)内存:建议8GB及以上磁盘空间:至少5GB空闲(建议预留10GB以上&…...
GD32H759IMT6 Cortex-M7 OpenHarmony轻量系统移植——4.1版本升级到5.0.3
笔者在去年利用国庆时间,将Cortex-M7 的国产厂商兆易创新GD32H459移植OpenHarmony轻量系统,但是适配不太完善——只能选择liteos-m接管中断。这样导致使用中断非常麻烦。于是笔者最近将接管中断模式修改为不接管,这样可以方便的使用gd32提供的…...
学习汇编随手记
学习汇编随手记 前言 本笔记是关于王爽汇编的笔记,覆盖不全,到了内中断就完结了,听从学长建议,我跑去学xv6了,x86告辞。 1. 寄存器 1.1 寄存器初步 (A,B,C,D)X是通用寄存器,通常存放一般性数据&#x…...
打造高效英文单词记忆系统:基于Python的实现与分析
在当今全球化的世界中,掌握一门外语已成为必不可少的技能。对于许多学习者来说,记忆大量的英文单词是一个漫长而艰难的过程。为了提高学习效率,我们开发了一个基于Python的英文单词记忆系统。这个系统结合了数据管理、复习计划、学习统计和测试练习等多个模块,旨在为用户提…...
【漫话机器学习系列】182.噪声修正线性单元(Noisy ReLU)
噪声修正线性单元(Noisy ReLU)详解 1. 引言 在深度学习中,修正线性单元(ReLU, Rectified Linear Unit) 是一种常见的激活函数,具有计算简单、梯度稳定等优点。然而,ReLU 也有一些缺点…...
连续数据离散化与逆离散化策略
数学语言描述: 在区间[a,b]中有一组符合某分布的数据: 1.求相同区间中另一组符合同样分布的数据与这组数据的均方误差 2.求区间中点与数据的均方误差 3.求在区间中均匀分布的一组数据与这组数据的均方误差 一:同分布数据随机映射 假设在…...
《安富莱嵌入式周报》第352期:手持开源终端,基于参数阵列的定向扬声器,炫酷ASCII播放器,PCB电阻箱,支持1Ω到500KΩ,Pebble智能手表代码重构
周报汇总地址:嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Powered by Discuz! 视频版 https://www.bilibili.com/video/BV1DEf3YiEqE/ 《安富莱嵌入式周报》第352期:手持开源终端&#x…...
游戏引擎学习第205天
回顾 我们今天要实现的是一些实体浏览功能,原本是昨天就计划好的,但因为渲染上的一些问题耽搁了一些时间。 实际上,我们遇到的并不是一个真正的bug,尽管我们花了大约40分钟才搞清楚,最终发现它只是渲染方式的一个正常…...
Boost库搜索引擎项目(版本1)
Boost库搜索引擎 项目开源地址 Github:https://github.com/H0308/BoostSearchingEngine Gitee:https://gitee.com/EPSDA/BoostSearchingEngine 版本声明 当前为最初版本,后续会根据其他内容对当前项目进行修改,具体见后续版本…...
复古千禧Y2风格霓虹发光酸性镀铬金属短片音乐视频文字标题动画AE/PR模板
踏入时光机,重温 21 世纪初大胆、未来主义和超光彩的美学!这是一个动态的 After Effects 模板,旨在重现千禧年的标志性视觉效果——铬反射、霓虹灯发光、闪亮的金属和流畅的动态图形。无论您是在制作时尚宣传片、怀旧音乐视频还是时尚的社交媒…...
如何高效使用 Ubuntu 中文官方网站
Ubuntu 中文官方网站 一、快速导航与核心模块 首页焦点区 顶部菜单栏:快速访问「下载」「文档」「支持」「商店」等核心功能。轮播图区:展示最新版本(如 Ubuntu 24.04 LTS)和特色功能(如 Ubuntu Pro 订阅服务)。搜索框:支持中文关键词搜索(如 "边缘计算"),…...
简单多状态dp问题 + 总结(一)
文章目录 按摩师题解代码 打家劫舍II题解代码 删除并获得点数题解代码 粉刷房子题解代码 按摩师 题目链接 题解 1. 细节处理:题目是有没有客人的时候,所有n等于零时返回零 2. 状态表示:到达i位置时的最长预约时长 3. 状态转移方程…...
2022 CCF CSP-S2.假期计划
题目 4732. 假期计划 算法标签: 搜索, 枚举, 贪心 思路 最多转车 k k k次等价于路线长度小于等于 k 1 k 1 k1, 经过的点没有限制, 注意到点的数量 2500 2500 2500, 因此 n 2 n ^ 2 n2的时间复杂度是可以考虑的, 边的数量 10000 10000 10000, n m n \times m nm时间复杂…...
STM32低功耗模式详解:睡眠、停机、待机模式原理与实践(下) | 零基础入门STM32第九十三步
主题内容教学目的/扩展视频低功耗模式什么是低功耗,模式介绍,切换方法。为电池设备开发做准备。 师从洋桃电子,杜洋老师 📑文章目录 一、低功耗模式基本工作原理1.1 功耗层级对比1.2 工作流程 二、睡眠模式实践2.1 测试程序解析2.…...
【Docker】在Orin Nano上使用Docker
1、安装Docker 1)使用 SDKManager 烧写系统时,选择NVIDIA Container Runtime,将会安装Docker, 并将 NVIDIA GPU 暴露给容器中的应用程序,这样可以在Docker中使用GPU等NVIDIA的特性。 2)使用命令安装 添加源 distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \…...
C# 程序脱壳,去除强签名StrongNameRemove
由于.net程序的运行机制,利用Reflector,ilspy等反射工具很容易就能看到原代码。很多程序都做了代码混淆,加壳。代码混淆后反编译乱码,不容易理解;加壳使反编译工具不能正常反射,提示无效的程序集。 需要做…...
【mongodb】mongodb和MySQL体系结构的对比
目录 1. 说明2. 数据存储模型2.1 MySQL2.2 MongoDB 3. 扩展性3.1 MySQL3.2 MongoDB 4. 查询语言4.1 MySQL4.2 MongoDB 5. 索引和性能5.1 MySQL5.2 MongoDB 6. 一致性模型6.1 MySQL6.2 MongoDB 7. 架构组件7.1 MySQL7.2 MongoDB 8. 使用场景7.1 MySQL7.2 MongoDB 9. 总结对比表 …...
【深度学习新浪潮】视觉与多模态大模型文字生成技术研究进展与产品实践
一、研究进展 跨模态架构创新 原生多模态模型:微软KOSMOS系列通过统一框架支持文本、图像、语音等多模态输入输出,实现跨模态推理与迁移。例如,KOSMOS-2.5可处理文本密集图像,生成结构化文本描述,并通过重采样模块优化视觉与语言的对齐。混合专家架构:第三代模型(如Deep…...
麒麟系统桌面版本v10安装教程
下载地址 共享文件下载 - Kylin Distro 虚拟机安装教程 选择默认兼容 内核数量选择2个 内存给2g 存储为单个文件的话,占用你内存大,多个文件的话,用多少就占多少内存 打开虚拟机 开机 补充 安装来源 Live 安装:通过镜像文件进行…...
Python-文件操作
1. 文件操作基础 1.1 打开文件 在Python中使用open()函数来打开文件: file open(example.txt, r) # 以只读模式打开文件文件打开模式: r - 只读(默认)w - 写入,会覆盖已有文件a - 追加,写入到文件末尾…...
Apache 配置负载均衡详解(含配置示例)
Apache 是互联网上最受欢迎的 Web 服务器之一。除了基本的网页服务,它还能通过模块扩展出丰富的功能。其中一个重要用途就是将 Apache 配置成负载均衡器,用于在多个后端服务器之间分配流量,提升网站的性能和稳定性。Google Gemini中国版调用G…...
文章记单词 | 第24篇(六级)
一,单词释义 liner:名词,意为 “班轮;邮轮;衬里;画线者”convention:名词,意为 “大会;会议;习俗;惯例;公约;协定”lavat…...
日本汽车规模性经济计划失败,日产三大品牌的合并合作共赢,还是绝地求生?本田与日产合并确认失败,将成为世界第三大汽车集团愿景失败
本田与日产(含三菱汽车)的合并计划最终因核心矛盾无法调和而宣告失败,这一事件揭示了传统车企在行业变革期的深层困境。以下从合并动机、失败原因、本质判断及未来影响等方面综合分析: 一、合并的初衷:生存压力主导的被动策略 市场危机与财务困境 中国市场溃败:日系品牌在…...
人工智能赋能工业制造:智能制造的未来之路
一、引言 随着人工智能技术的飞速发展,其应用场景不断拓展,从消费电子到医疗健康,从金融科技到交通运输,几乎涵盖了所有行业。而工业制造作为国民经济的支柱产业,也在人工智能的浪潮中迎来了深刻的变革。智能制造&…...
支持selenium的chrome driver更新到135.0.7049.42
最近chrome释放新版本:135.0.7049.42 如果运行selenium自动化测试出现以下问题,是需要升级chromedriver才可以解决的。 selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only su…...