Luyoung
  • 首页
  • 归档
  • 分类
  • 标签
  • 关于
Rust 学习笔记(五):Box、match 与所有权

Rust 学习笔记(五):Box、match 与所有权

Box 的核心概念1. 堆分配 Box 将数据存储在堆上而不是栈上 栈上只保留指向堆数据的指针 解决栈空间有限的问题,特别是对于大对象 2. 所有权机制 Box 遵循 Rust 的所有权规则 当 Box 离开作用域时,会自动释放其内存 实现 Drop trait,确保内存安全 1234{ let b = Box::new(5); // 在堆上分配 // 使用 b...&#
2025-09-27
Programming Languages
#Rust #Box #ownership
Rust 学习笔记(四):泛型与 Trait

Rust 学习笔记(四):泛型与 Trait

一、泛型(Generics)基本概念泛型允许我们编写可复用的代码,这些代码可以处理多种类型而不需要为每种类型重写逻辑。通过泛型,我们可以创建类型参数化的函数、结构体、枚举和方法。 核心价值 代码复用:避免为不同类型重复编写相同逻辑 类型安全:编译时类型检查 零运行时开销:编译时生成具体类型代码 基本用法1. 泛型函数1234567891011121314// 比较两个值并返回较大的值fn lar
2025-09-27
Programming Languages
#Rust #generics #trait
Rust 学习笔记(二):HashMap 基础与实践

Rust 学习笔记(二):HashMap 基础与实践

HashMapRust 的 HashMap 是一个基于哈希表的键值对集合,它提供了高效的数据查找、插入和删除操作(平均时间复杂度 O(1))。它是 Rust 标准库 std::collections 的一部分,使用前需要引入。 核心概念 **键值对 (Key-Value Pair)**: 每个元素由一个唯一的 key 和对应的 value 组成。 **所有权 (Ownership)**: 插入时
2025-09-26
Programming Languages
#Rust #HashMap #collections
Rust 学习笔记(三):Vector 基础与常用操作

Rust 学习笔记(三):Vector 基础与常用操作

一、Vector 基础特性 动态大小:可在运行时增长或缩小 堆分配:元素存储在堆内存中 类型安全:所有元素必须是相同类型 T 所有权管理:Vector 拥有其元素的所有权 二、创建 Vector 的多种方式1. 使用 Vec::new()12let mut v: Vec<i32> = Vec::new(); // 指定类型v.push(1); // 添加元素 2. 使用 vec!
2025-09-26
Programming Languages
#Rust #collections #Vec
Rust 学习笔记(一):struct、enum、String 与 module

Rust 学习笔记(一):struct、enum、String 与 module

前言这是第二次学习 Rust,上一次学习到一半就去忙别的事情了,半年过去了,感觉忘得差不多了(不用就会忘)。为了防止再次忘记,这次一边学习一边记录。主要基于 rustlings 来学习。 structstruct 具体包括: Classic Structs(经典结构体) Tuple Structs(元组结构体) Unit-like Structs(类似单元的结构体) Classic Struc
2025-09-24
Programming Languages
#struct #Rust #module
二进制安全入门(一):x64 函数调用与 ROP 攻击

二进制安全入门(一):x64 函数调用与 ROP 攻击

基于 x64 的 Linux 函数调用过程caller 在 call 以及 call 之前、callee 在 ret 以及 ret之前都会做一些事情,以有序得执行程序。 比如,对于 main 函数调用 add_ints: 123456789NOINLINE long add_ints(long x, long y, long z) { // 触发 RDI, RSI, RDX
2025-09-02
Security
#binary security #ROP #x86-64
LA 挑战赛记录(12):龙芯杯团体赛复盘

LA 挑战赛记录(12):龙芯杯团体赛复盘

时间线以下时间线根据仓库 commit 来写: 4 月 1 号,开始建立仓库并搭建开发环境 5 月中旬,完成了绝大部分指令,接入 chiplab 6 月初,开始做 cache 6 月中旬,成功通过 rtthread 等测试程序 7 月 1 号,经过不断地 debug,终于在 chiplab 仿真环境中启动 linux 7 月 24 号,成功在fpga 下板启动 linux 7 月 27 号,重构
2025-08-26
Computer Architecture
#retrospective #LoongArch #Loongson Cup
GLCC 万众一芯单元验证(四):异步环境与 DUT 绑定

GLCC 万众一芯单元验证(四):异步环境与 DUT 绑定

前言个人感觉学习 Toffee 的话,还是看 Toffee 的 官方文档 比较好。本文将会就我本人的理解,写一点需要重点理解的东西。 异步环境异步是符合真实的硬件运行逻辑的,因为芯片中的电路在每一个时钟周期后,所有的引脚信号都会更新。 1234567891011121314import toffeefrom toffee.triggers import *async my_coro(dut):
2025-08-07
Hardware Verification
#GLCC #Toffee #async testing
ChipLab 环境打包:制作 Docker 镜像

ChipLab 环境打包:制作 Docker 镜像

前言由于 chiplab 在配置的时候需要将工具一一准备好,还有某些库比如随机测试,还需要自己下载。比较麻烦,于是我将一个配置好的环境打包成 docker 镜像,这样可以很方便得就能立即使用。 docker 镜像制作首先在 chiplab 中写一个简单的 Dockerfile: 1234567891011121314151617181920212223242526272829303132FROM
2025-08-06
Tooling
#ChipLab #Docker #tooling
GLCC 万众一芯单元验证(三):Adder 模块与 Bundle 设计

GLCC 万众一芯单元验证(三):Adder 模块与 Bundle 设计

前言本来应该做收集功能覆盖率,但是感觉难度有点高,还是先做一下 Toffee 的官方的 example,快速熟悉一下。 Adder 模块这个例子是一个加法器,它是一个组合电路: 12345678910111213module Adder #( parameter WIDTH = 64) ( input [WIDTH-1:0] io_a, input [WIDTH-1:0] i
2025-08-06
Hardware Verification
#GLCC #Toffee #unit verification
1…678910…31

搜索

Hexo Fluid
总访问量 次 总访客数 人