写在前面
最近一个半月的时间参加了酒旅项目的开发过程,从需求分析到前后端联调,项目中负责内容不多,但是对于整个产品开发流程和使用的技术有了一个整体上的认识,很荣幸参与到这样一个比较真实的项目中,感谢师哥和小伙伴们的指导,最后将项目整理记录。
技术架构
项目工程结构
项目结构
admin:后台的系统
auth:认证,登陆和授权,Oauth2.0 登录 JWT 生成token,登录校验,和权限校验
common:通用模块
gateway: 网关处理 webflux网关,响应式编程,过滤器(全局、局部)路由有规则,配置在yaml 文件,公司里设置动态路由(配置在Apollo或者nacos里),(如果配置在yaml文件中,更新路由会重启项目,动态路由不需要重启项目)
portal:对接前端小程序的门户
order:订单
user-center:用户中心
monitor:监控
job:数据一致性的时候会重试,重试时会用到
mbg-plus:代码生成器
elk:日志
search模块:主要是es全文检索,es和mysql数据同步的问题,同步失败怎么办,如何保持数据库 一致性
Mysql知识点
个人体会
整体项目流程
大概分为以下几个模块:
熟悉、体验产品(梳理业务)——>数据库设计——>接口设计——>架构梳理理解——>代码开发——>代码优化——>前后端联调——>产品上线
系统总结
代码和数据表设计规范:不是认死某一种规范,如果公司有自己的一套规范就“入乡随俗“
代码的可读性很重要
注释的完善性:除了方法注释、类注释等基本注释,一些业务逻辑,在关键、特殊、复杂的地方写上注释,便于阅读代码(代码是写给别人看的)。
全局意识:时间节点,考虑问题的角度
迭代意识:不要想着一步到位,但是需要考虑尽可能多的情况,设计上能够灵活的满足后续要求
合作意识:团队意识
计划性:时间节点的把控,有问题提前说
沟通能力:对方听懂了才是有效沟通
解决问题能力:先自己尝试解决问题(分析问题,百度查等),实在解决不了(或者已经花费了过多的时间)再求助别人
学习能力:如何学习(边用边学,需求导向的学习;复盘、总结)
数据库总结
编码的可读性放在第一位
字段命名要统一,阿里的最新版本
表名称见名之意,字段也是
表中要有逻辑删除
是与否的状态不用is
字段的数据类型要注意、
字段尽量都不为空,有默认值,(有空值时,索引会失效)
字段的大小和长度
数据库设计表的创建时间 CURRENT_TIMESTAMP ,数据类型是时间戳 TIMESTAMP
数据库表的更新时间CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,数据类型是时间戳 TIMESTAMP
InnoDB索引有范围要求(小于767字节),一般缩小索引字段长度100左右够用即可。
不用做存储过程、不要外键、不做联合查询(多表查询通过单表查询,用流的形式组合)且必须走索引
架构图有几种?
基础、应用、业务、数据
接口设计总结
开发手册
参数名,参数类型,示例,接口URL规范,
Content-Type:JSON格式
参数驼峰结构,请求链接不用下划线分割,一般用短杠-分割
请求方式用Get、Post,Get请求参数在Query里面填写,Post在body里面填写。
Get请求有字节限制,请求如果参数特别多的时候可以用Post
日期需要配置格式,序列化和反序列化,JSON序列化中配置
后台接口加/admin
代码开发规范总结
非空设置@NotNull
不在controller层做事务处理
不用try catch 使用全局捕捉异常例GlobalExceptionHandler,ApiException直接引用Common模块使用
可以使用if return 让代码简洁
在主要流程打印日志
字符串拼接问题
mybatis-plus可以用lambdaQueryWrapper
hutool工具
Git的简单使用总结
-
选择一个相对充裕的文件夹
创建一个新文件夹
鼠标右键 git bash
-
输入 git clone hotel-parent: 分布式项目 -b dev-team1
-
然后将自己代码粘进去,检查一遍有没有报错啥的
-
git status 看一下自己的文件对不对然后 “git add .” 将自己的文件全部放入缓冲区
-
git commit -m “提交信息(自己提交了xxx)”
-
git push origin dev-team1 然后上gitee看看有没有