Rust系统编程之枚举 1.无类型枚举定义枚举给予你将一个值成为一个集合之一的方法。比如,我们想让 Rectangle 是一些形状的集合,包含 Circle 和 Triangle 。 1234567enum Rectangle { Circle, Triangle,}let c:Rectangle = Rectangle::Circle;let t:Rectangle = Rectangle::Tri 2023-04-12 coding #Rust
Rust系统编程之结构体 1.通用语法1.1 声明123456struct User { active: bool, username: String, email: String, sign_in_count: u64,} 1.2 创建对象常规写法 123456let user1 = User { email: String::from("someo 2023-04-12 coding #Rust
Rust系统编程之容器 1.vector1.1 初始化空数组 1let v: Vec<i32> = Vec::new(); 含有初始值的数组 1let v = vec![1, 2, 3]; 1.2 增加元素末尾增加元素 123456let mut v = Vec::new();v.push(5);v.push(6);v.push(7);v.push(8); 1.3 访问元素索引访问 1234let v 2023-04-11 coding #Rust
Rust系统编程之文件IO 1. 读取文件以读写、追加的形式读取文件并返回byte vector 1234567891011121314151617181920212223use std::fs::OpenOptions;use std::io::prelude::*;use std::path::Path;fn read_my_file(path: &Path) -> std::io::Result<V 2023-04-11 coding #Rust
Rust系统编程之错误处理 错误处理1. pacnic主动退出,类似exit(0),但是可以携带信息。 12345678910fn give_princess(gift: &str) { // 公主讨厌蛇,所以如果公主表示厌恶的话我们要停止! if gift == "snake" { panic!("AAAaaaaa!!!!"); } 2023-04-10 coding #Rust
Rust系统编程之Windows API 调用Windows API1.Rust Windows官方文档windows - Rust (microsoft.github.io) 2.使用Windows API的例子[Cargo.toml] 1234567891011121314[package]name = "windowsapi"version = "0.1.0"edition = "2 2023-04-10 coding #Rust
Rust系统编程之内存模型 1.所有权(owenership)1.1 规则 Rust 中的每一个值都有一个所有者(owner) 值在任一时刻有且只有一个所有者 当所有者(变量)离开作用域,这个值将被丢弃(销毁) 1.1 解释Rust中每一个复杂类型都被一个unique_ptr包裹,如下图所示: 这使得在这个对象离开作用域的时候会自动调用drop函数来销毁,满足RAII思想。 对于默认的赋值操作,全部发生的是移动语义,如下 2023-04-10 coding #Rust
Rust系统编程之基础语法 1.变量1.1 特性a.不可变性在rust中,变量默认是不可变的,除非指定mut属性。 12345let a = 1;a = 2; // wronglet mut a = 1;a = 2; // right b.变量隐藏12345678910let a = 1;{ let a = 2; println!("{}", a);}printl 2023-04-10 coding #Rust
COFF文件格式 COFF文件就是.obj文件,链接器使用。 1.整体结构下图显示了COFF文件的整体结构: 从图中可以看出,COFF文件结构比PE文件要简单很多,而二者FileHeader是一致的。 2.局部结构2.1 文件头定位:在COFF文件的开头 偏移 大小 域 描述 0 2 Machine 标识目标机器类型的数字 2 2 NumberOfSections 节表项的数目 4 4 Tim 2023-03-24 build #basic
Git常用命令 1.基础操作克隆项目 1234// 常规用法git clone [url]// 同时克隆子模块并更新子模块git clone --recurse-submodules <url> .gitingore忽略文件 1234# 忽略根目录下的bin文件夹中的所有文件/bin# 忽略全部.c后缀的文件*.c 提交暂存区 1234// 提交单个文件到暂存区git add <file& 2023-03-21 tools #basic #Git
golang基础语法 1.数据类型1.1 字符串字面量1.1.1 初始化和 C/C++ 不一样,Golang 语言中的字符串是根据长度限定的,而非特殊的字符 \0。string 类型的 0 值是长度为 0 的字符串,即空字符串 “”。 go中的字符串是UTF8编码的不可改变的字符序列,ASSCI码占用1字节,其他字符根据需要占用2~4字节,初始化方式如下: 12s1 := "HelloWorld&q 2023-02-22 coding #golang
RAII与智能指针 1.RAII思想RAII是C++内存管理的一种思想,资源获取视为初始化。使用对象封装资源的获取与释放操作,对象初始化时调用构造函数完成资源获取,对象离开作用域自动调用析构函数完成资源释放,避免了忘记调用销毁函数的情况,降低内存泄漏风险。如下例子: 1234567891011template <typename T>class MyLock {public: explicit 2022-12-21 coding #C/C++