zoukankan      html  css  js  c++  java
  • 【开发规范】阿里巴巴Java开发手册学习总结(持续更新)


          在此,有个很好的开发手册想要分享的,《阿里巴巴Java开发手册》,里面的规范经验十分全面,而且不少经验是在开发中得出来的,虽然是Java,但觉得道理是相通的,当运用到项目中,对项目更有帮助,具体几点好的我总结一下:

    程序篇:
    OOP约束
      1.Object 的 equals 方法容易抛空指针异常,应使用常量或确定有值的对象来调用equals。所有的相同类型的包装类对象之间值的比较,全部使用 equals 方法比较。
      2.使用索引访问用 String 的 split 方法得到的数组时,需做最后一个分隔符后有无内容的检查,否则会有抛 IndexOutOfBoundsException 的风险。
      3.不要在 foreach 循环里进行元素的 remove/add 操作。remove 元素请使用 Iterator方式,如果并发操作,需要对 Iterator 对象加锁。

    并发处理
      1.线程资源必须通过线程池提供,不允许在应用中自行显式创建线程。
      2.并发修改同一记录时,避免更新丢失,需要加锁。要么在应用层加锁,要么在缓存加锁,要么在数据库层使用乐观锁,使用 version 作为更新依据。

    异常日志
      1.对大段代码进行 try-catch,这是不负责任的表现。catch 时请分清稳定代码和非稳定代码,稳定代码指的是无论如何不会出错的代码。对于非稳定代码的 catch 尽可能进行区分异常类型,再做对应的异常处理。
      2.避免出现重复的代码(Don’t Repeat Yourself),即 DRY 原则。必要时抽取共性方法,或者抽象公共类,甚至是组件化。
      3.捕获异常是为了处理它,不要捕获了却什么都不处理而抛弃之,如果不想处理它,请将该异常抛给它的调用者。

    安全规约
      1.用户输入的 SQL 参数严格使用参数绑定或者 METADATA 字段值限定,防止 SQL 注入,禁止字符串拼接 SQL 访问数据库。
      2.表单、AJAX 提交必须执行 CSRF 安全过滤。
      3.在使用平台资源,譬如短信、邮件、电话、下单、支付,必须实现正确的防重放限制,如数量限制、疲劳度控制、验证码校验,避免被滥刷、资损。

    数据库篇:
    建表
      1.如果存储的字符串长度几乎相等,使用 char 定长字符串类型。
      2.库名与应用名称尽量一致。
      3.单表行数超过 500 万行或者单表容量超过 2GB,才推荐进行分库分表。

    索引
      1.业务上具有唯一特性的字段,即使是多个字段的组合,也必须建成唯一索引。
      2.超过三个表禁止 join。需要 join 的字段,数据类型必须绝对一致;多表关联查询时,保证被关联的字段需要有索引。
      3.在 varchar 字段上建立索引时,必须指定索引长度,没必要对全字段建立索引,根据实际文本区分度决定索引长度即可。
      4.如果有 order by 的场景,请注意利用索引的有序性。order by 最后的字段是组合索引的一部分,并且放在索引组合顺序的最后,避免出现 file_sort 的情况,影响查询性能。
      5.利用覆盖索引来进行查询操作,避免回表。
      6.建组合索引的时候,区分度最高的在最左边
      7.创建索引时避免有如下极端误解:
        1)宁滥勿缺。认为一个查询就需要建一个索引。
        2)宁缺勿滥。认为索引会消耗空间、严重拖慢更新和新增速度。
        3)抵制惟一索引。认为业务的惟一性一律需要在应用层通过“先查后插”方式解决。

    SQL语句
      1.使用 ISNULL()来判断是否为 NULL 值。
      2.不得使用外键与级联,一切外键概念必须在应用层解决。
      3.禁止使用存储过程,存储过程难以调试和扩展,更没有移植性。
      4.不要使用 count(列名)或 count(常量)来替代 count(*)。count(*)会统计值为 NULL 的行,而 count(列名)不会统计
      5.在表查询中,一律不要使用 *
      6.@Transactional 事务不要滥用。事务会影响数据库的 QPS

  • 相关阅读:
    luogu P3801 红色的幻想乡
    [USACO07OPEN]吃饭Dining
    [SCOI2007]蜥蜴
    [SDOI2011]染色
    [USACO07DEC]Sightseeing Cows
    [HNOI2007]紧急疏散EVACUATE
    [ZJOI2009]假期的宿舍
    [SDOI2013]费用流
    [CQOI2009]跳舞
    使用chrony安装chrony
  • 原文地址:https://www.cnblogs.com/laokchen/p/13306188.html
Copyright © 2011-2022 走看看