Rust 所有权特性详解
Rust 所有权特性详解
Rust 的所有权系统是其内存安全的核心机制之一。通过所有权规则,Rust 在编译时避免了常见的内存错误(如空指针、数据竞争等)。本文将从堆内存与栈内存、所有权规则、变量作用域、String
类型、内存分配、所有权移动、Clone
、栈内存的 Copy
、所有权与函数、返回值与作用域等角度详细介绍 Rust 的所有权特性,并通过综合示例展示这些知识点的实际应用。
1. 什么是堆内存和栈内存
-
栈内存:
- 后进先出(LIFO)的数据结构。
- 分配和释放速度快。
- 用于存储固定大小的数据(如基本类型,Rust的基本类型有哪些,他们存在堆内存还是栈内存?)。
-
堆内存:
- 动态分配的内存区域。
- 分配和释放速度较慢。
- 用于存储大小可变或生命周期不确定的数据(如
String
、Vec
)。
示例:栈内存与堆内存
fn main() {let x = 5; // x 存储在栈上let s = String::from("你好"); // s 的数据存储在堆上,指针存储在栈上println!("x: {}, s: {}", x, s);
}
输出:
x: 5, s: 你好
分析:
x
是基本类型,存储在栈上。s
是String
类型,数据存储在堆上,指针和长度等信息存储在栈上。
2. Rust 所有权的规则
Rust 的所有权规则如下:
- 每个值都有一个所有者。
- 同一时间只能有一个所有者。
- 当所有者离开作用域时,值会被自动释放。
示例:所有权规则
fn main() {let s1 = String::from("你好");let s2 = s1; // s1 的所有权转移到 s2// println!("{}", s1); // 错误:s1 不再拥有数据println!("s2: {}", s2);
}
输出:
s2: 你好
分析:
s1
的所有权在赋值给s2
后转移,s1
不再有效。
3. 变量的作用域
变量的作用域是从声明开始到当前块结束。
示例:变量作用域
fn main() {let s = String::from("你好"); // s 进入作用域{let inner_s = String::from("内部"); // inner_s 进入作用域println!("内部作用域: {}", inner_s);} // inner_s 离开作用域,内存被释放println!("外部作用域: {}", s);
} // s 离开作用域,内存被释放
输出:
内部作用域: 内部
外部作用域: 你好
分析:
inner_s
的作用域仅限于内部块。s
的作用域是整个main
函数。
4. String
类型
String
是 Rust 中动态分配的字符串类型,存储在堆上。
示例:String
类型
fn main() {let mut s = String::from("你好");s.push_str(", Rust!"); // 修改字符串println!("{}", s);
}
输出:
你好, Rust!
分析:
String
类型允许动态修改内容。
5. 内存分配
Rust 通过所有权系统自动管理堆内存的分配和释放。
示例:内存分配
fn main() {let s = String::from("你好"); // 分配堆内存println!("{}", s);
} // s 离开作用域,内存被释放
输出:
你好
分析:
String::from
分配堆内存。s
离开作用域时,内存被自动释放。
6. 所有权移动时变量和数据的状态变化
当所有权从一个变量移动到另一个变量时,原始变量将失效。
示例:所有权移动
fn main() {let s1 = String::from("hello");let s2 = s1; // s1 的所有权移动到 s2// println!("{}", s1); // 错误:s1 不再有效println!("s2: {}", s2);
}
输出:
s2: hello
分析:
-s1
的指针存在栈内存,栈内存的value
指向堆内存的第一个索引位置。
- 当执行
s2=s1
的时候,仅仅复制了栈内存上的数据,堆内存的内容不不变。如果堆内存上的数据非常大,复制的操作成本会无限增加!
Double Free
问题:当前s1、s2
都指向同一份数据,当这两个变量离开作用域时,他们会同时释放同一块内存,这就会引起Double Free安全问题
。为了确保内存安全,当执行到语句let s2=s1
时,Rust让s1
失效,也称之为将所有权转移给了s2
。s1
的所有权转移给s2
后,s1
失效(如下图所示)。
7. 作用域和内存分配
变量的作用域决定了其内存的生命周期。
示例:作用域和内存分配
fn main() {let s = String::from("你好"); // s 进入作用域,分配内存println!("{}", s);
} // s 离开作用域,内存被释放
输出:
你好
分析:
s
的作用域结束后,内存被自动释放。
8. Clone
Clone
允许显式复制堆上的数据。
示例:Clone
fn main() {let s1 = String::from("你好");let s2 = s1.clone(); // 显式复制数据println!("s1: {}, s2: {}", s1, s2);
}
输出:
s1: 你好, s2: 你好
分析:
clone
会复制堆上的数据,s1
和s2
都有效。
9. 栈内存的 Copy
基本类型实现了 Copy
trait,赋值时会复制值而不是移动所有权。
示例:栈内存的 Copy
fn main() {let x = 5;let y = x; // x 的值被复制println!("x: {}, y: {}", x, y);
}
输出:
x: 5, y: 5
分析:
x
和y
都有效,因为i32
实现了Copy
。
那么,哪些类型实现了
Copy
特质呢?你可以查看特定类型的文档来确认,但一般来说,任何由简单标量值组成的类型都可以实现Copy
,而任何需要分配内存或是某种形式的资源的类型则不能实现Copy
。以下是一些实现了Copy
的类型:
- 所有的整数类型,例如
u32
。 - 布尔类型
bool
,其值为true
和false
。 - 所有的浮点数类型,例如
f64
。 - 字符类型
char
。 - 元组,如果它们只包含同样实现了
Copy
的类型。例如,(i32, i32)
实现了Copy
,但(i32, String)
则没有。
10. 所有权和函数
将值传递给函数会转移所有权。
示例:所有权和函数
fn take_ownership(s: String) {println!("函数内部: {}", s);
} // s 离开作用域,内存被释放fn main() {let s = String::from("你好");take_ownership(s); // s 的所有权转移到函数// println!("{}", s); // 错误:s 不再有效
}
输出:
函数内部: 你好
分析:
s
的所有权在传递给函数后转移。
11. 返回值和作用域
函数可以通过返回值转移所有权。
示例:返回值和作用域
fn give_ownership() -> String {let s = String::from("你好");s // 返回 s,所有权转移给调用者
}fn main() {let s = give_ownership(); // s 获得所有权println!("{}", s);
}
输出:
你好
分析:
give_ownership
返回s
,所有权转移给main
函数中的s
。
综合示例
以下是一个综合示例,展示了所有权、作用域、Clone
、Copy
、函数与返回值的用法:
fn main() {// 栈内存的 Copylet x = 5;let y = x; // x 的值被复制println!("x: {}, y: {}", x, y);// 堆内存的所有权let s1 = String::from("你好");let s2 = s1.clone(); // 显式复制数据println!("s1: {}, s2: {}", s1, s2);// 所有权和函数let s3 = String::from("世界");take_ownership(s3); // s3 的所有权转移到函数// println!("{}", s3); // 错误:s3 不再有效// 返回值和作用域let s4 = give_ownership(); // s4 获得所有权println!("s4: {}", s4);
}fn take_ownership(s: String) {println!("函数内部: {}", s);
} // s 离开作用域,内存被释放fn give_ownership() -> String {let s = String::from("你好,世界");s // 返回 s,所有权转移给调用者
}
输出:
x: 5, y: 5
s1: 你好, s2: 你好
函数内部: 世界
s4: 你好,世界
分析:
x
和y
是基本类型,赋值时复制值。s1
和s2
是String
类型,使用clone
显式复制数据。s3
的所有权在传递给函数后转移。s4
通过函数返回值获得所有权。
总结
Rust 的所有权系统通过以下特性确保内存安全:
- 堆内存与栈内存:区分数据的存储位置。
- 所有权规则:确保每个值只有一个所有者。
- 作用域:决定变量的生命周期。
String
类型:动态分配的字符串。- 内存分配:自动管理堆内存。
- 所有权移动:转移所有权时原始变量失效。
Clone
:显式复制堆数据。- 栈内存的
Copy
:基本类型赋值时复制值。 - 所有权与函数:传递值会转移所有权。
- 返回值与作用域:通过返回值转移所有权。
通过合理使用这些特性,可以编写出高效且安全的 Rust 代码。
相关文章:
Rust 所有权特性详解
Rust 所有权特性详解 Rust 的所有权系统是其内存安全的核心机制之一。通过所有权规则,Rust 在编译时避免了常见的内存错误(如空指针、数据竞争等)。本文将从堆内存与栈内存、所有权规则、变量作用域、String 类型、内存分配、所有权移动、Cl…...
基于人脸识别的课堂考勤系统
该项目是一个基于人脸识别的课堂考勤系统,使用Python开发,结合了多种技术实现考勤功能。要开发类似的基于人脸识别的考勤系统,可参考以下步骤: 环境搭建:利用Anaconda创建虚拟环境,指定Python版本为3.8&am…...
Deepseek R1 本地化部署指南:跨平台实战
引言 Deepseek R1 作为一款强大的本地化人工智能工具,支持在多种操作系统上部署,满足开发者和企业私有化运行的需求。本文将手把手教你如何在 Windows、Linux 和 macOS 系统上完成 Deepseek R1 的本地化部署,并附赠常见问题解决技巧! © ivwdcwso (ID: u012172506) 1…...
Nginx 运维开发高频面试题详解
一、基础核心问题 原文链接:https://blog.csdn.net/weixin_51146329/article/details/142963853 1、什么是Nginx? Nginx 是一个高性能的 HTTP 和反向代理服务器,它以轻量级和高并发处理能力而闻名。Nginx 的反向代理功能允许它作为前端服务…...
JVM运行时数据区域-附面试题
Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域 有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而一直存在,有些区域则是 依赖用户线程的启动和结束而建立和销毁。 1. 程序计…...
DeepSeek本地部署详细指南
DeepSeek本地部署详细指南 随着人工智能技术的飞速发展,本地部署大模型的需求也日益增加。DeepSeek作为一款开源且性能强大的大语言模型,提供了灵活的本地部署方案,让用户能够在本地环境中高效运行模型,同时保护数据隐私。以下是…...
Debian 10 中 Linux 4.19 内核在 x86_64 架构上对中断嵌套的支持情况
一、中断嵌套的定义与原理 中断嵌套是指在一个中断处理程序(ISR)正在执行的过程中,另一个更高优先级的中断请求到来,系统暂停当前中断处理程序,转而处理新的高优先级中断。处理完高优先级中断后,系统返回到原来的中断处理程序继续执行。这种机制允许系统更高效地响应紧急…...
C语言:深入了解指针1
内存和地址 1. 酒店房间类比内存和地址 场景描述 把计算机的内存想象成一家酒店,每个房间就是一个内存单元,每个房间都有一个唯一的房间号,这个房间号就相当于内存地址。房间里可以存放客人的行李等物品,这些物品就好比存储在内…...
【AI】探索自然语言处理(NLP):从基础到前沿技术及代码实践
Hi ! 云边有个稻草人-CSDN博客 必须有为成功付出代价的决心,然后想办法付出这个代价。 目录 引言 1. 什么是自然语言处理(NLP)? 2. NLP的基础技术 2.1 词袋模型(Bag-of-Words,BoWÿ…...
游戏引擎 Unity - Unity 下载与安装
Unity Unity 首次发布于 2005 年,属于 Unity Technologies Unity 使用的开发技术有:C# Unity 的适用平台:PC、主机、移动设备、VR / AR、Web 等 Unity 的适用领域:开发中等画质中小型项目 Unity 适合初学者或需要快速上手的开…...
文本复制兼容方案最佳实现落地。
文章目录 一、navigator.clipboard.writeText二、方案落地总结 一、navigator.clipboard.writeText navigator.clipboard.writeText 是一个Web API,它允许网页脚本将文本数据写入用户的系统剪贴板。这个API是异步的,并且设计用于提高安全性和用户体验&a…...
LabVIEW如何高频采集温度数据?
在LabVIEW中进行高频温度数据采集时,选择合适的传感器(如热电偶或热电阻)和采集硬件是关键。下面是一些建议,帮助实现高效的温度数据采集: 1. 传感器选择: 热电偶(Thermocouple)&am…...
AI智慧社区--人脸识别
前端 人脸的采集按钮: 首先对于选中未认证的居民记录,进行人脸采集 前端的按钮 <el-form-item><el-button v-has"sys:person:info" type"info" icon"el-icon-camera" :disabled"ids.length < 0" …...
C++11—右值引用
目录 简介 左值和右值 左值 右值 右值引用 生命周期 引用折叠 实际应用 移动语义 移动构造函数 移动赋值运算符 完美转发 简介 之前我们曾学习过引用叫左值引用,但那是C98的,在C11中新增了一种引用叫右值引用。右值引用主要用于支持移动语…...
Workbench 中的热源仿真
探索使用自定义工具对移动热源进行建模及其在不同行业中的应用。 了解热源动力学 对移动热源进行建模为各种工业过程和应用提供了有价值的见解。激光加热和材料加工使用许多激光束来加热、焊接或切割材料。尽管在某些情况下,热源 (q) 不是通…...
Windows11 不依赖docker搭建 deepseek-R1 1.5B版本(附 Open WebUi搭建方式)
零、前言 过年这几天发现 DeepSeek 非常火,试用了一下发现确实不错。与豆包、kimi、perplexity 这些相比完全不是一个次元的存在,特别是用ta写文章的时候体验非常好。所以试着自己搭一个环境。 一、安装 Ollama和DeepSeek-R1 我的安装方式很简单…...
Error: Expected a mutable image
你的函数用了不支持的图片格式比如我的人脸检测,本来要RGB565我却用JPEG所以报错...
【4Day创客实践入门教程】Day2 探秘微控制器——单片机与MicroPython初步
Day2 探秘微控制器——单片机与MicroPython初步 目录 Day2 探秘微控制器——单片机与MicroPython初步MicroPython语言基础开始基础语法注释与输出变量模块与函数 单片机基础后记 Day0 创想启程——课程与项目预览Day1 工具箱构建——开发环境的构建Day2 探秘微控制器——单片机…...
代码随想录算法训练营Day51 | 101.孤岛的总面积、102.沉没孤岛、103.水流问题、104.建造最大岛屿
文章目录 101.孤岛的总面积思路与重点 102.沉没孤岛思路与重点 103.水流问题思路与重点 104.建造最大岛屿思路与重点 101.孤岛的总面积 题目链接:101.孤岛的总面积讲解链接:代码随想录状态:直接看题解了。 思路与重点 nextx或者nexty越界了…...
网络基础
协议 协议就是约定 网络协议是协议中的一种 协议分层 协议本身也是软件,在设计上为了更好的模块化,解耦合,也是设计成为层状结构的 两个视角: 小白:同层协议,直接通信 工程师:同层协议&…...
利用Spring Batch简化企业级批处理应用开发
1. 引言 1.1 批处理的重要性 在现代企业系统中,批处理任务用于处理大量数据,如报表生成、数据迁移、日终结算等。这些任务通常不需要实时响应,但需要高效、可靠地完成。批处理可以显著提高系统性能,减少实时系统的负载,并确保数据的完整性和一致性。 1.2 Spring Batch简…...
Python - pyautogui库 模拟鼠标和键盘执行GUI任务
安装库: pip install pyautogui 导入库:import pyautogui 获取屏幕尺寸: s_width, s_height pyautogui.size() 获取鼠标当前位置: x, y pyautogui.position() 移动鼠标到指定位置(可以先使用用上一个函数调试获取当…...
UE求职Demo开发日志#19 给物品找图标,实现装备增加属性,背包栏UI显示装备
1 将用到的图标找好,放一起 DataTable里对应好图标 测试一下能正确获取: 2 装备增强属性思路 给FMyItemInfo添加一个枚举变量记录类型(物品,道具,装备,饰品,武器)--> 扩展DataT…...
【PyQt】lambda函数,实现动态传递参数
为什么需要 lambda? 在 PyQt5 中,clicked 信号默认会传递一个布尔值(表示按钮是否被选中)。如果我们希望将按钮的文本内容传递给槽函数,需要通过 lambda 函数显式传递参数。 这样可以实现将按钮内容传递给槽函数&…...
Unity 2D实战小游戏开发跳跳鸟 - 跳跳鸟碰撞障碍物逻辑
在有了之前创建的可移动障碍物之后,就可以开始进行跳跳鸟碰撞到障碍物后死亡的逻辑,死亡后会产生一个对应的效果。 跳跳鸟碰撞逻辑 创建Obstacle Tag 首先跳跳鸟在碰撞到障碍物时,我们需要判定碰撞到的是障碍物,可以给障碍物的Prefab预制体添加一个Tag为Obstacle,添加步…...
LeetCode:121.买卖股票的最佳时机1
跟着carl学算法,本系列博客仅做个人记录,建议大家都去看carl本人的博客,写的真的很好的! 代码随想录 LeetCode:121.买卖股票的最佳时机1 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票…...
DeepSeek-R1 论文. Reinforcement Learning 通过强化学习激励大型语言模型的推理能力
论文链接: [2501.12948] DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via Reinforcement Learning 实在太长,自行扔到 Model 里,去翻译去提问吧。 工作原理: 主要技术,就是训练出一些专有用途小模型&…...
SQL索引优化_提高系统响应速度的秘诀
1. 引言 1.1 索引的重要性 在数据库管理系统中,索引是提升查询性能的关键工具。合理的索引设计可以显著减少查询时间,提高系统的响应速度,从而改善用户体验。然而,不恰当的索引使用可能会适得其反,增加写操作的开销并导致性能下降。 1.2 文章目标与结构 本文旨在介绍如…...
MoonBit 编译器(留档学习)
MoonBit 编译器 MoonBit 是一个用户友好,构建快,产出质量高的编程语言。 MoonBit | Documentation | Tour | Core This is the source code repository for MoonBit, a programming language that is user-friendly, builds fast, and produces high q…...
基于微信小程序的酒店管理系统设计与实现(源码+数据库+文档)
酒店管理小程序目录 目录 基于微信小程序的酒店管理系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、管理员模块的实现 (1) 用户信息管理 (2) 酒店管理员管理 (3) 房间信息管理 2、小程序序会员模块的实现 (1)系统首页 ÿ…...
重生之我在异世界学编程之C语言:深入指针篇(上)
大家好,这里是小编的博客频道 小编的博客:就爱学编程 很高兴在CSDN这个大家庭与大家相识,希望能在这里与大家共同进步,共同收获更好的自己!!! 本文目录 引言正文(1)内置数…...
Unity Shader Graph 2D - 跳动的火焰
在游戏中,火焰是一种常见的特效。通常来讲火焰特效通过粒子系统的方式实现的相对较多,本文将通过Shader Graph的方式来实现一种不同的火焰效果。 那么怎么实现呢 首先创建一个名为Fire的Shader Graph文件,然后创建一个名为M_Fire的材质球。 …...
CoRAG 来自微软与人大的创新RAG框架技术
微软与人大合作开发的CoRAG(Chain-of-Retrieval Augmented Generation)是一种创新的检索增强生成(RAG)框架,旨在通过模拟人类思考方式来提升大语言模型(LLM)在复杂问题上的推理和回答能力。以下是对CoRAG的深度介绍: 1. CoRAG的核心理念 CoRAG的核心思想是通过动态调…...
MySQL的GROUP BY与COUNT()函数的使用问题
在MySQL中,GROUP BY和 COUNT()函数是数据聚合查询中非常重要的工具。正确使用它们可以有效地统计和分析数据。然而,不当的使用可能会导致查询结果不准确或性能低下。本文将详细讨论 GROUP BY和 COUNT()函数的使用方法及常见问题,并提供相应的…...
DS常识问答:人民币升值贬值是什么回事
好的!我用一个简单的比喻来解释,就像用苹果换橘子一样: 1. **汇率是什么?** 假设你有人民币,别人有美元。汇率就是你们交换的“价格”。比如今天1美元能换7块人民币,明天可能变成7.5块或者6.5块&…...
docker直接运行arm下的docker
运行环境是树莓派A 处理器是 arm32v6 安装了docker,运行lamp 编译安装php的时候发现要按天来算,于是用电脑vm下的Ubuntu系统运行arm的docker 然后打包到a直接导入运行就可以了 第一种方法 sudo apt install qemu-user-static 导入直接运行就可以了…...
机器学习--概览
一、机器学习基础概念 1. 定义 机器学习(Machine Learning, ML):通过算法让计算机从数据中自动学习规律,并利用学习到的模型进行预测或决策,而无需显式编程。 2. 与编程的区别 传统编程机器学习输入:规…...
人机交互系统实验三 多通道用户界面
实验目的和要求 1)了解常见的多通道用户界面 2)查找资料,熟悉一种多通道用户界面并写出综述 实验环境 Windows10 实验内容与过程 (一) 实验内容: 要求上网查找资料,熟悉一种多通道用户界面并写出综述,可以是眼动跟踪、手势识别、 三维…...
Python(Pandas)数据分析学习
1.Pandas基本构成 引入Pandas import pandas as pd 1.Series 行 对应Excel中的一行数据,一维数据 定义Series # 第一个参数是具体数据 # 第二个参数的对应的索引下标 # 第三个参数的行名称 data pd.Series([1,2,3,4,5], index[a,b,c,d,e], namedata) print(d…...
JavaScript系列(53)--内存管理与垃圾回收机制详解
JavaScript内存管理与垃圾回收机制详解 🧹 今天,让我们深入探讨JavaScript的内存管理与垃圾回收机制。理解这些机制对于编写高性能、无内存泄漏的JavaScript应用至关重要。 内存管理基础概念 🌟 💡 小知识:JavaScrip…...
每日一题——用两个栈实现队列
用两个栈实现队列 题目描述数据范围示例 代码实现1. 代码思路push 操作:pop 操作: 2. 代码实现3. 代码解析4. 时间复杂度与空间复杂度 总结 题目描述 用两个栈来实现一个队列,使用 n 个元素来完成 n 次在队列尾部插入整数(push)和 n 次在队列…...
DeepSeek与OpenAI:谁是AI领域的更优选择?
在人工智能领域,DeepSeek和OpenAI是两个备受瞩目的玩家。尽管OpenAI凭借其强大的GPT系列模型在全球范围内获得了广泛的认可,但DeepSeek凭借其独特的技术优势和创新理念,正在逐渐成为许多企业和开发者的新选择。本文将对DeepSeek和OpenAI进行详…...
【爬虫】JS逆向解决某药的商品价格加密
⭐️⭐️⭐️⭐️⭐️欢迎来到我的博客⭐️⭐️⭐️⭐️⭐️ 🐴作者:秋无之地 🐴简介:CSDN爬虫、后端、大数据领域创作者。目前从事python爬虫、后端和大数据等相关工作,主要擅长领域有:爬虫、后端、大数据开发、数据分析等。 🐴欢迎小伙伴们点赞👍🏻、收藏⭐️、…...
deepseek v3 搭建个人知识库
目录 deepseek-r1本地部署,这个比较好,推荐 Chatbox连接ollama服务 知乎教程,需要注册: deepseek-r1本地部署,这个比较好,推荐 公司数据不泄露,DeepSeek R1本地化部署web端访问个人知识库搭建…...
ETCD集群证书生成
安装cfssl工具配置CA证书请求文件创建CA证书创建CA证书策略配置etcd证书请求文件生成etcd证书 继续上一篇文章《负载均衡器高可用部署》下面介绍一下etcd证书生成配置。其中涉及到的ip地址和证书基本信息请替换成你自己的信息。 安装cfssl工具 下载cfssl安装包 https://github…...
【软件测试项目实战】淘宝网订单管理功能
一、测试功能模块分析 选择淘宝网订单管理功能进行测试,核心子功能包含: 订单创建(商品结算、地址选择)订单状态变更(待付款、已付款、已发货、已收货、退款中)订单修改(地址修改、商品数量修…...
扩散模型(一)
在生成领域,迄今为止有几个主流的模型,分别是 GAN, VAE,Flow 以及 Diffusion 模型。 GAN:GAN 的学习机制是对抗性学习,通过生成器和判别器的对抗博弈来进行学习,这种竞争机制促使生成器不断提升生成能力&a…...
EF Core与ASP.NET Core的集成
目录 分层项目中EF Core的用法 数据库的配置 数据库迁移 步骤汇总 注意: 批量注册上下文 分层项目中EF Core的用法 创建一个.NET类库项目BooksEFCore,放实体等类。NuGet:Microsoft.EntityFrameworkCore.RelationalBooksEFCore中增加实…...
深入解析“legit”的地道用法——从俚语到正式表达:Sam Altman用来形容DeepSeek: legit invigorating(真的令人振奋)
深入解析“legit”的地道用法——从俚语到正式表达 一、引言 在社交媒体、科技圈甚至日常对话中,我们经常会看到或听到“legit”这个词。比如最近 Sam Altman 在 X(原 Twitter)上发的一条帖子中写道: we will obviously deliver …...
玩转ChatGPT:DeepSeek测评(科研思路梳理)
一、写在前面 DeepSeek-R1出圈了,把OpenAI的o3-mini模型都提前逼上线了(还免费使用)。 都号称擅长深度推理,那么对于科研牛马的帮助有多大呢? 我连夜试一试。 二、科研思路梳理 有时候我们牛马们做了一堆结果以后&…...