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

golang list slice 删除其中一项比对

slice可以动态添加项(使用append()函数),但是没有删除项的函数。变通方法,可以使用slice重新组合的方式删除一个或多个项,slice是引用类型,存的是指针,性能上不会有太多影响,示例如下:package mainimport "fmt"func main() { s := []int{11, 22, 33, 44, 55, 66} // 原始slice i := 2 // 待删除项索引 s = append(s[:i], s[i+1:]...) // 最后面的“...”不能省略 fmt.Println(s) // 数据结果 [11 22 44 55 66]} 有人回答的很好: 这样是可以实现。不过从slice这种数据结构来看,本身并不适合做删除操作。抛开语言,只谈数据结构,我们...阅读全文

博文 2015-06-10 19:00:01 panda1986_meng

go语言常用函数:make

创建数组切片 Go语言提供的内置函数make()可以用于灵活地创建数组切片。创建一个初始元素个数为5的数组切片,元素初始值为0: mySlice1 := make([]int, 5) 创建一个初始元素个数为5的数组切片,元素初始值为0,并预留10个元素的存储空间: mySlice2 := make([]int, 5, 10) 创建一个map myMap = make(map[string] PersonInfo) 创建了一个键类型为string、值类型为PersonInfo的map.//from:http://www.cnblogs.com/osfipin/ myMap = make(map[string] PersonInfo, 100) 也可以选择是否在创建时指定该map的初始存储能力,...阅读全文

博文 2015-07-28 03:00:00 osfipin

【GoLang笔记】遍历map时的key随机化问题及解决方法

之前的一篇笔记曾分析过,Go的map在底层是用hashmap实现的。由于高效的hash函数肯定不是对key做顺序散列的,所以,与其它语言实现的hashmap类似,在使用Go语言map过程中,key-value的插入顺序与遍历map时key的访问顺序是不相同的。熟悉hashmap的同学对这个情况应该非常清楚。 所以,本文要提到的肯定不是这个,而是一个比较让人惊奇的情况,下面开始说明。 1. 通过range遍历map时,key的顺序被随机化 在golang 1.4版本中,借助关键字range对Go语言的map做遍历访问时,前后两轮遍历访问到的key的顺序居然是被随机化的! 这个现象在其它语言中是很少见的,比如C语言实现hashmap时,通常会用数组(即一段连续的内存空间)来存key,虽然key的...阅读全文

博文 2015-04-02 19:00:01 slvher

Golang通过syscall调用windows dll方法

本用例在GO 1.4.2 上编译执行通过,直接上CODE: package main import ( "fmt" "syscall" "time" "unsafe" ) const ( MB_OK = 0x00000000 MB_OKCANCEL = 0x00000001 MB_ABORTRETRYIGNORE = 0x00000002 MB_YESNOCANCEL = 0x00000003 MB_YESNO = 0x00000004 MB_RETRYCANCEL = 0x00000005 MB_CANCELTRYCONTINUE = 0x00000006 MB_ICONHAND = 0x00000010 MB_ICONQUESTION = 0x00000020 MB_ICONEXCLAM...阅读全文

博文 2015-03-29 12:00:01 hotkit

golang中的append函数详解

1. append函数是用来在slice末尾追加一个或者多个元素。 2. 当追加元素时,发现slice的**len>cap**时,会重新开辟一个**2*cap**的内存空间去存储追加过元素的slice。 3. 如果追加元素后slice的**len<=cap**,则append返回的新生成的slice的内存地址**依旧**是传入的slice参数的内存地址。 ```go testSlice := make([]int, 0) testSlice = append(testSlice, 0) fmt.Printf("len: %d, cap: %d, data:%+v \n", len(testSlice), cap(testSlice), testSlice) //len: 1, cap: 1,...阅读全文

博文 2018-11-12 14:56:01 lijingtian

golang mysql中timestamp,datetime,int类型的区别与优劣

golang time: https://golang.org/pkg/time/ golang中time包用法 http://blog.csdn.net/chenbaoke/article/details/41519193 首先 DATETIM和TIMESTAMP类型所占的存储空间不同,前者8个字节,后者4个字节,这样造成的后果是两者能表示的时间范围不同。前者范围为1000-01-01 00:00:00 ~ 9999-12-31 23:59:59,后者范围为1970-01-01 08:00:01到2038-01-19 11:14:07。所以可以看到TIMESTAMP支持的范围比DATATIME要小,容易出现超出的情况. 其次,TIMESTAMP类型在默认情况下,insert、update ...阅读全文

博文 2016-03-04 08:00:01 scut1135

golang数据类型-slice(切片)

slice介绍 数组的长度在定义之后无法再次修改;数组是值类型,每次传递都将产生一份副本。显然这种数据结构无法完全满足开发者的真实需求。在初始定义数组时,我们并不知道需要多大的数组,因此我们就需要“动态数组”。在Go里面这种数据结构叫slice,slice并不是真正意义上的动态数组,而是一个引用类型。slice总是指向一个底层array,slice的声明也可以像array一样,只是不需要长度,它是可变长的,可以随时往slice里面加数据。 初看起来,数组切片就像一个指向数组的指针,实际上它拥有自己的数据结构,而不仅仅是个指针。数组切片的数据结构可以抽象为以下3个变量: 1.一个指向原生数组的指针(point):指向数组中slice指定的开始位置; 2.数组切片中的元素个数(len):即sli...阅读全文

博文 2015-06-17 20:17:41 JesseYoung

一、Go语言的变量和常量

《Go Web 编程》《Go 语言编程》读书笔记 。 1.变量 变量是几乎所有编程语言中最基本的组成元素。从根本上说,变量相当于是对一块数据存储空间的命名,程序可以通过定义一个变量来申请一块数据存储空间,之后可以通过引用变量名来使用这块存储空间。 1.1 变量声明 对于纯粹的变量声明,Go语言引入关键字var,而类型信息放在变量名之后,形如: var variableName type var vname1, vname2, vname3 type 示例: var v1 int var v2 string var v3 [10]int // 数组 var v4 []int // 数组切片 var v5 struct { f int } var v6 *int // 指针 var v7 map...阅读全文

博文 2015-11-10 10:00:01 chyljy

百度云虚拟主机与传统虚拟主机有什么区别?

在互联网飞速发展的时代,在选择虚拟主机时,市面上各类主机都有,在选择上大家都眼花缭乱,今天想通过一些对比跟大家分享最新推出的百度云虚拟主机与传统虚拟主机的区别。 (https://static.studygolang.com/180420/4361a3cd37433dc372b9ee4609202e7d.jpg) 一、传统虚拟主机与百度云虚拟主机是什么 虚拟主机,被称之为“网站空间”,也就是大家口中所说的空间,它利用技术把一台服务器分成多个具有独立的域名和完整的Intenet服务器功能、并且共享服务器的带宽和IP的“虚拟”的主机。 百度云虚拟主机,拥有容器技术、具有领先特性的新一代云主机,能提供新一代网站主机服务,率先支持SSL安全加密证书与Nginx搞笑WED框...阅读全文

用go语言通过FTP库实现web日库自动上传归档

因为平时管理的web服务器都是VM服务器,为节省硬盘空间,一般给虚拟机分配的硬盘空间都比较小,只有8G,因为,保存不了多少日志,所以每天都需要把每台WEB日志转移到一个硬盘比较大的服务器上,然后再使用NBU集中备份,本程序主要使用go语言实现实现将web日志通过FTP自动上传FTP服务器,使用了filepath.Walk遍历日志目录及第三方纯go库“github.com/jlaffaye/ftp”,而日志VM本地存储路径格式是 /var/log/weblog/www.domainName.com/month/20140616.access.log, ftp库下载地址 http://godoc.org/github.com/jlaffaye/ftp#ServerConn.Stor // upl...阅读全文

博文 2014-10-27 10:00:01 学思

阿里云对象存储OSS Go SDK发布了,欢迎有兴趣的Go爱好者试用~~~

阿里云对象存储OSS提供的海量、安全和高可靠的云存储服务。存储容量和处理能力的弹性扩展,真正使您专注于核心业务,广泛的应用于海量数据存储与备份,数据加工与处理,内容加速分发,业务数据挖掘分析等多种业务场景。详细介绍见[阿里云官网](http://www.aliyun.com/product/oss/?spm=5176.383663.3.14.RM2v6L)。 本次发布的OSS Go SDK包含了丰富的功能,简洁的接口,详细的例子... ## 主要功能包括: - 简洁、丰富、易用的接口,如PutObject/GetObject/ListObjects; - 并发上传/下载; - 断点续传的上传/下载; - 全面支持STS/HTTPS/CNAME访问; - ...阅读全文

【币码翁】IPFS官方周报第52期 ​

​ 欢迎关注IPFS官方周报!星际文件系统(IPFS)是一种通过内容和身份寻址的新型超媒体分发协议。IPFS支持创建完全分布式应用程序。它旨在使网络更快,更安全,更开放。由于这是一个非常大的范围,我们在每周调度中跟踪整个生态系统的发展。以下是自上次IPFS周报以来的一些亮点。最新的在Raspberry Pi上安装IPFS和IPFS-Cluster想过破解IPFS和物联网吗?Aadhi Manivannan最近写了一篇很棒的教程,介绍如何在Raspberry Pi上安装IPFS和IPFS-Cluster。 IPFS在野外你在Twitter上关注IPFS吗?有关IPFS的最新新闻,请查看我们的Twitter提要或查看有关Awesome IPFS的最新文章。分散式云存储正在改变互联网的面貌,Hac...阅读全文

博文 2019-07-31 16:32:48 IPFS星际特工

正确理解golang slice的复制

slice 三个属性 golang 的slice是一个指向底层的数组的指针结构体。 这个结构体有三个属性,1.指向数组指针,2.len: slice中元素的数量 3.cap:slice占用内存数量。 只有深刻理解这三个属性才能在使用slice中不至于犯错。 正确理解变量和共享 多个slice之间可以共享底层的数据,并且引用的数组部分区间可能重叠 以上是golang 圣经中的一句话。深刻理解这句话对于日程编程非常有意义。 1.什么时候共享数据会被其他变量修改 func f1() { a1 := []int{1,2,3,4,5,6} a2 := a1 a3 := a1[1:3] a1[1] = 999 fmt.Println("a1=",a1,"a2=",a2,"a3=",a3) } 运行结果 ...阅读全文

深度解析阿里云存储

摘要: 分析师认为,阿里云目前的存储产品系列展示了阿里云的潜力。随着时间的推移,已经成为全球超大规模云服务提供商的有力竞争者和替代者。阿里云云存储不仅拥有一系列不同的产品和功能,而且现在已经具备了相当的能力,在全球范围内提供广泛的服务。 国际知名调研机构Gartner近日公布了2017年全球云计算云存储魔力象限,阿里云的云存储强势崛起成为这一核心领域的前四名。 图片描述 图1 2017年Gartner全球云存储魔力象限图 在去年首次进入Gartner魔力象限即取得了不错的位置之后,今年阿里云存储再次强势进入公共云存储魔力象限,紧跟Google成为公共云存储厂商中在利基象限中最接近领导者象限的公共云存储厂商,而领导者象限中目前只有AWS和Azure。 图片描述 图2 ...阅读全文

Minio:一个开源的AWS S3服务器,让你老爷安卓机焕发第二春

Minio 是一个 AWS S3 的开源实现,基于 Golang 开发,它是一个服务端,客户端可以通过浏览器访问。并且它提供了文件操作的 API,可以方便的为它开发更多的客户端或者使用你熟悉的编程语言访问 minio 上存储的文件。 Minio 这里我们把它当做一个私有云使用,通常它运行在 Linux 或者 Windows 服务器上,不过官方也提供了 ARM 的编译版本,那么接下来我们将 Minio 部署在 Android 手机上。 访问 Minio 的官网 https://minio.io/ 下载最新的 ARM 编译版本。 https://dl.minio.io/server/minio/release/linux-arm/minio 官方已经提供了部署方式,非常简单,但是这一步我们先稍等...阅读全文

博文 2017-07-07 08:07:09 天兵公园

解码2017双11:全球狂欢新记录背后的阿里云存储

摘要: 2017天猫双11再次刷新纪录,这背后是大数据的支撑和阿里云计算的能力的体现。手淘、天猫APP主站的所有图片和视频都存储在阿里云对象存储OSS之上,全球数以亿计的消费者,对这些商品的访问的流量和并发次数,比成交笔数高得高。 **阿里云存储支撑双11新记录** 2017天猫双11全球狂欢节,全天成交额再次刷新纪录达到1682亿元,全天支付总笔数达到14.8亿,全天物流订单达8.12亿,全球225个国家和地区的消费者参加。新零售能量全面爆发,全球超100万商家线上、线下打通,近10万智慧门店、超50万零售小店参与“全球共振”。 这背后是大数据的支撑和阿里云计算的能力的体现。手淘、天猫APP主站的所有图片和视频都存储在阿里云对象存储OSS之上,全球数以亿计的消费者,对这些商品...阅读全文

Trie树

Trie树,又称字典树,前缀树,是一种很常用的树结构,它被广泛用于各个方面,比如字符串检索、中文分词、求字符串最长公共前缀和字典排序等等。 字典树设计的核心思想是空间换时间,所以数据结构本身比较消耗空间。但它利用了字符串的共同前缀(Common Prefix)作为存储依据,以此来节省存储空间,并加速搜索时间。Trie 的字符串搜索时间复杂度为 O(m),m 为最长的字符串的长度,其查询性能与集合中的字符串的数量无关。其在搜索字符串时表现出的高效,使得特别适用于构建文本搜索和词频统计等应用 字典树的性质 根节点(Root)不包含字符,除根节点外的每一个节点都仅包含一个字符; 从根节点到某一节点路径上所经过的字符连接起来,即为该节点对应的字符串; 任意节点的所有子节点所包含的字符都不相同; 下图...阅读全文

博文 2019-05-22 17:34:48 helloGlobal

热烈祝贺中共贵州数据宝网络科技有限公司支部委员会成立

2017年11月10日,数据宝贵州总部大厅一侧的雪白墙面上,悬挂了一张“中共贵州数据宝网络科技有限公司支部委员会”金属牌匾,这标志着中共贵州数据宝网络科技有限公司支部委员会正式成立,这也翻开了数据宝无数殊荣中的新篇章。 ![1.png](https://static.studygolang.com/171121/15bed321fd16ad3bfd5365880fe2c39b.png) 数据宝董事长汤寒林直面媒体,接受了记者的独家专访。 为什么成立数据宝党支部? 大数据的洪流之下,个人隐私信息被严重盗用、滥用成为事实。 公安部披露:自今年3月公安部部署开展打击整治黑客攻击破坏和网络侵犯公民个人信息犯罪专项行动以来,截至目前,全国共侦破侵犯公民个人信息案件和黑客攻击破...阅读全文

Go-Slice

要点 一个区间:[low:high] 两个概念:length, capability 三个函数:make(), append(), copy() 概念 Array是在声明的时候都确定了长度,之后不可更改。Slice和数组类似,也是表示一个有序元素,但这个序列的长度可变。 在Go中,Slice序列中各元素的数据类型必须一致,因为在声明slice的时候即要指定类型。 可以在Python中找到Slice,和Go的Slice基本上是一致的语义和用法。Slice中文通常被译为切片,大抵是因为可以从一个序列中存取指定的某一部分。下面是Collins词典中对于slice的解释,有助于了解该词的含义: N-COUNT (指食物切下的)片,薄片 A slice of bread, meat, fruit, o...阅读全文

博文 2016-09-02 07:00:05 u013344915

golang之array

数组 √ golang数组包含的每个数据称为数组元素(element),数组包含的元素个数被称为数组长度(length)。 √ golang数组的长度在定义后不可更改,并且在声明时可以是一个常量或常量表达式(在编译期即可计算结果的表达式)。golang数组长度是一个内置常量,可以用len()函数来获取。 √ golang数组是一个值类型,在赋值和作为参数传递时都将产生一次复制动作,因此在函数体中无法修改传入的数组的内容。 • 数组声明和初始化 ▶ 数组声明 ▪ 语法如下 // 数组声明 var array [n]Type // 数组声明和初始化 var array [n]Type = [n]Type{v1, v2, ..., vn} var array = [n]Type{v1, v2, ....阅读全文

博文 2016-02-20 03:00:04 heartchord

Go的三色标记GC

三色标记 三色标记的原理如下:整个进程空间里申请每个对象占据的内存可以视为一个图, 初始状态下每个内存对象都是白色标记,先stop the world,将扫描任务作为多个并发的goroutine立即入队给调度器,进而被CPU处理,第一轮先扫描所有可达的内存对象,标记为灰色放入队列;第二轮可以恢复start the world,将第一步队列中的对象引用的对象置为灰色加入队列,一个对象引用的所有对象都置灰并加入队列后,这个对象才能置为黑色并从队列之中取出。循环往复,最后队列为空时,整个图剩下的白色内存空间即不可到达的对象,即没有被引用的对象; 第三轮再次stop the world,将第二轮过程中新增对象申请的内存进行标记(灰色),这里使用了writebarrier(写屏障)去记录这些内存的身份...阅读全文

负载均衡--golang实现一致性hash算法

有没有好奇过redis、memcache等是怎么实现集群负载均衡的呢? 其实他们都是通过一致性hash算法实现节点调度的。 讲一致性hash算法前,先简述一下求余hash算法: hash(object)%N 一个缓存服务器宕机了,这样所有映射到这台服务器的对象都会失效,我们需要把属于该服务器中的缓存移除,这时候缓存服务器是 N-1 台,映射公式变成了 hash(object)%(N-1) ; 由于QPS升高,我们需要添加多一台服务器,这时候服务器是 N+1 台,映射公式变成了 hash(object)%(N+1) 。 1 和 2 的改变都会出现所有服务器需要进行数据迁移。 一致性HASH算法 一致性HASH算法的出现有效的解决了上面普通求余算法在节点变动后面临全部缓存失效的问题: type ...阅读全文

博文 2018-08-09 23:34:51 豆瓣奶茶

golang 写文件--详细解释

1,不覆盖指定的文件 先看代码怎么写,下面再具体解释. func writeToFile(msg string) { f, err := os.OpenFile("/home/mingbai/del/koala.log", os.O_WRONLY&os.O_CREATE, 0666) if err != nil { log.Println(err.Error()) } _, err = f.Write([]byte(msg)) if err != nil { log.Println(err.Error()) } f.Close() } OpenFile 这个函数不那么好理解,解释一下. 第一个参数 就是文件路径. 第二个参数是一个 文件打开方式的flag是读是写 还是读写;是追加还是清空等,...阅读全文

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

Go中实现手动内存分配的坑

Go中实现手动内存分配的坑 2016-07-10 你一定想到过,分配一块大的内存,然后从里面切小的对象出来,手动管理对象分配。分配的开销非常小,就是offset加一下。尤其是有些场景,释放时直接把offset重置,就可以重用这块空间了。实现手动内存分配的好处是,减少小对象数目,从而减少垃圾回收时的扫描开销,降低延迟和提升整个性能。 想到不代表做过,做过会踩坑,这篇文章会把你可能要踩的坑都说一遍。不过先说结论:别这么干,不作死就不会死! TL;DR 扩容 开始很容易想用make([]byte)分配空间,如果大小不够时,还可以进行扩容。这是第一个陷阱。 不要append,别让它扩容。一旦发生扩容,会分配一块新的空间,而旧的slice将不再有任何变量引用它,于是会被垃圾回收掉。等等!之前分配的对象...阅读全文

Go语言把IP转为int存储.节省空间提高索引速度

package main import ( "errors" "fmt" "strconv" "strings" ) type IntIP struct { IP string Intip int } func main() { var x *IntIP = &IntIP{IP: "192.168.1.1"} fmt.Println(x) x.ToIntIp() fmt.Println(*x) } func (self *IntIP) String() string { return self.IP } func (self *IntIP) ToIntIp() (int, error) { Intip, err := ConvertToIntIP(self.IP) if err != nil...阅读全文

博文 2015-12-23 22:00:04 fyxichen

阿里云自研云数据库POLARDB,未来企业的数字化答案

在2017年的杭州云栖大会上,阿里云总裁胡晓明做了题为“智能计算,为未来而生”的主题演讲,在众多内容中,阿里云的自研数据库产品POLARDB,引发了广泛关注。 image 从上个世纪60年代诞生开始,数据库就永久的改变了人类对数据的管理和认知,陆续出现今日的DB2 、Oracle、Informix、MySQL等大玩家,现在,从登录淘宝购物到在社交网站上高谈阔论,背后都离不开数据库的支撑。 数据库,无处不在。 假如要详细的说清楚阿里云为什么要选择自研数据库这条路,大概可以从以下三个方面展开。 数据库已经处于不得不变革的时代 中国数据库第一次规模爆发是在电信行业,1995年,为了解决计费计量等问题,中国开启了第一次大规模的数据库建设。然而在中国数据库长达40多年历史中,自...阅读全文

空结构体

空结构体 这篇文章探讨了我喜欢的Go数据类型,空结构体。 空结构体是一个没有field的结构体类型。这里有几个例子,有命名和匿名形式: type Q struct{} var q struct{} 所以,如果空结构体没有成员,我们该怎么使用它? width 在深入研究空结构体本身前,我想简要讨论下width。 术语width来自于gc编译器,尽管它的词源可能追溯到几十年年。 width描述了类型实例占用的字节数目。因为一个进程的地址空间是一维的,我认为witdh比size更合适。 width一个类型的属性。因为Go程序的每个值都有一个类型,值类型定义了它的witdh,一般是8比特的倍数。 我们可以发现任何值的宽度,它的类型的width使用unsafe.Sizeof()函数: var s st...阅读全文

golang中的数组

1,数组的特性 数组是线性表结构,从而内存空间是连续的且有着相同类型的数据。 正是由于是线性结构的特性才支持随机访问,时间复杂度为o(1)。 通过公式a[i]_address = base_address + i * data_type_size计算得到数组元素地址。 但是其插入、删除操作比较低效,因为会涉及到数据的迁移问题。以上就是数组的基本特性,下面我们看一下golang中数组相关知识。 2,声明及初始化 2.1,直接声明不显示初始化 var arr []type 数组声明之后编译器会做初始化操作,用数组值类型的零值进行初始化。 2.2,用一组值初始化数组 var arr [3]type = []type{1, 2, 3} 2.3,在数组字面值中,如果在数组的长度位置出现的是“...”省...阅读全文

博文 2019-06-26 00:32:45 XITEHIP

HTML5中的storage 如何使用?

HTML5中,我们常常用到storage,那这个storage到底是什么鬼?有什么用呢? 其实,storage是个很简单的东西,只要熟悉JavaScript中对象的童鞋,看完小编本文的分享,对storage的概念及用法应该都能掌握个七七八八了。 在HTML5中,你可以吧storage 想象成是储存在客户端(浏览器)中的一些 javascript 对象,那么有什么用呢?举个简单的例子,百度搜索会把你每次的搜索关键字用 storage(localStorage) 存储下来,那么下次你再搜索相同的内容的时候,它会优先将你曾经搜过的内容进行下拉展示。 关于 storage 的内容,可以用 chrome 下的 Resources 面板进行查看。 ![1.png](http://st...阅读全文

go中指针传递与值传递

> 吾尝终日而思矣,不如须臾之所学也;吾尝跂而望矣,不如登高之博见也。登高而招,臂非加长也,而见者远;顺风而呼,声非加疾也,而闻者彰。假舆马者,非利足也,而致千里;假舟楫者,非能水也,而绝江河。君子生非异也,善假于物也。 >-- 荀况 《劝学》 *** 1.指针传递传递的是一个地址,而非地址中的数据,传递数据较少,效率较值传递高,一般情况能用指针传递不用值传递。 2.指针传递时,调用函数中对指针所指向空间数据的修改会影响到调用者,因为他们指向的是同一块区域,指传递就不会影响到调用者的数据...阅读全文

golang 用 crypto/bcrypt 存储密码的例子

安全存储用户密码的原则是:如果网站数据泄露了,密码也不能被还原。 以前常用简单的方式是通过md5 多层加密及加盐。比如: md5( md5( password + '用户注册的时间戳' )[8:20] ) 这种可以在安全度不够高的情况下使用,下面介绍一种较为安全的加密方式,使用GoLang golang.org/x/crypto/bcrypt 模块。 golang.org/x/crypto模块官方文档:https://godoc.org/golang.org/x/crypto/bcrypt package main import ( "fmt" "golang.org/x/crypto/bcrypt" ) func main() { passwordOK := "admin" passwor...阅读全文

博文 2019-04-12 11:34:44 CaiGuangyin

阿里云OSS归档存储类型单价下调 45%

摘要: 7月21日起,阿里云对象存储OSS归档存储类型存储单价下调45%,归档解冻(Restore)时间优化到1分钟内 7月21日起,阿里云对象存储OSS归档存储类型(OSS Archive)存储单价下调45%,最短存储周期调整到60天,归档解冻(Restore)时间降低到1分钟以内,调整方案如下: 调整项 调整前 调整后 按量付费单价 0.06元/GB/月 0.033元/GB/月 最小存储周期 30天 60天 归档解冻时间 1~4小时 1分钟内 OSS有三种存储类型:标准存储类型 Standard、低频访问存储类型IA、归档存储类型Archive。OSS 归档存储类型(OSS Archive)适用于各类需要长期保存的数据:医疗影像、科研数据、金融数据、视频素材等。此类数...阅读全文

go语言学习之路五:Go语言内存分配机制make&new

Go有两种分配内存的机制,规则很简单,下面来简单介绍一下。1、new函数New()函数可以给一个值类型的数据分配内存(不知道什么是值类型请前往切片那一部分),调用成功后返回一个初始化的内存块指针,同时该类型被初始化为0值,原型定义:func new(Type) * Typenew是一个分配内存的内置函数,但是不同于其他语言中new所做的工作,它只是将内存清零,而不是初始化内存。2、make函数Make()函数用于给引用类型分配内存空间,比如:slice,map,channal等,这里需要注意的一点是make()创建的是一个引用类型的对象,而不是一个内存空间的指针。Make()函数原型:func make(Type,size IntegerType)Type参数Type必须是一个引用类型(sl...阅读全文

Golang(Go语言)内置函数之append

append主要用于给某个切片(slice)追加元素 如果该切片存储空间(cap)足够,就直接追加,长度(len)变长;如果空间不足,就会重新开辟内存,并将之前的元素和新的元素一同拷贝进去第一个参数为切片,后面是该切片存储元素类型的可变参数 基础用法: slice := append([]int{1,2,3},4,5,6)fmt.Println(slice) //[1 2 3 4 5 6] 第二个参数也可以直接写另一个切片,将它里面所有元素拷贝追加到第一个切片后面。要注意的是,这种用法函数的参数只能接收两个slice,并且末尾要加三个点 slice := append([]int{1,2,3},[]int{4,5,6}...)fmt.Println(slice) //[1 2 3 4 5 6...阅读全文

博文 2016-02-23 15:00:03 QQ245671051

(二)GoLang小记 —— 变量的定义与初始化

GoLang定义变量的方式多种多样,主流的包含以下几种方式: 普通变量: 1、 不指定变量类型的构造函数定义(其实就是强制类型转换) /* 直接用某个类型的"构造函数"进行赋值,这种赋值方式在C++中比较常见 构造函数打上引号是因为:"在GoLang中实际是没有构造函数的,但是把它理解成构造函数便于大家理解" */ var val = uint64(1) val := uint64(1) 2、不指定关键词的推导定义(作用域不同,且无法在全局区定义) /*关键字也不写!完全交给编译器判断*/ str := "admin" 3、 指定关键词的推导定义(作用域不同,可以在全局区定义) /*只指定关键字的初始化*/ var str := "admin" 指针变量定义: 指针变量定义在C家族中的定义与...阅读全文

博文 2016-10-19 11:00:15 水果糖

IPFS基本使用

在IPFS新增一个文件 新建test.txt文件 打开终端,切换到桌面,新建一个文件夹test,切换到test中,通过vi新建一个文件test.txt,文件里面输入Hello World保存并且退出。 $ cd Desktop/ $ mkdir test $ cd test/ $ vi test.txt $ cat test.txt Hello World 将test.txt添加到ipfs节点 使用ipfs add命令添加: $ cd Desktop/test $ ipfs add test.txt added QmUXTtySmd7LD4p6RG6rZW6RuUuPZXTtNMmRQ6DSQo3aMw test.txt $ ipfs cat QmUXTtySmd7LD4p6RG6rZW6R...阅读全文

golang对象内存分配

一、分配对象(源码) // 分配对象内存入口 func newobject(typ *_type) unsafe.Pointer { return mallocgc(typ.size, typ, true) } // 分配指定object的大小(bytes数) // 当分配的object大小 <= 32kb 使用每个P本地缓存空闲列表即可 // > 32 kB 直接堆上进行分配. func mallocgc(size uintptr, typ *_type, needzero bool) unsafe.Pointer { // 零长度对象 if size == 0 { return unsafe.Pointer(&zerobase) // 在heap上分配,则都指向预设的同一全局变量(零长度...阅读全文

博文 2019-01-07 19:34:46 神奇的考拉

Golang单例模式

单例模式,是一种常用的软件设计模式,在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。 1. 懒汉模式(Lazy Loading) 懒汉模式是开源项目中使用最多的一种,最大的缺点是非线程安全的 type singleton struct { } // private var instance *singleton // public func GetInstance() *singleton { if instance == nil { instance = &singleton{} // not thread safe } return instance } 2. 带锁的单例模式 type...阅读全文

博文 2017-10-13 10:04:48 iCaptain

Go语言中的运算符

## 1 概述 Go语言提供了,算术,关系,逻辑,位,指针,赋值运算符。本篇整体说明一下。 ## 2 算术运算 * \+ 相加 * \- 相减 * \* 相乘 * / 相除 * % 求余 * ++ 自增 * \-\- 自减 几个细节,需要留意一下。 * 整数与浮点数进行运算,会将整数转化为浮点数,再运算。 * 两个整数相除,结果是整数,取整数部分。5/3 结果会是 1。 * 求余,如果被除数或除数存在负数,那么余数与被除数保持一致。此处是求余不是取模。 * ++/--,不区分前后,只有变量后的语法,就是 v++。同时++/--构成语句而不是表达式,意味着不能直接赋值。 ## 3 字符串连接运算 + +运算符,也可以完成字符串的连接运算。 ``` "Hello" + " " + "Hank!"...阅读全文

博文 2018-10-30 22:02:07 hanzkering

双十一生态狂欢节,三招教你购买超值云存储

10月24日阿里云双十一生态狂欢节盛大开幕,此次阿里云存储系列产品也带着云存储的各路看家产品想用户诚意献礼,双十一购买如何能够更实惠,小编为大家解决运存粗产品的购买攻略: 攻略一:10.24-11.10充储值卡•享返券•抽大奖 双十一预热活动已经正式拉开帷幕,首次购买储值卡,即可获得10%-15%的代金券返还,储值卡可用于新购、续费、升级阿里云网站云产品,包括包月包月产品和按量付费产品。储值卡有效期为四个月,除去双十一当天的折扣产品,如果您根据按量购买存储产品,也已经是8.5-9折了有木有!只要购买储值卡,即可100%获得抽奖机会,11,111,1111元代金券返现,千万不要错过呀。 攻略二:11.11狂欢节,三种存储产品聚献礼 双十一当天, 对象存储OSS...阅读全文

golang 数组切片(一)

Array与Slice 1、array 静态数组 [len]type,数组类型包括数组长度与元素的数据类型,数据类型完全相同后才可赋值 声明 var array [5]byte //声明时自动将默认初始化为各自类型对应的零值 声明初始化 array := [5]byte{1,2,3,4,5} //长度为5的字节数组 声明初始化 array := […]byte{1,2,3,4,5}//go编译器将根据元素推导出长度 5 2、Slice 动态数组 slice 是对底层数组的抽象和控制。它包含 Go 需要对底层数组管理的三种元数据,分别是: 指向底层数组的指针 slice 中元素的长度 slice 的容量(可供增长的最大值) 声明: //A、创建一个nil slice;slice==nil va...阅读全文

博文 2015-10-21 16:00:09 xia_xing

使用Gin框架构建一个简单的注册登录后台(Go语言)

一、Gin框架介绍 框架一直是敏捷开发中的利器,能让开发者很快的上手并做出应用,甚至有的时候,脱离了框架,一些开发者都不会写程序了。Gin是一个golang的微框架,封装比较优雅,API友好,源码注释比较明确,已经发布了2.0版本。具有快速灵活,容错方便等特点。框架更像是一些常用函数或者工具的集合。借助框架开发,不仅可以省去很多常用的封装带来的时间,也有助于团队的编码风格和形成规范。 二、gin安装 首先需要安装,安装比较简单,使用go get即可 go get github.com/gin-gonic/gin 如果安装失败,直接去Github clone下来,放置到对应的目录即可。 三、简单介绍构建过程 1、文件夹结构 https ————main.go ————data ————————...阅读全文

博文 2018-12-13 21:34:46 一梦千嬅

Go实现Websocket消息推送

1.websocket 简介 以往浏览器要获取服务端数据,都是通过发送 HTTP 请求,然后等待服务端回应的。也就是说浏览器端一直是整个请求的发起者,只有它主动,才能获取到数据。而要让浏览器一侧能够获取到服务端的实时数据,就需要不停地向服务端发起请求。虽然大多数情况下并没有获取到实际数据,但这大大增加了网络压力,对于服务端来说压力也直线上升。 image.png 由于 WebSocket 是全双工通信,所以当建立了 WebSocket 连接之后,接下来的通信就类似于传统的 TCP 通信了。客户端和服务端可以相互发送数据,不再有实时性的问题。 image.png image.png 2.开发包的选择 在 Go 官方的 SDK 中,并不包含对 WebSocket 的支持,所以必须使用第三方库。 ...阅读全文

博文 2018-08-19 01:35:07 tuzisir

go局部变量的存储空间是堆还是栈?

go局部变量的存储空间是堆还是栈? 编译器会自动选择在栈上还是在堆上分配局部变量的存储空间,但可能令人惊讶的是,这个选择并不是由用var还是new声明变量的方式决定的。 var global *int func f() { var x int x = 1 global = &x } func g() { y := new(int) *y = 1 } f函数里的x变量必须在堆上分配,因为它在函数退出后依然可以通过包一级的global变量找到,虽然它是在函数内部定义的;用Go语言的术语说,这个x局部变量从函数f中逃逸了。相反,当g函数返回时,变量y将是不可达的,也就是说可以马上被回收的。因此,y并没有从函数g中逃逸,编译器可以选择在栈上分配*y的存储空间(译注:也可以选择在堆上分配,然后由Go语...阅读全文

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

B站日志系统的前世今生

作者简介王翔宇Bilibili资深运维研发工程师。曾就职于百度、饿了么,2017年加入B站,负责B站日志平台的设计和开发工作。B站的日志系统(Billions)从2017年5月份开始建设,基于elastic stack,面向全站提供统一的日志采集、检索、监控服务。目前集群规模20台机器,接入业务200+,单日日志量10T+。借此机会跟大家分享一些B站在日志系统的建设、演进以及优化的经历。由于经验尚少,抛砖引玉,欢迎大家一起交流讨论。文章主要分为三个部分:原有日志系统,现有系统演进,未来的展望。原有日志系统在Billions之前,B站内部并没有统一的日志平台,基本是业务之间各自为战,既有基于ELK的比较前瞻的方式,又有服务器上使用tail/grep比较基本原始的方式,水平参差不齐。在了解各个产...阅读全文

博文 2017-10-21 08:06:41 王翔宇

移动APP测试要点之性能、兼容、接口、交叉测试

之前有写过APP功能测试和安全测试的要点,今天在分享一部分,包括,性能测试、兼容性测试、借口测试、交叉测试。 性能测试:评估App的时间和空间特性 ; 极限测试:在各种边界压力情况下,如电池、存储、网速等,验证App是否能正确响应。包括:内存满时安装App、运行App时手机断电、运行App时断掉网络 响应能力测试:测试App中的各类操作是否满足用户响应时间要求。包括:App安装、卸载的响应时间、App各类功能性操作的影响时间 压力测试:反复/长期操作下、系统资源是否占用异常。包括:App反复进行安装卸载,查看系统资源是否正常、其他功能反复进行操作,查看系统资源是否正常。 性能评估:评估典型用户应用场景下,系统资源的使用情况。 容...阅读全文

Go语言学习(二):array、slices和map

前言 近来个多月忙于论文,各方面原因的综合,说多都是泪,等着结果了。关于Go语言的学习,本文的内容老早就学习了,之前时间也不知去哪了,而且也没心思,现在誊写上来吧。 数组array 定义形式: [n],n标示array长度,标示类型。 // e.g: [32]byte // 长度32的数组,每个元素为1个byte [16]*float64 // 指针数组 [3][5]int // 二维数组 在Go语言中,数组长度在定义后不可更改。获取array元素个数方法:arrLength := len(array) 元素访问与C一致。需要注意的一点,Go语言中数组属于值类型,不能像C一样用于指针传递。也就是说,如果数组作为函数入参,则在调用该函数时,函数将对数组做一份拷贝副本,...阅读全文

博文 2014-11-08 00:00:02 fzy0201

Go语言的优点(oschina讨论)

Go语言的优点:并发/网络/性能/工具(fmt/pprof/test)/标准库(http/json/log/flags/atomic)/GoogleGo语言垃圾回收器真正致命的缺陷是,会导致整个进程不可预知的间歇性停顿。像某些大型后台服务程序,如游戏服务器、APP容器等,由于占用内存巨大,其内存对象数量极多,GC完成一次回收周期,可能需要数秒甚至更长时间,这段时间内,整个服务进程是阻塞的、停顿的,在外界看来就是服务中断、无响应,再牛逼的并发机制到了这里统统失效。垃圾回收器定期启动,每次启动就导致短暂的服务中断,这样下去,还有人敢用吗?这可是后台服务器进程,是Go语言的重点应用领域。更多缺点: http://blog.csdn.net/liigo/article/details/2369945...阅读全文

博文 2015-01-16 18:00:01 findumars

直击DTCC2018 阿里数据库技术干货全面解析

摘要: DTCC2018将如约而至。阿里数据库的核心团队将亮相此会,并与国内数据库专业人士交流过去9年在数据库领域的经验。一起来看看在DTCC2018上阿里数据库团队都给你准备了哪些你最关心的主题吧。 如果你是一个技术人的话,就一定听过中国数据库技术大会(简称DTCC)。作为国内数据库及大数据领域规模最大、最受欢迎的技术交流盛会,云集了国内外顶尖专家,共同探讨MySQL、NoSQL、Oracle、缓存技术、云数据库、智能数据平台、大数据安全、大数据和开源、大数据创业、大数据深度学习等领域的前瞻性热点话题与技术。自2010年以来,迄今已成功举办了八届,累计参与人次达到20000+。 2018 年 5 月 10日,DTCC2018将如约而至。阿里数据库的核心团队将亮相此会,并与国内数...阅读全文