JavaSE_day07_数组
数组概述
概念:数组(Array),是多个相同类型数据按一定顺序排列 的集合,并使用一个名字命名,并通过编号(index)的方式对这些数据进行统一管理。简单来说数组就是一个容器。将多个数据存储到一起,每个数据称为该容器的元素。生活中的容器:水杯,衣柜,教室。数组就是存储数据长度固定的容器,保证多个数据的数据类型要一致。
数组的特点
- 数组本身是引用数据类型,而数组中的元素可以是任何数据类型,包括基本数据类型和引用数据类型。
- 创建数组对象会在内存中开辟一整块连续的空间,而数组名中引用的是这块连续空间的首地址。
- 数组的长度一旦确定,就不能修改。
- 我们可以直接通过下标(或索引)的方式调用指定位置的元素,速度很快。
数组作为对象,数组中的元素作为对象的属性,除此之外数组还包括一个成员属性 length,length 表示数组的长度。数组元素是有下标的,下标从 0 开始,也就是第一个元素的下标为 0,依次类推最后一个元素的下标为 n-1,我们可以通过数组的下标来访问数组的元素。
数组的分类:
- 按照维度:一维数组、二维数组、三维数组、…
- 按照元素的数据类型分:基本数据类型元素的数组、引用数据类型元素的数组(即对象数组)
初识数组的内存图
数组的初始化
- 在内存当中创建一个数组,并且向其中赋予一些默认值。
两种常见的初始化方式:
- 动态初始化(指定长度):数组声明且为数组元素分配空间与赋值的操作分开进行
- 静态初始化(指定内容):在定义数组的同时就为数组元素分配空间并赋值。
数组的定义
方式一:动态初始化数组
格式:
- 数组存储的数据类型[ ] 数组名字 = new 数组存储的数据类型[长度];
或者
数组元素的类型 数组名称[ ] =new 数组存储的数据类型[长度];
格式详解:
- 数组存储的数据类型: 创建的数组容器可以存储什么数据类型。
- [ ] : 表示数组。
- 数组名字:为定义的数组起个变量名,满足标识符规范,可以使用名字操作数组。
- new:关键字,创建数组使用的关键字。
- 数组存储的数据类型: 创建的数组容器可以存储什么数据类型。
- [长度]: 数组的长度,表示数组容器中可以存储多少个元素。
注意:
- 数组有定长特性,长度一旦指定,不可更改。 和水杯道理相同,买了一个2升的水杯,总容量就是2升,不能多也不能少。
举例:
//定义可以存储3个整数的数组容器int[] array1 = new int[3];//定义可以存储6个double的数组容器double array2[] = new double[6];//定义可以存储3个double的数组容器double[] array3 = new double[3];//在一行中也可以声明多个数组,例如:float[] a1, b, c = new float[4];
方式二:静态初始化
基本格式:
- 数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3...};
示例:
int[] ids;//声明
// 静态初始化:数组的初始化和数组元素的赋值操作同时进行
ids = new int[]{1001,1002,1003,1004};//定义存储1,2,3,4,5整数的数组容器。
int[] array = new int[]{1,2,3,4,5};
注意事项:
- 虽然静态初始化没有直接告诉长度,但是根据大括号里面的元素具体内容,也可以自动推算出来长度。
方式三:静态初始化
省略格式
- 数据类型[] 数组名 = {元素1,元素2,元素3...};
示例:
//定义存储1,2,3,4,5整数的数组容器
int[] array1 = {1,2,3,4,5};
注意
- 静态初始化没有直接指定长度,但是仍然会自动推算得到长度。
- 静态初始化标准格式可以拆分成为两个步骤。
- 动态初始化也可以拆分成为两个步骤。
- 静态初始化一旦使用省略格式,就不能拆分成为两个步骤了。
使用建议:
- 如果不确定数组当中的具体内容,用动态初始化;否则,已经确定了具体的内容,用静态初始化。
代码演示
public class DemoArrayNotice {public static void main(String[] args) {// 省略格式的静态初始化int[] arrayA = {10, 20, 30};// 静态初始化的标准格式,可以拆分成为两个步骤int[] arrayB;arrayB = new int[]{11, 21, 31};// 动态初始化也可以拆分成为两个步骤int[] arrayC;arrayC = new int[5];// 静态初始化的省略格式,不能拆分成为两个步骤。
// int[] arrayD;
// arrayD = { 10, 20, 30 };}}
总结一下数组的特点
package com.bjpowernode.javase.array;/*
Array1、Java语言中的数组是一种引用数据类型。不属于基本数据类型。数组的父类是Object。2、数组实际上是一个容器,可以同时容纳多个元素。(数组是一个数据的集合。)数组:字面意思是“一组数据”3、数组当中可以存储“基本数据类型”的数据,也可以存储“引用数据类型”的数据。4、数组因为是引用类型,所以数组对象是堆内存当中。(数组是存储在堆当中的)5、数组当中如果存储的是“java对象”的话,实际上存储的是对象的“引用(内存地址)”,数组中不能直接存储java对象。6、数组一旦创建,在java中规定,长度不可变。(数组长度不可变)7、数组的分类:一维数组、二维数组、三维数组、多维数组...(一维数组较多,二维数组偶尔使用!)8、所有的数组对象都有length属性(java自带的),用来获取数组中元素的个数。9、java中的数组要求数组中元素的类型统一。比如int类型数组只能存储int类型,Person类型数组只能存储Person类型。例如:超市购物,购物袋中只能装苹果,不能同时装苹果和橘子。(数组中存储的元素类型统一)10、数组在内存方面存储的时候,数组中的元素内存地址(存储的每一个元素都是有规则的挨着排列的)是连续的。内存地址连续。这是数组存储元素的特点(特色)。数组实际上是一种简单的数据结构。11、所有的数组都是拿“第一个小方框的内存地址”作为整个数组对象的内存地址。(数组中首元素的内存地址作为整个数组对象的内存地址。)12、数组中每一个元素都是有下标的,下标从0开始,以1递增。最后一个元素的下标是:length - 1下标非常重要,因为我们对数组中元素进行“存取”的时候,都需要通过下标来进行。13、数组这种数据结构的优点和缺点是什么?优点:查询/查找/检索某个下标上的元素时效率极高。可以说是查询效率最高的一个数据结构。为什么检索效率高?第一:每一个元素的内存地址在空间存储上是连续的。第二:每一个元素类型相同,所以占用空间大小一样。第三:知道第一个元素内存地址,知道每一个元素占用空间的大小,又知道下标,所以通过一个数学表达式就可以计算出某个下标上元素的内存地址。直接通过内存地址定位元素,所以数组的检索效率是最高的。数组中存储100个元素,或者存储100万个元素,在元素查询/检索方面,效率是相同的,因为数组中元素查找的时候不会一个一个找,是通过数学表达式计算出来的。(算出一个内存地址,直接定位的。)缺点:第一:由于为了保证数组中每个元素的内存地址连续,所以在数组上随机删除或者增加元素的时候,效率较低,因为随机增删元素会涉及到后面元素统一向前或者向后位移的操作。第二:数组不能存储大数据量,为什么?因为很难在内存空间上找到一块特别大的连续的内存空间。注意:对于数组中最后一个元素的增删,是没有效率影响的。*/
public class ArrayTest01 {public static void main(String[] args) {// 声明一个int类型的数组,使用静态初始化的方式int[] a = {1, 100, 10, 20, 55, 689};// 这是C++风格,不建议java中使用。//int a[] = {1, 100, 10, 20, 55, 689};// 所有的数组对象都有length属性System.out.println("数组中元素的个数" + a.length);// 数组中每一个元素都有下标// 通过下标对数组中的元素进行存和取。// 取(读)System.out.println("第一个元素 = " + a[0]);System.out.println("最后一个元素 = " + a[5]);System.out.println("最后一个元素 = " + a[a.length - 1]);// 存(改)// 把第一个元素修改为111a[0] = 111;// 把最后一个元素修改为0a[a.length - 1] = 0;System.out.println("第一个元素 = " + a[0]);System.out.println("最后一个元素 = " + a[5]);// 一维数组怎么遍历呢?for (int i = 0; i < a.length; i++) {System.out.println(a[i]); // i是从0到5,是下标}// 下标为6表示第7个元素,第7个元素没有,下标越界了。会出现什么异常呢?//System.out.println(a[6]); //ArrayIndexOutOfBoundsException(比较著名的异常。)// 从最后一个元素遍历到第1个元素for (int i = a.length - 1; i >= 0; i--) {System.out.println("颠倒顺序输出-->" + a[i]);}}
}
数组的默认值
数组是引用类型,它的元素相当于类的成员变量,因此数组一经分配空间,其中的每个元素也被按照成员变量同样的方式被隐式 初始化。简而言之:数组创建之后系统就会给它分配一个默认值。不同类型的数组有不同的默认值,如下图所示:
数组操作的两个常见小问题
索引越界异常:我们访问了数组中不存在的索引,程序运行后,将会抛出 ArrayIndexOutOfBoundsException 数组越界异常。在开发中,数组的越界异常是不能出现的,一 旦出现了,就必须要修改我们编写的代码。
示例:
int[] arr = {1,2,3};
System.out.println(arr[3]);
数组空指针异常:arr = null 这行代码,意味着变量arr将不会在保存数组的内存地址,也就不允许再操作数组了,因此运行的时候 会抛出 NullPointerException 空指针异常。在开发中,数组的越界异常是不能出现的,一旦出现了,就必须要修 改我们编写的代码。
示例:
int[] arr = {1,2,3};
arr = null;
System.out.println(arr[0]);
数组原理内存图
内存概述:内存是计算机中的重要原件,临时存储区域,作用是运行程序。我们编写的程序是存放在硬盘中的,在硬盘中的程序是不会运行的,必须放进内存中才能运行,运行完毕后会清空内存。 Java虚拟机要运行程序,必须要对内存进行空间的分配和管理。
Java虚拟机的内存划分
- 为了提高运算效率,就对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式。
JVM的内存划分:
每个区域的具体作用如下所示
内存的简化结构
观察下面代码
package demo02;public class Demo01ArrayOne {public static void main(String[] args) {int[] arr = new int[3];System.out.println(arr);//[I@5f150435 }}
}
以上方法执行,输出的结果是[I@5f150435,这个是什么呢?是数组在内存中的地址。new出来的内容,都是在堆 内存中存储的,而方法中的变量arr保存的是数组的地址。 输出arr[0],就会输出arr保存的内存地址中数组中0索引上的元素
小练习
import java.util.Scanner;public class ArrayExercises {/** 2. 从键盘读入学生成绩,找出最高分,并输出学生成绩等级。成绩>=最高分-10 等级为’A’成绩>=最高分-20 等级为’B’成绩>=最高分-30 等级为’C’其余 等级为’D’提示:先读入学生人数,根据人数创建int数组,存放学生成绩。**/public static void main(String[] args) {//1.使用Scanner,读取学生个数Scanner scanner = new Scanner(System.in);System.out.println("请输入学生人数:");int number = scanner.nextInt();//2.创建数组,存储学生成绩:动态初始化int[] scores = new int[number];//3.给数组中的元素赋值System.out.println("请输入" + number + "个学生成绩:");int maxScore = 0;for (int i = 0; i < scores.length; i++) {scores[i] = scanner.nextInt();//4.获取数组中的元素的最大值:最高分if (maxScore < scores[i]) {maxScore = scores[i];}}//5.根据每个学生成绩与最高分的差值,得到每个学生的等级,并输出等级和成绩char level;for (int i = 0; i < scores.length; i++) {if (maxScore - scores[i] <= 10) {level = 'A';} else if (maxScore - scores[i] <= 20) {level = 'B';} else if (maxScore - scores[i] <= 30) {level = 'C';} else {level = 'D';}System.out.println("student " + i +" score is " + scores[i] + ",grade is " + level);}}
}
多维数组的使用
- Java 语言里提供了支持多维数组的语法。
- 对于二维数组的理解,我们可以看成是一维数组 array1又作为另一个一维数组array2的元素而存 在。其实,从数组底层的运行机制来看,其实没有多维数组。
定义二维数组的方式
格式1:
- 数据类型[ ] [ ] 数组名称 = new 数据类型[ 二维数组中一维数组的个数][ 一维数组中元素的个数];
示例:
package demo02;public class Demo01ArrayOne {public static void main(String[] args) {/*定义了名称为arr的二维数组二维数组中有3个一维数组每一个一维数组中有2个元素一维数组的名称分别为arr[0], arr[1], arr[2]*/int[][] arr = new int[3][2];// 给第一个一维数组1脚标位赋值为78:arr[0][1] = 78;}
}
格式2:
- 数据类型[ ] [ ] 数组名称 = new 数据类型[ 二维数组中一维数组的个数][ ];
示例:
package demo02;public class Demo02ArrayTwo {public static void main(String[] args) {/*二维数组中有3个一维数组。每个一维数组都是默认初始化值null (注意:区别于格式1)注:int[][]arr = new int[][3]; //非法*/int[][] arr = new int[3][];//对这个三个一维数组分别进行初始化arr[0] = new int[3];arr[1] = new int[1];arr[2] = new int[2];}}
格式3
- 数据类型[ ] [ ] 数组名称 = new 数据类型[ ][ ]{{具体的元素},{具体的元素},{具体的元素}};
package demo02;public class Demo03ArraySame {public static void main(String[] args) {/*定义一个名称为arr的二维数组,二维数组中有三个一维数组每一个一维数组中具体元素也都已初始化*/int[][] arr = new int[][]{{3, 8, 2}, {2, 7}, {9, 0, 1, 6}};//第一个一维数组arr[0] = new int[]{3, 8, 2};//第二个一维数组arr[1] = new int[]{2, 7};//第三个一维数组arr[2] = new int[]{9, 0, 1, 6};//第三个一维数组的长度表示方式int length = arr[2].length;System.out.println(length);//4}}
总结一下
/*
关于java中的二维数组1、二维数组其实是一个特殊的一维数组,特殊在这个一维数组当中的每一个元素是一个一维数组。2、三维数组是什么?三维数组是一个特殊的二维数组,特殊在这个二维数组中每一个元素是一个一维数组。实际的开发中使用最多的就是一维数组。二维数组也很少使用。三维数组几乎不用。3、二维数组静态初始化int[][] array = {{1,1,1},{2,3,4,5},{0,0,0,0},{2,3,4,5},{2,3,4,5},{2,3,4,5},{2,3,4,5}};*/
public class ArrayTest09 {public static void main(String[] args) {// 一维数组int[] array = {100, 200, 300};System.out.println(array.length); // 3// 二维数组// 以下代码当中:里面的是4个一维数组。int[][] a = {{100, 200, 300},{30, 20, 40, 50, 60},{6, 7, 9, 1},{0}};System.out.println(a.length); // 4System.out.println(a[0].length); // 3// 里面的是5个一维数组。int[][] a2 = {{100, 200, 300},{30, 20, 40, 50, 60},{6, 7, 9, 1},{0},{1,2,3,4,5}};}
}
二维数组的读和写
/*
关于二维数组中元素的:读和改。a[二维数组中的一维数组的下标][一维数组的下标]注意:对于a[3][100]来说,其中 a[3] 是一个整体。[100]是前面a[3]执行结束的结果然后再下标100.*/
public class ArrayTest10 {public static void main(String[] args) {// 二维数组int[][] a = {{34,4,65},{100,200,3900,111},{0}};// a[0][0]:表示第1个一维数组中的第1个元素。System.out.println(a[0][0]);// 取出第2个一维数组当中第3个元素System.out.println("第二个一维数组中第三个元素:" + a[1][2]);// 取出第3个一维数组当中第1个元素System.out.println("第3个一维数组中第1个元素:" + a[2][0]);// 改a[2][0] = 11111;System.out.println(a[2][0]);// 注意别越界。//java.lang.ArrayIndexOutOfBoundsException//System.out.println(a[2][1]);}
}
遍历二维数组
/*
二维数组的遍历*/
public class ArrayTest11 {public static void main(String[] args) {// 二维数组String[][] array = {{"java", "oracle", "c++", "python", "c#"},{"张三", "李四", "王五"},{"lucy", "jack", "rose"}};// 遍历二维数组for(int i = 0; i < array.length; i++){ // 外层循环3次。(负责纵向。)//遍历拿出二维数组的值for(int j = 0; j < array[i].length; j++){System.out.print(array[i][j] + " ");}System.out.println();}}
}
二维数组内存解析
二维数组的默认值
/** 二维数组的使用:* 规定:二维数组分为外层数组的元素,内层数组的元素* int[][] arr = new int[4][3];* 外层元素:arr[0],arr[1]等* 内层元素:arr[0][0],arr[1][2]等* * ⑤ 数组元素的默认初始化值 * 针对于初始化方式一:比如:int[][] arr = new int[4][3];* 外层元素的初始化值为:地址值* 内层元素的初始化值为:与一维数组初始化情况相同* * 针对于初始化方式二:比如:int[][] arr = new int[4][];* 外层元素的初始化值为:null* 内层元素的初始化值为:不能调用,否则报错。* * ⑥ 数组的内存解析 * */
public class ArrayTest3 {public static void main(String[] args) {int[][] arr = new int[4][3];System.out.println(arr[0]);//[I@15db9742 System.out.println(arr[0][0]);//0// System.out.println(arr);//[[I@6d06d69cSystem.out.println("*****************");float[][] arr1 = new float[4][3];System.out.println(arr1[0]);//地址值System.out.println(arr1[0][0]);//0.0System.out.println("*****************");String[][] arr2 = new String[4][2];System.out.println(arr2[1]);//地址值System.out.println(arr2[1][1]);//nullSystem.out.println("*****************");double[][] arr3 = new double[4][];System.out.println(arr3[1]);//null
// System.out.println(arr3[1][0]);//报错}
}
方法的(参数/返回值)是数组
- 数组作为方法参数传递,传递的参数是数组内存的地址。
- 数组作为方法的返回值,返回的是数组的内存地址
Arrays类
java.util.Arrays类即为操作数组的工具类,包含了用来操作数组(比如排序和搜索)的各种方法。
工具类设计思想
- 构造方法用 private 修饰
- 成员用 public static 修饰
常用方法
代码举例:
package com.atguigu.java;import java.util.Arrays;/** java.util.Arrays:操作数组的工具类,里面定义了很多操作数组的方法* * */
public class ArraysTest {public static void main(String[] args) {//1.boolean equals(int[] a,int[] b):判断两个数组是否相等。int[] arr1 = new int[]{1,2,3,4};int[] arr2 = new int[]{1,3,2,4};boolean isEquals = Arrays.equals(arr1, arr2);System.out.println(isEquals);//2.String toString(int[] a):输出数组信息。System.out.println(Arrays.toString(arr1));//3.void fill(int[] a,int val):将指定值填充到数组之中。Arrays.fill(arr1,10);System.out.println(Arrays.toString(arr1));//4.void sort(int[] a):对数组进行排序。Arrays.sort(arr2);System.out.println(Arrays.toString(arr2));//5.int binarySearch(int[] a,int key)int[] arr3 = new int[]{-98,-34,2,34,54,66,79,105,210,333};int index = Arrays.binarySearch(arr3, 210);if(index >= 0){System.out.println(index);}else{System.out.println("未找到");}}
}
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- 编写一个程序,可以根据LALR方法构造识别活前缀的DFA,并输出文法的LALR的预测分析表。编写一个程序,可以根据LALR方法构造识别活前缀的DFA,并输出文法的LALR的预测分析表。
题目:编写一个程序,可以根据LALR方法构造识别活前缀的DFA,并输出文法的LALR的预测分析表。编写一个程序,可以根据LALR方法构造识别活前缀的DFA,并输出文法的LALR的预测分析表。题目要求编写一个程序,可以根据LALR方法构造识别活前缀的DFA,并输出文法的LALR的预测分表。以…...
2024/5/2 4:48:42 - 【CSS布局】已知布局元素的高度,写出三栏布局,要求左栏、右栏宽度各为300px,中间自适应。
CSS 的布局应该是 CSS 体系中的重中之重了,主要的布局方式有 table 表格布局, flex 盒子布局、float 浮动布局、position 定位布局,grid 网格布局,还有针对于移动端的响应式布局,不论是工作还是面试都是非常重要的知识。已知布局元素的高度,写出三栏布局,要求左栏、右栏…...
2024/4/27 12:41:06 - 【若依(ruoyi)】swagger 生成接口文档
前言若依(ruoyi): v4.3若依自带了 swagger 的接口。 将若依启动后,访问 http://localhost/swagger-ui.html (或者使用菜单系统工具 -> 系统接口)可以查看接口。将若依启动后,访问 http://localhost/v2/api-docs 可以查看 json 格式的接口文档。一切都很不错,只是要有个…...
2024/5/5 4:46:44 - Java语言十五讲——前言
前言每年技术媒体都会评选最受欢迎的编程语言,Java总是高居前位。自然,没有办法说一个语言绝对比另一种语言好,这个话题一如既往地会引起大家无谓的争论不休。对别的行业的人来讲也许会觉得莫名其妙,但是对我们程序员来讲,捍卫某种语言是一件很动感情的事情。就跟捍卫自己…...
2024/4/27 20:42:20 - jQuery(二)
(一)选择器 –是什么?有特定语法规则(css选择器)的字符串 用来查找某个/些DOM元素:$(selector)–有哪些?基本 – #id – tagName/* – .class – selector1,selector2,seletor3 并集 – selector1selector2selector3 交集层次 – 找子孙后代,兄弟元素 – selector1&g…...
2024/4/28 8:24:37 - leetcode-491. 递增子序列
题目 给定一个整型数组, 你的任务是找到所有该数组的递增子序列,递增子序列的长度至少是2。 示例: 输入: [4, 6, 7, 7] 输出: [[4, 6], [4, 7], [4, 6, 7], [4, 6, 7, 7], [6, 7], [6, 7, 7], [7,7], [4,7,7]]说明: 给定数组的长度不会超过15。 数组中的整数范围是 [-100,100]…...
2024/5/5 5:26:03 - 快速幂+矩阵快速幂
快速幂+矩阵快速幂快速幂(模平方重复计算法)思考快速幂的原理核心代码演示计算x^n计算(x^n)%m矩阵快速幂计算矩阵的幂计算矩阵幂的取余运算 快速幂(模平方重复计算法) 思考快速幂的原理快速幂算法的核心思想就是每一步都把指数分成两半,而相应的底数做平方运算。这样不仅能把非…...
2024/5/5 9:20:40 - Docker启动jumpserver堡垒机
jumpserver jumpserver 是全球首款完全开源、符合 4A 规范(包含认证Authentication 、授权 Authorization、账号 Accounting 和审计 Auditing)的运维安全审计系统,Jumpserver 通过软件订阅服务或者软硬件一体机的方式,向企业级用户交付多云环境下更好用的堡垒机。 与传统堡…...
2024/4/29 21:33:00 - SGI-STL的空间配置器allocator
转载自https://www.cnblogs.com/LUO77/p/5824625.html 在STL中考虑到小型区块所可能造成的内存碎片问题,SGI STL设计了双层级配置器,第一级配置器直接使用malloc()和free();第二级配置器则视情况采用不同的策略:当配置区块超过128bytes 时,则视之为足够大,便调用第一级配置…...
2024/5/5 10:04:34 - 如何在Idea中使用Maven
备注 备注:该技术博客的内容是我根据技术视频整理与总结的(并非复制粘贴)。原视频源于【遇见狂神说】JavaWeb课程 想浏览关于Mavan环境配置的技术可以点击连接:Maven环境搭建 一、步骤如下: 1.首先要创建一个MavenWeb项目,按照以下步骤2.填写组id和项目名后点击Next3.调整…...
2024/4/27 15:38:22 - 题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;n次落地经过路线总长度和下次反弹的高度。
/* * 题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;n次落地经过路线总长度和下次反弹的高度。 * */ public class Question10 {static double height = 100;public static void main(String[] args) {Question10 q = new Question10();int n = 2;System.out.…...
2024/5/5 8:01:06 - Spark I/O机制
序列化 序列化是将对象转换为字节流,本质上可以理解为将链表存储的非连续空间的数据存储转化为连续空间存储的数组中。这样就可以将数据进行流式传输或者块存储。 压缩 当大片连续区域进行数据存储并且存储区域中数据重复性高的状况下,数据适合进行压缩。数组或者对象序列化后…...
2024/4/24 9:34:38 - 第13篇 Mybatis 多表查询之多对多<三>
第13篇 Mybatis 多表查询之多对多<三>...
2024/5/5 7:25:31 - Navicat导出数据字典
平时创建数据库一定要养成良好的习惯,字段备注一定要加哦~今天教大家怎么用Navicat快速导出数据字典#新建一个查询把下面的代码放进去执行 SELECTt.TABLE_SCHEMA AS 库名称,t.TABLE_NAME AS 表名,t.COLUMN_NAME AS 字段名,t.COLUMN_TYPE AS 字段类型, IF( t.COLUMN_DEFAULT = …...
2024/5/5 6:58:30 - leetcode1451. 重新排列句子中的单词(排序)
「句子」是一个用空格分隔单词的字符串。给你一个满足下述格式的句子 text : 句子的首字母大写 text 中的每个单词都用单个空格分隔。 请你重新排列 text 中的单词,使所有单词按其长度的升序排列。如果两个单词的长度相同,则保留其在原句子中的相对顺序。 请同样按上述格式返…...
2024/5/3 16:22:32 - 有状态服务和无状态服务
概念 服务一般分为有状态服务(Stateful Service)和无状态服务(Stateless Service)。它们的区别是,当请求发起后,服务在服务端运行时是否需要关联上下文。 有状态服务,服务端需要保存请求的信息,并且其它请求还可以使用已保存的信息。 无状态服务,服务端处理逻辑中所需…...
2024/4/29 11:08:39 - 现在请不要去3DM网站下载3DM游戏运行库!
在https://dl.3dmgame.com/patch/28051.html这个链接里,下载下来的文件均为3DMyxklxbv2.0,大小在1GB左右。那问题在于,问什么已经出到3.0版本,下载下载的文件名却还带有2.0呢?我又打开了3DM网站上2.x版本的链接,发现下载链接指向的文件名均为这个3DMyxklxbv2.0,那么问题…...
2024/5/2 11:59:58 - ffmpeg使用nohup &在后台运行时挂起问题解决
问题描述 目前在做直播系统,其中有一项转播功能,需要自建拉转推的服务,目前我使用ffmpeg来转流,在后台界面操作后php程序调用shell指令运行ffmpeg进程,配合进程监控脚本来控制转播的启动、停止和维护。 其中主要的一条指令如下: nohup ffmpeg -i 源流地址 -c:v copy -c:v…...
2024/4/25 12:16:21 - 单片机远程温度控制系统
引言 温度是工业生产中常见的被控参数之一。从食品生产到化工生产,从燃料生产到钢铁生产等等,无不涉及到对温度的控制,可见,温度控制在工业生产中占据着非常重要的地位,而且随着工业生产的现代化,对温度控制的速度和精度也会越来越高。近年来, 温度控制领域发生了很大的…...
2024/4/26 11:21:25 - 力扣刷题(三)查找-查找表
查找表 考虑的基本数据结构 第一类: 查找有无–set 元素’a’是否存在,通常用set:集合 set只存储键,而不需要对应其相应的值。 set中的键不允许重复 第二类: 查找对应关系(键值对应)–dict 元素’a’出现了几次:dict–>字典 dict中的键不允许重复 第三类: 改变映射关…...
2024/4/24 14:45:25
最新文章
- 如何解决WordPress邮件发送和接收问题
在使用WordPress网站时,用户有时可能会遇到邮件接收或发送失败的问题。这种问题不仅影响网站的正常运营,还可能影响用户体验。以下是一篇详细的解决方案文章,帮助您系统地诊断和解决WordPress不发送或收不到邮件的问题。 引言 WordPress作为…...
2024/5/5 16:31:00 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/3/20 10:50:27 - 【Linux实验室】NFS、DHCP的搭建
NFS、DHCP的搭建 1、nfs服务搭建及测试什么是NFS?环境准备服务端机器安装nfs-utils和rpcbind包启动NFS服务创建/data/NFSdata目录,配置nfs文件启动服务挂载测试在服务端在共享目录下创建文件测试在客户端在共享目录下创建文件 2、dhcp服务搭建及测试什么…...
2024/5/5 8:44:44 - 在虚拟机ubuntu中端里输入vim filename.不显示vim界面,而是vim可以在以下的 package 找到
1。打开终端 2.输入以下命令来更新软件包列表: sudo apt update 3,输入以下命令来安装vim编辑器: sudo apt install vim 4等待安装完成后,再次输入"vim filename"命令,应该就能正常显示vim界面了。...
2024/5/3 11:48:08 - 416. 分割等和子集问题(动态规划)
题目 题解 class Solution:def canPartition(self, nums: List[int]) -> bool:# badcaseif not nums:return True# 不能被2整除if sum(nums) % 2 ! 0:return False# 状态定义:dp[i][j]表示当背包容量为j,用前i个物品是否正好可以将背包填满ÿ…...
2024/5/4 12:05:22 - 【Java】ExcelWriter自适应宽度工具类(支持中文)
工具类 import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellType; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet;/*** Excel工具类** author xiaoming* date 2023/11/17 10:40*/ public class ExcelUti…...
2024/5/5 12:22:20 - Spring cloud负载均衡@LoadBalanced LoadBalancerClient
LoadBalance vs Ribbon 由于Spring cloud2020之后移除了Ribbon,直接使用Spring Cloud LoadBalancer作为客户端负载均衡组件,我们讨论Spring负载均衡以Spring Cloud2020之后版本为主,学习Spring Cloud LoadBalance,暂不讨论Ribbon…...
2024/5/4 14:46:16 - TSINGSEE青犀AI智能分析+视频监控工业园区周界安全防范方案
一、背景需求分析 在工业产业园、化工园或生产制造园区中,周界防范意义重大,对园区的安全起到重要的作用。常规的安防方式是采用人员巡查,人力投入成本大而且效率低。周界一旦被破坏或入侵,会影响园区人员和资产安全,…...
2024/5/4 23:54:44 - VB.net WebBrowser网页元素抓取分析方法
在用WebBrowser编程实现网页操作自动化时,常要分析网页Html,例如网页在加载数据时,常会显示“系统处理中,请稍候..”,我们需要在数据加载完成后才能继续下一步操作,如何抓取这个信息的网页html元素变化&…...
2024/5/5 15:25:47 - 【Objective-C】Objective-C汇总
方法定义 参考:https://www.yiibai.com/objective_c/objective_c_functions.html Objective-C编程语言中方法定义的一般形式如下 - (return_type) method_name:( argumentType1 )argumentName1 joiningArgument2:( argumentType2 )argumentName2 ... joiningArgu…...
2024/5/4 23:54:49 - 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】
👨💻博客主页:花无缺 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 花无缺 原创 收录于专栏 【洛谷算法题】 文章目录 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】🌏题目描述🌏输入格…...
2024/5/4 23:54:44 - 【ES6.0】- 扩展运算符(...)
【ES6.0】- 扩展运算符... 文章目录 【ES6.0】- 扩展运算符...一、概述二、拷贝数组对象三、合并操作四、参数传递五、数组去重六、字符串转字符数组七、NodeList转数组八、解构变量九、打印日志十、总结 一、概述 **扩展运算符(...)**允许一个表达式在期望多个参数࿰…...
2024/5/4 14:46:12 - 摩根看好的前智能硬件头部品牌双11交易数据极度异常!——是模式创新还是饮鸩止渴?
文 | 螳螂观察 作者 | 李燃 双11狂欢已落下帷幕,各大品牌纷纷晒出优异的成绩单,摩根士丹利投资的智能硬件头部品牌凯迪仕也不例外。然而有爆料称,在自媒体平台发布霸榜各大榜单喜讯的凯迪仕智能锁,多个平台数据都表现出极度异常…...
2024/5/4 14:46:11 - Go语言常用命令详解(二)
文章目录 前言常用命令go bug示例参数说明 go doc示例参数说明 go env示例 go fix示例 go fmt示例 go generate示例 总结写在最后 前言 接着上一篇继续介绍Go语言的常用命令 常用命令 以下是一些常用的Go命令,这些命令可以帮助您在Go开发中进行编译、测试、运行和…...
2024/5/4 14:46:11 - 用欧拉路径判断图同构推出reverse合法性:1116T4
http://cplusoj.com/d/senior/p/SS231116D 假设我们要把 a a a 变成 b b b,我们在 a i a_i ai 和 a i 1 a_{i1} ai1 之间连边, b b b 同理,则 a a a 能变成 b b b 的充要条件是两图 A , B A,B A,B 同构。 必要性显然࿰…...
2024/5/5 2:25:33 - 【NGINX--1】基础知识
1、在 Debian/Ubuntu 上安装 NGINX 在 Debian 或 Ubuntu 机器上安装 NGINX 开源版。 更新已配置源的软件包信息,并安装一些有助于配置官方 NGINX 软件包仓库的软件包: apt-get update apt install -y curl gnupg2 ca-certificates lsb-release debian-…...
2024/5/4 21:24:42 - Hive默认分割符、存储格式与数据压缩
目录 1、Hive默认分割符2、Hive存储格式3、Hive数据压缩 1、Hive默认分割符 Hive创建表时指定的行受限(ROW FORMAT)配置标准HQL为: ... ROW FORMAT DELIMITED FIELDS TERMINATED BY \u0001 COLLECTION ITEMS TERMINATED BY , MAP KEYS TERMI…...
2024/5/5 13:14:22 - 【论文阅读】MAG:一种用于航天器遥测数据中有效异常检测的新方法
文章目录 摘要1 引言2 问题描述3 拟议框架4 所提出方法的细节A.数据预处理B.变量相关分析C.MAG模型D.异常分数 5 实验A.数据集和性能指标B.实验设置与平台C.结果和比较 6 结论 摘要 异常检测是保证航天器稳定性的关键。在航天器运行过程中,传感器和控制器产生大量周…...
2024/5/4 13:16:06 - --max-old-space-size=8192报错
vue项目运行时,如果经常运行慢,崩溃停止服务,报如下错误 FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory 因为在 Node 中,通过JavaScript使用内存时只能使用部分内存(64位系统&…...
2024/5/4 16:48:41 - 基于深度学习的恶意软件检测
恶意软件是指恶意软件犯罪者用来感染个人计算机或整个组织的网络的软件。 它利用目标系统漏洞,例如可以被劫持的合法软件(例如浏览器或 Web 应用程序插件)中的错误。 恶意软件渗透可能会造成灾难性的后果,包括数据被盗、勒索或网…...
2024/5/4 14:46:05 - JS原型对象prototype
让我简单的为大家介绍一下原型对象prototype吧! 使用原型实现方法共享 1.构造函数通过原型分配的函数是所有对象所 共享的。 2.JavaScript 规定,每一个构造函数都有一个 prototype 属性,指向另一个对象,所以我们也称为原型对象…...
2024/5/5 3:37:58 - C++中只能有一个实例的单例类
C中只能有一个实例的单例类 前面讨论的 President 类很不错,但存在一个缺陷:无法禁止通过实例化多个对象来创建多名总统: President One, Two, Three; 由于复制构造函数是私有的,其中每个对象都是不可复制的,但您的目…...
2024/5/4 23:54:30 - python django 小程序图书借阅源码
开发工具: PyCharm,mysql5.7,微信开发者工具 技术说明: python django html 小程序 功能介绍: 用户端: 登录注册(含授权登录) 首页显示搜索图书,轮播图࿰…...
2024/5/4 9:07:39 - 电子学会C/C++编程等级考试2022年03月(一级)真题解析
C/C++等级考试(1~8级)全部真题・点这里 第1题:双精度浮点数的输入输出 输入一个双精度浮点数,保留8位小数,输出这个浮点数。 时间限制:1000 内存限制:65536输入 只有一行,一个双精度浮点数。输出 一行,保留8位小数的浮点数。样例输入 3.1415926535798932样例输出 3.1…...
2024/5/5 15:25:31 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...
2022/11/19 21:17:16 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在iPhone上关闭“请勿打扰”
Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...
2022/11/19 21:16:57