【单片机通信技术】串口通信的几种方式与比较,详细解释SPI通信
一、介绍
串口通信是一种通过串行接口逐位传输数据的通信方式,广泛应用于嵌入式系统、工业控制、传感器网络等领域。
二、以下是几种常见的串口通信方式及其对比:
1.UART(Universal Asynchronous Receiver/Transmitter)
-
特点:
-
异步通信:无时钟信号,依赖预定义的波特率(Baud Rate)同步数据。
-
全双工:支持同时发送和接收(需独立的TX和RX线)。
-
点对点:通常用于两个设备之间的通信。
-
帧格式:数据帧包含起始位、数据位(5-9位)、校验位(可选)和停止位。
-
-
优点:
-
简单易用,硬件成本低。
-
支持长距离通信(配合RS-232/RS-485等电平转换芯片)。
-
-
缺点:
-
依赖精确的波特率匹配,抗干扰能力较弱。
-
仅支持点对点,无法直接连接多设备。
-
-
典型应用:单片机与PC通信、GPS模块、蓝牙模块等。
2. I2C(Inter-Integrated Circuit)
-
特点:
-
同步通信:需时钟信号(SCL)和数据线(SDA)。
-
半双工:同一时间只能发送或接收。
-
多主多从:支持多个主设备和从设备共享总线。
-
地址寻址:每个设备有唯一地址,主设备通过地址选择从设备。
-
低速传输:标准模式(100kbps)、快速模式(400kbps)、高速模式(3.4Mbps)。
-
-
优点:
-
引脚少(仅需两根线),适合多设备场景。
-
支持总线仲裁和冲突检测。
-
-
缺点:
-
速度较慢,协议复杂度较高。
-
长距离通信需额外电路(如电平转换器)。
-
-
典型应用:温度传感器、RTC(实时时钟)、低速率外设。
3. RS-232
-
特点:
-
物理层标准:定义电平、连接器(如DB9)和电气特性。
-
异步通信:基于UART协议,需波特率匹配。
-
单端信号:使用正负电压表示逻辑(-3V~-15V为1,+3V~+15V为0)。
-
-
优点:
-
抗干扰能力较强(相比TTL电平)。
-
支持较长距离(典型15米以内)。
-
-
缺点:
-
速度较低(通常<115.2kbps)。
-
仅支持点对点通信。
-
-
典型应用:老式计算机外设(鼠标、调制解调器)、工控设备。
4. RS-485
-
特点:
-
差分信号:使用两条线(A和B)传输差分电压,抗干扰能力强。
-
多设备通信:支持总线拓扑,最多32个设备(通过中继器扩展)。
-
半双工:需方向控制(如RE/DE引脚)。
-
高速长距离:传输距离可达1200米(低速时),速率最高10Mbps(短距离)。
-
-
优点:
-
抗干扰强,适合工业环境。
-
支持多节点网络。
-
-
缺点:
-
需协议层管理(如Modbus),硬件复杂度较高。
-
-
典型应用:工业自动化、楼宇控制、多节点传感器网络。
5. USB(Universal Serial Bus)
-
特点:
-
复杂协议:支持热插拔、即插即用、电源供电。
-
高速传输:USB 2.0(480Mbps)、USB 3.0(5Gbps)。
-
主从架构:主机(如PC)控制所有数据传输。
-
-
优点:
-
高带宽,支持多种设备类型。
-
广泛兼容,即插即用。
-
-
缺点:
-
协议复杂,需专用控制器。
-
传输距离短(一般<5米)。
-
-
典型应用:外设连接(键盘、存储设备)、高速数据采集。
6. SPI(Serial Peripheral Interface)
1. 基本特性:
-
同步通信:依赖时钟信号(SCLK)控制数据传输时序,主设备生成时钟。
-
全双工:数据可同时发送(MOSI)和接收(MISO)。
-
主从架构:一个主设备控制多个从设备,通过片选信号(SS/CS)选择从机。
-
高速传输:理论速率可达几十Mbps(如STM32的SPI支持50Mbps以上)。
-
灵活性:数据位宽可配置(通常8位或16位),时钟极性和相位可调。
2. 信号线
-
SCLK(Serial Clock):主设备输出的时钟信号,控制数据传输节奏。
-
MOSI(Master Out Slave In):主设备发送数据到从设备的线路。
-
MISO(Master In Slave Out):从设备发送数据到主设备的线路。
-
SS/CS(Slave Select/Chip Select):主设备通过拉低对应从机的片选信号激活通信。
3. 通信过程
-
主设备初始化:配置时钟极性(CPOL)和相位(CPHA),确定数据采样边沿。
-
选择从设备:拉低目标从机的SS/CS引脚。
-
数据传输:
-
主设备通过MOSI发送数据,同时通过MISO接收从机数据。
-
每个时钟周期传输一个数据位(上升沿或下降沿采样,由CPOL和CPHA决定)。
-
-
结束通信:拉高SS/CS引脚,释放从机。
4. 时钟模式(CPOL和CPHA)
-
CPOL(Clock Polarity):
-
CPOL=0:时钟空闲时为低电平。
-
CPOL=1:时钟空闲时为高电平。
-
-
CPHA(Clock Phase):
-
CPHA=0:数据在时钟的第一个边沿(上升或下降)采样。
-
CPHA=1:数据在时钟的第二个边沿采样。
-
5. 多从机连接方式
独立片选(SS/CS):每个从机有独立的片选信号,主设备通过多个SS引脚控制。
-
优点:简单直接,各从机独立工作。
-
缺点:占用主设备较多引脚。
菊花链(Daisy Chain):多个从机共用同一片选信号,数据依次传递。
-
优点:节省主设备引脚。
-
缺点:所有从机需支持菊花链模式,协议复杂度高。
6. 优缺点总结
-
优点:
-
高速传输,适合实时性要求高的场景。
-
全双工通信,数据传输效率高。
-
硬件简单,无复杂协议(如地址寻址)。
-
-
缺点:
-
引脚占用多(每个从机需单独SS线)。
-
无硬件错误检测机制(依赖软件校验)。
-
通信距离短(通常<1米)。
-
7. 典型应用
-
存储器:Flash、EEPROM(如W25Q128)。
-
传感器:加速度计、陀螺仪(如MPU6050)。
-
显示屏:OLED、TFT屏幕(通过SPI传输图像数据)。
-
ADC/DAC:高速模数/数模转换芯片。
三、SPI多从机通信的连线方法
若主机需连接多个从机,常见连线方式有两种:
1. 独立片选(CS)法
- 硬件连接:每个从机独占一条CS线,主机通过拉低对应CS线选中从机。
- 优点:逻辑简单,各从机独立操作,无冲突。
- 缺点:占用主机较多GPIO引脚,从机数量受限于可用CS线数量。
连线示意图:
主机 从机1 从机2
SCLK ──┬─────SCLK─────SCLK
MOSI ──┼─────MOSI─────MOSI
MISO ──┼─────MISO─────MISO
CS1 ──┴─────CS
CS2 ────────┴───────CS
2.菊花链(Daisy Chain)法
- 硬件连接:所有从机的MOSI/MISO串联,数据依次传递。
- 工作方式:主机发送数据包,各从机依次截取自身所需数据段。
- 优点:仅需一条CS线,节省主机引脚。
- 缺点:所有从机需支持菊花链协议,且数据需按顺序处理。
适用场景:LED驱动芯片(如移位寄存器)等需要级联的设备。
四、SPI多从机通信的注意事项
- 时序同步:所有从机的时钟模式(CPOL/CPHA)需与主机一致。
- 抗干扰设计:长距离通信时,可加入终端电阻或使用差分信号(如RS-485兼容SPI)。
- 软件调度:主机需通过轮询或优先级策略管理多从机通信,避免总线冲突。
五、STM32F103单片机中默认SPI引脚是哪个
1.SPI1(高速SPI,APB2总线)
- 默认引脚(无需重映射):
- SCK(时钟):PA5(引脚PA5,复用功能
SPI1_SCK
) - MOSI(主机输出):PA7(引脚PA7,复用功能
SPI1_MOSI
) - MISO(主机输入):PA6(引脚PA6,复用功能
SPI1_MISO
) - NSS(片选,可选硬件控制):PA4(引脚PA4,复用功能
SPI1_NSS
)
- SCK(时钟):PA5(引脚PA5,复用功能
2.SPI2(低速SPI,APB1总线)
- 默认引脚(无需重映射):
- SCK(时钟):PB13(引脚PB13,复用功能
SPI2_SCK
) - MOSI(主机输出):PB15(引脚PB15,复用功能
SPI2_MOSI
) - MISO(主机输入):PB14(引脚PB14,复用功能
SPI2_MISO
) - NSS(片选,可选硬件控制):PB12(引脚PB12,复用功能
SPI2_NSS
)
- SCK(时钟):PB13(引脚PB13,复用功能
相关文章:
【单片机通信技术】串口通信的几种方式与比较,详细解释SPI通信
一、介绍 串口通信是一种通过串行接口逐位传输数据的通信方式,广泛应用于嵌入式系统、工业控制、传感器网络等领域。 二、以下是几种常见的串口通信方式及其对比: 1.UART(Universal Asynchronous Receiver/Transmitter) 特点&am…...
DeepSeek开源Day5:3FSsmallpond技术详解
2 月 24 日,DeepSeek 启动 “开源周”,第四个开源的代码库为 3FS&smallpond(又是一下发布了两个)。 3FS(Fire-Flyer File System)是 DeepSeek 内部开发的一款高性能分布式文件系统,旨在为 A…...
常见的限流算法有哪些
计数器算法 原理:在固定的时间窗口内,对请求进行计数,当请求数量达到设定的阈值时,就开始限流,拒绝多余的请求。例如,设定 1 分钟的时间窗口内允许最多 100 个请求,那么在这 1 分钟内每来一个请…...
Android 低功率蓝牙之BluetoothGattCallback回调方法详解
BluetoothGattCallback 是 Android 中用于处理蓝牙低功耗(BLE)设备通信的核心回调类。它负责处理与 BLE 设备的连接、服务发现、数据读写等操作的结果。以下是对 BluetoothGattCallback 的详细解析: 1. onConnectionStateChange 触发时机&am…...
socket.io协议内容详解
Socket.IO 是一个基于事件的实时通信库,支持双向通信。它并非单一协议,而是结合了 Engine.IO 传输层和 Socket.IO 应用层协议的复合体系。以下是其协议核心内容的详细解析: 1. 协议分层 Engine.IO:负责底层传输(如 WebSocket、HTTP 长轮询),处理连接稳定性、心跳和断线重…...
在Oracle中编写雪花算法升学雪花ID
雪花算法的定义不详细说了哈,直接给出代码! --雪花配置 --DROP TABLE SNOWFLAKE_CONFIG; CREATE TABLE SNOWFLAKE_CONFIG ( DATA_CENTER_ID NUMBER(5) NOT NULL, WORKER_ID NUMBER(5) NOT NULL, LAST_TIMESTAMP NUMBER(20) NOT NULL, SEQUENCE NUMBE…...
我们来学nginx -- 优化下游响应速度
优化下游响应速度 题记启用 Gzip 压缩优化缓冲区设置设置超时时间 题记 专家给出的配置文件真是…,信息量有点大啊! nginx:我只想作为一个简单的代理专家爸爸:都是为了你好! 这样,先从有关响应速度的角度&…...
SELECT ... FOR UPDATE 加锁后,其他线程能读取数据吗
在执行 SELECT * FROM table WHERE ... FOR UPDATE 语句时,MySQL 会对查询结果集中的行加 排他锁(X锁)。这种锁的行为会影响其他事务对这些行的读写操作。以下是具体的影响: 1. 加锁后的效果 当前事务: 对查询结果集中…...
【论文阅读】多模态——LSeg
文献基本信息 标题:Language-Driven Semantic Segmentation作者:Boyi Li、Kilian Q. Weinberger、Serge Belongie、Vladlen Koltun、Ren Ranftl单位:Cornell University、University of Copenhagen、Apple、Intel Labs会议/期刊:…...
GBT32960 协议编解码器的设计与实现
GBT32960 协议编解码器的设计与实现 引言 在车联网领域,GBT32960 是一个重要的国家标准协议,用于新能源汽车与监控平台之间的数据交互。本文将详细介绍如何使用 Rust 实现一个高效可靠的 GBT32960 协议编解码器。 整体架构 编解码器的核心由三个主要组…...
Tomcat之 配置https协议即SSL证书
太难了,Tomcat7服务器配置Https协议的SSL证书,半天没搞定啊 切换,Tomcat8 分分钟 参考 https://blog.csdn.net/u014553029/article/details/86672342 https://blog.csdn.net/qq_37138756/article/details/103516627 https://blog.csdn.net/r…...
如何将飞书多维表格与DeepSeek R1结合使用:效率提升的完美搭档
将飞书的多维表格与DeepSeek R1结合使用,就像为你的数据管理和分析之旅装上一台涡轮增压器。两者的合作,不仅仅在速度上让人耳目一新,更是将智能化分析带入了日常的工作场景。以下是它们如何相辅相成并改变我们工作方式的一些分享。 --- 在…...
JPA编程,去重查询ES索引中的字段,对已有数据的去重过滤,而非全部字典数据
一、背景 课程管理界面,查询前,需要把查询元数据给出。 学科列表、学段列表和分类列表,我们把它定义为查询元数据。 一般的业务需求是: 系统维护好多个字典,比如学科、学段等等,相当于属性库。 但是&…...
Kubermetes 部署mysql pod
步骤 1: 创建 PersistentVolume 和 PersistentVolumeClaim 首先为 MySQL 创建一个 PersistentVolume (PV) 和 PersistentVolumeClaim (PVC) 来确保数据的持久性。 mysql-pv.yaml: apiVersion: v1 kind: PersistentVolume metadata:name: mysql-pv-volume spec:cap…...
自定义wordpress三级导航菜单代码
首先,在你的主题functions.php文件中,添加以下代码以注册一个新的菜单位置: function mytheme_register_menus() {register_nav_menus(array(primary-menu > __(Primary Menu, mytheme))); } add_action(init, mytheme_register_menus); …...
剑指 Offer II 060. 出现频率最高的 k 个数字
comments: true edit_url: https://github.com/doocs/leetcode/edit/main/lcof2/%E5%89%91%E6%8C%87%20Offer%20II%20060.%20%E5%87%BA%E7%8E%B0%E9%A2%91%E7%8E%87%E6%9C%80%E9%AB%98%E7%9A%84%20k%20%E4%B8%AA%E6%95%B0%E5%AD%97/README.md 剑指 Offer II 060. 出现频率最高的…...
SQL Server数据库中用存储过程来取顺序号
SQL Server数据库中用存储过程来取顺序号 表sys_number,字段name字符,表示前缀,value数字,一个一个递增 存储过程代码: SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER procedure [dbo].[usp_GetSysid]name varchar(5…...
JS—组成:2分钟掌握什么是ECMAScript操作,什么是DOM操作,什么是BOM操作
个人博客:haichenyi.com。感谢关注 1. 目录 1–目录2–组成3–内置对象 2. 组成 一直都在说JS,JS,到底啥是JS有了解过吗?JS由哪几部分组成的呢? 定义: JavaScript是一种轻量级、解释型或即时编译型的编程语…...
如何使用 Ollama 的 API 来生成聊天
如何使用 Ollama 的 API 来生成聊天 简介 生成聊天 生成聊天的示例 加载模型 卸载模型 简介 Ollama 提供了一个 RESTful API,允许开发者通过 HTTP 请求与 Ollama 服务进行交互。这个 API 覆盖了所有 Ollama 的核心功能,包括模型管理、运行和监控。本…...
Jenkins学习笔记
文章目录 一、Jenkins简介二、Jenkins的安装1. 安装前准备2. 安装Jenkins3. 启动Jenkins 三、Jenkins的配置1. 初始配置2. 全局工具配置3. 插件安装 四、Jenkins的使用1. 创建新任务2. 配置任务3. 触发构建4. 查看构建结果 五、Jenkins的高级功能1. 分布式构建2. 流水线&#x…...
公开笔记:自然语言处理(NLP)中文文本预处理主流方法
在自然语言处理(NLP)领域,将中文文本转化为数字的主流方法主要集中在预训练语言模型和子词编码技术上。这些方法能够更好地捕捉语义信息,并且在各种NLP任务中表现出色。以下是目前主流的文本编码方法: 1. 基于预训练语…...
第5章 使用OSSEC进行监控(网络安全防御实战--蓝军武器库)
网络安全防御实战--蓝军武器库是2020年出版的,已经过去3年时间了,最近利用闲暇时间,抓紧吸收,总的来说,第5章开始进入主机安全(HIDS)领域了,2022年的时候有幸做过终端安全一段时间&a…...
计算机毕业设计SpringBoot+Vue.js电商平台(源码+文档+PPT+讲解)
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...
【音视频】ffplay简单过滤器
一、ffplay简单过滤器 视频旋转:借助transpose滤镜 ffplay -i 1.mp4 -vf transpose1这里选择不同的数字是不同的方向: 视频翻转:借助hflip/vflip实现水平和垂直翻转: 水平翻转 ffplay 1.mp4 -vf hflip垂直翻转 ffplay 1.mp4 …...
大白话html第十一章
大白话html第十一章 在网页开发的第十一章,会涉及到很多前沿且复杂的技术和概念,主要聚焦于性能极致优化、前沿交互技术以及与人工智能的融合等方面。 1. 极致性能优化 概念 这就好比给一辆赛车进行全方位的精细调校,让它跑得又快又稳。在…...
基于websocket搭建聊天室
基于websocket搭建聊天室 1.后端配置 1.依赖一个web一个websocket <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.spr…...
Metal学习笔记十一:贴图和材质
在上一章中,您设置了一个简单的 Phong 光照模型。近年来,研究人员在基于物理的渲染 (PBR) 方面取得了长足的进步。PBR 尝试准确表示真实世界的着色,真实世界中离开表面的光量小于表面接收的光量。在现实世界中…...
STM32-USART串口数据包
一:HEX数据包发送 1.为了收发数据包,先定义两个缓存区的数组 ,这4个数据只存储发送或者接收的载荷数据,包头和包尾不存 uint8_t Serial_TxPacket[4]; uint8_t Serial_RxPacket[4]; uint8_t Serial_RxFlag;//接收一个数据包就置F…...
【LeetCode 热题 100】438. 找到字符串中所有字母异位词 | python 【中等】
继续学!嗨起来!!!(正确率已经下30%了,我在干什么) 题目: 438. 找到字符串中所有字母异位词 给定两个字符串 s 和 p,找到 s 中所有 p 的子串,返回这些子串的…...
Ollama+Deepseek-R1+AnythingLLM本地个人知识库搭建
一、OllamaDeepseek-R1AnythingLLM本地个人知识库搭建 在搭建强大的本地个人知识库以及提升开发效率的技术体系中,Ollama、DeepSeek-R1 和 AnythingLLM 扮演着举足轻重的角色。Ollama 作为模型运行与管理工具,是整个技术架构中的关键枢纽,负…...
决策树(Decision Tree)基础知识
目录 一、回忆1、*机器学习的三要素:1)*函数族2)*目标函数2.1)*模型的其他复杂度参数 3)*优化算法 2、*前处理/后处理1)前处理:特征工程2)后处理:模型选择和模型评估 3、…...
跨域-告别CORS烦恼
跨域-告别CORS烦恼 文章目录 跨域-告别CORS烦恼[toc]1-参考网址2-思路整理1-核心问题2-个人思考3-脑洞打开4-个人思考-修正版1-个人思考2-脑洞打开 3-知识整理1-什么是跨域一、同源策略简介什么是源什么是同源是否是同源的判断哪些操作不受同源策略限制跨域如何跨域 二、CORS 简…...
浅论数据库聚合:合理使用LambdaQueryWrapper和XML
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、数据库聚合替代内存计算(关键优化)二、批量处理优化四、区域特殊处理解耦五、防御性编程增强 前言 技术认知点:使用 XM…...
css实现元素垂直居中显示的7种方式
文章目录 * [【一】知道居中元素的宽高](https://blog.csdn.net/weixin_41305441/article/details/89886846#_1) [absolute 负margin](https://blog.csdn.net/weixin_41305441/article/details/89886846#absolute__margin_2) [absolute margin auto](https://blog.csdn.net…...
Nerf流程
一.数据处理: 在输入数据时,并没有给出相机的内参与外参,需要在数据处理得出相机的内外惨数,作者使用COLMAP得到相机参数后,转成NeRF可以读取的格式即可以用于模型训练。 旋转矩阵的第一列到第三列分别表示了相机坐标系…...
Spring Cloud Alibaba学习 5- Seata入门使用
Spring Cloud Alibaba学习 5- Seata入门使用 Seata是Spring Cloud Alibaba中用于分布式事务管理的解决方案 一. Seata的基本概念 1. Seata的三大角色 1> TC (Transaction Coordinator) - 事务协调者 维护全局和分支事务的状态,驱动全局事务提交或回滚。TC作…...
Select 下拉菜单选项分组
使用<select>元素创建下拉菜单,并使用 <optgroup> 元素对选项进行分组。<optgroup> 元素允许你将相关的 <option> 元素分组在一起,并为每个分组添加一个标签。 <form action"#" method"post"><la…...
【无人机与无人车协同避障】
无人机与无人车协同避障的关键在于点云数据的采集、传输、解析及实时应用,以下是技术实现的分步解析: 1. 点云数据采集(无人机端) 传感器选择: LiDAR:通过激光雷达获取高精度3D点云(精度达厘米…...
AI视频领域的DeepSeek—阿里万相2.1图生视频
让我们一同深入探索万相 2.1 ,本文不仅介绍其文生图和文生视频的使用秘籍,还将手把手教你如何利用它实现图生视频。 如下为生成的视频效果(我录制的GIF动图) 如下为输入的图片 目录 1.阿里巴巴全面开源旗下视频生成模型万相2.1模…...
飞机大战lua迷你世界脚本
-- 迷你世界飞机大战 v1.2 -- 星空露珠工作室制作 -- 最后更新:2024年1月 ----------------------------- -- 迷你世界API适配配置 ----------------------------- local UI { BASE_ID 7477478487091949474-22856, -- UI界面ID ELEMENTS { BG 1, -- 背景 BTN_LE…...
Android15请求动态申请存储权限完整示例
效果: 1.修改AndroidManifest.xml增加如下内容: <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-perm...
Java 导出大数据到 Excel 表格
背景 之前的项目一直是用XSSFWorkbook来做 Excel 导出,在遇到大数据导出时,经常会遇到 OOM。在 Apache Poi 3.8 之后的版本提供的 SXSSFWorkbook 可以优雅的解决这个问题。 原理 SXSSFWorkbook 被称为流式 API,主要是因为它采用了流式写入…...
GCC RISCV 后端 -- GCC Passes 注释
在前面文章提到,当GCC 前端完成对C源代码解析完成后,就会使用 处理过程(Passes)机制,通过一系列的处理过程,将 GENERIC IR 表示的C程序 转步转换成 目标机器的汇编语言。过程描述如下图所示: 此…...
稚晖君级硬核:智元公司开源机器人通信框架AimRT入驻GitCode平台
在科技的浪潮中,机器人技术正以前所未有的速度发展。它们不再只是科幻小说中的概念,而是逐渐融入到我们的日常生活中,从工厂的自动化生产线到家庭的智能助手,机器人的身影无处不在。然而,随着机器人应用的日益复杂&…...
STM32L051系列单片机低功耗应用
STM32L051单片机支持多种低功耗模式,包括 Sleep(睡眠)、Stop(停止) 和 Standby(待机) 模式。不同模式的功耗和唤醒方式不同。 一、低功耗相关介绍 1.1 低功耗模式概览 模式功耗唤醒源时钟状态…...
【代码分享】基于IRM和RRT*的无人机路径规划方法详解与Matlab实现
基于IRM和RRT*的无人机路径规划方法详解与Matlab实现 1. IRM与RRT*的概述及优势 IRM(Influence Region Map)通过建模障碍物的影响区域,量化环境中的安全风险,为RRT算法提供启发式引导。RRT(Rapidly-exploring Random…...
【JAVA架构师成长之路】【JVM实战】第1集:生产环境CPU飙高排查实战
课程标题:生产环境CPU飙高排查实战——从现象到根因的15分钟攻防战 目标:掌握CPU飙高问题的系统性排查方法,熟练使用工具定位代码或资源瓶颈 0-1分钟:问题引入与核心影响 线上服务器CPU突然飙升至90%以上,导致服务响应延迟激增,用户投诉激增。CPU飙高可能由死循环、线程…...
android edittext 防止输入多个小数点或负号
有些英文系统的输入法,或者定制输入法。使用xml限制不了输入多个小数点和多个负号。所以代码来控制。 一、通过XML设置限制 <EditTextandroid:id="@+id/editTextNumber"android:layout_width="wrap_content"android:layout_height="wrap_conten…...
Spring MVC 页面重定向返回后通过nginx代理 丢失端口号问题处理
Spring MVC页面重定向通过Nginx代理后出现端口丢失问题,通常由以下原因及解决方案构成: ## 一、Nginx配置问题(核心原因) 1. Host头传递不完整 Nginx默认未将原始请求的端口信息传递给后端,导致应用生成重定向…...
DeepSeek V3 源码:从入门到放弃!
从入门到放弃 花了几天时间,看懂了DeepSeek V3 源码的逻辑。源码的逻辑是不难的,但为什么模型结构需要这样设计,为什么参数需要这样设置呢?知其然,但不知其所以然。除了模型结构以外,模型的训练数据、训练…...