探秘GO
不断地学习摸索go语言的高并发的特性
墨飏韶年
leetcode:https://leetcode-cn.com/problemset/all/
展开
-
为什么区块链开发者工资这么高?看看他们需要掌握多少东西就知道了
hi 小伙伴们好,营长又回来了! 说起区块链一直有个大家喜闻乐见的话题,就是「开发者」,无论是人才招聘还是技术开发,开发者都是区块链大潮背后的中坚力量。 今天咱们就聊聊「如何成为区块链开发者?」这个话题,在营长采访过的很多技术专家中,经常都会问他们是如何成为区块链大拿的?以及是通过怎样的方式和区块磨炼自己的技术的?日积月累下来,得到了很多优质的反馈。 因此,本篇文章将会...转载 2018-08-23 09:26:33 · 1946 阅读 · 0 评论 -
GO下载地址备份百度网盘
百度网盘: https://pan.baidu.com/s/1lu4Y_LB_vplz-RaAu1iv3Q Stable versionsgo1.10.1 ▾File name Kind OS Arch Size SHA256 Checksum go1.10.1.src.tar.gz Source 17MB 5...原创 2018-10-24 16:01:12 · 2198 阅读 · 0 评论 -
Go基础编程:Go语言介绍
Go语言是什么2009年11月10日,Go语言正式成为开源编程语言家庭的一员。Go语言(或称Golang)是云计算时代的C语言。Go语言的诞生是为了让程序员有更高的生产效率,Go语言专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程。开发人员在为项目选择语言时,不得不在快速开发和性能之间做出选择。C和C++这类语言提...原创 2018-10-31 10:00:47 · 719 阅读 · 0 评论 -
Go基础编程:环境搭建
转载:https://blog.csdn.net/tennysonsky/article/details/77935999安装和设置Go环境搭建:ubuntu+sublime3Go环境搭建:ubuntu+liteideGo环境搭建:windows+sublime3Go环境搭建:windows+liteide 标准命令概述Go语言中包含了大量用于处理Go语言代码的命令和...转载 2018-10-31 10:06:31 · 184 阅读 · 0 评论 -
十一、Go基础编程:递归函数、函数类型、匿名函数与闭包
1. 递归函数递归指函数可以直接或间接的调用自身。递归函数通常有相同的结构:一个跳出条件和一个递归体。所谓跳出条件就是根据传入的参数判断是否需要停止递归,而递归体则是函数自身所做的一些处理。//通过循环实现1+2+3……+100func Test01() int { i := 1 sum := 0 for i = 1; i <= 100; i++ {...原创 2018-10-31 11:39:15 · 226 阅读 · 0 评论 -
十二、Go基础编程:工作区
工作区介绍Go代码必须放在工作区中。工作区其实就是一个对应于特定工程的目录,它应包含3个子目录:src目录、pkg目录和bin目录。src目录:用于以代码包的形式组织并保存Go源码文件。(比如:.go .c .h .s等)pkg目录:用于存放经由go install命令构建安装后的代码包(包含Go库源码文件)的“.a”归档文件。bin目录:与pkg目录类似,在通过go install...原创 2018-10-31 11:41:33 · 207 阅读 · 0 评论 -
十三、Go基础编程:工程管理
概述在实际的开发工作中,直接调用编译器进行编译和链接的场景是少而又少,因为在工程中不 会简单到只有一个源代码文件,且源文件之间会有相互的依赖关系。如果这样一个文件一个文件逐步编译,那不亚于一场灾难。 Go语言的设计者作为行业老将,自然不会忽略这一点。早期Go语言使用makefile作为临时方案,到了Go 1发布时引入了强大无比的Go命令行工具。Go命令行工具的革命性之处在于彻底消除了工程...转载 2018-10-31 12:00:05 · 203 阅读 · 0 评论 -
十五、Go基础编程:复合类型—数组
概述数组是指一系列同一类型数据的集合。数组中包含的每个数据被称为数组元素(element),一个数组包含的元素个数被称为数组的长度。数组⻓度必须是常量,且是类型的组成部分。 [2]int 和 [3]int 是不同类型 var n int = 10 var a [n]int //err, non-constant array bound n var b [10]...转载 2018-10-31 15:56:01 · 476 阅读 · 0 评论 -
十六、Go基础编程:复合类型—切片slice
1. 概述数组的长度在定义之后无法再次修改;数组是值类型,每次传递都将产生一份副本。显然这种数据结构无法完全满足开发者的真实需求。Go语言提供了数组切片(slice)来弥补数组的不足。切片并不是数组或数组指针,它通过内部指针和相关属性引⽤数组⽚段,以实现变⻓⽅案。slice并不是真正意义上的动态数组,而是一个引用类型。slice总是指向一个底层array,slice的声明也可以像arr...转载 2018-10-31 17:21:39 · 206 阅读 · 0 评论 -
十七、Go基础编程:复合类型—map
1. 概述Go语言中的map(映射、字典)是一种内置的数据结构,它是一个无序的key—value对的集合,比如以身份证号作为唯一键来标识一个人的信息。map格式为: map[keyType]valueType在一个map里所有的键都是唯一的,而且必须是支持==和!=操作符的类型,切片、函数以及包含切片的结构类型这些类型由于具有引用语义,不能作为映射的键,使用这些类型会造成编译...转载 2018-11-01 10:09:40 · 202 阅读 · 0 评论 -
十八、Go基础编程:复合类型—结构体
1 结构体类型有时我们需要将不同类型的数据组合成一个有机的整体,如:一个学生有学号/姓名/性别/年龄/地址等属性。显然单独定义以上变量比较繁琐,数据不便于管理。结构体是一种聚合的数据类型,它是由一系列具有相同类型或不同类型的数据构成的数据集合。每个数据称为结构体的成员。2 结构体初始化2.1 普通变量type Student struct { id int ...转载 2018-11-01 10:33:57 · 562 阅读 · 0 评论 -
十九、Go基础编程:面向对象—匿名组合
1 匿名字段一般情况下,定义结构体的时候是字段名与其类型一一对应,实际上Go支持只提供类型,而不写字段名的方式,也就是匿名字段,也称为嵌入字段。当匿名字段也是一个结构体的时候,那么这个结构体所拥有的全部字段都被隐式地引入了当前定义的这个结构体。//人type Person struct { name string sex byte age int}/...转载 2018-11-01 10:44:33 · 148 阅读 · 0 评论 -
二十、Go基础编程:正则表达式
正则表达式是一种进行模式匹配和文本操纵的复杂而又强大的工具。虽然正则表达式比纯粹的文本匹配效率低,但是它却更灵活。按照它的语法规则,随需构造出的匹配模式就能够从原始文本中筛选出几乎任何你想要得到的字符组合。Go语言通过regexp标准包为正则表达式提供了官方支持,如果你已经使用过其他编程语言提供的正则相关功能,那么你应该对Go语言版本的不会太陌生,但是它们之间也有一些小的差异,因为Go实现的是...转载 2018-11-01 10:53:12 · 191 阅读 · 0 评论 -
二十一、Go基础编程:并发编程—概述
1 并行和并发并行(parallel):指在同一时刻,有多条指令在多个处理器上同时执行。并发(concurrency):指在同一时刻只能有一条指令执行,但多个进程指令被快速的轮换执行,使得在宏观上具有多个进程同时执行的效果,但在微观上并不是同时执行的,只是把时间分成若干段,使多个进程快速交替的执行。并行是两个队列同时使用两台咖啡机 并发是两个队列交替使用一台咖啡机 2 G...转载 2018-11-01 11:09:17 · 142 阅读 · 1 评论 -
二十二、Go基础编程:并发编程—goroutine
1 goroutine是什么goroutine是Go并行设计的核心。goroutine说到底其实就是协程,但是它比线程更小,十几个goroutine可能体现在底层就是五六个线程,Go语言内部帮你实现了这些goroutine之间的内存共享。执行goroutine只需极少的栈内存(大概是4~5KB),当然会根据相应的数据伸缩。也正因为如此,可同时运行成千上万个并发任务。goroutine比thre...转载 2018-11-01 12:06:23 · 164 阅读 · 0 评论 -
Go环境搭建:windows+sublime3
Go语言环境安装Go安装包下载网址:https://www.golangtc.com/download有zip压缩版和msi安装版两个按本下载。(这里使用msi安装版,比较方便)。运行msi安装文件,千万不要在安装路径中出现中文,一路Next。由于使用msi安装文件,所以Go语言的环境变量已经自动设置好了。打开Windows中的命令提示符(cmd.exe)执行命令:...转载 2018-11-01 14:37:47 · 200 阅读 · 0 评论 -
二十二、Go基础编程:并发编程—channel
goroutine运行在相同的地址空间,因此访问共享内存必须做好同步。goroutine 奉行通过通信来共享内存,而不是共享内存来通信。引⽤类型 channel 是 CSP 模式的具体实现,用于多个 goroutine 通讯。其内部实现了同步,确保并发安全。 1 channel类型和map类似,channel也一个对应make创建的底层数据结构的引用。当我们复制一个channe...转载 2018-11-01 15:01:02 · 182 阅读 · 0 评论 -
六、Go 语言运算符
运算符用于在程序运行时执行数学或逻辑运算。Go 语言内置的运算符有:算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 其他运算符接下来让我们来详细看看各个运算符的介绍。算术运算符下表列出了所有Go语言的算术运算符。假定 A 值为 10,B 值为 20。运算符 描述 实例 + 相加 A + B 输出结果 30 - 相减 ...原创 2018-07-27 10:32:26 · 150 阅读 · 0 评论 -
Go 语言条件语句
条件语句需要开发者通过指定一个或多个条件,并通过测试条件是否为 true 来决定是否执行指定语句,并在条件为 false 的情况在执行另外的语句。下图展示了程序语言中条件语句的结构:Go 语言提供了以下几种条件判断语句:语句 描述 if 语句 if 语句 由一个布尔表达式后紧跟一个或多个语句组成。 if...else 语句 if 语句 后可以使用可选的 e...原创 2018-07-27 10:35:26 · 164 阅读 · 0 评论 -
七、Go 语言循环语句
在不少实际问题中有许多具有规律性的重复操作,因此在程序中就需要重复执行某些语句。以下为大多编程语言循环程序的流程图: Go 语言提供了以下几种类型循环处理语句:循环类型 描述 for 循环 重复执行语句块 循环嵌套 在 for 循环中嵌套一个或多个 for 循环 循环控制语句循环控制语句可以控制循环体内语句的执行过程。GO 语言支持以下几种循环控制...原创 2018-07-27 10:36:54 · 157 阅读 · 0 评论 -
八、Go 语言循环语句 实例
输出 1-100 素数:package mainimport "fmt"func main() { var C, c int//声明变量 C=1 /*这里不写入FOR循环是因为For语句执行之初会将C的值变为1,当我们goto A时for语句会重新执行(不是重新一轮循环)*/ A: for C < 100 { C++ //C=1不能写入...原创 2018-07-27 11:52:07 · 204 阅读 · 0 评论 -
九、Go 语言函数
函数是基本的代码块,用于执行一个任务。Go 语言最少有个 main() 函数。你可以通过函数来划分不同功能,逻辑上每个函数执行的是指定的任务。函数声明告诉了编译器函数的名称,返回类型,和参数。Go 语言标准库提供了多种可动用的内置的函数。例如,len() 函数可以接受不同类型参数并返回该类型的长度。如果我们传入的是字符串则返回字符串的长度,如果传入的是数组,则返回数组中包含的元素个...原创 2018-07-27 11:59:21 · 163 阅读 · 0 评论 -
十、Go 语言变量作用域
作用域为已声明标识符所表示的常量、类型、变量、函数或包在源代码中的作用范围。Go 语言中变量可以在三个地方声明:函数内定义的变量称为局部变量 函数外定义的变量称为全局变量 函数定义中的变量称为形式参数接下来让我们具体了解局部变量、全局变量和形式参数。局部变量在函数体内声明的变量称之为局部变量,它们的作用域只在函数体内,参数和返回值变量也是局部变量。以下实例中 main()...原创 2018-07-27 12:15:44 · 268 阅读 · 0 评论 -
Go语言实战笔记
Go语言实战笔记(一)| Go包管理 Go语言实战笔记(二)| Go开发工具 Go语言实战笔记(三)| Go Doc 文档 Go语言实战笔记(四)| Go 数组 Go语言实战笔记(五)| Go 切片 Go语言实战笔记(六)| Go Map Go语言实战笔记(七)| Go 类型 Go语言实战笔记(八)| Go 函数方法 Go语言实战笔记(九)| Go 接口 Go语言...转载 2018-08-03 10:45:26 · 16347 阅读 · 0 评论 -
GO语言标准库概览
Go标准库包含了大量包,提供了丰富广泛的功能特性。这里提供了概览仅仅是有选择性的且非常简单。本文发表后,标准库的内容还可能继续增加,因此 建议大家最好是通过在线查阅库API或使用godoc(包含在Go发布包中)来获取最新信息以及全面了解每个包所具备的功能。 exp包(试验性的)是那些未来可能被加入标准库的包起步的地方,因此除非你想参加这些包的开发(通过测试、讨论、提交补丁),否则不应该使用...转载 2018-08-03 10:54:47 · 2141 阅读 · 0 评论 -
五、Go 语言变量
变量来源于数学,是计算机语言中能储存计算结果或能表示值抽象概念。变量可以通过变量名访问。Go 语言变量名由字母、数字、下划线组成,其中首个字母不能为数字。声明变量的一般形式是使用 var 关键字:var identifier type变量声明第一种,指定变量类型,声明后若不赋值,使用默认值。var v_name v_typev_name = value第二种,根据...原创 2018-07-26 11:39:23 · 122 阅读 · 0 评论 -
四、Go 语言数据类型
在 Go 编程语言中,数据类型用于声明函数和变量。数据类型的出现是为了把数据分成所需内存大小不同的数据,编程的时候需要用大数据的时候才需要申请大内存,就可以充分利用内存。Go 语言按类别有以下几种数据类型:序号 类型和描述 1 布尔型 布尔型的值只可以是常量 true 或者 false。一个简单的例子:var b bool = true。 2 数字类型...原创 2018-07-26 11:18:10 · 123 阅读 · 0 评论 -
三、Go 语言基础语法
Go 标记Go 程序可以由多个标记组成,可以是关键字,标识符,常量,字符串,符号。如以下 GO 语句由 6 个标记组成:fmt.Println("Hello, World!")6 个标记是(每行一个):1. fmt2. .3. Println4. (5. "Hello, World!"6. )行分隔符在 Go 程序中,一行代表一个语句结束。每个语句不需要像 C...原创 2018-07-26 09:26:07 · 1526 阅读 · 0 评论 -
二、Go 语言结构
在我们开始学习 Go 编程语言的基础构建模块前,让我们先来了解 Go 语言最简单程序的结构。Go Hello World 实例Go 语言的基础组成有以下几个部分:包声明 引入包 函数 变量 语句 & 表达式 注释接下来让我们来看下简单的代码,该代码输出了"Hello World!":package mainimport "fmt"func main()...原创 2018-07-26 09:11:28 · 172 阅读 · 0 评论 -
一、Go 语言环境安装
Go 语言支持以下系统:Linux FreeBSD Mac OS X(也称为 Darwin) Window安装包下载地址为:https://golang.org/dl/。如果打不开可以使用这个地址:https://golang.google.cn/dl/。各个系统对应的包名:操作系统 包名 Windows go1.4.windows-amd64.msi ...原创 2018-07-25 17:30:56 · 391 阅读 · 0 评论