一.首先去官网下载 Java 语言的软件开发工具包–JDK,下载JDK8即可,下载地址为:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html.注意自己的操作系统和JDK版本系统相对应.(如果想深入了解的可以去访问这里哦,java自学网站)二.安装JDK.将下载好的JDK进行安装,如图 三.在我的电脑配置java环境变量,我的电脑是WIN10系统,当然WIN7系统也一样:右击“我的…
简单易懂的rustlang入门教程. [易学易懂系列|rustlang语言|零基础|快速入门|(1)|开篇] [易学易懂系列|rustlang语言|零基础|快速入门|(2)|VCCode配置] [易学易懂系列|rustlang语言|零基础|快速入门|(3)|所有权Ownership] [易学易懂系列|rustlang语言|零基础|快速入门|(4)|借用Borrowing] [易学易懂系列|rustlang语言|零基础|快速入门|(5)|生命周期Lifetime] [易学易懂系列|rustlang…
[易学易懂系列|rustlang语言|零基础|快速入门|(6)] 有意思的基础知识 变量绑定 我们现在回过头来看看,一些基础知识. 因为理解了前面的重要概念:所有权,借用,生命周期. 我们现在看基础知识就很简单了. 先看变量定义: let a = true;//rust不要求显式定义类型,编译器女王自动会根据上下文和用途,来自动定义类型,这里             //是:boollet b: bool = true;//如果显式定义类型,则通过:分号+类型​let (x, y) = (1,…
对于零基础想学Java的朋友,其实一开始最应该做的就是定好学习目标和端正学习态度,切记不要三天打鱼两天晒网! 首先你是零基础,现在急需把Java学好,在保证学习质量的同时,用最短的时间学好Java应该掌握的必要技术!这个时候就要知道自己Java的重点是什么?要知道任何方面基础都是很重要的,Java自然也不例外.Java的基础一定要学好,其实Java中高级里面都是基础的反复运用和操作,所以学好基础是很有必要的!我就听过这么一句话,基础很重要,基础好地基牢,才能爬的高! 今天说的基础都是高淇老师Ja…
首先可以在Sun公司网站 http://java.sun.com 免费下载java se提供的JDK. 下载后再下载的文件夹下打开,双击jdk文件跟着提示进行安装,安装结束后——点击本机电脑的开始——在所有文件搜索框处输入cmd——弹出运行命令——点击运行命令出现界面后输入java,没异常后输入javac——没异常表明安装成功 接下来是如何配置环境变量(主要需要配置path和classpath) 在桌面我的电脑处点击鼠标右键——选择属性栏——找到高级系统设置的高级选项——找到环境变量单击——进去…
安装并配置完Android SDK之后,本想着可以做个简单的APP应用了,只是依然提示我“请确认Java JDK是否安装”类似的报错,于是又进行了Java JDK的安装以及环境变量的配置. 1.下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html,选择适合自己电脑版本的来下载,因为我的电脑是Windows 7,因此我就选择jdk-8u101-windows-x64.exe来…
一.jdk环境变量的配置 1.下载JDK并安装(官网JavaSE,64位(具体看电脑是多少位的))官网http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 2.下载完成后点击jdk-8u91-windows-x64.exe进行安装安装成功后可以在安装的位置可以看到(如C:\Program Files\Java)里面有jdk和jar 3.JDK环境变量配置 第一步:右击计算机(或者我的…
1 ======================1.零基础快速入门SpringBoot2.0 5节课 =========================== 1.SpringBoot2.x课程全套介绍和高手系列知识点     简介:介绍SpringBoot2.x课程大纲章节         java基础,jdk环境,maven基础 2.SpringBoot2.x依赖环境和版本新特性说明 简介:讲解新版本依赖环境和springboot2新特性概述 1.依赖版本jdk8以上, Springboot2…
[易学易懂系列|rustlang语言|零基础|快速入门|(21)|智能指针] 实用知识 智能指针 我们今天来讲讲Rust中的智能指针. 什么是指针? 在Rust,指针(普通指针),就是保存内存地址的值.这个值,指向堆heap的地址. 什么是智能指针? 在Rust,简单来说,相对普通指针,智能指针,除了保存内存地址外,还有额外的其他属性或元数据. 在Rust中,因为有所有权和借用的概念,所以引用和智能指针,又有一点不一样. 简单来说,智能指针,拥有数据所有权,而引用没有. 智能指针分以下几种: 1…
[易学易懂系列|rustlang语言|零基础|快速入门|(20)|错误处理] 实用知识 错误处理 我们今天来讲讲Rust中的错误处理. 很多语言都有自己的错误处理方式,比如,java是异常处理机制. Rust有自己独特的错误处理机制. 在Rust有两种错误: recoverable and unrecoverable errors. 翻译成中文就是:可恢复错误和不可恢复错误. Rust分别用两种方式来处理这两种错误: 1.Result用来处理可恢复错误,这种方式一般不会直接退出当前程序. 2.宏…
[易学易懂系列|rustlang语言|零基础|快速入门|(16)|代码组织与模块化] 实用知识 代码组织与模块化 我们知道,在现代软件开发的过程中,代码组织和模块化是应对复杂性的一种方式. 今天我们来看看Rust是怎么做代码组织和模块化的. Rust用mod 关键字来定义模块. 我们还是拿上一篇文章中的代码来作例子,我们在原来的代码lib.rs加入新的mod: mod greetings { // ⭐️ By default, everything inside a module is priv…
[易学易懂系列|rustlang语言|零基础|快速入门|(4)] Borrowing 继续讲讲另一个重要的概念:借用(borrowing), 什么是借用? 我们先来看前一文章([易学易懂系列|rustlang语言|零基础|快速入门|(3)])的代码 : let a = [1, 2, 3];​ let b = a;​ println!("{:?} {:?}", a, b); *// [1, 2, 3] [1, 2, 3]*​ let a = vec![1, 2, 3];​ let b =…
[易学易懂系列|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语言|零基础|快速入门|(27)|实战4:从零实现BTC区块链] 项目实战 实战4:从零实现BTC区块链 我们今天来开发我们的BTC区块链系统. 简单来说,从数据结构的角度上来说,区块链,就是区块组成的链. 以下就是BTC区块链典型的结构: 那最小单元就是区块:block. 这个block包含两部分:区块头,区块体. 我们先忽略Merkle树,先简化所有数据结构,只保留最基本的数据结构. 那区块头,就包含:区块高度,时间截:前一个区块地址:工作证明; 区块体,就包…
[易学易懂系列|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语言|零基础|快速入门|(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语言|零基础|快速入门|(24)|实战2:命令行工具minigrep(1)] 项目实战 实战2:命令行工具minigrep 有了昨天的基础,我们今天来开始另一个稍微有点复杂的项目. 简单来说,就是开发一个我们自己的grep (globally search a regular expression and print) 首先用命令生成一个工程: cargo new minigrep 然后在工程目录minigrep下新建一个文件:poem.txt,文件的内容如下 :…
[易学易懂系列|rustlang语言|零基础|快速入门|(23)|实战1:猜数字游戏] 项目实战 实战1:猜数字游戏 我们今天来来开始简单的项目实战. 第一个简单项目是猜数字游戏. 简单来说,系统给了一个随机数字,你根据提示输入你的数字,如果答对了,系统显示:you win! 否则系统会给个提示:太小或太大的提示,继续猜. 我们开始吧! 先用命令生成工程: cargo new guessing_game 用vscode打开新建的工程guessing_game,src/main.rs的代码更新为如…
[易学易懂系列|rustlang语言|零基础|快速入门|(5)] Lifetimes 我们继续谈谈生命周期(lifttime),我们还是拿代码来说话: fn main() { let mut a = vec![1, 2, 3]; let b = &mut a; // &mut borrow of `a` starts here // some code println!("{:?}", a); // trying to access `a` as a shared bo…
[易学易懂系列|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语言|零基础|快速入门|(18)|use关键词] 实用知识 use关键词 我们今天来讲讲use关键词. 1.简单来说,use是给其他方法或资源定义一个别名,然后调用者,就可以直接用这个别名来调用,从而简化代码. 看下例子吧,我们先来看看没有用use的代码: // -- Initial code without the `use` keyword -- mod phrases { pub mod greetings { pub fn hello() { printl…
[易学易懂系列|rustlang语言|零基础|快速入门|(17)|装箱crates] 实用知识 装箱crates 我们今天来讲讲装箱技术crates. 什么是crates? 英语翻译是: 英 [kreɪt] 美 [kreɪt] n. 板条箱:篓 vt. 将某物装入大木箱或板条箱中 [ 过去式 crated 过去分词 crated 现在分词 crating 复数 crates 第三人称单数 crates ] 其实,它也就是一种模块化封装技术. 我们还是来看看代码,我们先用命令:cargo new…
[易学易懂系列|rustlang语言|零基础|快速入门|(15)] 实用知识 Unit Testing单元测试 我们知道,在现代软件开发的过程中,单元测试对软件的质量极及重要. 今天我们来看看Rust是怎么做单元测试的. 首先我们用cargo new 来创建一个工程. cargo new --vcs git --lib test-example 然后,我们会得到这样的目录结构: test-example ├── Cargo.lock ├── Cargo.toml ├── src │ └── li…
[易学易懂系列|rustlang语言|零基础|快速入门|(14)] 有意思的基础知识 Impls & Traits实现与特征 我之前说到的struct结构体,其实就类似于面向对象语言中的类class. 但这个struct,并没有定义方法或函数. 那要怎么办呢? Rust用关键词impls(实现)来定义struct和enum的方法或函数. 而trait(特征),类似于面向对象语言中的接口interface. 特征,是用来定义要实现的方法,一个类型可以有多个特征.特征可以有默认实现函数,这个默认函数…
[易学易懂系列|rustlang语言|零基础|快速入门|(13)] 有意思的基础知识 Generics泛型 我们今天来看看泛型. 什么是泛型? 我们来看看这样的情景: 我们要写一个函数,这个函数可以处理不同类型的值,但这个值的类型,在运行时,才由调用者确定. 我们不可能在函数方法中,一开始就写死. 那要什么办? 用泛型. 比如:用x : T替换x : u8 我们来看看例子: 泛型函数: fn takes_anything<T>(x: T) { // x has type T, T is a g…
[易学易懂系列|rustlang语言|零基础|快速入门|(12)] 有意思的基础知识 Enums 今天我们来讲讲枚举. 在数学和计算机科学理论中,一个集的枚举是列出某些有穷序列集的所有成员的程序,或者是一种特定类型对象的计数.这两种类型经常(但不总是)重叠. 是一个被命名的整型常数的集合,枚举在日常生活中很常见,例如表示星期的SUNDAY.MONDAY.TUESDAY.WEDNESDAY.THURSDAY.FRIDAY.SATURDAY就是一个枚举. 如下定义: enum Day { Sunda…
[易学易懂系列|rustlang语言|零基础|快速入门|(11)] 有意思的基础知识 Structs 我们今天来看看数据结构:structs. 简单来说,structs,就是用来封装相关数据的一种数据类型. 一般来说, struct 的命名方式为驼峰方式如: CamelCase 在Rust有以下几种定义struct的方式: C-like structs (C语言形式的struct) Tuple structs (元组形式的struct) Unit structs (单元struct) 在Rust…
[易学易懂系列|rustlang语言|零基础|快速入门|(10)] 有意思的基础知识 Vectors 我们之前知道array数组是定长,只可我保存相同类型的数据的数据类型. 如果,我们想用不定长的数组呢?因为很多时候,数据有可能是或多或少,不确定个数的. 这时候,vector就出场了. 在Rust,vecotr是可变长度的数组,用于保存相同类型的数据. vector是引用类型,其数据也是动态地在堆heap分配内存空间. 我们知道String类型,是引用类型. 其实,String底层,也就是用ve…
[易学易懂系列|rustlang语言|零基础|快速入门|(9)] 有意思的基础知识 Control Flows 我们今天再来看看流程控制. 条件控制 if-else if -else: / Simplest Examplelet team_size = 7;if team_size < 5 {    println!("Small");} else if team_size < 10 {    println!("Medium");} else {  …