Kotlin新语言简介和快速入门知识点 简介:Kotlin是最近由JetBrains发布的一种基于JVM的编程语言,已经被Google宣布为开发Android App的一级语言Kotlin有着与Java同样的地位,到目前为止,Android和iOS一样,都有两种主要的编程语言,Android是Java和Kotlin,iOS是Objective-C和Swift.Kotlin与Swift一样,提供了众多的语法糖,可以大幅度提升开发效率.但Kotlin优于Swift的一点是前者不仅仅可以被编译成Jav…
[易学易懂系列|rustlang语言|零基础|快速入门|(27)|实战4:从零实现BTC区块链] 项目实战 实战4:从零实现BTC区块链 我们今天来开发我们的BTC区块链系统. 简单来说,从数据结构的角度上来说,区块链,就是区块组成的链. 以下就是BTC区块链典型的结构: 那最小单元就是区块:block. 这个block包含两部分:区块头,区块体. 我们先忽略Merkle树,先简化所有数据结构,只保留最基本的数据结构. 那区块头,就包含:区块高度,时间截:前一个区块地址:工作证明; 区块体,就包…
[易学易懂系列|rustlang语言|零基础|快速入门|(25)|实战2:命令行工具minigrep(2)] 项目实战 实战2:命令行工具minigrep 我们继续开发我们的minigrep. 我们现在以TDD测试驱动开发的模式,来开发新的功能search函数. 开始吧,我们先在src/lib.rs文件中,增加测试代码: #[cfg(test)] mod tests { use super::*; #[test] fn one_result() { let query = "duct"…
[易学易懂系列|rustlang语言|零基础|快速入门|(22)|宏Macro] 实用知识 宏Macro 我们今天来讲讲Rust中强大的宏Macro. Rust的宏macro是实现元编程的强大工具. 宏主要作用为: 1.减少重复代码. 2.编写DSL(Domain-specific languages. 3.可变参数接口定义. 在Rust主要分两种宏: 声明式宏declarative macros (一般用macro_rules!定义) 过程式宏 procedural macros,像一个过程函…
[易学易懂系列|rustlang语言|零基础|快速入门|(19)|多线程] 实用知识 多线程 我们今天来讲讲Rust中的多线程. 我直接来看看代码: use std::thread; use std::time::Duration; fn main() { thread::spawn(|| { for i in 1..10 { println!("hi number {} from the spawned thread!", i); thread::sleep(Duration::fr…
[易学易懂系列|rustlang语言|零基础|快速入门|(17)|装箱crates] 实用知识 装箱crates 我们今天来讲讲装箱技术crates. 什么是crates? 英语翻译是: 英 [kreɪt] 美 [kreɪt] n. 板条箱:篓 vt. 将某物装入大木箱或板条箱中 [ 过去式 crated 过去分词 crated 现在分词 crating 复数 crates 第三人称单数 crates ] 其实,它也就是一种模块化封装技术. 我们还是来看看代码,我们先用命令:cargo new…
[易学易懂系列|rustlang语言|零基础|快速入门|(16)|代码组织与模块化] 实用知识 代码组织与模块化 我们知道,在现代软件开发的过程中,代码组织和模块化是应对复杂性的一种方式. 今天我们来看看Rust是怎么做代码组织和模块化的. Rust用mod 关键字来定义模块. 我们还是拿上一篇文章中的代码来作例子,我们在原来的代码lib.rs加入新的mod: mod greetings { // ⭐️ By default, everything inside a module is priv…
[易学易懂系列|rustlang语言|零基础|快速入门|(28)|实战5:实现BTC价格转换工具] 项目实战 实战5:实现BTC价格转换工具 今天我们来开发一个简单的BTC实时价格转换工具. 我们首先创建一个目录: cargo new btc_converter 我们用TDD方式来开发. 然后 我们先写一些测试代码. 在src/main.rs下面,增加代码如下: #[cfg(test)] mod tests { use super::*; #[test] fn test_convert_succ…
[易学易懂系列|rustlang语言|零基础|快速入门|(26)|实战3:Http服务器(多线程版本)] 项目实战 实战3:Http服务器 我们今天来进一步开发我们的Http服务器,用多线程实现. 我们在原来工程h_server更新代码如下: src/main.rs: use h_server::*; use std::fs; use std::io::prelude::*; use std::net::TcpListener; use std::net::TcpStream; fn main(…
[易学易懂系列|rustlang语言|零基础|快速入门|(24)|实战2:命令行工具minigrep(1)] 项目实战 实战2:命令行工具minigrep 有了昨天的基础,我们今天来开始另一个稍微有点复杂的项目. 简单来说,就是开发一个我们自己的grep (globally search a regular expression and print) 首先用命令生成一个工程: cargo new minigrep 然后在工程目录minigrep下新建一个文件:poem.txt,文件的内容如下 :…