摘要: 一、Ansible模块帮助 ansible-doc -l # 列出 Ansible 支持的模块 ansible-doc ping # 查看该模块帮助信息 二、远程命令模块 2.1command command 作为 Ansible 的默认模块,可以运行远程权限范围所有的 shell 命令,不支持管道 阅读全文
posted @ 2020-02-05 16:37 shuyang 阅读(354) 评论(0) 推荐(0) 编辑
摘要: 目录 使用ansible发布公钥 ansible基本命令 ansbile配置文件详解 一、使用ansible发布公钥 1.0 生成秘钥对 1、生成命令 ssh-keygen -t rsa# 推送单个公钥到远程机器ssh-copy-id -i ~/.ssh/id_rsa.pub username@<I 阅读全文
posted @ 2020-02-04 18:01 shuyang 阅读(2022) 评论(0) 推荐(0) 编辑
摘要: 1、安装步骤 # 安装epel扩展源 dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm -y # dnf安装ansible dnf install ansible 2、验证 ansib 阅读全文
posted @ 2020-02-04 14:03 shuyang 阅读(2334) 评论(0) 推荐(0) 编辑
摘要: 1. NAT网络配置(所有服务器): # yum install bash-completion # cd /etc/sysconfig/network-scripts/ bond0配置: # vim ifcfg-bond0 BOOTPROTO=static NAME=bond0 DEVICE=bo 阅读全文
posted @ 2020-01-30 15:01 shuyang 阅读(4464) 评论(0) 推荐(0) 编辑
摘要: Kubernetes的Ingress控制器比较 fiisio Kubernetes/云计算/资源调度/Go语言 fiisio Kubernetes/云计算/资源调度/Go语言 fiisio Kubernetes/云计算/资源调度/Go语言 fiisio fiisio fiisio Kubernete 阅读全文
posted @ 2019-11-30 15:08 shuyang 阅读(904) 评论(0) 推荐(0) 编辑
摘要: Linux上新用的防火墙软件,跟iptables差不多的工具 Linux上新用的防火墙软件,跟iptables差不多的工具 补充说明 firewall-cmd 是 firewalld的字符界面管理工具,firewalld是centos7的一大特性,最大的好处有两个:支持动态更新,不用重启服务;第二个 阅读全文
posted @ 2019-11-27 13:09 shuyang 阅读(9181) 评论(0) 推荐(0) 编辑
摘要: 之前介绍Harbor私有仓库的安装和使用,这里重点说下Harbor高可用集群方案的部署,目前主要有两种主流的Harbor高可用集群方案:1)双主复制;2)多harbor实例共享后端存储。 一、Harbor双主复制高可用集群 1)主从同步harbor官方默认提供主从复制的方案来解决镜像同步问题,通过复 阅读全文
posted @ 2019-11-12 19:55 shuyang 阅读(1047) 评论(0) 推荐(0) 编辑
摘要: 目录 TCP/IP协议介绍 GO快速实现TCP服务端 GO快速实现TCP客户端 UDP协议介绍 UDP编程实例 TCP/IP协议介绍 1、互联网起源 A. 起源于美国五角大楼,它的前身是美国国防部高级研究计划局主持研制的ARPAnet。B. 互联网的基础是TCP/IP协议C. TCP/IP 是供已连 阅读全文
posted @ 2019-11-08 15:56 shuyang 阅读(278) 评论(0) 推荐(0) 编辑
摘要: 目录 select语义介绍和使用 线程安全介绍 互斥锁介绍和实战 读写锁介绍和实战 原子操作介绍 select语义介绍和使用 1、多channel场景 A. 多个channel同时需要读取或写入,怎么办?B. 串行操作? 2、select登场 A. 同时监听一个或多个channel,直到其中一个ch 阅读全文
posted @ 2019-11-08 15:23 shuyang 阅读(705) 评论(0) 推荐(0) 编辑
摘要: 目录 并发和并行 Goroutine初探 Goroutine实战 Goroutine原理浅析 Channel介绍 Waitgroup介绍 Workerpool的实现 并发和并行 1、概念A. 并发:同一时间段内执行多个操作。B. 并行:同一时刻执行多个操作。 Goroutine初探 1、多线程 A. 阅读全文
posted @ 2019-11-08 14:56 shuyang 阅读(263) 评论(0) 推荐(0) 编辑
摘要: 长久以来,IT 运维在企业内部一直是个耗人耗力的事情。随着虚拟化的大量应用、私有云、容器的不断普及,数据中心内部的压力愈发增加。传统的自动化工具,往往是面向于数据中心特定的一类对象,例如操作系统、虚拟化、网络设备的自动化运维工具往往是不同的。那么,有没有一种数据中心级别的统一的自动化运维工具呢? 答 阅读全文
posted @ 2019-11-07 21:54 shuyang 阅读(515) 评论(0) 推荐(0) 编辑
摘要: 目录 单元测试 压力测试 Go test命令介绍 单元测试 1、自动化测试框架 testingA. testing包提供了自动化测试相关的框架B. 支持单元测试和压力测试 2、测试规范 Go中的测试约定A. 用来测试的代码必须以_test.go结尾B. 单元测试的函数名必须以Test开头, 并且只有 阅读全文
posted @ 2019-11-07 21:35 shuyang 阅读(394) 评论(0) 推荐(0) 编辑
摘要: 目录 变量介绍 反射介绍 结构体反射 反射总结以及应用场景 变量介绍 1、变量的内在机制 A. 类型信息,这部分是元信息,是预先定义好的B. 值类型,这部分是程序运行过程中,动态改变的 反射介绍 1、 反射与空接口 A. 空接口可以存储任何类型的变量 B. 那么给你一个空接口,怎么里面存储的是什么东 阅读全文
posted @ 2019-11-07 21:25 shuyang 阅读(274) 评论(0) 推荐(0) 编辑
摘要: 目前 日志库需求分析 日志库接口设计 文件日志库开发 Console日志开发 日志使用以及测试 日志库需求分析 1、日志库需求分析 A. 程序运行是个黑盒B. 而日志是程序运行的外在表现C. 通过日志,可以知道程序的健康状态 2、日志库需求分析 A. Debug级别:用来调试程序,日志最详细。对程序 阅读全文
posted @ 2019-11-07 20:12 shuyang 阅读(452) 评论(0) 推荐(0) 编辑
摘要: 目录 接口介绍与定义 空接口和类型断言 指针接收和值接收区别 接口嵌套 接口介绍与定义 1、 接口定义了一个对象的行为规范 A. 只定义规范,不实现B. 具体的对象需要实现规范的细节 2、Go中接口定义 A. type 接口名字 interfaceB. 接口里面是一组方法签名的集合 3、Go中接口的 阅读全文
posted @ 2019-11-07 19:52 shuyang 阅读(251) 评论(0) 推荐(0) 编辑
摘要: 目录 文件打开和读写 读取压缩文件 bufio原理和cat命令实现 defer详解 文件打开和读写 1、 文件是存储在外部介质上的数据集合。 A. 文件分类:文本文件和二进制文件 B. 文件存取方式:随机存取和顺序存放 2、文件打开 3、文件读取, file.Read和file.ReadAt。读到文 阅读全文
posted @ 2019-11-07 18:43 shuyang 阅读(308) 评论(0) 推荐(0) 编辑
摘要: 目录: 格式化输入 格式化输出 终端输入输出背后的原理理 bufio包的使用 命令行参数处理理和urfave/cli使用 格式化输入 1、从终端获取⽤用户的输入 格式化输入 fmt.Scan(a …interface{}): 从终端获取⽤用户输入,存储在Scanln中的参数里,空格和换行符作为分隔符 阅读全文
posted @ 2019-11-07 17:29 shuyang 阅读(346) 评论(0) 推荐(0) 编辑
摘要: 目录: 方法的定义 函数和方法的区别 值类型和指针类型 面向对象和继承 结构体和json序列化 方法的定义 1、和其他语言不一样,Go的方法采⽤用另外一种方式实现。 2、Go的方法是在函数前面加上一个接受者,这样编译器器就知道这个方法属于哪个类型了 Test的接受者,因此A这个对象有一个Test方法 阅读全文
posted @ 2019-11-07 16:36 shuyang 阅读(274) 评论(0) 推荐(0) 编辑
摘要: 目录: struct声明和定义 struct的内存布局以及构造函数 匿名字段和struct嵌套 struct与tag应用 struct声明和定义 1、Go中面向对象是通过struct来实现的, struct是用户自定义的类型。 注意:type是⽤用来定义一种类型 2、struct初始化⽅方法1 注意 阅读全文
posted @ 2019-11-07 15:55 shuyang 阅读(231) 评论(0) 推荐(0) 编辑
摘要: 目录 Go源码组织方式 main函数和main包 编译命令 自定义包 init函数以及执行行顺序 _标识符 Go源码组织方式 1、 Go通过package的方式来组织源码 注意:任何一个源码都属于一个包 作用:代码复用和可读性 2、可执行程序的包名必须为main,并且包含一个main函数 3、pac 阅读全文
posted @ 2019-11-06 20:22 shuyang 阅读(1063) 评论(1) 推荐(1) 编辑
摘要: 1、数字替换原数字 sed -i "s/\([0-9]*\)/\1/g" 阅读全文
posted @ 2019-11-06 19:24 shuyang 阅读(11701) 评论(0) 推荐(0) 编辑
摘要: 目录 声明和初始化 基本操作 map排序 map类型的切⽚片 课后作业 声明和初始化 1、map类型是⼀一个key-value的数据结构。 注意:map必须初始化才能使⽤用,否则panic 2、map类型的变量量默认初始化为nil,需要使⽤用make分配map内存 基本操作 1、map插入操作 2、 阅读全文
posted @ 2019-11-05 20:55 shuyang 阅读(249) 评论(0) 推荐(0) 编辑
摘要: 目录 变量和内存地址 指针类型 值拷贝和引用拷贝 变量和内存地址 1、每个变量都有内存地址,可以说通过变量来操作对应大小的内存 注意:通过&符号可以获取变量的地址 指针类型 1、普通变量存储的是对应类型的值,这些类型就叫值类型 2、指针类型的变量存储的是一个地址,所以又叫指针类型或引用类型 3、指针 阅读全文
posted @ 2019-11-05 19:22 shuyang 阅读(226) 评论(0) 推荐(0) 编辑
摘要: 目录: 切片定义 切片基本操作 切片传参 make和new的区别 切片定义 1. 切片是基于数组类型做的一层封装。它非常灵活,可以自动扩容。 2. 切片初始化, a[start:end]创建一个包括从start到end-1的切片。 3. 切片初始化方法2。 切片基本操作 1. 数组切片的基本操作a) 阅读全文
posted @ 2019-11-05 18:55 shuyang 阅读(219) 评论(0) 推荐(0) 编辑
摘要: 目录 数组定义 二维数组 数组拷贝、传参 数组定义 1. 数组是同一类型的元素集合。 2. 数组初始化 3. 数组⻓长度是类型的一部分 4、len内置函数 5. 数组遍历 var a [3]inta[0] = 10a[1] = 20a[2] = 30for index, val := range a 阅读全文
posted @ 2019-11-04 16:59 shuyang 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 1、安装 cat > /etc/yum.repos.d/mongodb.repo << EOF[mongodb-org-3.6]name=MongoDB Repositorybaseurl=https://repo.mongodb.org/yum/redhat/\$releasever/mongod 阅读全文
posted @ 2019-10-30 19:31 shuyang 阅读(546) 评论(2) 推荐(0) 编辑
摘要: 目录 变量作用域和可见性 匿名函数 闭包 课后练习 变量作用域和可见性 1、全局变量量,在程序整个生命周期有效。 2、局部变量量,分为两种: 1)函数内定义, 2)语句句块内定义。 3. 可⻅见性,包内任何变量量或函数都是能访问的。 包外的话,⾸首字⺟母⼤大写是可导出的 能够被其他包访问或调⽤用。 阅读全文
posted @ 2019-10-29 22:07 shuyang 阅读(276) 评论(0) 推荐(0) 编辑
摘要: 1、下载RabbitMQ vim /etc/hosts10.10.21.197 rabbit110.10.21.198 rabbit2 #分别命名hostname rabbit1hostname rabbit2 vim /etc/yum.repos.d/rabbitmq.repo[bintray-r 阅读全文
posted @ 2019-10-29 17:31 shuyang 阅读(392) 评论(0) 推荐(0) 编辑
摘要: 三台服务器 1、下载 wget http://download.redis.io/releases/redis-5.0.3.tar.gztar -zxvf redis-5.0.3.tar.gzcd redis-5.0.3makemake test //检查一下 看有没有问题make install 阅读全文
posted @ 2019-10-29 13:13 shuyang 阅读(443) 评论(0) 推荐(0) 编辑
摘要: 1部署keepalived 1.1下载keepalived源码包,并解压# wget http://www.keepalived.org/software/keepalived-1.4.2.tar.gz# tar xf keepalived-1.4.2.tar.gz# cd keepalived-1 阅读全文
posted @ 2019-10-28 16:27 shuyang 阅读(392) 评论(0) 推荐(0) 编辑
摘要: 一、代码审计工具介绍 代码审计工具可以辅助我们进行白盒测试,大大提高漏洞分析和代码挖掘的效率。 在源代码的静态安全审计中,使用自动化工具辅助人工漏洞挖掘,一款好的代码审计软件,可以显著提高审计工作的效率。学会利用自动化代码审计工具,是每一个代码审计人员必备的能力。代码审计工具按照编程语言、审计原理、 阅读全文
posted @ 2019-10-25 16:10 shuyang 阅读(1142) 评论(0) 推荐(0) 编辑
摘要: 一、概述 在前面的文章中介绍过了redis的主从和哨兵两种集群方案,redis从3.0版本开始引入了redis-cluster(集群)。从主从-哨兵-集群可以看到redis的不断完善;主从复制是最简单的节点同步方案无法主从自动故障转移。哨兵可以同时管理多个主从同步方案同时也可以处理主从自动故障转移, 阅读全文
posted @ 2019-10-23 18:51 shuyang 阅读(331) 评论(0) 推荐(0) 编辑
摘要: 文章目录 一、架构简介 二、配置说明 三、准备工作 1. 下载安装包 2. 部署目录 3. 创建配置文件 4. 创建keyfile文件 5. 创建节点目录 四、搭建集群 1. Config副本集 2. 创建分片 3. 启动mongos路由 4. 初始化用户 五、数据操作 六、总结 1. 下载安装包 阅读全文
posted @ 2019-10-23 18:50 shuyang 阅读(1002) 评论(0) 推荐(0) 编辑
摘要: 目录 1、函数介绍 2、多返回值和可变参数 3、defer语句 4、内置函数介绍 1、函数介绍 1.1定义: 有输⼊入、有输出,⽤用来执⾏行行⼀一个指定任务的代码块。 1.2⽆无参数和返回值的函数 1.3实现两个数相加 1.4如何连续的⼀一系列列参数的类型是一样,前⾯面的类型可以不不写如何连续的 1 阅读全文
posted @ 2019-10-23 18:25 shuyang 阅读(259) 评论(0) 推荐(0) 编辑
摘要: 目录: 1、if else语句块 2、for语句 3、switch语句 if else语句块 1、基本语法 2、练习一 3、练习二 4、练习三 for语句 1、Go语⾔言中只有⼀一种循环 for 2、练习一 3、练习二 4、练习三 5、练习四 5、练习五 switch语句 1、case语句 2、写法 阅读全文
posted @ 2019-10-23 13:32 shuyang 阅读(202) 评论(0) 推荐(0) 编辑
摘要: 目录: 1、创建负载 2、目标群组 3、使用注意事项 4、总结 创建负载 alb负载 https://docs.aws.amazon.com/zh_cn/elasticloadbalancing/latest/application/application-load-balancer-getting 阅读全文
posted @ 2019-10-22 18:36 shuyang 阅读(3570) 评论(0) 推荐(0) 编辑
摘要: “一个程序员写了个爬虫程序,整个公司200多人被端了。”“不可能吧!” 刚从朋友听到这个消息的时候,我有点不太相信,做为一名程序员来讲,谁还没有写过几段爬虫呢?只因写爬虫程序就被端有点夸张了吧。 朋友说,消息很确认并且已经进入等待审判阶段了。 01.对消息进一步确认 朋友认识几个律师朋友,和他们有一 阅读全文
posted @ 2019-10-17 20:50 shuyang 阅读(25136) 评论(0) 推荐(0) 编辑
摘要: 目录 1.字符串串原理理解析2. 时间类型3. 日期类型 字符串串原理理解析 1.字符串串底层就是⼀一个byte数组,所以可以和[]byte类型互相转换2.字符串串之中的字符是不不能修改的,那怎么修改呢3.字符串串是由byte字节组成,所以字符串串的⻓长度是byte字节的⻓长度4.rune类型⽤用来 阅读全文
posted @ 2019-10-17 20:35 shuyang 阅读(659) 评论(0) 推荐(0) 编辑
摘要: package main import ( "fmt" "io/ioutil" "log" ) func listFiles(dirname string, level int) { // level用来记录当前递归的层次 // 生成有层次感的空格 s := "|--" for i := 0; i < level; i++ { s = "| " + s } fileInfos, err := io 阅读全文
posted @ 2019-10-17 19:40 shuyang 阅读(472) 评论(0) 推荐(0) 编辑
摘要: Sentry 是一个开源的实时错误追踪系统,可以帮助开发者实时监控并修复异常问题。它主要专注于持续集成、提高效率并且提升用户体验。Sentry 分为服务端和客户端 SDK,前者可以直接使用它家提供的在线服务,也可以本地自行搭建;后者提供了对多种主流语言和框架的支持,包括 React、Angular、 阅读全文
posted @ 2019-10-16 21:11 shuyang 阅读(917) 评论(2) 推荐(0) 编辑