Go语言中文网 为您找到相关结果 1256

golang:基础数据类型

基础数据类型 整型 int,uint是根据CPU平台机器字大小决定取值范围。 & 位运算 AND | 位运算 OR ^ 位运算 XOR &^ 位清空 (AND NOT) << 左移 >> 右移 默认值 var a1 int //0 var a2 float64 //0 var a3 bool //false var a4 byte //0 var a5 rune //0 var a6 []int //[] var a7 []byte //[] var a8 map[int64]int64 //map[] var a9 string //空 var a10 complex64 //(0+0i) 溢出情况 一个算术运算的结果,不管是有符号或者是无符号的,如果需要更多的bit位才能正确表示的话,就...阅读全文

博文 2018-09-07 20:34:40 super大橙子

2020 区块链 golang 版本(9) 工作量证明

封面 在上一篇分享中,我们定义了一个非常简单的数据结构,虽然简单但是我们已经可以看出区块链数据库的雏形。通过代码实现了创建区块链以及如何将区块添加到区块链中,区块链中每个区块都通过 hash 指针连接到前一个区块。这样将区块一个一个连接起来。但是实际上我们都知道区块链出块并没有那么容易。 区块链设计的一个巧妙之处,人们必须进行一些工作才能将区块添加到区块链中。正是这些艰苦的工作,也就是我们熟知的挖矿,才为区块链安全性和一致性提供保证。而且这项具有一定难度的挖矿工作也会得到回报(通过挖矿奖励矿工会得到一定额度的比特币)。 因为有了挖矿具有一定难度,这样将出块时间限制在 10 分钟左右,为什么这样做可以保证区块链的安全性。如果出块太快,这样就很容易造成区块链具有多个分叉。在区块链中认为大部分算力...阅读全文

博文 2020-04-30 21:32:42 zidea

阿里云新一代关系型数据库 PolarDB 剖析

摘要: 本文通过描述关系型数据库发展的背景以及云计算的时代特征,分享了数据库计算力的螺旋式上升的进化理念。并且结合阿里云 RDS 产品的发展路径,阐述了自主研发的新一代云托管关系型数据库 PolarDB 的产品整体设计思想,同时也对一些关键技术点进行了解读。 本文通过描述关系型数据库发展的背景以及云计算的时代特征,分享了数据库计算力的螺旋式上升的进化理念。并且结合阿里云 RDS 产品的发展路径,阐述了自主研发的新一代云托管关系型数据库 PolarDB 的产品整体设计思想,同时也对一些关键技术点进行了解读。 1. 背景 关系型数据库 谈到关系型数据库,在这个知识日新月异的TMT时代,听起来有些“古董”,这个起源于半个世纪以前的IT技术,事实上一直处于现代社会科技的核心,...阅读全文

open-falcon-hbs学习

open-falcon-hbs 标签(空格分隔): go falcon 主要功能 处理agent心跳请求,填充host表 ip白名单下发所有agent 下发执行插件信息 下发监控端口、进程 缓存监控策略 模块结构 内存数据Map结构 HostMap: (hostname, hostId int) HostGroupsMap: (hostId, groupsId []int) GroupPlugins: (groupId, pluginsPath []string) GroupTemplates: (groupId, templatesID []int) TemplateCache: (templateId, Template) type Template struct { Id int `j...阅读全文

博文 2017-02-09 08:29:08 SkyWay

golang之channels

以下是web application with golang 书里的笔记。 1.channels 和 Buffered Channels channels channel是goroutine之间通信的一种机制。 定义方式如下: ci := make(chan int) cs := make(chan string) Buffered Channels channel 还可以定义缓冲区大小,比如: ci := make(chan int, 2) 存取数据 使用<-来存入/获取数据,箭头方向代表数据的流向。 比如 向channel ci 写入数据: ci <- 10 从channel ci 获取数据并赋值到num:num := <- ci 2.Range和Close channels里面的数据可...阅读全文

博文 2019-10-14 19:03:13 aside section ._1OhGeD

Go Channel 详解

目录 [−] Channel类型blockingBuffered ChannelsRangeselecttimeoutTimer和Tickerclose同步参考资料 Channel是Go中的一个核心类型,你可以把它看成一个管道,通过它并发核心单元就可以发送或者接收数据进行通讯(communication)。 它的操作符是箭头 <- 。 12ch <- v // 发送值v到Channel ch中v := <-ch // 从Channel ch中接收数据,并将数据赋值给v (箭头的指向就是数据的流向) 就像 map 和 slice 数据类型一样, channel必须先创建再使用: 1ch := make(chan int) Channel类型 Channel类型的定义格式如下: 1Channel...阅读全文

golang数据结构之slice篇

package main import "github.com/sanity-io/litter" // slice增删改查,很实用 func main() { var sliceInt []int // init sliceInt = append(sliceInt, []int{1, 2, 3, 4}...) litter.Dump(sliceInt) // remove index 0 sliceInt = append(sliceInt[:0], sliceInt[1:]...) litter.Dump(sliceInt) sliceInt = append(sliceInt, []int{5,6,7,8,9,10}...) litter.Dump(sliceInt) // remo...阅读全文

博文 2018-08-05 00:30:01 LittleLee

go版本的排序二叉树,充足的api和注释说明

排序二叉树的介绍不多说了,本文的二叉树具有如下开放接口中的全部功能。 ```go package BTree type BTreeI interface { //if a bt contains data Contain(data interface{}) (bool, error) //get the node which has max data FindMax() (*BinaryNode, error) //get the node which has min data FindMin() (*BinaryNode, error) //insert a data Insert(x interface{}) (*BinaryNode, error) //delete a node wh...阅读全文

Golang语言并行设计的核心goroutine

goroutine实现并发编程,goroutine之间通信使用channel,channel不管是发送数据还是接收数据都是阻塞的,channel默认无缓冲,但也可以指定缓冲大小变成有缓冲,空间有剩余时是无阻塞,直到空间全部用完时才阻塞。 ``` /** * goroutine实现并发编程 * goroutine之间通信使用channel * channel不管是发送数据还是接收数据都是阻塞的 * channel默认无缓冲,但也可以指定缓冲大小变成有缓冲,空间有剩余时是无阻塞,直到空间全部用完时才阻塞 */ package main import ( "fmt" ) func sum(a []int, c chan int) { total := 0 for _, v := range a {...阅读全文

Go语言学习笔记04--特殊函数&工程化结构&数组&随机数

1.匿名函数 go语言中的函数都是声明在函数之外的,并不存在函数内声明函数的问题 但是也会存在一些特殊情况,在这写情况中允许在函数内部去再次定义一个函数。 这种情况下,在函数内部定义的函数就必须遵守一些go语言定义的特殊规则。 而这些内部的函数,被统称为:匿名函数。 func main (){ func (..){..} } (1)对于go语言中的匿名函数而言,由于其不存在函数名,无法使用传统函数的调用功能 所以如何调用匿名函数就必须从两个角度出发来解决问题。 1)利用函数指针,完成匿名函数的"重命名",然后再次调用 func main(){ fpointer := func (num int)int{ return num+10; } fmt.Println(fpointer(100));...阅读全文

Golang切片slice

切片slice 其本身并不是数组,它指向底层的数组 package main import ( "fmt" ) func main() { var s1 []int //这样的话就完成了slice的声明,如果是数组的话,必须在中括号当中必须有明确的数字或3个点 fmt.Println(s1) } 作为变成数组的替代方案,可以关联底层数组的局部或全部 package main import ( "fmt" ) func main() { var s1 []int //这样的话就完成了slice的声明,如果是数组的话,必须在中括号当中必须有明确的数字或3个点,这是个空slice a := [10]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 0} fmt.Println(s1) ...阅读全文

博文 2017-09-30 14:30:01 skymyyang

Go教程第三篇:变量

Go教程第三篇:变量 本文是《Golang系列教程》第三篇文章,它主要讲解golang中变量的用法。 什么是变量 变量是一个内存位置的名称,这个内存位置是用于指定类型的值。在go语言中,有许多不同的语法来声明一个变量。 声明单一变量 声明单一变量的语法: var name type。 package main import "fmt" func main() { var age int // 变量声明 fmt.Println("my age is", age) } var age int 语句声明了一个名称为age,数据类型为int的变量。我们没有为该变量指定任何值。 如果一个变量没有指定任何值的话,go会自动地把它初始化为该数据类型所对应的零值。 在本例子中,age会被指定一个0值。如果你...阅读全文

基于空接口的go语言归并排序mergSort

//merge sort: int float32 float64 //1 divide: 中分,仅存在一个变量时不分 //2 merge: 合并子列,若一个子列为空则 //直接复制另外一个子列 //3 需要与待排序数组等大小数组 //fileName: mergeSort.go package mySort1 import ( //"fmt" "log" ) //利用空接口实现任意类型,空接口类型不存在比较 //比较需利用a.(int)将空接口转换为其他类型 //通过a.(type)可以判断空接口的实际类型 func MergeSort(arr []interface{}, low, high int) { desArr := make([]interface{}, high+1) if ...阅读全文

博文 2018-08-31 12:29:03 Beginner18

2019-05-08(杂记与知识点积累)

归纳总结一天的内容,以致于过的不盲目,该杂记用来量化每天所做的内容: 1.早起的问题差评, 明天应该继续努力,争取达到自己的一个要求。 2.完成AGV调度系统段禁用的初级版本,新增历史记录任务完成的时间。明天完成站台禁用的版本,同时更新之前的点,段,站台的禁用功能。 3.下班后两个小时的健身,锻炼部位:肩部,核心训练课程:45分钟,有氧训练:三组组合训练。 4.今天所总结并陈述的知识点:以后每天过一遍,在此书写的知识点以后绝对不能答错,可以慢,但是要稳。前一天知识点回顾个人概述: 主要过了Java的两个基础,异常与集合类。异常的总接口为Throwable,子类实现为Error:错误,主要针对的是虚拟机,内存等问题,程序猿不做处理。另外是Exception,称为异常,Exception又分为R...阅读全文

博文 2019-05-09 03:34:52 invincibleFF

Go语言:简介(二)

Go语言:简介(二) 对Go语言了解前,我们先来补一些基本概念 基本概念 并发程序 一个并发程序可以在一个处理器或者内核上使用多个线程来执行任务,但是只有同一个程序在某个时间点同时运行在多核或者多处理器上才是真正的并行。 并发程序可以是并行的,也可以不是。 多线程缺点 使用多线程的应用难以做到准确,最主要的问题是内存中的数据共享,它们会被多线程以无法预知的方式进行操作,导致一些无法重现或者随机的结果。 使用多线程需要在意同步问题,可能出现死锁,线程上下文切换带来的开销 单线程中大计算量问题 利用多核CPU,将计算分发到各个子进程,将大量的计算分解掉,然后再通过进程间的事件消息来传递结果。 什么是协程 goroutines(协程) 1.协程与线程关系 在协程和操作系统线程之间并无一对一的关系:...阅读全文

如何更好处理数据仓库服务必然需要云数据库HybridDBforPostgreSQL

课程介绍 云数据库HybridDB for PostgreSQL(ApsaraDB HybridDB for PostgreSQL)是一种在线MPP大规模并行处理数据仓库服务。云数据库HybridDB for PostgreSQL基于Greenplum Database开源数据库项目,并由阿里云深度扩展,支持OSS外部表、JSON数据类型、HyperLogLog预估分析等功能特性。通过符合SQL2008标准查询语法及OLAP分析聚合函数,提供灵活的混合分析能力。支持行存储和列存储混合模式,提高分析性能,同时支持数据压缩技术,降低存储成本。并提供在线扩容、性能监测等服务,用户无需进行复杂的大规模MPP集群运维管理,让DBA、开发人员及数据分析师专注于如何通过SQL提高企业的生产力,创造核...阅读全文

LollipopGo游戏服务器架构--NetGateWay.go说明

大家好,我是彬,本节继续给大家讲解社区开源游戏服务器框架LollipopGo的说明。 本节着重给大家讲解的是NetGateWay.go,核心内容是针对网关的消息处理机制,直接先上代码 如下: package main import ( "LollipopGo/LollipopGo/log" "LollipopGo/LollipopGo/util" "Proto" "Proto/Proto2" "fmt" ) //------------------------------------------------------------------------------ //-------------------------------------------------------------...阅读全文

博文 2018-12-26 23:34:43 Golang语言社区

go中range

range 迭代各种各样的数据结构。 range遍历数组示例: package main import "fmt" func main() { rangeTest() } // range func rangeTest() { var arr = []int{12, 3, 2, 12, 3, 2, 31} for k, v := range arr { fmt.Println("数组输出的key,value为:",k, v) } } 结果是: 输出的key,value为: 0 12 输出的key,value为: 1 3 输出的key,value为: 2 2 输出的key,value为: 3 12 输出的key,value为: 4 3 输出的key,value为: 5 2 输出的key,val...阅读全文

博文 2019-04-25 14:34:43 三沐子FBR

GO Channel详解

Channel是Go中的一个核心类型,你可以把它看成一个管道,通过它并发核心单元就可以发送或者接收数据进行通讯(communication)。 它的操作符是箭头 <- 。 ch <- v // 发送值v到Channel ch中 v := <-ch // 从Channel ch中接收数据,并将数据赋值给v (箭头的指向就是数据的流向) 就像 map 和 slice 数据类型一样, channel必须先创建再使用: ch := make(chan int) Channel 类型 Channel类型的定义格式如下: ChannelType = ( "chan" | "chan" "<-" | "<-" "chan" ) ElementType . 它包括三种类型的定义。可选的<-代表channel...阅读全文

博文 2018-09-13 16:34:46 空即是色即是色即是空

2.GO语言之基本数据类型,运算符

1.数据类型 Go语言中有丰富的数据类型,除了基本的整型、浮点型、布尔型、字符串外, 还有数组、切片、结构体、函数、map、通道(channel)等。 1.1整型 整型分为两类: 按长度分为:int8、int16、int32、int64 -对应的无符号整型:uint8、uint16、uint32、uint64 1.2特殊整型 注意: 1.在使用int和uint类型时,不能假定它是32位或64位的整型,而是考虑int和uint可能在不同平台上的差异。 2.通过len()获取对象的长度,会根据不同平台的字节长度进行变化。 3.实际使用中,切片或map的元素数量等可以使用int表示。 4.在涉及到二进制传输、读写文件的结构描述时,为了保持文件的结构不会受到不同编译目标平台字节长度的影响,不要使用i...阅读全文

博文 2019-12-11 10:33:17 DevOperater

Go语言从入门到精通-03 | 复杂数据类型

请从github下载配套代码: https://github.com/shuningzhang/learn_golang 前面文章本号给大家介绍了基本的数据类型,表达式和函数等内容。有的时候基本的数据类型可能不能满足我们开发的需求,我们可能需要一些数据类型的组合。比如我们要把一个班级里面所有人的平均成绩存在一起,然后计算整个班级的平均成绩。大家想一下,这种情况下应该用什么类型的变量? Go语言从入门到精通-03 | 复杂数据类型 数组 接着上面我们举的例子,如果要计算平均成绩怎么办呢?这就用到了数组的概念。数组从字面上理解就是一组数,它是指类型相同的一组数。这组数在内存中是顺序存储的,因此,我们可以通过数组名字的索引来访问其中的数据,而不同定义多个变量。 图1 数组内部结构示意图 如图1是数...阅读全文

博文 2019-03-19 13:34:45 萨泥君

golang fmt(格式换 I O接口)

基本模式 fmt 方法可以大致分为 print, scan两类, 根据基础方法可以构建特定方法。 Print 将参数写入字符串或io.writer scan 从字符串或 io.Reader 读取指定数据, 并输出 Print Print 方法的几种模式 基础模式: [name] Print 返回默认格式化的字符串 写入模式: F[name] 返回写入字节 例如: Fprint 字符模式: S[name] 返回字符 例如: Sprint 模板模式: [name]f 根据模板格式化 例如: Printf 换行模式: [name]ln 输出后带换行 例如: Println 模式可组合, 例如 Fprintf, Sprintf Print 默认格式化,返回字符串 func Print(a ...in...阅读全文

求助呀!! mongo 怎么从外部插入数据呢

求助呀!! mongo 怎么从外部插入数据呢, 我写好了插入操作 怎么进行测试操作呢 怎么把测试内容插入到集合内 ![image.png](https://static.studygolang.com/180915/1342b21283355b10b39fd4566f4174a8.png) ![image.png](https://static.studygolang.com/180915/67026850d0308c7944cd627b2c2226a2.png) ![image.png](https://static.studygolang.com/180915/eda1924cee087154fef7be5c193048f4.png...阅读全文

博文 2018-09-15 10:49:33 261809340

万用大数据修炼手册!教你如何在成为大牛的路上保护好你的秀发!

也许你想在数据研究领域工作,你对数据工程师和数据科学家之间的区别还不是很清楚,甚至很多人可能认为这是同一件事。如果你真的这么认为,那是个大错误!这两个位置之间的差别正在增大。如果你不能深入理解这些异同,那么在未来绝对不会有几声雷鸣在等你。这篇文章必须读!数据工程师在技术上工作。他们负责数据系统架构的设计和维护,包括从基础设施分析到数据仓库的许多概念。数据工程师需要对常用的脚本语言有一个透彻的理解,并通过使用和改进数据分析系统,稳步提高数据的质量和数量。他们还负责创建建模、挖掘、验证和获取数据的步骤和过程。 预计行业对熟练数据工程师的需求将迅速增长。在现代世界,企业和组织需要一个可靠的数据体系结构来获取和存储数据。当企业发展到需要使用数据科学的程度时,它需要数据工程师。因此,迫切需要数据工程师...阅读全文

博文 2019-01-29 00:34:43 大数据的风风

Golang goroutine与channel

使用goroutine的方法很简单,直接在语句前面加go关键字即可,如果是多核处理器的电脑,使用gorountine,就会在另外一个CPU上执行goroutine,子协程不一定会和主协程在一个CPU上执行。 这里有两个注意的地方,使用go关键字的进程称之为子协程,而没有使用go关键字的进程称之为主协程,在多CPU的机器上,如果有多个协程,那么这些协程的执行顺序以及执行完成的顺序都是不确定的,但有一点,如果主协程结束,那么整个进程就结束了,不论子协程是否结束,整个进程都结束了,也就看不到子协程的运行结果了。 示例1 package main import "fmt" func main() { go fmt.Println("hello") //子协程 fmt.Println("world")...阅读全文

Go channel实现源码分析

go通道基于go的并发调度实现,本身并不复杂,go并发调度请看我的这篇文章:go并发调度原理学习 1.channel数据结构 type hchan struct { qcount uint // 缓冲区中已有元素个数 dataqsiz uint //循环队列容量大小 buf unsafe.Pointer // 缓冲区指针 elemsize uint16 //元素大小 closed uint32 //关闭标记,0没关闭,1关闭 elemtype *_type //数据项类型 sendx uint //发送索引 recvx uint //接收索引 recvq waitq //等待接收排队链表 sendq waitq //等待发送排队链表 lock mutex //锁 } type waitq s...阅读全文

Learn Golang in Days - Day 16-Go并发

Learn Golang in Days - Day 16-Go并发 简介 go语言支持并发,只需要使用go关键字开启goroutine即可。 goroutine是轻量级现场,goroutine由运行时进行调度管理 package main import "fmt" import "time" func say(s string) { for i := 0; i < 5; i++ { time.Sleep(100 * time.Millisecond) fmt.Println(s) } } func main() { go say("world") say("hello") } 通道channel 通道channel是用来传递数据的一个数据结构 通过可用于goroutine之间通过传递一个指...阅读全文

博文 2019-02-08 18:34:43 笑吧小鸟

【GO学习二】包,函数,常量和变量

主要介绍go语言的基本元素,包引入,变量,函数声明 引入包: go语言通过import引入包最佳实践:import顺序:系统package,第三方package,程序自己的package package main import ( "fmt" "math" ) func main() { fmt.Printf("math test number %g ",math.Sqrt(7)) } # 运行输出 cuixiaozhuai:main cuixiaohuan$ ./hello math test number 2.6457513110645907 函数定义 go中函数可以没有参数或者接受多个参数 基本格式 func xx(AA type,aa) Type { } package main i...阅读全文

博文 2017-10-12 13:34:48 崔小拽

Golang通道的无阻塞读写的方法示例

无论是无缓冲通道,还是有缓冲通道,都存在阻塞的情况,但其实有些情况,我们并不想读数据或者写数据阻塞在那里,有1个唯一的解决办法,那就是使用select结构。这篇文章会介绍,哪些情况会存在阻塞,以及如何使用select解决阻塞。阻塞场景阻塞场景共4个,有缓存和无缓冲各2个。无缓冲通道的特点是,发送的数据需要被读取后,发送才会完成,它阻塞场景:通道中无数据,但执行读通道。通道中无数据,向通道写数据,但无协程读取。// 场景1func ReadNoDataFromNoBufCh() {noBufCh := make(chan int)<-noBufChfmt.Println("read from no buffer channel success")// Output:// fatal error...阅读全文

博文 2018-11-05 18:34:46 胡一巴

golang 基础(26)select

golang_real.jpg select是Go中的一个控制结构,类似于switch语句,用于处理异步IO操作。select会监听case语句中channel的读写操作,当case中channel读写操作为非阻塞状态(即能读写)时,将会触发相应的动作。 func main(){ c1 := make(chan string) c2 := make(chan string) go func(){ time.Sleep(1 * time.Second) c1 <- "one" }() go func(){ time.Sleep( 2 * time.Second) c2 <- "two" }() for i:= 0; i < 2; i++ { select { case msg1 := <- c...阅读全文

Golang与Mysql

mysql数据可使用 package database import ( "database/sql" _ "github.com/go-sql-driver/mysql" "log" ) var SqlDB *sql.DB func init() { var err error SqlDB, err = sql.Open("mysql", "root:diumxcom@tcp(localhost:3306)/students") if err != nil { log.Fatal(err.Error()) } err = SqlDB.Ping() if err != nil { log.Fatal(err.Error()) } ...阅读全文

博文 2019-10-13 23:02:46 aside section ._1OhGeD

golang数据类型

关于golang基本类型的几篇文章 go语言类型 go语言基本数据类型 go语言的内置类型和内置函数以及自定义类型 golang基本类型介绍 Go语言基本数据类型和内置函数 源码在/src/builtin/builtin.go中,内容如下 package builtin // bool is the set of boolean values, true and false. type bool bool // true and false are the two untyped boolean values. const ( true = 0 == 0 // Untyped bool. false = 0 != 0 // Untyped bool. ) // uint8 is the se...阅读全文

博文 2019-03-08 11:32:06 Charliewolf

Go语言基础 - 基本数据类型

一、基本数据类型 1. 整型 uint8也就是byte型 无符号整型 取值范围 uint8 0 到 255 uint16 0 到 65535 uint32 0 到 4294967295 uint64 0 到 18446744073709551615 int16对应C语言中的short型,int64对应C语言中的long型 有符号整型 取值范围 int8 -128 到 127 int16 -32768 到 32767 int32 -2147483648 到 2147483647 int64 -9223372036854775808 到 9223372036854775807 a. 特殊整型 在使用int和uint类型时,不能假定它是32位或64位的整型,而是考虑int和uint可能在不同平台上...阅读全文

博文 2020-04-08 22:32:41 不留烦

Golang之旅3-基本数据类型

基本数据类型 GO语言中的数据类型十分丰富,包含:整型、浮点型、布尔型,还有数组、切片、结构体、函数、map、通道chanel等 go基本数据类型 整型 无符号整型 uint8:,0到255 uint16:,0到65535 uint32 uint64 有符号整型 int8:-128到127 int16:-32768到32767 int32 int64 其他数字类型 uint:32/64位系统上就是uint32/uint64 int:32/64位系统上就是int32/int64 uintptr:无符号整型,用于存放一个指针 注意: 在使用int和 uint类型时,不能假定它是32位或64位的整型,而是考虑int和uint可能在不同平台上的差异。 获取对象的长度的内建len()函数返回的长度可以...阅读全文

博文 2019-10-19 01:32:43 aside section ._1OhGeD

QuickBI助你成为分析师——搞定数据源

摘要: QuickBI支持多种数据源连接,添加数据源是数据分析展示的第一步,下面来详细介绍一下产品数据源支持情况! Quick BI是一个基于云计算的灵活的轻量级的自助BI工具服务平台,提供海量数据即时分析 ,拖拽式操作、丰富的可视化效果,帮助您轻松自如地完成数据分析、业务数据洞察 。它不仅是业务人员看数据的工具 ,更是数据化运营的助推器,解决大数据应用“最后一公里”的问题,实现“人人都是数据分析师”。 产品的核心流程如下图所示, ![图片描述](http://img.blog.csdn.net/20180328113309600?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveXVucWlpbnNpZ2h0/font/5a6L5...阅读全文

Go基础系列:channel入门

Go channel系列: channel入门 为select设置超时时间 nil channel用法示例 双层channel用法示例 指定goroutine的执行顺序 channel基础 channel用于goroutines之间的通信,让它们之间可以进行数据交换。像管道一样,一个goroutine_A向channel_A中放数据,另一个goroutine_B从channel_A取数据。 channel是指针类型的数据类型,通过make来分配内存。例如: ch := make(chan int) 这表示创建一个channel,这个channel中只能保存int类型的数据。也就是说一端只能向此channel中放进int类型的值,另一端只能从此channel中读出int类型的值。 需要注意,c...阅读全文

博文 2018-11-23 09:12:08 f-ck-need-u

golang-select调度器

select 方式进行调度 使用场景: 比如有多个通道,但我打算是哪一个通道先给我数据,我就先执行谁 这个select 可以是并行执行 channel管道 package main import ( "fmt" "math/rand" "time" ) /** select 方式进行调度 使用场景:比如有多个通道,但我打算是哪一个通道先给我数据,我就先执行谁 这个select 可以是并行执行 channel管道 */ // 发送值 func generator() chan int { out := make(chan int) go func() { i := 0 for { // 随机睡眠, 1500毫秒以内 time.Sleep(time.Duration(rand.Intn(1500...阅读全文

博文 2019-12-18 12:32:43 爱吃豆包

Golang 数据结构

https://research.swtch.com/godataWhen explaining Go to new programmers, I've found that it often helps to explain what Go values look like in memory, to build the right intuition about which operations are expensive and which are not. This post is about basic types, structs, arrays, and slices.Basic typesLet's start with some simple examples: The v...阅读全文

博文 2019-03-27 11:34:41 贺大伟

记一次Kafka集群线上扩容

微信公众号「后端进阶」,专注后端技术分享:Java、Golang、WEB框架、分布式中间件、服务治理等等。 前段时间收到某个 Kafka 集群的生产客户端反馈发送消息耗时很高,于是花了一段时间去排查这个问题,最后该集群进行扩容,由于某些主题的当前数据量实在太大,在对这些主题迁移过程中话费了很长一段时间,不过这个过程还算顺利,因为在迁移过程中也做足了各方面的调研,包括分区重平衡过程中对客户端的影响,以及对整个集群的性能影响等,特此将这个过程总结一下,也为双十一打了一剂强心剂。 排查问题与分析 接到用户的反馈后,我用脚本测试了一遍,并对比了另外一个正常的 Kafka 集群,发现耗时确实很高,接下来 经过排查,发现有客户端在频繁断开与集群节点的连接,发现日志频繁打印如下内容: Attempting...阅读全文

博文 2019-10-27 14:32:44 aside section._1OhGeD

go基本类型使用细节

整型的使用细节 Golang 各整数类型分:有符号和无符号 ,int uint的大小和系统有关。 Golang 的整型默认声明为int型 var n1 = 100 fmt.Printf('n1的数据类型%T',n1) 如何在程序查看某个变量的字节大小和数据类型(使用较多) var n2 int64 = 10 fmt.Printf('n2的 数据类型 %T n2占用的字节数是 %d',n2,unsaft.Sizeof(n2)) 浮点型使用细节 Golang 浮点类型有固定的范围和字段长度,不受具体OS(操作系统)的影响。 Golang 的浮点型默认声明为float64 类型。 浮点型常量有两种表示形式 十进制数形式:如:5.12 .512 (必须有小数点) 科学计数法形式:如:5.1234e2...阅读全文

博文 2019-01-03 18:34:44 StevenQin

QuickBI助你成为分析师-数据建模(一)

摘要: 创建数据集是报表分析的基础,合理建模可以达到事半功倍的效果哦! 产品核心流程第二步为创建数据集,进行数据建模,如果说数据是海,那么创建数据集并合理建模就是划船的浆,有了浆才能在数据的海洋里畅游。目前创建数据集有两种方式:(1)数据表直接创建数据集 (2)通过自定义sql创建数据集,以实现初步建模。 **创建数据集:** (1)直接新建数据集: 如下图,在数据源列表页,找到目标表,点击创建数据集按钮并选择存放文件夹 即可新建,新建后自动进入数据集界面。 ![图片描述](http://img.blog.csdn.net/20180409101738943?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveXVucWl...阅读全文

NSQ 落地磁盘的消息队列源码解读

本文原地址 https://blog.lpflpf.cn/passages/nsqd-study-2/ NSQ 消息队列实现消息落地使用的是 FIFO 队列。实现为 diskqueue , 使用包 github.com/nsqio/go-diskqueue ,本文主要对 diskqueue的实现做介绍。本文代码来自于 github.com/nsqio/go-diskqueue 功能定位 在NSQ 中, diskqueue 是一个实例化的 BackendQueue, 用于保存在内存放不下的消息 。是一个比较经典的队列的实现,值得学习。 实现的功能是一个FIFO的队列,实现如下功能: 支持消息的插入、清空、删除、关闭操作 可以返回队列的长度(写和读偏移的距离) 具有读写功能,FIFO 的队列 d...阅读全文

博文 2019-09-11 11:32:49 _____

Golang学习笔记-1.4 数据类型

本文系第四篇Golang语言学习教程 在Go语言中,数据类型用于声明函数和变量。 Go语言按类别有以下几种数据分类 序号 类型 描述 1 bool bool类型表示一个布尔值,值为true或false 2 数字类型 整型int和浮点型float32、float64.Go支持整型和浮点型数字,并且原生支持复数。 3 字符串类型 一串固定长度字符连接起来的序列,Go语言中字符串由单个字节连接起来,使用UTF-8编码标识Unicode文本。 4 派生类型 包括:(a) 指针类型(Pointer) (b) 数组类型(c) 结构化类型(struct)(d) Channel 类型(e) 函数类型(f) 切片类型(g) 接口类型(interface)(h) Map 类型 bool bool类型表示一个布尔...阅读全文

博文 2018-07-05 21:35:02 xunk1900

golang基础之数据类型

一、概述 在golang中会涉及变量(var声明)、常量(const)、枚举(golang从语法上没有enum的定义,可以使用iota来实现)、基本类型、引用类型(slice、map、channel)、类型转换、自定义类型、未命名类型等内容,不过很多是和大家熟知的Java、C#中概念差不多,只是具体存在一些差异,不过需要记住一点golang是静态类型语言,其对应的变量总有固定的数据类型,其类型也决定变量内存的长度和储存格式,也意味着只能更改其变量值而不能变更其类型。 数据类型 二、具体实例 package main import ( "reflect" "unsafe" ) func main() { type data int var d data = 10 // var x int = ...阅读全文

博文 2019-03-12 12:34:40 神奇的考拉

golang基础(2)基础类型

基本类型 在开始之前,先补充一下上一次分享的内容,是不可以重复为变量 foo 初始化赋值的。 foo := 'hello' foo := "world" 我是一名 web 前端出身的 developer,接触最早也是接触最多还是 javascript ,所以学习任何其他新的语言我都喜欢给 javascript 对比地来学。在 javascript 数据类型中对于数值只有 number 类型也就是 float 类型,而在 go 语言却进行相当细致的划分数值类型,应该是为了效率,节省内存空间吧。更准确地为变量分配内存空间。 int8 int16 int32 int64 float32 float64 关于这些数据类型,我就不做过多解释 int 代表整数型,后面 8 代表的占内存大小也是就是这个数...阅读全文

语言的分类(静动态/强弱类型/显隐式)

强弱类型语言: 强类型:类型是定义好的,无法改变它的类型了,但是向C语言,虽然定义了一个short,还是可以当成char来用的,因为可以直接操作内存。 弱类型:类型之间可以自由转换 弱类型语言,类型检查更不严格,如偏向于容忍隐式类型转换。譬如说C语言的int可以变成double。 这样的结果是:容易产生forbidden behaviours,所以C是弱类型的。 显式隐式 在语法层面明确数据类型与否,隐式的比如C++ 的 auto 关键字,JS/Go的var,还有python。 动态静态类型语言: 静态类型:编译时就确定数据类型,java/C/C++/golang 动态类型:运行时确定数据类型 python/PHP 不知道类型,光看变量名是不知道数据到底是int还是char类型,后期换个人维...阅读全文

博文 2020-05-18 11:33:08 小幸运Q

【Go学习笔记】7、切片slice

切片slice 其本身并不是数组,他指向底层的数组 作为变长数组的替代方案,可以关联底层数组的局部或全部 为引用类型 可以直接创建或从底层数组获取生成 使用len()获取元素个数,cap()获取容量 一般使用make()创建 如果多个slice指向相同底层数组,其中一个的值改变会影响全部 make([]T,len,cap) 其中cap可以省略,则和len值相同 len表示存数的元素个数,cap表示容量 1234func main(){ s1 := make([]int, 10, 10) fmt.Println(s1)} Reslice Reslice 时索引以被slice的切片为准 索引不可以超过被slice的切片的容量cap()值 索引越界不会导致底层数组的重新分配而是引发错误 Appen...阅读全文

博文 2017-05-30 05:09:53 HundredLee

可视化Go内存管理

本文翻译自《Visualizing memory management in Golang》。 “内存管理”系列的一部分 在这个由多部分组成的系列文章中,我旨在揭示内存管理背后的概念,并对某些现代编程语言的内存管理机制做更深入的探究。我希望该系列文章可以使您对这些语言在内存管理方面正在发生的事情能有所了解。 在本章中,我们将研究Go编程语言(Golang)的内存管理。和C/C++、Rust等一样,Go是一种静态类型的编译型语言。因此,Go不需要VM,Go应用程序二进制文件中嵌入了一个小型运行时(Go runtime),可以处理诸如垃圾收集(GC),调度和并发之类的语言功能。 如果您还没有阅读本系列的第一部分,请先阅读它,因为在那篇文章中我解释了栈(stack)和堆(heap)内存之间的区别,...阅读全文