当前位置: 首页 > news >正文

理解字、半字与字节 | 从 CPU 架构到编程实践的数据类型解析

注:本文为 “字、半字、字节” 相关文章合辑。

略作重排,未全校。

如有内容异常,请看原文。


理解计算机体系结构中的字、半字与字节

在计算机科学中,理解“字 (Word)”、“半字 (Half-Word)”和“字节 (Byte)”等基本数据单元的精确含义至关重要。这些术语的定义可能因上下文(如 CPU 体系结构或软件开发环境)而异。

一、基本定义

1. 字节 (Byte)

字节是计算机信息计量中最基本的数据单位之一。无论处理器体系结构 (如 8 位、16 位、32 位或 64 位处理器) 如何,1 字节 (Byte) 始终定义为 8 位 (bit)

一个 ASCII 字符通常占用 1 字节,而一个汉字 (根据编码,如 GBK) 通常占用 2 字节。

2. 字 (Word)

“字 (Word)”是计算机设计中的一个基本参数,通常指 CPU 与内存之间一次数据传送的单位。一个字所包含的字节数(即字的大小或字长)并非固定,而是与特定计算机系统的 CPU 结构及其数据总线宽度密切相关

CPU 按照其处理信息的字长可以分为 8 位微处理器、16 位微处理器、32 位微处理器以及 64 位微处理器等。

3. 半字 (Half-Word)

“半字 (Half-Word)”的长度通常定义为相应“字”长度的一半。其具体大小同样随处理器体系结构而变化。

4. 其他相关术语

在某些体系结构,特别是 Intel 体系结构中,还存在以下术语:

  • 双字 (Double Word, DWORD):通常指字 (Word) 的两倍大小。
  • 四字 (Quad Word, QWORD):通常指字 (Word) 的四倍大小,或双字的两倍大小。

二、CPU 体系结构与数据单元

1. CPU 字长与分类

CPU 的字长 (Word Size) 决定了处理器一次能够处理的二进制数据的长度,同时也影响其通用寄存器、内部存储器、算术逻辑单元 (ALU) 的位数以及数据总线的宽度。
根据字长的不同,CPU 可分为:

  • 8 位微处理器
  • 16 位微处理器
  • 32 位微处理器
  • 64 位微处理器

2. 总线系统

计算机系统中的总线用于在各部件之间传输信息。

  • 数据总线 (Data Bus):用于 CPU 与存储器或 I/O 接口之间双向传输数据。数据总线的位数通常与 CPU 的字长一致,决定了 CPU 一次可以传送的数据量。
  • 地址总线 (Address Bus):用于 CPU向外部存储器或 I/O 端口单向传输地址。地址总线的位数决定了 CPU 可直接寻址的内存空间大小。
  • 控制总线 (Control Bus):用于传输控制信号和时序信号,其方向和位数取决于具体的控制需求和 CPU 设计。例如,读/写信号、片选信号、中断请求/响应信号等。

3. CPU 寻址能力

CPU 的寻址能力通常以字节为单位进行度量。它表示 CPU 能够访问的最大内存地址范围。例如:

  • 一个拥有 32 位地址总线的 CPU,其可寻址 2 32 2^{32} 232 个不同的字节地址,即 4 GB (Gigabytes) 的内存空间。这就是为什么 32 位 CPU 通常最大支持 4 GB 内存的原因。

三、特定平台下的定义与示例

1. 嵌入式与底层开发 (以 CPU 架构为准)

a. ARM 体系结构

ARM 处理器广泛应用于嵌入式系统。

  • 字节 (Byte):8 位。
  • 半字 (Half-Word):对于 32 位 ARM 架构,半字为 16 位 (2 字节)。这与一些 8 位/16 位处理器体系结构中“字”的长度一致。
  • 字 (Word):对于 32 位 ARM 架构 (如 ARM7, ARM9, Cortex-M 系列如 STM32),字为 32 位 (4 字节)。

示例:ARM920T 缓存行

在 ARM920T 的数据手册中提及:

Two 16KB caches are implemented, one for instructions, the other for data, both with an 8-word line size.
实现了两个 16KB 的缓存,一个用于存储指令,另一个用于存储数据,两者的缓存行大小均为 8 个字。

由于 ARM920T 是 32 位架构,1 Word = 4 Bytes。因此,这里的 8-word line size 等于 8 × 4 Bytes = 32 Bytes 8 \times 4 \text{ Bytes} = 32 \text{ Bytes} 8×4 Bytes=32 Bytes

基于此,U-Boot 代码中为了提高异常处理代码的读取效率,会将异常处理程序进行 32 字节对齐 (因为缓存行大小为 32 字节):

 /** exception handlers*/.align 5 /* 2^5 = 32 bytes alignment */undefined_instruction:get_bad_stackbad_save_user_regsbl   do_undefined_instruction.align   5software_interrupt:get_bad_stackbad_save_user_regsbl   do_software_interrupt.align   5prefetch_abort:get_bad_stackbad_save_user_regsbl   do_prefetch_abort.align   5data_abort:get_bad_stackbad_save_user_regsbl   do_data_abort

STM32 微控制器 (基于 ARM Cortex-M 内核)

  • STM32 通常是 32 位处理器,因此其字是 32 位 (4 字节),半字是 16 位 (2 字节),字节是 8 位。
  • 与某些传统 ARM 处理器 (如 ARM7/ARM9) 可能要求严格的地址对齐不同,许多 STM32 型号 (基于 Cortex-M 内核) 支持非对齐访问,允许不同大小的数据类型在内存中紧密存放,从而减少内存浪费。
  • 访问寄存器时,建议使用匹配其大小的数据类型。例如,半字型 (16 位) 寄存器建议使用 uint16_t (或等效的 u16) 类型变量访问。使用 uint8_t (或 u8) 可能只能访问低 8 位,而使用 uint32_t (或 u32) 进行写操作时,行为可能因编译器实现而异。
b. Intel 体系结构

Intel 处理器体系结构从 16 位基础上发展而来,因此其术语有历史延续性。

  • 字节 (Byte):8 位。
  • 字 (Word):在 Intel 语境下,通常指 16 位 (2 字节) 数据类型,无论是在 16 位、32 位还是 64 位处理器上。
  • 半字 (Half-Word):相应地,为 8 位 (1 字节)。
  • 双字 (Double Word, DWORD):指 32 位 (4 字节) 数据类型。
  • 四字 (Quad Word, QWORD):指 64 位 (8 字节) 数据类型。

下表总结了 Intel 平台常见的定义:

Intel 处理器平台64 位处理器32 位处理器16 位处理器
字 (Word)16 位16 位16 位
半字 (Half-Word)8 位8 位8 位
字节 (Byte)8 位8 位8 位
双字 (Double Word)32 位32 位32 位
四字 (Quad Word)64 位64 位N/A (通常)
c. 其他处理器示例 (如 MSP430)
  • MSP430 是 16 位微处理器,因此其字 (Word) 是 16 位 (2 字节)。
  • 对于 MSP430,半字 (Half-Word) 通常是 8 位 (1 字节),与字节大小相同。

2. 上层应用开发 (以编程语言和操作系统 API 为准)

在高级语言编程或特定操作系统 API 中,WORD 等术语可能有其固定的类型定义。

Windows API 中的数据类型

在 Microsoft Windows 开发中,头文件 WINDEF.H 为常用的数据大小定义了特定类型。例如,在 Visual C++ 6.0 (以及后续版本) 中:

typedef unsigned char    BYTE;
typedef unsigned short   WORD;
typedef unsigned long    DWORD;

这些类型定义如下:

  • BYTE:定义为 unsigned char。在典型的 C/C++ 实现中,char 类型长度为 1 字节。因此,BYTE 类型的变量占用 1 字节内存。
  • WORD:定义为 unsigned shortshort 类型通常长度为 2 字节。因此,WORD 类型的变量占用 2 字节内存。
  • DWORD (Double Word):定义为 unsigned long。在 32 位 Windows 编程环境中 (即使在 64 位系统上编译 32 位应用程序),long 类型通常长度为 4 字节。因此,DWORD 类型的变量占用 4 字节内存。

Windows 计算器示例

Windows 操作系统内置的计算器 (Programmer mode) 也反映了这些约定:

  • Byte 选项通常对应 8 位。

Windows Calculator Byte selection

  • Word 选项通常对应 16 位。

Windows Calculator Word selection

  • Dword (Double Word) 选项通常对应 32 位。

Windows Calculator Dword selection

  • Qword (Quad Word) 选项通常对应 64 位。

Windows Calculator Qword selection

  • 这些在计算器中的表示与 Windows API 的类型定义和 Intel 的术语习惯(Word=16-bit)保持一致,且通常与编译目标平台的位数(32-bit vs 64-bit OS/CPU)无关,而是遵循历史定义。

Visual Studio 实验

在 Windows 7 64-bit 系统上使用 Visual Studio 2010 的实验中,分别针对 Win32 和 x64 配置编译,sizeof 运算符的结果如下:

  • sizeof(BYTE): 1
  • sizeof(WORD): 2
  • sizeof(DWORD): 4
  • sizeof(char): 1
  • sizeof(short): 2
  • sizeof(int): 4
  • sizeof(long): 4
  • sizeof(float): 4
  • sizeof(double): 8
  • sizeof(long long): 8 (C++11 standard, typically 8 bytes on most modern systems)
  • sizeof(bool): 1 (typically)

Win32 配置下的 sizeof 结果示例图示:

VS2010 Win32 sizeof results

x64 配置下的 sizeof 结果示例图示:

VS2010 x64 sizeof results

这些实验结果表明,在 Windows 开发环境中,

  • BYTE, WORD, 和 DWORD 的大小是固定的。

  • intlong 在 Win32 和 x64 (针对 Windows 的 LLP64 数据模型) 下均为 4 字节。

  • 指针类型的大小则会随目标平台变化 (Win32 下为 4 字节,x64 下为 8 字节)。

四、int 类型的大小与 sizeof 运算符的重要性

1. int 类型的大小可变性

int 类型所占用的字节数并非在所有系统和编译器上都相同。它通常与目标机器的“自然”字长 (native word size) 相关,但具体实现由编译器决定。

  • 在早期的 16 位系统 (如 Turbo C 编译器环境),int 通常是 2 字节。

  • 在 32 位系统 (如许多 GCC 版本或 Visual C++ for Win32),int 通常是 4 字节。

  • 在 64 位系统, int 的大小可能会有所不同:

    • 在许多 Unix-like 系统的 LP64 模型下,int 仍然是 4 字节,而 long 和指针是 8 字节。
    • 在 Windows 的 LLP64 模型下,intlong 均为 4 字节,而 long long 和指针是 8 字节。

2. 使用 sizeof 提高代码可移植性与健壮性

由于 int (以及其他一些基本数据类型) 的大小可能因平台和编译器而异,在编写需要精确控制内存大小或进行跨平台移植的代码时,不应硬编码类型的大小 (例如,假定 int 总是 4 字节)。

应使用 sizeof 运算符 来动态获取特定类型或变量在当前编译环境下所占用的字节数。

sizeof() 返回一个数据类型或变量占用的内存地址长度 (以字节为单位)。

示例:动态内存分配
假设需要在机器 A 和机器 B 上为 int 类型数据分配内存。

  • 机器 A:int 占用 2 字节。
  • 机器 B:int 占用 4 字节。

如果代码硬编码为:

int *i = (int*)malloc(2); // 假定 int 为 2 字节

这段代码在机器 A 上可能正常工作,但在机器 B 上会导致内存分配不足,引发错误。

正确的、可移植的写法是:

int *i = (int*)malloc(sizeof(int));

这样,无论在哪台机器上编译,sizeof(int) 都会返回当前环境下 int 类型的正确大小,确保分配足够的内存。这显著增强了程序的健壮性和在不同处理器及编译环境间的兼容性。

五、总结

“字 (Word)”的大小并非一个绝对固定的值,而是高度依赖于上下文:

  1. CPU 体系结构:在底层,一个字的大小通常由 CPU 的数据总线宽度或其“自然”处理单元的大小决定。例如,32 位 CPU 的字通常是 32 位 (4 字节),而 64 位 CPU 的字通常是 64 位 (8 字节)。

  2. 特定平台约定:某些平台或制造商 (如 Intel) 对“字”有其历史定义,可能与当前 CPU 的主流字长不同 (例如,Intel 语境下 Word 通常指 16 位)。

  3. 编程语言/API 定义:在高级编程中,如 Windows API,WORD 可能被 typedef 为一个固定大小的类型 (如 unsigned short, 即 16 位)。

与此相对:

  • 字节 (Byte):始终为 8 位。
  • 半字 (Half-Word):通常是字的一半,其具体大小也随“字”的定义而变。
  • 双字 (Double Word):通常是字的两倍。

因此,在讨论“一个字占多少字节?”时,必须明确其所处的具体环境。

  • 字、半字、字节的大小取决于处理器架构和平台。
  • 字节始终为 8 位,半字为字的一半,双字为字的两倍。
  • 在开发中,应使用 sizeof 函数动态获取数据类型大小,避免硬编码。

为确保代码的准确性和可移植性,特别是在处理依赖于数据类型大小的操作时,应优先使用 sizeof() 运算符。


via:

  • WORD 是 2Bytes 还是 4bytes?-enzo26-ChinaUnix博客
    http://blog.chinaunix.net/uid-21977330-id-3801847.html

  • 字、半字、字节的定义 - CSDN 博客
    https://blog.csdn.net/guosir_/article/details/78346472

  • 字 (word)、字节 (byte)、半字 (half-word) 的理解_word byte-CSDN 博客
    https://blog.csdn.net/breadheart/article/details/113482110

  • 字、半字、字节理解 - CSDN 博客
    https://blog.csdn.net/Yin_w/article/details/129909536

  • ARM 中的字、半字、字节是多少位? - CSDN 博客
    https://blog.csdn.net/wwwlyj123321/article/details/80796974

  • 【stm32f103 学习笔记】字、半字、字节和 sizeof()- 电子工程世界
    https://news.eeworld.com.cn/mcu/article_2018050138902.html

相关文章:

理解字、半字与字节 | 从 CPU 架构到编程实践的数据类型解析

注:本文为 “字、半字、字节” 相关文章合辑。 略作重排,未全校。 如有内容异常,请看原文。 理解计算机体系结构中的字、半字与字节 在计算机科学中,理解“字 (Word)”、“半字 (Half-Word)”和“字节 (Byte)”等基本数据单元的…...

VMware搭建ubuntu保姆级教程

目录 VMware Ubuntu 虚拟机配置指南 创建虚拟机 下载 Ubuntu ISO 新建虚拟机 网络配置(双网卡模式) 共享文件夹设置 SSH 远程访问配置 VMware Ubuntu 虚拟机配置指南 创建虚拟机 下载 Ubuntu ISO 【可添加我获取】 官网:Get Ubunt…...

内容社区系统开发文档

1 系统分析 1.1 项目背景 1.2 需求分析 2 系统设计 2.1 系统功能设计 2.2 数据库设计 2.2.1 数据库需求分析 2.2.2 数据库概念结构设计 2.2.3 数据库逻辑结构设计 2.2.4 数据库物理结构设计 2.2.5 数据库视图设计 2.2.6 函数设计 2.2.7 存储过程设计 2.2.8 触发器…...

Ubuntu开放端口

在 Ubuntu 中,我们可以使用 ufw (Uncomplicated Firewall) 来管理防火墙。以下是打开 80 和 8090 端口的步骤: 首先检查防火墙状态 sudo ufw status 如果防火墙没有启用,先启用它: sudo ufw enable 允许 80 端口(…...

PyTorch 与 TensorFlow 中基于自定义层的 DNN 实现对比

深度学习双雄对决:PyTorch vs TensorFlow 自定义层大比拼 目录 深度学习双雄对决:PyTorch vs TensorFlow 自定义层大比拼一、TensorFlow 实现 DNN1. 核心逻辑 二、PyTorch 实现自定义层1. 核心逻辑 三、关键差异对比四、总结 一、TensorFlow 实现 DNN 1…...

质量员考试案例题有哪些常见考点?

质量员考试案例题常见考点如下: 施工质量控制 施工工艺与工序:如混凝土浇筑时的振捣时间、方法,若振捣不充分会导致混凝土出现蜂窝、麻面等质量问题。 施工环境:例如在高温天气下进行砌筑作业,未对砌块进行适当处理或…...

Axure疑难杂症:深度理解与认识“事件”“动作”(玩转交互)

亲爱的小伙伴,在您浏览之前,烦请关注一下,在此深表感谢! Axure产品经理精品视频课已登录CSDN可点击学习https://edu.csdn.net/course/detail/40420 课程主题:深度理解与认识“事件”“动作” 主要内容:事件、动作定义、本质、辩证关系、执行顺序 应用场景:原型交互 …...

【AI知识库云研发部署】RAGFlow + DeepSeek

gpu 安装screen:yum install screen 配置ollama: 下载官方安装脚本并执行: curl -fsSL https://ollama.com/install.sh | sh 通过screen后台运行ollama:screen -S ollama 在screen会话中启动服务: export OLLA…...

HTML07:表格标签

表格 基本结构 单元格行列跨行跨列 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>表格学习</title><style>td {text-align: center;vertical-align: middle;}</style> </he…...

【专家库】Kuntal Chowdhury

昆塔尔乔杜里 Kuntal Chowdhury 是 NVIDIA 的 6G 开发者关系经理和技术布道师。他致力于推动与 NVIDIA 平台和工具的开发者和早期采用者生态系统的联系&#xff0c;以促进 6G 研究社区的蓬勃发展。在此之前&#xff0c;他是 BlueFusion, Inc. 的创始人&#xff0c;这是一家创新…...

IAA-Net:一种实孔径扫描雷达迭代自适应角超分辨成像方法——论文阅读

IAA-Net:一种实孔径扫描雷达迭代自适应角超分辨成像方法 1. 论文的研究目标与实际意义1.1 研究目标1.2 实际问题与产业意义2. 论文的创新方法、公式与优势2.1 方法框架与核心步骤2.2 核心公式与推导2.2.1 回波模型与目标函数2.2.2 正则化加权矩阵设计2.2.3 迭代更新公式2.2.4 …...

[论文阅读]MCP Guardian: A Security-First Layer for Safeguarding MCP-Based AI System

MCP Guardian: A Security-First Layer for Safeguarding MCP-Based AI System http://arxiv.org/abs/2504.12757 推出了 MCP Guardian&#xff0c;这是一个框架&#xff0c;通过身份验证、速率限制、日志记录、跟踪和 Web 应用程序防火墙 &#xff08;WAF&#xff09; 扫描来…...

提示词工程:通向AGI时代的人机交互艺术

‌引言&#xff1a;从基础到精通的提示词学习之旅‌ 欢迎来到 ‌"AGI时代核心技能"‌ 系列课程的第二模块——‌提示词工程‌。在这个模块中&#xff0c;我们将系统性地探索如何通过精心设计的提示词&#xff0c;释放大型语言模型的全部潜力&#xff0c;实现高效、精…...

地级市-机器人、人工智能等未来产业水平(2009-2023年)-社科数据

地级市-机器人、人工智能等未来产业水平&#xff08;2009-2023年&#xff09;-社科数据https://download.csdn.net/download/paofuluolijiang/90623814 https://download.csdn.net/download/paofuluolijiang/90623814 此数据集统计了2009-2023年全国地级市在机器人、人工智能等…...

神经网络中之多类别分类:从基础到高级应用

神经网络中之多类别分类&#xff1a;从基础到高级应用 摘要 在机器学习领域&#xff0c;多类别分类是解决复杂问题的关键技术之一。本文深入探讨了神经网络在多类别分类中的应用&#xff0c;从基础的二元分类扩展到一对多和一对一分类方法。我们详细介绍了 softmax 函数的原理…...

破解工业3D可视化困局,HOOPS Visualize助力高效跨平台协作与交互!

一、当前3D可视化面临的痛点 &#xff08;1&#xff09;性能瓶颈 现有的许多3D可视化工具在处理大型复杂模型时往往力不从心。例如在航空航天、汽车制造等高端制造业&#xff0c;动辄涉及数以亿计的三角面片和海量的纹理细节。这些超大规模的模型在渲染时常常出现卡顿、延迟&…...

感知器准则感知器神经元模型——等价

不同的东西&#xff0c;很多刊物有误。但两者等价。 感知器神经元模型的误差反馈学习 y y y&#xff1a;期望值 y ^ \hat{y} y^​&#xff1a;实际输出值 权重更新公式为&#xff1a; w i ← w i η ( y − y ^ ) x i w_i \leftarrow w_i \eta(y - \hat{y})x_i wi​←wi​…...

Qt学习Day0:Qt简介

0. 关于Qt Qt是C的实践课&#xff0c;之前在C中学习的语法可以有具体的应用场景。Qt的代码量很大&#xff0c;不要死记硬背&#xff0c;学会查询文档的能力更加重要。 建议提升一下相关单词的储备量&#xff1a; 1. Qt是什么&#xff1f; Qt是一个基于C语言的图形用户界面&a…...

JAVA设计模式——(十二)原型模式(Prototype Pattern)

JAVA设计模式——&#xff08;十二&#xff09;原型模式&#xff08;Prototype Pattern&#xff09; 介绍理解实现Email类测试 应用 介绍 用原型实例指定创建对象的种类&#xff0c;并且通过复制原型已有的对象用于创建新的对象。 理解 原型实例便是我们需要复制的类的实例&…...

C++命名空间

什么是命名空间 命名空间是一种用来避免命名冲突的机制&#xff0c;它可以将一段代码的名称隔离开&#xff0c;使其与其他代码的名称不冲突 简单来说,就是编译器检测到相同的名称的函数,变量,或者其他的相同名称的东西,也许会有疑问,怎么能出现相同的名称的变量呢.这就是C引入的…...

Hello Robot 推出Stretch 3移动操作机器人 提升开源与可用性

Stretch 3机器人是Hello Robot推出的新一代移动操作机器人&#xff0c;专注于提升开源开发与实际应用能力。它结合了先进的设计理念和工程技术&#xff0c;旨在为家庭任务和辅助技术提供智能化解决方案。通过优化硬件性能和软件兼容性&#xff0c;这款机器人不仅增强了灵活性&a…...

[Linux_69] 数据链路层 | Mac帧格式 | 局域网转发 | MTU MSS

目录 0.引入 1.以太网帧格式 2.重谈局域网转发的原理(基于协议) 小结 3.认识MTU 3.1MTU对IP协议的影响 3.2MTU对UDP协议的影响 3.3MTU对于TCP协议的影响 0.引入 在去年的这篇文章中&#xff0c;我们有对网络进行过一个概述[Linux#47][网络] 网络协议 | TCP/IP模型 | 以…...

I2C总线驱动开发:MPU6050应用

引言 I2C&#xff08;Inter-Integrated Circuit&#xff09;总线作为嵌入式系统中广泛使用的通信协议&#xff0c;在传感器、外设控制等领域扮演着重要角色。本文将深入探讨I2C总线的工作原理、Exynos4412平台裸机驱动实现、Linux内核中的I2C子系统架构&#xff0c;并以MPU605…...

15.命令模式:思考与解读

原文地址:命令模式&#xff1a;思考与解读 更多内容请关注&#xff1a;深入思考与解读设计模式 引言 在软件开发中&#xff0c;尤其是当系统涉及多个请求、操作或任务时&#xff0c;你是否遇到过这样的情况&#xff1a;每个操作都有自己的执行逻辑&#xff0c;且这些操作可能…...

2025年软件工程与数据挖掘国际会议(SEDM 2025)

2025 International Conference on Software Engineering and Data Mining 一、大会信息 会议简称&#xff1a;SEDM 2025 大会地点&#xff1a;中国太原 收录检索&#xff1a;提交Ei Compendex,CPCI,CNKI,Google Scholar等 二、会议简介 2025年软件开发与数据挖掘国际会议于…...

博客系统测试报告

文章目录 目录1. 项目背景2. 项目简介3. 测试工具4. 测试用例5. 功能测试6. 性能测试7. 弱网测试8. 自动化测试9. bug简述10. 测试结论 目录 项目背景项目简介测试工具测试用例功能测试性能测试弱网测试自动化测试bug简述测试结论 1. 项目背景 为了将平时自己写的笔记、知识…...

window 显示驱动开发-线程同步和 TDR

下图显示了 Windows 显示驱动程序模型 (WDDM) 中显示微型端口驱动程序的线程同步的工作原理 如果发生硬件超时&#xff0c;则会启动 超时检测和恢复 (TDR) 进程。 GPU 计划程序调用驱动程序的 DxgkDdiResetFromTimeout 函数&#xff0c;这将重置 GPU。 DxgkDdiResetFromTimeou…...

GEC6818蜂鸣器驱动开发

相关知识&#xff1a;Linux设备驱动开发 insmod 编译好的.ko文件后再运行beep_app.c编译完成的可执行文件即可使板子蜂鸣。 beep_drv.c: #include <linux/module.h> //包含了加载模块时需要使用的大量符号和函数声明 #include <linux/kernel.h> //包含了printk内…...

WPF MVVM入门系列教程(五、命令和用户输入)

&#x1f9ed; WPF MVVM入门系列教程 一、MVVM模式介绍二、依赖属性三、数据绑定四、ViewModel五、命令和用户输入六、ViewModel案例演示 WPF中的命令模型 在WPF中&#xff0c;我们可以使用事件来响应鼠标和键盘动作。 但使用事件会具备一定的局限性&#xff0c;例如&#x…...

基于Jetson Nano与PyTorch的无人机实时目标跟踪系统搭建指南

引言&#xff1a;边缘计算赋能智能监控 在AIoT时代&#xff0c;将深度学习模型部署到嵌入式设备已成为行业刚需。本文将手把手指导读者在NVIDIA Jetson Nano&#xff08;4GB版本&#xff09;开发板上&#xff0c;构建基于YOLOv5SORT算法的实时目标跟踪系统&#xff0c;集成无人…...

创建简易个人关系图谱(Neo4j )

1. 启动 Neo4j 并进入 Neo4j Browser 确保 Neo4j 已启动&#xff0c;访问&#xff1a; http://localhost:7474/2. 创建人物节点&#xff08;Person&#xff09; (1) 创建 Alice CREATE (alice:Person {name: "Alice", age: 28, gender: "Female"}) RETUR…...

JavaScript 到命令和控制 (C2) 服务器恶意软件分析及防御

攻击始于一个经过混淆的JavaScript文件,该文件从开源服务中获取编码字符串以执行PowerShell脚本。然后,该脚本从一个IP地址和一个URL缩短器下载一个JPG图像和一个文本文件,这两个文件都包含使用隐写术嵌入的恶意MZ DOS可执行文件。这些有效载荷一旦执行,就会部署Stealer恶意…...

[原创](现代Delphi 12指南):[macOS 64bit App开发]: 如何自动打开“安全性与隐私“控制面板?

[作者] 常用网名: 猪头三 出生日期: 1981.XX.XX 企鹅交流: 643439947 个人网站: 80x86汇编小站 编程生涯: 2001年~至今[共24年] 职业生涯: 22年 开发语言: C/C++、80x86ASM、Object Pascal、Objective-C、C#、R、Python、PHP、Perl、 开发工具: Visual Studio、Delphi、XCode、…...

springboot微服务连接nacos超时

问题现象 java应用启动失败&#xff0c;查看日志&#xff0c;发现是连接Nacos超时&#xff0c;获取不到配置&#xff0c;导致dubbo注册失败&#xff0c;错误日志如下&#xff1a; 2025-05-01 14:50:08.973 ERROR [TW-172.29.245.61-9063-3] [com.alibaba.nacos.common.utils.…...

react-transition-group 在 React 18 及以上版本中的兼容性问题

出现问题 在React19中下载react-transition-group&#xff08;4.4.5&#xff09;&#xff0c;正常导入使用&#xff1a; 出现下述报错&#xff1a; 报错原因 React18开始&#xff0c;已废弃findDOMNode &#xff0c;而 react-transition-group 的 4.4.5 版本仍然使用了 findD…...

day17 天池新闻数据KMeans、DBSCAN 与层次聚类的对比

在数据分析中&#xff0c;聚类是一种常见的无监督学习方法&#xff0c;用于将数据划分为不同的组或簇。本文将通过news数据集&#xff08;news.csv&#xff09;&#xff0c;使用 KMeans、DBSCAN 和层次聚类三种方法进行聚类分析&#xff0c;并对比它们的性能。 数据来源于天池 …...

数学复习笔记 3

background music 《有人懂你》赵十三 前言 也别开始强化吧&#xff0c;复盘前面复习过的内容&#xff0c;可能是更稳的方式。 无穷级数 写无穷级数的例题。感觉自己真的学会了么&#xff0c;我生怕一写一个不吱声了。呜呜呜。这一章有 27 个例题。我从最后一个例题开始写…...

Navicat Premium 17 备份,还原数据库(PostGreSql)

目录 备份 还原备份 备份 1、点击数据库&#xff0c;点击备份 2、点击新建备份 3、点击备份&#xff0c;查看执行日志 还原备份 1、点击备份、右键还原备份从... 2、 选择文件目录&#xff0c;以及xxx.nb3文件&#xff0c;点击打开 3、点击还原 4、执行日志...

25_05_02Linux架构篇、第1章_03安装部署nginx

Linux_基础篇 欢迎来到Linux的世界&#xff0c;看笔记好好学多敲多打&#xff0c;每个人都是大神&#xff01; 题目&#xff1a;安装部署nginx 版本号: 1.0,0 作者: 老王要学习 日期: 2025.05.02 适用环境: Centos7 文档说明 本文档聚焦于 CentOS 7 环境下 Nginx 的安装部…...

PostgreSQL存储过程“多态“实现:同一方法名支持不同参数

引言 在传统编程语言中&#xff0c;方法重载&#xff08;同一方法名不同参数&#xff09;是实现多态的重要手段。但当我们将目光转向PostgreSQL数据库时&#xff0c;是否也能在存储过程&#xff08;函数&#xff09;中实现类似的功能&#xff1f;本文将深入探讨PostgreSQL中如…...

Messenger.Default.Send 所有重载参数说明

Messenger.Default.Send 是 MVVM 框架中实现消息传递的核心方法,其重载参数主要用于控制消息的发送范围和接收条件。以下是其所有重载形式及参数说明: ‌1. 基本消息发送‌ Send<TMessage>(TMessage message) ‌参数说明‌: TMessage:消息类型(泛型参数),可以是任…...

java安全入门

文章目录 java基础知识this变量方法可变参数构造方法继承的关键字protected super阻止继承方法重载向上转型和向下转型多态抽象接口static静态字段default方法 包final内部类 java序列化与反序列化反射urldns链动态代理类加载器&#xff08;ClassLoader&#xff09;双亲委派模型…...

【开源深度解析】从零打造AI暗棋对战系统:Python实现中国象棋暗棋全攻略

&#x1f3b2;【开源深度解析】从零打造AI暗棋对战系统&#xff1a;Python实现中国象棋暗棋全攻略 &#x1f308; 个人主页&#xff1a;创客白泽 - CSDN博客 &#x1f525; 系列专栏&#xff1a;&#x1f40d;《Python开源项目实战》 &#x1f4a1; 热爱不止于代码&#xff0c;…...

UE5 Daz头发转Blender曲线再导出ABC成为Groom

先安装Daz to Blender Import插件 【神器】 --DAZ一键导入blender插件的详细安装和使用&#xff0c;自带骨骼绑定和控制器&#xff0c;多姿势动画&#xff0c;Importer桥接插件_哔哩哔哩_bilibili 然后安装DAZHairConverter插件 一分钟将DAZ头发转化成Blender粒子毛发_哔哩哔…...

【Java学习】反射

目录 反射类 一、泛型参数 二、反射类类型 三、实例化 1.实例化材料 2.结构信息可使用化 四、使用 1.Class —类完整结构信息 1.1Class<类>实例化 1.2Class<类>实例获取 1.2.1Class类静态获取&#xff1a; 1.2.2信息类静态获取 1.2.3信息类非静态获取 …...

SQLite数据类型

目录 1 SQLite的类型概述 1.1 存储类&#xff08;Storage Classes&#xff09; 1.2 类型亲和性&#xff08;Type Affinity&#xff09; 2 类型亲和性分配规则 3 数据类型详细说明 3.1 INTEGER类型 3.2 REAL类型 3.3 TEXT类型 3.4 BLOB类型 3.5 NULL类型 3.6 NUMERI…...

Django异步任务处理方式总结

在 Django 中实现异步任务处理是优化性能和用户体验的关键。以下是几种常见的异步任务处理方式及详细说明&#xff1a; 1. Celery&#xff08;最主流方案&#xff09; 适用场景&#xff1a;需要可靠、分布式、复杂任务队列的项目&#xff08;如定时任务、重试机制、多节点部署…...

AI技术下研发体系重构

导语&#xff1a; 人工智能技术已发展70余年&#xff0c;经历了从逻辑符号主义向数据驱动范式的转变&#xff0c;目前正处于向多模态、通用化以及伦理化方向演化的阶段。在接下来的五年内&#xff0c;人工智能技术的商业化应用预计将迎来关键性的转变。大模型技术的突破、多模…...

UE5 使用插槽和物理约束对角色新增的饰品添加物理效果

这是一条项链,分为链部分和吊坠部分 新增物理碰撞资产,链部分在前面(作为固定),吊坠部分在后面(作为物理模拟) 链部分的Physics设置 连接部分的设置 吊坠部分 添加物理约束,在Constraint里面添加角色名和饰品名 在约束里面可以对特定骨骼约束,这里需要把链部分约束...

邂逅蓝耘元生代:ComfyUI 工作流与服务器虚拟化的诗意交织

往期推荐&#xff1a; 探秘蓝耘元生代&#xff1a;ComfyUI 工作流创建与网络安全的奇妙羁绊-CSDN博客 工作流 x 深度学习&#xff1a;揭秘蓝耘元生代如何用 ComfyUI 玩转 AI 开发-CSDN博客 探索元生代&#xff1a;ComfyUI 工作流与计算机视觉的奇妙邂逅-CSDN博客 解锁元生代&a…...