31 初识动态规划
编程思想之动态规划初识
1. 动态规划
动态规划是几个编程思想中最难的一个,它与回溯密切相关。回溯问题是在一组可能的解中,搜索满足期望的解;采用的方法类似枚举,找出所有解,筛选符合要求的解;而动态规划比较适合用来求解最优问题,比如求最大值、最小值等等。基本上所有的动态规划问题都能用回溯算法解决,但是动态规划能有效避免回溯算法中的重复计算,提高代码执行效率。
编程思想之动态规划初识
动态规划是几个编程思想中最难的一个,它与回溯密切相关。回溯问题是在一组可能的解中,搜索满足期望的解;采用的方法类似枚举,找出所有解,筛选符合要求的解;而动态规划比较适合用来求解最优问题,比如求最大值、最小值等等。基本上所有的动态规划问题都能用回溯算法解决,但是动态规划能有效避免回溯算法中的重复计算,提高代码执行效率。
ansible 最佳实践

当我们刚开始学习运用 playbook 时,可能会把 playbook 写成一个很大的文件,到后来可能你会希望这些文件是可以方便去重用的,所以需要重新去组织这些文件。ansible 支持 include 语法对 tasks, handlers, playbook 进行引用,从而我们可以对基础的通用功能进行封装,通过 “include” 对通用的功能进行组装从而实现复用。
ansible role

role 角色,基于一个已知的文件结构,去自动的加载某些 vars_files,tasks 以及 handlers。基于 roles 对内容进行分组,使得我们可以容易地与其他用户分享 roles。
ansible playbook

playbook 是 基于 yaml 语法的一种编排 ansible 命令的"脚本",类似与 shell scritp;但是 playbook 并不是一门语言。我的理解是 playbook 就是一个配置文件,必需按照 ansible 要求的特定格式编排 ansible 的任务,这样 ansible 才能对其进行解释并执行。其能提供的功能是由 ansible 决定的。我们的目的就是学习 playbook 特定的编写要求。
编程思想之回溯算法
回溯算法很多时候都应用在“搜索”这类问题上。即在一组可能的解中,搜索满足期望的解。
回溯的处理思想,有点类似枚举搜索。我们枚举所有的解,找到满足期望的解。为了有规律地枚举所有可能的解,避免遗漏和重复,我们把问题求解的过程分为多个阶段。每个阶段,我们都会面对一个岔路口,我们先随意选一条路走,当发现这条路走不通的时候(不符合期望的解),就回退到上一个岔路口,另选一种走法继续走。
ansible 常用模块

上一节我们对 ansible 做了一个概括性的介绍,本节我们来看看 ansible 主程序与常见模块的使用,模块是我们定义服务配置的关键。
ansible 的核心程序有三个