当前位置: 首页 > news >正文

Rust 测试指南:从入门到进阶

1. 测试基础:#[test] 属性

Rust 测试的基本单位是函数。只要在一个函数前面标注 #[test] 属性,那么在运行 cargo test 时,Rust 会自动识别并执行它。例如,新建一个库工程 addercargo new adder --lib,在 src/lib.rs 中可能会有如下的默认测试模板:

#[cfg(test)]
mod tests {use super::*;#[test]fn it_works() {let result = add(2, 2);assert_eq!(result, 4);}
}pub fn add(a: i32, b: i32) -> i32 {a + b
}
  • #[cfg(test)]:告诉编译器该模块仅在测试编译时包含。
  • #[test]:标注该函数是一个测试函数,测试运行器会自动收集、执行它们。
  • assert_eq!:断言左右两边相等,若不相等则测试失败。

运行 cargo test,会看到测试通过或失败的详细信息。由此可见,Rust 测试非常直观:只需写好函数体并添加 #[test] 标记即可。

2. 断言宏:assert!assert_eq!assert_ne!

2.1 assert!

assert! 宏主要用于断言一个布尔表达式为 true,如果表达式结果为 false,则触发 panic!,导致测试失败。例如:

#[test]
fn test_assert() {let condition = (2 + 2) == 4;assert!(condition, "2 + 2 应该等于 4");
}

如果 conditionfalseassert! 会打印指定的出错信息。

2.2 assert_eq!assert_ne!

这两个宏分别用于断言两者相等或不相等。当断言失败时,它们会打印出左值与右值,方便我们快速定位问题:

#[test]
fn test_assert_eq_ne() {let x = 5;let y = 3 + 2;assert_eq!(x, y, "x 与 y 应该相等");assert_ne!(x, 10, "x 不应该为 10");
}

与直接使用 assert!(x == y) 相比,assert_eq! 在失败时能更详细地输出左右值的具体内容。

3. 自定义失败信息

当断言失败时,希望打印更具可读性或指导性的错误信息时,可以在宏的后面添加自定义文字或使用格式化字符串:

#[test]
fn test_custom_message() {let greeting = "Hello, Rust!";assert!(greeting.contains("Rust"),"Greeting 中不包含预期关键字,实际输出: `{}`",greeting);
}

当测试失败时,你将看到含有 greeting 变量具体值的提示信息,能更快定位问题。

4. 检查代码是否会触发 panic!#[should_panic]

有时我们需要测试错误场景,例如希望函数在遇到非法输入时能自动 panic!。可通过给测试函数添加 #[should_panic] 属性来验证:

pub struct Guess {value: i32,
}impl Guess {pub fn new(value: i32) -> Guess {if value < 1 || value > 100 {panic!("Guess value must be between 1 and 100, got {}.", value);}Guess { value }}
}#[cfg(test)]
mod tests {use super::*;#[test]#[should_panic]fn test_guess_out_of_range() {// 这行应导致 panicGuess::new(200);}
}

此时,如果 Guess::new(200) 不触发 panic!,测试将报告失败。
另外,还可以使用 #[should_panic(expected = "substring")] 来匹配特定的错误信息,从而确保 panic! 的原因与我们预期一致。

5. 使用 Result<T, E> 编写测试

除了直接使用断言触发 panic!,我们也可以让测试函数返回 Result<(), String>。当返回 Err(...) 时,测试视为失败;返回 Ok(()) 时,测试视为成功。这对于需要在测试中使用 ? 运算符(即在测试内做错误传播)会很有帮助:

#[test]
fn it_works_with_result() -> Result<(), String> {let result = add(2, 2);if result == 4 {Ok(())} else {Err(format!("期待 4,实际得到: {}", result))}
}
  • 注意:如果使用 Result<T, E>,则不能再搭配 #[should_panic]
  • 当需要断言某个操作返回 Err 时,最直接的做法是 assert!(value.is_err()),而不是给返回结果加 ?

6. 运行与管理测试

6.1 运行所有测试

在项目根目录下执行:

cargo test

Rust 会构建测试二进制并执行所有标有 #[test] 的函数,输出通过与失败的测试结果统计。结果示例:

running 2 tests
test tests::it_works ... ok
test tests::it_fails ... FAILEDfailures:tests::it_fails - panicked at 'Make this test fail'

6.2 只运行部分测试

如果想只运行指定名称匹配的测试,可以在 cargo test 后加上测试名称关键字,支持模糊匹配:

cargo test it_works

只会运行包含 it_works 子串的测试函数。

6.3 忽略测试

有些测试耗时较长或依赖外部环境,临时不想执行时,可以使用 #[ignore] 标记。这样默认不会运行这些测试,除非指定 cargo test -- --ignored 或者 cargo test -- --include-ignored

#[test]
#[ignore]
fn expensive_test() {// 测试内容
}

7. 总结

Rust 的测试系统内置于语言与工具链之中,让开发者可以在编写、维护与运行测试时拥有非常高的效率与安全感。本篇文章主要分享了以下几点:

  1. 测试函数的基本形式:使用 #[test] 标注,并通过 cargo test 执行测试。
  2. 常用断言宏
    • assert! 适合普通布尔表达式;
    • assert_eq!assert_ne! 在断言相等/不相等时带来更多调试信息。
  3. 自定义失败信息:通过字符串拼接或格式化输出,提升调试效率。
  4. 检查 panic! 场景:使用 #[should_panic],并可利用 expected 参数匹配特定信息。
  5. 使用 Result<T, E>:让测试函数返回 Result,可以灵活地利用 ? 运算符处理错误。
  6. 测试管理:灵活过滤测试、忽略测试、性能基准测试(需夜ly Rust),都能帮助你更好地组织与维护测试集。

有了这些基础,你就可以非常方便地在 Rust 项目中为关键功能编写自动化测试,并在项目规模不断扩大时维持高质量与高可维护性。希望这篇文章能让你更好地理解并掌握 Rust 测试体系,编写出更加可靠的代码!

祝你写测试愉快,玩转 Rust!

相关文章:

Rust 测试指南:从入门到进阶

1. 测试基础&#xff1a;#[test] 属性 Rust 测试的基本单位是函数。只要在一个函数前面标注 #[test] 属性&#xff0c;那么在运行 cargo test 时&#xff0c;Rust 会自动识别并执行它。例如&#xff0c;新建一个库工程 adder&#xff0c;cargo new adder --lib&#xff0c;在 …...

Elasticsearch 生产集群部署终极方案

Elasticsearch 集群部署 1.集群部署1.1 新增用户1.2 优化操作系统1.3 JDK1.4 elasticsearch1.5 开机自启动 2.安全认证功能2.1 生成CA证书2.2 生成密钥2.3 上传至其他节点2.4 修改属主、属组2.5 配置文件添加参数2.6 各节点添加密钥库密码2.7 设置用户密码 1.集群部署 1.1 新增…...

电路笔记(元器件):AD 5263数字电位计(暂记)

AD5263 是四通道、15 V、256位数字电位计&#xff0c;可通过SPI/I2C配置具体电平值。 配置模式&#xff1a; W引脚作为电位器的抽头&#xff0c;可在A-B之间调整任意位置的电阻值。也可将W与A(或B)引脚短接&#xff0c;A-W间的电阻总是0欧姆&#xff0c;通过数字接口调整电位器…...

如何在电脑后台定时进行自动截图?自动截图后如何快捷保存?如何远程查看?

7-2 有时候需要对电脑的屏幕进行在后台连续性的截图保存&#xff0c;并且要可以远程查看&#xff0c;无界面&#xff0c;以达到对电脑的使用过程进行完全了解的目的&#xff0c;一般用于对小孩使用电脑的掌握&#xff0c;如果父母在外地&#xff0c;不方便就近管理&#xff0c…...

解决react中函数式组件usestate异步更新

问题&#xff1a;在点击modal组件确认后 调用后端接口&#xff0c;使用setstateone&#xff08;false&#xff09;使modal组件关闭&#xff0c;但是设置后关闭不了&#xff0c;在设置setstateone&#xff08;false&#xff09;前后打印出了对应的stateone都为true&#xff0c;但…...

skia-macos源码编译

1、下载git-hub 源码 2、下载依赖库 3、编译&#xff0c;注意选项 bin/gn gen out/release --args"is_official_buildfalse skia_use_system_expatfalse skia_use_system_icufalse skia_use_libjpeg_turbofalse skia_use_system_libpngfalse skia_use_system_libwebpfal…...

本地部署DeepSeek(Mac版本,带图形化操作界面)

一、下载安装&#xff1a;Ollama 官网下载&#xff1a;Download Ollama on macOS 二、安装Ollama 1、直接解压zip压缩包&#xff0c;解压出来就是应用程序 2、直接将Ollama拖到应用程序中即可 3、启动终端命令验证 # 输入 ollama 代表已经安装成功。 4、下载模型 点击模型…...

离线统信系统的python第三方库批量安装流程

一、关于UOS本机 操作系统&#xff1a;UOS&#xff08;基于Debian的Linux发行版&#xff09; CPU&#xff1a;海光x86 二、具体步骤 1、在联网的电脑上用控制台的pip命令批量下载指定版本的第三方库 方法A cd <目标位置的绝对路径> pip download -d . --platform many…...

群晖安装Gitea

安装Docker Docker运行Gitea 上传gitea包&#xff0c;下载地址&#xff1a;https://download.csdn.net/download/hmxm6/90360455 打开docker 点击印象&#xff0c;点击新增&#xff0c;从文件添加 点击启动 可根据情况&#xff0c;进行高级设置&#xff0c;没有就下一步 点击应…...

jmeter逻辑控制器9

1&#xff0c;简单控制器2&#xff0c;录制控制器3&#xff0c;循环控制器4&#xff0c;随机控制器5&#xff0c;随机顺序控制器6&#xff0c;if控制器7&#xff0c;模块控制器8&#xff0c;Include控制器9&#xff0c;事物控制器本文永久更新地址: 1&#xff0c;简单控制器 不…...

Spring统一修改RequestBody

我们编写RestController时&#xff0c;有可能多个接口使用了相同的RequestBody&#xff0c;在一些场景下需求修改传入的RequestBody的值&#xff0c;如果是每个controller中都去修改&#xff0c;代码会比较繁琐&#xff0c;最好的方式是在一个地方统一修改&#xff0c;比如将he…...

自动化xpath定位元素(附几款浏览器xpath插件)

在 Web 自动化测试、数据采集、前端调试中&#xff0c;XPath 仍然是不可或缺的技能。虽然 CSS 选择器越来越强大&#xff0c;但面对复杂 DOM 结构时&#xff0c;XPath 仍然更具灵活性。因此&#xff0c;掌握 XPath&#xff0c;不仅能提高自动化测试的稳定性&#xff0c;还能在爬…...

go-elasticsearch创建ik索引并进行查询操作

es-go client引入gomod go get github.com/elastic/go-elasticsearch/v8latest连接es服务器&#xff08;不经过安全校验) cfg : elasticsearch.Config{Addresses: []string{"http://localhost:9200",}, } es, err : elasticsearch.NewClient(cfg) if err ! nil {pa…...

【东莞常平】戴尔R710服务器不开机维修分享

1&#xff1a;2025-02-06一位老客户的朋友刚开工公司ERP服务器一台戴尔老服务器故障无法开机&#xff0c;于是经老客户介绍找到我们。 2&#xff1a;服务器型号是DELL PowerEdge R710 这个服务器至少也有15年以上的使用年限了。 3&#xff1a;客户反馈的故障问题为&#xff1a;…...

rebase和merge

rebase 和merge区别&#xff1a; rebase变基&#xff0c;改变基底&#xff1a;rebase会抹去提交记录。 git pull 默认merge&#xff0c;git pull --rebase 变基 rebase C、D提交属于feature分支&#xff0c;是基于master分支&#xff0c;在B提交额外拉出来的&#xff0c;当…...

SSA-TCN麻雀算法优化时间卷积神经网络时间序列预测未来Matlab实现

SSA-TCN麻雀算法优化时间卷积神经网络时间序列预测未来Matlab实现 目录 SSA-TCN麻雀算法优化时间卷积神经网络时间序列预测未来Matlab实现预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.Matlab实现SSA-TCN麻雀算法优化时间卷积神经网络时间序列预测未来&#xff08;优…...

2025牛客寒假算法基础集训营5(补题)

C 小L的位运算 显然&#xff0c;如果两次反置的价格小于等于交换的价格&#xff0c;那么直接全部反置就好了。 反之&#xff0c;由于交换一定低于两次反置&#xff0c;我们尽可能用交换来消去不正确的位置。不正确的位置类型只有00&#xff0c;01&#xff0c;10&#xff0c;11&…...

Kotlin Android 环境搭建

Kotlin Android 环境搭建 引言 随着移动应用的日益普及,Android 开发成为了一个热门的技术领域。Kotlin 作为一种现代的编程语言,因其简洁、安全、互操作性强等特点,被越来越多的开发者所喜爱。本文将详细介绍 Kotlin Android 环境搭建的步骤,帮助您快速上手 Kotlin Andr…...

DeepSeek图解10页PDF

以前一直在关注国内外的一些AI工具&#xff0c;包括文本型、图像类的一些AI实践&#xff0c;最近DeepSeek突然爆火&#xff0c;从互联网收集一些资料与大家一起分享学习。 本章节分享的文件为网上流传的DeepSeek图解10页PDF&#xff0c;免费附件链接给出。 1 本地 1 本地部…...

Kafka中的KRaft算法

我们之前的Kafka值依赖于Zookeeper注册中心来启动的&#xff0c;往里面注册我们节点信息 Kafka是什么时候不依赖Zookeeper节点了 在Kafka2.8.0开始就可以不依赖Zookeeper了 可以用KRaft模式代替Zookeeper管理Kafka集群 KRaft Controller和KRaft Leader的关系 两者关系 Lea…...

C++20新特性

作者&#xff1a;billy 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 前言 C20 是 C 标准中的一个重要版本&#xff0c;引入了许多新特性和改进&#xff0c;包括模块&#xff08;Modules&#xff09;、协程…...

[LUA ERROR] bad light userdata pointer

Cocos2d项目&#xff0c;targetSdkVersion30&#xff0c;在 android 13 设备运行报错: [LUA ERROR] bad light userdata pointer &#xff0c;导致黑屏。 参考 cocos2dx 适配64位 arm64-v8a 30 lua 提示 bad light userdata pointer 黑屏-CSDN博客的方法 下载最新的Cocos2dx …...

Maven 安装配置(完整教程)

文章目录 一、Maven 简介二、下载 Maven三、配置 Maven3.1 配置环境变量3.2 Maven 配置3.3 IDEA 配置 四、结语 一、Maven 简介 Maven 是一个基于项目对象模型&#xff08;POM&#xff09;的项目管理和自动化构建工具。它主要服务于 Java 平台&#xff0c;但也支持其他编程语言…...

JAVA:CloseableHttpClient 进行 HTTP 请求的技术指南

1、简述 CloseableHttpClient 是 Apache HttpComponents 提供的一个强大 HTTP 客户端库。它允许 Java 程序与 HTTP/HTTPS 服务交互&#xff0c;可以发送 GET、POST 等各种请求类型&#xff0c;并处理响应。该库广泛用于 REST API 调用、文件上传和下载等场景。 2、特性 Close…...

WebRTC 客户端与ZLMediaKit通讯

1 web浏览器js方式 要使用 WebRTC 客户端与 ZLMediaKit 通讯&#xff0c;您需要设置一个 WebRTC 客户端并与 ZLMediaKit 进行连接。以下是一个基本的步骤和示例代码&#xff0c;帮助您实现这一目标。 ### 步骤 1. **安装 ZLMediaKit**&#xff1a;确保您已经在服务器上安装并…...

openssl使用

openssl使用 提取密钥对 数字证书pfx包含公钥和私钥&#xff0c;而cer证书只包含公钥。提取需输入证书保护密码 openssl pkcs12 -in xxx.pfx -nocerts -nodes -out pare.key提取私钥 openssl rsa -in pare.key -out pri.key提取公钥 openssl rsa -in pare.key -pubout -ou…...

stm32小白成长为高手的学习步骤和方法

我们假定大家已经对STM32的书籍或者文档有一定的理解。如不理解&#xff0c;请立即阅读STM32的文档&#xff0c;以获取最基本的知识点。STM32单片机自学教程 这篇博文也是一篇不错的入门教程&#xff0c;初学者可以看看&#xff0c;讲的真心不错。 英文好的同学&#xf…...

支持多种网络数据库格式的自动化转换工具——VisualXML

一、VisualXML软件介绍 对于DBC、ARXML……文件的编辑、修改等繁琐操作&#xff0c;WINDHILL风丘科技开发的总线设计工具——VisualXML&#xff0c;可轻松解决这一问题&#xff0c;提升工作效率。 VisualXML是一个强大且基于Excel表格生成多种网络数据库文件的转换工具&#…...

Linux学习笔记16---高精度延时实验

延时函数是很常用的 API 函数&#xff0c;在前面的实验中我们使用循环来实现延时函数&#xff0c;但是使用循环来实现的延时函数不准确&#xff0c;误差会很大。虽然使用到延时函数的地方精度要求都不会很严格( 要求严格的话就使用硬件定时器了 ) &#xff0c;但是延时函数肯定…...

【kafka实战】05 Kafka消费者消费消息过程源码剖析

1. 概述 Kafka消费者&#xff08;Consumer&#xff09;是Kafka系统中负责从Kafka集群中拉取消息的客户端组件。消费者消费消息的过程涉及多个步骤&#xff0c;包括消费者组的协调、分区分配、消息拉取、消息处理等。本文将深入剖析Kafka消费者消费消息的源码&#xff0c;并结合…...

20240817 联想 笔试

文章目录 1、选择题1.11.21.31.41.51.61.71.81.91.101.111.121.131.141.151.161.171.181.191.202、编程题2.12.2岗位:Linux开发工程师 题型:20 道选择题,2 道编程题 1、选择题 1.1 有如下程序,程序运行的结果为 (D) #include <stdio.h>int main() {int k = 3...

Maven 中常用的 scope 类型及其解析

在 Maven 中&#xff0c;scope 属性用于指定依赖项的可见性及其在构建生命周期中的用途。不同的 scope 类型能够影响依赖项的编译和运行阶段。以下是 Maven 中常用的 scope 类型及其解析&#xff1a; compile&#xff08;默认值&#xff09;&#xff1a; 这是默认的作用域。如果…...

【电机控制器】STC8H1K芯片——低功耗

【电机控制器】STC8H1K芯片——低功耗 文章目录 [TOC](文章目录) 前言一、芯片手册说明二、IDLE模式三、PD模式四、PD模式唤醒五、实验验证1.接线2.视频&#xff08;待填&#xff09; 六、参考资料总结 前言 使用工具&#xff1a; 1.STC仿真器烧录器 提示&#xff1a;以下是本…...

PHP 运算符

PHP 运算符 概述 PHP 是一种广泛使用的开源服务器端脚本语言,它具有丰富的运算符集,这些运算符是编写 PHP 程序的基础。运算符用于执行各种数学、逻辑和比较操作。本篇文章将详细介绍 PHP 中常用的运算符,包括算术运算符、比较运算符、逻辑运算符、赋值运算符等。 算术运…...

【自然语言处理】利用Memory Layer替换Transformer中的FFN

论文地址&#xff1a;https://arxiv.org/pdf/2412.09764 相关博客 【自然语言处理】利用Memory Layer替换Transformer中的FFN 【自然语言处理】【大模型】BitNet&#xff1a;用1-bit Transformer训练LLM 【自然语言处理】BitNet b1.58&#xff1a;1bit LLM时代 【自然语言处理】…...

【设计模式】【行为型模式】策略模式(Strategy)

&#x1f44b;hi&#xff0c;我不是一名外包公司的员工&#xff0c;也不会偷吃茶水间的零食&#xff0c;我的梦想是能写高端CRUD &#x1f525; 2025本人正在沉淀中… 博客更新速度 &#x1f4eb; 欢迎V&#xff1a; flzjcsg2&#xff0c;我们共同讨论Java深渊的奥秘 &#x1f…...

报错:no matching host key type found

no matching host key type found. Their offer: ssh-rsa,ssh-dss scp: Connection closed 可能发生在scp或其他方式连接服务器时 报错原因&#xff1a; 服务器只支持较老的加密算法&#xff08;如 ssh-rsa 或 ssh-dss&#xff09;&#xff0c;而本地客户端由于安全原因默认禁…...

LVGL4种输入设备详解(触摸、键盘、实体按键、编码器)

lvgl有触摸、键盘、实体按键、编码器四种输入设备 先来分析一下这四种输入设备有什么区别 &#xff08;1&#xff09;LV_INDEV_TYPE_POINTER 主要用于触摸屏 用到哪个输入设备保留哪个其他的也是&#xff0c;保留触摸屏输入的任务注册&#xff0c;其它几种种输入任务的注册&…...

VirtualBox中Ubuntu 22.04网卡配置以及解决过程中遇到的问题

1.添加网卡(仅主机) 2.启动虚拟机&#xff0c;查看新添加网卡信息 #查看网卡 ip addr # 查看网络信息&#xff0c;发现新网卡(enp0s8)未分配 ifconfig -a3.使用netplan进行网络配置 3.1 配置 DHCP获取IP # 进入netplan 文件夹 cd /etc/netplan #查看文件夹下yaml ls -al # 编…...

【Vue】在Vue3中使用Echarts的示例 两种方法

文章目录 方法一template渲染部分js部分方法一实现效果 方法二template部分js or ts部分方法二实现效果 贴个地址~ Apache ECharts官网地址 Apache ECharts示例地址 官网有的时候示例显示不出来&#xff0c;属于正常现象&#xff0c;多进几次就行 开始使用前&#xff0c;记得先…...

【在线优化】【有源程序】基于遗传算法(GA)和粒子群优化(PSO)算法的MPPT控制策略

目录 一、背景 二、源程序及结果 2.1 simulink仿真程序 2.2 GA模块源程序 2.3 PSO模块源程序 三、程序运行结果 3.1 基于GA优化的MPPT 3.2 基于PSO优化的MPPT 一、背景 MPPT策略能够显著提高光伏、风电等发电效率&#xff0c;节省大量成本。该策略的经典算法是&#xf…...

Excel大数据量导入导出

github源码 地址&#xff08;更详细&#xff09; : https://github.com/alibaba/easyexcel 文档&#xff1a;读Excel&#xff08;文档已经迁移&#xff09; B 站视频 : https://www.bilibili.com/video/BV1Ff4y1U7Qc 一、JAVA解析EXCEL工具EasyExcel Java解析、生成Excel比较…...

Blocked aria-hidden on an element because its descendant retained focus.

在使用el-popover和el-radio-group实现弹窗选择数据后调用el-popover的doClose()方法时一直报错&#xff01; 经过分析发现el-popover及el-radio__original有aria-hidden属性&#xff0c;具体aria-hidden属性应用自行搜索了解。既然是这个玩意引起的&#xff0c;则在显示时将a…...

MIT开源7B推理模型Satori:用行动思维链进行强化学习,增强自回归搜索

自OpenAI的o1发布以来&#xff0c;研究社区为提升开源LLM的高级推理能力做出了诸多努力&#xff0c;包括使用强大的教师模型进行蒸馏、蒙特卡洛树搜索&#xff08;MCTS&#xff09;以及基于奖励模型的引导搜索等方法。 本研究旨在探索一个新的研究方向&#xff1a;使LLM具备自回…...

神经网络|(九)概率论基础知识-泊松分布及python仿真

【1】引言 在前序学习进程中&#xff0c;我们已经知晓二项分布是多重伯努利分布&#xff0c;二伯努利分布对应的是可以无限重复、结果只有两种可能的随机试验。 相关文章链接为&#xff1a; 神经网络|(八)概率论基础知识-二项分布及python仿真-CSDN博客 上述文章还调用nump…...

机器学习 —— 深入剖析线性回归模型

一、线性回归模型简介 线性回归是机器学习中最为基础的模型之一&#xff0c;主要用于解决回归问题&#xff0c;即预测一个连续的数值。其核心思想是构建线性方程&#xff0c;描述自变量&#xff08;特征&#xff09;和因变量&#xff08;目标值&#xff09;之间的关系。简单来…...

vs封装dll 给C#使用

一&#xff0c;vs创建控制台应用 创建控制台应用得好处时&#xff0c;我们可以自己测试接口&#xff0c;如果接口没有问题&#xff0c;改成dll重新编译一遍就可以。 二&#xff0c; 创建一个c 类&#xff0c;将所需提供得功能 封装到类中。 这样可以将 所有功能&#xff0c;进…...

V8 引擎:深入理解 JavaScript 的执行环境

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…...

JDK 9新特性学习大纲

第1部分&#xff1a;引言与背景 第1章&#xff1a;JDK 9的诞生与目标 1.1 JDK 9的核心目标与设计哲学 1.2 JDK 9的重要更新概览 1.3 兼容性与升级策略 第2部分&#xff1a;模块化系统&#xff08;Project Jigsaw&#xff09; 第2章&#xff1a;模块化基础 2.1 模块化的背景…...

DeepSeek从入门到精通:全面掌握AI大模型的核心能力

文章目录 一、DeepSeek是什么&#xff1f;性能对齐OpenAI-o1正式版 二、Deepseek可以做什么&#xff1f;能力图谱文本生成自然语言理解与分析编程与代码相关常规绘图 三、如何使用DeepSeek&#xff1f;四、DeepSeek从入门到精通推理模型推理大模型非推理大模型 快思慢想&#x…...