题目很基础,但是我还有一半没有回答上
1.Servlet的生命周期和工作原理,阐述Servlet请求中转发和重定向的区别?
(1)实例化。客户端发送一个请求时,Servlet容器会查找内存中是否存在该Servlet实例,如果没有的话就通过Servlet构造函数创建一个实例。
(2)初始化。调用Servlet的init()方法完成初始化工作,此方法只调用一次。
(3)处理请求。容器调用Servlet的service()方法处理请求,service()方法会根据请求的method属性来决定调用doGet()方法还是doPost()方法完成具体的响应。
(4)销毁。调用Servlet的destroy()方法销毁Servlet实例,此方法只执行一次。
Servlet中的转发:
客户端浏览器的地址栏不会改变,整个转发的过程是同一个请求。整个过程是一个请求,一个响应。转发只能在系统的内部,转发可以传递数据。
重定向:
浏览器地址栏会改变。整个过程是2个请求,2个响应。重定向可以定向到其他的系统。重定向不能使用request域传递对象。
2.
3.冒泡排序和二分查找
BubbleSort:从小到大排序,大的放在最右边。
5 2 1 9 6 两个两个进行比较,第一轮,可以把最大的9放在最右边 变成2 1 5 6 9 第一轮的两两比较需要比较4轮(5个数比较4次)
for (int i = 0; i < a.length-1; i++) { // 控制2个相邻位置的交换 第一轮时,就是j=0时候,两辆交换4次,j=1时,两两交换3次
if (a[i] > a[i + 1]) {
int temp = a[i];
a[i] = a[i + 1];
a[i+1] = temp;
}
2 1 5 6 9 接着是比较 这是第二轮,而这一轮,因为最大的已经跑到最右边了,所以只需要,把前4个的最大的放大倒数第二个位置上,这样会比较3次(4个数比较3次)
第三轮,比较2个数,把大的放在最右,2个数比较1次
想这样的操作一共进行了4轮(5个数),每一轮都是同样的步骤,都是两两比较,把大的放在最右边。所以这些代码是重复的,考虑复用代码。每一轮,都会减少一个需要比较的数,即每一轮的最右端的下标会少1.
for (int j= 0; j < a.length-1; j++) { //控制交换的轮数。5个数要交换4轮 length-1个 j=0,1,2,3
for (int i = 0; i < a.length-1-j; i++) { // 控制2个相邻位置的交换 第一轮时,就是j=0时候,两辆交换4次,j=1时,两两交换3次
if (a[i] > a[i + 1]) {
int temp = a[i];
a[i] = a[i + 1];
a[i+1] = temp;
}
}
}
二分查找:
代码:(这样的写法必须是,从小到大进行排序)
//数组的逆序输出
public static int[] reverse(int arr[]){
int arr2[] = new int [arr.length];
for (int i = 0; i < arr.length; i++) {
int value = arr[arr.length-(i+1)];
arr2[i] = value;
}
return arr2;
}
public static void main(String[] args) {
int a[] ={9,7,6,5,3,2};
a= MaxMin.reverse(a);
System.out.println(Arrays.toString(a));
int index = MaxMin.halfSearch(a, 3);
System.out.println(index);
}