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的事务消息的话,赶紧上手体验吧。