深入解析 Microcom:嵌入式串口调试利器
在嵌入式系统开发中,串口通信是调试和与外部设备交互的核心手段之一。Linux 系统中,Minicom 是一个广为人知的串口调试工具,但其依赖较多库(如 libncurses),在资源受限的嵌入式环境中可能显得臃肿。
而 Microcom 作为一款轻量级的串口通信工具,以其简单高效的特点,成为嵌入式开发者的优选。本文将详细介绍 Microcom 的功能、安装方法、使用方式、参数说明、实际应用场景,并提供清晰的示例,帮助开发者快速上手。
一、Microcom 是什么?
Microcom 是一个基于终端的串口通信工具,主要用于 Linux 环境下的串口调试。它可以与串口设备(如调制解调器、传感器、微控制器等)进行交互,类似于 Windows 下的超级终端或 Linux 下的 Minicom。与 Minicom 相比,Microcom 的优势在于:
- 轻量级:占用空间小,适合嵌入式系统(如 BusyBox 环境)。
- 依赖少:无需复杂的库支持,易于在精简系统中部署。
- 简单易用:命令行操作直观,适合快速调试。
Microcom 的设计初衷是为资源受限的系统提供串口通信能力,例如嵌入式 Linux 路由器或 IoT 设备。它支持基本的串口配置(如波特率、超时时间等),能够发送和接收数据,特别适合调试 AT 指令、串口模块(如 GPS、4G 模块)或自定义串口协议。
二、Microcom 的安装
1. 主流 Linux 发行版安装
在 Ubuntu、Debian 等系统中,可以通过包管理器直接安装 Microcom:
sudo apt-get update
sudo apt-get install microcom
安装完成后,运行以下命令验证安装是否成功:
microcom --version
如果返回版本信息(如 microcom 2016.01.0
或更高版本),说明安装成功。
2. 嵌入式系统中的 Microcom
在嵌入式环境中,Microcom 通常集成在 BusyBox 中。BusyBox 是一个集成了多种 Linux 命令的小型工具集,广泛用于资源受限的设备。如果你的系统使用 BusyBox,可以检查是否包含 Microcom:
busybox microcom --help
如果 BusyBox 未启用 Microcom 功能,需要在编译 BusyBox 时启用相关选项:
- 下载 BusyBox 源码(https://busybox.net)。
- 运行
make menuconfig
,进入配置界面。 - 在
Networking Utilities
或Miscellaneous Utilities
中启用microcom
。 - 编译并安装 BusyBox。
3. 手动编译安装
如果系统未提供 Microcom 的预编译包,可以从源码编译:
- 下载 Microcom 源码(通常在 GitHub 或相关开源仓库中找到)。
- 解压并进入源码目录:
tar -zxvf microcom.tar.gz
cd microcom
- 编译并安装:
make
sudo make install
三、Microcom 的基本用法
Microcom 的命令格式简单,基本语法如下:
microcom [-d DELAY] [-t TIMEOUT] [-s SPEED] [-X] TTY
参数说明
- -d DELAY:设置发送数据时的延迟时间(单位:毫秒),通常无需设置。
- -t TIMEOUT:设置超时时间(单位:毫秒),超过指定时间无数据交互则退出。
- -s SPEED:设置串口波特率(如 9600、115200 等),根据设备需求配置。
- -X:禁用特殊字符处理,适合发送原始数据。
- TTY:指定串口设备节点(如
/dev/ttyS0
、/dev/ttyUSB0
)。
退出 Microcom
在 Microcom 交互模式中,按 Ctrl+X 退出。
四、Microcom 使用示例
以下通过几个实际场景展示 Microcom 的用法,帮助开发者理解其在不同环境下的应用。
示例 1:基本串口通信
假设你有一个串口设备连接到 /dev/ttyUSB0
,波特率为 115200,需要进行简单的数据收发测试。
- 运行以下命令打开串口:
microcom -s 115200 /dev/ttyUSB0
-
Microcom 将进入交互模式,终端显示接收到的数据。你可以直接输入数据并按回车发送。
-
假设设备返回数据如下:
Welcome to Serial Device
> Input your command:
- 输入
hello
并回车,可能收到响应:
Received: hello
- 按 Ctrl+X 退出。
示例 2:调试 AT 指令
Microcom 常用于调试 4G 模块、Wi-Fi 模块等设备的 AT 指令。假设一个 4G 模块连接到 /dev/ttyS1
,波特率为 9600。
- 打开串口:
microcom -s 9600 /dev/ttyS1
- 输入 AT 指令并回车:
AT
- 模块可能返回:
OK
- 尝试查询模块信息:
ATI
- 模块返回:
Manufacturer: Quectel
Model: EC20
Revision: EC20F
OK
- 按 Ctrl+X 退出。
示例 3:超时退出
在自动化测试中,可能需要 Microcom 在无数据交互时自动退出。假设串口为 /dev/ttyUSB0
,波特率 115200,超时时间 5000 毫秒(5 秒):
microcom -s 115200 -t 5000 /dev/ttyUSB0
如果 5 秒内无数据交互,Microcom 将自动退出,适合脚本化测试。
示例 4:发送原始数据
某些设备需要发送未经处理的原始数据,可以使用 -X
参数。例如,向 /dev/ttyS0
发送二进制数据:
microcom -s 9600 -X /dev/ttyS0
输入数据后,Microcom 不会对特殊字符(如换行符)进行额外处理,直接发送原始字节流。
五、Microcom 的高级应用
1. 与脚本结合
Microcom 可以与 shell 脚本结合,实现自动化串口测试。例如,自动发送 AT 指令并捕获响应:
#!/bin/bash
echo "AT" | microcom -s 9600 /dev/ttyS1 > output.txt
cat output.txt
该脚本向串口发送 AT
指令,并将响应保存到 output.txt
中。
2. 调试嵌入式设备
在嵌入式开发中,Microcom 可用于调试串口输出的日志。例如,某开发板的调试串口为 /dev/ttyS0
,波特率 115200:
microcom -s 115200 /dev/ttyS0
启动开发板后,Microcom 将显示内核启动日志或应用程序输出,方便排查问题。
3. 与 USB 转串口设备通信
现代设备常通过 USB 转串口模块(如 PL2303、CP2102)连接,设备节点通常为 /dev/ttyUSB*
。检查设备节点:
ls /dev/ttyUSB*
假设设备为 /dev/ttyUSB0
,运行:
microcom -s 115200 /dev/ttyUSB0
即可与设备通信。
六、Microcom 的优缺点
优点
- 轻量高效:适合资源受限的嵌入式系统。
- 简单直观:命令行操作,无需复杂配置。
- 支持基本串口功能:满足大多数调试需求。
缺点
- 功能有限:相比 Minicom,缺少高级功能(如文件传输、日志记录)。
- 交互性较弱:不支持复杂的终端仿真(如 ANSI 颜色)。
- 文档较少:官方文档和社区支持有限,需自行摸索。
七、常见问题与解决方案
1. 无法打开串口
错误提示:cannot open /dev/ttyUSB0: Permission denied
解决方法:
- 检查权限:
ls -l /dev/ttyUSB0
- 如果权限不足,添加当前用户到
dialout
组:
sudo usermod -a -G dialout $USER
- 重新登录生效。
2. 没有数据交互
可能原因:
- 波特率错误:确认设备要求的波特率。
- 串口设备未连接:检查硬件连接。
- 设备节点错误:使用
ls /dev/tty*
确认正确节点。
3. Microcom 未安装
在嵌入式系统中,运行 microcom
提示未找到命令。
解决方法:
- 检查 BusyBox 是否包含 Microcom。
- 手动安装或编译 Microcom(见“安装”部分)。
八、与 Minicom 的对比
特性 | Microcom | Minicom |
---|---|---|
依赖性 | 几乎无依赖 | 依赖 libncurses 等库 |
占用空间 | 极小(几 KB) | 较大(几 MB) |
功能 | 基本串口通信 | 支持文件传输、日志记录等 |
适用场景 | 嵌入式系统、快速调试 | 桌面环境、复杂调试 |
易用性 | 简单,命令行直观 | 配置稍复杂,需进入配置界面 |
对于资源受限的嵌入式系统,Microcom 是首选;而在功能需求较多的场景下,Minicom 更适合。
九、总结
Microcom 是一款轻量、简单、实用的串口通信工具,特别适合嵌入式 Linux 环境下的串口调试。无论是调试 AT 指令、查看设备日志,还是与传感器通信,Microcom 都能以最小的资源占用完成任务。通过本文的介绍和示例,开发者可以快速掌握 Microcom 的安装、配置和使用方法,并在实际项目中灵活应用。
相关文章:
深入解析 Microcom:嵌入式串口调试利器
在嵌入式系统开发中,串口通信是调试和与外部设备交互的核心手段之一。Linux 系统中,Minicom 是一个广为人知的串口调试工具,但其依赖较多库(如 libncurses),在资源受限的嵌入式环境中可能显得臃肿。 而 Mi…...
算法驱动的场景识别:规则引擎与机器学习的强大结合
引言 在智能驾驶系统、交通分析和安全监控等领域,场景识别是一项核心技术。传统的场景识别方法主要依赖人工标注,不仅耗时耗力,还容易受主观因素影响。随着技术的发展,算法驱动的场景识别方法逐渐兴起,通过结合规则引…...
typescript开发心得
语法知识点 回调地狱问题 用await,或者有些库提供了sync方法 yield 用法跟python的一样。 yield只能用于生成器里,生成器是function*,例如: export function* filter(rootNode: ts.Node, acceptedKind: ts.SyntaxKind) {for…...
淘宝开放平台 API 调用全解析:商品详情数据采集接口接入教程
一、引言 在电商领域蓬勃发展的当下,淘宝作为行业领军者,其平台上琳琅满目的商品蕴含着海量有价值的信息。无论是电商从业者想要精准把握竞品动态、优化自身商品策略,还是数据分析师试图挖掘消费趋势、洞察市场需求,亦或是科研人…...
SQL注入(SQL Injection)深度解析
SQL注入是一种利用Web应用程序与数据库交互机制缺陷的网络攻击技术,其核心在于通过恶意构造的输入参数篡改原始SQL查询逻辑,进而实现对数据库的非授权操作。以下从定义、攻击原理、技术分类、危害及防御体系多维度展开分析: 一、定义与本质 技…...
MCP基础学习四:MCP在AI应用中的集成(MCP在AI应用中的完整架构图)
MCP在AI应用中的集成 文章目录 MCP在AI应用中的集成一,学习目标二,学习内容1. 在AI应用中配置和使用MCP服务1.1 不同AI工具连接方式与部署模式1.1.1 了解不同的MCP传输模式1.1.2 掌握如何在AI客户端中配置MCP服务Cursor 客户端中配置MCP服务Cherry Studio AI客户端中…...
K8S-证书过期更新
K8S证书过期问题 K8S证书过期处理方法 Unable to connect to the server: x509: certificate has expired or is not yet valid 1、查看证书有效期: # kubeadm certs check-expiration2、备份证书 # cp -rp /etc/kubernetes /etc/kubernetes.bak3、直接重建证书 …...
蓝桥杯考前复盘
明天就是考试了,适当的停下刷题的步伐。 静静回望、思考、总结一下,我走过的步伐。 考试不是结束,他只是检测这一段时间学习成果的工具。 该继续走的路,还是要继续走的。 只是最近,我偶尔会感到迷惘,看…...
BERT - MLM 和 NSP
本节代码将实现BERT模型的两个主要预训练任务:掩码语言模型(Masked Language Model, MLM) 和 下一句预测(Next Sentence Prediction, NSP)。 1. create_nsp_dataset 函数 这个函数用于生成NSP任务的数据集。 def cr…...
mysql 与 sqlite 数学运算 精度 问题
mysql 与 sqlite 数学运算 精度 问题 在 Excel 中,浮点运算得到的结果可能不准确 https://learn.microsoft.com/zh-cn/office/troubleshoot/excel/floating-point-arithmetic-inaccurate-result 本文讨论 Microsoft Excel 如何存储和计算浮点数。 由于存在舍入或…...
MySQL的数据库性能分析利器Percona toolkit
目录 简介使用场景 使用示例Mysql 慢查询分析诊断临时开启慢SQL持久化开启慢SQL日志 使用包管理器安装包管理器安装 percona-release使用相应的包管理器安装 Percona Toolkit pt-query-digest 安装安装 pt-query-digest案例实战之慢查询分析诊断查看慢SQL日志使用pt-query-dige…...
力扣HOT100之链表: 148. 排序链表
这道题直接用蠢办法来做的,直接先遍历一遍链表,用一个哈希表统计每个值出现的次数,由于std::map<int, int>会根据键进行升序排序,因此我们将节点的值作为键,其在整个链表中的出现次数作为值,当所有元…...
Azure AI Foundry 正在构建一个技术无障碍的未来世界
我们习以为常的街道和数字世界,往往隐藏着被忽视的障碍——凹凸不平的路面、不兼容的网站、延迟的字幕或无法识别多样化声音的AI模型。这些细节对某些群体而言,却是日常的挑战。正如盲道不仅帮助视障者,也优化了整体城市体验,信息…...
AlmaLinux9.5 修改为静态IP地址
查看当前需要修改的网卡名称 ip a进入网卡目录 cd /etc/NetworkManager/system-connections找到对应网卡配置文件进行修改 修改配置 主要修改ipv4部分,改成自己的IP配置 [ipv4] methodmanual address1192.168.252.129/24,192.168.252.254 dns8.8.8.8重启网卡 …...
P8754 [蓝桥杯 2021 省 AB2] 完全平方数
题目描述 思路 一看就知道考数学,直接看题解试图理解(bushi) 完全平方数的质因子的指数一定为偶数。 所以 对 n 进行质因数分解,若质因子指数为偶数,对结果无影响。若质因子指数为奇数,则在 x 中乘以这个质因子,保证指…...
QT Sqlite数据库-教程001 创建数据库和表-上
【1】创建数据库 #include <QtSql/QSqlDatabase> #include <QtSql/QSqlQuery> #include <QtSql/QSqlRecord> QString path QDir::currentPath(); QApplication::addLibraryPath(pathQString("/release/plugins")); QPluginLoader loader(pathQSt…...
安卓手机怎样开启双WiFi加速
1. 小米/Redmi手机 路径: 设置 → WLAN → 高级设置 → 双WLAN加速 操作: 开启功能后,可同时连接一个2.4GHz WiFi和一个5GHz WiFi(或两个不同路由器)。 可选择“智能选择”或手动指定辅助网络。 2. 华为/荣耀手机…...
基于角色个人的数据权限控制
一、适用场景 如何有效控制用户对特定数据的访问和操作权限,以确保系统的安全性和数据的隐私性。 二、市场现状 权限管理是现代系统中非常重要的功能,尤其是对于复杂的B端系统或需要灵活权限控制的场景,可以运用一些成熟的工具和框架&…...
JAVA虚拟机(JVM)学习
入门 什么是JVM JVM:Java Virtual Machine,Java虚拟机。 JVM是JRE(Java Runtime Environment)的一部分,安装了JRE就相当于安装了JVM,就可以运行Java程序了。JVM的作用:加载并执行Java字节码(.class&#…...
【VSCode配置】运行springboot项目和vue项目
目录 安装VSCode安装软件安装插件VSCode配置user的全局设置setting.jsonworkshop的项目自定义设置setting.jsonworkshop的项目启动配置launch.json 安装VSCode 官网下载 安装软件 git安装1.1.12版本,1.2.X高版本无法安装node14以下版本 nvm安装(github…...
UE5,LogPackageName黄字警报处理方法
比如这个场景,淘宝搜索,ue5 T台,转为ue5.2后,选择物体,使劲冒错。 LogPackageName: Warning: DoesPackageExist called on PackageName that will always return false. Reason: 输入“”为空。 2. 风险很大的删除法&…...
ONVIF/RTSP/RTMP协议EasyCVR视频汇聚平台RTMP协议配置全攻略 | 直播推流实战教程
在现代化的视频管理和应急指挥系统中,RTMP协议作为一种高效的视频流传输方式,正变得越来越重要。无论是安防监控、应急指挥,还是物联网视频融合,掌握RTMP协议的接入和配置方法,都是提升系统性能和效率的关键一步。 今天…...
AI 驱动的全链路监控,从资源管理到故障自愈的实战指南--云监控篇
一、3 步完成多云接入,告别繁琐配置 1. 账号绑定 AWS:输入访问密钥,自动拉取 EC2、RDS、S3 等资源清单。 Azure:通过服务主体认证,一键发现 VM、SQL 数据库、存储账户。 GCP:上传服务账号密钥࿰…...
大模型在初治CLL成人患者诊疗全流程风险预测与方案制定中的应用研究
目录 一、绪论 1.1 研究背景与意义 1.2 国内外研究现状 1.3 研究目的与内容 二、大模型技术与慢性淋巴细胞白血病相关知识 2.1 大模型技术原理与特点 2.2 慢性淋巴细胞白血病的病理生理与诊疗现状 三、术前风险预测与手术方案制定 3.1 术前数据收集与预处理 3.2 大模…...
Express中间件(Middleware)详解:从零开始掌握(2)
1. 请求耗时中间件的增强版 问题:原版只能记录到控制台,如何记录到文件? 改进点: 使用process.hrtime()是什么?获取更高精度的时间支持将日志写入文件记录更多信息(IP地址、状态码)工厂函数模式使中间件可配置 con…...
Crossmint 与 Walrus 合作,将协议集成至其跨链铸造 API 中
Crossmint 是一个一站式平台,可为 app、AI Agent 或企业集成区块链。如今,Crossmint 已集成 Walrus 协议,以实现更具可扩展性的通证化场景,特别面向 AI Agent 和企业级用户。这项合作为开发者和企业提供了一种全新的方式ÿ…...
24.OpenCV中的霍夫直线检测
OpenCV中的霍夫直线检测 霍夫直线检测是一种基于参数变换的全局特征提取方法,它能在边缘图像中有效检测出直线,具有鲁棒性强和对噪声干扰容忍度高的特点。本文将从原理、算法实现和 OpenCV 应用三个角度对霍夫直线检测进行详细的阐述,并给出…...
springboot 处理编码的格式为opus的音频数据解决方案【java8】
opus编码的格式概念: Opus是一个有损声音编码的格式,由Xiph.Org基金会开发,之后由IETF(互联网工程任务组)进行标准化,目标是希望用单一格式包含声音和语音,取代Speex和Vorbis,且适用…...
【AI提示词】创业导师提供个性化创业指导
提示说明 以丰富的行业经验和专业的知识为学员提供创业指导,帮助其解决实际问题并实现商业成功 提示词 # Role: 创业导师## Profile - language: 中英文 - description: 以丰富的行业经验和专业的知识为学员提供创业指导,帮助其解决实际问题并实现商业…...
STM32 模块化开发实战指南:系列介绍
本文是《STM32 模块化开发实战指南》系列的导读篇,旨在介绍整个系列的写作目的、适用读者、技术路径和每一篇的主题规划。适合从事 STM32、裸机或 RTOS 嵌入式开发的个人开发者、初创工程师或企业项目团队。 为什么要写这个系列? 在嵌入式开发中,很多人刚开始都是从点亮一个…...
在 Dev-C++中编译运行GUI 程序介绍(三)有趣示例一组
在 Dev-C中编译运行GUI程序介绍(三)有趣示例一组 前期见 在 Dev-C中编译运行GUI 程序介绍(一)基础 https://blog.csdn.net/cnds123/article/details/147019078 在 Dev-C中编译运行GUI 程序介绍(二)示例&a…...
功能安全时间参数FTTI
FTTI:fault tolerant time interval故障容错时间间隔; FHTI:Fault Handling Time Interval故障处理时间间隔; FRTI:Fault Reaction Time Interval故障反应时间间隔; FDTI:Fault Detectlon Ti…...
docker镜像制作
🧱 如何将任意 Linux 系统打包为 Docker 镜像 适用场景: 本地物理机 / 虚拟机上的 Linux(如 Ubuntu、Debian、CentOS、openEuler 等);想将当前系统环境完整打包成 Docker 镜像;系统内已安装了运行环境,如 Java、Python、Nginx 等,想保留它们。✅ 步骤概览: 准备文件…...
【Pandas】pandas DataFrame iat
Pandas2.2 DataFrame Indexing, iteration 方法描述DataFrame.head([n])用于返回 DataFrame 的前几行DataFrame.at快速访问和修改 DataFrame 中单个值的方法DataFrame.iat快速访问和修改 DataFrame 中单个值的方法 pandas.DataFrame.iat pandas.DataFrame.iat 是一个快速访…...
【图像分类】【深度学习】系列学习文章目录
图像分类简介 图像分类是计算机视觉领域中的一个核心问题,它涉及到将图像数据分配到一个或多个预定义类别中的过程。这项技术的目标是让机器模拟人类能够自动识别并分类图像内容。近年来,随着深度学习的发展,尤其是卷积神经网络(CNNs)的应用…...
MyBatisPlus 学习笔记
文章目录 MyBatisPlus 快速入门第一步:引入 MyBaitsPlus 起步依赖第二步:自定义的 Mapper 继承 BaseMapper 接口新增相关修改相关删除相关查询相关 Mp 使用示例 MyBaitsPlus 常见注解MP 实体类与数据库信息约定Mp 实体类与数据库信息约定不符合解决方法…...
Profibus DP主站如何转Modbus TCP?
Profibus DP主站如何转Modbus TCP? 在现代工业自动化系统中,设备之间的互联互通至关重要。Profibus DP 和 Modbus TCP 是两种常见的通信协议,分别应用于不同的场景。为了实现这两种协议的相互转换,Profibus DP主站转Modbus TCP网…...
尚硅谷Java第 4、5 章IDEA,数组
第 4 章:IDEA的使用 第 5 章:数组 5.1 数组的概述 数组(Array):就可以理解为多个数据的组合。 程序中的容器:数组、集合框架(List、Set、Map)。 数组中的概念: 数组名 下标(或索…...
一些简单但常用的算法记录(python)
1、计算1-2020间的素数个数 def is_composite(num):if num < 1:return False# 从 2 开始到 num 的平方根进行遍历for i in range(2, int(num**0.5) 1):if num % i 0:return Truereturn Falsecnt 0 for num in range(1, 2021):if is_composite(num):cnt 1print(cnt)2、 …...
基于Docker容器的CICD项目Jenkins/gitlab/harbor/Maven实战
一、企业业务代码发布方式 1.1 传统方式 以物理机或虚拟机为颗粒度部署部署环境比较复杂,需要有先进的自动化运维手段出现问题后重新部署成本大,一般采用集群方式部署部署后以静态方式展现 1.2 容器化方式 以容器为颗粒度部署部署方式简单࿰…...
高并发秒杀系统设计:关键技术解析与典型陷阱规避
电商、在线票务等众多互联网业务场景中,高并发秒杀活动屡见不鲜。这类活动往往在短时间内会涌入海量的用户请求,对系统架构的性能、稳定性和可用性提出了极高的挑战。曾经,高并发秒杀架构设计让许多开发者望而生畏,然而࿰…...
(十四)安卓开发中的RecyclerView详解
在安卓开发中,RecyclerView 是一个功能强大且灵活的 UI 组件,用于高效地显示大量数据集合,如列表、网格或瀑布流。它是传统 ListView 和 GridView 的现代替代品,提供了更高的性能优化和自定义能力。RecyclerView 的核心优势在于其…...
如何设置Ubuntu服务器版防火墙
在Ubuntu服务器中,默认使用 ufw(Uncomplicated Firewall)作为防火墙管理工具。它是对iptables的简化封装,适合快速配置防火墙规则。以下是设置防火墙的详细步骤: 1. 安装与启用 ufw 安装(通常已预装&…...
根文件系统(rootfs) 制作方法(BusyBox、Buildroot、Yocto、Ubuntu Base)
以下是关于 根文件系统(rootfs) 制作的四种主流方法(BusyBox、Buildroot、Yocto、Ubuntu Base)的详细教程与对比分析,结合不同场景的需求提供具体实现步骤和关键要点。 1. BusyBox 制作 rootfs 核心特点 轻量级&…...
SAP软件FICO各种财务账期的功能用途介绍
FI会计账期 一般财务账期总账期间的控制是仅开启当前一个期间,如果月结期间应同时开启结账期间和下一期间两个期间,结账完成需立即关闭已完成结账的期间,避免凭证过账日期误记账。 设置事务码:OB52或 S_ALR_87003642 备注&#…...
蓝桥杯C++组部分填空题
P1508 - [蓝桥杯2020初赛] 门牌制作 - New Online Judge #include<bits/stdc.h> using namespace std;int main() {int res 0;for(int i 1; i < 2020; i){int num i;while(num){if(num % 10 2) res;num/10;}}cout<<res;return 0; } 624 P1509 - [蓝桥杯20…...
内联inline
一、什么是 inline? inline 的本意是: 建议编译器将函数调用处展开成函数体代码,省去函数调用的开销。 inline int square(int x) { return x * x; } 当你调用 square(5) 时,编译器可能会将其替换成 5 * 5,从而避免…...
【models】Transformer 之 各种 Attention 原理和实现
Transformer 之 各种 Attention 原理和实现 本文将介绍Transformer 中常见的Attention的原理和实现,其中包括: Self Attention、Spatial Attention、Temporal Attention、Cross Attention、Grouped Attention、Tensor Product Attention、FlashAttentio…...
基于JavaAPIforKml实现Kml 2.2版本的全量解析实践-以两步路网站为例
目录 前言 一、关于两步路网站 1、相关功能 2、数据结构介绍 二、JAK的集成与实现 1、JAK类图简介 2、解析最外层数据 3、解析扩展元数据和样式 4、递归循环解析Feature 5、解析具体的数据 三、结论 前言 随着地理信息技术的快速发展,地理空间数据的共享…...
Ubuntu搭建Pytorch环境
Ubuntu搭建Pytorch环境 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 Ubuntu搭建Pytorch环境前言一、Anaconda二、Cuda1.安装流程2、环境变量&#…...