数组:

数组静态初始化及遍历

package wwl.array;

import java.util.Arrays;

/**

* 数组的静态初始化及数组遍历

*

*/

public class Test04 {

public static void main(String[] args) {

//定义数组,存储10个double类型数据

double [] data = new double[10];

//给元素赋值:

data[0] = 3.11;

data[4] = 78.11;

data[8] = 88.99;

//通过for循环遍历打印数组的每个元素

for (int i = 0; i < data.length; i++) {

System.out.println(data[i]);

}

/*

* 定义数组,数组会给元素进行默认初始化

* 整数数组为0

* 小数数组0.0

* 布尔类型 false

* char \u0000

* 引用类型 null

*/

//如果在定义数组的时候已经知道数组元素的值,可以在定义数组的同时给数组元素赋值。叫数组的静态初始化

//数组静态初始化时,不需要指定数组长度,数组的长度由数组初始化元素个数决定

int [] data2 = new int [] {34, 65 ,123 ,78 ,66};

//遍历元素时,还可以使用增强的for循环,也叫foreach循环

for (int xx : data2) {

//依次把data2数组的每个元素赋值给局部变量xx

System.out.print(xx + "\t");

}

System.out.println();

//数组名的相互赋值:

int[] data3 = data2; //把data2的值赋值给data3,data2的值是一个数组的引用(起始地址)

//现在data3与data2保存了同一个数组的引用,data2//data3指向了堆中同一个数组

//data3数组的元素打印

for (int yy : data3) {

System.out.print( yy + "\t");

}

System.out.println();

data3[0] = 666;

//打印data2数组元素;

//java.util.Arrays中toString()方法可以把数组的元素转化为字符串

System.out.print(Arrays.toString(data2));

}

}

数组是引用数据类型

可变长参数:

package wwl.array;

/**

* 演示可变长参数

*

*/

public class Test07 {

public static void main(String[] args) {

//再调用方法时可以传递任意整数,也可以传任意数组

sum();

sum(1);

sum(1,2);

sum(1,2,3,4,5,6,7,8,9,10);

int [] data = {56,34,76,34,786,32,78};

sum(data);

}

//定义一个方法,可以计算任意个整数的和

public static void sum( int ... data) {

//******在方法体中,把可变长参数当作数组使用

int sum = 0;

for (int xx : data) {

sum += xx;

}

System.out.println("sum = " + sum);

}

}

插入元素

package wwl.array;

import java.util.Arrays;

/**

* 在数组中插入元素分析分析!

*

*/

public class Test09 {

public static void main(String[] args) {

//数组的静态初始化

int [] data = {21,34,65,87,90,123};

//需求在索引值为2的位置插入一个数组456

int [] newdata = new int[data.length + 1];

for(int i = 0; i< 2 ; i++) {

newdata[i] = data[i];

}

newdata[2] = 456;

for(int i = 2; i

newdata[i+1] = data[i];

}

data = newdata;

System.out.println(Arrays.toString(data));

}

}

数组本质上就是堆中一块连续的存储空间

数组扩容:

package wwl.array;

import java.util.Arrays;

/**

* 数组的扩容

*

*/

public class test01 {

public static void main(String[] args) {

//定义数组直接赋值

m1();//完全手动扩容

m2();//调用System.arrayCopy实现数组元素的复制

m3();//调用Arrays工具类的copyof()方法,以后方便直接使用

}

private static void m1() {

int [] data = {1,2,3,4,5,6,7};

//1.定义更大的数组

int [] NewData = new int[data.length * 2];//按2倍大小扩容

//2.把原来数组的内容复制到新数组中

for (int i = 0; i < data.length; i++) {

NewData[i] = data[i];

}

//3.让原来的数组指向新的数组:

data = NewData;

System.out.println(Arrays.toString(data));

}

private static void m2() {

int [] data = {1,2,3,4,5,6,7};

//1.定义更大的数组

int [] NewData = new int[data.length * 2];//按2倍大小扩容

//2.把原来数组的内容复制到新数组中

//把src数组从srcPos开始的length个元素复制到dest数组的destPos位置

//System.arraycopy(src, srcPos, dest, destPos, length);

System.arraycopy(data, 0, NewData, 0, data.length);

/*

* 该方法使用native修饰,没有方法体

* JNI(Java Native Interface)可以在Java中调用其它语言编写的代码!!

*/

//3.让原来的数组指向新的数组:

data = NewData;

System.out.println(Arrays.toString(data));

}

private static void m3() {

int [] data = {1,2,3,4,5,6,7};

//Arrays.copyof(原来的数组,新的数组长度)---->实现数组的扩容

data = Arrays.copyOf(data, data.length * 2);//主要扩容方法!

System.out.println(Arrays.toString(data));

}

}

tip: data = newData:

由于数组是引用数据类型,传递的是内存使用权,是一块内存空间,它可以由多个单位同时使用。而” = “并不是赋值而是把a数组的使用权与b共享。

数组的特点:

定义一个方法删除数组中指定的元素:

具体:

static是属于类的,非static是属于对象。static方法可以通过类名访问,也可以通过类的实例访问。static方法不能访问类中非static的数据。主要区别就是有了static可以直接类名点方法调用或直接调用方法。没有的话则必须创建对象调用!

package wwl.array;

import java.util.Arrays;

/**

* 定义一个方法,实现数组元素的删除

* @param data

* @param i

*/

public class Test02 {

public static void main(String[] args) {

int [] data = {1,2,3,4,5,6,7};

data = delete(data,3);

System.out.println(Arrays.toString(data));

}

//定义方法,删除数组中指定元素,删除data数组中第i个元素

public static int[] delete(int [] data,int i) {

//1.定义较小的数组:

int[] newDAta = new int[data.length-1];

//2.把[0,1) 范围的元素复制到新数组中

for(int x = 0;x < i;x++) {

newDAta[x] = data[x];

}

//3.把[i+1,data.length)范围的元素复制到新数组[i,data.length-1中)

for(int x = i+1;x < data.length;x++) {

newDAta[x-1] = data[x];

}

//4.把新的数组返回

return newDAta;

//形参data = newDAta;不是实参

//System.out.println(Arrays.toString(data));

}

}

对象数组:

购物车例子:

二维数组

Arrays工具类:

对象数组排序:

冒泡排序分析:

最基本:

package wwl.array;

import java.util.Arrays;

public class arraymaopaopaixu {

public static void main(String[] args) {

int [] data = {21,34,65,8,90,12};

System.out.println(Arrays.toString(data));

System.out.println("------------------------------------------");

//第一轮:

for (int i = 0; i < data.length - 1; i++) {

if (data[i] > data[i+1]) {

int t = data[i+1];

data[i+1] = data[i];

data[i] = t;

}

System.out.println(Arrays.toString(data));

}

System.out.println("------------------------------------------");

//第二轮:

for (int i = 0; i < data.length - 2; i++) {

if (data[i] > data[i+1]) {

int t = data[i+1];

data[i+1] = data[i];

data[i] = t;

}

System.out.println(Arrays.toString(data));

}

System.out.println("------------------------------------------");

//第三轮:

for (int i = 0; i < data.length - 3; i++) {

if (data[i] > data[i+1]) {

int t = data[i+1];

data[i+1] = data[i];

data[i] = t;

}

System.out.println(Arrays.toString(data));

}

System.out.println("------------------------------------------");

//第四轮:

for (int i = 0; i < data.length - 4; i++) {

if (data[i] > data[i+1]) {

int t = data[i+1];

data[i+1] = data[i];

data[i] = t;

}

System.out.println(Arrays.toString(data));

}

System.out.println("------------------------------------------");

//第五轮:

for (int i = 0; i < data.length - 5; i++) {

if (data[i] > data[i+1]) {

int t = data[i+1];

data[i+1] = data[i];

data[i] = t;

}

System.out.println(Arrays.toString(data));

}

System.out.println("------------------------------------------");

}

}

运行结果:

[21, 34, 65, 8, 90, 12]

------------------------------------------

[21, 34, 65, 8, 90, 12]

[21, 34, 65, 8, 90, 12]

[21, 34, 8, 65, 90, 12]

[21, 34, 8, 65, 90, 12]

[21, 34, 8, 65, 12, 90]

------------------------------------------

[21, 34, 8, 65, 12, 90]

[21, 8, 34, 65, 12, 90]

[21, 8, 34, 65, 12, 90]

[21, 8, 34, 12, 65, 90]

------------------------------------------

[8, 21, 34, 12, 65, 90]

[8, 21, 34, 12, 65, 90]

[8, 21, 12, 34, 65, 90]

------------------------------------------

[8, 21, 12, 34, 65, 90]

[8, 12, 21, 34, 65, 90]

------------------------------------------

[8, 12, 21, 34, 65, 90]

------------------------------------------

改进

package wwl.array;

import java.util.Arrays;

/**

* 改进:冒泡排序从小到大

*/

public class arraymaopaopaixu {

public static void main(String[] args) {

int [] data = {21,34,65,8,90,12};

System.out.println(Arrays.toString(data));

System.out.println("------------------------------------------");

//第一轮:

for(int j = 0;j < data.length-1 ;j++) {

for (int i = 0; i < data.length - 1 - j; i++) {

if (data[i] > data[i+1]) {

int t = data[i+1];

data[i+1] = data[i];

data[i] = t;

}

System.out.println(Arrays.toString(data));

}

System.out.println("------------------------------------------");

}

}

}

[21, 34, 65, 8, 90, 12]

------------------------------------------

[21, 34, 65, 8, 90, 12]

[21, 34, 65, 8, 90, 12]

[21, 34, 8, 65, 90, 12]

[21, 34, 8, 65, 90, 12]

[21, 34, 8, 65, 12, 90]

------------------------------------------

[21, 34, 8, 65, 12, 90]

[21, 8, 34, 65, 12, 90]

[21, 8, 34, 65, 12, 90]

[21, 8, 34, 12, 65, 90]

------------------------------------------

[8, 21, 34, 12, 65, 90]

[8, 21, 34, 12, 65, 90]

[8, 21, 12, 34, 65, 90]

------------------------------------------

[8, 21, 12, 34, 65, 90]

[8, 12, 21, 34, 65, 90]

------------------------------------------

[8, 12, 21, 34, 65, 90]

------------------------------------------

由大到小:

data[i] < data[i+1]

Math.random()是令系统随机选取大于等于 0.0 且小于 1.0 的伪随机 double 值

2.使用方法:

例:

int num = (int)(Math.random()*2+1)

以上代码即设置一个随机1到3(取不到3)的变量num。

例如:

首先Math.random()*52 //这样我们就能得到一个 >=0 且 <52的数

然后加1:Math.random()*52 + 1 //现在这个数就 >=1 且 <53

【应用场景描述:】

用Math类的random()方法产生一个字符,若该字符是一个大写英文字母,则输入 “Yes!”,否则输出“NO”。

random()方法产生的随机数在0.0和1.0之间,乘以128后,其值在0.0和128.0之间,将它转换为char类型后,用if来判断是否在’A’ 和’Z’之间。

【程序如下:】

public class IsUpper{

public static void main(String [] args){

char ch;

ch = ( char ) ( Math.random() * 128);

if ( ch >= 'A' && ch <= 'Z'){

System.out.println("Yes!");}else{

System.out.println("No!");}

}

}

例题:定义一个方法,返回长度为10的整数数组,对数组的元素进行随机初始化100内的正整数,要求数组中的元素不重复

package wwl.array;

import java.util.Arrays;

/**

* 定义一个方法,返回长度为10的整数数组,对数组的元素进行随机初始化100内的正整数,要求数组中的元素不重复

*

*/

public class test03 {

public static void main(String[] args) {

int [] mydata = getArray();

System.out.println(Arrays.toString(mydata));//和下边那句一样

System.out.println(Arrays.toString(getArray()));

}

public static int[] getArray(){

int [] data = new int[10];

for(int i = 0;i < data.length;i++) {

int xx = (int)(Math.random() * 100 + 1);

//判断xx是否在 数组中,如果xx在数组中,需要重新生成

while( exist(data, xx) ) {

xx = (int)(Math.random() * 100 + 1);

}

data[i] = xx;

}

Arrays.sort(data);//排序

return data;

}

//判断key元素是否在myarray数组中,存在返回true值

public static boolean exist(int [] myarray,int key) {

for(int i = 0;i < myarray.length;i++) {

if(key == myarray[i]) {

return true;

}

}

return false;

}

}

练习用户登录

package wwl.array;

/**

* 测试类

*/

import java.util.Scanner;

import javax.security.auth.x500.X500Principal;

public class test08 {

static Scanner sc = new Scanner(System.in);

static UserManager manager = new UserManager();

public static void main(String[] args) {

while (true) {

System.out.println("请选择你的操作");

System.out.println("\t1.用户操作,2.用户登录,3.退出程序");

int choise = sc.nextInt();

switch (choise) {

case 1:

register();

break;

case 2:

login();

break;

default:

return;// 直接结束main方法执行;

}

}

}

//用户登录

private static void login() {

System.out.println("请输入用户名");

String username = sc.next();

System.out.println("请输入密码:");

String password = sc.next();

User user = new User();

user.setUsernameString(username);

user.setPassword(password);

if (manager.userExit(user)) {

System.out.println("登陆成功");

} else {

System.out.println("用户名或密码不正确");

}

}

//用户注册

private static void register() {

System.out.println("请输入用户名");

String username = sc.next();

// 如果用户名存在,需要重新输入

while (manager.usernameExist(username)) {

System.out.println("用户名已存在,需重新输入");

username = sc.next();

}

// 对用户输入进行验证,验证用户名长度必须大于6个字符

if (username.length() <= 6) {

System.out.println("用户名长度必须大于6个字符");

return;

}

System.out.println("请输入密码:");

String password = sc.next();

// 对密码验证,要求既有字母又有数字,长度大于6

//if (password.length() <= 6) {

//System.out.println("密码长度必须大于6");

//return;

//}

while(!password.matches("(?![0-9]+$)(?![a-zA-Z]+$)\\w{6,}")) { //正则表达式!!

System.out.println("密码格式错误");

return;

}

// 创建User对象,设置User用户名和和密码,然后把user添加到数组里

User user = new User();

user.setUsernameString(username);

user.setPassword(password);

manager.add(user);

System.out.println("注册成功");

}

}

正则表达式:

package wwl.Class;

/**

* 正则表达式

* 就是一个模式串,常用于判断字符串是否匹配指定的模式

* [abc] 匹配abc中的一个,要么是a,要么是b,要么是c

* . 任意字符

* \d 数字

* \s 空白字符

* \w 单词字符[a-zA-Z0-9]

* X? 0次或一次

* X* 任意次

* X+ 至少一次

* X{n} 正好n次

* X{n,} 至少n次

* x{n,m} 至少n次最多m次

*

*/

public class zhengzebiaoda {

public static void main(String[] args) {

//1.matches()判断字符串是否匹配正则表达式格式

String emailString = "gasd54h@163.com";

//判断是否为邮箱格式

String pattern = "\\w{6,}@\\w{2,}\\.(com|net|cn)";

System.out.println(emailString.matches(pattern));

//2.replaceAll

String text = "王123";

text = text.replaceAll("\\d", "*");

System.out.println(text);

//3.split()字符串分割

text = "Good good study,day day up!";

//把字符串中的单词分离出来,英文单词之间使用空格,tab,英文标点符号

String[] words = text.split("[\\s,.!?]+");

for (String string : words) {

System.out.println(string);

}

text = "name:lisi,age:18;name:angwu,age:20;name:feifei,age:28";

//把字符串中的人的信息分离出来,创建Person对象,把这三个人的信息保存到数组中

//创建一个Person类包含姓名年龄两个字段

//把字符串的信息分离出来, split("[:,;]"); ---->4个一组

//Person[] personsss = new Person[3]----->类似前边的一个题

}

}

package wwl.array;

/**

* 用户类

*/

public class User {

private String usernameString;

private String password;

public String getUsernameString() {

return usernameString;

}

public void setUsernameString(String usernameString) {

this.usernameString = usernameString;

}

public String getPassword() {

return password;

}

public void setPassword(String password) {

this.password = password;

}

@Override

public int hashCode() {

final int prime = 31;

int result = 1;

result = prime * result + ((password == null) ? 0 : password.hashCode());

result = prime * result + ((usernameString == null) ? 0 : usernameString.hashCode());

return result;

}

@Override

public boolean equals(Object obj) {

if (this == obj)

return true;

if (obj == null)

return false;

if (getClass() != obj.getClass())

return false;

User other = (User) obj;

if (password == null) {

if (other.password != null)

return false;

} else if (!password.equals(other.password))

return false;

if (usernameString == null) {

if (other.usernameString != null)

return false;

} else if (!usernameString.equals(other.usernameString))

return false;

return true;

}

}

package wwl.array;

import java.util.Arrays;

/**

用户管理类,定义数组保存用户信息,定义add方法向数组添加用户,

定义一个方法usernameExist(String)判断用户名是否存在。

定义方法userExit(User)判断用户是否存在。

*

*/

public class UserManager {

private User[] usersss;//定义数组保存用户信息

private int size;//数组中用户的数量

//无参构造对用户数组初始化

public UserManager() {

usersss = new User[5];//默认长度为5

}

//通过构造方法指定用户初始化的大小,在使用数组中尽量避免频繁扩容

public UserManager(int capacity) {

usersss = new User[capacity];

}

//定义数组保存用户信息,定义add方法向数组添加用户

public void add(User u) {

//判断用户数组是否已满,

if(size >= usersss.length) {

usersss = Arrays.copyOf(usersss, usersss.length*2);

}

usersss[size] = u;

size++;

}

//定义一个方法usernameExist(String)判断用户名是否存在。

public boolean usernameExist(String username) {

for(int i = 0;i < size;i++) {

if(usersss[i].getUsernameString().equals(username)) {

return true;

}

}

return false;

}

// 定义方法userExit(User)判断用户是否存在。

public boolean userExit(User u) {

for (int i = 0; i < size; i++) {

if(usersss[i].equals(u)) {

return true;

}

}

return false;

}

}

选择排序算法:

package wwl.array;

import java.util.Arrays;

/**

* 选择最小的元素交换到前面

* 选择法排序,与冒泡排序相比交换次数减少!

*/

public class arraychoose {

public static void main(String[] args) {

int [] data = {21,34,65,8,90,12};

System.out.println(Arrays.toString(data));

System.out.println("------------------------------------------");

//找数组最小的元素交换到0位置:

for(int x = 0; x < data.length-1; x++) {

int min = x;

for (int i = min + 1; i < data.length; i++) {

if(data[i] < data[min]) {

min = i;

}

}

//把min元素交换到0位置

if(min != x) {

int t = data[x];

data[x] = data[min];

data[min] = t;

System.out.println(Arrays.toString(data));

System.out.println("------------------------------------------");

}

}

找数组第二小的元素交换到1位置:

//min = 1;

//for (int i = min + 1; i < data.length; i++) {

//if(data[i] < data[min]) {

//min = i;

//}

//}

把min元素交换到0位置

//t = data[1];

//data[1] = data[min];

//data[min] = t;

//System.out.println(Arrays.toString(data));

//System.out.println("------------------------------------------");

}

//。。。。。。。。。。。。。。。。第三第四第五等一样的操作

}

二分查找

package wwl.array;

/**

* 二分查找(折半查找)

* 二分查找的前提是数组由小到大排序

*

*/

public class Test05 {

public static void main(String[] args) {

int [] data = {8,12,21,34,65,90};

int index = binarysearch(data, 21);

System.out.println( index );

System.out.println(binarysearch(data, 8));

System.out.println(binarysearch(data, 90));

System.out.println(binarysearch(data, 100));

System.out.println(binarysearch(data, 5));

}

//在data数组中采用二分查找法,返回key元素在数组中的索引值,如果数组中不存在该元素返回-1

private static int binarysearch(int[] data, int key) {

int begin = 0;

int end = data.length - 1;//小心越界

int mid = (begin + end)/2;

while(begin <= end) {

if(data[mid] == key) {

return mid;

}else if (data[mid] < key){//查找的元素key比中间数大,说明在又半

begin = mid + 1;

mid = (begin + end)/2;

}else {//查找的元素比中间元素小,在左一半

end = end - 1;

mid = (begin + end)/2;

}

}

return -1;

}

}

== 数组练习==

package wwl.array;

import java.util.Scanner;

/**

* 定义一个存储10个int类型的数组,从键盘上输入10个整数给数组元素赋值

* 把数组的元素打印到屏幕上,要求for循环/foreach循环

* 找出数组中最大值元素的下标,打印出来

*/

public class Test06 {

public static void main(String[] args) {

//定义数组存储10个int数据

int [] data = new int[10];

Scanner input = new Scanner(System.in);

for(int i = 0; i < data.length; i++) {

System.out.println("请输入第" + (i+1) + "个数");

data[i] = input.nextInt();

}

for (int xx : data) {

System.out.print(xx);

}

//找出数组中最大值元素的下标,打印出来

int max = 0;

for(int x = max + 1 ; x < data.length;x++) {

if(data[max] < data[x]) {

max = x;

}

}

System.out.println("最大值的下标为" + max);

System.out.println("最大值的为" + data[max]);

}

}

java二位数组biaoda_java基础 day14 数组 二维数组 冒泡排序 例题(正则表达式)相关推荐

  1. c语言二维数组表示坐标,c语言多维数组地址的表示方法

    c语言多维数组地址的表示方法 导语:我们知道数组名就是指针常量.下面让我们了解一下多维数组的地址表现方法. 设有整型二维数组a[3][4]如下: 0 1 2 3 4 5 6 7 8 9 10 11 设 ...

  2. 数据结构(C)必会知识点+易错点:数组和广义表(n维数组地址计算公式,特殊矩阵对称矩阵的存储,广义表的表示方法)

    一,n维数组地址计算公式 ji表示n维数组中该元素在第i维中的坐标 ai表示n维数组中第i维的起始坐标 bi表示第i维度的长度 L表示一个元素所占的字节数 LOC(-)表示该坐标对应的存储中的地址(一 ...

  3. VBA: 什么是多维数组:从4维数组说起。兼3维数组和数组嵌套的区别

    结论: 本文涉及内容 从4维数组看对多维数组的认识 3维数组和数组嵌套的区别 以及3维数组与redim()的使用注意点 数组的dim arr1() 或 redim arr1() 数组可以dim 或者r ...

  4. 小白自学笔记——JAVA基础 3.2 多维数组

    名词解释 Java 语言里提供了支持多维数组的语法. 如果说可以把一维数组当成几何中的线性图形,那么二维数组就相当于是一个表格,像Excel中的表格一样. 对于二维数组的理解,我们可以看成是一维数组a ...

  5. java 打印三维数组_Java基础第三天_数组

    1.定义一个函数,函数功能是动态提取int[]中元素的最大值. 2.定义一个函数,从数组中查询指定的元素首次出现的位置. 3.定义函数,完成冒泡排序,大数下沉. 4.折半查找. 5.阐述 6.定义一个 ...

  6. java枚举类型数组_Java基础(七)泛型数组列表ArrayList与枚举类Enum

    一.泛型数组列表ArrayList 1.在Java中,ArrayList类可以解决运行时动态更改数组的问题.ArrayList使用起来有点像数组,但是在添加或删除元素时,具有自动调节数组容量的功能,而 ...

  7. Java基础动态初始化二维数组

    直接上代码: //动态初始化二维数组 public class ArrayTest09 {public static void main(String[] args) {//定义一个二维数组并动态初始 ...

  8. 二维数组 赋值_3.9数组(数组基本使用、数组的循环、数组拷贝、数组排序、多维数组)...

    3.9数组 3.9.1数组基本使用 数组,英文叫Array,是一种数据结构,是用来存放同一数据类型数值的集合.例如存放30个int型数值.存放100个double型数值等等. 我们知道使用一个变量,需 ...

  9. java多维数组的反射类型_Java多维数组和Arrays类方法总结详解

    一.数组的三种声明方式总结 public class WhatEver { public static void main(String[] args) { //第一种 例: String[] tes ...

最新文章

  1. 学习Cassandra资料的一些整理
  2. websphere变成英文了
  3. javascript select option对象总结
  4. poj3296--Rinse(三分)
  5. python字符串解释_python基础之字符串详解
  6. [Redux/Mobx] 在Redux中怎么发起网络请求?
  7. react不同环境不同配置angular_叫雨山斗鸡优势在哪里,环境不同,价值不同
  8. 我对前端技术更新的看法以及未来发展趋势预测
  9. 稳住 稳住 。不要急!
  10. JavaScript表单验证年龄
  11. C语言 java 判断闰年,一个月有多少天
  12. 基金投资基本常识【狂神说】
  13. 【长期维护】程序员锻炼法则
  14. STM32F03学习笔记之ADC配置(含DMA配置)
  15. 与男友相爱7年的点滴,让我知道什么是好男人!(ZT)
  16. 网页制作的形式美的规则
  17. 【深度学习】VGG16--slim
  18. 4.24 使用形状生成器工具绘制星形图标 [Illustrator CC教程]
  19. 《《《翻译》》》pointfusion三维包围盒
  20. Ubuntu18.04服务器端安装Nvidia 430显卡驱动+cuda10.0+cudnn7.6

热门文章

  1. android webrtc 视频旋转
  2. Tomcat startup.bat 打开闪退,添加pause后不报错但无法响应,以及 -Djava.endorsed.dirs=Tomcat\endorsed is not supported问题
  3. ffmpeg 截取视频片段
  4. Android Studio 常见报错
  5. 18- Adaboost梯度提升树 (集成算法) (算法)
  6. 11.①事件冒泡:取消冒泡event.cancelBubble=true或.sopImmediatePropagation()②事件绑定addEventListener(参数1,参2,参3)③事件传播
  7. 数码管显示拨码开关编码 PROTEUS 和51单片机教程(附仿真文件+源代码)
  8. 常见距离度量方法优缺点对比!
  9. lipstick effect 口红效应
  10. 正则限制除一些标点符号,中文,数字,字母。以外都限制