摘要:
一、二叉树的定义 1、二叉树的链式存储 将二叉树的节点定义为一个对象,节点之间通过类似链表的链接方式来连接 2、节点的定义 3、二叉树图 二、前序遍历 1、实现代码 2、输出 实现代码 输出 三、中序遍历 1、实现代码 2、输出 四、后序遍历 1、实现代码 2、输出 五、层次遍历 1、实现代码 2、 阅读全文
摘要:
一、哈希表 1、表查找 哈希表(HashTable,又称为散列表),是一种线性表的存储结构。通过把每个对象的关键字k作为自变量,通过一个哈希函数h(k),将k映射到下标h(k)处,并将该对象存储在这个位置。 例如:数据集合{1,6,7,9},假设存在哈希函数h(x)使得h(1) = 0, h(6) 阅读全文
摘要:
一、什么是队列? 定义: 二、队列的实现 1、单向队列 输出结果 2、内置队列操作文件(相当于linux的tail功能) 1、代码 2、test 3、输出结果 三、队列的实现原理 四、环形队列 阅读全文
摘要:
一、链表基础 1、什么是链表? 链表中每一个元素都是一个对象,每个对象称为一个节点,包含有数据域key和指向下一个节点的指针next。通过各个节点之间的相互连接,最终串联成一个链表。 2、节点定义 打印结果: 3、头结点 二、链表的操作 1、链表的遍历 1、图形 2、代码 2、链表节点的插入 1、头 阅读全文
摘要:
一、栈的应用——迷宫问题 1、解题思路 2、实现代码 二、队列的应用——迷宫问题 1、解题思路 2、实现代码 阅读全文
摘要:
一、基本原理 桶排序假设输入数据服从均匀分布,防止所有元素集中在少数几个桶中,平均情况下它的时间代价为O(n)O(n) 。基本思想: 桶排序将[0,1)区间划分为n个相同大小的子区间,也就是桶,然后将n个输入数据分别放到各个桶中,为了得到输出结果,我们队每个桶中的数进行插入排序,最后遍历所有桶按照次 阅读全文
摘要:
一、10算法分类 本文一共总结了10种排序算法,其中 基于比较的排序算法有 冒泡排序,插入排序,希尔排序,选择排序,归并排序,堆排序,快速排序; 线性时间排序算法包括 计数排序,基数排序,桶排序; 前边有提到过,基于比较的排序算法,时间复杂度最差达到O(nlogn)O(nlogn),无法突破这个界限 阅读全文
摘要:
一、重排列 方法一: 方法二: 二、二维二分查找 方法一: 方法二: 三、 Two Sum 1、题目描述 2、方法一 3、方法二 https://leetcode.com/problems/two-sum/description/ 四、区域查询 方法一: 阅读全文
摘要:
一、问题: 现在有一个包含 N 个元素的元组或者是序列,怎样将它里面的值解压后同时赋值给 N 个变量? 二、解决方案: 代码示例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 >>> p = (4, 5) >>> 阅读全文
摘要:
一、基本原理 计数排序的思想类似于哈希表中的直接定址法,在给定的一组序列中,先找出该序列中的最大值和最小值,从而确定需要开辟多大的辅助空间,每一个数在对应的辅助空间中都有唯一的下标。 限制:计数排序假设n个输入元素中的每一个元素都是在0到k区间内的一个整数,只可处理非负数;计数排序的基本思想:对每一 阅读全文
摘要:
一、基本原理 基数排序是基于计数排序的,基数排序着眼于输入序列的每一位数,每一轮排序都是根据序列中的某一位数进行排序,从低位到高位各进行一次这种排序思想,最终序列便是有序的。由于输入序列每一位数都是有限的,比如十进制序列,每位数都是0~9的数字,于是可以选择计数排序对序列某一位数进行排序。同样,基数 阅读全文
摘要:
一、详细调整过程(不打印li, low, mid, high) 1、实现代码 2、打印结果 1 "C:\Program Files\Python35\python.exe" E:/工作目录/python/test/heap.py 2 [5, 97] 3 [57, 20] 4 [5, 97, 57, 阅读全文
摘要:
一、数组和列表的区别 区别一: 数组中存放的数据类型必须一致,可以存放基本类型数据 list中可以存放不同类型数据,但不能存放基本类型数据 区别二: 数组不能删除制定位置元素,除非重建数组对象 list移除某一元素后,后续元素会前移 区别三: 数组初始化后大小固定,且数据都已经被赋值 列表长度是根据 阅读全文
摘要:
一、栈的基本概念 二、栈的Python实现 1、操作方法 2、实现代码1 打印机结果 3、代码2 打印结果 三、栈的应用——括号匹配问题 1、问题描述 2、实现代码 阅读全文
摘要:
一、希尔排序思路 二、图解希尔算法 三、希尔排序代码 四、希尔排序性能分析 1、算法复杂度 会根据增量的不同而不同,一般来说: 时间复杂度: 1. 最好情况:O(n^1.3) 2. 最坏情况:O(n^2) 空间复杂度:O(1) 2、稳定性 稳定性:不稳定(相同元素的相对位置会改变) 希尔排序的时间复 阅读全文
摘要:
一、归并排序基本思想 归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。 分而治 阅读全文
摘要:
一、堆排序小根堆 二、堆排序内置模块 一、内置模块总览 2、实现堆排序 1、实现代码 2、测试结果 3、打印堆的第一个和第二个数 1、实现代码 2、测试结果 4、加大测试范围 1、实现代码 2、测试结果 1 "C:\Program Files\Python35\python.exe" E:/heap 阅读全文
摘要:
一、MySQL集群需求分享 1、抽象:功能模块 二、mysql 主从实现思路 2.1 mysql-install.sls 安装 配置 初始化 把基础的写成通用 2.2 my.cnf配置不同-server id my.cnf不一样的数据include,线上十几个mysql集群,我很多业务需要用我就in 阅读全文
摘要:
零.目录结构 一、 关闭SELinux 1、selinux.sls 2、selinux-config 二、 关闭默认iptables 三、时间同步(配置ntp) 四、文件描述符(必备 /etc/security/limits.conf) 1、limit.sls 2、limits.conf 1 [ro 阅读全文
摘要:
一、画图代码 1、收集处理数据 2、生成流量图 3、画图展示 二、国外画图软件hcharts 1、官方网址 2、静态图讲解 3、动态图片讲解 动态看红框 4、API使用 1、数据格式 2、api文档 截图 3、文档教程 截图 三、国内百度echarts 1、官方网址 2、地图展示 3、3D图展示 4 阅读全文
摘要:
一、报警自动升级代码解析 发送邮件代码 二、报警自动升级测试 1、iowat 过高过程 截图 2、报警升级过程 截图 3、发送邮件截图 1、触发器截图 2、控制台截图 阅读全文
摘要:
一、需求梳理 你入职了一家新的公司,假如这个公司没有任何的运维自动化,你现在通过saltsack来运维的方方面把他自动化 一台新的机器,买回来需要壮机器,我们可以使用Cobbler 1、配置主机名 2、配置ip地址 系统已经安装好了!现在要监控起来 二、系统初始化 1.1 关闭SELinux 1.2 阅读全文
摘要:
一、配置文件创建文件夹 1、编辑/etc/salt/master 2、创建 二、状态文件和客户端配置文件 1、创建状态文件 2、创建客户端配置文件(可以从安装好的配置文件稍作更改) 1 [root@saltstack file]# cat zabbix_agentd.conf 2 # This is 阅读全文
摘要:
一、首先在master端安装salt-ssh,我将通过salt-ssh来为minion服务器执行安装命令。 yum -y install salt-ssh 二、部署roster 修改/etc/salt/roster的配置文件 roster配置文件的配置选项有: 我使用os.system修改roste 阅读全文
摘要:
目录 微服务专栏地址 目录 1. 简介 2. 微服务配置中心是什么 3. 为什么需要微服务配置中心 4. 微服务配置中心实现技术 4.1 网罗的实现技术 4.2 Apollo分布式配置中心 4.2.1 基础模型 4.2.2 总体设计 4.3 Spring Cloud config 4.3.1 基础流 阅读全文
摘要:
一、SALT.RUNNERS.MANAGE Manage官方文档: https://docs.saltstack.com/en/latest/ref/runners/all/salt.runners.manage.html#module-salt.runners.manage salt-run ma 阅读全文
摘要:
1. Salt yaml配置文件使用Jinja2模板介绍 jinja2官方网站: http://jinja.pocoo.org/ 1.1 File状态使用template参数 1.2 模板文件里面变量使用{{ 名称 }} 1.3 变量列表 2. 实战应用 添加监听主机和端口变量 vim /srv/s 阅读全文
摘要:
1. 状态相关模块 1.1 pkg 状态模块:pkg 功能:管理软件包状态 常用方法: * pkg.installed # 确保软件包已安装,如果没有安装则安装 * pkg.latest # 确保软件包是最新版本,如果不是,则进行升级 * pkg.remove # 确保软件包已卸载,如果之前已安装, 阅读全文
摘要:
一、基础知识 1、声明id 之前提到过saltstack的脚本是使用YAML格式来渲染的,YAML是python中指代字典类型数据结构的结构序列化格式,基本上的结构就是键值对的形式,需要注意的是SLS文件中每个小节的key称为ID,这个ID必须全局唯一不然会出现错误。 在一个总的id下面,一个模块只 阅读全文
摘要:
1. 概述和内容 salt包含一个健壮且灵活的配置管理框架,它构建在远程执行核心上。这个框架运行于minion上,它通过特定呈现语言的state文件,即可轻松地同时配置成千上万的主机。 后面配置管理所介绍的内容有: * file_roots 设置状态文件的位置 2. YAML编写技巧 2.1 缩进 阅读全文
摘要:
1. Returners列表 https://docs.saltstack.com/en/latest/ref/returners/all/index.html 2. 介绍mysql returner的用法 因mysql returner使用需要python MySQLdb模块,所以需要先安装MyS 阅读全文
摘要:
1. 官方模块链接 官网可执行模块文档: https://docs.saltstack.com/en/latest/ref/modules/all/ 2. 常用模块 network模块 收集和管理网络信息的模块 service模块 管理minion系统服务的模块 state模块 控制minion端s 阅读全文
摘要:
SaltStack远程执行组成部分: * 目标(Targeting) * 模块(Module) * 返回(Returnners) 1. minion id配置 minion id可以定义在minion配置文件中,如果未定义,默认使用的是hostname。minion id是不能变动的,因为minio 阅读全文
摘要:
一、Grains VS Pillar 二、nginx修改配置后reload原理初探 1、前言 nginx启动时,会启动两个进程: 一个是Master进程和worker进程。 2、改变配置后nginx做的事 1)改变了nginx配置之后,HUP signal的信号需要发送给主进程。 2)主进程首先会检 阅读全文
摘要:
一. Pillar简介和应用场景 Pillar是Salt用来分发全局变量到所有minions的一个接口。Pillar data的管理类似于Salt State Tree。 Salt 0.9.8版本增加了pillar(动态数据) 存储位置: * 存储在master端,存放需要提供给minion的信息。 阅读全文
摘要:
一. Grains应用场景 Grains可以在state系统中使用,用于配置管理模块。 Grains可以在target中使用,用来匹配minion,比如匹配操作系统,使用-G选项。 Grains可以用于信息查询,Grains保存着收集到的客户端的详细信息。 二. Grains应用示例 1、minio 阅读全文
摘要:
1. SaltStack介绍 Salt,一种全新的基础设施管理方式,部署轻松,在几分钟内可运行起来,扩展性好,很容易管理上万台服务器,速度够快,服务器之间秒级通讯。 SaltStack是使用Python语言开发,同时提供Rest API方便二次开发以及和其它平台进行集成。 Salt底层采用动态的连接 阅读全文
摘要:
1. 需求背景 之前使用saltstack添加的主机默认使用了hostname作为salt-minion id,而主机名如果没有做规范和规划,是比较难区分属于什么业务或者机器的。我们需要修改salt-minion的id。 2. 解决办法 1、停止salt-minion服务 2、删除salt-mini 阅读全文
摘要:
一、计算单条表达式的结果 1、解决了什么问题 2、代码实现 二、如何拿到精确的数据 1、功能如下 1、我取出6个数据(下面的+60是默认多取一分钟数据,宁多勿少,多出来的后面会去掉)2、approximate_data_range存的是大概的数据,要拿到精确的,我判断一下3、把数据集合交给不同的方法 阅读全文
摘要:
一、策略和动作多对多的好处坏处 1、好处: 相同服务,相同策略的服务可以不用重复写好多次触发器 2、坏处: 1、策略A给小李和小罗发邮件2、策略B给小胡和小崔发邮件3、策略A是第三部发邮件4、策略B是第五步发邮件 二、解决问题与代码实现 1、trigger发生后,如何报警 1、解决了什么问题 1、问 阅读全文