Go语言
文章平均质量分 92
!一直往南方开.
这个作者很懒,什么都没留下…
展开
-
golang使用etcd以及go-micro时 clientv3 报错
github.com/coreos/etcd/clientv3/balancer/resolver/endpoint../../pkg/mod/github.com/coreos/etcd@v3.3.18+incompatible/clientv3/balancer/resolver/endpoint/endpoint.go:114:78: undefined: resolver.BuildOption../../pkg/mod/github.com/coreos/etcd@v3.3.18+incomp原创 2020-12-30 16:48:22 · 770 阅读 · 1 评论 -
Golang的GMP原理与调度
Golang的GMP原理与调度一、Golang “调度器” 的由来(1)单进程时代不需要调度器(2)多进程 / 线程时代有了调度器需求(3) 协程来提高 CPU 利用率三种方式(4)Go 语言的协程 goroutine二、Goroutine 调度器的 GMP 模型的设计思想(1)GMP 模型(2)调度器的设计策略(3)go func () 调度流程(4)调度器的生命周期三、Go 调度器调度场景过程全解析四、小结一、Golang “调度器” 的由来(1)单进程时代不需要调度器我们知道,一切的软件都是跑原创 2020-12-22 21:58:12 · 3073 阅读 · 6 评论 -
groutine与多线程的区别
从使用上讲goroutine 比线程更轻量级,可以创建十万、百万不用担心资源问题。goroutine 和 chan 搭配使用,实现多线程、高并发 实现起来要方便很多。虽然go的并发用起来很方便,但多线程还是要小心不要产生 数据竞态,以及共享锁还是互斥锁的选择问题、并发操作的数据同步问题(多核心,不同的cpu缓存操作,同步到内存使其他协程感知)。从实现上讲从资源上讲,线程的栈内存大小一般是固定的一般为2MB,虽然这个数值可以设置,但是 太大了浪费,太小了容易不够用。而 gorou原创 2020-12-21 21:59:01 · 258 阅读 · 0 评论 -
Golang垃圾回收机制
垃圾回收算法目前比较常见的垃圾回收算法有三种:引用计数:为每个对象维护一个引用计数,当引用该对象的对象销毁时,引用计数 -1,当对象引用计数为 0 时回收该对象。代表语言:Python优点:对象回收快,不会出现内存耗尽或达到某个阈值时才回收。缺点:不能很好的处理循环引用,而实时维护引用计数也是有损耗的。标记-清除:从根变量开始遍历所有引用的对象,标记引用的对象,没有被标记的进行回收。代表语言:Golang(三色标记法)优点:解决了引用计数的缺点。缺点:需要 STW,暂时停掉程原创 2020-12-20 10:27:15 · 1198 阅读 · 1 评论 -
etcd
etcd简介etcd是使用Go语言开发的一个开源的、高可用的分布式key-value存储系统,可以用于配置共享和服务的注册和发现。类似项目有zookeeper和consul。etcd具有以下特点:完全复制:集群中的每个节点都可以使用完整的存档高可用性:Etcd可用于避免硬件的单点故障或网络问题一致性:每次读取都会返回跨多主机的最新写入简单:包括一个定义良好、面向用户的API(gRPC)安全:实现了带有可选的客户端证书身份验证的自动化TLS快速:每秒10000次写入的基准速度可靠:使用R原创 2020-12-19 11:53:16 · 2830 阅读 · 1 评论 -
Go语言map(Go语言映射)
Go语言map(Go语言映射)map 这种数据结构在其他编程语言中也称为字典(Python)、hash 和 HashTable 等。map 概念map 是引用类型,可以使用如下方式声明:var mapname map[keytype]valuetype在声明的时候不需要知道 map 的长度,因为 map 是可以动态增长的,未初始化的 map 的值是 nil,使用函数 len() 可以获...原创 2020-02-21 16:38:35 · 446 阅读 · 0 评论 -
Go语言切片详解
Go语言切片详解从数组或切片生成新的切片切片默认指向一段连续内存区域,可以是数组,也可以是切片本身。从连续内存区域生成切片是常见的操作,格式如下:slice [开始位置 : 结束位置]从数组生成切片,代码如下:var a = [3]int{1, 2, 3}fmt.Println(a, a[1:2])结果如下:[1 2 3] [2]从指定范围中生成切片var highR...原创 2020-02-20 12:00:00 · 531 阅读 · 0 评论 -
Go语言数组详解
Go语言数组详解数组的声明语法如下:var 数组变量名 [元素数量]Type语法说明如下所示:数组变量名:数组声明及使用时的变量名。元素数量:数组的元素数量,可以是一个表达式,但最终通过编译期计算的结果必须是整型数值,元素数量不能含有到运行时才能确认大小的数值。Type:可以是任意基本类型,包括数组本身,类型为数组本身时,可以实现多维数组。数组的每个元素都可以通过索引下标来访问,...原创 2020-02-19 17:28:04 · 1314 阅读 · 0 评论 -
Go语言基本语法
Go语言变量的声明(使用var关键字)Go语言是静态类型语言,因此变量(variable)是有明确类型的,编译器也会检查变量类型的正确性。在数学概念中,变量表示没有固定值且可改变的数。但从计算机系统实现角度来看,变量是一段或多段用来存储数据的内存。声明变量的一般形式是使用 var 关键字:var name type其中,var 是声明变量的关键字,name 是变量名,type 是变量的类型...原创 2020-02-17 10:59:45 · 160 阅读 · 0 评论 -
Go语言工程结构详述
Go语言工程结构详述一般的编程语言往往对工程(项目)的目录结构是没有什么规定的,但是Go语言却在这方面做了相关规定搭建Go语言开发环境时提到的环境变量 GOPATH,项目的构建主要是靠它来实现的。这么说吧,如果想要构建一个项目,就需要将这个项目的目录添加到 GOPATH 中,多个项目之间可以使用;分隔。如果不配置 GOPATH,即使处于同一目录,代码之间也无法通过绝对路径相互调用。目录结构...原创 2020-02-16 17:22:17 · 513 阅读 · 0 评论 -
Go语言简介
一.Go语言简介简介Go语言(或 Golang)起源于 2007 年,并在 2009 年正式对外发布。Go 是非常年轻的一门语言,它的主要目标是“兼具 Python 等动态语言的开发速度和 C/C++ 等编译型语言的性能与安全性”。Go语言是编程语言设计的又一次尝试,是对类C语言的重大改进,它不但能让你访问底层操作系统,还提供了强大的网络编程和并发编程支持。Go语言的用途众多,可以进行网络...原创 2020-02-16 00:19:09 · 740 阅读 · 0 评论