Rust学习第六天
Rust学习第六天1、Rust组织管理对于一个工程来讲,组织代码是十分重要的。
Rust 中有三个重要的组织概念:箱、包、模块
箱(Crate)“箱”是二进制程序文件或者库文件,存在于”包”中。
“箱”是树状结构的,它的树根是编译器开始运行时编译的源文件所编译的程序。
注意:”二进制程序文件”不一定是”二进制可执行文件”,只能确定是是包含目标机器语言的文件,文件格式随编译环境的不同而不同。
包(Package)当我们使用 Cargo 执行 new 命令创建 Rust 工程时,工程目录下会建立一个 Cargo.toml 文件。工程的实质就是一个包,包必须由一个 Cargo.toml 文件来管理,该文件描述了包的基本信息以及依赖项。
一个包最多包含一个库”箱”,可以包含任意数量的二进制”箱”,但是至少包含一个”箱”(不管是库还是二进制”箱”)。
当使用 cargo new 命令创建完包之后,src 目录下会生成一个 main.rs 源文件,Cargo 默认这个文件为二进制箱的根,编译之后的二进制箱将与包名相同。
模块(Module)对于一个软件工程来说,我们往往按照所使用的编程语言的组织规 ...
Rust学习第五天
Rust学习第五天1、Rust Slice(切片)类型切片(Slice)是对数据值的部分引用。
字符串切片最简单、最常用的数据切片类型是字符串切片(String Slice)。
12345678fn main() { let s = String::from("broadcast"); let part1 = &s[0..5]; let part2 = &s[5..9]; println!("{}={}+{}", s, part1, part2);}
运行结果:
1broadcast=broad+cast
上图解释了字符串切片的原理(注:Rust 中的字符串类型实质上记录了字符在内存中的起始位置和其长度,我们暂时了解到这一点)。
使用 .. 表示范围的语法在循环章节中出现过。x..y 表示 [x, y) 的数学含义。.. 两边可以没有运算数:
123..y 等价于 0..yx.. 等价于位置 x 到数据结束.. 等价于位置 0 到结束
数 ...
Rust学习第四天
Rust学习第四天1、Rust循环while 循环while 循环是最典型的条件语句循环:
12345678fn main() { let mut number = 1; while number != 4 { println!("{}", number); number += 1; } println!("EXIT"); }
运行结果:
1234123EXIT
在 C 语言中 for 循环使用三元语句控制循环,但是 Rust 中没有这种用法,需要用 while 循环来代替:
C语言:
1234int i; for (i = 0; i < 10; i++) { // 循环体}
Rust:
12345let mut i = 0; while i < 10 { // 循环体 i += 1; }
for 循环for 循环是最常用的循环结构,常 ...
Rust学习第三天
Rust学习第三天1、Rust函数Rust函数的构造体为
1fn <函数名> ( <参数> ) <函数体>
Rust 函数名称的命名风格是小写字母以下划线分割:
12345678fn main() { println!("Hello, world!"); another_function();}fn another_function() { println!("Hello, runoob!");}
Rust不在乎您在何处定义函数,只需在某个地方定义它们即可。
函数参数Rust 中定义函数如果需要具备参数必须声明参数名称和类型:
12345678fn main() { another_function(5, 6);}fn another_function(x: i32, y: i32) { println!("x 的值为 : {}", x); println!( ...
Rust学习第二天
Rust学习第二天Rust基础数据类型1、整数类型(Inetger)
位长度 有符号位 无符号位
8-bit i8 u8
16-bit i16 u16
32-bit i32 u32
64-bit i64 u64
128-bit i128 ...
Rust学习第一天
Rust学习第一天1、cargo的简单使用rust语言使用cargo进行创建,下载Rust官方工具后,我使用的是window.x86环境进行编译,需要配置MSVC,详情参考https://www.rust-lang.org/zh-CN/tools/install。
MSVC配置参考,https://blog.csdn.net/weixin_42481992/article/details/130005865。因为我的开发工具不是VScode,所以只需要完成Step1的内容就可以了。
GUI工具使用的是JetBrains旗下的RustRover,详情参考https://www.jetbrains.com/rust/nextversion/。
创建新项目
1cargo new Projectname
构建项目
1cargo build
运行项目
1cargo run
!!需要注意,rust的项目名称必须符合蛇形命名法,否则在项目构建和项目运行的时候会出现
1warning: crate `helloWorld` should have a snake case name | = no ...
TCP/IP 协议
TCP/IP 协议一,计算机网络 体系结构分层
计算机网络体系结构分层
TCP/IP 与 OSI 在分层模块上稍有区别。OSI 参考模型注重“通信协议必要的功能是什么”,而 TCP/IP 则更强调“在计算机上实现协议应该开发哪种程序”。
二,TCP/IP基础1.TCP/IP的具体含义从字面上来讲,有人可能TCP/IP是指TCP/IP两种协议。实际生活中有时候也指这两种协议。然而在很多情况下,他只是利用IP进行通信时所必须用到的协议群的统称。具体来说,IP或ICMP,TCP或UDP,TELNET或FTP,以及HTTP灯协议都属于TCP/IP协议。他们与TCP或IP的关系紧密,是互联网必不可少的组成成分。TCP/IP一词泛指这些协议,因此有时也称TCP/IP为网路协议群。
互联网进行通信时,需要对应的网络协议,TCP/IP原本就是为使用互联网而开发制定的协议族。因此,互联网的协议就是TCP/IP,TCP/IP就是互联网的协议。
![太厉害了,终于有人能把TCP ...
欢迎来到我的博客
欢迎来到须臾的博客之后的日子里,我会把我的学习记录和所思所想留在这里,欢迎各位留下你们的看法和观点。
物联网无线通信技术
第二章 物联网无线通信技术2.1 短距离无线通信技术2.1.1蓝牙 蓝牙(Bluetooth ):∶是一种无线技术标准,可实现固定设备、移动设备和楼宇个人域网之间的短距离数据交换(使用2.4-2.485GHz的ISM波段的UHF无线电波)。
蓝牙5.0在低功耗模式下具备更快更远的传输能力,传输速率是蓝牙4.2的两倍(速度上限为2Mbps),有效传输距离是蓝牙4.2的四倍(理论上可达300米),数据包容量是蓝牙4.2的八倍,支持室内定位导航,且针对IoT专门优化。
2.1.1.1.1蓝牙概念 蓝牙技术是一种无线通信的方式,利用特定频率的波段(2.4GHz-2.485GHz左右),进行电磁波传输。蓝牙传输原理是主从关系,一个主设备可以与7个蓝牙从设备配对。无线通信基本实现过程如下图:
2.1.1.1.2经典蓝牙和BLE 蓝牙分为经典蓝牙和低功耗蓝牙(Bluetooth Low Energy)。经典蓝牙:也称为蓝牙基本速率/增强数据速率 (BR/EDR)。3.0版本以下的蓝牙,都称为经典蓝牙。功耗高、传输数据量大、传输 ...