ARTS第十四周

ARTS第十四周

ARTS是什么?

Algorithm:每周至少做一个leetcode的算法题;
Review:阅读并点评至少一篇英文技术文章;
Tip/Techni:学习至少一个技术技巧;
Share:分享一篇有观点和思考的技术文章。

Algorithm

题目:746. Min Cost Climbing Stairs

解题思路

根据题意,爬楼梯的方式有两种,一种爬一步,一种爬两步,每次爬需要花费一次开销,要求最终爬到楼梯顶层最小需要花费多少。因为每一层楼梯都可以有两种方式爬上来,1:从下二级爬上来,2:从下一级爬上来,爬到当前楼层的最小花销是当前楼层的花销 + 两种方式中花费比较小的那种开销。根据这种意思,可以写出下面的代码。

代码

 public int minCostClimbingStairs(int[] cost) {
        //到前一个台阶的总和
        int f1 = 0;
        //到前两个台阶的总和
        int f2 = 0;
        for (int i = 0; i < cost.length; i++) {
            //到当前台阶的和
            int f0 = cost[i] + Integer.min(f1,f2);
            //原前一个台阶变成了前两个台阶
            f2 = f1;
            //当前台阶变成了前一个台阶
            f1 = f0;
        }
        //最终取前一个和前两个台阶中小的那个
        return Math.min(f1,f2);
    }

Review

https://rocketmq.apache.org/rocketmq/the-design-of-transactional-message/一文讲述了Rocket MQ事务消息的设计。

概念介绍

半消息
半消息指的是不能立即投递的消息。当一个消息被成功发送到MQ服务器,但是服务器没有收到生产者的两次确认消息,这样的消息会被标记成“暂时不能投递”。这种状态的消息被称为半消息。

消息状态检查
网络中断或者生产者应用重启会导致丢失事务的二次确认消息。当MQ服务器发现一个消息状态长时间保持半消息状态时,它会发送请求给消息生产者,要求检查消息的状态(提交 or 回滚)。

执行流程图

详细设计

概要

发送事务消息

检查事务消息

Tip/Techni

Karabiner:mac上的改键神器,大幅提升工作效率。

Capslock:这是基于Karabiner的一个快捷键配置项目,把传统的大小写键Capslock改成一个修饰键,通过和其他按键的组合实现很多实用的快捷键,感兴趣的同学欢迎star。

Share

Rocket MQ 4.3.0分布式事务消息初析这篇文章简单介绍了Rocket MQ事务消息的概念和代码实战,配合review处的文章食用,效果更佳。如果你还没有使用过Rocket MQ的事务消息的话,赶紧上手体验吧。

posted @ 2019-04-01 21:25  陈海翔  阅读(166)  评论(0编辑  收藏  举报