02 2022 档案
摘要:Go的内存逃逸及逃逸分析 Go的内存逃逸 分析内存逃逸之前要搞清楚一件事 我们编写的程序中的函数和局部变量默认是存放在栈上的(补充一点堆上存储的数据的指针 是存放在栈上的 因为指针的大小是可以提前预知的 还有就是Go的基本类型也是存放在栈内的), 而其余的变量是存在堆上的, 栈是由操作系统层面控制
阅读全文
摘要:Go实现简单的数据缓存过期功能(类似Redis Expire) package main import ( "fmt" "sync" "time" ) // kV 存放数据的并发安全的map var kV sync.Map // Set 缓存过期功能实现 类Redis func Set(key in
阅读全文
摘要:Rust 所有权和借用 Rust之所以可以成为万众瞩目的语言, 就是因为其内存安全性. 在以往内存安全几乎全都是通过GC的方式实现, 但是GC会引来性能、CPU以及Stop The World等问题, 在需要高性能的场景是不可以接受的,因此Rust使用一种与众不同的方式 解决内存安全问题: 所有权机
阅读全文
摘要:什么是grpc和protobuf grpc grpc是一个Google开源的高性能、开源和通用的RPC框架,面向移动和HTTP/2设计。目前提供C、Java和Go语言版本, 分别是grpc, grpc-java 和 grpc-go, 其中C语言版本又支持C , C++,Node.js, Pyth
阅读全文
摘要:宏 Rust提供了一个强大的宏, 可进行元编程.看起来和函数很像, 只不过名称末尾有一个! 一句换概括: 用代码生成代码, 控制代码, 扩展代码 写一个最简单的宏 后边加!号的都是宏 // main.rs #[macro_use] mod mymacro; // macro_test 宏 fn ma
阅读全文
摘要:Rust开发 碳达峰、碳中和政策下,开发者可以考虑采用 Rust 为节能做贡献。 第一个程序 fn main() { println!("Hello, world!"); // 带!号的都是宏 并不是函数 } fn main() { let name = "peter"; println!("{}{
阅读全文