发表于: 2020-12-29 23:15:23

1 1456


今天完成的事情:
各种规范的查看,记录。
师兄提的问题
老大讲解接口文档视频


明天计划的事情:
接口文档


遇到的问题:
1.一级标题和二级标题的区别是什么(字段信息)?
2.如果需要三级标题、四级标题......甚至更多时,如何实现?有没有更好的设计方式?
3.评论和回复区别是什么(字段信息)?
这些有什么区别?在网页是字体大小区别,字段信息,字段(接口文档的字段信息是一样的)。难道是权限的区别。。。不清楚

鼻炎还没好。。。状态不佳

收获:
1.url规范,命名规范,编码规范,以及数据库设计规范看一遍
为什么要设置这些规范?
我的理解是,在团队合作中,不能只写自己看的懂的东西,而是要让其他人也看得懂。所以需要建立这些通用的规范。
url规范之前已经看过了

命名规范,一般就是使用驼峰命名法。但注意不要和下划线一起连用
【强制】代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束。
反例:_name / __name / $name / name_ / name$ / name__
等等等

编码规范,这个应该就是代码规范,平时注意点就好了。碰到错误记下来

数据库设计规范

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


5. 【强制】主键索引名为 pk_字段名;唯一索引名为 uk_字段名;普通索引名则为 idx_字段名。
说明:pk_ 即 primary key;uk_ 即 unique key;idx_ 即 index 的简称。

9. 【强制】表必备三字段:id, gmt_create, gmt_modified。
说明:其中 id 必为主键,类型为 bigint unsigned、单表时自增、步长为 1。gmt_create, gmt_modified
的类型均为 datetime 类型,前者现在时表示主动式创建,后者过去分词表示被动式更新。

14.【推荐】单表行数超过 500 万行或者单表容量超过 2GB,才推荐进行分库分表。
说明:如果预计三年后的数据量根本达不到这个级别,请不要在创建表时就分库分表。

(二) 索引规约

1. 【强制】业务上具有唯一特性的字段,即使是组合字段,也必须建成唯一索引。
说明:不要以为唯一索引影响了 insert 速度,这个速度损耗可以忽略,但提高查找速度是明显的;另外,
即使在应用层做了非常完善的校验控制,只要没有唯一索引,根据墨菲定律,必然有脏数据产生。

(三) SQL 语句

6. 【强制】不得使用外键与级联,一切外键概念必须在应用层解决。
说明:(概念解释)学生表中的 student_id 是主键,那么成绩表中的 student_id 则为外键。如果更新学
生表中的 student_id,同时触发成绩表中的 student_id 更新,即为级联更新。外键与级联更新适用于单机
低并发,不适合分布式、高并发集群;级联更新是强阻塞,存在数据库更新风暴的风险;外键影响数据库
的插入速度。

9. 【强制】对于数据库中表记录的查询和变更,只要涉及多个表,都需要在列名前加表的别名(或
表名)进行限定。
说明:对多表进行查询记录、更新记录、删除记录时,如果对操作列没有限定表的别名(或表名),并且
操作列在多个表中存在时,就会抛异常。
正例:select t1.name from table_first as t1 , table_second as t2 where t1.id=t2.id;
反例:在某业务中,由于多表关联查询语句没有加表的别名(或表名)的限制,正常运行两年后,最近在
某个表中增加一个同名字段,在预发布环境做数据库变更后,线上查询语句出现出 1052 异常:Column
'name' in field list is ambiguous。

(四) ORM 映射

1. 【强制】在表查询中,一律不要使用 * 作为查询的字段列表,需要哪些字段必须明确写明。
说明:1)增加查询分析器解析成本。2)增减字段容易与 resultMap 配置不一致。3)无用字段增加网络
消耗,尤其是 text 类型的字段。

2. 【强制】POJO 类的布尔属性不能加 is,而数据库字段必须加 is_,要求在 resultMap 中进行
字段与属性之间的映射。
说明:参见定义 POJO 类以及数据库字段定义规定,在 sql.xml 增加映射,是必须的。

4. 【强制】sql.xml 配置参数使用:#{},#param# 不要使用${} 此种方式容易出现 SQL 注入。

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

2.首先不要用外键约束,表间的关联关系在业务代码里进行约束就可以了
为什么不用外键约束?如何在业务代码里进行约束?

设计数据库时使用外键关联,甚至等到系统部署发布,在生产环境上仍然使用外键。

毕竟,等到你发现用户量增长,数据库写入成为瓶颈的时候,完全可以删掉外键关联嘛。

而且,因为之前的外键约束,也能尽早的发现应用系统的 Bug,从而在之后删掉外键关联的时候不用担心应用系统哪里做得不到位。

当然,如果用户量增长过快,或者是在一个用户量本身就很大的旧系统上新增业务功能,那就只能不用外键,老老实实审查代码了。
不推荐使用外键原因:会产生大量垃圾数据。用户量大,并发度高时,外键会限制性能。

3.组合查询是什么?如何在业务代码里约束表间的关联关系

定义
在大多数开发中,使用一条SELECT查询就会返回一个结果集。如果,我们想一次性查询多条SQL语句,并将每一条SELECT查询的结果合并成一个结果集返回。就需要用到Union操作符,将多个SELECT语句组合起来,这种查询被称为并(Union)或者复合查询。

组合查询适用于下面两种情境中:

从多个表中查询出相似结构的数据,并且返回一个结果集

从单个表中多次SELECT查询,将结果合并成一个结果集返回。

看老大视频记下来的一些东西

为什么需要接口文档?
第一个大的项目200多个接口,大的超过300.这时候就非常需要接口文档

接口文档工具。
1.wiki
2.Swagger
3.PDF
4.Spring REST Docs
5.APIDOC
6.小幺鸡

约定大于配置  在接口文档中为什么要设置类型?

字段名词尽可能往上抽象一层,因为我们是根据UI图和原型图来定义的,但这些以后会变动,那么再来看就对不上了。

返回参数,除了用code,message,data还有那种方式?
这个没听清楚
code和message和服务器返回的有什么区别?能不能用code码来代替服务器的返回参数?
为什么要自定义code码?微信上返回码是怎么实现的?
有,自定义的返回码的信息一般是自定义的,而服务器是通用的。可以,但不建议,比较繁琐。看了一下微信的返回码,发现和阿里云差不多

学会自己定义接口文档的标准

找到当前让你不舒服的地方,学会用自己的知识去修改

多个模块,多个期。接口文档是应该放在多个页面里,还是合在一个页面?
按什么分?
1.前后台,期数,复用,

2.期数有一个问题,就是作为一个新人,根本不知道期数,也找不到

3.接口文档的核心理念   根据模块来设计


写接口最怕根据原型图和UI写接口,没有模块的概念。于是后期的修改,改良起来就会很麻烦

一个页面一个接口?引用,改了一个值,然后要改很多参数,地方

为什么把首页调成一个接口?而不是每个版块调一个?
这个没碰到过

总结:有太多知识没碰到过,听起来就很模糊。明天直接开始写接口文档吧











返回列表 返回列表
评论

    分享到