文章目录

  • Eclipse工具中java项目的工程结构
  • 静态代码块的书写格式
  • 静态代码块,构造代码块,构造方法的优先级
  • static关键字的特点
  • 封装的概念
  • private关键字的特点
  • 面向对象思想特点
  • Eclipse中一些常用的快捷键
  • 继承的概念
  • 继承的好处
  • 继承的格式
  • Java中的开发原则
  • 继承的特点
  • 继承中的注意事项
  • 继承中变量名相同的访问问题
  • 继承中子类构造方法访问父类构造方法的问题
  • this和super的区别
  • 代码块的优先级问题
  • 有关方法重写和方法重载的区别
  • 多态的概念
  • 多态的前提条件:
  • 多态的成员访问特点:
  • 多态的好处:
  • 多态的弊端:
  • 多态的向下转型使用不当,程序出现异常:
  • 有关final关键字的特点:
  • final修饰基本类型的变量和引用类型的区别
  • 冒泡排序思想
  • 冒泡排序核心代码
  • 选择排序思想
  • 选择排序核心代码
  • 抽象类的概念
  • 抽象类中抽象方法格式
  • 抽象类注意事项
  • 抽象类的本质
  • 抽象类的特点:
  • abstract关键字不能和哪些关键字共存
  • 接口的概念
  • 接口的基本注意事项:
  • 接口的特点:
  • 抽象类和接口的区别:
  • 包的编译和运行
    • 同一个包下
    • 不同包下
  • 方法的形式参数问题:(引用类型)
  • 内部类的概念
  • 内部类注意事项
  • 内部类的分类:
  • 成员内部类的访问方法
  • 成员内部类中的修饰符:
  • 权限修饰符
  • 方法返回值问题(引用类型)
  • 成员内部类中的修饰符:
  • 权限修饰符
  • 方法返回值问题(引用类型)

Eclipse工具中java项目的工程结构

静态代码块的书写格式

static{
//代码块内容
}

静态代码块,构造代码块,构造方法的优先级

静态代码块>构造代码块>构造方法

***注意: 静态代码块只执行一次

static关键字的特点

1)被static修饰的,随着类的加载而加载

2)优先于对象存在

3)可以多个对象共享,共用

4)访问方式: 类名直接访问

**被static修饰的变量推荐访问方式: 类名.变量名

**被static修饰的方法推荐访问方式: 类名.方法名

封装的概念

将类的属性或者方法私有化,保证数据的安全性,对外提供公共的访问方法

private关键字的特点

private可以修饰变量,也可以修饰方法,只能在本类中访问

但是可以间接的通过公共的方法来访问

面向对象思想特点

1)更符合生活中思想行为习惯

2)将复杂的问题简单化

3)从执行者变为指挥者

Eclipse中一些常用的快捷键

alt+/:eclipse中神键 :通过缩写或者特定的单词可以提示代码

alt+sift+s–>c :创建无参构造方法
alt+shift+s–>o :创建有参构造方法
alt+shift+s–>r :提供公共的访问方法:setXXX(Xx xx)/getXXX

ctlr+d:删除某一行代码

ctrl+shift+o: 导包的快捷键

在创建对象的时候,new 类名() ; 使用ctrl+1/ctlr+2+l(字母),自动补全代码

继承的概念

将一些类的共性抽取出来,定义到一个独立的类中,让这个独立的类和这些类产生一种关系(extends 继承关系)

继承的好处

1)提高代码的复用性

2)提高代码的维护性

3)类与类产生的继承关系是多态的前提条件

继承的格式

class 父类名{}

class 子类名 extends 父类名{}

Java中的开发原则

低耦合,高内聚

耦合:类与类之间的关系,关系越少越好(在开发中:降低程序间的耦合性---->Spring框架:IOC思想:控制反转)

内聚:完成某个事情的能力,在一个类中能完成的,尽量在一个类中完成(执行力)

继承的特点

1)java中类与类的继承,只支持单继承,不支持多继承

2)支持多层继承

继承中的注意事项

1)子类继承父类,不能继承父类的私有成员(成员变量和成员方法)

因为被private修饰的外界访问不到,只能在本类中访问,但是可以通过公共的访问方法进行访问

2)子类继承父类,不能继承父类的构造方法,但是可以通过super关键字访问父类的构造方法

继承中变量名相同的访问问题

遵循"就近原则",从方法中最近的局部变量找起,如果没有从子类成员变量找,如果没有再从父类成员变量中寻找

继承中子类构造方法访问父类构造方法的问题

子类中的构造方法默认访问父类的无参构造方法,由于存在继承关系,创建子类对象,初始化子类的时候,可能用到父类的数据,因此需要先对父类初始化(执行父类构造方法),父类初始化完毕后,才是子类初始化,也就是分层初始化

**注意: 子类中的构造方法第一句话默认存在super();

​ super代表父类空间标识

注意事项:

  • 子类的构造方法默认访问父类的无参,

  • 那么如果父类中没有提供无参构造方法?会怎么办

  • 会编译报错,因为父类有存在有参构造方法,系统不会提供无参的,又由于子类的所有构造

  • 方法默认访问父类的无参,所以报错了!

  • 如何解决呢?

  • 1)手动给出父类的无参构造方法

  • 2)可以让子类的所有构造方法,默认访问父类的有参

  • 在子类的构造方法的第一句话:super(xxx)

  • 子类中所有构造方法的一个只要能够让父类初始化即可!

  • 3)通过子类的有参构造方法,访问this()本类的无参构造方法,在通过本类的无参构造方法

  • 访问父类的有参构造(让父类先进行初始化)

    this和super的区别

  • this:代表当前类的对象地址值引用

  • super:代表父类的空间标识(父类对象的地址值引用)

  • 访问的区别

  •      this.成员变量;访问的当前类的成员变量
    
  • super.成员变量;访问的父类的成员变量

  •   this.成员方法名() ;访问的是否当前类的成员方法
    
  • super.成员方法名() ;访问的是父类的成员方法

  •      this() :访问的是本类无参构造方法
    
  • this(xxx):访问的本类的有参构造方法

  •      super():访问的是父类的无参构造方法
    
  •      super(xxx):访问的父类的有参构造方法
    

代码块的优先级问题

  • 静态代码块只执行一次,> 构造代码块 > 构造方法

  • 运行程序的时候,jvm检查语法结构,有父子关系,先加载父类,再是子类,跟static相关 先进内存

  • 2)继承中:分层初始化

  • 优先让父类初始化(执行父类的构造方法)---->子类可能用到父类的数据,所以父类先初始化,

  • 然后子类初始化(执行子类的构造方法)

    有关方法重写和方法重载的区别

方法重写:
子类继承父类,子类出现了和父类一摸一样的方法,称为方法覆盖,复写/重写… (Override)
方法重载:
定义方法的时候,方法名相同,参数列表不同,与返回值无关 (Overload)

有的时候,为了保证数据的安全性,不想让子类将父类的方法覆盖掉—?

  • 如何解决呢?

  • 针对这种情况:Java提供一个关键字:final 表示最终的,终态的,无法更改的!

  • 子类是不能覆盖父类的final修饰的方法

    多态的概念

    一个事物在不同时刻显示出的不同状态(在堆内存中的变化)

多态的前提条件:

  • 1)必须存在继承关系 (继承的好处第三点)

  • 2)要有方法重写 :

  • 举例:动物的吃和睡的功能,只要看到具体的动物类:才能知道吃和睡的功能

  • 3)需要存在:父类引用指向子类对象 (向上转型:使用的父类的东西,必须编译看左边!)

  • 格式:父类名 对象名 = new 子类名() ;

    多态的成员访问特点:

  • 父类名 对象名 = new 子类名() ;

  • 1)成员变量: 编译看左,运行看左边

  • 2)成员方法:(非静态的):编译看左边,运行看右(因为存在子类覆盖父类的方法:方法重写)

  • 3)静态的成员方法:编译看左,运行看左

  • (子类出现了和父类一摸一样的静态方法,静态方法跟类相关,不存在重写!,访问方式:类名.方法名())

  • 4)构造方法:

  • 由于存在继承关系,还需要分层初始化!

  • 方法重写:指的是非静态方法!

    多态的好处:

  •  1)提高了代码的扩展性(由多态)
    
  •  2)提高了代码的复用性,维护性(由继承关系保证)
    

多态的弊端:

  •  不能够访问子类的特有功能!
    
  • 如何解决呢?

  • 方式1:可以创建子类具体类对象 :子类名 对象名 = new 子类名() ;

  •  对象名.访问子类的自己的功能;
    
  • 但是,不好,从内存角度考虑,在堆内存中产生一个内存空间(比较消耗内存空间!)

  • 方式2:

  • 多态的第三个条件:父类引用指向子类对象 (向上转型)

  •  Fu f = new Zi() ;
    
  •  想办法:将父类的引用强制转换为子类的引用(向下转型)
    
  •  Zi z = (Zi)f;
    
  • 好处:不需要重新new对象,在堆内存是比较节省内存空间的!

  • 前提条件:要使用向下转型,必须先使用向上转型!

多态的向下转型使用不当,程序出现异常:

  • 注意事项:

  • 产生一个ClassCastException:运行时期异常(RuntimeException)的一种

  • 使用向下转型的时候类型不匹配导致的!

    有关final关键字的特点:

  • 表示:最终的,无法更改(状态修饰符)

  • final修饰类,该类不能被继承!

  • final可以修饰成员变量,该变量此时是一个常量(常驻内存!)

  • 自定义常量的时候:public static final 数据类型 变量名 = 初始化;

  • final可以修饰成员方法,该方法不能被重写

  • final修饰的变量:只能被赋值一次(它的值不能再被更改了!)

  • 常量的分类:

  • 字面值常量

  • 自定义常量(final修饰的)

    final修饰基本类型的变量和引用类型的区别

  • final修饰的基本数据类型

  • 基本数据类型的变量:它的数据值不能再改变了(具体的数据值)

  • final修饰的引用数据类型,它的地址值不能再改变了(但是成员变量的值不影响!)

    冒泡排序思想

    从数组的第一个元素开始,两两比较,小的在前,大的在后,第一次比较结束,数组最大值出现在最大索引处

    第一次有0个元素不进行比较

    第二次有1个元素不进行比较

    ​ .

    ​ .

    ​ .

    总共比较数组长度-1次

    冒泡排序核心代码

    for(int i=0;i<arr.length-1;i++){for(int j=0;j<arr.length-1-i;j++){if(arr[j]>arr[j+1]){int temp=arr[j];arr[j]=arr[j+1];arr[j+1]=temp;}}
    }
    

选择排序思想

用数组角标值为0的元素依次与后面的元素进行比较,将较小的值放在前面,较大的值放在后面,第一次比较完毕,数组最小值出现在了最小索引处,依次这样比较,就可以得到一个排序好的数组.

比较次数: 数组长度-1次

选择排序核心代码

for(int i=0;i<arr.length-1;i++){for(int j=i+1;j<arr.length;j++){if(arr[i]>arr[j]){int temp=arr[i];arr[i]=arr[j];arr[j]=temp;}}
}

抽象类的概念

在一个类中,将某个功能给出声明(抽象方法),那么这个类就是抽象类

抽象类中抽象方法格式

抽象方法:

权限修饰符(public) abstract 返回值类型 方法名() ;

抽象类注意事项

  •  1)如果一个类中,有抽象方法,那么该类一定是抽象类;抽象类中一定是抽象方法吗?,也可以有非抽象方法
    
  •  2)抽象类如何实例化呢? 抽象类如何创建对象
    
  •  抽象类不能直接实例化! ,通过具体的子类进行实例化
    
  •      格式:
    
  •      父类名 对象名  =new  子类名() ; 抽象类多态
    
  •  3)抽象类的子类:
    
  •      子类要么具体类,要么抽象类
    
  •      子类是具体类,直接可以抽象类多态的形式实例化!
    
  •        子类是抽象类,应该还要提供更最具体的子类,否则都无法实例化(没有意义!)
    
  •  4)在抽象类中定义抽象方法的时候,那么抽象方法必须带上修饰符:abstract,不能省略!
    

抽象类的本质

强制子类必须完成的事情!

抽象类的特点:

  •  1)成员变量:
    
  •      既可以定义常量,也可以定义变量
    
  •  2)成员方法:
    
  •      即可定义抽象方法(必须要有abstract),也可以定义非抽象方法
    
  •  3)构造方法:
    
  •    还是继承关系,构造方法:对数据进行初始化---->分层初始化!
    
  • 面试题:

  •  有抽象方法的类一定是抽象类,
    
  •          那么如果一个类中没有抽象方法,这个类可以不可以定义为抽象类呢?
    
  • 可以,意义是什么?

  • 意义:就是让当前类不能够直接实例化(实例化:创建对象)

  • 那么如何实例化呢?

  •  它会提供一个静态功能,返回值就是该类本身! (Java中一种设计模式)
    
  • 举例:

  •  Calendar:常用类  ---日历类       是一个抽象类 (Java提供一个日历类)
    
  •  在当前类提供了一个静态功能
    
  •  public static Calendar getInstance()
    

abstract关键字不能和哪些关键字共存

  • 不能和final一块使用:
  •  final修饰成员方法:方法不能被重写,但是abstract修饰的方法,强制类完成的事情!
    
  • 不能和private一块使用: private只能在类中访问!
  • 被static修饰的方法直接使用类名调用,---->但是抽象方法又需要让子类重写(静态方法算不上方法重写)
  • 方法重写注意事项:
  •  子类继承父类,子类重写父类的方法必须保证访问权限足够大,使用public修饰(要么跟父类的修饰符保持一致)
    

接口的概念

描述一个事物的额外功能,本身不具备的

接口的基本注意事项:

Java提供接口来定义:

  •  interface 接口名{
    
  •      ...
    
  •  }
    
  •  接口中的方法只能是抽象方法,不能有方法体
    
  •          接口的命名规则:多个单词---->遵循"大驼峰命名法"
    
  •  接口的实现类和接口是一种:implements 实现关系
    
  •  将接口的实现类--->称为"接口的子实现类"
    
  • 接口如何实例化呢?
  •  接口不能直接实例化 ,
    
  • 格式:
  •  接口名 对象名 =new 子实现类名() ; //接口多态
    

接口的特点:

1)成员变量 只能有常量,用public static final 修饰,只能赋值一次

2)成员方法 只能有抽象方法,public abstract 返回值类型 方法名(); public abstract 可以省略

3)构造方法 没有构造方法

抽象类和接口的区别:

1)成员的区别

​ 抽象类: 成员变量既可以是变量也可以是常量

​ 成员方法既可以是抽象方法,也可以是非抽象方法

​ 抽象类有构造方法,进行初始化

​ 接口: 成员变量只能有常量 public static final修饰 只能赋值一次

​ 成员方法必须是抽象方法

​ 没有构造方法

2)关系的区别

​ 类与类: 继承关系,只支持单继承,可以多层继承

​ 类与接口: 实现关系,一个类继承一个父类的同时可以实现(implements)多个接口

​ 接口与接口: 继承关系,可以单继承,也可以多继承

3)设计模式的区别

​ 抽象类: 继承保证代码复用性,多态保证代码扩展性,是一种"is a"的关系

​ 接口: 是一种额外的功能,体现的是一种"like a"的关系

包的编译和运行

同一个包下

手动方式
1)先进入到HelloWorld.java文件所在目录中,使用javac 对这个java源文件进行编译,会产生
HelloWorld.class文件
2)手动方式创建对应包的目录
com
qianfeng

 3)将1)---->编译后后HelloWorld.class文件放在2)中的子文件夹中4)运行:带上包进行运行java com.qianfeng.类名


​ 自动方式:
​ 1)针对源文件进行编译
​ javac -d(跟上参数) . java源文件 — >将class文件存储到指定包的下面
​ 2)直接运行即可
​ java 包名.类名 —>回车

不同包下

在不同包下的编译和运行:
1)将当前被导入的类:进行编译
进入到当前目录下面:
javac -d . Demo.java---->com.cn
Demo.class

     2)进入到当目录下面javac -d . Test.java---->com.qianfengTest.class3)java com.qianfeng.Test; 运行 java 包名.类名

方法的形式参数问题:(引用类型)

  •  如果方法的形式参数是一个引用类型
    
  •      如果是具体类,需要传递该具体类的对象!
    
  •      如果是抽象类类型,实际参数需要该抽象类的子类对象!
    
  •      如果是接口,实际参数需要该接口子实现类对象!
    

内部类的概念

在一个类中定义了另一个类

在A类中定义一个B类,就B类称为A类的内部类;将A类称为B类外部类

内部类注意事项

内部类的成员直接可以访问外部类的成员包括私有!

外部类的成员访问成员内部类的成员的时候,不能直接访问,而要通过内部类对象访问

内部类的分类:

  • 1)成员内部类:

  • 在类 的成员位置定义的类

  • 2)局部内部类:

  • 在方法定义中定义的类(局部位置)

    成员内部类的访问方法

    1)当成员内部类的修饰符不是private的时候:

    创建内部类对象的格式: 外部类名.内部类名 对象名=new 外部类名().new 内部类名();

    2)当成员内部类的修饰符是private的时候

    不能创建内部类对象,需要在外部类的成员方法中创建内部类对象,调用内部类的属性和功能,在测试类中创建

    外部类对象,调用此方法,即可实现访问内部类

    3)当成员内部类被static修饰的时候

    创建内部类对象的格式: 外部类名.内部类名 对象名=new 外部类名.内部类名();

    或者可以用 外部类名.内部类名.方法名() 的方式调用内部类的静态方法

成员内部类中的修饰符:

  •  private:保证的数据安全性
    
  •  static修饰: 有什么特点?
    
  •  将静态的成员内部类看成是外部类的静态成员!
    
  •  静态的成员内部类的成员方法(静态的还是非静态),只能访问外部类的静态成员!
    

权限修饰符

private 只能在本类中访问

默认修饰符 可以在本类中,同包的子类或者无关类中访问

protected 可以在本类,同包子类,无关类,不同包的子类中访问(不同包的无关类不可以访问)

public 均可以访问

方法返回值问题(引用类型)

  • 方法返回值

  •  是一个具体类类型:需要返回return 该具体类对象!
    
  • 如果方法返回值是一个引用类型:

  •  如果引用类型是一个抽象类:该方法需要返回该抽象类的子类对象!
    
  • 如果方法返回是一个引用类型:

    外部类对象,调用此方法,即可实现访问内部类

    3)当成员内部类被static修饰的时候

    创建内部类对象的格式: 外部类名.内部类名 对象名=new 外部类名.内部类名();

    或者可以用 外部类名.内部类名.方法名() 的方式调用内部类的静态方法

成员内部类中的修饰符:

  •  private:保证的数据安全性
    
  •  static修饰: 有什么特点?
    
  •  将静态的成员内部类看成是外部类的静态成员!
    
  •  静态的成员内部类的成员方法(静态的还是非静态),只能访问外部类的静态成员!
    

权限修饰符

private 只能在本类中访问

默认修饰符 可以在本类中,同包的子类或者无关类中访问

protected 可以在本类,同包子类,无关类,不同包的子类中访问(不同包的无关类不可以访问)

public 均可以访问

方法返回值问题(引用类型)

  • 方法返回值
  •  是一个具体类类型:需要返回return 该具体类对象!
    
  • 如果方法返回值是一个引用类型:
  •  如果引用类型是一个抽象类:该方法需要返回该抽象类的子类对象!
    
  • 如果方法返回是一个引用类型:
  •  引用类型是一个接口类型:需要返回该接口的子实现类对象!
    

Eclipse,静态,继承,封装,this,super,重写,重载,多态,final,冒泡排序,选择排序,抽象类,接口,内部类相关推荐

  1. Java基础【之】面向对象编程(封装、继承(extends、方法重写、super)、多态(动态绑定、重载/重写)、代码实现)

    Java基础[之]面向对象编程(封装.继承.多态.代码实现) 1.封装 2.继承 2.1.extends 2.2.方法重写 2.3.super 3.多态 3.1.对象的多态.方法的多态 3.2.动态绑 ...

  2. -1-2 java 面向对象基本概念 封装继承多态 变量 this super static 静态变量 匿名对象 值传递 初始化过程 代码块 final关键字 抽象类 接口

    java是纯粹的面向对象的语言 也就是万事万物皆是对象 程序是对象的集合,他们通过发送消息来相互通信 每个对象都有自己的由其他的对象所构建的存储,也就是对象可以包含对象 每个对象都有它的类型  也就是 ...

  3. Java学习第十二天<封装详解><继承><super详解><方法重写><多态>

    封装详解 //类 public class Student {//名字 学号 性别 属性私有(new 以后不能赋值)private String name;private int id;private ...

  4. 第三周 Java语法总结__static关键字__代码块__继承__this和super的区别__重写__final关键字__多态__抽象__接口__形参问题__包__权限修饰符__内部类

    文章目录 6.static关键字 1)静态static关键字的特点: 2)关于static关键字的使用注意事项 3)什么时候将变量定义为成员变量: 7.文档说明书: 8.代码块 9.继承 1)继承的概 ...

  5. java基础2:this、static、final、abstract关键字、代码块、生成API工具包、继承、多态、方法重载和重写,抽象类、接口、常见异常、java权限修饰符、选择排序思想和程序和内部类

    1.this关键字 this表示当前类对象的地址空间值的引用.就是说,this代表了new出来的对象 其最大作用就是解决了构造器中局部变量隐藏成员变量.即用this.变量名 = 变量名 区分. 2.s ...

  6. Java SE_封装、继承、object类、super-this关键字、方法重写、多态、instanceof、类型转换

    封装 该露的露,该藏的藏 我们程序设计要追求"高内聚,低耦合".高内聚:类的内部数据操作细节自己完成,不允许外部干涉:低耦合:仅暴露少量的方法给外部使用. 封装(数据的隐藏) 通常 ...

  7. java写一个外网访问的接口_【JAVA基础】一个案例搞懂类、对象、重载、封装、继承、多态、覆盖、抽象和接口概念及区别(中篇)...

    0 前言 初学JAVA时,总会对一些概念一知半解,相互混淆,不明其设计的用意,如类.对象.重载.封装.继承.多态.覆盖.抽象类.接口概念.为便于理解和巩固,本文将基于一个案例及其变形,展现各个概念的定 ...

  8. 继承extends ,this super final 关键字,abstract抽象类,override方法重写

    继承extends 私有成员不能被继承  总结:子类方法中,使用变量的原则是:就近原则 1 package review06; 2 /* 3 私有成员不能被继承 4 子类和父类有同名的成员变量:在子类 ...

  9. JAVA 重写重载/多态/抽象类/封装/接口/包

    重写&重载 重写(override)是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变.即外壳不变,核心重写! 重载(overloading) 是在一个类里面,方法名 ...

最新文章

  1. java.util.concurrent包详细分析--转
  2. Spring Cloud 爆高危漏洞!!!
  3. 爬虫爬取在线小说阅读网站详解
  4. 深度学习总结:pytorch构建RNN和LSTM,对比原理图加深理解
  5. split逗号分割中文出现乱码java_Java中URL传中文时乱码的问题解决方案
  6. html图片拼接出现留白,关于img标签周围留白的问题
  7. python 添加图例_Python | 在图例标签中添加Sigma
  8. linux网站宝塔无法访问ipv6,centos7宝塔面板服务器开启纯IPV6访问
  9. html目录清华,清华大学HTML、《网页设计与制作》讲义.ppt
  10. 威联通_AMD YES!威联通高性价比9盘位TS-963N 5GbE NAS体验
  11. Perhaps JAVA_HOME does not point to the JDK的解决方法
  12. 测试使用bytes.buffer()的单线程与多线程的写效率
  13. 【经验教程】google谷歌Gmail邮箱帐号被停用怎么恢复Gmail邮箱google谷歌账号?
  14. Matlab 中 residuez函数的使用
  15. linux服务器如何查看mac地址,linux如何查看mac地址_查看mac地址 linux_linux查看mac地址...
  16. webpack serve 配置问题TypeError: Class constructor ServeCommand cannot be invoked without ‘new‘
  17. 通过命令行使用bandizip压缩与解压
  18. ubuntu20.04如何录制屏幕
  19. 横扫阿里、滴滴、美团后,3年经验的Java后端妹子整理出这份厚厚的面经!
  20. 鲁宾逊无穷小微积分教材在中国高校分布地图

热门文章

  1. KWin in KDE4
  2. 九章算法-面试题总结(算法、强化算法、系统设计高清视频观看)
  3. 2021年保护JavaScript的7个步骤
  4. 扫地机器人不取出水箱可以吗_扫地机器人值不值得买?优缺点全面分析。
  5. 博客园背景特效(粒子线条,彩带,滴墨水)
  6. bzoj4184-shallot
  7. 电脑计算机无法启动有还原和取消,win7系统提示配置windwos update失败还原更改导致电脑无法开机的三种解决方法...
  8. 安装双系统遇到的问题:0xc000000e和0xc000000f
  9. 面试官:你说一说MySQL查询慢应该怎么办?
  10. 电脑网速变慢的几个方面