目 录

第1章 基本类型包装类
1.1 概述
1.2 基本类型和对象转换
1.3 自动装箱拆箱
第2章 System类
2.1 概念
2.2 常用方法
2.3 System类的方法练习
第3章 Math类
3.1 概念
3.2 常用方法
第4章 Arrays类
4.1 概念
4.2 常用方法
4.3 Arrays类的方法练习
第5章 大数据运算
5.1 BigInteger
5.2 BigDecimal

第1章 基本类型包装类

1.1 基本类型包装类概述

1)基本类型包装类的产生
在实际程序使用中,程序界面上用户输入的数据都是以字符串类型进行存储的。而程序开发中,我们需要把字符串数据,根据需求转换成指定的基本数据类型,如年龄需要转换成int类型,考试成绩需要转换成double类型等

2)八种基本类型对应的包装类

       char    Characterint     Integerbyte    Byteshort   Shortlong    Longfloat   Floatdouble  Doubleboolean Boolean

3)基本数据类型对象包装类特点

  • 用于在基本数据和字符串之间进行转换。

① 将字符串转成基本类型:

parseXXX(String s);其中XXX表示基本类型,参数为可以转成基本类型的字符串,如果字符串无法转成基本类型,将会发生数字转换的问题 NumberFormatException
System.out.println(Integer.parseInt(“123”) + 2);
//打印结果为 125

② 将基本数值转成字符串有3种方式:
 基本类型直接与””空字符串相连接即可;34+””
 调用String的valueOf方法;String.valueOf(34) ;

 调用包装类中的toString方法;Integer.toString(34) ;

1.2 基本类型和对象转换

下面使用int类型与Integer对象转换进行演示,其他基本类型转换方式相同。

1) Integer类将字符串转成基本类型: String → int
① Integer类parseInt(String s ) 方法

/** Integer类,封装基本数据类型* 将字符串转成基本数据类型int*/
public class IntegerDemo {public static void main(String[] args) {function() ;}/** Integer类中静态方法parseInt(String s ) 返回值为基本数据类int* 要求:字符串必须是数字格式的*/public static void function() {int i = Integer.parseInt("-12");//注意:parseInt(" 12")多了一个空格也是不可以的,但支持负数System.out.println(i/2);//输出结果为:-6}
}

② Integer类parseInt(String s,int radix ) 方法

public class IntegerDemo {public static void main(String[] args) {function1() ;}/**  Integer类中静态方法parseInt(String s,int radix ) *   radix为基数,表示进制*/public static void function1() {int i = Integer.parseInt("110",2);//parseInt("110",2)表示110是2进制的,但是parseInt的结果都是十进制的System.out.println(i);//输出结果为:6     }public static void function () {int i = Integer.parseInt("A",16);//parseInt("A",16)表示A是16进制的,parseInt的结果都是十进制的System.out.println(i);//输出结果为:10 }
}    
  • 2) Integer类将基本类型转成字符串: int → String
    ① Integer类 toString(int i )方法
/** 将基本类型int转成字符串的方法:* 1.任何类型+""空字符串,就可以变成String类* 2.Integer类中的静态方法toString()*/
public class IntegerDemo2 {public static void main(String[] args) {function () ;}public static void function () {int i = 3 ;String s = i +"";System.out.println(s+1);//输出结果:31String s1 = Integer.toString(5);System.out.println(s1+1);//输出结果:51}}

② Integer类toString(int i ,int radix )方法

 /** toString(int i ,int  radix ) 将int整数转成指定的进制数*/
public class IntegerDemo2 {public static void main(String[] args) {function () ;}public static void function () {String s1 = Integer.toString(5, 2);System.out.println(s1+1);//输出结果:1011,5的2进制数为101}}
  • 3) Integer类构造方法 Integer (String s)
/** Integer类构造方法* Integer(String s)* 将数字格式的字符串,传递到Integer类的构造方法中* 创建Integer对象,包装的是一个字符串*/
public class IntegerDemo3 {public static void main(String[] args) {function() ;}public static void function() {Integer in = new Integer("100");/** 将构造方法中的字符串转成基本数据类型,调用非静态方法,inValue()*/int i = in.intValue();System.out.println(i--);//输出结果为:100 先打印再--,所以打印出来还是100//如果System.out.println(--i);输出结果为:99}
}
  • 4)Integer类其他方法
/** Integer类中的其他方法* 包括三个方法,和2个静态成员变量* */
public class IntegerDemo4 {public static void main(String[] args) {function1();}/** Integer类的静态成员变量 表示取值范围* MAX_VALUE* MIN_VALUE*/public static void  function() {System.out.println(Integer.MAX_VALUE);//输出结果为:2147483647System.out.println(Integer.MIN_VALUE);//输出结果为:-2147483647System.out.println(Long.MAX_VALUE);//输出结果为:9223372036854775807System.out.println(Long.MIN_VALUE);//输出结果为:-9223372036854775808}/** Integer类的3个静态方法* 做进制的转换* 十进制转成二进制  toBinarString(int)* 十进制转成八进制  toOctalString(int)* 十进制转成十六进制 toHexString(int)* 三个方法,返回值都是以String形式出现*/public static void  function1() {System.out.println(Integer.toBinaryString(99));//输出结果为:1100011System.out.println(Integer.toOctalString(99));//输出结果为:143System.out.println(Integer.toHexString(99));//输出结果为:63}
}
1.3 自动装箱拆箱

 自动拆箱:对象转成基本数值
 自动装箱:基本数值转成对象

public class IntegerDemo5 {public static void main(String[] args) {function() ;}/** 自动装箱拆箱的 好处: 基本类型和引用类直接运算* 自动装箱:使用Integer.valueOf(整数值)返回一个封装了该整数值的Integer对象* 自动拆箱:使用Integer对象.intValue()返回Integer对象中封装的整数值*/public static void function(){//引用类型 , 引用变量一定指向对象//自动装箱, 基本数据类型1, 直接变成了对象Integer in = 1; // 相当于Integer in = new Integer(1)//in 是引用类型,不能和基本类型运算, 自动拆箱,引用类型in,转换基本类型//in+1  ==> in.inValue()+1 = 2    //in = 2    自动装箱in = in + 1;System.out.println(in);}}

/** 关于装箱和拆箱的一些题目*/
public class IntegerDemo6 {public static void main(String[] args) {function ();}public static void function () {Integer i = new Integer(1);Integer j = new Integer(1);System.out.println(i==j);//输出结果为:false 引用类型==比较的时候比较的是地址System.out.println(i.equals(j));//输出结果为:true 继承Object重写equals,比较的是对象的数据System.out.println("=======================");Integer a = 500;Integer b = 500;System.out.println(a==b);//输出结果为:falseSystem.out.println(a.equals(b));//输出结果为:trueSystem.out.println("=======================");//数据在byte范围内,JVM不会重新new对象Integer aa = 127;//相当于:Integer aa = new Integer(127);Integer bb = 127;//相当于:Integer bb = aa;System.out.println(aa==bb);//输出结果为:trueSystem.out.println(aa.equals(bb));//输出结果为:true}
}

第2章 System类

2.1 概念
  • 在API中System类介绍的比较简单,我们给出定义,System中代表程序所在系统,提供了对应的一些系统属性信息,和系统操作。
  • System类不能手动创建对象,因为构造方法被private修饰,阻止外界创建对象。System类中的都是static方法,类名访问即可。在JDK中,有许多这样的类。
2.2 常用方法

1) currentTimeMillis() :
① 获取当前系统时间与1970年01月01日00:00点之间的毫秒差值
② 用于计算程序的执行时间,代码示例:

public class SystemDemo {public static void main(String[] args) {function();}/** 获取系统当前毫秒值* static long currentTimeMillis()* 对程序执行时间进行测试*/public static void function() {long start = System.currentTimeMillis();for(int i = 0;i<10000;i++) {System.out.println(i);//输出结果为1-9999}long end = System.currentTimeMillis();System.out.println(end-start);//输出结果为80 毫秒}
}

2) exit(int status):
① 用来结束正在运行的Java程序。参数传入一个数字即可。通常传入0记为正常终止,其他非0为异常终止,代码示例:

public class SystemDemo1 {public static void main(String[] args) {function() ;}/** 推出虚拟机,停止全部程序* static void exit(0);* */public static void function() {//System.exit(0);//写在这里一次都不打印while(true) {System.out.println("hello");System.exit(0);//写在这里打印一次 hello}//System.exit(0);写在这里就报错了}
}

3) gc() 用来运行JVM中的垃圾回收器,完成内存中垃圾的清除。

public class Person {public void finalize() {System.out.println("垃圾收取了");}
}
public class SystemDemo2 {public static void main(String[] args) {function() ;}/** JVM的内存中,收取对象的垃圾* static void gc()*/public static void function() {new Person();new Person();new Person();new Person();new Person();new Person();System.gc();//没有输出结果}
}

4) getProperties() 用来获取当前操作系统属性

public class SystemDemo6 {public static void main(String[] args) {function();}/**  获取当前操作系统的属性:例如操作系统名称,*  static Properties getProperties() */public static void function(){System.out.println( System.getProperties() );}//输出结果为:{java.runtime.name=Java(TM) SE Runtime Environment……}

5)arraycopy(Object src, int srcPos, Object dest, int destPos, int length)方法,用来实现将源数组部分元素复制到目标数组的指定位置

public class SystemDemo7 {public static void main(String[] args) {function();}/** System类方法,复制数组* arraycopy(Object src, int srcPos, Object dest, int destPos, int length)* Object src, 要复制的源数组* int srcPos, 数组源的起始索引* Object dest,复制后的目标数组* int destPos,目标数组起始索引 * int length, 复制几个*/public static void function(){int[] src = {11,22,33,44,55,66};int[] desc = {77,88,99,0};System.arraycopy(src, 1, desc, 1, 2);//将src数组的1位置开始(包含1位置)的两个元素,拷贝到desc的1,2位置上//遍历数组,查看复制后的效果for(int i = 0 ;  i < desc.length ; i++){System.out.println(desc[i]);//输出结果为:77  22  33  0}}
}
2.3 System类的方法练习

1)练习一:验证for循环打印数字1-9999所需要使用的时间(毫秒)

public static void main(String[] args) {long start = System.currentTimeMillis();for (int i=0; i<10000; i++) {System.out.println(i);
}
long end = System.currentTimeMillis();
System.out.println("共耗时毫秒:" + (end-start) );
}

2)练习二:将src数组中前3个元素,复制到dest数组的前3个位置上
复制元素前:src数组元素[1,2,3,4,5],dest数组元素[6,7,8,9,10]
复制元素后:src数组元素[1,2,3,4,5],dest数组元素[1,2,3,9,10]

public static void main(String[] args) {
int[] src = new int[]{1,2,3,4,5};
int[] dest = new int[]{6,7,8,9,10};
System.arraycopy( src, 0, dest, 0, 3);
代码运行后:两个数组中的元素发生了变化
src数组元素[1,2,3,4,5]
dest数组元素[1,2,3,9,10]
}

3)练习三:循环生成100-999之间的的三位数并进行打印该数,当该数能被10整除时,结束运行的程序

public static void main(String[] args){Random random = new Random();while(true){int number = random.nextInt(900)+100; //0-899 + 100if (nmumber % 10 == 0) {System.exit(0);}}
}

第3章 Math类

3.1 概念
  • Math 类是包含用于执行基本数学运算的方法的数学工具类,如初等指数、对数、平方根和三角函数。
    类似这样的工具类,其所有方法均为静态方法,并且一般不会创建对象。如System类
3.2 常用方法
/** 数学计算的工具类* Java.lang.Math  静态方法组成*/
public class MathDemo {public static void main(String[] args) {function_6();}/**  static double round(doubl d)   传double返回double*  获取参数的四舍五入,取整数*/public static void function_6(){double d = Math.round(5.4195);System.out.println(d);//输出结果为:5.0}/**  static double random() 返回随机数 0.0-1.0之间*  来源,也是Random类*/public static void function_5(){for(int i = 0 ; i < 10 ;i++){double d = Math.random();System.out.println(d);//结果输出十个0-1之间的小数}}/** static double sqrt(double d)   传double返回double* 返回参数的平方根*/public static void function_4(){double d = Math.sqrt(-2);System.out.println(d);//若输入负数输出结果为:NaN  含义not a number }/** static double pow(double a, double b)   传double返回double* a的b次方*/public static void function_3(){double d = Math.pow(2, 3);System.out.println(d);//输出结果为:8.0}/** static double floor(double d)   传double返回double* 返回小于或者等于参数d的最大整数*/public static void function_2(){double d = Math.floor(-1.5);System.out.println(d);//输出结果为:-2.0}/**  static double ceil(double d)  传double返回double*  返回大于或者等于参数d的最小整数*/public static void function_1(){double d = Math.ceil(5.1);//若输入-11.5   结果为-11.0System.out.println(d);//输出结果为:6.0 }/**  static int abs(int i)  传int返回int*  获取参数的绝对值*/public static void function(){int i = Math.abs(-9);System.out.println(i);//输出结果为:9}
}

第4章 Arrays类

4.1 概念
  • 此类包含用来操作数组(比如排序和搜索)的各种方法。需要注意,如果指定数组引用为 null,则访问此类中的方法都会抛出空指针异常NullPointerException。
4.2 常用方法
import java.util.Arrays;/** 数组的工具类,包含数组的操作* Java.util.Arrays*/
public class ArrayDemo {public static void main(String[] args) {function_2();}/**  static String toString(数组)*  将数组变成字符串*/public static void function_2(){int[] arr = {5,1,4,6,8,9,0};String s = Arrays.toString(arr);System.out.println(s);//输出结果为:[5, 1, 4, 6, 8, 9, 0] }/**  static int binarySearch(数组, 被查找的元素)*  数组的二分搜索法(使用二分查找的前提是必须是有序数组)*  返回元素在数组中出现的索引*  元素不存在, 返回的是:(-插入点-1),若下例输入10,返回值为-5,即先把10按照排序放入原来数组,其索引数的负数再减1*/public static void function_1(){int[] arr = {1,4,7,9,11,15,18};int index =  Arrays.binarySearch(arr, 7);System.out.println(index);//输出结果为:2}/**  static void sort(数组)*  对数组升序排列*/public static void function(){int[] arr = {5,1,4,6,8,9,0};Arrays.sort(arr);//进行排序//遍历数组查看效果for (int i = 0; i < arr.length; i++) {System.out.println(arr[i]);//输出结果:0 1 4 5 6 8 9 }}
}
4.3 Arrays类的方法练习

1)需求:定义一个方法,接收一个数组,数组中存储10个学生考试分数,该方法要求返回考试分数最低的后三名考试分数。
2)代码示例:

public class ArrayDemo {public static void main(String[] args) {function_2();int[] arr = {56,65,11,98,57,43,16,18,100,200};int[] newArray = test(arr);System.out.println(Arrays.toString(newArray));//输出结果为:[11, 16, 18]}/**  定义方法,接收输入,存储的是10个人考试成绩*  将最后三个人的成绩,存储到新的数组中,返回新的数组*/public static int[] test(int[] arr){//对数组排序Arrays.sort(arr);//将最后三个成绩存储到新的数组中int[] result = new int[3];//成绩最少的三个元素,复制到新数组中System.arraycopy(arr, 0, result, 0, 3);return result;}
}

或者:

public class ArrayDemo {public static void main(String[] args) {function_2();int[] arr = {56,65,11,98,57,43,16,18,100,200};int[] newArray = test(arr);System.out.println(Arrays.toString(newArray));}public static int[] test(int[] arr){//对数组排序Arrays.sort(arr);//将最后三个成绩存储到新的数组中int[] result = new int[3];//成绩最少三个元素,复制到新数组中//  System.arraycopy(arr, 0, result, 0, 3);for(int i = 0 ;  i < 3 ;i++){result[i] = arr[i];}return result;}

第5章 大数据运算

5.1 BigInteger
  • java中long型为最大整数类型,对于超过long型的数据如何去表示呢?在Java的世界中,超过long型的整数已经不能被称为整数了,它们被封装成BigInteger对象.在BigInteger类中,实现四则运算都是方法来实现,并不是采用运算符.
  • BigInteger类的构造方法:

    • 构造方法中,采用字符串的形式给出整数
      代码示例:
import java.math.BigInteger;public class BigIntegerDemo {public static void main(String[] args) {function();}/** BigInteger类的构造方法* 传递字符串,要求数字格式,没有长度限制*/public static void function(){BigInteger b = new BigInteger("8465846668464684562385634168451684568645684564564");System.out.println(b);BigInteger b1 = new BigInteger("5861694569514568465846668464684562385634168451684568645684564564");System.out.println(b1);}}
  • 四则运算代码:
import java.math.BigInteger;public class BigIntegerDemo {public static void main(String[] args) {function_1();}/** BigInteger对象的四则运算* 调用方法计算,计算结果也只能是BigInteger对象*/public static void function_1(){BigInteger b1 = new BigInteger("5665464516451051581613661405146");BigInteger b2 = new BigInteger("965855861461465516451051581613661405146");//计算 b1+b2对象的和,调用方法 addBigInteger bigAdd = b1.add(b2);//965855867126930032902103163227322810292System.out.println(bigAdd);//计算b1-b2对象的差,调用方法subtractBigInteger bigSub = b1.subtract(b2);System.out.println(bigSub);//计算b1*b2对象的乘积,调用方法multiplyBigInteger bigMul = b1.multiply(b2);System.out.println(bigMul);//计算b2/b1对象商,调用方法diviedBigInteger bigDiv = b2.divide(b1);System.out.println(bigDiv);}
}
5.2 BigDecimal

1)BigDecimal类概述

  • double和float类型在运算中很容易丢失精度,造成数据的不准确性,Java提供我们BigDecimal类可以实现浮点数据的高精度运算
    /** 计算结果,未知* 原因: 计算机二进制中,表示浮点数不精确造成* 超级大型的浮点数据,提供高精度的浮点运算, BigDecimalSystem.out.println(0.09 + 0.01);//0.09999999999999999System.out.println(1.0 - 0.32);//0.6799999999999999System.out.println(1.015 * 100);//101.49999999999999System.out.println(1.301 / 100);//0.013009999999999999 */ 
  • 建议浮点数据以字符串形式给出,因为参数结果是可以预知的
    2)BigDecimal类实现加法减法乘法
import java.math.BigDecimal;public class BigDecimalDemo {public static void main(String[] args) {function();}/**  BigDecimal实现三则运算*  + - **/public static void function(){BigDecimal b1 =  new BigDecimal("0.09999999999999999");BigDecimal b2 =  new BigDecimal("0.0111111111111");//计算b1+b2的和,调用方法addBigDecimal bigAdd = b1.add(b2);System.out.println(bigAdd);//输出结果为:0.11111111111109999BigDecimal b3 = new BigDecimal("1");BigDecimal b4 = new BigDecimal("0.32");//计算b3-b2的差,调用方法subtractBigDecimal bigSub = b3.subtract(b4);System.out.println(bigSub);//输出结果为:0.68BigDecimal b5 = new BigDecimal("1.015");BigDecimal b6 = new BigDecimal("100");//计算b5*b6的成绩,调用方法 multiplyBigDecimal bigMul = b5.multiply(b6);System.out.println(bigMul);//输出结果为:101.500}
}

3)BigDecimal类实现除法

import java.math.BigDecimal;public class BigDecimalDemo1 {public static void main(String[] args) {function_1();}/** BigDecimal实现除法运算*/public static void function(){BigDecimal b1 = new BigDecimal("1.0301");BigDecimal b2 = new BigDecimal("100");//计算b1/b2的商,调用方法diviedBigDecimal bigDiv = b1.divide(b2);//输出结果为:0.010301System.out.println(bigDiv);}/** BigDecimal除法运算中除不尽的情况* divide(BigDecimal divisor, int scale, int roundingMode) * int scale : 保留几位小数* int roundingMode : 保留模式* 保留模式 阅读API文档*   static int ROUND_UP  向上+1*   static int ROUND_DOWN 直接舍去*   static int ROUND_HALF_UP  >= 0.5 向上+1  即四舍五入*   static int ROUND_HALF_DOWN   > 0.5 向上+1 ,否则直接舍去*/public static void function_1(){BigDecimal b1 = new BigDecimal("1.0301");BigDecimal b2 = new BigDecimal("101");//计算b1/b2的商,调用方法diviedBigDecimal bigDiv = b1.divide(b2,5,BigDecimal.ROUND_HALF_UP);//输出结果为:0.01020System.out.println(bigDiv);}
}

JAVA SE — Day 17相关推荐

  1. 【Step1】Java SE Development Kit 17.0.6

    点击下方链接 Java SE 17 Archive Downloads 选择下载文件(以windows x64 installer为例) 运行安装文件 点下一步 [可选]更改安装文件夹 点下一步 [可 ...

  2. Java SE 7 Update 17的安装配置及相关问题解决

    Java SE 7 Update 17 小声说 Eclipse Java EE集成开发环境 下载 安装 配置 总结 小声说 首先非常感谢大家的认可,近一周来收到些私信,有些没及时回复十分不好意思,但是 ...

  3. Gradle项目报错:Could not target platform: ‘Java SE 17‘ using tool chain: ‘JDK 8 (1.8)‘.

    一.报错信息 > Task :compileJava FAILED FAILURE: Build failed with an exception. * What went wrong: Exe ...

  4. 【读书笔记】《写给大忙人看的Java SE 8》——Java8新特性总结

    2019独角兽企业重金招聘Python工程师标准>>> 阅读目录 接口中的默认方法和静态方法 函数式接口和Lambda表达式 Stream API 新的日期和时间 API 杂项改进 ...

  5. 零基础学JAVA]Java SE基础部分-01. Java发展及JDK配置

    1.课程名称:Java发展及JDK配置 本季介绍了JAVA的发展过程,包括JDK的发展历程,path路径的配置和classpath的配置及作用.并简单讲解了一个简单的JAVA程序,并通过此程序讲解了J ...

  6. Java SE 6 新特性 Instrumentation 新功能

    系列内容: 此内容是该系列的一部分:Java SE 6 新特性 Instrumentation 简介 利用 Java 代码,即 java.lang.instrument 做动态 Instrumenta ...

  7. Java SE 11(18.9)中的API更新

    Java SE 11也被命名为18.9(基于使用发布年份和月份的新命名方案),预计将在9月的最后一周发布GA. 频繁发布新JDK版本的新方法是允许语言创建者引入新功能,并向开发人员社区更快地进行API ...

  8. 9553下载站java,java se development kit11最新版 64位

    java se development kit11,简称java11,是一款专门进行java开发的编程软件,这款软件还拥有applet和组件的开发环境等操作,是程序员们进行java开发的飞铲不错软件, ...

  9. java se好用吗_利用 Java SE 7 更好地管理资源

    2011 年 5 月发布 作者:Julien Ponge 本文介绍 Java 7 针对自动资源管理问题给出的解决办法,即 Coin 项目中提出的新语言结构 try-with-resources 语句. ...

  10. JDK 7-JDK 21:Oracle Java SE 支持路线图/Oracle Java SE Support Roadmap 持续更新

    文章目录 前言 一.Oracle Java SE 产品版本 二.Java SE 8 的公共更新结束 三.参考文档 总结 前言 几十年来,Java 生态系统已经成功地经历了这个过程,经历了十次主要的平台 ...

最新文章

  1. 通过 html5 FileReader 实现上传图片预览功能
  2. 从开源自治到微服务云化,用这剂良药提升微服务幸福感
  3. [ARM] [基础][编译]ARM的浮点功能历史分类和对应的编译选项
  4. 500元/天,她们在闲鱼出租自己
  5. 把e.printStackTrace的堆栈信息打印在log.error()中
  6. java车牌号识别EasyPR_EasyPR-Java
  7. 数据库知识点汇总(最全!!)
  8. 看拉扎维《模拟CMOS集成电路设计》的一些总结和思考(八)——反馈
  9. Java基础(chapter207-chapter225)总结
  10. 一定能用到的简单但实用的五种按钮样式(HTML+CSS步骤详解,含详细注释)
  11. Day11:麦卡锡91函数(McCarthy 91)
  12. 继 layui 之后, jQuery Mobile 宣布完全弃用!
  13. 「效率工具」HHKB的常用快捷键
  14. DeepFM Pytorch实现(Criteo数据集验证)
  15. 联想thinkcentre微型计算机,联想ThinkCentre一体机_ThinkCentre台式机-ThinkPad官网
  16. 写一个函数,输出四次“hello world“,每次间隔3秒
  17. 安全需求规范和管理指南
  18. linux查看用户家目录下的隐藏文件,linux中查看目录下隐藏文件方式?
  19. Shopify搞Dropshipping模板评测二 – Konversion
  20. IDEA插件开发.01之简单入门

热门文章

  1. 若依框架 --- 主表和明细表批量添加
  2. 盘点:中国“颜值+才华”的几位知名女程序员!如何看待女生当程序员?
  3. Unity3D开发之贪吃蛇制作
  4. (十六)MySQL约束
  5. 迄今为止最好用的Flink SQL教程:Flink SQL Cookbook on Zeppelin
  6. elementUI中dialog踩坑(首次渲染问题)
  7. Mac 下自带的中文输入法不显示汉字提示问题
  8. css 超出部分隐藏 超出部分给滚动条 超出部分展示 自动
  9. 看腾讯测试老鸟如何做接口自动化测试
  10. 成都大学美术生分数线怎么计算机,成都学院(成都大学)2018年艺术类录取分数线(四川)...