自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(47)
  • 资源 (1)
  • 收藏
  • 关注

原创 【浅析Rust语言可变关键字在不同位置上的含义】

rust编程语言,关键字mut 在不同位置上的确切含义

2022-06-01 18:35:30 226

原创 rust语言trait特性综述,老于聊技术

Trait为rust强大的抽象表达能力注入了灵魂,融入rust各个角落, rust集众家之长,去其糟粕,若是没有了trait, 我认为rust的优雅将黯然失色!rust中各种约束和限定主要由trait来表达,系统优雅严密,好比胶水,将泛型、并发、异步、内存管理等等诸多语言特性优雅地融合到一起,设计可谓精妙。定义一个Traitpub trait Summary { fn summarize(&self) -> String; //可以定义许多接口方法,类似于ja...

2020-11-01 11:34:14 2769 1

原创 Rust 析构函数

Trait std::ops::Drop 如果你的自定义类型需要自己的析构函数,则只要实现std::ops::Drop trait 即可。例如: struct HasDrop; //你的自定义类型。​impl Drop for HasDrop { fn drop(&mut self) { //std::ops::Drop trait 只有一个方法drop。 println!("Dropping!"); //当你的自定义类型变量离开了`作用域`时...

2020-06-03 21:11:11 1283

原创 Too -many-lists学习摘要

IterMute实现要点难点 ...pub struct List<T> { head: Link<T>,}​type Link<T> = Option<Box<Node<T>>>;​struct Node<T> { elem: T, next: Link<T>,}.........pub struct IterMut<'a, T> { ...

2020-05-30 20:58:00 449

原创 A Guide to Global Data in Rust-学习笔记

为什么需要Global Data (1) 应用程序的配置。(2) 例如全局变量,不需要一层层函数传参。(3) 数据库链接,连接池以及其他网络资源。(4) 日志。(5) 例如在build.rs中生成Rust代码,如:date/time/git commit rev. 权衡取舍 (1) 编译时/运行时 load global data value.(2) 只读/可写。(3) 生命周期 : 要'static , 还是局部一点。(4) 创建到栈上, 还...

2020-05-28 21:47:28 218

原创 Rust Iterator迭代器-学习随笔

我认为熟记吃透Rust Option、Result、Iterator这3块的方法集,非常有助于写出简洁高效符合Rust Style的代码!原理性的东西好多前辈都讲过了,我就不啰嗦了!这三块的方法功用必须要记牢!我收集了几个常用方法的小例子,方便查询记忆而已。 iter() => &T iter_mut() => &mut T into_iter() => T //不一定为T, 也可能是&T、&mut T ;由into_iter()

2020-05-28 10:07:06 788

原创 Rust:Structuring and handling errors in 2020学习笔记

Rust: Structuring and handling errors in 2020- 学习笔记直接上菜, 首先介绍两个新的Crate用于Rust Error处理,anyhow 和thiserror, 其代表Rust Error处理的最新探索成果! anyhow面向Application应用程序开发, thiserror面向Library开发, 为什么一个Rust Error处理需要分成两个Crate来处理呢?! 理由如下:(1) 库应专注于生成有意义的结构化错误类型/变体。...

2020-05-25 16:42:56 228

原创 Rust FFI (C vs Rust)学习杂记

前言"FFI"是" Foreign Function Interface"的缩写,大意为不同编程语言所写程序间的相互调用。鉴于C语言事实上是编程语言界的万国通,世界通用语,所以本文主要围绕着C和Rust之间的互通来学习。单刀直入,话不啰嗦,好比学外语, 先要从认字开始, 对于编程语言来说就是各种“基础类型”, 因为类型代表了:可操作集和布局, 有人会疑问“类型布局”是个什么东西?! 好吧, 换个词“房屋布局”, 这词的意思,您好理解吧!对!代表了:位置、大小、方向,排列、顺序等信息!在类型的基础.

2020-05-24 11:59:40 2068

原创 Rust 位操作(Bitwise Operations )

基础篇 fn main() { //(1)最原始直接基础的位操作方法。 let mut byte: u8 = 0b0000_0000; println!("0b{:08b}", byte);​ byte |= 0b0000_1000; // Set a bit println!("0b{:08b}", byte);​ b...

2020-05-08 16:05:09 3116

原创 Rust enum 杂记

rust enum是典型的代数数据类型系统ADT, 可以传参,可以组合等,非常强大易用。 enum 定义 enum WebEvent { // An `enum` may either be `unit-like`, //类似于:struct PageLoad ; // 一个empty struct。 PageLoad, PageUnload, ...

2020-05-03 16:55:46 806

原创 Rust 不允许C++方式的函数重载overloading

C++方式的函数重载,即同一个函数名以及多个不同的形参类型和个数(不包括返回值类型), 以Ad-hoc(临时,随时,不用事先深思熟虑)的方式来实现函数的重载!功能非常强大, 同时也是惹祸根源之一!Rust 只允许通过预先定义和实现Trait的方式来近似模拟C++ ad-hoc 函数重载!比如Rust允许部分运算符重载,比如:std::ops::Add Trait , 只要为你的自定义类型实现了...

2020-04-29 13:31:17 698

原创 Kademlia Lookup nodes各种算法收集分析

https://github.com/cfromknecht/kademlia /findnode.go IterativeFindNode //for golangfunc (k *Kademlia) IterativeFindNode(target NodeID, delta int, final chan Contacts) { done := make(chan ...

2020-04-26 18:48:03 273

原创 Rust async block-future-task::spawn-how to ref self

综述 rust有借用的概念,代码中具体称为引用,如:&str, &mut String, &'a str, &'b mut String, 而且每一个变量都有一个关键属性:life time生命周期,代表每一个变量从创建到销毁的全过程!引用变量(可理解为c语言中指针变量)同样有自己的生命周期!通俗地讲就是存活时间,通常由变量所在的词法作用域决定!而且每...

2020-03-17 17:20:41 771

原创 Rust tokio::select学习杂记

Rust tokio::select学习杂记 前言 Linux系统有select/poll/epoll等,主要用于监控各种fd上发生的各种event, 从而识别派发处理。golang语言中也有一个select,作用相似,主要监控channel上发生的可读可写event。 对于rust tokio/async_std/crossbeam/futures等也需要一个select去统一集中监控...

2020-03-16 12:32:37 2420

原创 How to verify the peer socket is dead?

前言对于TCP/IP网络编程而言,我们在读写数据时,当然希望获知对端是否还活着!量子纠缠态当然很是理想,但是现实网络世界中,两个不可见端点互相通讯,确定对方还活着的方法就是不断询问!我问-你答, 我问-你不答,我就当你死了, 所以对于TCP/IP网络编程而言, read最好有timeout机制保护,避免server无限制浪费资源去等待可能早已失效的对端;若业务层需要及时感知对端已死, 则需要心跳...

2020-03-14 08:27:45 177

原创 Rust mio 0.6v 学习杂记

内容详见:https://github.com/yujinliang/rust_learn/tree/master/mio

2020-03-13 21:36:08 217

原创 Rust模块的理解

RUST模块的理解 每一个crate就是一个根模块。如:exp, lip, lip1, lip2, lip3。 独立的一个文件就是一个mod,文件名就是mod名;但是main.rs, lib.rs, mod.rs除外,mod.rs的模块名就是其所在目录的名字; 而main.rs, lib.rs 的目录结构,如:exp/src/main.rs或 lip/src/lib.rs ;...

2020-03-13 21:20:58 1511

原创 Rust 协变,逆变,不变

Rust 协变,逆变,不变对于逆变和协变的判断,有时候观察角度不同,结论可能不同,不必纠结,明白原理就好。这个笔记是我学习随笔,不严谨,也没有多方考证,只是记录一下自己的理解,以备他日进一步考证!在rust中, 'a : 'b 表达'a为'b的子类,'b为父类,子类生命周期大于等于父类。一般面向对象编程中涉及父类、子类、型变等概念, 用于表达父类与子类之间的相互替代关系。型...

2020-03-13 16:27:17 1637 2

原创 Panic IN Rust

Option::None and Result::Err => unwrap() expect() to panic. Panicking will unwind the stack, running destructors and ensuring that memory is cleaned up. Abort does not do this, and relies...

2020-03-13 16:16:33 540

原创 Linux Signal 处理 with Rust

Linux Signal 特点: 异步性、并发性、无序性。POSIX.1允许系统递送该信号一次或多次。Linux是这样实现的:常规信号在递达之前产生多次只计一次,而实时信号在递达之前产生多次可以依次放在一个队列里。在单线程时代,编写信号处理程序就是一件棘手的事情,更何况多线程时代,由于Signal会打断正在运行的线程,包括Signal handler也会被其后的信号打断!所以Sign...

2020-03-13 15:49:27 768

原创 Rust Option and Result 杂记

https://github.com/yujinliang/rust_learn ? 如何向外传递错误 use std::io;use std::io::Read;use std::fs::File;​fn read_username_from_file() -> Result<String, io::Error> {​let f = File::ope...

2020-03-13 15:32:39 1029

原创 Golang 随笔杂谈

本想着写完,但是琐事太多,累了!换个活法,开个小店,希望大家来捧场。我的微店:https://weidian.com/?userid=423856015&wfr=wechatpo_keywords_shop我的公众号:lingzhuge8866最近我迷上了Rust语言和区块链,作为C++入行的我还是很难接受GC类语言,C++程序员对于性能效率有着本能地渴望和追求!但是C++却又......

2020-03-13 13:43:38 1126

原创 go语言必读经典汇集

go语言必读经典

2016-08-23 19:40:22 1855

原创 go语言接口和方法集问题笔记

go语言接口, 与非接口类型, 在调用方法集中的方法时,会有很大的不同, 更严格。

2016-08-23 11:37:33 2877

原创 go语言方法Value Receiver, Pointer Receiver各种不同情况的实验笔记

go语言, 方法, value receiver, pointer receiver实验笔记

2016-08-16 09:40:29 3671

原创 Etcd client golang example code

Etcd client golang example code。

2016-05-28 20:46:19 5593

翻译 Etcd操作简单介绍

Etcd操作简单介绍.

2016-05-28 14:32:16 6351

翻译 Futures/Promises Golang方式实现

Futures/Promises Golang Go语言方式实现.

2016-05-28 10:34:28 1490

翻译 go语言关于零值的定义

go语言关于零值的定义

2016-03-27 09:46:57 4471

原创 go语言捕获panic异常并转化为error

go语言捕获panic异常并转化为error

2016-03-27 09:40:02 6061

原创 go语言defer执行时机简单分析

go语言defer执行时机简单分析

2016-03-26 14:13:32 2402

翻译 go语言闭包如何捕获参数

go语言闭包如何捕获参数

2016-03-26 07:57:32 2097 1

原创 go语言映射map的线程协程安全问题

go语言映射map的线程协程安全问题

2016-03-25 14:54:45 9092

原创 go语言切片slice的线程协程安全问题

go语言切片slice的线程协程安全问题

2016-03-25 14:08:19 11522

原创 go语言闭包,匿名函数,变量使用

go语言闭包,匿名函数,变量使用

2016-03-23 06:03:47 3144

原创 go语言的初始化顺序,包,变量,init

go语言的初始化顺序,包,变量,init

2016-03-21 17:21:38 13349 2

原创 go语言cgo -- C与Go互调

go语言cgo -- C与Go互调

2016-03-20 15:31:54 1829 1

原创 go语言select关注点

go语言select关注点,select坑。

2016-03-17 13:31:04 1393

原创 go语言channel关注点

go语言channel关注点整理笔记

2016-03-16 19:15:20 876

转载 Graceful Restart in Golang

在go语言中,如何优雅地重启http服务器。

2016-03-15 09:10:35 1520

Rust FFI C/C++ &amp; Rust 互操作

这是2020左右在学习Rust FFI时写的一个学习随笔, 扔了怪可惜, 放出来也许有点用。 c/c++ and rust 互调。

2022-06-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除