GO语言
文章平均质量分 94
牧码人Sentinel
这个作者很懒,什么都没留下…
展开
-
Go:Select语义介绍和使用
1.多channel场景 多个channel同时需要读取或写入,怎么办? 串行操作? NOpackage mainimport ( "fmt" "time")func server1(ch chan string) { time.Sleep(6 * time.Second) ch <- "from server1"...原创 2019-08-27 14:57:21 · 259 阅读 · 0 评论 -
Go:切片
切⽚定义1. 切⽚是基于数组类型做的⼀层封装。它⾮常灵活,可以⾃动扩容。var a []int//定义⼀个int类型的空切⽚2. 切⽚初始化, a[start:end]创建⼀个包括从start到end-1的切⽚。package mainimport ( "fmt")func main() { a := [5]int{76, 77, 78, 79, 80} ...原创 2019-08-28 16:48:27 · 173 阅读 · 0 评论 -
Go:struct
struct声明和定义1. Go中⾯向对象是通过struct来实现的, struct是⽤户⾃定义的类型type User struct { Username string Sex string Age int AvatarUrl string} 注意:type是⽤来定义⼀种类型2. struct初始化⽅法var...原创 2019-08-28 17:20:35 · 254 阅读 · 0 评论 -
Go:微服务概述
单体应用概念 1.所有业务功能都在一个应用程序里面 2.研发人员开发并维护同一个代码库 3.架构简单,典型的三层架构单体应用的横向扩展单体应用的优势(规模不大) 1.架构简单,容易上手 2.部署简单,没有复杂的依赖 3.测试方便,...原创 2019-08-28 18:08:42 · 777 阅读 · 0 评论 -
Go:微服务架构
微服务架构全景图服务注册和发现Client side implement 1.调用需要维护所有调用服务的地址 2.有一定的技术难度,需要rpc框架支持Server side implement 1.架构简单 2.有单点故障问题:在微服务架构中,为什么不选择传统的LV...原创 2019-08-29 01:57:17 · 1238 阅读 · 0 评论 -
Go:服务注册组件开发
服务注册&发现原理 注册中心选型选项模式介绍问题描述type Options struct{ StrOption1 string StrOption2 string StrOption3 string IntOption1 int IntOption2 int IntOption3 int}...原创 2019-08-29 01:13:17 · 387 阅读 · 0 评论 -
Go:服务发现开发
服务发现 使用DNS进行服务发现 服务注册&发现原理 服务发现接口定义 基于etcd的服务发现开发服务发现的两种方案 1.使用DNS进行服务发现 2.基于SDK的形式进行服务发现使用DNS进行服务发现传统D...原创 2019-08-29 01:29:16 · 597 阅读 · 0 评论 -
Go:负载均衡组件开发
目录 场景分析 基本算法介绍 接口设计 功能开发场景分析分布式系统 1.每个服务都有多个实例 2.请求如何路由?传统解决方案 DNS+LVS 1...原创 2019-08-29 01:51:36 · 765 阅读 · 1 评论 -
Go:序列化和反序列化
目录 为什么要序列化和反序列化 Json简介和使用 Msgpack简介和使用 Protobuf简介和使用为什么需要序列化和反序列化?微服务特点 1.每个服务专注做好一件事 2.微服务之间需要进行交互 3.每个服务可以使用任何语言进行开发为什么需要序列化和反序列化?服务之间进行沟...原创 2019-08-29 02:27:51 · 1803 阅读 · 0 评论 -
Go:微服务框架开发一
目录 微服务框架整体架构 http/2介绍 grpc介绍微服务框架整体架构微服务框架的意义性能 专业的人做专业的事情 专注框架层面的优化稳定性 专门的团队进行维护 Bug快速fix效率 解决共性问题 ...原创 2019-08-29 04:35:08 · 2004 阅读 · 0 评论 -
Go:微服务框架开发二
目录 Http2 协议协商 https 密码交换协商 grpc使用示例HTTP2使用示例Golang默认支持http2问题: 如何兼容老的浏览器或客户端? 通过协议协商进行解决协议协商 Upgrade机制 ALPN机制,Application Layer Protocol Neg...原创 2019-08-29 05:25:41 · 332 阅读 · 0 评论 -
Go:微服务框架开发三(代码生成工具开发)
目录 共性抽象 代码生成工具设计 代码生成工具开发共性抽象package mainimport( "log" "net" pb "github.com/ibinarytree/koala/example/grpc_example/hello" "golang.org/x/net/context" "google.golang...原创 2019-08-29 05:43:25 · 1538 阅读 · 0 评论 -
Go:普罗米修斯中间件开发
目录 Prometheus介绍 Grafana介绍和使用 Prometheus中间件开发 测试Prometheus中间件Prometheus介绍 分布式监控系统 完全被开源,使用Go进行开发 ...原创 2019-08-30 08:36:57 · 2826 阅读 · 0 评论 -
Go:yaml配置文件集成
目录 Yaml配置介绍 Yaml配置文件解析 Koala配置项梳理 Koala配置文件生成器开发Yaml配置文件介绍基本语法 大小写敏感 使用缩进表示层级关系 缩进时不允许使用Tab键,只允许使用空格...原创 2019-08-30 08:58:12 · 1960 阅读 · 0 评论 -
Go:map声明和定义
map声明和定义1. map类型是⼀个key-value的数据结构。//var a map[key的类型]value类型var a map[string]intvar b map[int]stringvar c map[float32]string注意:map必须初始化才能使⽤,否则panic2. map类型的变量默认初始化为nil,需要使⽤make分配map内存pa...原创 2019-08-28 16:21:19 · 1614 阅读 · 0 评论 -
Go:指针
变量和内存地址1. 每个变量都有内存地址,可以说通过变量来操作对应⼤⼩的内存var a int32a = 100fmt.Printf(“%d\n”, a)fmt.Printf(“%p\n”, &a)注意:通过&符号可以获取变量的地址2. 普通变量存储的是对应类型的值,这些类型就叫值类型指针类型3. 指针类型的变量存储的是⼀个地址,所以⼜叫指针类型...原创 2019-08-28 16:08:56 · 171 阅读 · 0 评论 -
Go:线程安全介绍
1. 现实例子 A. 多个goroutine同时操作一个资源,这个资源又叫临界区 B. 现实生活中的十字路口,通过红路灯实现线程安全 C. 火车上的厕所,通过互斥锁来实现线程安全2. 实际例子, x = x +1 A. 先从内存中取出x的值 B. CPU进行计算,x+1...原创 2019-08-27 15:08:52 · 870 阅读 · 0 评论 -
Go:网络
TCP/IP协议介绍1. 互联网起源 1. 起源于美国五角大楼,它的前身是美国国防部高级研究计划局 主持研制的ARPAnet。 2. 互联网的基础是TCP/IP协议 3. TCP/IP 是供已连接因特网的计算机进行通信的通信协议。2. TCP/IP协议 1. TCP ...原创 2019-08-27 15:47:04 · 389 阅读 · 0 评论 -
Go:并发与多线程
1. 概念 A. 并发:同一时间段内执行多个操作。 B. 并行:同一时刻执行多个操作。2. 多线程 Goroutine初探 A. 线程是由操作系统进行管理,也就是处于内核态。 B. 线程之间进行切换,需要发生用户态到内核态的切换。 C. 当系统中运行大量线程,系统...原创 2019-08-27 16:14:42 · 336 阅读 · 0 评论 -
Go:接口
1. 接口定义了一个对象的行为规范 A. 只定义规范,不实现 B. 具体的对象需要实现规范的细节2. Go中接口定义 A. type 接口名字 interface B. 接口里面是一组方法签名的集合type Animal interface { Talk() E...原创 2019-08-27 16:53:31 · 182 阅读 · 0 评论 -
Go:接口实战(日志库开发)
日志库需求分析1. 日志库产生的背景 A. 程序运行是个黑盒 B. 而日志是程序运行的外在表现 C. 通过日志,可以知道程序的健康状态2. 日志打印级别设置 A. Debug级别:用来调试程序,日志最详细。对程序性能影响比较大。 B. Trace级别:...原创 2019-08-27 17:00:10 · 282 阅读 · 0 评论 -
Go:测试和调试
自动化测试框架1. testing A. testing包提供了自动化测试相关的框架 B. 支持单元测试和压力测试import ( "testing")测试规范2. Go中的测试约定 A. 用来测试的代码必须以_test.go结尾 B. 单元测试的函数名必须以Tes...原创 2019-08-27 17:08:34 · 794 阅读 · 0 评论 -
Go:反射
变量介绍1. 变量的内在机制 A. 类型信息,这部分是元信息,是预先定义好的 B. 值类型,这部分是程序运行过程中,动态改变的var arr [10]intarr[0] = 10arr[1] = 20arr[2] = 30arr[3] = 40arr[4] = 50type Animal struct { Nam...原创 2019-08-27 17:25:59 · 243 阅读 · 0 评论 -
Go:Redis
Redis介绍1. 简介 A. 开源的、内存中的数据结构系统。 B. 支持多种数据结构,string、hash、列表、集合以及有序集合 C. 性能非常好,单机能够达到15wQPS。 D. 通常用来做缓存系统,完全可以替代memcache2. 应用场景 ...原创 2019-08-27 21:34:18 · 1133 阅读 · 0 评论 -
Go:NSQ消息队列
NSQ介绍1. 简介 A. NSQ是Go语言编写的,开源的内存分布式消息队列中间件 B. 可以大规模地处理每天数以十亿计级别的消息 C. 分布式和去中心化拓扑结构,无单点故障 D. Github地址:https://github.com/nsqio/nsq2. NSQ应用场景1....原创 2019-08-27 21:48:30 · 819 阅读 · 0 评论 -
Go:Web编程
Web编程基础1. Web工作方式HTTP协议详解1. http 请求包体GET /domains/example/ HTTP/1.1 //请求行: 请求方法 请求URI HTTP协议/协议版本Host:www.iana.org //服务端的主机名User-Agent:Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.4 (KHTM...原创 2019-08-28 03:24:02 · 315 阅读 · 0 评论 -
Go:数据格式
数据交换格式简介1. 简介 A. 分布式系统 B. 打包和解包操作 C. 传输模式:1. 网络传输,API接口。2. 文件传输。2. JSON数据格式 a. 对象, key-value形式。{} b. 数组,[]{ "dates":{ ...原创 2019-08-28 03:37:17 · 381 阅读 · 0 评论 -
Go:依赖管理和Mysql开发
依赖管理介绍1. 简介 A. 所有的第三方包都放在$GOPATH的src目录下。 B. 如果不同程序依赖的版本不一样,怎么管理 C. 每个程序依赖的包,没有版本号的概念。2. godep安装 a. 安装方法: go get github.com/tools/godep ...原创 2019-08-28 04:04:53 · 416 阅读 · 0 评论 -
Go:gin框架
Gin框架介绍1. 简介 A. 基于httprouter开发的web框架。http://github.com/julienschmidt/httprouter B. 提供Martini风格的API,但比Martini要快40倍 C. 非常轻量级,使用起来非常简洁2. Gin框架安装与使用 ...原创 2019-08-28 14:58:19 · 1884 阅读 · 0 评论 -
Go:性能优化
性能优化背景以及原理1. 性能优化背景 2. 常见性能优化手段 A. 尽可能的减少 HTTP 的请求数。合并css和js以及图片。 B. 使用CDN系统,实现就近访问。 C. 启用gzip压缩,降低网页传输的大小。 D. 优化后端api服务的性能。...原创 2019-08-28 15:17:59 · 1142 阅读 · 1 评论 -
Go:100道Go语言面试题
1.【初级】下面属于关键字的是()A. funcB. defC. structD. class参考答案:AC2.【初级】定义一个包内全局字符串变量,下面语法正确的是()A. var str stringB. str := ""C. str = ""D. var str = ""参考答案:AD3.【初级】通过指针变量 p 访问其成员变量 ...原创 2019-09-03 14:20:36 · 13386 阅读 · 1 评论