- 博客(26)
- 收藏
- 关注
原创 Rust 圣经 阅读 所有权和借用
因为整数是 Rust 基本数据类型,是固定大小的简单值,因此这两个值都是通过自动拷贝的方式来赋值的,都被存在栈中,完全无需在堆上分配内存。返回的指针会被推入栈中,因为指针的大小是已知且固定的,在后续使用中,可以通过指针,来获取数据在堆上的实际内存位置,进而访问数据。首先,栈上的数据都是存储在CPU的高速缓存上,而堆上的数据只能存储在内存中。而高速缓存和内存的访问速度差异在10倍以上。是最重要的,它指向了真实存储字符串内容的堆内存,至于长度和容量,容量是堆内存分配空间的大小,长度是目前已经使用的大小。
2023-12-31 22:35:06
1302
1
原创 二次污染错误
内存污染:再次释放已经释放的内存可能会导致在该内存地址上写入新的数据,这样的操作可能会导致内存污染,也就是在应用程序中更改了原本无关的内存数据,从而导致程序状态的不确定性。二次释放指的是对已经释放的内存进行再次释放。无效的内存访问:内存释放后,之前的指针会变成无效的指针,再次释放会导致未定义行为,包括访问无效内存地址。综上所述,二次释放会导致内存访问错误和内存污染,因此应该避免对已经释放的内存进行再次释放。
2023-12-31 21:50:20
371
原创 Rust 圣经 阅读 函数
在Rust中,发散函数(diverging function)指的是一个永远不会返回的函数。这意味着一旦调用发散函数,程序就会立刻终止或进入无限循环,而不会返回到调用的位置。作为函数的返回类型的时候,表示该函数永不返回(diverge function)。Rust 是强类型语言,因此需要为每个函数参数都标识出它的具体类型。,会出现返回的类型与指定的类型不一致的错误。函数的返回值就是最后一条表达式的返回值。当一个函数没有返回值时,返回单元类型。缺少任何一个参数的类型,都会报错。没弄懂 发散函数 的作用。
2023-12-31 16:33:11
679
原创 Rust 圣经 阅读 语句和表达式
Rust 函数体有一系列语句组成,最后一个表达式来返回值。语句会执行操作,但是不会返回值。表达式会在进行求值后返回一个值。注意!在 if 语句中单独写一个 x 是错误的。原因未知。
2023-12-31 16:04:26
686
原创 Rust 圣经 阅读 字符、布尔、单元类型
都是 4 个字节编码,所以字符类型占用 4 个字节。值,包括单个的中文、日文、表情符号等等。一个字符串占有的内存至少为 16 个字节。,布尔值占用的内存大小为 1 个字节。的值,表示不关心的值的内容,只关心。即使用一个值来占位,但是。函数的返回值就是单元类型。函数的返回值也是单元类型。Rust 的字符不仅仅是。Rust 的字符只能用。是用来表示字符串的。
2023-12-31 15:28:30
638
原创 Rust圣经 阅读 数值类型
Rust 的数值类型非常多,需要熟悉这些类型所占用的字节数。类型转换必须是显式的。Rust的数值上可以使用方法。如取整。
2023-12-30 22:37:00
1141
1
原创 Rust圣经 阅读 Rust基本概念
因为绑定的含义更明确,对于Rust的所有权机制来说。将一个对象绑定给一个变量,表示将该对象的所有权交给该变量。但是有时创建一个不会被使用的变量是有用的,比如你正在设计原型或刚刚开始一个项目。如果创建 一个变量却从未使用,Rust将会给出一个警告,因为它可能是一个错误。Rust允许声明相同的变量名,在后面声明的变量会遮蔽掉前面声明的。这样的形式不会进行重新绑定,而是仅仅对之间绑定的变量进行再赋值。Rust的变量在默认情况下是不可变的。元组解构,将元组的成员分别绑定给多个变量。关键字,并且值的类型必须标注。
2023-12-29 17:42:09
580
1
原创 Rust圣经 阅读 01
使用cargo工具的最大优势在于,能够对该项目的各种依赖项进行方便、统一和灵活的管理。在Cargo.toml基于 Rust 官方仓库crates.io,通过版本说明来描述。基于 项目源代码的 git 仓库地址,通过URL来描述。基于本地项目的绝对路径或者相对路径,通过类 Unix 模式的路径来描述。
2023-12-29 15:33:55
596
1
原创 Rust 修改源
cargo 1.68 版本开始支持稀疏索引:不需要完整克隆。如果cargo 的版本大于 1.68,可以在。如果 build 出错,可以尝试。运行命令,下载rust安装脚本。仓库,可以加快获取包的速度。,输入回车选择默认进行安装。
2023-12-29 14:23:27
771
1
原创 Python 函数内部修改全局变量
在这个示例中,我们使用global关键字将count声明为全局变量,并在book.set_identifier中将count转换为字符串进行拼接。在 Python 中,如果您想在函数内部修改全局变量,在函数内部要使用global关键字声明全局变量。
2023-12-27 23:38:47
536
1
原创 Python 爬虫 示例
在这个示例中,我们首先使用 requests 库发送 HTTP 请求来获取网页的内容,然后使用 BeautifulSoup 库来解析 HTML 内容。要注意,当使用爬虫时,需要遵守网站的robots.txt文件中的规定,并且尊重网站的使用条款,避免对网站造成压力和影响。这只是一个简单的爬虫示例,你可以根据自己的需求进一步扩展和修改。接着,我们提取了网页的标题和所有链接,并打印出来。
2023-12-27 20:51:39
1079
1
原创 Ubuntu 上 修改swap交换空间
在某些文件系统上,例如ext4,直接缩小已分配的文件大小可能有限制或不可行。fallocate和truncate都是用于处理文件大小的命令,但它们在处理方式和结果上有一些区别。是一个交换文件,类型为none,使用sw作为交换分区类型,并且没有特定的挂在选项(使用默认值)。综上,fallocate主要用于预先分配物理空间,而truncate主要用于生成空洞文件。最后,确保交换空间的大小不会超过物理内存的大小,否则可能会导致系统性能问题。命令覆盖文件的一部分,使其变成未分配的空间,然后再重新创建交换空间。
2023-12-26 21:25:16
1719
1
原创 第四章 Threads,SMP, and Microkernerls
允许映射到内核(来自单个应用的多个ULT映射到一些(较小或相等)数量的(可调)KLT。- 创建更快(创建一个线程比创建一个进程所用的时间更少)(不重新分配内存等资源)(线程的概念并不明确)- 多CPU执行(一个进程中的多个线程可以同时在多个处理器上运行)- 仅阻塞单个线程(一个线程阻塞不会使同进程中的其他线程阻塞)- 切换快(同进程的两个线程之间)(相同镜像,不用切换页表)- ULT按进程调度(一个线程阻塞,则该进程的所有线程阻塞)- 结束快(终止一个线程比终止一个进程所用的时间更少)
2022-09-22 10:58:08
132
原创 第三章 进程描述与控制
Modifiy Processor status register (psr) and current privileged level (cpl)(修改处理器状态寄存器 (psr) 和当前特权级别 (cpl))- 调度器不能只选择在队列中停留时间最长的进程,因为这个进程可能被阻塞。- ## Process-Based Operating System(基于进程的OS)- 更新进程的进程控制块,并更改当前处于“正在运行”状态的进程的状态。- 只要操作系统从当前运行的进程获得控制权,就可能发生进程切换。
2022-09-22 10:22:19
128
原创 isEqual - return 1 if x == y, and 0 otherwise & negate - return -x
**/return!(x^y);}/**/x = ~x;x +=1;return x;}
2022-09-20 10:27:56
430
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人