(七)java面试题 mysql和线程部分 2018-06-06

sql约束???

NOT NULL 约束:保证列中数据不能有 NULL 值

DEFAULT 约束:提供该列数据未指定时所采用的默认值

UNIQUE 约束:保证列中的所有数据各不相同

主键约束:唯一标识数据表中的行/记录

外键约束:唯一标识其他表中的一条行/记录

CHECK 约束:此约束保证列中的所有值满足某一条件

索引:用于在数据库中快速创建或检索数据

子查询中 in 除了一个特殊情况外,一般来说改成join更快 原因是因为参考这里.这里给出了MySQL 参考手册对于in和join查询快慢的说明

MySQL性能优化的最佳20条

1.为查询缓存优化你的查询

2.EXPLAIN 你的 SELECT 查询

3.当只要一行数据时使用 LIMIT 1

4.为搜索字段建索引

5.在Join表的时候使用相当类型的例,并将其索引

6.千万不要 ORDER BY RAND()

7.使用 ENUM 而不是 VARCHAR

8.从 PROCEDURE ANALYSE() 取得建议

9.Prepared Statements

10.垂直分割 也就是拆分表

线程共包括以下5种状态。

1.新建状态(New)        : 线程对象被创建后,就进入了新建状态。例如,Thread thread = new Thread()。

2.就绪状态(Runnable): 也被称为“可执行状态”。线程对象被创建后,其它线程调用了该对象的start()方法,从而来启动该线程。例如,thread.start()。处于就绪状态的线程,随时可能被CPU调度执行。

3.运行状态(Running) : 线程获取CPU权限进行执行。需要注意的是,线程只能从就绪状态进入到运行状态。

4.阻塞状态(Blocked)  : 阻塞状态是线程因为某种原因放弃CPU使用权,暂时停止运行。直到线程进入就绪状态,才有机会转到运行状态。阻塞的情况分三种:

(01) 等待阻塞 -- 通过调用线程的wait()方法,让线程等待某工作的完成。

(02) 同步阻塞 -- 线程在获取synchronized同步锁失败(因为锁被其它线程所占用),它会进入同步阻塞状态。

(03) 其他阻塞 -- 通过调用线程的sleep()或join()或发出了I/O请求时,线程会进入到阻塞状态。当sleep()状态超时、join()等待线程终止或者超时、或者I/O处理完毕时,线程重新转入就绪状态。

5.死亡状态(Dead)    : 线程执行完了或者因异常退出了run()方法,该线程结束生命周期。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容