自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(266)
  • 资源 (6)
  • 收藏
  • 关注

原创 windows下c++调用Rust库的例子

环境准备安装mingw,我的安装的mingw64,目录为: D:/tools/mingw64/安装rust,此步需要注意,不要选择默认安装,应该如下:Current installation options: default host triple: x86_64-pc-windows-msvc default toolchain: stable ...

2020-04-27 16:02:21 3429

原创 Rust编程知识拾遗:Rust 编程,Option 学习

视频地址头条地址:https://www.ixigua.com/i6765442674582356483B站地址:https://www.bilibili.com/video/av78062009?p=1网易云课堂地址:https://study.163.com/course/introduction.htm?courseId=1209596906#/courseDetail?tab=1g...

2020-04-08 14:05:19 2260 2

原创 用Rust编写web server,实现线程池的清除

在之前用线程池实现的web server中,每个工作线程中通过loop进行循环,从channel的接收端等待任务,然后执行。但是代码中没有提供一种机制,来通知这些工作线程结束。本节就是在之前的基础上,来实现线程池对象的正确清除。通过为ThreadPool实现Drop trait来实现线程池对象清除修改Worker如下:struct Worker { id: usize, ...

2020-04-05 12:40:30 1557

原创 用Rust实现一个多线程的web server

在本文之前,我们用Rust实现一个单线程的web server的例子,但是单线程的web server不够高效,所以本篇文章就来实现一个多线程的例子。单线程web server存在的问题请求只能串行处理,也就是说当第一个连结处理完之前不会处理第二个连结。考虑如下例子:use std::net::{TcpListener, TcpStream};use std::io::{Read,...

2020-03-31 08:34:31 1327

原创 用Rust创建一个简单的webserver

目的本节的例子教大家用Rust语言创建一个简单的web server程序。web server 中涉及到的两个主要协议是 超文本传输协议(Hypertext Transfer Protocol,HTTP)和 传输控制协议(Transmission Control Protocol,TCP)。这两者都是 请求-响应(request-response)协议,也就是说,有 客户端(client)...

2020-03-24 20:21:08 1454

原创 Rust 编程视频教程地址、源码 GitHub 地址说明

视频地址基础部分地址头条地址:https://www.ixigua.com/i6765442674582356483B站地址:https://www.bilibili.com/video/av78062009?p=1网易云课堂地址:https://study.163.com/course/introduction.htm?courseId=1209596906#/courseDetail?...

2020-01-27 18:54:01 389

原创 关于区块链的一些澄清

缘起从开始研究比特币源码算起,我接触区块链技术已经两年多了,某种程度上也算是区块链技术的老鸟了。一直专注于技术,所以对有些关于区块链的表述不怎么在意,昨天偶尔的和别人讨论,我觉得我有必要总结一下,以便在以后关于区块链进行更好的表述。关于防止篡改各种新闻媒体关于区块链提的最多的,估计就是防止篡改了,针对防篡改,我主要想说明以下两点:源头问题但是我们在一些设计方案中,应用区块链记录数据时,可...

2019-12-27 10:02:39 574

原创 为什么要学习 Rust

缘起为什么学习 Rust?于我而言,也许是两年前当我迈入区块链的第一脚时就已经决定了。选择一门编程语言是很困难的,但却又是重要的,其重要程度绝对不亚于你选择在哪个地方买房子或者是你选择在哪个地方扎根发展。因为当你开始学习一门编程语言的时候,不仅仅是你选择了这么编程语言,同时还选择了编程语言相关的技术领域。我和 Rust 的缘分来自于对 libra 的学习,然后就被它吸引了。虽然很多时候选择编...

2019-12-12 20:05:19 674

原创 substrate轻松学3:substrate构建一条链的体验

substrate搭建一条链

2022-07-04 14:24:30 2867 1

原创 substrate轻松学2:区块链与substrate

substrate轻松学2,区块链和substrate的关系

2022-06-28 15:53:26 3120

原创 substrate轻松学1:前言

substrate轻松学系列,让你轻松学会用substrate开发区块链

2022-06-18 16:15:08 3218 1

原创 004 Web Assembly康威游戏之优化

0 介绍视频地址:https://www.bilibili.com/video/BV1eg411g7c8相关源码:https://github.com/anonymousGiga/Rust-and-Web-Assembly1 说明在上一节的实现中,我们是在Rust中实现了填充的内容,然后让wasm bindgen转换为一个有效的js字符串,这样就产生了不必要的副本。因为js代码已经知道宇宙的宽度和高度,因此可以直接读取构成cell的web assembly内存。另外我们将切换到Canvas API,

2022-03-11 08:43:52 242

原创 003 Rust Assembly之实现康威生命游戏

0 介绍视频地址:https://www.bilibili.com/video/BV1eg411g7c8相关源码:https://github.com/anonymousGiga/Rust-and-Web-Assembly本节,我们就用WebAssembly实现一个简单的游戏。1 游戏规则在一个二维方格中,每个方格的状态都为“生”或者“死”。每个方格对应的就是一个细胞,每个细胞和它的周围的八个方格相邻。在每个时间推移过程中,都会发生以下转换:1、 任何少于两个活邻居的活细胞都会死亡。2、 任何

2022-03-08 08:28:46 300

原创 002 安装Rust和WebAssembly工具链和helloworld

0 介绍视频地址:https://www.bilibili.com/video/BV1eg411g7c8相关源码:https://github.com/anonymousGiga/Rust-and-Web-Assembly1 环境安装1、安装Rust工具链,可以参考https://www.rust-lang.org/tools/install为了很好的使用Rust和WebAssembly,我们需要Rust 1.3以上的稳定版。2、安装wasm-packcurl https://rustwasm

2022-03-07 09:52:31 518

原创 让代码丝滑般跳转,rust-analyzer,你值得拥有

1 RLS触怒了我我是一个专一的人,从学习Rust起就在vscode中使用rls作为跳转插件(主要原因其实是懒),如果不是今天它彻底触怒了我,恐怕我还会对它继续钟情下去。事情的原委是这样的,今天下载了某开源项目的代码,使用vscode打开其工程,点击rls安装的时候发现安装总是失败。本来这是一件小事,但是想起这些年来使用rls受的委屈,终于促使我决定将它换掉。听到大家都非常推荐rust-analyzer,于是我决定试试,不过真是不试不知道,一试吓一跳。2 使用rust-analyzer,构建丝滑般跳

2022-03-05 17:32:29 7701 3

原创 001 Rust和WebAssembly初体验

0 介绍视频地址:https://www.bilibili.com/video/BV1eg411g7c8相关源码:https://github.com/anonymousGiga/Rust-and-Web-Assembly1 为何是Rust和WebAssembly?低水平控制与高水平的人体工程学JavaScript Web应用程序很难获得和保持可靠的性能。Rust为程序员提供了低级别的控制和可靠的性能。较小的.wasm代码大小非常重要,因为 .wasm必须通过网络下载。Rust没有运

2022-02-23 18:59:12 352

原创 025 通过链表学Rust之使用栈实现双端队列

介绍视频地址:https://www.bilibili.com/video/av78062009/相关源码:https://github.com/anonymousGiga/Rust-link-list详细内容本节我们使用栈来实现双端队列。实现栈栈的实现基本上和最开始的单链表的实现差不多,如下:pub struct Stack<T> { head: Link<T>,}type Link<T> = Option<Box<Node<T&g

2022-02-17 08:50:48 262

原创 024 通过链表学Rust之非安全方式实现链表2

介绍视频地址:https://www.bilibili.com/video/av78062009/相关源码:https://github.com/anonymousGiga/Rust-link-list详细内容本节实现剩余的迭代器、Drop等。IntoIter实现代码如下://实现IntoIterpub struct IntoIter<T> (List<T>);impl<T> List<T> { pub fn into_iter(self

2022-02-14 08:41:33 130

原创 023 通过链表学Rust之非安全方式实现链表1

介绍视频地址:https://www.bilibili.com/video/av78062009/相关源码:https://github.com/anonymousGiga/Rust-link-list链表定义我们重新定义链表如下:pub struct List<T> { head: Link<T>, tail: *mut Node<T>,}type Link<T> = Option<Box<Node<T>>&

2022-02-07 08:23:40 429

原创 022 通过链表学Rust之为什么要非安全的单链表

介绍视频地址:https://www.bilibili.com/video/av78062009/相关源码:https://github.com/anonymousGiga/Rust-link-list详细内容前面我们都是使用安全的Rust编程来实现链表,但是实现的时候难度确实比较大。从本节开始,我们开始用非安全编程的方式来实现链表。栈和队列的区别是,栈是先进后出,队列是先进先出。对应到两者的push和pop函数,区别如下://栈input list:[Some(ptr)] -> (A

2022-02-03 10:02:10 2014

原创 021 通过链表学Rust之实现迭代器

介绍视频地址:https://www.bilibili.com/video/av78062009/相关源码:https://github.com/anonymousGiga/Rust-link-list详细内容本节我们来为我们的双链表实现迭代器。IntoIter实现代码如下://实现IntoIterpub struct IntoIter<T>(List<T>);impl<T> List<T> { pub fn into_iter(self

2022-02-02 11:25:53 244

原创 020 通过链表学Rust之push_back和pop_back等

介绍视频地址:https://www.bilibili.com/video/av78062009/相关源码:https://github.com/anonymousGiga/Rust-link-list详细内容之前我们实现了push_front、pop_front、peek_front,本节将实现push_back、pop_back、peek_back。这些函数的实现和之前的实现都差不多太多,只需要进行如下替换即可:tail <-> headnext <-> prev

2021-12-26 18:01:54 491

原创 019 通过链表学Rust之双链表实现Peek

介绍视频地址:https://www.bilibili.com/video/av78062009/相关源码:https://github.com/anonymousGiga/Rust-link-list详细内容本节我们实现双链表的Peek。实现peek根据我们在之前实现单链表的经验,我们很容易想到我们的peek函数怎么实现,如下: pub fn peek_front(&self) -> Option<&T> { self.head.as_ref().map

2021-10-31 14:57:48 278

原创 018 通过链表学Rust之实现pop front

介绍视频地址:https://www.bilibili.com/video/av78062009/相关源码:https://github.com/anonymousGiga/Rust-link-list详细内容pop front上一节,我们给双链表实现了new和push front方法,本节我们实现pop front,代码如下: pub fn pop_front(&mut self) -> Option<T> { self.head.take().map(|node

2021-10-31 14:56:21 293

原创 017 通过链表学Rust之实现元素添加

介绍视频地址:https://www.bilibili.com/video/av78062009/相关源码:https://github.com/anonymousGiga/Rust-link-list详细内容在上一节我们定义了我们的双链表,本节我们来给双链表创建new函数和pushfront函数。newimpl<T> Node<T> { fn new(elem: T) -> Rc<RefCell<Self>> { Rc::new(Re

2021-10-22 22:40:49 322

原创 016 通过链表学习Rust之安全的双链表布局

介绍视频地址:https://www.bilibili.com/video/av78062009/相关源码:https://github.com/anonymousGiga/Rust-link-list详细内容本节开始,我们将设计一个安全的双端队列。双端队列的布局我们主要使用到Rc和RefCell。RcRc: 通过Rc指针可以共享数据。Rust语言因为有所有权的概念,所以,数据失去了所有权之后,后面就无法使用该数据,而Rc就是解决此类问题的。而Rc指针指向的值是只读性质的,不能够修改。RefC

2021-10-10 10:15:16 203

原创 015 通过链表学习Rust之使用Arc

介绍视频地址:https://www.bilibili.com/video/av78062009/相关源码:https://github.com/anonymousGiga/Rust-link-list详细内容上节我们实现的链表是非线程安全的,因为Rc引用计数的修改不是原子的,如果要修改成线程安全的,我们需要使用Arc,同时类型必须实现Send和Sync两个trait。我们需要将Rc修改成Arc即可。...

2021-10-09 22:53:31 274

原创 014 通过链表学习Rust之持久化链表的Drop

介绍视频地址:https://www.bilibili.com/video/av78062009/相关源码:https://github.com/anonymousGiga/Rust-link-list详细内容本节我们实现可持久化链表的Drop。我们在之前实现可变链表的Drop的时候,我们是使用循环来进行回收的。这里我们如果采用统一的方法,是行不通的,因为我们此处通过Rc进行共享,必须等待引用计数为0 才能将数据从Rc中移除。Drop的实现Drop实现如下://实现Dropimpl<T

2021-10-07 09:26:37 191

原创 013 通过链表学习Rust之实现链表的通用函数

介绍视频地址:https://www.bilibili.com/video/av78062009/相关源码:https://github.com/anonymousGiga/Rust-link-list详细内容本节我们就在上一节定义的链表的基础上来实现链表的通用函数。因为本章的链表更多的操作链表的头尾和尾,所以我们在通用函数中不提供push和pop,而是提供append和tail函数。appendappend函数类似于之前我们实现的push,但是因为现在我们使用的Rc而不是Box,所以代码上略

2021-10-06 09:11:00 209

原创 012 通过链表学习Rust之持久化单链表

介绍视频地址:https://www.bilibili.com/video/av78062009/相关源码:https://github.com/anonymousGiga/Rust-link-list详细内容在之前我们已经实现了一个单链表,从这节开始,我们将实现一个持久化的单链表。通过持久化的单链表,可以让其他人来共享使用链表的数据。布局考虑如下例子:list1 = A -> B -> C -> Dlist2 = tail(list1) = B -> C ->

2021-10-05 09:16:41 147

原创 011 通过链表学习Rust之IterMut

介绍视频地址:https://www.bilibili.com/video/av78062009/相关源码:https://github.com/anonymousGiga/Rust-link-list详细内容本节我们为链表实现IterMut,既可以对元素进行可变引用的迭代器。iter_mut实现的代码如下://实现IterMutpub struct IterMut<'a, T> { next: Option<&'a mut Node<T>>,

2021-09-23 21:36:45 283

原创 010 通过链表学习Rust之Iter

介绍视频地址:https://www.bilibili.com/video/av78062009/相关源码:https://github.com/anonymousGiga/Rust-link-list详细内容本节我们为链表实现Iter,Iter主要是对元素的引用,因此本部分内容涉及到的Rust的知识点主要是生命周期。关于生命周期相关的知识点请看B站Rust进阶部分的讲解。Iter代码如下://实现Iterpub struct Iter<'a, T> { next: Opti

2021-09-22 19:59:55 309

原创 009 通过链表学习Rust之IntoIter

介绍视频地址:https://www.bilibili.com/video/av78062009/相关源码:https://github.com/anonymousGiga/Rust-link-list详细内容本节我们为链表实现迭代器。迭代器Trait的定义如下:pub trait Iterator { type Item; fn next(&mut self) -> Option<Self::Item>;}对于我们来说,我们要实现以下三个迭代器:

2021-09-18 21:49:27 371

原创 008 通过链表学习Rust之实现Peek函数

介绍视频地址:https://www.bilibili.com/video/av78062009/相关源码:https://github.com/anonymousGiga/Rust-link-list详细内容在之前的链表实现中,我们没有实现获取表头元素的peek方法,本节尝试去实现它。peek根据我们之前学习的知识,可以快速的写出代码如下: pub fn peek(&self) -> Option<&T> { self.head.map(|node| {

2021-09-16 21:01:55 210

原创 007 通过链表学Rust之支持泛型

介绍视频地址:https://www.bilibili.com/video/av78062009/相关源码:https://github.com/anonymousGiga/Rust-link-list详细内容本节我们让我们的链表支持泛型。首先修改我们的定义如下:pub struct List<T> { head: Link<T>,}type Link<T> = Option<Box<Node<T>>>;struc

2021-09-12 22:02:03 120

原创 006 通过链表学Rust之使用Option

介绍视频地址:https://www.bilibili.com/video/av78062009/相关源码:https://github.com/anonymousGiga/Rust-link-list微信公众号:令狐一冲详细内容在之前的章节中,我们实现了一个最小的可运行的单链表,然而这仅仅只是一个最小的可运行的链表。从本节开始,我们将创建一个更加完善的链表,这个链表能处理任何类型的元素,并且支持迭代器。使用Option在之前的章节中,我们定义Link如下:enum Link { E

2021-09-09 21:09:49 326

原创 005 通过链表学Rust之实现Drop

介绍视频地址:https://www.bilibili.com/video/av78062009/相关源码:https://github.com/anonymousGiga/Rust-link-list详细内容本节我们为链表实现Drop函数。按照我们常规的方式,我们可能的实现方式如下:impl Drop for List { fn drop(&mut self) { // NOTE: you can't actually explicitly call `drop`

2021-09-07 13:01:37 185

原创 004 通过链表学Rust之测试

介绍视频地址:https://www.bilibili.com/video/av78062009/相关源码:https://github.com/anonymousGiga/Rust-link-list详细内容上一节我们已经完成了链表的基本功能。本节就对上一节的例子进行测试。步骤如下:cargo new mylist --lib在mylist/src/lib.rs中写入如下代码:use std::mem;#[derive(Debug)]pub struct List{ hea

2021-09-05 09:56:33 128

原创 003 通过链表学Rust之给链表添加函数

介绍视频地址:https://www.bilibili.com/video/av78062009/相关源码:https://github.com/anonymousGiga/Rust-link-list详细内容在上一节,我们基本确定了链表的布局方式,下面我们就来实现链表的响应的函数。对于链表来说,最基本的几个函数就是:New //new函数为创建链表的函数Push//添加元素的函数Pop //弹出元素的函数New实现如下:impl List { pub fn new() ->

2021-09-04 11:42:52 168

原创 002 通过链表学习Rust笔记之链表布局

介绍视频地址:https://www.bilibili.com/video/av78062009/相关源码:https://github.com/anonymousGiga/Rust-link-listRust中最常见的链表用函数式的语法定义一个链表如下:List a = Empty | Elem a (List a)一个链表要么是空的类型,要么是一个值后面跟着一个链表,这种被称为递归定义类型,表示为和类型。Rust中的enum就是类型系统的和类型。所以最常见的Rust的链表的定义如下:#

2021-09-03 15:16:42 340

web assembly-003-1 Assembly之实现康威生命游戏设计.avi

推荐给rust学习爱好者

2021-07-21

web assembly-002 安装Rust和WebAssembly工具链和helloworld.avi

rust学习爱好者

2021-07-21

001-2 Rust和WebAssembly初体验.avi

适合于rust学习者

2021-07-20

web assembly-001学习内容说明

适合于rust的学习者

2021-07-20

mp4v2封装h264

mp4v2封装h264

2017-06-13

lcd驱动原理ppt

这个是介绍lcd液晶屏驱动的基本原理,便于读者理解lcd驱动的基本情况 但是本资料仅限于基本原理

2010-04-08

空空如也

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

TA关注的人

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