AWS用户的角色和权限的划分建议
工作环境
测试环境
预发布环境
生产环境
用户角色和职责
AWS账号所有者管理账号,开通IAM用户
AWS账号管理人员日常运维管理工作者、账单管理(除根用户外最大的权限的用户)
只读用户只能查看AWS console控制台
开发用户
部署用户环境设计和部署管理
AWS账号注册和控制台介绍
AWS官方文档
AWS账号注册首先,注册一个Global账号:
https://aws.amazon.com
https://amazonaws-china.com
注册帐号美国版和中国版一致, 创建EC2时注意选择的国家区域;不要用 https://www.amazonaws.cn注册免费套餐介绍:https://amazonaws-china.com/cn/free/faqs/
AWS控制台申请IAM用户登录到aws控制台,打开IAM控制台,开启MFA安全认证,保证根用户的安全;申请一个IAM用户并授权此用户最大权限(AWS架构师第一准则,不要使用根用户登录控制台操作);用申请的IAM用户进行所有的操作,根用户在没有必要的情况不要使用,并由专人负责;
熟悉AWS控制台
把控制台上面的服务选项都点一遍,看看各个服务在哪里;方便后期使用的话知道点击哪里;控制台的左下角可以切换语言,如果英语不好的可以换成中文显示;
熟悉AWS账单管理
切换到账单控制台,查看账单登录账单控制台,看看账单首选项、付款方式、整合账单、税务设置、订单发票、服务抵扣金额、成本管理等等这个要认真搞下,因为 ...
go基础之数组
Array(数组)数组:是同一种数据类型的固定长度的序列。 在Go语言中,数组从声明时就确定,使用时可以修改数组成员,但是数组大小不可变化。 基本语法:
12// 定义一个长度为3元素类型为int的数组avar a [3]int
数组定义var 数组变量名 [元素数量]Type比如:var a [5]int, 数组的长度必须是常量,并且长度是数组类型的一部分。一旦定义,长度不能变。[5]int和[10]int是不同的类型。
123var a [3]intvar b [4]inta = b //不可以这样做,因为此时a和b是不同的类型
数组可以通过下标进行访问,下标是从0开始,最后一个元素下标是:len-1,访问越界(下标在合法范围之外),则触发访问越界,会panic。
数组的初始化一维数组
方法一初始化数组时可以使用初始化列表来设置数组元素的值。
12345678func main() { var testArray [3]int //数组会初始化为int ...
go基础之流程控制
流程控制是每种编程语言控制逻辑走向和执行次序的重要部分,流程控制可以说是一门语言的“经脉”。
Go语言中最常用的流程控制有if和for,而switch和goto主要是为了简化代码、降低重复代码而生的结构,属于扩展类的流程控制。
if else(分支结构)基本写法1234567if 表达式1 { 分支1} else if 表达式2 { 分支2} else{ 分支3}
Go语言规定与if匹配的左括号{必须与if和表达式放在同一行,{放在其他位置会触发编译错误。 同理,与else匹配的{也必须与else写在同一行,else也必须与上一个if或else if右边的大括号在同一行。
例子:
1234567891011// 输出:Cfunc ifDemo1() { score := 65 if score >= 90 { fmt.Println("A") } e ...
go基础之运算符
运算符用于在程序运行时执行数学或逻辑运算。
运算符Go 语言内置的运算符有:
算术运算符
关系运算符
逻辑运算符
位运算符
赋值运算符
算术运算符
运算符
描述
+
相加
-
相减
*
相乘
/
相除
%
求余
注意: ++(自增)和--(自减)在Go语言中是单独的语句,并不是运算符。
关系运算符
运算符
描述
==
检查两个值是否相等,如果相等返回 True 否则返回 False。
!=
检查两个值是否不相等,如果不相等返回 True 否则返回 False。
>
检查左边值是否大于右边值,如果是返回 True 否则返回 False。
>=
检查左边值是否大于等于右边值,如果是返回 True 否则返回 False。
<
检查左边值是否小于右边值,如果是返回 True 否则返回 False。
<=
检查左边值是否小于等于右边值,如果是返回 True 否则返回 False。
逻辑运算符
运算符
描述
&&
逻辑 AND 运算符。 如果两边的操作数都是 True,则为 Tru ...
go基础之数据类型
整型
特殊整型
1234567891011121314151617181920package mainimport "fmt"func main() { // 十进制 var a int = 10 fmt.Printf("%d \n", a) // 10 fmt.Printf("%b \n", a) // 1010 占位符%b表示二进制 // 八进制 以0开头 var b int = 077 fmt.Printf("%o \n", b) // 77 // 十六进制 以0x开头 var c int = 0xff fmt.Printf("%x \n", c) // ff fmt.Printf("%X \n", c) & ...
go基础之变量和常量
变量变量类型变量(Variable)的功能是存储数据。不同的变量保存的数据类型可能会不一样。经过半个多世纪的发展,编程语言已经基本形成了一套固定的类型,常见变量的数据类型有:整型、浮点型、布尔型等。
Go语言中的每一个变量都有自己的类型,并且变量必须经过声明才能开始使用。
变量声明 varGo语言中的变量需要声明后才能使用,同一作用域内不支持重复声明。 并且Go语言的变量声明后必须使用。
标准声明Go语言的变量声明格式为:
1var 变量名 变量类型
变量声明以关键字var开头,变量类型放在变量的后面,行尾无需分号。 举个例子:
123var name stringvar age intvar isOk bool
批量声明每声明一个变量就需要写var关键字会比较繁琐,go语言中还支持批量变量声明:
123456var ( a string b int c bool d float32)
变量的初始化Go语言在声明变量的时候,会自动对变量对应的内存区域进行初始化操作。每个变量会被初始化成其类型的默认值,例如: 整型和浮点型变量的默认值为0。 字符串变量的默认值为空 ...
golang 格式化符号%说明
golang 的fmt 包实现了格式化I/O函数,类似于C的 printf 和 scanf。
定义示例类型和变量:
12345type Human struct { Name string}var people = Human{Name:"zhangsan"}
普通占位符
占位符
说明
举例
输出
%v
使用默认格式输出值,或者如果方法存在,则使用类性值的String()方法输出自定义值
Printf(“%v”, people)
{zhangsan},
%+v
打印结构体时,会添加字段名
Printf(“%+v”, people)
{Name:zhangsan}
%#v
输出Go语言语法格式的值
Printf(“%#v”, people)
main.Human{Name:”zhangsan”}
%T
输出值的类型
Printf(“%T”, people)
main.Human
%%
字面上的百分号,并非值的占位符
Printf(“%%”)
%
布尔占位符12占位符 说明 ...
Go语言开发环境
安装
下载地址:
Go官网下载地址:https://golang.org/dl/Go官方镜像站(推荐):https://golang.google.cn/dl/
版本的选择:
Windows平台和Mac平台推荐下载可执行文件版,Linux平台下载压缩文件版。Go语言更新迭代比较快,推荐使用较新版本,体验最新特性。
Linux下安装
下载地址:
Go官网下载地址:https://golang.org/dl/Go官方镜像站(推荐):https://golang.google.cn/dl/
如果不是要在Linux平台敲go代码就不需要在Linux平台安装Go,我们开发机上写好的go代码只需要跨平台编译(详见文章末尾的跨平台编译)好之后就可以拷贝到Linux服务器上运行了,这也是go程序跨平台易部署的优势。
我们在版本选择页面选择并下载好go1.14.1.linux-amd64.tar.gz文件:
wget https://dl.google.com/go/go1.14.1.linux-amd64.tar.gz将下载好的文件解压到/usr/local目录下:
tar -zxvf go1 ...
Go语言介绍
知识文档:
go语言中文文档
李文周的博客
简介Google开发的开源编程语言诞生于2006年1月2日下午15点4分5秒,于2009年11月开源,2012年发布go稳定版。Go语言在多核并发上拥有原生的设计优势,Go语言从底层原生支持并发,无须第三方库、开发者的编程技巧和开发经验。它的主要目标是“兼具Python 等动态语言的开发速度和C/C++等编译型语言的性能与安全性”
Go语言为并发而生 ——21世纪的C语言硬件制造商正在为处理器添加越来越多的内核以提高性能。所有数据中心都在这些处理器上运行,更重要的是,今天的应用程序使用多个微服务来维护数据库连接,消息队列和维护缓存。因此,开发的软件和编程语言应该可以轻松地支持并发性,并且应该能够随着CPU核心数量的增加而可扩展。
但是,大多数现代编程语言(如Java,Python等)都来自90年代的单线程环境。虽然一些编程语言的框架在不断地提高多核资源使用效率,例如 Java 的 Netty 等,但仍然需要开发人员花费大量的时间和精力搞懂这些框架的运行原理后才能熟练掌握。
Go于2009年发布,当时多核处理器已经上市。Go语言在多核 ...