/images/hugo/avatar.png

31 初识动态规划

编程思想之动态规划初识

1. 动态规划

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

29.9 ansible 最佳实践

ansible 最佳实践

/images/linux_mt/linux_ansible.jpg

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

29.8 ansible role

ansible role

/images/linux_mt/linux_ansible.jpg

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

29.7 ansible playbook

ansible playbook

/images/linux_mt/linux_ansible.jpg

playbook 是 基于 yaml 语法的一种编排 ansible 命令的"脚本",类似与 shell scritp;但是 playbook 并不是一门语言。我的理解是 playbook 就是一个配置文件,必需按照 ansible 要求的特定格式编排 ansible 的任务,这样 ansible 才能对其进行解释并执行。其能提供的功能是由 ansible 决定的。我们的目的就是学习 playbook 特定的编写要求。

30 回溯算法

编程思想之回溯算法

1. 回溯算法

回溯算法很多时候都应用在“搜索”这类问题上。即在一组可能的解中,搜索满足期望的解。

回溯的处理思想,有点类似枚举搜索。我们枚举所有的解,找到满足期望的解。为了有规律地枚举所有可能的解,避免遗漏和重复,我们把问题求解的过程分为多个阶段。每个阶段,我们都会面对一个岔路口,我们先随意选一条路走,当发现这条路走不通的时候(不符合期望的解),就回退到上一个岔路口,另选一种走法继续走。

29.6 ansible 常用模块

ansible 常用模块

/images/linux_mt/linux_ansible.jpg

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

1. ansible 核心程序

ansible 的核心程序有三个