摘要:
目录 一、为什么需要函数式选项模式? 二、选项模式 本文主要介绍了Go语言中函数式选项模式及该设计模式在实际编程中的应用。 一、为什么需要函数式选项模式? 最近看go-micro/options.go源码的时候,发现了一段关于服务注册的代码如下: type Options struct { Brok 阅读全文
posted @ 2019-10-19 15:55
suwanbin_thought
阅读(81)
评论(0)
推荐(0)
摘要:
目录 一、数据结构和算法 1.1 1. 两数之和 1.1.1 题目描述 1.1.2 我的解法 1.2 2. 两数相加 1.2.1 题目描述 1.2.2 我的解法 1.3 3. 无重复字符的最长子串 1.3.1 题目描述 1.3.2 我的解法 1.4 4. 寻找两个有序数组的中位数 1.4.1 题目描 阅读全文
posted @ 2019-10-19 15:54
suwanbin_thought
阅读(104)
评论(0)
推荐(0)
摘要:
目录 一、排序算法 1.1 快速排序 1.2 归并排序 1.3 堆排序 本文介绍了Go语言版经典的排序算法–快速排序、归并排序和堆排序。 一、排序算法 1.1 快速排序 func quickSort(data []int) { if len(data) <= 1 { return } base 阅读全文
posted @ 2019-10-19 15:54
suwanbin_thought
阅读(101)
评论(0)
推荐(0)
摘要:
目录 一、Go性能优化 二、采集性能数据 三、工具型应用 3.1 CPU性能分析 3.2 内存性能优化 四、服务型应用 五、go tool pprof命令 六、具体示例 6.1 命令行交互界面 6.2 图形化 七、go-torch和火焰图 7.1 安装go-touch 7.2 安装 FlameGra 阅读全文
posted @ 2019-10-19 15:52
suwanbin_thought
阅读(169)
评论(0)
推荐(0)
摘要:
目录 一、Cookie 1.1 Cookie的由来 1.2 Cookie是什么 1.3 Cookie的机制 1.4 查看Cookie 二、Go操作Cookie 2.1 Cookie 2.2 设置Cookie 2.3 获取Cookie 三、gin框架操作Cookie 四、Session 4.1 Ses 阅读全文
posted @ 2019-10-19 15:45
suwanbin_thought
阅读(139)
评论(0)
推荐(0)
摘要:
目录 一、logrus介绍 二、安装 三、基本示例 四、进阶示例 五、日志级别 5.1 设置日志级别 六、字段 七、默认字段 八、日志条目 九、Hooks 十、格式化 十一、记录函数名 线程安全 gin框架使用logrus 日志是程序中必不可少的一个环节,由于Go语言内置的日志库功能比较简洁,我们在 阅读全文
posted @ 2019-10-19 15:44
suwanbin_thought
阅读(149)
评论(0)
推荐(0)
摘要:
目录 一、Elasticsearch 1.1 介绍 1.2 Elasticsearch能做什么 1.3 Elasticsearch基本概念 1.3.1 Near Realtime(NRT) 几乎实时 1.3.2 Cluster 集群 1.3.3 Node节点 1.3.4 Index索引 1.3.5 阅读全文
posted @ 2019-10-19 15:43
suwanbin_thought
阅读(120)
评论(0)
推荐(0)
摘要:
目录 一、安装 1.1 下载 1.2 安装 二、influxDB介绍 2.1 名词介绍 2.2 point 2.3 Series 三、Go操作influxDB 3.1 安装 3.1.1 influxDB 1.x版本 3.1.2 influxDB 2.x版本 3.2 基本使用 本文介绍了influxD 阅读全文
posted @ 2019-10-19 15:42
suwanbin_thought
阅读(92)
评论(0)
推荐(0)
摘要:
目录 一、安装 二、使用 2.1 CPU 2.2 Memory 2.3 Host 2.4 Disk 2.5 net IO 三、net 3.1 获取本机IP的两种方式 psutil是一个跨平台进程和系统监控的Python库,而gopsutil是其Go语言版本的实现。本文介绍了它的基本使用。 Go语言部 阅读全文
posted @ 2019-10-19 15:41
suwanbin_thought
阅读(157)
评论(0)
推荐(0)
摘要:
目录 一、etcd 二、etcd介绍 三、etcd应用场景 3.1 服务发现 3.2 配置中心 3.3 分布式锁 四、为什么用 etcd 而不用ZooKeeper? 4.1 为什么不选择ZooKeeper? 4.2 为什么选择etcd? 五、etcd集群 5.1 搭建一个3节点集群示例: 六、Go语 阅读全文
posted @ 2019-10-19 15:16
suwanbin_thought
阅读(136)
评论(0)
推荐(0)
摘要:
目录 一、sarama 1.1 下载及安装 1.2 注意事项 二、连接kafka发送消息 三、连接kafka消费消息 Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据,具有高性能、持久化、多副本备份、横向扩展等特点。本文介绍了如何使用Go语言发送和接收k 阅读全文
posted @ 2019-10-19 15:15
suwanbin_thought
阅读(137)
评论(0)
推荐(0)
摘要:
目录 一、NSQ 二、NSQ介绍 三、NSQ的应用场景 3.1 异步处理 3.2 应用解耦 3.3 流量削峰 四、安装 五、NSQ组件 5.1 nsqd 5.2 nsqlookupd 5.3 nsqadmin 六、NSQ架构 6.1 NSQ工作模式 6.2 Topic和Channel 6.3 NSQ 阅读全文
posted @ 2019-10-19 15:06
suwanbin_thought
阅读(138)
评论(0)
推荐(0)
摘要:
目录 一、Redis介绍 二、Redis支持的数据结构 三、Redis应用场景 四、Redis与Memcached比较 五、Go操作Redis 六、安装 七、连接 八、基本使用 8.1 set/get示例 8.2 zset示例 在项目开发中redis的使用也比较频繁,本文介绍了Go语言如何操作Red 阅读全文
posted @ 2019-10-19 15:05
suwanbin_thought
阅读(78)
评论(0)
推荐(0)
摘要:
目录 一、Go操作MySQL 二、连接 2.1 下载依赖 2.2 使用MySQL驱动 2.3 初始化连接 2.4 SetMaxOpenConns 2.5 SetMaxIdleConns 三、CRUD 3.1 建库建表 查询 单行查询 多行查询 插入数据 更新数据 删除数据 MySQL预处理 什么是预 阅读全文
posted @ 2019-10-19 15:04
suwanbin_thought
阅读(115)
评论(0)
推荐(0)
摘要:
目录 一、protobuf 1.1 protobuf介绍 1.2 protobuf使用 1.3 protobuf语法 1.4 编译器安装 1.5 ptotoc 1.6 protoc-gen-go 1.7 编写IDL代码 生成go语言代码 protobuf是一种高效的数据格式,平台无关、语言无关、可扩 阅读全文
posted @ 2019-10-19 15:03
suwanbin_thought
阅读(139)
评论(0)
推荐(0)
摘要:
目录 一、json序列化的问题 二、gob序列化示例 三、msgpack 3.1 安装 3.2 示例 本文主要介绍二进制协议gob及msgpack的基本使用。 最近在写一个gin框架的session服务时遇到了一个问题,Go语言中的json包在序列化空接口存放的数字类型(整型、浮点型等)都序列化成f 阅读全文
posted @ 2019-10-19 15:02
suwanbin_thought
阅读(170)
评论(0)
推荐(0)
该文被密码保护。 阅读全文
posted @ 2019-10-19 14:53
suwanbin_thought
阅读(4)
评论(0)
推荐(0)
摘要:
目录 一、依赖管理 二、为什么需要依赖管理 三、godep 3.1 安装 3.2 基本命令 3.3 使用godep 3.4 vender机制 3.5 godep开发流程 四、go module 4.1 GO111MODULE 4.2 GOPROXY 4.3 go mod命令 4.3.1 依赖的版本 阅读全文
posted @ 2019-10-19 01:27
suwanbin_thought
阅读(2744)
评论(0)
推荐(1)
摘要:
目录 一、从github克隆 二、使用gopm 2.1 安装gopm 2.2 使用gopm安装第三方包 三、使用goproxy 由于某些不可抗力的原因,国内使用go get命令安装包时会经常会出现timeout的问题。本文介绍几个常用的解决办法。 一、从github克隆 golang在github上 阅读全文
posted @ 2019-10-19 01:26
suwanbin_thought
阅读(152)
评论(0)
推荐(0)
摘要:
目录 一、为什么需要Context 1.1 基本示例 1.2 全局变量方式 1.3 通道方式 1.4 官方版的方案 二、Context初识 三、Context接口 3.1 Background()和TODO() 四、With系列函数 4.1 WithCancel 4.2 WithDeadline 4 阅读全文
posted @ 2019-10-19 01:25
suwanbin_thought
阅读(137)
评论(0)
推荐(0)
摘要:
目录 一、Gin框架介绍 二、Gin框架安装与使用 2.1 安装 2.2 第一个Gin示例: RESTful API Gin渲染 HTML渲染 静态文件处理 补充文件路径处理 JSON渲染 XML渲染 YMAL渲染 protobuf渲染 获取参数 获取querystring参数 获取form参数 获 阅读全文
posted @ 2019-10-19 01:25
suwanbin_thought
阅读(251)
评论(0)
推荐(0)
摘要:
目录 一、net/http介绍 1.1 HTTP协议 二、HTTP客户端 2.1 基本的HTTP/HTTPS请求 2.2 GET请求示例 2.3 带参数的GET请求示例 2.4 Post请求示例 2.5 自定义Client 2.6 自定义Transport 三、服务端 3.1 默认的Server 3 阅读全文
posted @ 2019-10-19 01:24
suwanbin_thought
阅读(138)
评论(0)
推荐(0)
摘要:
目录 一、模板 二、模板示例 模板语法 {{.}} pipeline 变量 range 预定义函数 2.5 自定义函数 html/template包实现了数据驱动的模板,用于生成可对抗代码注入的安全HTML输出。它提供了和text/template包相同的接口,Go语言中输出HTML的场景都应使用t 阅读全文
posted @ 2019-10-19 01:23
suwanbin_thought
阅读(165)
评论(0)
推荐(0)
摘要:
目录 一、strconv包 二、string与int类型转换 2.1 Atoi() 2.2 Itoa() 2.3 a的典故 三、Parse系列函数 3.1 ParseBool() 3.2 ParseInt() 3.3 ParseUnit() 3.4 ParseFloat() 3.5 代码示例 四、F 阅读全文
posted @ 2019-10-19 01:22
suwanbin_thought
阅读(132)
评论(0)
推荐(0)
摘要:
目录 一、log 二、使用Logger 三、配置logger 3.1 标准logger的配置 3.2 flag选项 3.3 配置日志前缀 3.4 配置日志输出位置 四、创建logger 五、总结 无论是软件开发的调试阶段还是软件上线之后的运行阶段,日志一直都是非常重要的一个环节,我们也应该养成在程序 阅读全文
posted @ 2019-10-19 01:21
suwanbin_thought
阅读(111)
评论(0)
推荐(0)
摘要:
目录 一、打开和关闭文件 二、读取文件 三、file.Read() 3.1 基本使用 3.2 循环读取 四、bufio读取文件 五、ioutil读取整个文件 六、文件写入操作 七、Write和WriteString 八、bufio.NewWriter 九、ioutil.WriteFile 十、练习 阅读全文
posted @ 2019-10-19 01:21
suwanbin_thought
阅读(168)
评论(0)
推荐(0)
摘要:
目录 一、os.Args 二、flag包基本使用 三、导入flag包 四、flag参数类型 五、定义命令行flag参数 5.1 flag.Type() 5.2 flag.TypeVar() 六、flag.Parse() 七、flag其他函数 八、完整示例 8.1 定义 8.2 使用 Go语言内置的f 阅读全文
posted @ 2019-10-19 01:19
suwanbin_thought
阅读(101)
评论(0)
推荐(0)
摘要:
目录 一、time包 二、时间类型 三、时间戳 四、时间间隔 五、时间操作 5.1 Add 5.2 Sub 5.3 Equal 5.4 Before 5.5 After 六、定时器 七、时间格式化 7.1 解析字符串格式的时间 时间和日期是我们编程中经常会用到的,本文主要介绍了Go语言内置的time 阅读全文
posted @ 2019-10-19 01:19
suwanbin_thought
阅读(136)
评论(0)
推荐(0)
摘要:
目录 一、fmt 二、向外输出 2.1 Print 2.2 Fprint 2.3 Sprint 2.4 Errorf 三、格式化占位符 3.1 通用占位符 3.2 布尔型 3.3 整型 3.4 浮点数与复数 3.5 字符串和[]byte 3.6 指针 3.7 宽度标识符 3.8 其他falg 四、获 阅读全文
posted @ 2019-10-19 01:18
suwanbin_thought
阅读(166)
评论(0)
推荐(0)
摘要:
目录 一、go test工具 二、测试函数 三、测试函数的格式 四、测试函数示例 五、测试组 六、子测试 七、测试覆盖率 八、基准测试 九、基准测试函数格式 十、基准测试示例 十一、性能比较函数 十二、重置时间 十三、并行测试 十四、Setup与TearDown 十五、TestMain 十六、子测试 阅读全文
posted @ 2019-10-19 01:17
suwanbin_thought
阅读(131)
评论(0)
推荐(0)
摘要:
目录 一、互联网协议介绍 二、互联网分层模型 2.1 物理层 2.2 数据链路层 2.3 网络层 2.4 传输层 2.5 应用层 三、socket编程 四、socket图解 五、Go语言实现TCP通信 5.1 TCP协议 5.2 TCP服务端 5.3 TCP客户端 六、TCP黏包 6.1 黏包示例 阅读全文
posted @ 2019-10-19 01:16
suwanbin_thought
阅读(181)
评论(0)
推荐(0)
摘要:
目录 一、Go语言中的并发编程 二、并发与并行 三、goroutine 3.1 使用goroutine 3.2 启动单个goroutine 3.3 启动多个goroutine 四、goroutine与线程 4.1 可增长的栈 4.2 goroutine调度 4.3 GOMAXPROCS 五、chan 阅读全文
posted @ 2019-10-19 01:15
suwanbin_thought
阅读(131)
评论(0)
推荐(0)
摘要:
目录 一、变量的内在机制 二、反射介绍 三、reflect包 四、TypeOf 4.1 type name和type kind 五、ValueOf 5.1 通过反射获取值 5.2 通过反射设置变量的值 5.3 isNil()和isValid() 5.3.1 isNil() 5.3.2 isValid 阅读全文
posted @ 2019-10-19 01:14
suwanbin_thought
阅读(151)
评论(0)
推荐(0)
摘要:
目录 一、Go语言的包(package) 二、包介绍 三、定义包 四、可见性 五、包的导入 5.1 单行导入 5.2 多行导入 六、自定义包名 七、匿名导入包 八、init()初始化函数 8.1 init()函数介绍 8.2 init()函数执行顺序 九、练习题 在工程化的Go语言开发项目中,Go语 阅读全文
posted @ 2019-10-19 01:13
suwanbin_thought
阅读(90)
评论(0)
推荐(0)
摘要:
目录 一、接口 二、接口类型 三、为什么要使用接口 四、接口的定义 五、实现接口的条件 六、接口类型变量 七、值接收者和指针接收者实现接口的区别 7.1 值接收者实现接口 7.2 指针接收者实现接口 7.3 面试题 八、类型与接口的关系 8.1 一个类型实现多个接口 8.2 多个类型实现同一接口 九 阅读全文
posted @ 2019-10-19 01:13
suwanbin_thought
阅读(95)
评论(0)
推荐(0)
摘要:
目录 一、类型别名和自定义类型 二、自定义类型 三、类型别名 四、类型定义和类型别名的区别 五、结构体 六、结构体的定义 七、结构体实例化 7.1 基本实例化 7.2 匿名结构体 7.3 创建指针类型结构体 7.4 取结构体的地址实例化 八、结构体初始化 8.1 使用键值对初始化 8.2 使用值的列 阅读全文
posted @ 2019-10-19 01:12
suwanbin_thought
阅读(102)
评论(0)
推荐(0)
摘要:
目录 一、函数 二、函数定义 三、函数的调用 四、参数 4.1 类型简写 4.2 可变参数 五、返回值 5.1 多返回值 5.2 返回值命名 六、函数进阶 七、变量作用域 7.1 全局变量 7.2 局部变量 八、函数类型与变量 8.1 定义函数类型 8.2 函数类型变量 九、高阶函数 9.1 函数作 阅读全文
posted @ 2019-10-19 01:11
suwanbin_thought
阅读(128)
评论(0)
推荐(0)
摘要:
目录 一、Go语言中的指针 二、指针地址和指针类型 三、指针取值 四、new和make 4.1 new 4.2 make 4.3 new与make的区别 区别于C/C++中的指针,Go语言中的指针不能进行偏移和运算,是安全指针。 要搞明白Go语言中的指针需要先知道3个概念:指针地址、指针类型和指针取 阅读全文
posted @ 2019-10-19 01:10
suwanbin_thought
阅读(102)
评论(0)
推荐(0)
摘要:
目录 一、map 二、map定义 三、map基本使用 四、判断某个键是否存在 五、map的遍历 六、使用delete()函数删除键值对 七、按照指定顺序遍历map 八、元素为map类型的切片 九、值为切片类型的map 十、练习题 Go语言中提供的映射关系容器为map,其内部使用散列表(hash)实现 阅读全文
posted @ 2019-10-19 01:10
suwanbin_thought
阅读(121)
评论(0)
推荐(0)
摘要:
目录 一、引子 二、切片 三、切片的定义 3.1 切片的长度和容量 3.2 基于数组定义切片 3.3 切片再切片 3.4 使用make()函数构造切片 3.5 切片的本质 四、切片不能直接比较 五、切片的赋值拷贝 六、切片遍历 七、append()方法为切片添加元素 八、切片的扩容策略 九、使用co 阅读全文
posted @ 2019-10-19 01:08
suwanbin_thought
阅读(97)
评论(0)
推荐(0)
摘要:
目录 一、Array(数组) 二、数组定义: 三、数组的初始化 3.1 方法一 3.2 方法二 3.3 方法三 四、数组的遍历 五、多维数组 5.1 二维数组的定义 5.2 二维数组的遍历 六、数组是值类型 七、练习题 本文主要介绍Go语言中数组(array)及它的基本使用。 一、Array(数组) 阅读全文
posted @ 2019-10-19 01:07
suwanbin_thought
阅读(127)
评论(0)
推荐(0)
摘要:
目录 一、if else(分支结构) 1.1 if条件判断基本写法 1.2 if条件判断特殊写法 二、for(循环结构) 2.1 无限循环 三、for range(键值循环) 四、switch case 五、goto(跳转到指定标签) 六、break(跳出循环) 七、continue(继续下次循环) 阅读全文
posted @ 2019-10-19 01:06
suwanbin_thought
阅读(94)
评论(0)
推荐(0)
摘要:
目录 一、运算符 二、算数运算符 三、关系运算符 四、逻辑运算符 五、位运算符 六、赋值运算符 运算符用于在程序运行时执行数学或逻辑运算。 一、运算符 Go 语言内置的运算符有: 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 二、算数运算符 运算符描述 + 相加 - 相减 * 相乘 / 阅读全文
posted @ 2019-10-19 01:05
suwanbin_thought
阅读(80)
评论(0)
推荐(0)
摘要:
目录 一、基本数据类型 二、整型 2.1 特殊整型 2.2 数字字面量语法(Number literals syntax) 三、浮点型 四、复数 五、布尔值 六、字符串 6.1 字符串转义符 6.2 多行字符串 6.3 字符串的常用操作 七、byte和rune类型 7.1 修改字符串 八、类型转换 阅读全文
posted @ 2019-10-19 01:04
suwanbin_thought
阅读(340)
评论(0)
推荐(0)
摘要:
目录 一、标识符与关键字 二、标识符 三、关键字 四、变量 五、变量的来历 六、变量类型 七、变量声明 7.1 标准声明 7.2 批量声明 7.3 变量的初始化 7.3.1 类型推导 7.3.2 短变量声明 7.3.3 匿名变量 八、常量 九、iota 9.1 几个常见的iota示例: 变量和常量是 阅读全文
posted @ 2019-10-19 01:03
suwanbin_thought
阅读(88)
评论(0)
推荐(0)
摘要:
目录 一、VS Code配置Go语言开发环境 二、下载与安装 三、安装中文简体插件 四、安装Go开发扩展 五、变更编辑器主题 六、安装Go语言开发工具包 6.1 方法一:使用git下载源代码再安装 6.2 方法二:下载已经编译好的可执行文件 七、配置自动保存 八、配置代码片段快捷键 VS Code是 阅读全文
posted @ 2019-10-19 01:02
suwanbin_thought
阅读(317)
评论(0)
推荐(0)
摘要:
目录 一、安装Go语言及搭建Go语言开发环境 二、下载 2.1 下载地址 2.2 版本的选择 三、安装 3.1 Windows安装 3.2 Linux下安装 3.3 Mac下安装 3.4 检查 四、配置GOPATH 五、Go项目结构 5.1 适合个人开发者 5.2 目前流行的项目结构 5.3 适合企 阅读全文
posted @ 2019-10-19 01:01
suwanbin_thought
阅读(210)
评论(0)
推荐(0)
摘要:
目录 一、为什么互联网世界需要Go语言 二、硬件限制:摩尔定律已然失效 三、Go语言为并发而生 四、Go性能强悍 五、Go语言简单易学 5.1 语法简洁 5.2 代码风格统一 5.3 开发效率高 六、学习Go语言的前景 终于等到你!Go语言——让你用写Python代码的开发效率编写C语言代码。 一、 阅读全文
posted @ 2019-10-19 00:59
suwanbin_thought
阅读(106)
评论(0)
推荐(0)

浙公网安备 33010602011771号