前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java开发规范记录

Java开发规范记录

作者头像
程序员波特
发布2024-01-19 10:00:24
1390
发布2024-01-19 10:00:24
举报
文章被收录于专栏:魔法书
  1. 不要使用 count(column)count(1)来替代 count(*)count(*)是 SQL92 定义的 标准统计行数的语法,跟数据库无关,跟 NULL 和非 NULL 无关。

注意:count(*)会统计值为 NULL 的行,而 count(列名)不会统计此列为 NULL 值的行。

  1. 当某一列的值全是 NULL 时,count(column)的返回结果为 0,但 sum(column)的返回结果为 NULL,因此使用 sum() 时需注意 NPE 问题
    • 正例:可以使用如下方式来避免 sumNPE 问题:
    • SELECT IF(ISNULL(SUM(g)), 0, SUM(g)) FROM table;
  2. 使用 ISNULL()来判断是否为 NULL 值。 说明:NULL 与任何值的直接比较都为 NULL。
    • NULL <> NULL 的返回结果是 NULL,而不是 false
    • NULL = NULL 的返回结果是 NULL,而不是 true
    • NULL <> 1 的返回结果是 NULL,而不是 true
  3. 如果有全球化需要,所有的字符存储与表示,均以 utf-8 编码,注意字符统计函数 的区别。
    • SELECT LENGTH("轻松工作"); 返回为 12
    • SELECT CHARACTER_LENGTH("轻松工作"); 返回为 4
    • 如果需要存储表情,那么选择 utf8mb4 来进行存储,注意它与 utf-8 编码的区别。
  4. TRUNCATE TABLEDELETE 速度快,且使用的系统和事务日志资源少,但 TRUNCATE 无事务且不触发 trigger,有可能造成事故,故不建议在开发代码中使用此语句。
    • 说明:TRUNCATE TABLE 在功能上与不带 WHERE 子句的 DELETE 语句相同
  5. 页面搜索严禁左模糊或者全模糊,如果需要请走搜索引擎来解决。
    • 说明:索引文件具有 B-Tree 的最左前缀匹配特性,如果左边的值未确定,那么无法使用此索引
  6. 表达是与否概念的字段,必须使用 is_xxx 的方式命名,数据类型是 unsigned tinyint ( 1 表示是,0 表示否)
    • 说明:任何字段如果为非负数,必须是 unsigned
    • 正例:表达逻辑删除的字段名 is_deleted,1 表示删除,0 表示未删除。
  7. 表名、字段名必须使用小写字母或数字,禁止出现数字开头,禁止两个下划线中间只 出现数字。数据库字段名的修改代价很大,因为无法进行预发布,所以字段名称需要慎重考虑。
    • 说明:MySQLWindows 下不区分大小写,但在 Linux 下默认是区分大小写。因此,数据库名、表名、字段名,都不允许出现任何大写字母,避免节外生枝.
    • 正例:sys_admin,rdc_config,level3_name
    • 反例:SysAdmin,rdcConfig,level_3_name
  8. 单表行数超过 500 万行或者单表容量超过 2GB,才推荐进行分库分表。
    • 说明:如果预计三年后的数据量根本达不到这个级别,请不要在创建表时就分库分表
  9. 合适的字符存储长度,不但节约数据库表空间、节约索引存储,更重要的是提升检 索速度。
  10. 表单、AJAX 提交必须执行 CSRF 安全过滤。
    • 说明:CSRF(Cross-site request forgery)跨站请求伪造是一类常见编程漏洞。对于存在 CSRF 漏洞的应用/网站,攻击者可以事先构造好 URL,只要受害者用户一访问,后台便在用户 不知情情况下对数据库中用户参数进行相应修改。
  11. 泛型通配符<? extends T>来接收返回的数据,此写法的泛型集合不能使用 add() 方法,而<? super T>不能使用 get() 方法,做为接口调用赋值时易出错。
  • 说明:扩展说一下 PECS(Producer Extends Consumer Super)原则:
  • 第一、频繁往外读取内 容的,适合用<? extends T>
  • 第二、经常往里插入的,适合用<? super T>
  1. 使用工具类 Arrays.asList()把数组转换成集合时,不能使用其修改集合相关的方 法,它的 add/remove/clear 方法会抛出 UnsupportedOperationException 异常。
  • 说明:asList 的返回对象是一个 Arrays 内部类,并没有实现集合的修改方法。Arrays.asList 体现的是适配器模式,只是转换接口,后台的数据仍是数组。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-10-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档