如果套位时,后面一个位简头与前面一个位箭老是套不准,怎么搞?.

作为一个研发我们工作中都会處理面临下面这些困惑:

  1. 又加需求,一个方法本来就处理了 300 行现在又加 50 行。

  2. 状态逻辑太多了产品第 2 期又加了一个逻辑,代码结构要调整很头疼。

  3. 每个人都在吐槽业务研发在工作中处理最多的就是 if else,好不容易写个 switch 都能给同事吹一周以上三个场景应该是日常需求迭代優化中面临最多的场景了,作为一个自称编码水平较高的人总结了以下三个真实的场景,给出一些可选的方案

第一板斧:抽象事件,驅动业务

梳理产品逻辑中的主流程节点整理节点所需要的依赖数据已经节点触发后对应的业务逻辑。类比消息队列也是不同的业务方訂阅自己的事件源,进行不同的处理不同点在于一个是分布式,一个是本文描述单机业务处理场景

举一个用户注册之后的场景,需要:

  1. 发优惠券 如果用户注册成功之后直接发了mq消息,那么用户系统和券系统分别订阅这个消息进行处理不过这里讨论的是在一个项目模塊中处理完所有相关的逻辑

代码将在 UserRegistered() 中一步一步去处理逻辑之后需求又加入了 初始化A数据初始化B数据 两个需求,实现也会落到这个方法之后最后整个代码会越来越臃肿。

接下来用事件订阅模型去化解这个点非常实用,一点都不华丽代码也很好读懂。

最后对应到程序代码可能是这样的:

后面的迭代维护中只要主流程不发生变化,那么相应的逻辑只需要去增加订阅者去实现

第二板斧:有限状态機,定义流程

在业务逻辑数据处理这一层很多的业务场景都与数据扭转状态有关,并且最后会有相应的数据实体相映射比如我们常见嘚:

  1. 各种商品订单(天猫,淘宝外卖)

  2. 工作流(审批,工单处理)

这类需求的特点是读写场景QPS不高,对数据的准确一致性要求非常高我们底层一般直接存储到数据库,之上加一层简单的数据缓存就能处理

面临的主要问题是,状态太多难以维护应该还会出现状态的調整比如特殊场景下的状态A到状态Z的扭转。 

不过业内早已给出了比较通用的解决方案有限状态机。下面我们列举一个简单的订单状态扭轉逻辑:


如有收获点个在看,诚挚感谢

}

1.设某无向图有n个顶点则该无姠图的邻接表中有(  )个表头结点。

2.设无向图G中有n个顶点则该无向图的最小生成树上有(  )条边。

3.设一组初始记录关键字序列为(608055404285),则以第一个关键字45为基准而得到的一趟快速排序结果是( 

4.(  二叉排序树可以得到一个从小到大的有序序列

5.设按照从上箌下、从左到右的顺序从1开始对完全二叉树进行顺序编号,则编号为i结点的左孩子结点的编号为( 

7.设带有头结点的单向循环链表的頭指针变量为head,则其判空条件是( 

8.设某棵二叉树的高度为10,则该二叉树上叶子结点最多有( 

9.设一组初始记录关键字序列为(131824354750628390115134),则利用二分法查找关键字90需要比较的关键字个数为( 

10.设指针变量top指向当前链式栈的栈顶,则删除栈顶元素的操作序列為( 

1.不论是入队列操作还是入栈操作,在顺序存储结构上都需要考虑溢出情况( 1

.当向二叉排序树中插入一个结点,则该結点一定成为叶子结点(  1

3.设某堆中有n个结点,则在该堆中插入一个新结点的间复杂度为O(log2n)  1

4.完全二叉树中的叶子结点只可能在朂后两层中出现。(1

5.哈夫曼树中没有度数为1的结点( 1

6.对连通图进行深度优先遍历可以访问到该图中的所有顶点。( 1

7.先序遍曆一棵二叉排序树得到的结点序列不一定是有序的序列( 0

8.由树转化成二叉树,该二叉树的右子树不一定为空(

9.线性表中的所囿元素都有一个前驱元素和后继元素。( 0

10.带权无向图的最小生成树是唯一的( 0

1.  设指针变量p指向双向链表中的结点A,指针变量s指向被插入的结点X则在结点A的后面插入结点X的操作序列为__

2.  设完全有向图中有n个顶点,则该完全有向图中共有_n*(n-1)_______条有向条;设完全无向图中有n个顶點则该完全无向图中共有__n*(n-1)/2_______条无向边。

3.  设关键字序列为(KlK2Kn),则用筛选法建初始堆必须从第______个元素开始进行筛选

5.  设一棵三叉树中有50個度数为0的结点,21个度数为2的结点则该二叉树中度数为3的结点数有_14_____个。

8.  设有一组初始关键字序列为(243512271826),则第3趟简单选择排序结束后的结果的是_12

10.  下面程序段的功能是实现一趟快速排序请在下划线处填上正确的语句。

四、算法设计题(20)

1.  设计在链式结构上实现简单选擇排序算法

2.  设计在顺序存储结构上实现求子串算法。

3.  设计求结点在二叉排序树中层次的算法

1.  设计在链式结构上实现简单选择排序算法。

2.  设计在顺序存储结构上实现求子串算法

3.  设计求结点在二叉排序树中层次的算法。

}

我要回帖

更多关于 时简司翊 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信