1、ajax同步和异步的区别:
同步是指一个线程要等待上一个线程执行完才能开始执行,同步可以看做是一个单线程操作,只要客户端请求了,在服务器没有反馈信息之前是一个线程阻塞状态。异步是一个线程在执行中,下一个线程不必等待它执行完就可以开始执行。异步肯定是个多线程。在客户端请求时,可以执行其他线程,并且在把这个线程存放在他的队列里面,有序的执行。异步的效率要高于同步。如果数据在线程间共享,那么必须使用同步!ajax同步异步:默认是true:异步,false:同步。异步传输是面向字符的传输,它的单位是字符;而同步传输是面向比特的传输,它的单位是桢,它传输的时候要求接受方和发送方的时钟是保持一致的。
2、java反射是什么?有什么应用场景?
反射就是动态加载对象,并对对象进行剖析。在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法,这种动态获取信息以及动态调用对象方法的功能成为Java反射机制。
- 实现RPC框架
- 实现ORM框架
- 拷贝属性值(BeanUtils.copyProperties)
3、Linux解决9090端口被占用问题
netstat -anp | grep 9093
kill -9 pid
4、sql语句 查询表中最大的前10条数据。
oracle
select * from (select * from t order by col1) where rownum<10
mysql
select * from student order by id desc limit 2
5、Java多线程实现的方式举例
1)继承Thread类,重写run方法
public class MyThread extends Thread {
public void run() {
System.out.println("xxx");
}
public static void main(String[] args) {
MyThread myThread1 = new MyThread();
MyThread myThread2 = new MyThread();
myThread1.start();
myThread2.start();
}
}
2)实现Runnable接口,重写run方法,实现Runnable接口的实现类的实例对象作为Thread构造函数的target
public class MyThread2 implements Runnable{
@Override
public void run() {
System.out.println("xx");
}
public static void main(String[] args) {
MyThread myThread = new MyThread();
Thread thread = new Thread(myThread);
thread.start();
}
}
3)通过Callable和FutureTask创建线程
public class MyThread3 {
public static void main(String[] args) {
Callable<Object> oneCallable = new Tickets<Object>();
FutureTask<Object> oneTask = new FutureTask<Object>(oneCallable);
Thread t = new Thread(oneTask);
System.out.println(Thread.currentThread().getName());
t.start();
}
}
class Tickets<Object> implements Callable<Object> {
@Override
public Object call() throws Exception {
System.out.println("xxx");
return null;
}
}
4)通过线程池创建线程。
JDBC编程有哪些不足之处,MyBatis是如何解决这些问题的?
多线程
并发控制
1、判断List中是否包含某个元素
list.contains(obj);