一、linux中,查找日志中的某个词用什么命令?
1、进入vi命令行模式下,使用“/关键词”进行查找;
2、如果没有打开文件,使用cat 文件名|grep "关键词"。
二、String类为什么是final的?
三、Java创建线程之后,直接调用start()方法和run()的区别?
答:区别在于当程序调用start方法时一个新线程将会被创建,并且run方法中的代码将会在新线程上运行;然而直接调用run方法,程序并不会创建新的线程,run方法内部的代码将在当前线程上运行。
四、如何让线程同步吗?
1、使用同步方法(synchronized)
2、使用同步代码块(synchronized)
3、使用特殊域变量(volatile)实现线程同步
4、使用重入锁实现线程同步(ReentrantLock)
五、wait和sleep的区别是什么?
1、wait是Object类中的方法,sleep是Thread类中提供的一个静态方法
2、wait方法释放了锁,否则会形成死锁;sleep方法没有释放锁
3、wait方法必须在同步代码块或者同步方法中使用,而sleep使用在任意的地方。
4、sleep必须捕获异常,而wait不需要。
5、wait可以指定时间,也可以不指定,而sleep必须指定时间
六、Mysql怎么分表?
1、做mysql集群
2、预先估计会出现大数据量并且访问频繁的表,将其分为若干个表(垂直分割和水平分割)
3、利用merge存储引擎来实现分表
七、数据库的锁有哪几种?
1、共享(S)锁:多个事务可封锁一个共享页;任何事务都不能修改该页; 通常是该页被读取完毕,S锁立即被释放。
2、排它(X)锁:仅允许一个事务封锁此页;其他任何事务必须等到X锁被释放才能对该页进行访问;X锁一直到事务结束才能被释放。
3、更新(U)锁:用来预定要对此页施加X锁,它允许其他事务读,但不允许再施加U锁或X锁;当被读取的页将要被更新时,则升级为X锁;U锁一直到事务结束时才能被释放。
八、synchronied和ReentrantLock的区别?
1、对Synchronized来说,它是java语言的关键字,是原生语法层面的互斥,需要jvm来实现;而ReentrantLock是JDK1.5之后提供的API层面的互斥锁,需要lock()和unlock()方法配合try/finally语句块来实现。
2、ReentrantLock拥有Synchronized相同的并发性和内存语义,此外还多了锁投票,定时锁等候和中断锁等候;
3、Synchronized是JVM层面的实现,不但可以通过一些监控工具监控Synchronized的锁定,而且在代码执行时出现异常,JVM会自动释放锁定,但是使用ReentrantLock不行,它是通过代码实现的,要保证锁定一定会被释放,就必须将unlock()放到finally{}中
4、在资源竞争不是很激烈的情况下,Synchronized会优于ReentrantLock,但是在资源竞争很激烈的情况下,Synchronized的性能会下降几十倍,而ReentrantLock的性能会维持常态。
1、进入vi命令行模式下,使用“/关键词”进行查找;
2、如果没有打开文件,使用cat 文件名|grep "关键词"。
二、String类为什么是final的?
1、效率和安全性的问题;
2、有助于共享,提高性能。
3、由于String类不能被继承,所以就不会被修改,这就避免了由继承引起的安全隐患。
4、String类在程序中出现的频率比较高,直接将其设计为final提高效率。三、Java创建线程之后,直接调用start()方法和run()的区别?
答:区别在于当程序调用start方法时一个新线程将会被创建,并且run方法中的代码将会在新线程上运行;然而直接调用run方法,程序并不会创建新的线程,run方法内部的代码将在当前线程上运行。
四、如何让线程同步吗?
1、使用同步方法(synchronized)
2、使用同步代码块(synchronized)
3、使用特殊域变量(volatile)实现线程同步
4、使用重入锁实现线程同步(ReentrantLock)
五、wait和sleep的区别是什么?
1、wait是Object类中的方法,sleep是Thread类中提供的一个静态方法
2、wait方法释放了锁,否则会形成死锁;sleep方法没有释放锁
3、wait方法必须在同步代码块或者同步方法中使用,而sleep使用在任意的地方。
4、sleep必须捕获异常,而wait不需要。
5、wait可以指定时间,也可以不指定,而sleep必须指定时间
六、Mysql怎么分表?
1、做mysql集群
2、预先估计会出现大数据量并且访问频繁的表,将其分为若干个表(垂直分割和水平分割)
3、利用merge存储引擎来实现分表
七、数据库的锁有哪几种?
1、共享(S)锁:多个事务可封锁一个共享页;任何事务都不能修改该页; 通常是该页被读取完毕,S锁立即被释放。
2、排它(X)锁:仅允许一个事务封锁此页;其他任何事务必须等到X锁被释放才能对该页进行访问;X锁一直到事务结束才能被释放。
3、更新(U)锁:用来预定要对此页施加X锁,它允许其他事务读,但不允许再施加U锁或X锁;当被读取的页将要被更新时,则升级为X锁;U锁一直到事务结束时才能被释放。
八、synchronied和ReentrantLock的区别?
1、对Synchronized来说,它是java语言的关键字,是原生语法层面的互斥,需要jvm来实现;而ReentrantLock是JDK1.5之后提供的API层面的互斥锁,需要lock()和unlock()方法配合try/finally语句块来实现。
2、ReentrantLock拥有Synchronized相同的并发性和内存语义,此外还多了锁投票,定时锁等候和中断锁等候;
3、Synchronized是JVM层面的实现,不但可以通过一些监控工具监控Synchronized的锁定,而且在代码执行时出现异常,JVM会自动释放锁定,但是使用ReentrantLock不行,它是通过代码实现的,要保证锁定一定会被释放,就必须将unlock()放到finally{}中
4、在资源竞争不是很激烈的情况下,Synchronized会优于ReentrantLock,但是在资源竞争很激烈的情况下,Synchronized的性能会下降几十倍,而ReentrantLock的性能会维持常态。