1,写一个一定发生死锁的程序
public class Test011 { public static void main(String[] args) { Thread t1=new Thread(new DeadLock(true)); Thread t2=new Thread(new DeadLock(false)); t1.start(); t2.start(); } } class DeadLock implements Runnable{ boolean flag; static Object o1=new Object(); static Object o2=new Object(); public DeadLock(boolean flag){ this.flag=flag; } @Override public void run() { // TODO Auto-generated method stub if(this.flag){ synchronized (o1) { try { Thread.sleep(10); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } synchronized (o2) { System.out.println("我没发生死锁啊"); } } }else{ synchronized (o2) { try { Thread.sleep(10); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } synchronized (o1) { System.out.println("我也是"); } } } } }控制台啥都没有显示,所以发生了死锁
2,手写一个循环队列的出入队
public class Test012 { public static void main(String[] args) { Queue q=new Queue(4); q.add(1); q.add(2); q.add(3); q.remove(); q.add(4); q.remove(); q.add(5); q.add(6); } } class Queue{ private int size; private int front; private int rear; private int[] base; public Queue(int size){ this.size=size; front=0; rear=0; base=new int[size]; } public void add(int x){ if((rear+1)%size==front){ System.out.println(x+"添加失败,队满"); }else{ base[rear]=x; rear=(rear+1)%size; System.out.println(x+"添加成功"); } } public void remove(){ if(rear==front){ System.out.println("队列为空"); }else{ System.out.println("移除"+base[front]); front=(front+1)%size; } } }3,session和cookie的区别
a,session是作用于服务器端,cookie是作用于客户端
b,session安全性高于cookie
c,session因为作用于服务器端,所以它增加了服务器端存储的压力
4,介绍JSP内置对象
request,response,session,application,out,page,pageContext,config,exception
5,forward和redirect的区别
forward地址栏的url不会发生改变,而redirect作用的话,地址栏的URL会发生改变forward能够存储requestScope保存的attribute值,而redirect则不会保存forward的性能高于redirect6,如何实现网站访问的统计
String strNum=(String)application.getAttribute("num2"); int num2=1; if(strNum!=null){ num2=Integer.parseInt(strNum); } if(session.isNew()){ num2++; application.setAttribute("num2",num2+""); }