前言
微服务是近年来备受关注的话题,相比于传统的SOA而言,更容易理解,也更容易实践,它将“面向服务”的思想做得更加彻底。有人说它非常好,但就是“玩不起”,why?
微服务是一种分布式系统架构,它建议我们将业务切分为更加细粒度的服务,并使每个服务的责任单一且可独立部署,服务内部高内聚,隐含内部细节,服务之间低耦合,彼此相互隔离。此外,我们根据面向服务的业务领域来建模,对外提供统一的API接口。微服务的思想不只是停留在开发阶段,它贯穿于设计、开发、测试、部署、运维等软件生命周期阶段。
可见,我们提到的微服务,实际上是一种架构思想,我们不妨称它为“微服务架构”。今天就带着大家;来学习这份阿里技术专家手写的《微服务架构笔记》,让你成为一名优秀的微服务架构师。
4步套路,解决动态规划问题
1、确定问题状态
- 提炼最后一步
- 的问题转化
2、转移方程,把问题方程化
3、按照实际逻辑设置初始条件和边界情况
4、确定计算顺序并求解
结合实例感受下:
你有三种硬币,分别面值2元,5元和7元,每种硬币都有足够多。买一本书需要27元。如何用最少的硬币组合正好付清,不需要对方找钱?
关键词“用最小的硬币组合正好付清”——“最小的组合”,求最值问题,动态规划。
**正常人第一反应思路:**最少硬币组合?优先使用大面值硬币——7+7+7+5=26 额?可求解目标是27啊……改算法——7+7+7+2+2+2=27,总共用了6枚硬币正好27元.实际正确答案:7+5+5+5+5=27,才用了5枚硬币。所以这里贪心算法是不正确的。
套路用起来:
第一步,确定问题状态。
动态规划问题求解需要先开一个数组,并确定数组的每个元素f[i]代表什么,就是确定这个问题的状态。类似于解数学题中,设定X,Y,Z代表什么。
A、确定状态首先提取【最后一步】
最优策略必定是K枚硬币a1, a2,…, aK 面值加起来是27。