编码经验杂记

  1. 友好的表单业务的完整流程
    页面防止重复提交–> 页面表单验证–>展示loading图–>网络通信问题反馈处理 -->后台防止重复提交–> 后台数据验证–>后台业务处理–>保存数据(处里空格等)–>日志记录错误的详细信息–>展示详细处理结果和说明–>页面根据处理结果引导客户进行业务跳转。

  2. 业务优化点

    • 尽量减少循环
    • 重用资源,充分利用缓存(链接,不易变化的数据)
    • 尽量减少异步行为,让流程各步骤串行化
    • 充分利用索引
    • 尽量保证流程单一,不要掺杂其他流程。(例如,送券的流程掺杂统计过程)
    • 对于耗时的操作且不需要同步返回的,放在线程中执行
    • 流程中尽量减少系统间耦合
    • 在保证事务的情况下尽量把计算结果的流程和使用结果的流程分开
    • 表设计尽量减少多表关联查询,让不变的字段冗余
    • 尽可能的创建可重用对象
    • 并发是高效的,锁降低了并发的效率,甚至让并发变成顺序执行,失去了并发的意义。所以最好的并发是无锁的并发,应该尽量去掉锁。
  3. 编码注意事项

    • 获取一条记录后,如果没有,是不是应该新建一个,应该慎重考虑。
    • 改变代码顺序需要及其慎重
    • 并发环境要充分考虑所使用工具类是否线程安全
    • 有的接口是基于当前时间的,所以下次调用同样的参数可能就会不幂等,一种解决方法是把当前时间也作为参数传入。
    • 处理批量数据时,要处理好单个错误对全部数据的影响
    • 新加查询字段时,慎重通过判断null来增加查询条件,这很可能会改变接口的语义
      public ServiceResponse<PaginationResult>  getChannelSkuMappingPageList(@Valid ChannelSkuMappingPageRequest  req) {
             
              if (req.isEmpty()) {
             
                  return ResponseTool.success();
              }
      //这个是新加的字段,先前的语义是 没有这个字段也就是null的时候查询所有,如下代码会改变原来的语义
              if(req.getContainSyncProductPlatform()==null){
             
                  req.setNotPlatformCodes("1,3");
              }
      }
      
  4. 业务流程的稳定性

    • 所有参与的接口都必须严格幂等,这样才能重复调用来最快的恢复失败部分
    • 每次业务都应有唯一标识,参与的接口都被追踪和记录,这样才能知道业务走到了哪里,可以最快的进行恢复
    • 每个错误都应被严格记录日志和通知相关人员,这样才能最快发现问题
    • 每个异步任务都应记录进度和状态
  5. 拆分服务的界限的一个考量就是可能的访问数量,像c端访问量通常远远大于b端,所以应该把c端,b端分开

  6. 流式编程

    • 流式编程减少了循环的次数,提升了效率,相当于在一个循环里处理所有数据。
    • 考虑流的带宽,可以只是一个对象的带宽,也可以是10个对象的带宽。如果总共需要处理10个数据,带宽为1,如果数据来自数据库,那么就要有10次io,就不如一次10个数据,只需要一次io。所以带宽的大小依情况而定

相关推荐

  1. 编码经验杂记

    2024-02-23 13:02:01       28 阅读
  2. CSS<span style='color:red;'>杂记</span>

    CSS杂记

    2024-02-23 13:02:01      19 阅读
  3. C++杂记

    2024-02-23 13:02:01       12 阅读
  4. Python学习杂记

    2024-02-23 13:02:01       36 阅读
  5. uniapp问题杂记

    2024-02-23 13:02:01       36 阅读
  6. Qt杂记——TCP

    2024-02-23 13:02:01       29 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-23 13:02:01       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-23 13:02:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-23 13:02:01       20 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-23 13:02:01       20 阅读

热门阅读

  1. WPF 键盘事件捕获

    2024-02-23 13:02:01       27 阅读
  2. 学习git分支

    2024-02-23 13:02:01       26 阅读
  3. C#的三种小数类型 decimal和double , float

    2024-02-23 13:02:01       31 阅读
  4. wpf menu 菜单 快捷键

    2024-02-23 13:02:01       24 阅读
  5. 通过ffmpeg实现rtsp rtmp rtmps 推流

    2024-02-23 13:02:01       33 阅读
  6. selenium的使用

    2024-02-23 13:02:01       27 阅读
  7. 前端自动生成二维码并长按识别跳转 Vue

    2024-02-23 13:02:01       27 阅读
  8. 基于开源模型对文本和音频进行情感分析

    2024-02-23 13:02:01       31 阅读