java后台服务文档

#***服务端开发代码  
##项目结构  
父工程hhzgw-news,定义jar包版本依赖,统一管理子工程  
hhzgw-news  
    |- news-common,             公共依赖包,基础业务包,包括持久层代码和utils  
    |- news-service-admin,      管理端管理后台业务代码,包括service,controller  
    |- news-service-user,       用户端管理后台业务代码,包括service,controller  

##技术栈  
基础开发框架:springboot 2.3.3  
持久层开发框架:mybatis+tkMapper+pageHelper,
    使用tkmapper时,主键需要添加javax.persistence.Id,@GeneratedValue(generator = "JDBC"),并且数据类型使用包装类  
缓存:redis  
数据库:mysql 8.0.21  
存储:阿里云OSS  
json格式化工具:fastjson 1.2.74  
接口文档:swagger 2.9.3  
token校验方式:jwt 0.9.1  
类型转换工具:基于BeanUtils的converter  
工具类:hutools 5.5.4  

##请求与响应  
登录验证采用jwt,登录成功后将返回的token值放入header中请求后续接口,key="Authorization"  
token超时需重新登录,超时时间待定义  
目前A端采用手机号密码登录,B端采用手机号验证码登录  
接口请求采用restful风格:  
新增数据:POST   参数格式:json  
修改数据:PUT    参数格式:json  
查询数据:GET    参数格式:url拼接  
删除数据:DELETE 参数格式:url拼接  

响应数据JSON格式:  
{  
    "code": 200,  
    "msg": "参数有误",  
    "data": {"foo":"1","bar":"2"}  
}  

##日志级别  
测试环境:debug  
开发环境:info  
生产环境:warning或info  

##开发要求  
###一:实体类  
采用lombok注解,减少重复代码
####1.entity中的POJO  
用途:持久层和数据库对应  
命名方式:Xxx  
位置:com.hhzgw.news.common.business.entity    
####2.DTO是数据封装类  
用途:在service和dao之间传递  
命名方式:XxxDTO  
位置:com.hhzgw.news.common.business.dto  
####3.BO是数据封装类  
用途:在前端到接口之间传递  
命名方式:XxxBO  
位置:com.hhzgw.news.service.*.api.*.bo  
####4.VO是数据封装类最终给web返回的数据  
用途:在接口到前端之间传递  
命名方式:XxxVO  
位置:com.hhzgw.news.service.*.api.*.vo  

###二:集合使用  
使用hashmap时,不超过12不用指定初始化容器大小,超过12以后一定要指定容器大小  
hashmap使用entrySet遍历,jdk8可以使用Map.foreach  
不要在foreach里进行add/remove操作,remove元素使用iterator,并发操作对iterator加锁  
谨慎使用stream,繁杂逻辑不使用stream,以防降低可读性  
 
###三:Redis存储规则  
幂等性:使用hash,key:idempotence_,field:业务_,value:token    
token存储:string,prefix:webuser_,key:token,value:userinfo  
手机号存储:hash,key:webcurrent_,field:mobile。value:token  

###四:建表规范   
1.数据库字符集使用utf8,排序规则使用utf8_general_ci  
2.表名,字段名必需英文字母小写,单词减下划线分隔  
3.每张表都必须有id(自增bigint,作为主键),create_time(timestamp类型),可选update_time(timestamp类型)  
4.表关联时使用外键,不得使用主键冗余,外键**_id必须同为bigint类型  
5.小数类型使用decimal,禁止使用float,double损失精度  
6.存储的字符串长度固定时,使用char定长  
7.字符串按需分配存储空间,长度小于5000使用varchar,长度小于50000使用text,长度大于50000使用mediumtext,谨慎使用longtext  
8.尽量不使用冗余字段,如有必要,不能是频繁修改的字段,不能是varchar超长字段,更不能是text  
9.对大表高频查询条件创建索引,索引方法使用B树,联合索引字段不得超过5个  
10.单表行数超过500w行,或者表单容量超过2g,才进行分库分表  

###五:SQL规范  
1.查询数量使用count(*),优化器会自动选择最窄索引,减少在整个表上使用count(*) ,它可能会将整个表锁住  
2.使用ISNULL()来判断是否为null值  
3.分页查询逻辑,count=0时直接返回,避免执行后面的分页  
4.数据删除或修改要先select,再根据主键进行操作,避免过量操作  
5.尽量避免in操作,避免不了要控制在1000个以内  
6.在开发中不允许使用truncate  
7.select查询时,无论字段多少,只查询需要的属性,不允许查询*    
8.配置参数使用#{}, 不允许使用${}  
9.执行update操作时,不要更新无改动的字段  
10.@Transactional事务不要滥用,回滚需要考虑缓存,搜索引擎,消息补偿,统计  

##进度  
1、需求分析、业务流程梳理  
2、技术框架搭建  
3、方案设计  
4、详细设计  
5、模块拆分  
6、编码  
7、测试
8、上线  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值