96SEO 2026-02-20 10:44 42
然后我们#xff0c;需要理解的就只有所有权概念#xff0c;以及为了开发便…Rust

然后我们需要理解的就只有所有权概念以及为了开发便利进一步引出的引用借用概念。
内存作为存储程序运行时数据的地方是任何地方都避不开的。
除非发展到量子计算脱离了传统的二进制计算架构。
栈按照顺序存储值并以相反顺序取出值这也被称作后进先出。
想象一下一叠盘子当增加更多盘子时把它们放在盘子堆的顶部当需要盘子时再从顶部拿走。
不能从中间也不能从底部增加或拿走盘子
因为上述的实现方式栈中的所有数据都必须占用已知且固定大小的内存空间假设数据大小是未知的那么在取出数据时你将无法取到你想要的数据。
与栈不同对于大小未知或者可能变化的数据我们需要将它存储在堆上。
当向堆上放入数据时需要请求一定大小的内存空间。
操作系统在堆的某处找到一块足够大的空位把它标记为已使用并返回一个表示该位置地址的指针,
接着该指针会被推入栈中因为指针的大小是已知且固定的在后续使用过程中你将通过栈中的指针来获取数据在堆上的实际内存位置进而访问该数据。
进入餐馆告知服务员有几个人然后服务员找到一个够大的空桌子堆上分配的内存空间并领你们过去。
如果有人来迟了他们也可以通过桌号栈上的指针来找到你们坐在哪。
写入方面入栈比在堆上分配内存要快因为入栈时操作系统无需分配新的空间只需要将新数据放入栈顶即可。
相比之下在堆上分配内存则需要更多的工作这是因为操作系统必须首先找到一块足够存放数据的内存空间接着做一些记录为下一次分配做准备。
高速缓存使得处理器可以减少对内存的访问高速缓存和内存的访问速度差异在
高速缓存中而堆数据只能存储在内存中。
访问堆上的数据比访问栈上的数据慢因为必须先访问栈再通过栈上的指针来访问内存。
所谓的所有权他存在的意义就是通过某种逻辑实现对堆上数据的管理。
中每一个值都被一个变量所拥有该变量被称为值的所有者一个值同时只能被一个变量所拥有或者说一个值只能拥有一个所有者当所有者(变量)离开作用域范围时这个值将被丢弃(drop)
例如获取用户输入的数据时编译器肯定是不能在编译时预先知道这部分内容应当怎么写的。
动态字符串类型String。
这个类型被分配到堆上当出现需要再扩充空间或者缩小时都可以很方便实现。
存储在堆上是动态的你可以这样修改它s.push_str(say
world!到此我们知道怎样在堆上创建数据String和栈上创建数据
转移所有权A的给了BB能用A不能用克隆所有权深拷贝B抄了A的多了一份数据A和B各自使用各自的。
拷贝所有权浅拷贝B知道A有共用一份数据A和B使用同一份内容。
基本数据类型是固定大小的简单值因此这两个值都是通过自动拷贝的方式来赋值的都被存在栈中完全无需在堆上分配内存
我们在前面就讨论过拷贝是一个应当重视的行为那么这里使用拷贝有什么问题吗
实际上我们重视拷贝的原因是因为拷贝需要增加空间保护数据消耗时间。
在规模变得足够大的时候就会造成性能浪费。
而这种栈上操作的数据足够的简单拷贝这个行为也只是需要复制一个整数大小i324个字节的内存即可因此在这种情况下拷贝的速度远快于堆上创建内存而内容也足够小不会造成性能浪费。
String类型数据是存放在堆上的它本身是一个复合类型你可以把它简单抽象是一个结构体来方便理解。
它提供了三部分存储在栈中的堆指针、字符串长度、字符串容量共同组成其中的堆指针是根本字符串长度、字符串容量是为了性能考量的辅助优化。
堆指针指向了真实存储字符串内容的堆内存字符串容量是堆内存分配空间的大小字符串长度是目前已经使用的大小。
本身还是底层的堆上数据都会被全部拷贝这对于性能而言会造成非常大的影响
字节但是带来了新的问题还记得我们之前提到的所有权规则吧其中有一条就是一个值只允许有一个所有者而现在这个值堆上的真实字符串数据有了两个所有者s1
之一。
两次释放相同内存会导致内存污染它可能会导致潜在的安全漏洞。
中每一个值都被一个变量所拥有该变量被称为值的所有者一个值同时只能被一个变量所拥有或者说一个值只能拥有一个所有者当所有者(变量)离开作用域范围时这个值将被丢弃(drop)
copy)那么拷贝指针、长度和容量而不拷贝数据听起来就像浅拷贝但是又因为
...\ZryCode\CODE\Rust\file23_08_21
(...\ZryCode\CODE\Rust\file23_08_21)Finished
world注意事项深拷贝性能消耗是要大于其他方式的。
因此对于热点路径执行比较频繁的代码使用
clone如果按照之前的说法所有权改变了以后原有变量不再使用这里x应当不能使用了但是实际运行之后依旧打印出了x的内容。
整型这样的基本类型是在编译时已知大小的会被存储在栈上。
Rust
通过copy这样的特征来保证拥有这样特征的类型可以实现一个旧的变量在被赋值给其他变量后任然可以使用。
任何基本类型的组合都可以Copy不需要分配内存或某种形式资源的类型是可以Copy的。
既然我们前面说到了赋值是会改变所有权的。
那么自然会聊到一个点函数传值。
进入作用域//-------------------------------------takes_ownership(s);
...\ZryCode\CODE\Rust\file23_08_21
(...\ZryCode\CODE\Rust\file23_08_21)Finished
进入作用域//-------------------------------------takes_ownership(s);
takes_and_gives_back_2(a_string:
传入一个函数很可能还要从该函数传出去结果就是语言表达变得非常啰嗦幸运的是Rust
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback