一、Nginx负载均衡
- 轮询:轮询是默认的,每一个请求按顺序逐一分配到不同的后端服务器,如果后端服务器down掉了,则能自动剔除
- ip_hash:请求按访问IP的hash结果分配,这样来自同一个IP的访客固定访问一个后端服务器,有效解决了动态网页存在的session共享问题。
- weight:weight是设置权重,用于后端服务器性能不均的情况,访问比率约等于权重之比
- fair(第三方):这是比上面两个更加智能的负载均衡算法。此种算法可以依据页面大小和加载时间长短智能地进行负载均衡,也就是根据后端服务器的响应时间来分配请求,响应时间短的优先分配。Nginx本身是不支持fair的,如果需要使用这种调度法必须下载Nginx的 upstream_fair 模块。
- url_hash(第三方):此方法按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,可以进一步提高后端缓存服务器的效率。Nginx本身是不支持url_hash的,如果需要使用这种调度算法,必须安装Nginx 的hash软件包。
二、 Java中名词解释
- JVM: Java虚拟机,作用屏蔽不同操作系统之间的差异性。
- JRE: Java的运行环境(JRE= JVM+解释器)
- JDK: Java的工具包(JDK= 编译器+JRE+类库+工具)
- Java的运行机制:先编译后解释运行
将源文件(.java)--->通过编译器生成对应的字节码文件(.class 二进制文件)---->通过解释器逐行的解释并运行 - 注意:体现Java的跨平台性的内容为字节码文件。
- Java的运行特点:一次编译多次运行。(多次运行-》运行的.class文件)
三、冒泡排序、选择排序
- 冒泡排序:相邻的两个元素进行一一比较,最大的元素逐渐往后移。
//外层循环控制比较的轮数
for(int i=1;i<a.length;i++){
//内层循环:控制每一轮具体比较的内容
for(int j=0;j<a.length-i;j++){
if(a[j]>a[j+1]){
int t = a[j];
a[j]= a[j+1];
a[j+1]=t;
}
}
}
2. 选择排序:固定一个下标位置元素,和后面的元素进行一一比较,小的元素逐渐往前移。
//外层循环控制比较的轮数
for(int i=0;i<a.length-1;i++){
//内层循环控制每一轮比较内容
for(int j=i+1;j<a.length;j++){
if(a[i]>a[j]){
int t= a[i];
a[i]=a[j];
a[j]=t;
}
}
}
3. 快速排序:java.util.Arrays.sort(数组名)
四、创建对象的过程
1.先进行类加载:
先加载父类:
完成对父类静态属性的初始化工作
再加载子类:
完成对子类静态属性的初始化工作
2.再进行对象的创建:
分配空间(子类+父类)
先创建父类对象:
初始化父类的属性:动态代码块执行
调用父类的构造方法
再创建子类对象:
初始化子类的属性:子类的动态代码块执行
调用子类的构造方法
五、接口、抽象类区别
接口 | 抽象类 | |
关键字 | interface | abstract class |
属性 | 公开、静态、常量 | 实例变量、静态属性 |
成员方法 | 公开、抽象方法 | 抽象方法+非抽象方法 |
构造方法 | 没有 | 有 |
继承关系 | 多继承 | 单继承 |
相同点 | 1.编译之后都会生成独立.class文件 2.都不能创建对象 |
六、