Rust学习

Rust 静态类型语言 Rust是静态类型语言,在编译时就必须知道所有变量的类型。 动态语言是指运行期间可以改变其结构的语言:例如增加或者删除函数、对象、甚至代码。比如JavaScript、Objective-C、Ruby、Python等,而C、C++等语言则不属于动态语言。静态语言与动态语言相反,在运行时不能改变其结构。尽管静态语言可以通过复杂的手段实现动态语言的特性,但是动态语言提供了直接的方法实现语言的动态性。 动态类型语言是指在运行期间才去做数据类型检查的语言。在用动态语言编程时,不用给变量指定数据类型,第一次赋值给变量时,在内部将数据类型记录下来。JavaScript、Ruby、Python是典型的动态类型语言。静态类型语言与动态类型语言刚好相反,它的数据类型检查发生在在编译阶段,也就是说在写程序时要声明变量的数据类型。C/C++、C#、Java都是静态类型语言的典型代表。 大部分动态语言是动态类型的,但是不是所有都是。 一、依赖管理–cargo source 默认路径 ~/.cargo/config [source.crates-io] registry = “https://github.com/rust-lang/crates.io-index" replace-with = ‘ustc’ [source.ustc] registry = “git://mirrors.ustc.edu.cn/crates.io-index” cargo.lock cargo.lock相当于依赖锁,除非在cargo.toml中手动指定了其他依赖版本,否则编译时依赖版本始终保持不变,即项目构建可重现 cargo update cargo update会忽略cargo.lock,并计算出所有符合 Cargo.toml 声明的最新版本。如果成功了,Cargo 会把这些版本写入 Cargo.lock 文件。 注意:(当前版本0.5.5) Cargo 默认只会寻找大于 0.5.5 而小于 0.6.0 的版本。如果 rand crate 发布了两个新版本,0.5.6 和 0.6.0,会更新到0.5.6,如果想要使用 0.6.0 版本的 rand 或是任何 0.6.x 系列的版本,需要修改cargo.toml cargo doc –open 以文档形式查看本地项目的所有依赖 Rust 有一个静态强类型系统,同时也有类型推断 整数类型的变量默认为i32,不能和string类型进行比较,但是可以和u32类型作比较(rust的类型推断) 二、数据类型 常量 例如:const MAX_POINTS: u32 = 100_000; 在声明它的作用域之中,常量在整个程序生命周期中都有效,这使得常量可以作为多处代码使用的全局范围的值,例如一个游戏中所有玩家可以获取的最高分或者光速。 变量 mut与隐藏 隐藏(使用let):可以改变值的类型并且复用相同的变量名,实际上创建了一个拥有新类型的新变量。隐藏了之前创建的同名变量。 mut:如果给可变变量重新赋值,但是前面不加let,只能附相同类型的值 标量类型 四种标量类型:整形、浮点型、布尔类型、字符类型
▶️ Read more gq

go之channel

channel channel的作用 goroutine之间安全通信 hchan mutex goroutine之间数据传递 FIFO语义 copying into and out of hchan buffer 先从 Channel 读取数据的 Goroutine 会先接收到数据; 先向 Channel 发送数据的 Goroutine 会得到先发送数据的权利; 可以使得goroutine阻塞和唤醒 hchan sudog queues calls into the runtime scheduler(gopark, goready) 设计原理 ​ 多线程使用共享内存传递数据 ​ Goroutine 使用 Channel 传递数据 先入先出 目前的 Channel 收发操作均遵循了先入先出(FIFO)的设计,具体规则如下: 先从 Channel 读取数据的 Goroutine 会先接收到数据; 先向 Channel 发送数据的 Goroutine 会得到先发送数据的权利; 数据结构 Channel 在运行时的内部表示是 runtime.hchan,该结构体中包含了一个用于保护成员变量的互斥锁,从某种程度上说,Channel 是一个用于同步和通信的有锁队列 Go 语言的 Channel 在运行时使用 runtime.hchan 结构体表示。我们在 Go 语言中创建新的 Channel 时,实际上创建的都是如下所示的结构体:
▶️ Read more gq

linux相关指令

Ubuntu命令大全 apt-get apt-get update:更新安装列表 apt-get upgrade:升级软件 apt-get install software_name :安装软件 apt-get –purge remove software_name :卸载软件及其配置 apt-get autoremove software_name:卸载软件及其依赖的安装包 罗列已安装软件 dpkg –list //安装.debtmpfs 7.8G 133M 7.7G 2% /tmp /dev/sda 1.8T 155G 1.6T 9% /home/gongqi/MountFiles /dev/sdb1 300M 280K 300M 1% /boot/efi /dev/loop1 32M 32M 0 100% /var/lib/snapd/snap/snapd/10707 ​ sudo dpkg -i <package.deb> sudo uname -m 查看Ubuntu系统的位数 界面切换 ctrl+alt+f2 //命令行界面 ctrl+alt+f7 // 图形界面 查看帮助 –help man 手册: 9卷:man man shell 命令帮助信息 系统调用 帮助信息 库函数 帮助信息 第5卷, 文件格式: 如,man passwd 命令使用技巧
▶️ Read more gq

My First Post

▶️ Read more gq