自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Sunface撩技术

大道至简,技术如歌,欢迎来到Sunface的博客,https://im.dev

  • 博客(746)
  • 收藏
  • 关注

原创 Rust语言圣经43 - 深度解读文档注释

注释和文档好的代码会说话,好的程序员不写注释,这些都是烂大街的"编程界俚语"。但是,如果你真的遇到一个不写注释的项目或程序员,那一定会对它/他"刮目相看"。在之前的章节我们学习了包和模块如何使用,在此章节将进一步学习如何书写文档注释,以及如何使用cargo doc生成项目的文档,最后将以一个包、模块和文档的综合性例子,来将这些知识融会贯通。注释的种类在Rust中,注释分为三类:代码注释,用于说明某一块代码的功能,用户往往是同一个项目的协作开发者文档注释,支持Markdown, 对项目描述、公共

2021-12-30 16:58:17 2017

原创 Rust学习教程33 - HashMap

KV存储HashMap和动态数组一样,HashMap也是Rust标准库中提供的集合类型,但是又与动态数组不同,HashMap中存储的是一一映射的KV键值对,并提供了平均复杂度为O(1)的查询方法,当我们希望通过一个Key去查询值时,该类型非常有用,以致于Go语言将该类型设置成了语言级别的内置特性。Rust中哈希类型为HashMap<K,V>, 在其它.

2021-12-19 20:04:20 4013

原创 Rust学习教程32 - 动态数组Vec

本文节选自<<Rust语言圣经>>一书欢迎大家加入Rust编程学院,一起学习交流:QQ群:1009730433动态数组Vector动态数组类型用Vec<T>表示,事实上,在之前的章节,它的身影多次出现,我们一直没有细讲,只是简单的把它当作数组处理。动态数组允许你存储多个值,这些值在内存中一个紧挨着另一个排列,因此访问其中某个元素的成本非常低。动态数组只能存储相同类型的元素,如果你想存储不同类型的元素,可以使用之前讲过的枚举类型或者特征对象.总之,当我们想拥.

2021-12-19 20:03:37 3756

原创 Rust学习教程31 -返回值Result和?

本文节选自<<Rust语言圣经>>一书欢迎大家加入Rust编程学院,一起学习交流:QQ群:1009730433可恢复的错误Result还记得上一节中,提到的关于文件读取的思考题吧?当时我们解决了读取中如果遇到不可恢复错误该怎么处理,现在来看看,读取过程中,正常返回和遇到可以恢复的错误时该如何处理。假设,我们有一台消息服务器,每个用户都通过websocket连接到该服务器来接收和发送消息,该过程就涉及到socket文件的读写,那么此时,如果一个用户的读写发生了错误,显然不.

2021-12-19 20:02:36 3782

原创 Rust学习教程30 - Panic原理剖析

本文节选自<<Rust语言圣经>>一书欢迎大家加入Rust编程学院,一起学习交流:QQ群:1009730433panic深入剖析在正式开始之前,先来思考一个问题: 假设我们想要从文件读取数据,如果失败,你有没有好的办法通知调用者为何失败?如果成功,你有没有好的办法把读取的结果返还给调用者?panic!与不可恢复错误上面的问题在真实场景,其实挺复杂的,让我们先做一个假设:文件读取操作发生在系统启动阶段。那么可以轻易得出一个结论,一旦文件读取失败,那么系统启动也将失败,这.

2021-12-19 20:01:47 964

原创 Rust学习教程28 - 深入类型转换

本文节选自<<Rust语言圣经>>一书欢迎大家加入Rust编程学院,一起学习交流:QQ群:1009730433类型转换Rust是类型安全的语言,因此在Rust中做类型转换不是一件简单的事,这一章节我们将对Rust中的类型转换进行详尽讲解。as转换先来看一段代码:fn main() { let a: i32 = 10; let b: u16 = 100; if a < b { println!("Ten is less than one h.

2021-12-19 20:00:30 1551 1

原创 Rust学习教程27 - 深入了解特征

原文链接:https://course.rs/basic/trait/advance-trait.html 欢迎大家加入Rust编程学院,中国最好的Rust学习社区官网:https://college.rsQQ群:1009730433深入了解特征特征之于Rust更甚于接口之于其他语言,因此特征在Rust中很重要也相对较为复杂,我们决定把特征分为两篇进行介绍,第一篇在之前已经讲过,现在就是第二篇:关于特征的进阶篇,会讲述一些你不常用到但是该了解的特性。关联类型在方法一章中,我.

2021-12-13 17:29:35 975

原创 Rust学习教程26 - 特征对象

原文链接:https://course.rs/basic/trait/trait-object.html 欢迎大家加入Rust编程学院,中国最好的Rust学习社区官网:https://college.rsQQ群:1009730433特征对象在上一节中有一段代码无法通过编译:fn returns_summarizable(switch: bool) -> impl Summary { if switch { Post { //.

2021-12-12 22:18:06 947

原创 Rust学习教程25 - 特征Trait

特征Trait如果我们想定义一个文件系统,那么把该系统跟底层存储解耦是很重要的。文件操作主要包含三个:open、write、read, 这些操作可以发生在硬盘,也可以发生在缓存,可以通过网络也可以通过(我实在编不下去了,大家来帮帮我)。总之如果你要为每一种情况都单.

2021-12-11 23:30:45 1090

原创 Rust学习教程24 - 泛型和const泛型

泛型GenericsGo语言在2022年,就要正式引入泛型,被视为在1.0版本后,语言特性发展迈出的一大步,那么为什么泛型这么重要?到底什么是泛型?以及Rust的泛型又有几种?本章将一一为你讲解。我们在编程中,经常有这样的需求:用同一功能的函数处理不同类型的数据,例如两.

2021-12-11 19:10:29 1617

原创 Rust学习教程23 - 方法Method

方法Method从面向对象语言过来的同学对于方法肯定不陌生,class里面就充斥着方法的概念,在Rust中方法的概念也大差不差,往往和对象成对出现:object.method()例如读取一个文件写入缓冲区,如果用函数的写法read(f,buffer),用方法的写法f..

2021-12-10 23:19:47 783

原创 Rust学习教程22 - 全模式列表

全模式列表在本书中我们已领略过许多不同类型模式的例子. 本节的目标就是把这些模式语法都罗列出来,方便大家检索查阅。匹配字面值let x = 1;match x { 1 => println!("one"), .

2021-12-09 22:03:10 834

原创 Rust学习教程21 - Option和模式匹配

解构Option在枚举那一章,提到过Option枚举变量是用来解决Rust中一个变量是否有值的问题,定义如下:enum Option<T> { Some(T), None,}总而言之,一个变量要么有值:Some.

2021-12-09 22:02:01 605

原创 Rust学习教程20 - match和if let

match和if let先来看一个关于match的简单例子:enum Direction { East, West, North, South,}fn main() { let dire.

2021-12-09 22:00:17 1527

原创 Rust学习教程19 - 流程控制

流程控制80后应该都对学校的小混混记忆犹新,在那个时代,小混混们往往都认为自己是地下王者,管控着地下事务的流程,在我看来,他们就像代码中的流程控制一样,无处不在,很显眼,但是又让人懒得重视。言归正传,Rust程序是从上而下顺序执行的,在此过程中,我们可以引入循环、分支等流程控制方式,帮助我们的代码更好的实现相应的功能。使用if来做分支控制if else无处不在 - 鲁迅说但凡你能找到一门编程语言没有if else,那么一定更要反馈给鲁迅,反正不是我说的:) 总之,只要你拥有其它语言的编程经验,

2021-12-09 14:37:00 517

原创 Rust学习教程18 - 数组

数组在日常开发中,使用最广的数据结构之一就是数组,在Rust中,最常用的数组有两个,第一个是长度固定且很快速的array,第二个是可动态增长的但是有一点性能损耗的Vector,在本书中,我们称呼array为数组,Vector为动态数组。不知道你们.

2021-12-09 12:50:15 5495

原创 Rust学习教程17 - 枚举enum

枚举枚举(enum或enumeration)允许你通过列举可能的成员来定义一个**枚举类型**,例如扑克牌花色:enum PokerSuit { Clubs, Spades, Diamonds, Hearts,}如果在此之前你.

2021-12-08 17:29:35 1721

原创 Rust学习教程16 - 结构体struct

结构体在上一节,我们提到需要一个更高级的数据结构来帮助我们更好的抽象问题,而结构体strct恰恰就是这样的复合数据结构,它是由其它数据类型组合而来, 其它语言也有类似的数据结构,不过可能有不同的名称,例如object、record等。结构体跟之.

2021-12-08 15:45:15 1077

原创 Rust学习教程15 - 元组tuple

元组元组也是复合类型的一种,因此它是由多种类型组合到一起形成的。元组的长度是固定的,且在声明后,无法进行伸缩。通过以下语法可以创建一个元组:fn main() { let tup: (i32, f64, u8) = (500, 6.4,.

2021-12-08 15:43:37 789

原创 Rust学习教程14 - 函数

函数Rust的函数我们在之前已经见过不少,跟其他语言几乎没有什么区别。因此本章的学习之路将轻松和愉快,骚年们,请珍惜这种愉快,下一章你将体验到不一样的Rust。在函数界,有一个函数只闻其名不闻其声,可以止小孩啼,在程序界只有hello,world!.

2021-12-08 15:42:43 533

原创 Rust学习教程13 - 语句与表达式

语句和表达式Rust的函数体是由一系列语句组成,然后最后由一个表达式来返回值,例如:fn add_with_extra(x: i32, y: i32) -> i32 { let x = x + 1; // 语句.

2021-12-08 15:41:38 376

原创 Rust学习教程12 - String字符串与切片

字符串在其他语言,字符串往往是送分题,因为实在是太简单了,例如"hello, world"就是字符串章节的几乎全部内容了,对吧?如果你带着这样的想法来学Rust,我保证,绝对会栽跟头,因此这一章大家一定要重视,仔细阅读,这里有很多其它Rust书籍中没有的内容。.

2021-12-07 22:15:02 3837

原创 Rust学习教程 - 引用与借用

引用与借用上节中提到,如果仅仅是所有权转移,会让程序变得复杂,那能否像其它编程语言一样,使用某个变量的指针或者引用呢?答案是有的。Rust通过借用(Borrowing)这个概念来达成上述的目的: 获取变量的引用,称之为借用(borrowing)。.

2021-12-07 22:12:28 2449 1

原创 Rust学习教程10 - 所有权

所有权所有的程序都必须和计算机内存打交道,如何从内存中申请空间来存放程序的运行内容,如何在不需要的时候释放这些空间,成了重中之重,也是所有编程语言设计的难点之一。在计算机语言不断演变过程中,出现了三种流派:垃圾回收机制(GC),在程序运行时不断.

2021-12-07 22:11:30 585

原创 Rust学习教程09 - 字符、布尔、元类型

字符、布尔、元类型这三个类型所处的地位比较尴尬,你说它们重要吧,在需要的时候也是不可或缺,说它们不重要吧,确实出现的身影不是很多,而且这三个类型都有一个共同点:简单,因此我们统一放在一起讲。字符类型(char)字符,对于没有其它编程经验的新手来说可能.

2021-12-06 17:21:05 395

原创 Rust学习教程08 - 数值类型深入剖析

数值类型计算机和数值关联在一起的时间,远比你想象的要长,因此数值类型可以说是有计算机以来就有的类型,下面内容将深入讨论Rust的数值类型以及相关的运算符。整数和浮点数Rust使用一个相对传统的语法来创建整数(1,2,…)和浮点数(1.0,1.1,….

2021-12-06 16:42:04 1401

原创 Rust学习教程07 - 变量绑定与解构

变量绑定与解构本节在内容上部分参考了Rust Book鉴于本书的目标读者已经熟练掌握其它任意一门编程语言,因此这里就不再对何为变量进行赘述,让我们开门见山来谈谈,为何Rust选择了手动设定变量可变性。为何要手动设置变量的可变性?在其它大多数语言中,变量一旦创建.

2021-12-06 16:41:04 563

原创 Rust学习教程06 - 不仅仅是Hello world

不仅仅是Hello world几乎所有教程中安装的最后一个环节都是hello world,我们也不能免俗,但是在hello world之后,还有一个相亲,阿呸,Rust初印象环节,希望大家喜欢。多国语言的"世界,你好"还记得我们之前讲到的VScode IDE和通过Cargo.

2021-12-06 13:25:00 463

原创 Rust学习教程05 - 初识Cargo

认识Cargo但凡经历过C/C++、Go语言1.10版本之前的用户都知道,一个好的包管理工具有多么的重要!!我们那个时候时如此的羡慕nodejs的npm包管理,但是却求而不得,包管理工具最重要的意义就是任何用户拿到你的代码,都能运行起来",而不会因为各种包版本依赖焦头烂额,Go语.

2021-12-03 16:51:13 809

原创 Rust学习教程04 - 墙推VScode

墙推VScode!VScode从15年刚开始推出,我就在使用了,做为第一个吃螃蟹的人,可以说见证了它一路的快速发展,直到现在成为开源世界最火的IDE之一(弱弱的说一句,之一也许可以去掉).顺便歪楼说一句:我预言过三件事, 在13年预言Golang会火遍全世界,同时创建了14-19.

2021-12-03 16:50:13 617

原创 Rust学习教程03 - 安装Rust环境

安装Rust强烈建议使用rustup来安装Rust,当然如果你有异心,请寻找其它安装方式,然后再从下一节开始阅读。haha,开个玩笑,读者乃大大,怎么能弃之不顾,所以,注意:如果你不想用或者不能用rustup,请参见Rust其它安装方法现在Rust稳定版特性越来越全了,所.

2021-12-03 16:48:42 827

原创 在Windows下安装Rust语言编译环境

在Macos和Linux上安装Rust无比简单,究其原因是因为这两个系统原生就自带C语言的库,因此想在windows下安装Rust,我们首先要安装C环境。一、安装C/C++环境C环境有两种选择:安装微软的msvc或者安装mingw/cygwin,第一种方式简单,但是下载量大,安装较慢;第二种方式相对复杂些,但是下载只要40多M,比较快,所以你只要选一种来安装即可,新手推荐第一种:1.安装微软的msvc访问https://visualstudio.microsoft.com/zh-hans/downl

2021-12-02 20:03:26 2330

原创 Rust学习教程02 - Rust语言简介

进入Rust编程世界Rust发展历程Rust 最早是 Mozilla 雇员 Graydon Hoare 的一个个人项目,从 2009 年开始,得到了 Mozilla 研究院的支助,2010 年项目对外公布。2010 ~2011 年间实现的自举。从此以后,Rust 经历了巨大的设计变化和反复(历程极其艰辛),终于在 2015 年 5 月 15日发布了 1.0 版。在这个研发过程中,Rust 建立了一个强大活跃的社区,形成了一整套完善稳定的项目贡献机制(Rust能够飞速发展,与这一点密不可分)。Rust 现

2021-12-02 11:17:02 1056

原创 Rust学习教程01 - 书本简介

做任何事情,初心和目标很重要,过程也很重要,那么这里我们就来谈谈这些,关于书,关于Rust在国内的发展。强烈建议读者大大们不要跳过下面的内容,对于你对这本书的理解和定位会很有帮助。关于本书官方书名: Rust编程指南(The Way To Rust)

2021-12-02 11:13:36 821

原创 给.git(github)仓库瘦身(对照官方最新版本)

在网上搜索的文章基本都过期了,然后自己摸索了一番,总结一下。查询较大的文件cd ROOT_OF_YOUR_REPOgit verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -3edcfd306818542eecbbea3982ae83fc5a726cbe5 blob 6888412 2402254 3319670...

2019-08-05 13:28:48 3566

原创 如何从零开始设计一款好的技术开源产品

如何从零开始设计一款好的技术开源产品 本文发表时间:2018 年 7 月 13 号 文章最初发表于sunface.io前言技术男擅于想象也擅于幻想,类如在全球最大同性交友平台上,打造你的最强兵器,出尽风头,博得更多的同性友谊。那么问题来了,那么大的用户群体,你怎么才能脱颖而出,笔者自己也思考了很久,总结出一套可行的方案。七种兵器 剑之灵动,刀之雄厚,七种兵器...

2018-07-13 13:07:58 1663 2

原创 从逻辑思维角度提升自己的表达技巧

从逻辑思维角度提升自己的表达技巧逻辑性从事软件开发行业的同学们或多或少都具有相当不错的逻辑性,毕竟编程开发本身就是逻辑性较强的任务。但是大家是否考虑过这种逻辑性应该怎么应用到社交技巧上?下面就跟着笔者一起来详细分析下吧。逻辑思维当逻辑性上升到软技能(社交技巧)层面,就成了逻辑思维。逻辑思维一直是职场社交和个人职业发展中最重要的软技能之一。它的本质就是在遇到问题时,给你提供一...

2018-07-10 18:05:24 2814 2

原创 使用Go语言编写区块链P2P网络(译)

外文发表日期: 2018-04-14 外文链接:https://medium.com/coinmonks/code-a-simple-p2p-blockchain-in-go-46662601f417在之前的文章中,我们已经知道了怎么编写PoW也知道了IPFS怎么工作, 但是有一个致命的缺点,我们的服务都是中心化的,这篇文章会教你怎么实现一个简单的完全去中心化的P2P网络。...

2018-04-15 20:45:38 16626 5

原创 (译)使用Go语言从零编写PoS区块链

原文发表日期: 2018-03-26 原文链接:https://medium.com/@mycoralhealth/code-your-own-proof-of-stake-blockchain-in-go-610cd99aa658 转载请在文章开头注明作者和出处 作者: ChainGod(孙飞) 原文链接: http://chaingod.io/article...

2018-03-26 14:11:47 7164 1

原创 Cockroach数据库初体验

结论前置CR(笔者对cockroach的简称)数据库的产品体验比TIDB要好,例如官网、文档、部署维护、后台管理、监控,当然这里不是说tidb不好,tidb兼容mysql协议就非常棒,而且中文文档和中文的客服支持也是极棒的。2.CR对标准sql的支持比较完善,详情见sql特性支持 sql语句3.单节点性能大概是postgre数据库的60%,延迟抖动控制的较好4.整体上手速度很快,从看文档、搭建

2017-11-04 13:09:22 8830

空空如也

空空如也

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

TA关注的人

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