尚硅谷第四课0722班 java-特殊流程控制 -数组元素的默认初始化-数组操作常见问题-Java内存的结构

2023-10-27

特殊流程控制
Braek:
public class Text1{
	public static void main(String[]args){
		for(int i=0 ;i<10 ;i++ ){
			if(i==3){
				break;
			}
			System.out.println("i="+i);
		}
		System.out.println("Game Over!");
	}
}
Continue:
public class Text1{
	public static void main(String[]args){
		for(int i=0 ;i<100 ;i++ ){
			if(i%10==0){
				continue;
			}
			System.out.println("i="+i);
		}
	}
}

/*
break使用在 switch-case 循环结构中,作用是跳出当前循环
continue使用在循环结构中,跳出当次循环
*/
class code2{
	public static void main(String[] args) 
	{
		System.out.println("Hello World!");
		for(int i=1  ;i<=10 ;i++ ){
			if(i%4==0){
				//break;
				continue;
			}
			System.out.println(i);
		}
		level:for(int i=1 ;i<=5 ;i++ ){
			for(int j=1 ;j<=10 ;j++ ){
				if(j%4==0){
					//break;123
					//continue;1235678910
					//break level;123132123123123
				continue level;
				}
				System.out.print(j);
			}
			System.out.println();
		}
	}
}

//输出100以内的素数
public class code1{
	public static void main(String[]args){
		boolean b=false;
		Lable:for(int i=2 ; i<=100;i++){
			for(int j=2 ; j<Math.sqrt(i) ;j++ ){
				if(i%j==0){
					//b=true;
					break Lable;
				}
			}
		//	if(!b){
				System.out.println(i);
		//	}
		//	b=false;
		}
	}
}

Return:
return:并非专门用于结束循环的,它的功能是结束一个方法。当一个方法执行到一个return语句时,这个方法将被结束。
与break和continue不同的是,return直接结束整个方法,不管这个return处于多少层循环之内
注意:
break只能用于switch语句和循环语句中。
continue 只能用于循环语句中。 If ?\While +switch  while +continue
二者功能类似,但continue是终止本次循环,break是终止本层循环。
break、continue之后不能有其他的语句,因为程序永远不会执行其后的语句。
标号语句必须紧接在循环的头部。标号语句不能用在非循环语句的前面。
/*
编写程序:由键盘输入三个整数分别存入变量num1、num2、num3,
对它们进行排序(使用 if-else if-else),并且从小到大输出。
*/
import java.util.*;
public class code3{
	public static void main(String[]args){
			Scanner scanner =new Scanner (System.in);
			System.out.println("由键盘输入三个整数分别存入变量num1、num2、num3");
			int a=0,b=0,c=0;
			boolean tt=true;
			L:while(tt){
				try{
						tt=false;
						a=scanner.nextInt();
						switch (a)
						{
						case 1:
							continue L;
						}
						b=scanner.nextInt();
						c=scanner.nextInt();
						break;
				}catch(Exception e){
						System.out.println("输入错误!\n由键盘输入三个整数分别存入变量num1、num2、num3");
						//scanner.close();
						scanner =new Scanner (System.in);
						tt=true;
						continue;
				}
			}
			if(a>b){
				if(c>a){
					System.out.println(c+">"+a+">"+b);
				}else if(c<b){
					System.out.println(a+">"+b+">"+c);
				}else{
					System.out.println(a+">"+c+">"+b);	
				}
			}else{//b>a
				if(c>b){
					System.out.println(c+">"+b+">"+a);	
				}else if(c<a){
					System.out.println(b+">"+a+">"+c);
				}else{
					System.out.println(b+">"+c+">"+a);
				}
			}
	}
}

/*
一个数如果恰好等于它的因子之和,这个数就称为"完数"。(因子:除去这个数本身正的约数)
例如6=1+2+3.编程 找出1000以内的所有完数
*/
class code4 
{
	public static void main(String[] args) 
	{
		int factor=0;
		int count=0;
		for(int i=0;i<100;i++){
			for(int j=1;j<i;j++){
				if(i%j==0){
					factor+=j;
				}
			}
			if(factor==i){
				System.out.println(i);
				count++;
			}
			factor=0;
		}
		System.out.println("最后的数量为"+count);
	}
}
数组
数组是多个相同类型数据的组合,实现对这些数据的统一管理
数组中的元素可以是任何数据类型,包括基本类型和引用类型
数组属引用类型,数组型数据是对象(object),数组中的每个元素相当于该对象的成员变量
一维数组声明
一维数组的声明方式: 
type  var[] 或 type[]  var;
例如:
		   int a[];
	   	   int[] a1;
		   double  b[];
		   Mydate[] c;  //对象数组
Java语言中声明数组时不能指定其长度(数组中元素的数), 例如: int a[5];    //非法
一维数组初始化
动态初始化:数组声明且为数组元素分配空间与赋值的操作分开进行
int[] arr = new int[3];
arr[0] = 3;
arr[1] = 9;
arr[2] = 8;
MyDate dates[];
dates = new MyDate[3];
dates[0] = new MyDate(22, 7, 1964);
dates[1] = new MyDate(1, 1, 2000);
dates[2] = new MyDate(22, 12, 1964);
静态初始化:在定义数组的同时就为数组元素分配空间并赋值。
int a[] = new int[]{ 3, 9, 8};
int[] a = {3,9,8};
MyDate dates[] = {
        new MyDate(22, 7, 1964),
        new MyDate(1, 1, 2000),
        new MyDate(22, 12, 1964)
}
public class Text2{
	public static void main(String[]args){
		//int [] arr =new int [3];
		int arr [] =new int [3];
		arr[0]=3;
		arr[1]=9;
		arr[2]=8;
		for(int a:arr)
		System.out.println(a);
		person p[]={new person( "王琪" , 87 ),new person( "方法" , 87),new person( "好好",89 )};
		for( person a :p ){
			System.out.println(a.toString());
		}
	}
	static class person{
		String name;
		int age;
		public person(String name,int age){
			this.name=name;
			this.age=age;
		}
		public String toString(){
			return "name+"+name+"age"+age;
		}
	}
}

Java内存的结构
 栈(stack)  堆 (heap)  方法区 字符串常量池  静态域

int[] scores = new int[3];
scores[0] = 78;
scores[1] = 88;
scores[2] = 98;
String[] names= new String[3];
names[0] = “商文通”;
names[1] =“汤化峰”;
int[] myInt = new int[5];
for(int i = 0;i < myInt.length;i++){
	sysout(myInt[i]);
	myInt[i] = 2*i+1;
	sysout(myInt[i]);
class Text3{
	public static void main(String[] args){
		System.out.println("Text3");
		int [] score = new int [3];
		score [0] = 78;
		score [1] = 88;
		score [2] = 98;

		String[] name= new String [3];
		name[0] = "王琪";	
		name[1] = "你好";

		int [] myInt=new int [5];
		for(int i=0 ;i<myInt.length ; i++){
			System.out.print(myInt[i]+" ");
			myInt[i] = 2*i+1;
			System.out.println(myInt[i]);
		}
	}
}
创建基本数据类型数组
Java中使用关键字new创建数组对象
创建基本数据类型一维数组对象
class Text4{
	public static void main(String[] args) 
	{
		System.out.println("Hello World!");
		int  [] s;
		s = new int [10];
		for( int i=0 ;i<10 ;i++ ){
			s[i]=2*i+1;
			System.out.println(s[i]);
		}
	}
}
public class Test{
      public static void main(String args[]){
      	  int[] s;
      	  s = new int[10];
	  //int[] s=new int[10];
         //基本数据类型数组如果没有赋初值,
         //Java自动给他们赋默认值。
      	  for ( int i=0; i<10; i++ ) {
            	  s[i] =2*i+1;
	         System.out.println(s[i]);
      	  }
       }
    }
创建对象数组
创建元素为引用类型(对象)的数组
class MyDate{
        private int day;
        private int month;
        private int year;
        public MyDate(int d, int m, int y){
		day = d;    month = m;    year = y;
        }
        public void display(){
		System.out.println(year + "-" + month + "-" + day);
        }
 }

class Text5{
	public static void main(String[] args) 
	{
		MyDate [] date1;
		date1 = new MyDate [4];
		MyDate [] date2;
		date2 =new MyDate[4];// {new MyDate(1,2,3),new MyDate(1,2,3),new MyDate(1,2,3)};
		//MyDate [] date3;
		///date3 = {new MyDate(1,2,3),new MyDate(1,2,3),new MyDate(1,2,3)};
		MyDate [] date4={new MyDate(1,2,3),new MyDate(1,2,3),new MyDate(1,2,3)};
	}
	static class MyDate{
		int day;
		int month;
		int year;
		public MyDate(int d,int m,int y){
			this.day=d;
			this.month=m;
			this.year=y;
		}
		public void display(){
			System.out.println(year+"-"+month+"-"+day);
		}
	}
}

package com.atguigu.java;
/*
 * 数组 : 数(即变量)的组合 ,这些变量一定是享有同数据类型的
 */
public class code1 {
	public static void main(String[] args) {
		int q=12;
		boolean b=false;
		String str ="MM";
		//数据的声明与初始化
		//1.1声明
		int [] scores;//int 型数组的声明 
		String [] names;
		//1.2初始化
		//静态初始化
		names = new String []{"1", "2", "3" ,"4" ,"5"};
		double [] hight = new double []{1.223,13.213213,13.123123,1322.132123,131.1331};
		//动态初始化
		scores=new int [5];
		//2如何调用数组中的元素,使用下标
		//数组的元素下标从0开始,到n-1节结束
		scores[0]=90;
		scores[1]=80;
		//数组的长度还会在建立时就决定(.length属性调用)
		System.out.println(names.length);
		System.out.println(scores.length);
		//如何遍历一个数组
		for(int a=0 ;a<names.length ;a++ ){
			System.out.println(names[a]);
		}
		for(int c=0 ;c<scores.length ;c++  ){
			System.out.println(scores[c]);
		}
		//创建不同类型的数组的元素的默认初始化问题;
		//创建 byte/short/int/long默认的初始化值为0
		short [] sh1=new short[3];
		for(short sh:sh1){
			System.out.println(sh);
		}
		char [] ch1 =new char [3];
		for(char c:ch1){
			System.out.println( c==' ');
		}
		//float/double 数组默认的类型为0.0
		float [] f1 =new float[3];
		for(int i=0 ;i<f1.length ;i++ ){
			System.out.println(f1[i]);
		}
		//boolean的默认人初始化为false
		boolean [] b1=new boolean[3];
		for(boolean bb:b1){
			System.out.println(bb);
		}
		// 创建的是引用数据类型数组;默认的初始化值为null
		String [] strs=new String [4];
		for(String s:strs){
			System.out.println(s);
		}
		person1 []p1=new person1[]{};
	}

}
class person1{
	
}

数组元素的默认初始化
数组是引用类型,它的元素相当于类的成员变量,因此数组一经分配空间,其中的每个元素也被按照成员变量同样的方式被隐式初始化。例如:
public class Test {
public static void main(String argv[]){
int a[]= new int[5]; 
System.out.println(a[3]);	//a[3]的默认值为0
}
} 
对于基本数据类型而言,默认初始化值各有不同
对于引用数据类型而言,默认初始化值为null(注意与0不同!)
package com.atguigu.java;
public class code2 {
	public static void main(String[] args) {
		//数组的引用
		String[] s = new String[] {"haha" ,"hehe" , "hihi",};
		String [] ss=s;
		ss[0]="gg";
		System.out.println(ss[0]+" "+s[0]);
		//数组一旦初始化,其长度不可以改变
		int score1[]=new int []{11,22,33,44};
		int score2[]=new int[6];
		for(int i=0;i<score1.length;i++){
			score2[i]=score1[i];
		}score2[4]=12;score2[3]=31;
		for(int a :score1)
		System.out.println(a);
		for(int a :score2)
		System.out.println(a);	
	}
}
数组元素的引用
定义并用运算符new为之分配空间后,才可以引用数组中的每个元素;
数组元素的引用方式:数组名[数组元素下标]
数组元素下标可以是整型常量或整型表达式。如a[3] , b[i] , c[6*i];
数组元素下标从0开始;长度为n的数组合法下标取值范围: 0 —>n-1;如int a[]=new int[3];  可引用的数组元素为a[0]、a[1]、a[2]
每个数组都有一个属性length指明它的长度,例如:a.length 指明数组a的长度(元素个数)
数组一旦初始化,其长度是不可变的


练习1
1.(1)定义类Pritimive,在类中定义一个有3个元素的boolean类型的数组t作为其成员变量。数组元素未赋值。
	定义类Array1,在Array1的main()方法中创建Pritimive对象d,输出其成员变量t的三个元素值。
	练习目的:检验基本数据类型数组创建时的自动赋值。
  (2)给对象d的成员变量t赋值为{true,true,true},并输出t的三个元素值。
/*
 *定义类Pritimive,在类中定义一个有3个元素的boolean类型的数组t作为其成员变量。数组元素未赋值。
	定义类Array1,在Array1的main()方法中创建Pritimive对象d,输出其成员变量t的三个元素值。
	练习目的:检验基本数据类型数组创建时的自动赋值。 
 */
package com.atguigu.java;

public class code3 {
	public static void main(String[] args) {
		Primitive p=new Primitive();
		for(int i=0 ;i<p.t.length;i++){
			System.out.println(p.t[i]);
		}
		p.t[0]=true;
		p.t[1]=true;
		p.t[2]=true;
		for(int i=0 ;i<p.t.length;i++){
			System.out.println(p.t[i]);
		}
	}
}
class Primitive{
	boolean [] t =new boolean[3];
}

2. 定义类Student,包含三个属性:学号number(int),年级state(int),成绩score(int)。 创建20个学生对象,学号为1到20,年级和成绩都由随机数确定,打印出3年级(state值为3)的学生信息。
提示:生成随机数:Math.random(),返回值类型double;  
	    四舍五入取整:Math.round(double d),返回值类型long。
/*
 * 定义类Student,包含三个属性:学号number(int),年级state(int),成绩score(int)。
 * 创建20个学生对象,学号为1到20,年级和成绩都由随机数确定,打印出3年级(state值为3)的学生信息。
提示:生成随机数:Math.random(),返回值类型double;  
 四舍五入取整:Math.round(double d),返回值类型long。
 */
package com.atguigu.java;
//1定义类Student,包含三个属性:学号number(int),年级state(int),成绩score(int)
class student1{
	int numbe;
	int state;
	int score;
	public String toString(){
		return ("学号:"+numbe+"年级:"+state+"成绩:"+score);
	} 
}
public class code7 {
	public static void main(String[] args) {
		//2.创建20个学生对象,学号为1到20,年级和成绩都由随机数确定
		student1 [] st = new student1[20];
		for(int i=0;i<st.length;i++){
			st[i]=new student1();
			st[i].numbe=i+1;
			st[i].state=nianji();
			st[i].score=chengji();
			System.out.println(st[i]);
		}
		//3.打印出3年级(state值为3)的学生信息
	}
	public static int nianji(){
		return (int)(Math.random()*10)%3;
	}
	public static int chengji(){
		return (int)(Math.random()*100)%100;
	}
}
/*
 * 学号:1年级:2成绩:59
学号:2年级:0成绩:50
学号:3年级:0成绩:59
学号:4年级:2成绩:89
学号:5年级:1成绩:11
学号:6年级:0成绩:90
学号:7年级:2成绩:20
学号:8年级:1成绩:55
学号:9年级:0成绩:64
学号:10年级:1成绩:76
学号:11年级:0成绩:82
学号:12年级:1成绩:62
学号:13年级:0成绩:13
学号:14年级:0成绩:57
学号:15年级:0成绩:10
学号:16年级:2成绩:45
学号:17年级:1成绩:50
学号:18年级:2成绩:99
学号:19年级:2成绩:16
学号:20年级:0成绩:49
 */

3. 从键盘读入学生成绩,找出最高分,并输出学生成绩等级。
成绩>=最高分-10    等级为’A’   
成绩>=最高分-20    等级为’B’
成绩>=最高分-30    等级为’C’   
其余                            等级为’D’
提示:先读入学生人数,根据人数创建int数组,存放学生成绩。
/*
 *
 *3. 从键盘读入学生成绩,找出最高分,并输出学生成绩等级。
成绩>=最高分-10    等级为’A’   
成绩>=最高分-20    等级为’B’
成绩>=最高分-30    等级为’C’   
其余                            等级为’D’
提示:先读入学生人数,根据人数创建int数组,存放学生成绩。
*/
package com.atguigu.java;
import java.util.Scanner;
public class code5 {
	static int max;
	public static void main(String[] args) {
		Scanner s= new Scanner(System.in);
		//1根据提示创建一个Scanner类对象,输入学生个数
		System.out.println("please input the number of students:");
		int num=s.nextInt();
		//2根据写入的学生信息,建立相当长度的int数据
		int student[]=new int [num];
		//3通过循环从键盘输入学生成绩
		System.out.println("input the "+num+" goards");
		for(int i=0;i<num;i++){
			student[i]=s.nextInt();
		}
		//4遍历数组元素 同事获得最大值
		max=student[0];
		for(int a:student){
			if(a>max){
				max=a;
			}
		}
		//获得学生等级
		System.out.println("最高分:"+max+" ");
		System.out.println("A:>="+(max-10)+"B:>="+(max-20)+"C:>="+(max-30)+"D:");
		for(int i=0;i<num;i++){
			System.out.println("student"+"["+i+"]="+fun(student[i]));
		}
	}
	public static char fun(int a){
		if(a>=max-10){
			return 'A';
		}else if(a>=max-20){
			return 'B';
		}else if(a>=max-30){
			return 'C';
		}else{
			return 'D';
		}
	}
}
多维数组
二维数组[][]:数组中的数组
格式1(动态初始化):int[][] arr = new int[3][2];
定义了名称为arr的二维数组
二维数组中有3个一维数组
每一个一维数组中有2个元素
一维数组的名称分别为arr[0], arr[1], arr[2]
给第一个一维数组1脚标位赋值为78写法是:arr[0][1] = 78;
格式2(动态初始化):int[][] arr = new int[3][];
二维数组中有3个一维数组。
每个一维数组都是默认初始化值null (注意:区别于格式1)
可以对这个三个一维数组分别进行初始化
arr[0] = new int[3];    arr[1] = new int[1];   arr[2] = new int[2];
注:
int[][]arr = new int[][3];  //非法

格式3(静态初始化):int[][] arr = new int[][]{{3,8,2},{2,7},{9,0,1,6}};
 定义一个名称为arr的二维数组,二维数组中有三个一维数组
 每一个一维数组中具体元素也都已初始化
 第一个一维数组 arr[0] = {3,8,2};
 第二个一维数组 arr[1] = {2,7};
 第三个一维数组 arr[2] = {9,0,1,6};
 第三个一维数组的长度表示方式:arr[2].length;
注意特殊写法情况:int[] x,y[]; x是一维数组,y是二维数组。
Java中多维数组不必都是规则矩阵形式

package com.atguigu.java;
public class code6 {
	public static void main(String[] args) {
		//\/int [] arr =new int[];
		//1.二维数组的声明与初始化
		//1.1动态初始化
		int [][] arr1 = new int [4][3];
		int [][] arr2 = new int [4][];
		//2如何引用二维数组中的元素
		arr1 [0][0] = 10;
		arr2 [3][2] = 20;
		arr2 [0] = new int [3];
		//arr2 [1][17]=10;    //??????
		arr2 [1] = new int [4]; 
		arr2 [1] = new int [5];
		arr2 [2] = new int [7];
		//1.1静态初始化
		int [][] arr3 = new int [][]{{1,2,3,4,5},{3,4,5,6},{4,5,6}};
	}
}

练习2:获取arr数组中所有元素的和。使用for的嵌套循环即可。
声明:int[] x,y[];  以下选项允许通过编译的是:
a )   x[0] = y;  no
b)    y[0] = x; yes
c)    y[0][0] = x;no
d)    x[0][0] = y;no
e)    y[0][0] = x[0];yes
f)    x = y; no
public class code9 {
	//二维数组的定义和初始化
	//二维数组的动态定义
	public static void main(String[] args) {
		int [] x = null,y[]=null;
		//x[0]=y;
		y[0]=x;
		//y[0][0]x;
		//x[0][0]=y;
		y[0][0]=x[0];
	}
}
一维数组:int[] x  或者int x[]   
二维数组:int[][] y 或者  int[] y[]  或者 int  y[][]
使用二维数组打印一个 10 行杨辉三角.
1
1 1
1 2 1
1 3 3  1
1 4 6  4  1
1 5 10 10 5 1
 ....
package com.atguigu.java;
public class code8 {
	public static void main(String[] args) {
		new YangHui().fun();
	}
}
class YangHui{
	public void fun(){
		int [][] yanghui = new int [10][];
		for(int i=0 ;i<yanghui.length ;i++ ){
			yanghui[i]=new int [i+1];
			yanghui[i][0]=yanghui[i][i]=1;
			for(int j=1 ;j<i ;j++){
				yanghui[i][j]=yanghui[i-1][j-1]+yanghui[i-1][j];
			}
		}
		//遍历
		for( int i=0;i<yanghui.length ;i++ ){
			for(int j=0 ;j<yanghui[i].length ;j++ ){
				System.out.print(yanghui[i][j]+" ");
			}
			System.out.println();
		}
	}
}
/*
1 
1 1 
1 2 1 
1 3 3 1 
1 4 6 4 1 
1 5 10 10 5 1 
1 6 15 20 15 6 1 
1 7 21 35 35 21 7 1 
1 8 28 56 70 56 28 8 1 
1 9 36 84 126 126 84 36 9 1 
*/

【提示】
 1. 第一行有 1 个元素, 第 n 行有 n 个元素
 2. 每一行的第一个元素和最后一个元素都是 1
 3. 从第三行开始, 对于非第一个元素和最后一个元素的元素. 
     yanghui[i][j] = yanghui[i-1][j-1] + yanghui[i-1][j];

1.求数组元素的最大值、最小值、平均数、总和等
2.数组的复制、反转
3.数组元素的排序
定义一个int型的一维数组,包含10个元素,分别赋一些随机整数,然后求出所有元素的最大值,最小值,平均值,和值,并输出出来。

使用简单数组
(1)创建一个名为TestArray的类,在main()方法中声明array1和array2两个变量,他们是int[]类型的数组。
(2)使用大括号{},把array1初始化为8个素数:2,3,5,7,11,13,17,19。
(3)显示array1的内容。
(4)赋值array2变量等于array1,修改array2中的偶索引元素,使其等于索引值(如array[0]=0,array[2]=2)。打印出array1。
思考:array1和array2是什么关系?
拓展:修改题目,实现array2对array1数组的复制
数组排序
插入排序
直接插入排序、折半插入排序、Shell排序
交换排序
冒泡排序、快速排序(或分区交换排序)
选择排序
简单选择排序、堆排序
归并排序
基数排序
排序方法的选择
(1)若n较小(如n≤50),可采用直接插入或直接选择排序。
     当记录规模较小时,直接插入排序较好;否则因为直接选择移动的记录数少于直接插入,应选直接选择排序为宜。
(2)若文件初始状态基本有序(指正序),则应选用直接插入、冒泡或随机的快速排序为宜;
(3)若n较大,则应采用时间复杂度为O(nlgn)的排序方法:快速排序、堆排序或归并排序。

冒泡排序
排序思想:
相邻两元素进行比较,如有需要则进行交换,每完成一次循环就将最大元素排在最后(如从小到大排序),下一次循环是将其它的数进行类似操作
数组排序
java.util.Arrays类的sort()方法提供了数组元素排序功能:
	import java.util.*;
	public class Sort {
		public static void main(String[] args) {
			int [] number = {5,900,1,5,77,30,64,700};
			Arrays.sort(number);
			for(int i = 0; i < number.length; i++)
			System.out.println(number[i]);
	}
}

操作数组的工具类:Arrays    
java.util.Arrays类包含了用来操作数组(比如排序和搜索)的各种方法。Arrays拥有一组static方法。
equals():比较两个array是否相等。array拥有相同元素个数,且所有对应元素两两相等。
fill():将值填入array中。 
sort():用来对array进行排序。 
binarySearch():在排好序的array中寻找元素。 
         另:System.arraycopy():array的复制。   

数组操作常见问题
数组脚标越界异常(ArrayIndexOutOfBoundsException)
int[] arr = new int[2];
System.out.println(arr[2]);
访问到了数组中的不存在的脚标时发生。
空指针异常(NullPointerException)
int[] arr = null;
System.out.println(arr[0]);
arr引用没有指向实体,却在操作实体中的元素时。




本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

尚硅谷第四课0722班 java-特殊流程控制 -数组元素的默认初始化-数组操作常见问题-Java内存的结构 的相关文章

随机推荐

  • 二叉树算法

    每日一句 少年就是少年 他们看春风不喜 看夏蝉不烦 看秋风不悲 看冬雪不叹 看满身富贵懒察觉 看不公不允敢面对 只因他们是少年 目录 用递归和非递归两种方式实现二叉树的先序 中序 后序遍历 递归方法 非递归方法 如何完成二叉树的宽度优先遍历
  • 报文摘要算法

    1 报文摘要算法 报文摘要算法是一种将任意长度报文转换成固定长度的报文摘要算法 它具有以下六个特点 能够作用于任意长度的报文 产生有限位数的标识信息 易于实现 具有单向性 具有抗碰撞性 具有高灵敏性 1 1 MD5 1 1 1 添加填充位
  • Pytorch —— nn.Module类(nn.sequential)

    对于前面的线性回归模型 Logistic回归模型和神经网络 我们在构建的时候定义了需要的参数 这对于比较小的模型是可行的 但是对于大的模型 比如100 层的神经网络 这个时候再去手动定义参数就显得非常麻烦 所以 PyTorch 提供了两个模
  • STM32CubeMX+Keil5+Proteus实现按键控制LED灯(入门篇)

    嵌入式HAL库实战项目 本文说明 STM32CubeMX安装和使用 Keil实现按键控制LED亮灭 Proteus仿真 补 Proteus连线问题 总结 本文说明 学生党 之前学习过嵌入式的课程 跟着正点原子的视频一步一步地构建项目的工程
  • nodejs日志管理 log4js使用详解

    一 首先是在项目中安装 log4js npm install log4js save 注 log4js日志级别 分别为 lt 权值从小到大 gt all lt trace lt debug lt info lt warn lt error
  • 数据分析 数据规约

    一 概念 数据规约 Data Reduction 是指在尽可能保持数据原貌的前提下 最大限度地精简数据集 数据规约又分为2类 属性规约 和 数值规约 二 属性规约 1 概念 属性规约 Attributes Reduction 是指通过减少数
  • Vue.js

    Vue js 简介 Vue 读音 vju 类似于 view 是一套用于构建用户界面的渐进式框架 JavaScript框架 相比于库 框架更为强大 但是用框架必须遵守其规则 简化DOM操作 对Vue对DOM元素有特殊语法修饰 直接用就完了 响
  • 寻找数字数组的中位数算法详解

    寻找数字数组的中位数算法详解 在编程中 经常需要对数字数组进行各种操作和计算 其中一个常见的需求是找到这个数组的中位数 中位数是指在一组数据中处于中间位置的数值 将数组按照从小到大的顺序排列 中位数即为位于中间位置的数字 本文将详细介绍如何
  • 浪潮服务器u盘安装系统_教你u盘安装iso镜像系统

    原标题 教你u盘安装iso镜像系统 我们喜欢使用ISO的系统镜像文件安装电脑的系统 但是很多用户下载iOS后 却又不知道该怎么操作安装 以前 我们会用光盘进行安装 而现在 我们却很少使用光盘安装了 下面小编就来跟大家解说U盘怎么安装iso系
  • svn的branch/tag

    http www cnblogs com mingyongcheng archive 2011 05 21 2053139 html 本节主要讲解一下在SVN中Branch和tag的比较 SVN中Branch和tag在一个功能选项中 在使用
  • ubuntu20.04安装libraw,并测试libraw

    1 下载安装包并解压到目录 https www libraw org download 2 编译安装 autoreconf install cd LibRaw X YY configure with optional args make s
  • 稳压二极管1N4733A使用方法

    一 工作原理 1 1定义 稳压二极管 英文名称Zener diode 又叫齐纳二极管 利用PN结反向击穿状态 其电流可在很大范围内变化而电压基本不变的现象 制成的起稳压作用的二极管 1 2原理 稳压二极管工作在反向击穿区 当管子两端所加的反
  • [Python语言程序设计-第11期] 测验1: Python基本语法元素 (第1周)

    1 Guido van Rossum正式对外发布Python版本的年份是 1991年 2 以下关于Python语言中 缩进 说法正确的是 缩进在程序中长度统一且强制使用 3 以下不属于IPO模型的是 Program 4 字符串是一个字符序列
  • Cadence virtuoso error

    No convergence achieved with the minimum time step specified Last acceptable solution computed at 1 48938 ps The values
  • halcon计算仿射矩阵的函数参数中的x和y

    最近opencv和halcon混用 Row Column x y显然已经快乱套了 正常来说 x对应Column y对应Row 是符合自然规律的 但在halcon计算仿射矩阵的函数中参数含义是如下的 hom mat2d translate T
  • pycharm不能识别zsh环境变量

    pycharm不能识别mac zsh环境变量 原因 在macOS上 一个由GUI启动器 Finder Dock Spotlight等 启动的应用程序会继承一个相对空的环境 没有明智的方法来改变它 这种情况引起了抱怨 当从IDE启动时 在终端
  • 联通5g接入点设置参数_手机网速慢可以这样设置,网速瞬间飙升,还不知道真是可惜了...

    不管是在家或者出门 相信大家都会遇倒网速突然变慢的问题 可能有些小伙伴会以为是5G出来了 所以4G给限速了 其实不是的 在过去一年 4G用户就提升了近一倍 但是基站并没有提升这么多呀 就像是一个WiFi你一个人用跟一大家子人用一样 总会慢下
  • 接收IOS所谓的二进制流图片问题

    最近在对接APP方面的图片上传问题 在沟通的过程中 产生了一系列的误会 在IOS方面用了form data的方式进行图片的提交 指定了传入的参数名 图片名称 图片格式等等 对于后台来说其实就是处理接收并处理文件 还是和处理h5文件一样 在s
  • VS2013编译64位OpenSSL

    安装ActivePerl 这个没什么好说的 直接运行msi即可 编译OpenSSL 1 使用Visual Studio Tool中的 VS2013 x64 本机工具命令提示 来打开控制台 也可以打开一个控制台 然后进到 安装路径 Micro
  • 尚硅谷第四课0722班 java-特殊流程控制 -数组元素的默认初始化-数组操作常见问题-Java内存的结构

    特殊流程控制 Braek public class Text1 public static void main String args for int i 0 i lt 10 i if i 3 break System out printl