java 最佳实践

一: 不要直接new一个thread,应当使用线程池。使用线程池的时候应当对线程数量大小合理设置,一般最大不超过50个,当然还需要考虑你的IO和CPU,怎么分析网上搜搜吧。

二:容器类变量,如果变化比较大且频繁尽量定义的时候设置初始容量大小,减少扩容带来的消耗。

三:分支判断if…else的时候,最常符合的条件处理放在前面。

四:对象比较的时候常量放前面,养成好习惯,减少空指针的出现。

五:减少synchronized中等待处理的代码,能放在外面就尽量放在外面。

六:两个大表的关联查询,可以使用二次访问数据库替代,先查出A表的数据,利用关联字段再查B表的。不要一味想着一条sql搞定最好。??

七:坚决避免,查全表数据或者数量大的数据,返回list加载到内存中,一不小心查了100w数据,又查得比较频繁,内存的爆了。有这种风险的改成分页查询。

八:考虑避免事务里面有长连接或者长事务,如果大量这种情况出现占用数据连接,会影响性能。一些无必要的逻辑可以放到事务外执行。

九:a 普通索引 

  b 唯一性索引   用UNIQUE参数,主键。

  c 单列索引 

  d 多列索引  只有查询条件中使用了这些字段中第一个字段时,索引才会被使用

  e 全文索引 全文索引只能创建在CHAR、VARCHAR或TEXT类型的字段上。查询数据量较大的字符串类型的字段时,使用全文索引可以提高查询速度。

十:一般一张表索引不要超过5个,而且避免重复索引,而且也不是建了索引,根据索引字段条件查询,索引就会起作用。

十一:索引失效的情况:

           使用like关键字匹配字符串第一个为”%”的场景。 

   访问表上的数据行超出表总记录数30%,变成全表扫描

   查询条件使用函数在索引列上,或者对索引列进行运算

           多列索引中,第一个索引列使用范围查询,只能用到部份或无法使用索引

      多列索引中,第一个查询条件不是最左索引列

   

 

posted @ 2018-05-01 22:57  刘大飞  阅读(666)  评论(0编辑  收藏  举报