面试
qq_37874220
就是这样
展开
-
索引有什么用?如何建索引?
索引可以加快数据库访问的效率,相当于给原来的记录作一个key-value的结构数据库里面索引是用树来做的,B+数搜索中也用到了索引索引分为:普通索引唯一索引聚集索引主键索引联合索引ALTER TABLE <表名> ADD INDEX (<字段>);...转载 2019-05-11 16:56:30 · 1313 阅读 · 0 评论 -
线程状态,BLOCKED和WAITING有什么区别
线程可以通过notify,join,LockSupport.park方式进入wating状态,进入wating状态的线程等待唤醒(notify或notifyAll)才有机会获取cpu的时间片段来继续执行。线程的 blocked状态往往是无法进入同步方法/代码块来完成的。这是因为无法获取到与同步方法/代码块相关联的锁。与wating状态相关联的是等待队列,与blocked状态相关的是同步队列...转载 2019-05-11 17:15:37 · 6541 阅读 · 5 评论 -
Java中sleep,wait,yield,join的区别
1.sleep()方法在指定时间内让当前正在执行的线程暂停执行,但不会释放“锁标志”。不推荐使用。sleep()使当前线程进入阻塞状态,在指定时间内不会执行。2.wait()方法在其他线程调用对象的notify或notifyAll方法前,导致当前线程等待。线程会释放掉它所占有的“锁标志”,从而使别的线程有机会抢占该锁。当前线程必须拥有当前对象锁。如果当前线程不是此锁的拥有者,会...转载 2019-05-11 17:18:12 · 297 阅读 · 0 评论 -
synchronized与Lock的区别
两者区别:1.首先synchronized是java内置关键字,在jvm层面,Lock是个java类;2.synchronized无法判断是否获取锁的状态,Lock可以判断是否获取到锁;3.synchronized会自动释放锁(a线程执行完同步代码会释放锁 ;b 线程执行过程中发生异常会释放锁),Lock需在finally中手工释放锁(unlock()方法释放锁),否则容易造成线程死...转载 2019-05-11 17:20:07 · 90 阅读 · 0 评论 -
Cookie和Session的区别
两者都是保存用户回话状态的方案Cookie是将用户会话保存在浏览器端,安全性问题比较低,用户可见,容易被篡改和盗取,csrf攻击Session是将用户会话状态保存在服务端,安全性较高,用户不可见但是Session需要占用服务端资源,集群环境下需要注意Session同步的问题,比如tomcat的session同步方案,小集群还好,集群一大同步session就占用了很多内部带宽和cpu资源...转载 2019-05-11 17:20:59 · 80 阅读 · 0 评论 -
synchronized修饰static方法,具体锁的是什么
当synchronized修饰一个static方法时,多线程下,获取的是类锁(即Class本身,注意:不是实例),作用范围是整个静态方法,作用的对象是这个类的所有对象。当synchronized修饰一个非static方法时,多线程下,获取的是对象锁(即类的实例对象),作用范围是整个方法,作用对象是调用该方法的对象结论:...转载 2019-05-11 17:26:27 · 1586 阅读 · 0 评论 -
如何保证开启多线程全部执行完成
利用CountDownLatch闭锁实现。 CountDownLatch可以使一个或多个线程等待一组事件的发生,闭锁状态包含一个计数器,该计数器被初始化为一个正数,表示需要等待事件的数量。 发挥主要作用的两个方法分别是: countDown();递减计数器,表示一个事件已经发生了; await();等待计数器达到零,如果计数器的值非零,那么await会一直阻塞直...转载 2019-05-11 17:29:47 · 953 阅读 · 0 评论