java开发CodeReview

  1. 面向失败编程:

代码健壮性:使用get方法将判空条件前置

原子性:对多张表数据进行修改时使用事务

2、性能优化:

批量处理:循环调用多次更新sku信息优化为将调用一次skuList批量处理

数据存储优化:字段存储的字段长度最多有5000个字段,使用了mysql存储redis的key方案

并行流提效:使用stream流代替for循环,并行流效率更高

3、代码优化:

AOP切面优化:在AOP切面中使用多个catch,根据异常类型进行不同等级的日志记录

日志分类:业务规则的限制放在warn日志,系统执行错误放在error日志中

复杂判断解耦:双重if判断优化为前置判断,如果根据业务条件判断使用throw或者return

根据场景使用数据类型:例如redis存储值类型,去重选择set类型,部分更新使用map类型

4、数据层优化:

通过EXPLAIN 关键字分析SQL 语句的执行加载顺序、表连接的、索引,选择作为筛选条件的字段作为索引,组合索引遵循

对齐原则,如果中断后面的条件就没办法利用索引,使用单个索引更加灵活,如果有瓶颈要求综合分析使用组合索引

5、系统设计:

对系统关系的设计上,可以通过优化部分字段来达到减少系统之间的交互流程的目的

6、实践经验:

项目中对数据的处理不够熟悉,开发过程中在笔记中沉淀数据处理的常用方法

7、开发意识:

使用日志过程中,在设计日志系统的角度去开发看问题

8、技术方案设计

1)角色分配:分配各个系统的角色,系统负责提供细粒度的高可用基础功能,公共后端负责控制活动定制逻辑(门面模式)

2)减少交互请求:最开始没有考虑到缓存,对于查询接口可以走缓存,更好的处理高并发和提高接口响应

3)边界完善:对失败的场景设计的逐步优化,先判断是否可以助力再发卡,发卡成功后再调用助力接口插入助力记录,这样可以省去助力成功发卡失败需要回滚助力记录的回滚事务;如果发券失败重试3次,3次之后助力失败

4)高可用:根据已有功能来设计技术方案,营销系统提供接口调用规范,保证营销系统的高用性

9、系统开发

1)开闭原则:遵循对修改关闭,对新增开放的原则,例如不修改原本开启助力接口没有非空参数校验,新增结束助力接口新增参数校验

2)减少对数据库的操作:新增结束助力接口中,第一步先使用redis分布式锁控制并发,第二步查询记录是否存在,第三步判断记录中状态是否已经为已结束,第四步对数据库进行助力初始表和助力记录表的更新

3)功能闭环:使用redis分布式锁控制并发,操作完数据库,及时释放redis分布式锁

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值