Rust 学习笔记 - 详解数据类型
前言
任何一门编程语言几乎都脱离不了:变量、基本类型、函数、注释、循环、条件判断,这是一门编程语言的语法基础,只有当掌握这些基础语法及概念才能更好的学习 Rust。
标量类型(Scalar Types)
在 Rust 中,标量类型代表单个值,Rust 有四种基本的标量类型:整型、浮点型、布尔类型和字符类型。
整数类形
整数是没有小数部分的数字,可以是正数、负数或零。整数类型分为两大类:有符号和无符号。有符号整数可以存储包括负数在内的值,而无符号整数只能存储零和正数。
fn main() {let x: i32 = -123; // 有符号整数let y: u32 = 456; // 无符号整数
}
整数类型参照:
长度 | 有符号整数 | 无符号整数 |
---|---|---|
8-bit | i8 | u8 |
16-bit | i16 | u16 |
32-bit | i32 | u32 |
64-bit | i64 | u64 |
128-bit | i128 | u128 |
arch | isize | usize |
isize
和 usize
两种整数类型的位长度取决于所运行的平台,如果是 32 位架构的处理器将使用 32 位长度整型 (即 i32 / u32
),64 位架构的处理器上使用 64 为长度整型 (即 i64 / u64
)。
整数类型具有明确的大小(取值范围),每个有符号整数类型可以存储 − 2 n − 1 -2^{n-1} −2n−1 到 2 n − 1 − 1 2^{n-1} - 1 2n−1−1,其中 n
为数据类型的位数,每个无符号整数类型可以存储 0 到 2 n − 1 2^{n} - 1 2n−1。
举个🌰:
i8
可以存储 − 2 8 − 1 -2^{8-1} −28−1 到 2 8 − 1 − 1 2^{8-1} - 1 28−1−1 的数字,即: -128 到 127。u8
可以存储 0 到 2 8 − 1 2^{8} - 1 28−1 的数字,即: 0 到 255。
字面量表示:
整数字面量可以通过不同的进制来表示,包括十进制、十六进制、八进制、二进制,以及字节(只适用于 u8
)。
进制 | 前缀 | 示例 |
---|---|---|
十进制 | 无 | 98_222 |
十六进制 | 0x | 0xff |
八进制 | 0o | 0o77 |
二进制 | 0b | 0b111_0000 |
字节(u8 专用) | b | b'A' |
注意:在 Rust 中,数字可以使用 _
作为可视分隔符来提高可读性,编译器在处理数值时会忽略这些 _
。
浮点类型
浮点数是用来处理带有小数部分的数值。Rust 提供了两种基本的浮点类型,分别是 f32
和 f64
,其中 f32
是单精度浮点类型,f64
是双精度浮点类型。Rust 中的浮点类型遵循 IEEE-754 标准。
fn main() {let x: f32 = 3.14; // f32 单精度浮点数let y: f64 = 2.71828; // f64 双精度浮点数let z = 2.71828; // 默认是 f64 双精度浮点数
}
f32 类型
f32
类型的浮点数是单精度浮点数,占用 32 位(4 字节)的内存空间。它的范围大约是 1.4E-45 到 3.4E+38,精度大约有 6-7 位十进制数。f32
类型的浮点数对于需要较高性能但不需要非常高精度的场景来说是一个不错的选择,因为它在处理速度和内存使用上都比 f64
更加高效。
f64 类型
f64
类型的浮点数是双精度浮点数,占用 64 位(8 字节)的内存空间。它的范围大约是 4.9E-324 到 1.8E+308,精度大约有 15-16 位十进制数。相比 f32
,f64
提供了更大的数值范围和更高的精度,适合对数值精度要求较高的计算任务。由于在现代 CPU 架构中,f64
的性能通常也非常高效,所以 Rust 默认的浮点类型就是 f64
。
浮点数的字面量表示法
浮点数可以使用字面量表示法来表示,例如:
- 直接给出小数:
3.14
- 使用科学记数法:
2.5e10
或2.5E10
表示2.5 × 10¹⁰
- 在数字中使用下划线以提高可读性:
1_000.75_001
特点和使用注意事项
- 浮点数类型具备加 (
+
)、减 (-
)、乘 (*
)、除 (/
)、求余 (%
) 等算术运算能力。 - 浮点数在运算时可能会出现“舍入错误”,这是因为许多实数不能被精确表示为
f32
或f64
类型的数值。这类舍入错误是所有使用 IEEE-754 标准的浮点数表示法的编程语言的通病。 - 浮点数比较需要特别注意,直接比较两个浮点数是否相等 (==) 可能会因为舍入误差导致不符合预期的结果。在涉及浮点数比较的时候,通常需要判断两个数的差值是否足够小。
布尔类型
布尔(Boolean)类型用 bool
表示,它是最简单的类型,只有两个值:true
和 false
。布尔类型通常用于执行逻辑操作,条件判断和控制流程(例如,if
条件语句和循环控制)
fn main() {let t: bool = true;let f: bool = false;
}
基础
- 类型名为
bool
。 - 取值范围仅为
true
或false
。 - 布尔值用一个字节(
1 byte
或8 bits
)来存储
字面量表示法
true
表示逻辑真。false
表示逻辑假。
操作
布尔类型支持多种逻辑操作,包括但不限于:
- 逻辑与 (
&&
): 当两个操作数都为true
时,返回true
;否则返回false
。 - 逻辑或 (
||
): 只要一个操作数为true
,就返回true
;如果两个都为false
,则返回false
。 - 逻辑非 (
!
): 如果操作数为true
,返回false
;如果为false
,返回true
。
let a = true;
let b = false;let and_result = a && b; // 返回 false
let or_result = a || b; // 返回 true
let not_result = !a; // 返回 false
字符类型
字符类型(char
)用于表示单个 Unicode 标量值,这意味着它可以表示比 ASCII 更广泛的字符集。在 Rust 中,字符(char
)是通过单引号('
)来表示的,而字符串(String
或 &str
)是通过双引号("
)来表示的。
fn main() {let c: char = 'z';let z: char = 'ℤ'; // Unicode值let heart_eyed_cat = '😻';
}
基础
- 类型名为
char
。 char
类型在 Rust 中是四个字节的大小,即 32 位(与 UTF-32 编码相同)。这是因为char
需要能表示任意一个 Unicode 标量值,其范围从U+0000
到U+D7FF
和U+E000
到U+10FFFF
。- 每个字符是单独的
char
类型实例,并且占用 4 个字节的存储空间。这与其他一些语言中的字符类型(例如 C/C++ 中的char
)不同,其通常是基于 ASCII 并且仅占用 1 个字节。
字面量表示法
- 普通字符:
'a'
,'Z'
,'7'
等。 - 特殊字符:可以使用转义序列表示,如换行符
'\n'
,制表符'\t'
,单引号'\''
,反斜杠'\\'
等。 - Unicode 字符:使用
\u{}
转义和大括号内的十六进制数值来表示,如'好'
可以用'\u{597D}'
表示。
操作
char
类型的值可以直接参与比较操作(==,!=
,<
,>
, 等)。char
类型拥有多种方法用于检查字符的属性(例如is_alphabetic
,is_numeric
等)。
let c1 = 'A';
let c2 = '\u{597D}'; // 表示 "好"if c1.is_alphabetic() {println!("{} 是字母", c1);
}if c2.is_numeric() {println!("{} 是数字", c2);
}
复合类型(Compound Types)
复合类型可以将多个值组合成一个类型。Rust 主要有两种复合类型:元组(Tuple)和数组(Array)。
元组(Tuple)
元组是可以包含多个不同类型值的一种集合。元组的长度固定,一旦声明,它的长度不会改变。
声明元组
let tup: (i32, f64, char) = (500, 6.4, 'y');
在这个例子中,tup
是一个元组,包含了一个 i32
类型的整数、一个 f64
类型的浮点数,以及一个 char
类型的字符。
元组解构
元组可以被解构(destructured),为其内部的每个值匹配一个变量名称。
let tup = (500, 6.4, 1);
let (x, y, z) = tup;
println!("The value of y is: {}", y); // 输出 6.4
通过索引访问元组元素
也可以使用索引访问元组中的元素。
let five_hundred = tup.0;
let six_point_four = tup.1;
let y = tup.2;
数组(Array)
数组是有多个相同类型值组成的集合。与元组一样,数组的长度也是固定的,Rust 的数组一旦声明,它的长度不能改变。
声明数组
let a = [1, 2, 3, 4, 5];
这里,a
是一个整型数组,包含五个整数。
带类型注解的数组
你也可以在声明数组时添加类型注解,指明数组中的元素类型以及数组的长度。
let a: [i32; 5] = [1, 2, 3, 4, 5];
初始化数组
如果数组中的每个元素都是相同的值,可以使用以下方式进行初始化。
let a = [3; 5]; // 等同于 let a = [3, 3, 3, 3, 3];
这里 a
是一个整型数组,包含五个都是数字3的元素。
访问数组元素
通过索引来访问数组中的元素。
let first = a[0]; // 访问第一个元素
let second = a[1]; // 访问第二个元素
在访问时,如果索引超出了数组的边界,Rust 会在编译时或运行时(取决于索引是否为常量表达式)抛出错误,这是 Rust 的安全性特性之一。
选择元组还是数组?
- 当想要在一个复合类型中包含多个不同类型的值时,应当使用元组。
- 当需要一个包含多个相同类型值的集合时,应当使用数组。
元组非常适合用于有结构的数据,而数组非常适合用于有相同数据类型要求的连续数据序列。通过使用元组和数组,可以创建出符合你需要的各种数据结构。
自定义类型(Custom Types)
自定义类型主要指的是通过使用结构体(struct
)和枚举(enum
)来创建的数据类型。这两种类型允许开发者定义和使用更丰富且符合业务逻辑的数据结构。
结构体(Struct)
结构体是将零个或多个不同类型的数据聚合到一个复合类型中的一种方式。他们在概念上类似于其他语言中的类(但没有继承功能),是用于创建自定义数据类型的集合。
声明结构体
struct User {username: String,email: String,sign_in_count: u64,active: bool,
}
在这个例子中,User
结构体包含了四个字段,每个字段都有指定的类型。
实例化结构体
要使用结构体,你需要创建其实例并为其字段提供相应的值。
let user1 = User {email: String::from("admin@example.com"),username: String::from("ziyang"),active: true,sign_in_count: 1,
};
可以通过派生特性 #[derive(Debug)]
来允许结构体实例在使用 println!
宏时使用 {:?}
或 {:#?}
格式化输出。
枚举(Enum)
枚举允许定义一个类型,它可以是几个不同的变体中的一个。枚举在那些一次只能有一个值从多个可能的值中选取的情况下特别有用。
声明枚举
enum IpAddrKind {V4,V6,
}
这里,IpAddrKind
枚举有两个变体:V4
和 V6
。
枚举也可以关联数据。
enum IpAddr {V4(String),V6(String),
}
甚至每个枚举变体关联的数据都可以有不同类型。
enum Message {Quit,Move { x: i32, y: i32 },Write(String),ChangeColor(i32, i32, i32),
}
枚举类的使用
let four = IpAddrKind::V4;
let six = IpAddrKind::V6;
用 match
控制流运算符来处理枚举有助于确保你考虑到了所有可能的情况。
Never (!
)
Rust 中有一个表示"永不返回"的特殊类型,称作 !
类型,也就是所谓的 “Never” 类型。这个类型用于那些不返回任何值的函数,或者那些不会正常返回,因为它们会无限循环或者结束当前进程的函数。
Never 类型用于表示永不返回的函数。这有助于 Rust 进行更严格的类型检查和控制流分析。
示例:
fn forever() -> ! {loop {// 无限循环,永不返回}
}
在这个示例中,forever
函数有一个 !
返回类型,表示此函数将永远不会返回一个值。
Never 类型 (!
) 的用途
-
控制流运算符:
!
类型主要与 Rust 中的match
表达式一起用于保证所有可能情况都已处理。如果match
的一个分支结束于一个永不返回的函数,Rust 知道不需要返回值。这就是所谓的"穷尽性检查"(exhaustiveness checking)。 -
错误处理:
经常与panic!
宏一起使用,它会使当前线程崩溃,并可以带有一个错误消息。由于panic!
永远不会返回,它的返回类型是!
。
结语
本章深入讲解了 Rust 中的标量类型、复合类型、自定义类型以及特殊的 never 类型。此外,还有指针类型、动态大小类型、函数类型等其他重要的数据类型将在后续文章中陆续进行逐一介绍。
相关文章:
Rust 学习笔记 - 详解数据类型
前言 任何一门编程语言几乎都脱离不了:变量、基本类型、函数、注释、循环、条件判断,这是一门编程语言的语法基础,只有当掌握这些基础语法及概念才能更好的学习 Rust。 标量类型(Scalar Types) 在 Rust 中ÿ…...
构建本地yum源
下载repo数据文件 根据需要修改下载路径和reposync参数 #!/bin/bashlocal_path/repo/remote/rhel9 enabled_repos$(yum repolist enabled | awk NR>3{print $1}) tempfile$(mktemp -t reposync.XXXX)check() {echo "目标目录剩余空间: $(df -h ${local_path} | awk …...
常用的正则表达式,收藏必备!!!
正则表达式是一种强大的文本模式匹配工具,用于在字符串中查找、替换和验证特定模式的文本。下面是一些常用的正则表达式示例: 匹配Email地址: ^[a-zA-Z0-9._%-][a-zA-Z0-9.-]\.[a-zA-Z]{2,}$匹配URL: ^(https?|ftp)://[^\s/$.?#…...
js---webAPI
01 声明变量 js组成: DOM:操作网页内容的,开发页面内容特效和实现用户交互 BOM: DOM树:将 HTML 文档以树状结构直观的表现出来,我们称之为文档树或 DOM 树 文档树直观的体现了标签与标签之间的关系 CSS获取元素的方法 document.querySele…...
git的常用命令有哪些?
Git 是一个流行的分布式版本控制系统,用于跟踪文件的变化、协作开发和管理代码。以下是一些常用的 Git 命令: 创建和克隆仓库: git init:在当前目录初始化一个新的 Git 仓库。git clone <仓库URL>:克隆一个远程仓…...
《动手学深度学习(PyTorch版)》笔记8.5
注:书中对代码的讲解并不详细,本文对很多细节做了详细注释。另外,书上的源代码是在Jupyter Notebook上运行的,较为分散,本文将代码集中起来,并加以完善,全部用vscode在python 3.9.18下测试通过&…...
【蓝桥杯单片机入门记录】LED灯(附多个例程)
目录 一、LED灯概述 1.1 LED发光原理 1.2电路原理图 1.3电路实物图 1.4 开发板LED灯原理图 1.4.1共阳极LED灯操控原理(本开发板) (非实际原理图,便于理解版本)由图可以看出,每个LED灯的左边…...
c语言简单json库
文章目录 写在前面头文件源代码使用示例 写在前面 用c语言实现的一个简单json库,极其轻量 仅1个四百多行源码的源文件,和1个头文件 支持对象、数组、数值、字符串类型 github仓库 头文件 对主要的json API的声明 #ifndef ARCOJSON_ARCOJSON_H #defin…...
Linux操作系统基础(七):Linux常见命令(二)
文章目录 Linux常见命令(二) 一、kill命令 二、ifconfig命令 三、clear命令 四、重启与关机命令 五、which命令 六、hostname命令 七、grep命令 八、|管道 九、useradd命令 十、userdel命令 十一、tar命令 十二、su命令 十三、ps命令 Linu…...
进程状态
广义概念: 从广义上来讲,进程分为新建、运行、阻塞、挂起、退出五个状态,其中新建和退出两个状态可以直接理解字面意思。 运行状态: 这里涉及到运行队列的概念,CPU在读取数据的时候,需要把内存中的进程放入…...
STM32固件库简介与使用指南
1. STM32官方标准固件库简介 STM32官方标准固件库是由STMicroelectronics(ST)提供的一套软件开发工具,旨在简化STM32微控制器的软件开发过程。该固件库提供了丰富的功能和模块,涵盖了STM32微控制器的各种外设,包括但不…...
【开源】SpringBoot框架开发智能教学资源库系统
目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 课程档案模块2.3 课程资源模块2.4 课程作业模块2.5 课程评价模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 课程档案表3.2.2 课程资源表3.2.3 课程作业表3.2.4 课程评价表 四、系统展示五、核心代…...
融资项目——获取树形结构的数据
如下图所示,下列数据是一个树形结构数据,行业中包含若干子节点。表的设计如下图,设置了一个id为1的虚拟根节点。(本树形结构带虚拟根节点共三层) 实现逻辑: 延时展示方法,先展现第二层的信息&a…...
Crypto-RSA2
题目:(BUUCTF在线评测 (buuoj.cn)) 已知e,n,dp/(dq),c求明文: 首先有如下公式: dp ≡ d mod (p-1) ,ed ≡ 1 mod φ(n) ,npq ,φ(n)(p-1)(q-1) python代码实现如下: import libnu…...
IEEE Internet of Things Journal投稿经验
期刊名:IEEE Internet of Things Journal 期刊分区:中科院一区 Top 影响因子:10.6 投稿状态 (1)2023.11.3,投稿成功,状态为:under review(大u大r)࿱…...
实例分割论文阅读之:FCN:《Fully Convolutional Networks for Semantica Segmentation》
论文地址:https://openaccess.thecvf.com/content_cvpr_2015/papers/Long_Fully_Convolutional_Networks_2015_CVPR_paper.pdf 代码链接:https://github.com/pytorch/vision 摘要 卷积网络是强大的视觉模型,可以产生特征层次结构。我们证明,…...
apk反编译修改教程系列---简单去除apk登陆 修改vip与一些反编译基础常识【十二】
往期教程: 安卓玩机-----反编译apk 修改apk 去广告 去弹窗等操作中的一些常识apk反编译修改教程系列-----修改apk应用名称 任意修改名称 签名【一】 apk反编译修改教程系列-----任意修改apk版本号 版本名 防止自动更新【二】 apk反编译修改教程系列-----修改apk中…...
网络安全习题集
第一章 绪论 4 ISO / OSI 安全体系结构中的对象认证安全服务使用( C ) 机制来完成。 A .访问控制 B .加密 C .数字签名 D .数据完整性 5 身份鉴别是安全服务中的重要一环,以下关于身份鉴别的叙述不正确的是…...
C++中的volatile:穿越编译器的屏障
C中的volatile:穿越编译器的屏障 在C编程中,我们经常会遇到需要与硬件交互或多线程环境下访问共享数据的情况。为了确保程序的正确性和可预测性,C提供了关键字volatile来修饰变量。本文将深入解析C中的volatile关键字,介绍其作用、…...
(07)Hive——窗口函数详解
一、 窗口函数知识点 1.1 窗户函数的定义 窗口函数可以拆分为【窗口函数】。窗口函数官网指路: LanguageManual WindowingAndAnalytics - Apache Hive - Apache Software Foundationhttps://cwiki.apache.org/confluence/display/Hive/LanguageManual%20Windowing…...
【开源图床】使用Typora+PicGo+Github+CDN搭建个人博客图床
准备工作: 首先电脑得提前完成安装如下: 1. nodejs环境(node ,npm):【安装指南】nodejs下载、安装与配置详细教程 2. Picgo:【安装指南】图床神器之Picgo下载、安装与配置详细教程 3. Typora:【安装指南】markdown神器之Typora下载、安装与无限使用详细教…...
阅读笔记(SOFT COMPUTING 2018)Seam elimination based on Curvelet for image stitching
参考文献: Wang Z, Yang Z. Seam elimination based on Curvelet for image stitching[J]. Soft Computing, 2018: 1-16. 注:SOFT COMPUTING 大类学科小类学科Top期刊综述期刊工程技术 3区 COMPUTER SCIENCE, ARTIFICIAL INTELLIGENCE 计算机…...
LinkedList数据结构链表
LinkedList在Java中是一个实现了List和Deque接口的双向链表。它允许我们在列表的两端添加或删除元素,同时也支持在列表中间插入或移除元素。在分析LinkedList之前,需要理解链表这种数据结构: 链表:链表是一种动态数据结构&#x…...
[计算机网络]---序列化和反序列化
前言 作者:小蜗牛向前冲 名言:我可以接受失败,但我不能接受放弃 如果觉的博主的文章还不错的话,还请点赞,收藏,关注👀支持博主。如果发现有问题的地方欢迎❀大家在评论区指正 目录 一、再谈协议…...
[前端开发] 常见的 HTML CSS JavaScript 事件
代码示例指路 常见的 HTML、CSS、JavaScript 事件代码示例 常见的 HTML CSS JavaScript 事件 事件HTML 事件鼠标事件键盘事件表单事件 JavaScript 事件对象事件代理(事件委托) 事件 在 Web 开发中,事件是用户与网页交互的重要方式之一。通过…...
H5/CSS 笔试面试考题(71-80)
简述哪种输入类型用于定义周和年控件(无时区)( ) A:date B:week C:year 面试通过率:67.0% 推荐指数: ★★★★★ 试题难度: 初级 试题类型: 选择题 答案:b 简述下列哪个元素表示外部资源?该元素可以被视为图像、嵌套的浏览上下文或插件要处理的资源。它包括各种属性…...
【Node.js】path 模块进行路径处理
Node.js 执行 JS 代码时,代码中的路径都是以终端所在文件夹出发查找相对路径,而不是以我们认为的从代码本身出发,会遇到问题,所以在 Node.js 要执行的代码中,访问其他文件,建议使用绝对路径 实例࿱…...
react+ts【项目实战一】配置项目/路由/redux
文章目录 1、项目搭建1、创建项目1.2 配置项目1.2.1 更换icon1.2.2 更换项目名称1.2.1 配置项目别名 1.3 代码规范1.3.1 集成editorconfig配置1.3.2 使用prettier工具 1.4 项目结构1.5 对css进行重置1.6 注入router1.7 定义TS组件的规范1.8 创建代码片段1.9 二级路由和懒加载1.…...
英文论文(sci)解读复现【NO.20】TPH-YOLOv5++:增强捕获无人机的目标检测跨层不对称变压器的场景
此前出了目标检测算法改进专栏,但是对于应用于什么场景,需要什么改进方法对应与自己的应用场景有效果,并且多少改进点能发什么水平的文章,为解决大家的困惑,此系列文章旨在给大家解读发表高水平学术期刊中的 SCI论文&a…...
第十五章 以编程方式使用 SQL 网关 - %SQLGatewayConnection 方法和属性
文章目录 第十五章 以编程方式使用 SQL 网关 - %SQLGatewayConnection 方法和属性FetchRows()GatewayStatus propertyGatewayStatusGet()GetConnection()GetGTWVersion()GetLastSQLCode() 第十五章 以编程方式使用 SQL 网关 - %SQLGatewayConnection 方法和属性 FetchRows() …...
【QTableView】
QTableView是Qt框架中用于显示表格形式数据的部件,通常用于显示数据库查询结果、数据集以及其他类似的结构化数据。 以下是一个使用QTableView的简单示例,假设我们有一个数据库表存储了学生的信息,我们可以使用QSqlTableModel将数据库表关联到QTableView上,并显示出来: …...
VS-Code-C#配置
C#开发环境配置 查看更多学习笔记:GitHub:LoveEmiliaForever 1. 安装 .NET SDK 官方下载网址按照安装程序指引安装即可 2. VS Code 安装插件 插件名:C#发布者是Microsoft 该插件是基础语法插件 插件名:C# Dev Kit发布者是Mic…...
第七篇【传奇开心果系列】Python微项目技术点案例示例:数据可视化界面图形化经典案例
传奇开心果微博系列 系列微博目录Python微项目技术点案例示例系列 微博目录一、微项目开发背景和项目目标:二、雏形示例代码三、扩展思路介绍四、数据输入示例代码五、数据分析示例代码六、排名统计示例代码七、数据导入导出示例代码八、主题定制示例代码九、数据过…...
LeetCode 第33天 | 1005. K 次取反后最大化的数组和 135. 分发糖果 134. 加油站
1005. K 次取反后最大化的数组和 按照绝对值大小降序排序,然后将负值变正,如果所有负值都正了,但是还有k余量且为奇数,那就将绝对值最小值(最后一个元素)取反,否则直接结束。 class Solution {…...
PointMixer论文阅读笔记
MLP-mixer是最近很流行的一种网络结构,比起Transformer和CNN的节构笨重,MLP-mixer不仅节构简单,而且在图像识别方面表现优异。但是MLP-mixer在点云识别方面表现欠佳,PointMixer就是在保留了MLP-mixer优点的同时,还可以…...
[word] word分割线在哪里设置 #其他#经验分享
word分割线在哪里设置 在工作中有些技巧,可以快速提高工作效率,解决大部分工作,今天给大家分享word分割线在哪里设置的小技能,希望可以帮助到你。 1、快速输入分割线 输入三个【_】按下回车就是一条长直线,同样分别…...
C++ 音视频原理
本篇文章我们来描述一下音视频原理 音视频录制原理: 下面是对这张思维导图的介绍 摄像头部分: 麦克风采集声音 摄像头采集画面 摄像头采集回来的数据可以用RGB也可以用YUV来表示 图像帧帧率 一秒能处理多少张图像 图像处理 :调亮度 图像帧队列 :意思是将数据取…...
C# 只允许开启一个exe程序
C# 只允许开启一个exe程序 第一种方法 电脑只能启动一次再次点击显示当前exe程序 using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Runtime.InteropServices; using System.Threading.Tasks; using System.Win…...
【Java程序员面试专栏 分布式中间件】Redis 核心面试指引
关于Redis部分的核心知识进行一网打尽,包括Redis的基本概念,基本架构,工作流程,存储机制等,通过一篇文章串联面试重点,并且帮助加强日常基础知识的理解,全局思维导图如下所示 基础概念 明确redis的特性、应用场景和数据结构 什么是Redis,Redis有哪些应用场景 Redi…...
2024年【高处安装、维护、拆除】模拟考试题库及高处安装、维护、拆除实操考试视频
题库来源:安全生产模拟考试一点通公众号小程序 高处安装、维护、拆除模拟考试题库是安全生产模拟考试一点通生成的,高处安装、维护、拆除证模拟考试题库是根据高处安装、维护、拆除最新版教材汇编出高处安装、维护、拆除仿真模拟考试。2024年【高处安装…...
【QT+QGIS跨平台编译】之三十七:【Shapelib+Qt跨平台编译】(一套代码、一套框架,跨平台编译)
文章目录 一、Shapelib介绍二、Shapelib下载三、文件分析四、pro文件五、编译实践一、Shapelib介绍 Shapelib是一个开源的C库,用于读取、写入和操作ESRI Shapefile格式的地理矢量数据。 ESRI Shapefile是一种常见的地理信息系统(GIS)文件格式,用于存储地理矢量数据,包括…...
【机器学习基础】决策树(Decision Tree)
🚀个人主页:为梦而生~ 关注我一起学习吧! 💡专栏:机器学习 欢迎订阅!后面的内容会越来越有意思~ ⭐特别提醒:针对机器学习,特别开始专栏:机器学习python实战 欢迎订阅&am…...
图神经网络DGL框架,graph classification,多个且不同维度的node feature 训练
node feature 维度不同 我现在有许多不同的图要加入训练,每个图的节点特征维度不同,第一张图n_weight特征有10条数据,第二张图n_weight特征有15条数据,但是训练的时候,需要维度都对其,所以直接做0 padding…...
蓝桥杯(Web大学组)2022国赛真题:用什么来做计算 A
判分标准 实现重置(AC)功能,得 1 分。 实现计算式子和结果显示功能,得 3 分。 实现计算功能,得 6 分。 应该按要求来就行吧,,一开始还在想是否要考虑小数点个数的问题还有式子是否有效…… 笔记…...
Linux POSIX信号量 线程池
Linux POSIX信号量 线程池 一. 什么是POSIX信号量?二. POSIX信号量实现原理三. POSIX信号量接口函数四. 基于环形队列的生产消费模型五. 线程池 一. 什么是POSIX信号量? POSIX信号量是一种用于同步和互斥操作的机制,属于POSIX(Po…...
Sentinel(理论版)
Sentinel 1.什么是Sentinel Sentinel 是一个开源的流量控制组件,它主要用于在分布式系统中实现稳定性与可靠性,如流量控制、熔断降级、系统负载保护等功能。简单来说,Sentinel 就像是一个交通警察,它可以根据系统的实时流量&…...
python3 获取某个文件夹所有的pdf文件表格提取表格并一起合并到excel文件
下面是一个完整的示例,其中包括了merge_tables_to_excel函数的定义,并且假设该函数的功能是从每个PDF文件中提取第一个表格并将其合并到一个Excel文件中: import os from pathlib import Path import pandas as pd import pdfplumber …...
【AIGC】Stable Diffusion的模型入门
下载好相关模型文件后,直接放入Stable Diffusion相关目录即可使用,Stable Diffusion 模型就是我们日常所说的大模型,下载后放入**\webui\models\Stable-diffusion**目录,界面上就会展示相应的模型选项,如下图所示。作者…...
【JavaEE】_HTTP请求首行详情
目录 1. URL 2. 方法 2.1 GET方法 2.2 POST方法 2.3 GET与POST的区别 2.4 低频使用方法 1. URL 在mysql JDBC中已经提到过URL的相关概念: 如需查看有关JDBC更多内容,原文链接如下: 【MySQL】_JDBC编程-CSDN博客 URL用于描述某个资源…...
Linux第48步_编译正点原子的出厂Linux内核源码
编译正点原子的出厂 Linux 内核源码,为后面移植linux做准备。研究对象如下: 1)、linux内核镜像文件“uImage” 路径为“arch/arm/boot”; 2)、设备树文件“stm32mp157d-atk.dtb” 路径为“arch/arm/boot/dts” 3)、默认配置文件“stm32m…...