- 博客(11)
- 收藏
- 关注
原创 所有权转移机制 —— 面向仓颉的解读与工程实践
对于仓颉这种强调声明式与类型安全的语言,所有权转移机制不仅是内存管理的工具,更是工程级别的设计契约。通过把责任通过类型表达出来、在 API 与异步边界显式化转移点、并提供借用与共享的轻量原语,团队能更稳健地构建复杂 UI、并发任务与资源密集型服务。良好的所有权设计会把运行时的不确定性转化为编译期或审查期的可控规则,从而显著降低生产事故与维护成本。
2025-11-10 11:07:54
322
原创 协变与逆变的应用场景 — 面向仓颉语言的解读与工程实践
协变(out / +):如果Sub是Super的子类型,那么也是(适用于“生产者”场景)。也就是类型参数可以向上替换。逆变(in / -):如果Sub是Super的子类型,那么也是(适用于“消费者”场景)。类型参数可以向下替换。不变(invariant):既非协变也非逆变,常见于读/写都存在的容器。仓颉对这些概念的支持体现在泛型、函数类型与接口声明上。生产者使用协变,消费者使用逆变;读写两用则保持不变(PECS 原则的变种)。
2025-11-10 11:05:28
446
原创 Rust 中多重借用的冲突解决方案深度实践
Rust 的 Borrow Checker 在编译期强制(要么任意数量的&T,要么唯一的&mut T),这就会产生“多重借用冲突”。通过drop等手段,我们可以在保持零成本安全的前提下灵活化解冲突。下面从四个维度展开,帮助你在真实项目中快速定位并消除借用冲突。
2025-10-30 17:17:17
1150
原创 Rust 中借用分割(Borrow Splitting)技巧深度实践
注意unsafe只能在我们绝对确定两个子借用不重叠时使用。务必在中加入运行时检查,以防止未来的代码改动破坏不重叠假设。/// 手动把一个 `&mut [T]` 分割为两个不相交的子切片assert!// SAFETY: 我们保证 `mid` 前后两段不重叠unsafe {println!("{:?}", data);
2025-10-30 17:15:26
1003
原创 Rust 中 Cell 与 RefCell 的使用场景与区别深度解析
Cell<T>轻量、零检查、仅限Copy。适合单值计数、标记位、短生命周期的数值状态。RefCell<T>运行时借用检查、支持任意类型。适用于惰性缓存、内部状态机、只读 API 中的可变更新,尤其在 GUI、单线程业务逻辑中非常常见。两者都只能在单线程环境使用,跨线程时请使用MutexRwLock、原子类型或Arc包装。在实际项目中,先评估是否真的需要内部可变性:如果可以通过普通的&mut完成,优先使用它;只有在业务约束(只读接口、跨所有者共享、懒加载)明确要求时,再选CellRefCell。
2025-10-30 17:11:51
996
原创 Rust 中内部可变性(Interior Mutability)深度实践
内部可变性是 Rust 在安全性 ↔ 灵活性之间的精妙平衡点。它通过UnsafeCell为底层提供“可变的原始内存”,再由CellRefCellMutexRwLockAtomic*等安全包装层在运行时或硬件层实现检查,从而在不牺牲零成本抽象单线程的局部可变CellRefCell跨线程的同步共享MutexRwLockAtomic*一次性懒加载OnceCellLazy掌握这些工具的适用场景、性能特征以及常见陷阱,就能在实际项目中:编写只读 API,却在内部实现高效缓存;构建跨线程的共享状态而不出现数据竞争。
2025-10-30 17:09:02
802
原创 Redis基础知识
1、redis默认有16个数据库,默认使用第0个,可以使用select命令进行切换 2、常用redis命令 (1)flushdb 清空当前数据库 (2)keys * 查看所有的key (3)select 选择数据库 (4)get 查看key对应的value (5)flushall清空所有的数据库 (6)exists 判断是否存在某个key (7)expire设置key的过期时间 (8)move 移除当前的库 (9)type key的数据类型 (10)append 拼接字符串..
2021-09-16 16:39:03
139
原创 Redis的安装
一、Linux下的安装 1 官网下载安装包 2 复制到Linux目录home下(压缩包一般放在home目录下) 3 将压缩包移动到opt目录下(程序安装一般在opt目录下) 4 解压 5 进入到redis的目录下 6 进行安装 7 make一下 8 make install 9 redis的默认安装目录是 usr/local/bin 10 将opt目录下的redis解压包的redis.conf复制到usr/local/bin新建一个配置文件夹config下 ...
2021-09-14 18:03:03
112
原创 NOSQL
1、什么是NOSQL? NoSQL(Not Only Sql),指的是非关系型的数据库。传统的关系型数据库是以表结构来存储数据的,包括了行和列。非关系型数据库是以键值对的形式来保存数据。 2、NOSQL的特点 (1)方便扩展,数据之间没有关系 (2)大数据量高性能(redis一秒写8万次,读取11万) (3)数据类型多种多样,不需要事先设计数据库!随取随用。 3、NOSQL的四大分类 分类 举例 典型应用场景 数据模型 优点 缺点 键值(key-value)
2021-09-14 16:40:04
129
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅