• 单元测试用例规范


    1JVM的 XMX和SMX 最大最小内存,一定要设置的相同,因为如果不设置相同的话,会频繁的GC,jvm觉得快到最大内存时候就会gc, 把内存放大,如果JVM 想要缩小,也会GC;

    1、finallly中不要有return 语句,不然,try中的异常会被吞掉,无法捕获,只能return空;

    2、不要写空的catch,可以写上这里不可能执行,方便如果以后真的走到这里,说明程序写错了

    【强制】单元测试代码必须写在如下工程目录:src/test/java,不允许写在业务代码目录下。
    说明:源码编译时会跳过此目录,而单元测试框架默认是扫描此目录。

    【强制】用户输入的SQL参数严格使用参数绑定或者METADATA字段值限定,防止SQL注入,禁止字符串拼接SQL访问数据库。
    反例:2012年旺旺签名大量被恶意修改,即是因为对于危险字符 # --没有进行转义,导致数据库更新时,where后边的信息被注释掉,对全库进行更新。

    【强制】表名、字段名必须使用小写字母或数字,字段命名可参考附2;禁止出现数字开头,禁止两个下划线中间只出现数字。数据库字段名的修改代价很大,因为无法进行预发布,所以字段名称需要慎重考虑。
    说明:MySQL在Windows下不区分大小写,但在Linux下默认是区分大小写。因此,数据库名、表名、字段名,都不允许出现任何大写字母,避免节外生枝。
    正例:getter_admin,task_config,level3_name
    反例:GetterAdmin,taskConfig,level_3_name

    【强制】小数类型为decimal,禁止使用float和double。
    说明:在存储的时候,float 和 double 都存在精度损失的问题,很可能在比较值的时候,得到不正确的结果。如果存储的数据范围超过 decimal 的范围,建议将数据拆成整数和小数并分开存储。

      1. 【推荐】给JVM环境参数设置-XX:+HeapDumpOnOutOfMemoryError参数,让JVM碰到OOM场景时输出dump信息。
        说明:OOM的发生是有概率的,甚至相隔数月才出现一例,出错时的堆内信息对解决问题非常有帮助。

      2. 【推荐】在线上生产环境,JVM的XmsXmx设置一样大小的内存容量,避免在GC后调整堆大小带来的压力。

      3. 【参考】服务器内部重定向必须使用forward;外部重定向地址必须使用URL Broker生成,否则因线上采用HTTPS协议而导致浏览器提示“不安全”。此外,还会带来URL维护不一致的问题。

    【推荐】单表行数超过500万行或者单表容量超过2GB,才推荐进行分库分表。
    说明:如果预计三年后的数据量根本达不到这个级别,请不要在创建表时就分库分表。
    反例:某业务三年总数据量才2万行,却分成1024张表,问:你为什么这么设计?答:分1024张表,不是标配吗?

    1. 【强制】更新数据表记录时,必须同时更新记录对应的gmt_modified字段值为当前时间。

    2. 【推荐】不要写一个大而全的数据更新接口,传入为POJO类,不管是不是自己的目标更新字段,都进行update table set c1=value1,c2=value2,c3=value3; 这是不对的。执行SQL时,不要更新无改动的字段,一是易出错;二是效率低;三是binlog增加存储。

    3. 【参考】@Transactional事务不要滥用。事务会影响数据库的QPS,另外使用事务的地方需要考虑各方面的回滚方案,包括缓存回滚、搜索引擎回滚、消息补偿、统计修正等。

  • 相关阅读:
    双缓冲绘图模式
    java异常
    15-11-24 system同步与异步
    15-11-23:system指令
    使用Swing组件编写一个支持中文文本编辑程序ChineseTextEdit.java
    JTextArea 加入滚动条
    键盘事件
    monitoring_db
    del_archivelog
    Redis 4.0.14 单实例安装
  • 原文地址:https://www.cnblogs.com/aspirant/p/12017177.html
Copyright © 2020-2023  润新知