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

玩转redis-简单消息队列

使用go语言基于redis写了一个简单的消息队列 源码地址 使用demo redis的 list 非常的灵活,可以从左边或者右边添加元素,当然也以从任意一头读取数据 添加数据和获取数据的操作也是非常简单的 LPUSH 从左边插入数据 RPUSH 大右边插入数据 LPOP 从左边取出一个数据 RPOP 从右边取出一个数据 127.0.0.1:6379> LPUSH list1 a (integer) 1 127.0.0.1:6379> RPUSH list1 b (integer) 2 127.0.0.1:6379> LPOP list1 "a" 127.0.0.1:6379> RPOP list1 "b" 复制代码或者使用 BLPOP BRPOP 来读取数据,不同之处是取数据时,如果没有数据...阅读全文

博文 2020-04-08 14:37:48 compiler

通过例子学习 Go 和 Rust ---- 闭包

闭包简而言之,是一段有状态的代码。咱试着用闭包来做一个计数器,每次调用,闭包的状态就加1. Go func intSeq() func() int { i := 0 return func() int { i++ return i } } func main() { nextInt := intSeq() fmt.PrintLn(nextInt()) fmt.PrintLn(nextInt()) fmt.PrintLn(nextInt()) } 1 2 3 Rust 由于编译时我们无法知道闭包的体积,所以用一个Box把它套起来。另外,闭包的具体类型是不可描述的,只能用dyn关键字来通过Trait来描述。 fn main() { fn int_seq() -> Box阅读全文

博文 2020-03-03 15:32:56 Tericoder

第九天:golang学习笔记之bufio

★bufio | bufio 包实现了带缓存的I/O操作. golang界里我老八,今天给大家看个bufio。bufio包实现了带缓存的I/O,把io.Reader或io.Writer封装成更牛逼的对象 bufio bufio包内没有接口定义,只有结构体: 1. bufio.Reader 内部全私有变量,通过如下方法创建: - NewReader(rd io.Reader) *Reader:调用NewReaderSize创建defaultBufSize大小(4096B)的bufReader - NewReaderSize(rd io.Reader, size int) *Reader 结构体定义如下: type Reader struct { buf []byte rd io.Reader ...阅读全文

博文 2019-12-27 16:32:43 Macmillan_

GO的第六天,复合数据类型---Map、结构体

Map 一个map就是一个哈希表的引用。map的语法: ages := make(map[string]int) ages := map[string]int{ "alice": 31, "charlie": 34 } // 修改 ages["alice"] = 43 fmt.Println(ages["alice"]) // 43 // 删除 delete(ages, "alice") 所有这些操作是安全的,即使这些元素不在map中也没有关系;如果一个查找失败将返回value类型对应的零值,例如,即使map中不存在“bob”下面的代码也可以正常工作,因为ages["bob"]失败时将返回0。 ages["bob"] = ages["bob"] + 1 但是map中的元素并不是一个变量,因此...阅读全文

go 开发小结

数据互相转换 int 转string string := strconv.Itoa(int) string到int int,err := strconv.Atoi(string) string到int64 int64, err := strconv.ParseInt(string, 10, 64) int64到string string := strconv.FormatInt(int64,10) map 到json字符串 m := map[string]string{} mjson,_ :=json.Marshal(m) mString :=string(mjson) json到struct 如果是单层可以直接用interface转为map jsonStr = `{}` var jsonS...阅读全文

博文 2020-05-02 11:33:40 Stevenzwzhai

老虞学GoLang笔记-常量

开发十年,就只剩下这套Java开发体系了 >>> 常量 常量和C#中的概念相同,在编译期被创建。因为在编译期必须确定其值,因此在声明常量时有一些限制。 其类型必须是:数值、字符串、布尔值 表达式必须是在编译期可计算的 声明常量的同时必须进行初始化,其值不可再次修改 Doc http://golang.org/doc/go_spec.html#Constants http://golang.org/doc/go_spec.html#Constant_expressions http://golang.org/doc/go_spec.html#Constant_declarations http://golang.org//doc/go_spec.html#Iota 语法 const关键字用于声...阅读全文

一次UDP通迅的问题排查

通迅模型 (A-->B-->A):A通过UDP发送数据给B(A可以是指定目的地,也可以是广播发送消息给B),B收到消息后根据来源地址和端口向A回发消息,就这么简单的一个通迅过程。 关于golang udp方面的讲解可以参考下https://colobu.com/2016/10/19/Go-UDP-Programming/这篇文件,讲的挺详细。什么时候udp socket是connected状态,什么时候是unconnected状态,什么时候用read/write,什么时候用readFromUDP/writeToUDP都有说明,写的挺好。 来段code demo吧 服务端: func main() { // 创建监听 sock, err := net.ListenUDP("udp4", &ne...阅读全文

Nebula Graph 的数据模型和系统架构设计

本篇主要介绍 Nebula Graph 的数据模型和系统架构设计。 有向属性图 DirectedPropertyGraph Nebula Graph 采用易理解的有向属性图来建模,也就是说,在逻辑上,图由两种图元素构成:顶点和边。 image.png 顶点 Vertex 在 Nebula Graph 中顶点由标签 tag 和对应 tag 的属性组构成, tag 代表顶点的类型,属性组代表 tag 拥有的一种或多种属性。一个顶点必须至少有一种类型,即标签,也可以有多种类型。每种标签有一组相对应的属性,我们称之为 schema 。 如上图所示,有两种 tag 顶点:player 和 team。player 的 schema 有三种属性 ID (vid),Name (sting)和 Age (in...阅读全文

从零学习 Go 语言(25):详解信道/通道

![](http://image.iswbm.com/20200607145423.png) 在线博客:http://golang.iswbm.com/ Github:https://github.com/iswbm/GolangCodingTime --- Go 语言之所以开始流行起来,很大一部分原因是因为它自带的并发机制。 如果说 goroutine 是 Go语言程序的并发体的话,那么 channel(信道) 就是 它们之间的通信机制。channel,是一个可以让一个 goroutine 与另一个 goroutine 传输信息的通道,我把他叫做信道,也有人将其翻译成通道,二者都是一个概念。 信道,就是一个管道,连接多个goroutine程序 ,它是一种队列式的数据结构,遵循先入先出的规则...阅读全文

Go教程第四篇:数据类型

第四篇:数据类型 这篇文章是我们的《Golang系列教程》的第四篇文章。 下面是Go语言中的基本数据类型: bool Numberic Types int8, int16,int32,int64,int uint8,uint16,uint64,uint float32,float64 complex64,complex128 byte rune bool 布尔类型代表了一个布尔值,它要么是true要么是false。 package main import "fmt" func main() { a := true b := false fmt.Println("a:", a, "b:", b) c := a && b fmt.Println("c:", c) d := a || b fmt....阅读全文

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基本数据类型

Go语言中给我们提供的所有基本数据类型,我们应该理解如何在自己的Go程序中使用这些类型。 数据类型Go语言将数据类型分为四类:Basic Types(基础类型)、Aggregate Types (复合类型)、Reference Types (引用类型)、Interface Types (接口类型)。 基础类型包括:数字、字符串和布尔型。布尔型的值只可以是常量 true 或者 false。数字类型支持整型和浮点型,并且支持复数,其中位的运算采用补码。 复合数据类型包括:数组、结构体是通过组合简单类型,来表达更加复杂的数据结构。 引用类型包括:指针、slice、map、 channel、接口和函数类型。当声明引用类型的变量时,创建的变量被称作标头(header)值。从技术细节上说,字符串也是一种...阅读全文

博文 2020-02-25 15:32:45 公子邪o

从新冠疫情出发,漫谈 Gossip 协议

众所周知周知,疫情仍然在全球各地肆虐。据最新数据统计,截至北京时间 2020-05-28,全球累计确诊 5698703 例,累计死亡 352282 例,累计治愈 2415237 例。 从上面的统计数据,我们可以看出,新冠病毒在人与人之间的传播是极其高效的,且影响范围广。如果我们把「新冠病毒」想象成一小段数据,将「人与人之间传播」想象成数据交换,那么,我们可以得出结论,在不考虑免疫系统和人为干预等一些因素,经过反复迭代,数据(新冠病毒)可以被发送(感染)到每个节点(人)上。 这个就是今天要介绍的 Gossip 协议,该协议早在 1987 年就被发表在 ACM 上的论文《Epidemic Algorithms for Replicated Database Maintenance》中。当时主要用...阅读全文

博文 2020-06-17 17:40:52 又拍云

老虞学GoLang笔记-常量

开发十年,就只剩下这套Java开发体系了 >>> 常量 常量和C#中的概念相同,在编译期被创建。因为在编译期必须确定其值,因此在声明常量时有一些限制。 其类型必须是:数值、字符串、布尔值 表达式必须是在编译期可计算的 声明常量的同时必须进行初始化,其值不可再次修改 Doc http://golang.org/doc/go_spec.html#Constants http://golang.org/doc/go_spec.html#Constant_expressions http://golang.org/doc/go_spec.html#Constant_declarations http://golang.org//doc/go_spec.html#Iota 语法 const关键字用于声...阅读全文

区块链和数据库

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 区块链技术是一种不依赖第三方、通过自身分散式节点进行网路数据的存储、验证、传递和交流的一种技术方案。因此,有人从金融会计的角度,把区块链技术看成是一种分散式开放性去中心化的大型网路记账薄,任何人任何时间都可以採用相同的技术标准加入自己的信息,延伸区块链,持续满足各种需求带来的数据录入需要。 通俗一点说,区块链技术就指一种全民参与记账的方式。所有的系统背后都有一个资料库,你可以把资料库看成是就是一个大账本。那麽谁来记这个账本就变得很重要。目前就是谁的系统谁来记账,微信的账本就是腾讯在记,淘宝的账本就是阿裡在记。但现在区块链系统中,系统中的每个人都可以有机会参与记账。在一定时间段内如果有任何数据变化,系统中每个人都可...阅读全文

基于 MySQL Binlog 实现可配置的异构数据同步

随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经 不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们在业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 Part.1 现有方案及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张MySQL 表中,这张中间表对应了业务需要的Elasticsearch 索引,每一列对应索引中的一个Mapping 字段。通过脚本以 Crontab 的方式,读取 MySQL 中间表中 UTime 大于上一次读取时间的所有数据,即该段时间内的增量,写入Elasticsearch。 所以,一旦业务逻辑中有相...阅读全文

博文 2020-04-17 07:32:49 Minna_1122

【他山之石】大话密码学·默克尔树·章三 扬前帆

前帆(Jib):主桅杆前面使用的帆 基本定义 Merkle Tree 是由计算机科学家 Ralph Merkle 在很多年前提出的,并以他本人的名字来命名,中文翻译过来叫默克尔树,也叫哈希树。 哈希树 主要用途 Merkle Tree 常用来做完整性校验的,所谓的完整性校验,就是检查一下数据有没有损坏或者被恶意篡改。 Merkle Tree 的最大的应用场合就是在点对点网络上,早期的 BT ,电驴,快播等各种下载器,以及目前普遍使用的 Git 版本控制系统,NMP包管理,GoLang 包管理,IPFS 协议以及比特币以太坊等等项目都用到了它。例子太多了……欢迎补充…… Merkle Tree Merkle Tree 如果直接去看定义,会看到一张比较复杂的图,可能会把你一下子吓到,然后就不想学...阅读全文

2019-08-07

2019-08-07MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。mongodb特点它的特点是高性能、易部署、易使用,存储数据非常方便。主要功能特性有:*面向集合存储,易存储对象类型的数据。模式自由。*支持动态查询。*支持完全索引,包含内部对象。*支持查询。*支持复制和故障恢复。*使用高效的二进制数据存储,包括大型对象(如视频等)。*自动处理碎片,以支持云计算层次的扩展性。*支持 Gol...阅读全文

博文 2019-08-08 10:33:16 Overonenewsi

GoLang 学习笔记 - 基本数据类型

GoLang 的数据类型   在 GoLang 中,数据类型用于声明函数和变量。数据类型的出现是为了把数据分成所需内存大小不同的数据,编程的时候需要用大数据的时候才需要申请大内存,就可以充分利用内存。   GoLang 有以下几种数据类型: 类型 描述 布尔 基本数据类型,只有两个值,并且只可以是常量 —— true 或者 false。 数值 基本数据类型,GoLang 支持整型、浮点型数字,并且支持复数,其中位的运算采用补码。 字符串 基本数据类型,GoLang 中 string 类型被官方定为基本数据类型,是一串由单个字节连接起来的字符序列。GoLang 字符串的字节使用 UTF-8 编码标识 Unicode 文本。 派生 派生类型包括很多种,其中有:指针、数组、结构体、管道、切片、接口...阅读全文

博文 2019-07-20 20:32:39 凉丶心园

golang Map与sync.Map

内置的map package main import ( "strconv" "fmt" "sync" ) var map_obj = make(map[string]int) // 应对高并发时不安全 // 定义设置map数据类型的方法 func set(key string, val int) { map_obj[key] = val } // 定义读取map数据类型的方法 func get(key string) int { return map_obj[key] } func main() { //map_obj := make(map[string]int, 6) //map_obj["name"] = 666 //var map_obj map[string]int //fmt....阅读全文

博文 2020-04-17 23:32:46 小麦客

图解kubernetes中api聚合机制的实现

kubernetes中apiserver的设计无疑是复杂的,其自身内部就包含了三种角色的api服务,今天我们一起来臆测下其内部的设计,搞明白aggregator、apiserver、apiExtensionsServer(crd server)的设计精要 1.从web服务到web网关到CRD apiserver还是蛮复杂的,今天我们只讨论其kube-aggregator/apiserver/apiextensions三者架构上的设计,而不关注诸如请求认证、准入控制、权限等等 1.1 最基础的REST服务 一个最基础的Rest服务通常会包括一个resource资源和一组HTTP请求的方法, 在kubernetes中被称为一个REST,其内部还内嵌了一个Store(可以理解为继承),其提供了针...阅读全文

博文 2020-03-04 18:35:26 8小时_2020

解析DataWorks数据集成中测试连通性失败问题

摘要: 大家好,这里和大家分享的是DataWorks数据集成中测试连通性失败的排查思路。与测试连通性成功与否的相关因素有很多,本文按照多个因素逐步排查,最终解决问题,希望大家以后再遇到此类问题,请参考此文,相信能够顺利解决您的问题。 一、问题现象 此案例中,DataWorks项目位于华东2,RDS Mysql数据源位于华东1(VPC网络),使用DataWorks进行数据同步之前,首先需要建立数据源,但在建立数据源RDS Mysql的配置页面,“测试连通性”失败,即数据源并没有连通。 1 二、问题处理过程 (1)首先,应该判断该数据源是否支持“测试连通性” 遇到测试连通性问题,首先应该判断该数据源是否支持“测试连通性”,请大家参考《各数据源测试连通性支持情况》。...阅读全文

HyperLogLog 算法在监控场景中的运用

HyperLogLog 算法在监控场景中的运用 背景介绍 OpsMind 低代码开发平台监控模块,为了支撑B站众多监控数据的管理场景,研发人员在分布式层做了众多优化工作。为了更好的掌握每个 metric 自身的空间占用以及各个存储节点的时序分布情况,需要对每个指标的时序数目(基数)有一个大致的预估(允许存在误差),以便于 OpsMind 系统能更加合理的均衡各个存储节点的负载。 为何选用 HyperLogLog OpsMind 系统指标的形式与 prometheus 完全兼容(在此 prometheus 基础上做了一些拓展),一个监控指标(metric)的时序数,可以看做是该指标所有 labels 的组合(对 labels 求 fingerprint)数目。在对每个指标时序集合进行统计的过程...阅读全文

博文 2020-03-16 17:38:14 啊哟喂_

至联云讲解《IPFS生态最新进展及分布式存储未来市场潜力》

IPFS作为一种新型的储存技术,致力于改变传统存储的提供与使用方式,是存储应用普及的重要突破口。目前客户遍及中国8个省份,三年内将遍及东南亚,走出中国。公司立足中国安徽,服务全球存储市场 IPFS生态近期有比较大的发展,比如内容分享、社交网络、身份服务、区块链应用、金融电子化等等各个方面。非常重要的是,目前有比较多的浏览器开始支持IPFS,包括Firefox, Chrome, Brave, Opera 等。IPFS 0.5.0改进巨大IPFS 0.5版是IPFS 到目前为止最大的一次更新。这次更新主要在IPFS的效率、安全和更具弹性方面得到巨大提升。效率的提升是全方位的,重要指标包括:2倍存储速度提升:现在IPFS存储文件的速度是普通文件系统的2.5倍速度;2.5倍广播速度提升:一千个节点测...阅读全文

博文 2020-05-28 21:32:56 雨中的泡面

8. Go 语言流程控制:if-else

Hi,大家好,我是明哥。 在自己学习 Golang 的这段时间里,我写了详细的学习笔记放在我的个人微信公众号 《Go编程时光》,对于 Go 语言,我也算是个初学者,因此写的东西应该会比较适合刚接触的同学,如果你也是刚学习 Go 语言,不防关注一下,一起学习,一起成长。 我的在线博客:http://golang.iswbm.com我的 Github:github.com/iswbm/GolangCodingTime 1. 条件语句模型 Go里的流程控制方法还是挺丰富,整理了下有如下这么多种: if - else 条件语句 switch - case 选择语句 for - range 循环语句 goto 无条件跳转语句 defer 延迟执行 今天先来讲讲 if-else 条件语句 Go 里的条件...阅读全文

博文 2020-04-30 08:32:41 Python编程时光

Go语言的Channel

什么是Channel Channel 是 Go 中为 goroutine 提供的一种通信机制,channel 是有类型的,而且是有方向的,可以把 channel 类比成 unix 中的 pipe。 channel的使用 channel创建 channel 字面意义是 “通道”,类似于 Linux 中的管道。声明 channel 的语法如下: chan T // 可以接收和发送类型为 T 的数据 chan<- float64 // 只可以用来发送 float64 类型的数据 <-chan int // 只可以用来接收 int 类型的数据 复制代码使用make初始化Channel,并且可以设置容量: make(chan int, 100) 复制代码因为 channel 是一个引用类型,所以在它被...阅读全文

博文 2020-06-07 12:34:22 隔壁小王_

Golang实现UDP Server

Server端1、net.ListenUDP() 监听UDP服务2、net.UDPConn.ReadFromUDP() 循环读取数据 3、net.UDPConn.WriteToUDP() 写数据package main import ( "fmt" "log" "net" ) func main() { // 监听UDP服务 udpConn,err := net.ListenUDP("udp",&net.UDPAddr{ IP: net.IPv4(0,0,0,0), Port: 9090, }) if err != nil{ log.Fatal("Listen failed,",err) return } // 循环读取消息 for { var data [1024]byte n,addr,...阅读全文

博文 2020-06-08 00:33:47 筑梦攻城狮

go 字符串

什么是字符串? 定义 字符串是一个不可改变的字节序列。 字符串的定义 package main import "fmt" import "strings" import "strconv" func stringtest() { var name string = "Cloud natic cloud" fmt.Println(name) 输出 Cloud natic cloud // 常用方法 // 1、转译 字符 \n \t address := "中国\n上海" fmt.Println(address) 输出 中国 上海 // 2、反引号,以原生形式输出,包括特殊字符,防止注入*** var address2 string = ` 上海迪士尼度假乐园\n 浦东 上海 静安寺 上海\n...阅读全文

博文 2020-01-08 23:33:13 水滴石川1

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

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

mvc

1、MVC这个阶段主要是快速实现产品,没考虑其他的,设计之初划分多个app,app内高类聚,app之间低耦合,DB表设计好了之后,实现view层功能需求,利用Django来快速实现功能,后端有许多预留设计,避免产品逻辑的变更带来整个表结构的变动,架构如下图; MVC架构nginx是负载均衡,通过权重法,把请求发送到多个Django服务(其实中间还有一个uwsgi),如果是静态请求,nginx直接返回给客户端,如果是其他请求,通过uwsgi传给Django,Django拿到请求,处理响应请求。耗时大的需要异步的,我们用celery处理,使用mysql作为数据库,redis作为缓存,加快请求的响应,减轻mysql负担,同时还有实时消息通知的需要使用了Nginx Push Module。问题以及处...阅读全文

博文 2019-12-17 18:32:49 yustyal

go编程学习

1.go 项目目录结构2.go build生成二进制文件go build hello.gogo build -o hellotest hello.go #可以指定二进制文件名3.go run 以脚本形式运行go run hello.go 4.定义变量方法package mainimport "fmt"//全局声明var n1 = 100var n2 = 200var name = "xiaohuihui" //一次性声明var (n3 = 300n4 = 900name2 = "mary")func main(){ var i int fmt.Println("i=",i) //默认值0 var num = 10.11 fmt.Println(num) name := "tom" //等价于...阅读全文

博文 2020-03-15 10:33:16 小白的希望

6. Go 语言数据类型:字典与布尔类型

Hi,大家好。 我是明哥,在自己学习 Golang 的这段时间里,我写了详细的学习笔记放在我的个人微信公众号 《Go编程时光》,对于 Go 语言,我也算是个初学者,因此写的东西应该会比较适合刚接触的同学,如果你也是刚学习 Go 语言,不防关注一下,一起学习,一起成长。 我的在线博客:http://golang.iswbm.com我的 Github:github.com/iswbm/GolangCodingTime 1. 字典 字典(Map 类型),是由若干个 key:value 这样的键值对映射组合在一起的数据结构。 它是哈希表的一个实现,这就要求它的每个映射里的key,都是唯一的,可以使用 == 和 != 来进行判等操作,换句话说就是key必须是可哈希的。 什么叫可哈希的?简单来说,一个不...阅读全文

博文 2020-04-28 08:32:43 Python编程时光

数据结构和算法(Golang实现)(27)查找算法-二叉查找树

二叉查找树 二叉查找树,又叫二叉排序树,二叉搜索树,是一种有特定规则的二叉树,定义如下: 它是一颗二叉树,或者是空树。 左子树所有节点的值都小于它的根节点,右子树所有节点的值都大于它的根节点。 左右子树也是一颗二叉查找树。 二叉查找树的特点是,一直往左儿子往下找左儿子,可以找到最小的元素,一直往右儿子找右儿子,可以找到最大的元素。 看起来,我们可以用它来实现元素排序,可是我们却使用了二叉堆来实现了堆排序,因为二叉查找树不保证是一个平衡的二叉树,最坏情况下二叉查找树会退化成一个链表,也就是所有节点都没有左子树或者没有右子树,树的层次太深导致排序性能太差。 使用二分查找,可以很快在一颗二叉查找树中找到我们需要的值。 我们来分析二叉查找树添加,删除,查找元素的方法。 一、添加元素 以下是一个二叉查...阅读全文

博文 2020-04-07 16:32:51 陈星星

14. Go 语言中的类型断言是什么?

Hi,大家好,我是明哥。 在自己学习 Golang 的这段时间里,我写了详细的学习笔记放在我的个人微信公众号 《Go编程时光》,对于 Go 语言,我也算是个初学者,因此写的东西应该会比较适合刚接触的同学,如果你也是刚学习 Go 语言,不防关注一下,一起学习,一起成长。 我的在线博客:http://golang.iswbm.com我的 Github:github.com/iswbm/GolangCodingTime Type Assertion Type Assertion(中文名叫:类型断言),通过它可以做到以下几件事情 检查 i 是否为 nil 检查 i 存储的值是否为某个类型 具体的使用方式有两种: 第一种: t := i.(T) 这个表达式可以断言一个接口对象(i)里不是 nil,并且...阅读全文

博文 2020-05-11 09:32:44 Python编程时光

simpread-golang select-case 实现机制

本文由 简悦 SimpRead 转码, 原文地址 https://hitzhangjie.github.io/jekyll/update/2018/05/19/golang-select-case%E5%AE%9E%E7%8E%B0%E6%9C%BA%E5%88%B6.html 在介绍 select-case 实现机制之前,最好先了解下 chan 操作规则,明白 goroutine 何时阻塞,又在什么时机被唤醒,这对后续理解 select-case 实现有帮助。所以接下来先介绍 chan 操作规则,然后再介绍 select-case 的实现。 1.1 chan 操作规则 1 当一个 goroutine 要从一个 non-nil & non-closed chan 上接收数据时,gorouti...阅读全文

博文 2019-10-08 18:32:57 aside section ._1OhGeD

Golang学习笔记--Slice

slice切片(Slice)由指针、长度、容量组成,属于引用类型,是一种基于数组的可变长数据类型,与数组array类型关系密切,其中: 1. 指针指向所引用数组的特定元素,该元素为slice的首元素,但不一定是数组的首元素 2.长度(len)为切片的长度 3.容量,从指针指向的数组的位置,到数组最后元素位置的长度 使用append可以向切片添加元素,像slice添加元素,实际上是向slice所引用的数组添加元素,如果对应数组存在空间添加,则直接添加元素,当切片所引用的数组空间已满,无法再添加元素时,则底层,会新建一个匿名数组,并将slice内的元素从旧的数组中copy到新的匿名数组,该匿名数组的大小,为slice的容量*2,slice则指向这个新的匿名数组,同时在数组中添加元素,完成appe...阅读全文

Go实现数据结构--线性表之顺序表

使用golang语言的interface接口类型创建顺序表 package main import "fmt" // 数据结构之线性表--顺序表 type List struct { Len int //线性表长度 Capacity int // 表容量 Prt *[]interface{} // 指向线性表空间指针 } // 初始化 func (l *List) ListInit(capacity int) { l.Capacity = capacity l.Len = 0 m := make([]interface{}, capacity) l.Prt = &m } // 判空 func (l *List) ListIsEmpty() bool { if l.Len == 0 { ret...阅读全文

博文 2020-04-09 21:32:42 阿鸠先生

从零学习 Go 语言(26):通道死锁经典错误案例详解

![](http://image.iswbm.com/20200607145423.png) 在线博客:http://golang.iswbm.com/ Github:https://github.com/iswbm/GolangCodingTime --- ## 错误示例一 看下面这段代码 ```go package main import "fmt" func main() { pipline := make(chan string) pipline <- "hello world" fmt.Println(<-pipline) } ``` 运行会抛出错误,如下 ``` fatal error: all goroutines are asleep - deadlock! ``` 看起来好...阅读全文

博文 2020-07-08 08:47:18 hello_wbm

好程序员大数据培训之掌握Hive的静态分区与动态分区

分区是hive存放数据的一种方式。将列值作为目录来存放数据,就是一个分区。这样查询时使用分区列进行过滤,只需根据列值直接扫描对应目录下的数据,不扫描其他不关心的分区,快速定位,提高查询效率。分动态和静态分区两种: 1.静态分区:若分区的值是确定的,那么称为静态分区。新增分区或者是加载分区数据时,已经指定分区名。 createtableifnotexistsday_part1( uidint, unamestring ) partitionedby(yearint,monthint) rowformatdelimitedfieldsterminatedby'' ; ##加载数据指定分区 loaddatalocalinpath'/root/Desktop/student.txt'intotabl...阅读全文

4. Go 语言数据类型:byte、rune与字符串

Hi,大家好呀,我是一个刚学习 Go 语言不久的新手,在入门 Golang 的这段时间里,我写了很多详细的学习笔记,很适合新手学习噢。这些文章已经发布在我的个人微信公众号里:《Go编程时光》里,今天开始将文章内容搬运到这里,希望有更多的人看到,给更多的人带来帮助,但是这里文章会相对滞后,想获取最新文章,可以前往关注《Go编程时光》,请放心关注,这是一个纯分享的号,完全没有广告。 1. byte 与 rune byte,占用1个节字,就 8 个比特位,所以它和 uint8 类型本质上没有区别,它表示的是 ACSII 表中的一个字符。 如下这段代码,分别定义了 byte 类型和 uint8 类型的变量 a 和 b import "fmt" func main() { var a byte = 6...阅读全文

博文 2020-04-25 20:32:42 Python编程时光

golang fmt格式“占位符”

golang 的fmt 包实现了格式化I/O函数,类似于C的 printf 和 scanf。 # 定义示例类型和变量 type Human struct { Name string } var people = Human{Name:"zhangsan"} 普通占位符 占位符 说明 举例 输出 %v 相应值的默认格式。 Printf("%v", people) {zhangsan}, %+v 打印结构体时,会添加字段名 Printf("%+v", people) {Name:zhangsan} %#v 相应值的Go语法表示 Printf("#v", people) main.Human{Name:"zhangsan"} %T 相应值的类型的Go语法表示 Printf("%T", people...阅读全文

博文 2020-01-04 19:32:50 寒云暮雨

Golang 之context库用法

1. context Golang 中的context 是Go语言在 golang1.7 发布时新增的标准包 目的是增强Golang开发中并发控制技术 简单来讲当一个服务启动时,可能由此服务派生出多个多层级的 goroutine , 但是本质上来讲每个层级的 goroutine 都是平行调度使用,不存在goroutine '父子' 关系 , 当其中一个 goroutine 执行的任务被取消了或者处理超时了,那么其他被启动起来的Goroutine 都应该迅速退出,另外多个多层的Goroutine 想传递请求域的数据该如何处理? 如果单个请求的Goroutine 结构比较简单,或者处理起来也不麻烦,但是如果启动的Goroutine 是多个并且结构层次很深那么光是保障每个Goroutine 正常退...阅读全文

博文 2020-06-24 18:32:42 楚江云

分布式监控系统WGCLOUD,server如何做水平扩容啊

首先,wgcloud从v3.0开始支持server集群模式,master-slave。 下载:http://www.wgstart.com 500个监控主机以下,不用做server集群和负载均衡,server是springboot架构,天然支持高并发。 注意server的配置,config/application.yml #自定义配置参数 base: #登陆账号admin的密码 admindPwd: 111111 #通信token,agent端和此保持一致 wgToken: wgcloud #是否开启公众看板,yes开启,no关闭,公众看板页面无需登陆 dashView: yes #数据表监控间隔,单位秒,默认60分钟 dbTableTimes: 3600 #服务接口监控间隔,单位秒,默认1...阅读全文

博文 2020-06-09 11:34:44 tianshiyeben

3.2.8Golang的map

总目录:https://www.jianshu.com/p/e406a9bc93a9 Golang - 子目录:https://www.jianshu.com/p/8b3e5b2b4497 map map是一种无序的基于key-value的数据结构,Go语言中的map是引用类型,必须初始化才能使用。 map的定义 语法: map[键数据类型]值数据类型 map类型的变量默认初始值为nil,需要使用make()函数来分配内存。 语法: make(map[键数据类型]值数据类型, [容量]) map的基本使用 package main import "fmt" func main() { // 定义一个map 并初始化 长度最好在初始化时就设置好 scoreMap := make(map[str...阅读全文

博文 2020-03-17 23:32:46 寒暄_HX

25. 学习 Go 协程:详解信道/通道

Hi,大家好,我是明哥。 在自己学习 Golang 的这段时间里,我写了详细的学习笔记放在我的个人微信公众号 《Go编程时光》,对于 Go 语言,我也算是个初学者,因此写的东西应该会比较适合刚接触的同学,如果你也是刚学习 Go 语言,不防关注一下,一起学习,一起成长。 我的在线博客:http://golang.iswbm.com我的 Github:github.com/iswbm/GolangCodingTime Go 语言之所以开始流行起来,很大一部分原因是因为它自带的并发机制。 如果说 goroutine 是 Go语言程序的并发体的话,那么 channel(信道) 就是 它们之间的通信机制。channel,是一个可以让一个 goroutine 与另一个 goroutine 传输信息的通道...阅读全文

博文 2020-06-02 08:32:41 Python编程时光

Golang UDP的连接性(网关如何阻碍Golang的UDP通信)

自知乎专栏(防止挂掉):https://zhuanlan.zhihu.com/p/94680036golang中udp的连接性 曾经浮华装逼招雷劈​关注他golang中udp分为已连接和未连接两种,两者在发送、接收消息行为模式上有重大区别背景前段时间,我们组开发一个紧急需求,需要与其它部门某组进行协议交互,暂且称之为B组。 B组底层通信采用UDP形式,使用pb为传输协议,本来很简单的事情,可是联调过程中却遇到一个大坑,关于golang中udp的连接性问题。我们这边采用golang技术栈,以DialUDP的接口与B组交互,先send数据,再recv数据。就这么简单的逻辑,却出问题了,B组能收到我们的请求数据,我们这边却无法接收到B组的返回数据。经过与B组交流,他们那边的架构比较奇怪。我们设计系...阅读全文

博文 2020-05-04 23:32:44 鹿沐浔

数据结构和算法(Golang实现)(28)查找算法-AVL树

AVL树 二叉查找树的树高度影响了查找的效率,需要尽量减小树的高度,AVL树正是这样的树。 一、AVL树介绍 AVL树是一颗严格自平衡的二叉查找树,1962年,发明者Adelson-Velsky和Landis发表了论文,以两个作者的名字命名了该数据结构,这是较早发明的平衡二叉树。 定义如下: 首先它是一颗二叉查找树。 任意一个节点的左右子树最大高度差为1。 由于树特征定义,我们可以计算出其高度h的上界h<=1.44log(n),也就是最坏情况下,树的高度约等于1.44log(n)。 假设高度h的AVL树最少有f(h)个节点,因为左右子树的高度差不能大于1,所以左子树和右子树最少节点为:f(h-1),f(h-2)。 因此,树根节点加上左右子树的节点,满足公式f(h) = 1 + f(h-1) ...阅读全文

博文 2020-04-07 16:32:57 陈星星

25. 学习 Go 协程:详解信道/通道

Hi,大家好,我是明哥。 在自己学习 Golang 的这段时间里,我写了详细的学习笔记放在我的个人微信公众号 《Go编程时光》,对于 Go 语言,我也算是个初学者,因此写的东西应该会比较适合刚接触的同学,如果你也是刚学习 Go 语言,不防关注一下,一起学习,一起成长。 我的在线博客:golang.iswbm.com 我的 Github:github.com/iswbm/GolangCodingTime Go 语言之所以开始流行起来,很大一部分原因是因为它自带的并发机制。 如果说 goroutine 是 Go语言程序的并发体的话,那么 channel(信道) 就是 它们之间的通信机制。channel,是一个可以让一个 goroutine 与另一个 goroutine 传输信息的通道,我把他叫做...阅读全文

博文 2020-06-02 11:35:02 王一白

当查询的数据来自多个数据源,有哪些好的分页策略?

概述 在业务系统开发中,尤其是后台管理系统,列表页展示的数据来自多个数据源,列表页需要支持分页,怎么解决? 问题 如上图,数据源可能来自不同 DB 数据库,可能来自不同 API 接口,也可能来自 DB 和 API 的组合。 我这也没有太好的解决方案,接到这样的需求,肯定首先和需求方沟通,这样分页是否合理。 无非就两种方案: 数据定期同步,首先将查询的数据汇总到一个地方,然后再进行查询分页。 内存中分页,首先将查询的数据存放到内存,然后再进行查询分页。 如果以某一数据源进行分页,其他字段去其他数据源获取,这样还好处理一些。 如果以多个数据源融合后再分页的话,就数据定期同步 或 内存中分页吧。 数据定期同步方案可以根据实际情况去设计同步频率,至于同步到 ES/MySQL/MongoDB 自己决定...阅读全文

博文 2020-03-16 13:37:08 新亮笔记

GO语言占位符

一.普通占位符 type Human struct { Name string } var people = Human{Name:"zhangsan"} 占位符 说明 举例 输出 %v 相应值的默认格式 Printf("%v", people) {zhangsan} %+v 打印结构体时,会添加字段名 Printf("%+v", people) {Name:zhangsan} %#v 相应值的Go语法表示 Printf("#v", people) main.Human{Name:"zhangsan"} %T 相应值的类型的Go语法表示 Printf("%T", people) main.Human %% 字面上的百分号,并非值的占位符 Printf("%%") % 二.布尔占位符 占位符 ...阅读全文

博文 2020-04-23 15:32:52 Caesar_emperor