摘要: 目录 一、为什么需要函数式选项模式? 二、选项模式 本文主要介绍了Go语言中函数式选项模式及该设计模式在实际编程中的应用。 一、为什么需要函数式选项模式? 最近看go-micro/options.go源码的时候,发现了一段关于服务注册的代码如下: type Options struct { Brok 阅读全文
posted @ 2019-10-19 15:55 suwanbin_thought 阅读(76) 评论(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 阅读(94) 评论(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 阅读(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 阅读(126) 评论(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 阅读(126) 评论(0) 推荐(0) 编辑
摘要: 目录 一、logrus介绍 二、安装 三、基本示例 四、进阶示例 五、日志级别 5.1 设置日志级别 六、字段 七、默认字段 八、日志条目 九、Hooks 十、格式化 十一、记录函数名 线程安全 gin框架使用logrus 日志是程序中必不可少的一个环节,由于Go语言内置的日志库功能比较简洁,我们在 阅读全文
posted @ 2019-10-19 15:44 suwanbin_thought 阅读(126) 评论(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 阅读(110) 评论(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 阅读(86) 评论(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 阅读(127) 评论(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 阅读(123) 评论(0) 推荐(0) 编辑
摘要: 目录 一、sarama 1.1 下载及安装 1.2 注意事项 二、连接kafka发送消息 三、连接kafka消费消息 Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据,具有高性能、持久化、多副本备份、横向扩展等特点。本文介绍了如何使用Go语言发送和接收k 阅读全文
posted @ 2019-10-19 15:15 suwanbin_thought 阅读(122) 评论(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 阅读(118) 评论(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 阅读(70) 评论(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 阅读(107) 评论(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 阅读(130) 评论(0) 推荐(0) 编辑
摘要: 目录 一、json序列化的问题 二、gob序列化示例 三、msgpack 3.1 安装 3.2 示例 本文主要介绍二进制协议gob及msgpack的基本使用。 最近在写一个gin框架的session服务时遇到了一个问题,Go语言中的json包在序列化空接口存放的数字类型(整型、浮点型等)都序列化成f 阅读全文
posted @ 2019-10-19 15:02 suwanbin_thought 阅读(152) 评论(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 阅读(2575) 评论(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 阅读(133) 评论(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 阅读(125) 评论(0) 推荐(0) 编辑