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

[golang] 数据结构-简单选择排序

理简单选择排序应该是最直观最容易理解的排序方法了。直接从头开始一个一个去比,找出最小的放到最左边。再依次完成其他位的排序。 时间复杂度比较次数固定为O(n^2),数据交换次数是0~n-1次因为会交换不同位置相同数值的数据,所以选择排序并不稳定 代码实现 package main import ( "fmt" ) func main() { var length = 10 var mm = make(map[int]int, length) var o []int // 先准备一个顺序随机的数(qie)组(pian) for i := 0; i < length; i++ { mm[i] = i } for k, _ := range mm { o = append(o, k) } fmt.P...阅读全文

博文 2018-07-10 00:35:40 NicoChen

流?I/O操作?阻塞?epoll?

一、流?I/O操作? 阻塞? (1) 流 可以进行I/O操作的内核对象 文件、管道、套接字…… 流的入口:文件描述符(fd) (2) I/O操作 所有对流的读写操作,我们都可以称之为IO操作。 当一个流中, 在没有数据read的时候,或者说在流中已经写满了数据,再write,我们的IO操作就会出现一种现象,就是阻塞现象,如下图。 (3) 阻塞 阻塞场景: 你有一份快递,家里有个座机,快递到了主动给你打电话,期间你可以休息。 非阻塞,忙轮询场景: 你性子比较急躁, 每分钟就要打电话询问快递小哥一次, 到底有没有到,快递员接你电话要停止运输,这样很耽误快递小哥的运输速度。 阻塞等待 空出大脑可以安心睡觉, 不影响快递员工作(不占用CPU宝贵的时间片)。 非阻塞,忙轮询 浪费时间,浪费电话费,占用...阅读全文

博文 2020-03-12 23:32:46 aceld

一个数据库的开发问题

本人是c++开发者,最近接触Go,非常喜欢,准备转Go。 事情是这样的,目前公司的一个C++项目要使用一个分布式数据库进行数据存储和访问,我在学,能不能用Go的框架进行开发数据库,然后通过C++进行数据库的访问?这样做是否有意义,是否能在短时间内完成呢?请各位大神帮我出点主...阅读全文

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

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

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

Go语言基础之开发环境、数据类型、运算符

开发环境搭建 go官网 https://golang.org/ 下载 https://golang.org/dl/ 下载 go1.11.2.windows-amd64.msi安装包,双击安装即可。 IDE工具 IntelliJ IDEA 安装go插件 File-Setting-Pluigns,检索go,点击install即可安装,安装成功后重启即可完成 go pluign 新建Go项目 File-New-Project,选择Go,填写项目信息 新建Go项目 填写项目名称,选择项目保存目录,点击Finish即可 项目信息 新建Go File,选择File-New-Go File Go File 完成简单的Hello world输出 /**包声明*/ package main //引入包 imp...阅读全文

博文 2018-11-24 19:34:41 梁朋举

一本正经地聊聊raft

笔者很久以前就了解过raft了,它相比paxos实现跟逻辑简单了许多,因此市场上有很多的分布式系统都是使用raft协议来保证数据的一致性的。不过第一个实际接触到的raft应用倒是mongo的副本集了。所以今天就从mongo的副本集说起。通常有多少个副本集,就保存有多少份数据。多份数据,就需要通过复制的手段来实现。这里复制的目的并不是为了读写分离,而是提高了数据的高可用。多份数据为了保证最终一致性,mongo底层是用一种变型的raft来实现的。一、raft的介绍1.1 问题所在如果是单节点,客户端修改某个值,成功的话整个系统都变为某个值: ok!一个节点,我自己跟自己达成共识即可。如果像mongo副本集,有多个节点存储同份数据,那就麻烦了: 同一个客户端同时向两个节点发送更新数据的命令,结果节...阅读全文

golang 接口

在本章中,将要学习一个新的领域。我们将学习使用面向对象编程的灵魂去构建程序,让我们一起做这件事吧。 What is an interface? 简单的说,接口就是一组方法签名的集合。我们使用一个接口来识别一个对象的能够进行的操作。 举例来说,在以前的章节中,我们看到Student和Emlpoyee都可以执行SayHi函数,但是他们的运行结构是不同的,但是这个是无关紧要的,本质是他们都可以说“Hi”(这部分下边的内容会有体现)。 我们假设Student和Employee实现了另外一个共同的函数Sing。Employ实现了SpendSalary函数,与此相对应Student实现了BorrowMoney函数。 所以Student实现了SayHi、Sing和BorrowMoney函数,Employe...阅读全文

博文 2017-12-07 08:04:46 卢春风

基于C++学习Go语言——数据类型之复合数据类型

本文讨论复合数据类型。C++中复合数据类型只有数组和结构体,Go中增加了两种复合数据类型slice和map。Go中的数组和结构体与C++的没有差别,都是聚合结构。数组是由同构的元素组成,结构体是由异构的元素组成,二者都有固定大小的内存。slice与map则是动态的数据结构,它们将根据需要动态增长。本文主要讨论slice和map...阅读全文

博文 2018-07-07 14:02:07 afterWards

go channel详解之源码分析

作为golang并发编程思想的重要组成,channel(通道)非常重要,和goroutine(go协程)一起使用,用来实现go的CSP(Communicating Sequential Processes)并发模型。 Do not communicate by sharing memory; instead, share memory by communicating 不要以共享内存的方式来通信,相反,要通过通信来共享内存。 因为channel的重要性,有必要对其原理和源码进行学习,在参考了网络上各种大牛的分享后,将其作为笔记记录下来,如有不足之处,还请指正。 源码路径: go1.11/src/runtime/chan.go channel结构体 type hchan struct { //...阅读全文

博文 2019-03-12 11:34:44 smoke_zl

“三次握手,四次挥手”你真的懂吗?

目录 什么是“3次握手,4次挥手” TCP服务模型 TCP头部 状态转换 为什么要“三次握手,四次挥手” 三次握手 四次挥手 “三次握手,四次挥手”怎么完成? 三次握手 四次挥手 为什么建立连接是三次握手,而关闭连接却是四次挥手呢? “三次握手,四次挥手”进阶 ISN 序列号回绕 syn flood攻击 无效连接的监视释放 延缓TCB分配方法 使用SYN Proxy防火墙 连接队列 半连接队列满了 全连接队列满了 命令 小结 “三次握手,四次挥手”redis实例分析 总结 参考资料 记得刚毕业找工作面试的时候,经常会被问到:你知道“3次握手,4次挥手”吗?这时候我会“胸有成竹”地“背诵”前期准备好的“答案”,第一次怎么怎么,第二次……答完就没有下文了,面试官貌似也没有深入下去的意思,深入下去...阅读全文

博文 2019-07-22 22:15:32 qcrao-2018

Golang 基础数据类型(二)

强制类型数据转换 类型转换用于将一种数据类型的变量转换为另外一种类型的变量。Go语言类型转换的基本格式如下: type_name(expression) 在做强制类型转换时,需要特别注意数据长度被截断而发生的数据精度损失(比如将浮点型转换为整型)与值溢出(值超过转换目标类型的值范围时)。 func main() { num := 5 num1 := 11 num2 := float32(num) //把整型转换成浮点型 num3 := float32(num1) mean := num1 / num //原来的运算 mean1 := num3 / num2 //转换后的运算 fmt.Println("没有经过类型转换的值:", mean) fmt.Println("经过类型转换的值:", m...阅读全文

博文 2020-06-03 13:32:42 sunlingbot

云数据库 Redis 版使用教程

课程介绍 云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore 课时列表 • 课时1:Redis总体介绍 • 课时2:pub/sub应用场景与使用接口 • 课时3:如何使用云Redis控制台 • 课时4:实例创建 • 课时5:数据库管理 • 课时6:连接数据库 • 课时7:数据迁移 • 课时8:备份与恢复 开始学习http://click.aliyun.com/m/27849/ ...阅读全文

Golang并发(三) - Channel

What you are wasting today is tomorrow for those who died yesterday; what you hate now is the future you can not go back. 你所浪费的今天是昨天死去的人奢望的明天; 你所厌恶的现在是未来的你回不去的曾经。 Channel通道介绍 什么是channel, channel可以理解为goroutine之间通信的通道。一端发送数据方到达接收数据方的桥梁。 声明通道 每个channel都有一个与之相关联的类型, 这种类型是信道允许传输的数据类型。 channel的零值是nil, 一个nil channle没有任何用途。因此必须使用类似map和slice的方式定义。 package m...阅读全文

博文 2018-03-14 15:33:06 90design

go 回调函数

package main import "fmt" // go 回调函数 func main() { /* 高阶函数: 根据go语言函数的数据类型的特点,可以将函数作为另一个函数的参数 fun1() fun2() 将fun1函数作为fun2函数的参数: fun2函数:高阶函数 接受一个函数作为参数的参数,叫做高阶函数 fun1函数:回调函数 作为另一个函数的参数的函数,叫回调函数 */ fmt.Printf("%T\n", add) //func(int, int) int fmt.Printf("%T\n", oper) //func(int, int, func(int, int) int) int res1 := add(1, 2) fmt.Println(res1) // 3 res...阅读全文

从MapReduce的执行来看如何优化MaxCompute(原ODPS) SQL

摘要: SQL基础有这些操作(按照执行顺序来排列): from join(left join, right join, inner join, outer join ,semi join) where group by select sum distinct count order by 如果我们能理解mapreduce是怎么实现这些SQL中的基本操作的,那么我们将很容易理解怎么优化SQL写法。 **点此查看原文:http://click.aliyun.com/m/41382/** **SQL基础有这些操作(按照执行顺序来排列):** from join(left join, right join, inner join, outer join ,semi join) ...阅读全文

兄弟连区块链教程btcpool矿池源码分析核心机制总结及优化思考

兄弟连区块链教程btcpool矿池源码分析核心机制总结及优化思考,2018年下半年,区块链行业正逐渐褪去发展之初的浮躁、回归理性,表面上看相关人才需求与身价似乎正在回落。但事实上,正是初期泡沫的渐退,让人们更多的关注点放在了区块链真正的技术之上。# btcpool矿池-核心机制总结及优化思考## 核心机制总结### ①gbtmaker* 监听Bitcoind ZMQ中BITCOIND_ZMQ_HASHBLOCK消息,一有新块产生,将立即向kafka发送新Gbt* 另默认每5秒间隔(可从配置文件中指定)主动RPC请求Bitcoind,获取Gbt发送给kafka* Gbt消息大小约2M,含交易列表### ②jobmaker* 同时监听kafka KAFKA_TOPIC_RAWGBT和KAFKA_...阅读全文

博文 2018-10-16 18:34:41 兄弟连区块链培训

你不知道的go channel

最近在开发过程当中遇到了几个goroutine通信的问题,我觉得这几个问题非常具有代表性,因此拿出来和大家分享一下。 检查channel是否关闭 开发过程当中有遇到这样的一种情况,需要检查channel是否关闭,如果关闭则不进行相应操作,否则会panic等现象。在golang的select语法当中,default分支可以解决上述问题,请看如下例子: closechan := make(chan int,0) dchan := make(chan int,0) select{ case <- closechan: fmt.Println("channel already closed.") return default: fmt.Println("channel not closed, do ...阅读全文

「Go学习笔记」2.Go语言由什么组成?

文链接 https://juejin.im/post/5daad1ed6fb9a04e270fb0ee 标识符 Go语言标识符是用于标识变量、函数或任何用户自定义项目的名称(程序实体),这个标识符就类似java中的数据类型(基本数据类型、引用数据类型)。标识符有两种类别,一种是用户自定义的标识符,它作为程序的实体存在。另一种标识符成为预定义标识符,是Go语言源代码中声明的。例如: 数据类型bool(true和false)、byte、uint、uint8、uint16、uint32、uint64、int、int8、int16、int32、int64、float32、float64、string、uintptr。 内建函数名append、cap、close、complex、copy、delete...阅读全文

博文 2019-10-19 18:02:38 码处高效

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

Hi,大家好。 我是明哥,在自己学习 Golang 的这段时间里,我写了详细的学习笔记放在我的个人微信公众号 《Go编程时光》,对于 Go 语言,我也算是个初学者,因此写的东西应该会比较适合刚接触的同学,如果你也是刚学习 Go 语言,不防关注一下,一起学习,一起成长。 我的在线博客:http://golang.iswbm.com我的 Github:github.com/iswbm/GolangCodingTime 1. byte 与 rune byte,占用1个节字,就 8 个比特位,所以它和 uint8 类型本质上没有区别,它表示的是 ACSII 表中的一个字符。 如下这段代码,分别定义了 byte 类型和 uint8 类型的变量 a 和 b import "fmt" func main(...阅读全文

博文 2020-04-26 13:33:04 Python编程时光

兄弟连区块链教程btcpool矿池源码分析核心机制总结及优化思考

btcpool矿池-核心机制总结及优化思考 核心机制总结 ①gbtmaker 监听Bitcoind ZMQ中BITCOIND_ZMQ_HASHBLOCK消息,一有新块产生,将立即向kafka发送新Gbt 另默认每5秒间隔(可从配置文件中指定)主动RPC请求Bitcoind,获取Gbt发送给kafka Gbt消息大小约2M,含交易列表 ②jobmaker 同时监听kafka KAFKA_TOPIC_RAWGBT和KAFKA_TOPIC_NMC_AUXBLOCK,以支持混合挖矿 接收的Gbt消息,如果与本地时间延迟超过60秒将丢弃,如果延迟超过3秒将打印log 可用的Gbt消息,将以gbtTime+isEmptyBlock+height来构造key写入本地Map,另gbtHash也会写入本地队列...阅读全文

博文 2018-10-16 15:34:50 兄弟连区块链培训

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编程时光

Golang入门2-数据类型

环境: go1.11.2 linux/amd64(Ubuntu 18.04) 注:本文内容主要来自Golang中文社区 mp.weixin.qq.com/s/xmV3yWsDc… mp.weixin.qq.com/s/h2mV1zZ_C… 前菜 因为数据类型跟变量息息相关,所以这里会先讲述Golang变量的几种声明方式。 1.var name type 比如 var i int, 表示声明了一个int类型的变量,名字为 i。这时候只是声明,并没有赋值,如果变量没有赋值,Go会自动进行赋值,而int类型的默认值为0。 2.var name type = value 第一种方式的进化,在声明变量的时候便赋予了初始值 3.var name = value(类型推断) 比如 int i = 8, 此...阅读全文

博文 2019-08-18 21:04:17 言淦

Go 译文之如何构建并发 Pipeline

作者:Sameer Ajmani | 原文:https://blog.golang.org/pipel... 译者前言 这篇文章来自 Go 官网,不愧是官方的博客,写的非常详细。在开始翻译这篇文章前,先简单说明两点。 首先,这篇文章我之前已经翻译过一遍,但最近再读,发现之前的翻译真是有点烂。于是,决定在完全不参考之前译文的情况下,把这篇文章重新翻译一遍。 其二,文章中有一些专有名字,计划还是用英文来表达,以保证原汁原味,比如 pipeline(管道)、stage (阶段)、goroutine (协程)、channel (通道)。 关于它们之间的关系,按自己的理解简单画了张草图,希望能帮助更好地理解它们之间的关系。如下: 强调一点,如果大家在阅读这篇文章时,感到了迷糊,建议可以回头再看一下这张...阅读全文

博文 2019-08-06 12:02:39 波罗学

2020教你深入理解Golang之channel

前言Golang在并发编程上有两大利器,分别是channel和goroutine,这篇文章我们先聊聊channel。熟悉Golang的人都知道一句名言:“使用通信来共享内存,而不是通过共享内存来通信”。这句话有两层意思,Go语言确实在sync包中提供了传统的锁机制,但更推荐使用channel来解决并发问题。这篇文章会先从channel的用法、channel的原理两部分对channel做一个较为深入的探究。channel用法什么是channel从字面上看,channel的意思大概就是管道的意思。channel是一种go协程用以接收或发送消息的安全的消息队列,channel就像两个go协程之间的导管,来实现各种资源的同步。可以用下图示意: channel的用法很简单: func main() {...阅读全文

博文 2020-02-17 20:32:48 即将秃头的Java程序员

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 萨泥君