自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(49)
  • 收藏
  • 关注

原创 Rust语言——cargo、crates.io

release profile:是预定义的可自定义:可使用不同的配置,对代码编译拥有更多的控制每个profile的配置都独立于其他的profilecargo主要的两个profile:—dev profile:适用于开发 cargo build—release profile:适用于发布 cargo build --release#通常情况下进行如下设置[profile.dev]opt-level = 0[profile.release]opt-level = 3发

2022-02-15 14:13:12 798 1

原创 Rust语言——迭代器和闭包

闭包 可以捕获其所在环境的匿名函数, 闭包是一个函数,该函数的定义可以赋给一个变量例子—生成自定义运动计划的程序目标:不让用户发生不必要的等待fn main(){ //创建闭包 let expensive_closure = |num1, num2|{ num1+num2 }; let b = expensive_closure(11, 12);//调用闭包 println!("{}", b);//23}闭包不要求标注参数..

2022-02-13 21:21:38 399

原创 Rust语言——接收命令行参数实例

a

2022-02-13 15:54:01 880

原创 Rust语言——编写自动化测试

运行测试在函数上加#[test],可以把函数变为测试函数使用cargo test命令来执行测试函数mod tests { #[test] fn it_works1() { let result = 2 + 2; assert_eq!(result, 4); } #[test] fn it_works2() { let result = 2 + 2; assert_eq!(result, 4)

2022-02-12 16:57:26 1185

原创 Rust语言——泛型、Trait、生命周期

泛型 泛型:提高代码复用能力泛型函数:—参数类型—返回类型fn main(){ let v = vec![100, 21, 352, 61, 5]; println!("The largest num is {}", largest(&v)); println!("{:?}", v);}fn largest<T>(v:&Vec<T>)->T{ let mut large = v[0]; for..

2022-02-12 14:15:42 497

原创 Rust语言——panic

Result枚举enum Result<T, E>{ Ok(T),//T:操作成功情况下,Ok变体里返回的数据类型 Err(E),}use std::fs::File;fn main(){ let f = File::open("hello.txt"); let f = match f{ Ok(file)=>file, Err(error)=>{ panic!("Error ope

2022-02-11 15:13:09 455

原创 Rust语言——常用的集合

Vector Vec<T>,叫做vector:可以存储多个值1.vector由标准库提供2.可以储存多个值3.只能存储相同类型的数据4.值在内存中连续存放创建vectorVec::new 函数fn main(){ let vec1:Vec<i32> = Vec::new();//方法一 let vec2 = vec![1, 2, 3];//方法二 宏 println!("{}", vec2[0]);}更新vector..

2022-02-10 21:21:24 430

原创 Rust语言——Package、Crate、Module

Package(包):Cargo的特性,让你构建、测试、共享crate Crate(单元包):一个模块树,可以产生一个library或可执行文件 Module(模块)、use:让你控制代码的组织我们之前说的rand就是一个crate一个Package可以有多个binary crate,但只能有0/1个library crate。Module:在一个crate内,将代码进行分组控制项目的私有性:public、private建立module:-mod 关键字-可嵌套-可包含

2022-02-10 14:30:10 1232

原创 Rust语言——枚举与模式匹配

定义枚举 枚举允许我们列举所有可能的值来定义一个类型关键字enumenum IpAdd{//枚举的变体可以是任意类型的甚至可以是结构体struct v4(u8, u8, u8, u8), v6(String), v8{one:u32, two:u32},//匿名结构体}fn main(){ let four = IpAdd::v4(127, 0, 0, 1);//两个IpAdd的实例 let six = IpAdd::v6(String::fro..

2022-02-09 21:12:40 404

原创 Rust语言——定义和实例化

struct结构体使用struct关键字,并为整个struct命名在花括号内,为所有字段定义名称和类型//创建结构体struct User{ username:String, email:String, sign:u64, active:bool,}fn main(){ }实例化structstruct User{ username:String, email:String, sign:u64, activ

2022-02-09 17:45:26 578

原创 Rust语言——所有权

Stack vs Heap(栈内存 vs 堆内存)Stack(后进先出,LIFO)Stack上的数据必须拥有已知的固定的大小大小未知的数据或运行时大小可能发生变化的数据必须存放在heap上String类型//创建String类型的值使用from函数let s = String::from("hello"); 这类字符串可以被修改fn main(){ let mut s = String::from("hello"); s.push_str(", world")

2022-02-09 15:12:56 461

原创 Rust语言——控制流

if 表达式 举例://if表达式fn main(){ let x = 7; if x<5 { println!("小于"); } else if x>5{ println!("大于"); } else{ println!("等于"); }}与java相比Rust中的if判别式两侧没有()与其它语言类似if结构中满足一个条件就跳出结构,不再匹配下面的条件了。改写..

2022-02-08 21:56:25 392

原创 Rust语言——函数和注释

创建函数//创建函数fn main(){ xzc();}fn xzc(){ println!("xzc");}有的函数中需要写入参数若写入参数必须要声明每个参数的类型//创建函数fn main(){ let x = 20; xzc(x);//argument实参}fn xzc(x:i32){//parameter形参 println!("x = {}", x);}若多参数就用","隔开即可并声明类型表达式语句是表达式函

2022-02-08 15:19:09 357

原创 Rust语言——通用的编程概念

变量与可变性let关键字声明变量let a = 1;//a的值不可变let mut b = 2;//b的值可变fn main(){ let mut b = 1; println!("b = {}", b); b = 2; println!("b = {}", b);}常量(constant),绑定值以后也不可变1.不可以使用mut2.声明时使用const关键字,类型必须被标注3.常量在任何作用域下都可声明包括全局作用域//常量可以存在任

2022-02-08 14:20:29 251

原创 Rust语言——猜数游戏

目标 生成一个1~100间的随机数提示玩家输入一个猜测输入后程序提示猜测是大了还是小了如果正确了,打印出一个庆祝信息,程序退出

2022-02-08 12:41:27 2270

原创 Rust语言——cargo

cargo是rustup安装后自带的,cargo简单来说就是rust下的包管理工具以下是cargo的主要命令首先在cmd中使用cargo语句cargo new hello_cargo来生成一个cargo项目(cargo项目可以实现大型的代码任务),以下为cargo结构:cargo.toml为该cargo文件的配置文件随后在cmd中输入命令:cd hello_cargo 进入hello_cargo的cargo文件而后输入命令:code . 在vscode中打开cargo文件最后

2022-02-07 22:01:10 3194

原创 Rust语言——配置与安装

一、配置rust语言环境(使用rustup)学习rust语言首先要配置rust语言环境,这里我使用的是官方推荐的rustup,点击链接Rust 程序设计语言随后找到自己机器所适配的rustup版本,下载成功后进行安装接下来会在cmd窗口弹出y/N 输入y,而后会产生三个选项分别是(1)(2)(3),我们cmd中输入1即可,最后可以通过在cmd中输入rustc --version命令查看rust是否安装成功和rust的版本号。出现此内容即安装成功二、安装合适的rust语言编..

2022-02-07 21:24:49 1938

原创 Java之线程池

经常创建和销毁、使用量特别大的资源、对性能影响很大。思路是:提前创建好多个线程,放入线程池中,使用时直接获取,使用完放回池中。以此避免频繁创建销毁、实现重复利用。好处:提高响应速度、降低资源消耗、便于线程管理。API:ExecutorService和Executorpackage 线程池;import java.util.concurrent.Executor;import java.util.concurrent.ExecutorService;import java.util.

2021-12-06 12:09:01 48

原创 Java线程协作

生产者消费者模式生产者生产产品并放入仓库,消费者从仓库中取出产品。需要线程之间同步和通信,synchronized只能实现同步,不能实现通信。以下方法实现线程间的通信(通知)wait()使线程一直等待notify()唤醒一个处于等待状态的线程notifyAll()唤醒同一个对象上所有调用wait()方法的线程,优先级高的线程优先调度管程法package 生产者消费者;//测试生产者与消费者模型-->利用缓冲区解决(管程法)//生产者、消费者、产品、缓冲区publi.

2021-12-05 13:25:57 466

原创 Java线程同步

线程同步:发生在多个线程操作同一个资源时并发:同一个对象被多个线程同时操作线程同步的解决方法就是排队关键字锁机制synchronized,当一个线程获得对象的排他锁,独占资源,其他线程必须等待,使用后释放即可。弊端:1.会引起性能问题2.会造成优先级高的线程等待优先级低的线程,优先级倒置,引起性能问题。...

2021-12-04 16:01:25 448

原创 Java的线程优先级及守护线程

线程的优先级优先级最大值为10,最小值为1。首先使用Runnable方法启动多线程,然后使用方法setPriority()设置优先级和getPriority()读取优先级,大多数情况下优先级高的线程先执行,但是随机执行的情况也不在少数。package 线程的优先级;//测试线程的优先级public class TestPriority { public static void main(String[] args) { //主线程默认优先级改变不了 .

2021-12-02 11:18:21 95

原创 Java之线程的五大状态

new线程对象进入新生状态,调用start线程进入就绪状态,线程被调度进入运行状态此时若线程中断或结束则进入死亡状态,若调用sleep或wait或同步锁定时,线程进入阻塞状态并等待cpu调度。线程的停止建议进程自行停止,若真要手动停止就设置标志位,不建议使用stop、destroy等JDK淘汰的方法以下为设置标志位方法:package 线程五大状态;//测试停止线程//1.建议线程正常停止---->利用次数,不建议死循环//2.建议使用标志位---->设置一个标志位//3

2021-12-01 11:57:13 205

原创 Java之多线程内部概念

静态代理模式

2021-11-30 20:54:36 51

原创 Java之多线程详解

Process与Thread(进程和线程)程序是指令和数据的集合,是一个静态的概念。进程则是执行程序的一次过程,是动态的概念,是系统资源分配的单位。通常一个进程中可以包含若干个线程,一个进程中至少有一个线程,不然没有存在的意义,线程是CPU调度和执行的单位。例如:一个视频是一个进程,那么其中有播放声音、显示画面、看弹幕等多个线程。(main()相当于主线程,其他的方法为其他的线程)创建线程方式一:继承Thread类,重写run() ,调用start()开启线程...

2021-11-29 16:34:21 321

原创 Java的Error和Exception

什么是异常在实际工作中遇到的情况不可能是完美的,比如写某个模块时,用户的输入不一定符合编程的要求。你要读取数据库的数据时,数据变成空,等等。这都是异常的表现。软件程序在运行过程中,同样可以遇到很多异常问题,英文名时Exception。什么是错误错误不是异常,而是脱离程序员控制的问题。错误在代码中通常被忽略,英文名为Error。异常处理框架引入异常处理框架,解决预防异常。Java把异常当作对象来处理,并定义一个基类java.lang.Throwable作为所有异常的超类。并且java将...

2021-11-24 17:40:27 314

原创 Java之内部类的调用

package com.xzc.oop.内部类;public class Outer {//外部类 private int id = 10; public void out(){ System.out.println("这是外部类的方法"); } class Inner{//内部类 public void in() { System.out.println("这是内部类的方法"); } .

2021-11-23 23:15:12 1369

原创 Java之接口的定义与实现

普通类:只有具体实现 抽象类:具体实现和抽象方法都有 接口:只有抽象方法! 自己无法写方法,专业的约束。约束和实现分离,面向接口编程。接口的本质是契约(遵循要求来实现方法功能)接口关键字interface接口的定义package com.xzc.oop.接口;//关键字interfacepublic interface Interface {//定义一个接口(接口不是类) //接口中的所有定义其实都是抽象的而且都是public public abstract voi.

2021-11-23 12:14:56 253

原创 Java之抽象类

抽象类关键字abstractabstract即可以用在类上也可以用在方法上结构为:public abstract class Abstract{//抽象类}public abstract void function();//抽象方法,不能写语句,不能实现方法关于抽象类和抽象方法有几点需要注意:抽象类中可以同时存在抽象方法和非抽象方法 若类中存在抽象方法那么该类一定是抽象类 抽象类不能被new出来,要想实现只能通过子类去继承实现 当一个类继承了一个抽象类那么必须在这个类中重写

2021-11-22 21:20:19 179

原创 Java之三种代码块

static即为静态的意思下面是关于匿名代码块、静态代码块和构造器之间的关系:package com.xzc.oop.静态详解;public class Static { { System.out.println("匿名代码块");//每次调用new语句时都会执行一次,在构造器语句前执行,若有静态代码块则在静态代码块后执行 } static{ System.out.println("静态代码块");//最开始的执行语句但是每个程序中静态代

2021-11-22 20:08:11 35

原创 Java之多态

多态的作用及定义实现动态编译 同一方法可以根据发送对象的不同而采用多种不同的行为方式多态即为重写的后续,与重写的思想一致。多态是方法的多态,属性没有多态。多态存在的条件:继承关系(同理重写)...

2021-11-22 17:11:38 165

原创 Java之方法的重写

重写都是方法的重写,和属性没有关系。package com.xzc.oop;public class FunctionRewrite { public static void main(String[] args) { A a = new A(); a.test();//A->test() //父类的引用指向了子类 B b_a = new A(); b_a.test();//B->test()

2021-11-21 20:52:00 214

原创 Java之继承详解

继承的本质是对某一批类的抽象,从而实现对现实世界更好的建模。extends的意思是"扩展"。子类是父类的扩展。(继承可以有传递性即孙子可以继承爷爷的属性和方法)Java中类只有单继承,没有多继承。并且继承是类和类之间的操作。一个父亲可以有多个儿子。以下为代码实例:首先定义一个Persons作为父类,并定义一些属性。package com.xzc.oop;public class Persons {//父类 String name = "xzc";//在同一个packa.

2021-11-21 16:49:15 238

原创 Java之封装详解

封装该露的露,该藏的藏我们的程序设计要追求"高内聚,低耦合",高内聚就是类的内部操作细节自己完成,不允许外部干涉;低耦合就是仅暴露少量的方法给外部使用。属性私有,get/set重点关键字:private注意:在同一个package下的类之间互相调用不需要导入类(import),而不同package下的类进行调用时需要import 类名。...

2021-11-21 09:09:36 223

原创 Java之构造器详解

一个类即使什么都不写也会默认存在一个方法(构造器)类中的构造器也称为构造方法,是在进行创建对象的时候必须要调用的。构造器有以下两个特点:必须和类的名字相同 必须没有返回类型,也不能写voidpackage com.xzc.oop;public class Constructor { public Constructor(){//构造器 }}...

2021-11-20 14:19:01 294

原创 Java之面向对象

Java是一种面向对象的语言,也可以说Java是OOP(Object Oriented Programming)即面对对象编程。

2021-11-19 14:59:05 308

原创 Java中对数组赋值

正常我们定义一个数组有很多种方式,这里只列出一种。int[] a = new int[3];若要给a数组赋值{1, 2, 3},当然一个一个元素进行赋值肯定是可以的但是看起来比较臃肿。此时想到了直接赋值:a = {1, 2, 3};结果爆红(此方法不行)然后查找资料找到了另一个方法:int[] b = {1, 2, 3};a = b;用另一个数组直接赋值给a,因为该数组进行了声明。package com.xzc.test;import java.util.Arrays;

2021-11-17 22:06:49 3812

原创 Java中的稀疏数组

当一个数组中大部分元素为0,或者为同一值的数组时,可以使用稀疏数组来保存该数组。所谓稀疏数组就是一个二维数组,把具有不同值的元素和行列及值记录在一个小规模的数组中。如果设该二维数组为sparceArray,sparceArray[0]中行是数组一共有几行,列是数组一共有几列,值是该二维数组除了0以外有多少种不同的元素,而之后的sparceArray[i](i>=1)则用来表示其他元素的值和其对应的位置。package com.xzc.sparceArray;import jav.

2021-11-17 21:24:31 216

原创 Java实现冒泡排序

package com.xzc.arrays;import java.util.Arrays;public class BubbleSort { //Java实现冒泡排序 public static void main(String[] args) { int[] a = {5, 2, 4, 20, 10, 3, 8}; int temp; for(int i = 0;i<a.length-1;++i){ .

2021-11-17 17:58:43 37

原创 Java中的Arrays类

Arrays类中的方法多为static进行修饰,所以不用new对象。下面是一些常用方法:fill给数组赋值sort给数组排序(正序)equals比较数组binarySearch查找数组元素......package com.xzc.arrays;import java.util.Arrays;//函数多为static开头 可以直接调用public class Array { public static void main(String[] args){

2021-11-17 16:14:04 60

原创 Java中的数组

数组的定义数组是相同类型数据的有序集合 ,数组中的每个数据可以通过一个下标来访问它们。数组的声明创建dataType[] array;//首选的方法dataType array[];//效果相同,但不是首选方法dataType[] array = new dataType[arraySize];//使用new操作符来创建数组package com.xzc.array;public class ArrayDemo { public static void main(Str..

2021-11-16 22:20:48 37

空空如也

空空如也

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

TA关注的人

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