devops
文章平均质量分 72
公博义
我欲成仙,快乐齐天
展开
-
Golang 学习二十六(HTTP 编程与 mysql)
文章目录1. 服务器配置2. 客户端配置3. 请求方法4. panic 宕机恢复5. 模板6. MysqlGo 原生支持 http,直接使用 import("net/http") 即可,http 服务性能和 nginx 非常接近,都具备高并发支持的能力,代码实现起来较为简单。1. 服务器配置示例:https://www.jianshu.com/p/e494795794cfpackage mainimport ( "fmt" "net/http")/* HTTP 服务端配置 */原创 2022-05-10 00:26:55 · 1559 阅读 · 0 评论 -
Golang 学习二十五(UDP 编程)
文章目录1. 服务端配置2. 客户端配置3. 实现双向聊天4. 优化多客户端实现通讯–UDP 是用户数据报协议,是一种无连接传输协议,不需要建立连接就可以直接发送和接收数据,属于不可靠的,没有时序的通信,UDP 实时性好,适合直播环境。1. 服务端配置示例package mainimport ( "fmt" "net")/* UDP 服务端 */func main() { // 1. 监听 listener,err := net.ListenUDP("原创 2022-04-29 17:41:00 · 3121 阅读 · 0 评论 -
Golang 学习二十四(TCP 编程)
文章目录1. 服务器端配置2. 客户端配置3. 运行结果4. 优化聊天模式5. 实现客户端和服务端之间的双向聊天客户端和服务器模型socket:BSD UNIX 的进程通信机制,通常也称作套接字,用于描述 IP 地址和端口,是一个通信链的句柄。socket 可以理解为 TCP/IP 网络的 API,它定义了许多函数,程序员可以使用它来开发 TCP/IP 网络的应用程序。计算机上运行对的应用程序通常通过套接字向网络发出请求或者应答网络请求。服务端处理流程:1. 监听端口2. 接收客户端连接3原创 2022-04-29 17:39:47 · 3547 阅读 · 0 评论 -
Golang 学习二十三(单元测试)
文章目录1. 函数测试2. 结构体测试 在提交测试工程师代码前,先进行单元测试自检,没有问题,方可提交代码,对于模块或者函数需要自行写测试用例。规则:文件名必须以 _test.go 结尾。如果是测试函数,必须以 Test 开头。1. 函数测试calc.gopackage main// 加法func add(a,b int) int { return a + b}// 减法func sub(a,b int) int { return a - b原创 2022-04-29 17:36:27 · 344 阅读 · 0 评论 -
Golang 学习二十二(Go 并发)
文章目录1. 基本概念2. sync.WaitGroup3. goroutine 和线程4. channel5. 无缓冲通道和缓冲通道6. 案例:生产者和消费者模型7. select 多路复用8. 单向通道9. 并发控制和锁(1) 互斥锁(2) 读写互斥锁(3) sync.Once(4) sync.Map(5) 定时器1. 基本概念并发:是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行。同—时间段同时在做多个事原创 2022-04-29 17:35:44 · 561 阅读 · 0 评论 -
Golang 学习二十一(文件处理)
文章目录1. 打开和关闭文件2. 读取文件3. 写入文件计算机中的文件是存储在外部介质(硬盘)上的数据集合,文件分为文本文件和二进制文件。1. 打开和关闭文件os.open() 函数能够打开一个文件,返回一个 *File 和一个 err,对得到的文件示例 close() 方法能够关闭文件。示例package mainimport ( "fmt" "os")// 打开关闭文件func main() { // 打开当前目录下的 abc.txt 文件 fil原创 2022-04-19 23:00:21 · 638 阅读 · 1 评论 -
Golang 学习二十(反射)
文章目录1. reflect2. ValueOf3. Value.Set4. 结构体反射5. 函数反射6. 方法反射变量 ---> 一个值,一个类型,值类型数组 ---> 相同类型,多个值,长度固定,值类型切片 ---> 相同类型,多个值,长度动态,引用类型,有序指针 ---> 地址,引用类型映射 ---> k-v 按名字取值,无序,相同类型,多个值,长度动态结构体 ---> 多个值,类型多样,字段(属性)接口 ---> 接受任意类型的定义反射概原创 2022-04-19 22:59:02 · 541 阅读 · 0 评论 -
Golang 学习十九(接口)
文章目录1. 接口定义2. 多态3. 系统接口调用4. 接口嵌套5. 类型断言6. 链表使用发现输出哪里不同package mainimport "fmt"// 父类结构体 Cartype Car struct { weight int name string}// 父方法func (c Car) Run() { fmt.Println("Running")}// 子结构体 Traintype Train struct { // 匿名原创 2022-04-19 22:57:56 · 194 阅读 · 0 评论 -
Golang 学习十八(结构体和方法)
文章目录1. 别名定义2. 工厂模式3. Tag 原信息4. 匿名字段5. 方法1. 别名定义变量别名定义// 有些变量太长,简化变量名// 为了安全,隐藏原始变量名package mainimport "fmt"// int 类型起了别名为 integertype integer intfunc main() { // 类型别名定义 var i integer = 1000 fmt.Println(i) var j int = 100原创 2022-04-11 23:03:42 · 386 阅读 · 0 评论 -
Golang 学习十七(二叉树)
文章目录1. 前序遍历2. 中序遍历3. 后序遍历满足以下两个条件的树就是二叉树:本身是有序树树中包含的各个节点的度不能超过 2,即只能是 0、1 或者 21. 前序遍历前序遍历二叉树(根左右)package mainimport "fmt"type Student struct { Name string Age int Score float32 // 左子树指针 left *Student // 右子树指针 right原创 2022-04-09 23:33:17 · 3206 阅读 · 0 评论 -
Golang 学习十六(结构体链表)
文章目录1. 存储方式2. 链表更新2.1 链表定义2.2 将遍历链表封装成函数2.3 尾部添加元素(结构体节点)2.4 头部添加元素2.5 插入元素2.6 删除元素概念:结构体是自定义复杂数据结构,struct 里面可以包含多个字段(属性),struct 类型可以定义方法,和函数有区分,struct 属于值类型,且可以做嵌套,Go 中没有 Class 类型,只有 struct 类型。示例:回顾结构体定义package mainimport "fmt"type Car struct {原创 2022-04-09 23:32:05 · 1021 阅读 · 0 评论 -
Golang 学习十五(时间函数)
文章目录1. 时间概念2. 获取当前日期3. 统计程序执行时间1. 时间概念1小时=60分钟 Hour1分钟=60秒 Minute1秒=1000毫秒 Second1毫秒= 1000微秒 Millisecond1微秒=1000纳秒 Microsecond1纳秒 Nanosecond// 时间格式化package mainimport ( "fmt" "time")func main() { // 获取当前时间 now := time.Now()原创 2022-04-07 14:04:13 · 469 阅读 · 0 评论 -
Golang 学习十四(字符串处理)
文章目录1. 字节数组2. 头尾处理3. 位置索引4. 替换5. 统计次数6. 重复7. 大小写8. 去除字符9. 切片处理10. 数值处理1. 字节数组字符是人的语言(文本:字符串),字节是机器的语言(图片,音频,视频 …),它们之间通过 ASCII 码互相翻译,一个英文字符等于一个字节,一个中文字符等于二个字节(UTF-8)。package mainimport "fmt"func main() { var ( str1 = "hello" str原创 2022-04-04 17:50:26 · 748 阅读 · 0 评论 -
Golang 学习十三(递归排序)
文章目录1. 阶乘2. 斐波那契数列递归,就是在运行的过程中调用自己。Go 支持递归。但在使用递归时,开发者需要设置退出条件,否则递归将陷入无限循环中。递归函数对于解决数学上的问题是非常有用的,就像计算阶乘,生成斐波那契数列等。语法如下:func recursion() { recursion() // 函数调用自身}func main() { recursion()}1. 阶乘示例:package mainimport "fmt"// uint64原创 2022-04-03 11:04:24 · 425 阅读 · 0 评论 -
Golang 学习十二(Go 映射 map)
文章目录1. 映射的实现2. 元素赋值3. 查找与遍历4. 元素删除5. 将映射传递给函数映射是一种数据结构,用于存储一系列无序的键值对(映射基于键来存储值)。映射功能强大的地方是,能够基于键快速检索数据。键就像索引一样,指向与该键关联的值。Map 是一种集合,所以我们可以像迭代数组和切片那样迭代它。不过,Map 是无序的,我们无法决定它的返回顺序,这是因为 Map 是使用 hash 表来实现的。与 C++、Java 不一样,Go 使用映射(map)不需要引入任何库。四种复合类型特点:原创 2022-03-31 21:27:34 · 1155 阅读 · 0 评论 -
Golang 学习十一(Go 切片)
文章目录1. 定义切片2. 切片初始化3. len() 和 cap() 函数4. 空(nil)切片5. 切片截取6. append() 和 copy() 函数Go 语言切片是对数组的抽象。Go 数组的长度不可改变,在特定场景中这样的集合就不太适用,Go 中提供了一种灵活,功能强悍的内置类型切片(“动态数组”),与数组相比切片的长度是不固定的,可以追加元素,在追加时可能使切片的容量增大。1. 定义切片你可以声明一个未指定大小的数组来定义切片:var identifier []type切原创 2022-03-29 18:03:45 · 311 阅读 · 0 评论 -
Golang 学习十(Go 结构体)
文章目录1. 定义结构体2. 访问结构体成员3. 结构体作为函数参数4. 结构体指针Go 语言中数组可以存储同一类型的数据,但在结构体中我们可以为不同项定义不同的数据类型。结构体是由一系列具有相同类型或不同类型的数据构成的数据集合。结构体表示一项记录,比如保存图书馆的书籍记录,每本书有以下属性:- Title :标题- Author : 作者- Subject :学科- ID :书籍ID1. 定义结构体结构体定义需要使用 type 和 struct 语句。struct 语句定义一个原创 2022-03-29 16:42:02 · 525 阅读 · 0 评论 -
Golang 学习九(Go 指针)
文章目录1. 指针概念2. 使用指针流程3. 空指针4. 指针数组5. 指向指针的指针6. 指针作为函数参数Go 中指针很容易,使用指针可以更简单的执行一些任务。变量是一种使用方便的占位符,用于引用计算机内存地址。取地址符是 &,放到一个变量前使用就会返回相应变量的内存地址。1. 指针概念一个指针变量指向了一个值的内存地址。类似于变量和常量,在使用指针前需要声明指针。指针声明格式如下:var varName *varTypevarType 是指针类型,varNam原创 2022-03-28 23:05:40 · 851 阅读 · 0 评论 -
Golang 学习八(Go 数组)
文章目录1. 数组介绍2. 声明数组3. 初始化数组4. 访问数组元素5. 多维数组1. 数组介绍数组是具有相同唯一类型的一组已编号且长度固定的数据项序列,这种类型可以是任意的原始类型例如整型、字符串或者自定义类型。相对于去声明 number0, number1, ... number99 的变量,使用数组形式 numbers[0], numbers[1]...numbers[99] 更加方便且易于扩展。数组元素可以通过索引(位置)来读取(或者修改),索引从 0 开始,第一个元素索引为 0,第二原创 2022-03-28 12:41:36 · 2303 阅读 · 0 评论 -
Golang 学习七(Go 函数)
文章目录1. 基础函数2. 函数参数3. 函数作为实参4. 函数闭包5. 函数方法函数是基本的代码块,用于执行一个任务。Go 程序中最少有一个 main() 函数。可以通过函数来划分不同的功能,逻辑上每个函数执行的是指定的任务。函数声明告诉了编译器函数的名称,返回类型和参数。Go 中的标准库提供了多种可动用的内置的函数。例如:len() 函数可以接受不同类型参数并返回该类型的长度。如果传入的是字符串则返回字符串的长度,如果传入的是数组,则返回数组中包含的元素个数。1.原创 2022-03-25 12:51:56 · 1251 阅读 · 0 评论 -
Golang 学习六(流程控制语句)
文章目录一、分支结构1. if 分支1.1 单分支1.2 双分支1.3 多分支1.4 嵌套2. switch 分支3. select 语句二、https://blog.csdn.net/qq_64191695/article/details/122748283一、分支结构1. if 分支Go 语言提供了以下几种条件判断语句:语句描述if 语句if 语句 由一个布尔表达式后紧跟一个或多个语句组成。if…else 语句if 语句 后可以使用可选的 else 语句, e原创 2022-03-19 13:48:12 · 466 阅读 · 0 评论 -
Golang 学习五(获取用户终端输入)
文章目录API示例在编程中,需要接收用户输入的数据,就可以使用键盘输入语句来获取。APIfmt.Scanln(&变量)func Scanln(a ...interface{}) (n int, err error)ScanIn 类似 Scan,但会在换行时才停止扫描。最后一个条目后必须有换行或者到达结束位置。fmt.Scanf("格式",&变量)func Scanf(format string, a ...interface{}) (n int, err error原创 2022-03-18 15:51:51 · 1300 阅读 · 0 评论 -
Golang 学习四(运算符)
文章目录概述1. 算数运算符2. 赋值运算符3. 关系运算符4. 逻辑运算符5. 位运算符6. 其他运算符7. 运算符优先级–概述运算符是—种特殊的符号,用以表示数据的运算、赋值和比较等。常用运算符如下:1. 算数运算符下表列出了所有 Go 语言的算术运算符。假定 A 值为 10,B 值为 20。运算符描述实例+相加A + B 输出结果 30-相减A - B 输出结果 -10*相乘A * B 输出结果 200/相除B / A 输出结原创 2022-03-18 00:22:52 · 211 阅读 · 0 评论 -
Golang 学习三(变量/常量与数据类型)
文章目录一、变量1. 定义2. 变量声明方式3. 多变量声明4. 全局变量和局部变量5. 值类型与引用类型5.1 值类型5.2 引用类型二、常量1. 定义2. iota三、数据类型1. 布尔值2. 数字类型3. 字符串类型4. 指针类型一、变量1. 定义变量来源于数学,是计算机语言中能储存计算结果或能表示值抽象概念。变量可以通过变量名访问。Go 语言变量名由字母、数字、下划线组成,其中首个字符不能为数字。声明变量的一般形式是使用 var 关键字。var identifier type/原创 2022-03-17 20:07:00 · 933 阅读 · 0 评论 -
Golang 学习二(基础语法)
文章目录1. go 标记2. 行分隔符3. 注释类型4. 标识符5. 字符串连接6. 关键字7. Go 语言的空格8. 格式化字符串1. go 标记Go 程序可以由多个标记组成,可以是关键字,标识符,常量,字符串,符号。如以下 GO 语句由 6 个标记组成:fmt.Println("Hello, World!")6 个标记是(每行一个):1. fmt2. .3. Println4. (5. "Hello, World!"6. )2. 行分隔符在 Go 程序中,一行代表一个语句结原创 2022-03-15 16:26:29 · 220 阅读 · 0 评论 -
Golang 学习一(简介与安装)
文章目录一、简介二、安装三、第一个程序一、简介 Go(Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 开发的一种计算机编程语言语言。设计初衷: Go 语言是谷歌推出的一种编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发 Go,是因为过去 10 多年间软件开发的难度令人沮丧。派克表示,和今天的 C++ 或 C 一样,Go 是一种系统语言。他解释道:“使原创 2022-03-14 17:42:06 · 1082 阅读 · 0 评论