ZLSF的博客
  • 首页
  • 归档
  • 关于

Fuzz之初见端倪

模糊测试又称为fuzzing,是一种软件测试技术。其核心概念为自动产生随机输入到一个程序中,并监视程序异常,如崩溃、断言失败,以发现可能的程序错误。 简单来说在该技术下存在一种称之为模糊器的东西通过测试不同的输入来判断程序的输出是否为关键信息以保存对该程序的有效输入。 fuzzing三组件:种子选择、突变、覆盖范围。 例: main.c: 1234567891011121314int main()
2026-03-30

学习rust_day18

Macro (宏) Macro“宏”,在Rust中是一个“家族”,宏主要分为两大类: 声明式宏(Declarative Macros),也就是通过macro_rules!定义的宏。 过程宏(Procedural Macros),它又可以细分为三种不同的形式: 自定义的[derive]宏,它们用于结构体(struct)或枚举(enum)上,配合derive属性,自动为类型生成一些代码。 类似属性的
2026-03-28

学习rust_day17

Unsafe Rust Unsafe Rust:隐藏在安全背后的强大能力 Rust默认保证内存安全 Unsafe Rust不强制这些保证 用于更底层的系统编程或绕过编译器限制 Unsafe Rust的五个超能力 解引用裸/原始指针 调用不安全函数或方法 访问或修改可变静态变量 实现不安全的trait 访问union的字段 Unsafe≠不安全 borrow checker仍然工
2026-03-27

学习rust_day16

模式匹配 模式Pattern Rust中的特殊语法,用于匹配简单或复杂类型的结构 例如:与match耒表达式和其他构造结合,增强程序控制流程 模式的组成 字面值(Literals):例如数字或字符串 解构数据结构:数组、枚举、结构体、元组等 变量(Variables):命名的变量 通配符(Vildcards):_表示任意值 占位符(Placeholders):尚未具体定义的部分 使用方
2026-03-26

学习rust_day15

面向对象编程特性 隐藏实现细节的封装对象的实现细节不能被使用该对象的代码访问 pub关键字来决定我们代码中的哪些模块、类型、函数和方法应该是公共的 默认情况下其他所有内容都是私有的 继承作为类型系统和代码共享 继承是一种机制,通过它一个对象可以继承另一个对象定义中的元素,从而获得父对象的数据和行为,而无需再次定义它们 在不使用宏的情况下,没有办法定义一个继承父结构体的字段和方法实现的结构体
2026-03-25

学习rust_day14

Streams “消息传递”中异步的recv方法会随着时间产生一系列项目,这称为stream StreamExt Ext是Rust社区中使用另外一个trait扩展某个trait的常见模式 简单来说 Stream trait定义了一个低级接口,有效地结合了Iterator和Future traits StreamExt在Stream之上提供了一组更高级的APl,包括next方法以及类似于Itera
2026-03-24

学习rust_day13

异步编程 并行性Parallelism:同时执行多个操作 并发性Concurrency:在操作间进行切换 阻塞操作Blocking Operations:阻止程序继续执行直到操作完成 非阻塞操作Non-blocking Operations:允许程序在等待时执行其他任务 操作类型 CPU密集型(CPU-bound):受处理器能力限制(如视频导出) IO密集型O-bound):受输入/
2026-03-22

学习rust_day12

引用循环可能导致内存泄漏 内存泄漏 永远不会被清理掉的内存 Rust的安全保障使得意外的内存泄漏很难发生,但不是不可能 完全防止内存泄漏并不是Rust的保证之一 一> 内存泄漏是内存安全的 例如:通过Rc和RefCell就可创建出循环引用,导致内存泄漏 各个项的引用数永不为0 例: 123456789101112131415161718192021222324252627282930
2026-03-21

学习rust_day11

Cargo WorkspacesWorkspace(工作空间)是一组共享同一个Cargo.lock文件和输出目录的包Vorkspace例子: 一个Binary crate: main 两个Library Crate: add_one add two 例: 在项目顶级文件夹下创建Cargo.toml: 12345[workspace]members = [ "adder&qu
2026-03-20

学习rust_day10

零成本抽象(zero-cost abstractions) 迭代器虽然是高级抽象,但在编译后,它们被转换成了与你手写低级代码几乎相同的代码。 迭代器是Rust的零成本抽象之一,这意味着使用这种抽象不会引入任何额外的运行时开销。 结论:在Rust中可放心使用迭代器和闭包等高级特性,它们提供了更高层次的代码抽象,同时保持着极高的运行时性能,不会带来性能损失。 自定义构建与发布配置 Cargo提供
2026-03-20
123

搜索

by ZLSF
总访问量 次 总访客数 人