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

golang 使用 iota

iota是golang语言的常量计数器,只能在常量的表达式中使用。 iota在const关键字出现时将被重置为0(const内部的第一行之前),const中每新增一行常量声明将使iota计数一次(iota可理解为const语句块中的行索引)。 使用iota能简化定义,在定义枚举时很有用。 举例如下: 1、iota只能在常量的表达式中使用。 fmt.Println(iota) 编译错误: undefined: iota 2、每次 const 出现时,都会让 iota 初始化为0. const a = iota // a=0 const ( b = iota //b=0 c //c=1 ) 3、自定义类型 自增长常量经常包含一个自定义枚举类型,允许你依靠编译器完成自增设置。 type Stere...阅读全文

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

golang 的md5加密

先看实现代码: package main import ( "crypto/md5" "encoding/hex" "fmt" ) func main() { h := md5.New() h.Write([]byte("123456")) // 需要加密的字符串为 123456 cipherStr := h.Sum(nil) fmt.Println(cipherStr) fmt.Printf("%s\n", hex.EncodeToString(cipherStr)) // 输出加密结果 } 代码输入效果: 说明: Golang的加密库都放在crypto目录下,其中MD5库在crypto/md5包中,该包主要提供了New和Sum函数。 这里直接对一串字符串计算MD5。其中通过md5.New...阅读全文

博文 2015-01-29 03:00:02 ghj1976

Go项目目录管理

在Go的官网文档How to Write Go Code中,已经介绍了Go的项目目录一般包含以下几个: src 包含项目的源代码文件; pkg 包含编译后生成的包/库文件; bin 包含编译后生成的可执行文件。 可以通过下面的例子来说明工程目录的组织管理。(Windows 7 64位,go version go1.3.3 windows/amd64) 1. 创建一个库文件 创建一个库文件a.go并保存在scr目录的一个子目录下面。 package myfunc import "fmt" func Afunc(str string) { fmt.Println("a.go is package mufunc.") fmt.Println(str) } 这时候目录结构如下: ...阅读全文

博文 2015-01-22 13:00:01 sincerely

go build和go install的区别

go build通过go build加上要编译的Go源文件名,我们即可得到一个可执行文件,默认情况下这个文件的名字为源文件名字去掉.go后缀。 $ go build hello.go $ lshello hello.go 当然我们也 可以通过-o选项来指定其他名字: $ go build -o mygo hello.go $ lsmygo hello.go 如果我们在go-examples目录下直接执行go build命令,后面不带文件名,我们将得到一个与目录名同名的可执行文件: $ go build $ lsgo-examples hello.go go install与build命令相比,install命令在编译源码后还会将可执行文件或库文件安装到约定的目录下。 go install编译...阅读全文

【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

"go: missing Git command"的解决办法

"go: missing Git command"的解决办法 在使用go get 取资源包的时候出错误: ============================================================ C:\Users\Goopand\Desktop\Workspace\goWork\src>go get github.com/astaxie/beegogo: missing Git command. See http://golang.org/s/gogetcmdpackage github.com/astaxie/beego: exec: "git": executable file not foundin %PATH% ====================...阅读全文

博文 2014-11-13 15:00:01 Goopand

Golang的 signal

在实际项目中我们可能有下面的需求: 1、修改了配置文件后,希望在不重启进程的情况下重新加载配置文件; 2、当用 Ctrl + C 强制关闭应用后,做一些必要的处理; 这时候就需要通过信号传递来进行处理了。golang中对信号的处理主要使用os/signal包中的两个方法:一个是notify方法用来监听收到的信号;一个是 stop方法用来取消监听。 监听信号 notify方法原型 func Notify(c chan<- os.Signal, sig ...os.Signal) 第一个参数表示接收信号的管道 第二个及后面的参数表示设置要监听的信号,如果不设置表示监听所有的信号。 下面是一个非常简单地例子: package main import ( "fmt" "os" "os/signal"...阅读全文

博文 2015-02-05 03:00:01 ghj1976

golang编程之时间编程

golang编程之时间编程 编程离不开时间,时间管理,严格的说分成两块,一个是当前的时刻,对应的是一个点,还有是一段时间间隔。本文简单的讲讲go的时间相关的编程,比较简单,高手可以一笑而过。 golang对时间的支持,是package time做的事儿,里面有好多的函数,我就不一一举例学习,毕竟这是官方文档干的事情。我们初步的学习下常用的函数。 第一个是UNIX epoch time,确切的说就是自1970-01-01 00:00:00 GMT以来的秒数,不知道如何获取的,可以在shell下执行 date +%s manu@manu-hacks:~/code/go/self$ date +%s 1385131172 熟悉Linux下C编程的就是time函数的返回值: #include 阅读全文

博文 2015-01-31 01:00:03 stephen830

golang+websocket

参考资料: 0. 浅谈websocket:http://www.cnblogs.com/whthomas/p/3801147.html 1. golang版websocket源码:http://code.google.com/p/go.net/websocket 2. golang版websocket文档:http://godoc.org/golang.org/x/net/websocket#ex-Handler 3. 测试浏览器是否支持websocket地址:http://www.websocket.org/echo.html 4. 简单的golang版的websocket server:http://www.xinze.me/%E5%9F%BA%E4%BA%8Egolang%E7%9A%...阅读全文

博文 2015-07-23 03:00:00 hezhixiong

Golang strings包的TrimRight和TrimSuffix的区别

昨天遇到一个问题,strings.TrimRight("cyeamblog.go", ".go")结果居然是"cyeambl",这让我百思不得其解。当然,要看官方文档的解释: func TrimRight(s string, cutset string) string TrimRight returns a slice of the string s, with all trailing Unicode code points contained in cutset removed. func TrimSuffix(s, suffix string) string TrimSuffix returns s without the provided trailing suffix string...阅读全文

golang解决cannot convert a (type interface {}) to type *: need type assertion

cannot convert a (type interface {}) to type string: need type assertion cannot convert a (type interface {}) to type *: need type assertion 解决方案: var a interface{} = int(10) var b MyInt = a.(MyInt) 参考: http://stackoverflow.com/questions/19577423/how-to-cast-to-a-type-alias-in-go/1957905...阅读全文

博文 2015-06-17 20:17:43 u010499721

HTTP状态码302、303和307的故事

今日读书,无法理解HTTP302、303、307状态码的来龙去脉,决定对其做深究并总结于本文。 《HTTP权威指南》第3章在讲解30X状态码时,完全没有讲清楚为什么要有302、303、307,以及他们的关系,一句“问题出在HTTP/1/1”让我一头雾水,莫名其妙;而第五章在讲重定向响应时,没有说到现在很常见的302,反而是说我从没遇到过的303和307。很是迷惑,对于这3个状态码,WiKi和RFC文档都有详解,下面我以我的思维添油加醋的描述一遍。 一、状态码——302 RFC1945(http://tools.ietf.org/html/rfc1945#page-34),也就是HTTP1.0在介绍302时说,如果客户端发出POST请求后,收到服务端的302状态码,那么不能自动的向新的URI发...阅读全文

博文 2017-09-21 04:16:14 cswuyg

golang中sublime text中配置goimports

生态go对于import包无法自动添加或者删除,对于某些用户来说很不适应.在sublime text中利用gosublime+goimports很好的解决了这一问题. 1首先确认sublime text安装了Gosublime(安装方法这里不在赘述); 2下载goimports: go get code.google.com/p/go.tools/cmd/goimports 3配置sublime text,配制方法如下:preferences->package settings->gosublime->setting-user中添加如下内容 { "fmt_cmd": ["goimports"] } 4重启sublime text,即可看到可以自动添加程序中缺少的包或者删除程序中多余的包,而不...阅读全文

博文 2015-06-17 20:17:46 chenbaoke

go语言使用proto

安装 go get -d -u github.com/golang/protobuf/protoc-gen-go go install github.com/golang/protobuf/protoc-gen-go 定义proto文件 syntax = "proto3"; package model; message SayParam { string msg = 1; } message Pair { int32 key = 1; string values = 2; } message SayResponse { string msg = 1; // 数组 repeated string values = 2; // map map header = 3; ...阅读全文

博文 2019-03-04 16:34:46 亡命之徒

GoAgent原理和实现(一) :基本原理介绍

GoAgent对于每一个可以登上 blogger.com 的孩纸来说也许并不陌生。出于好奇,我准备学习学习它的工作原理,并打算自己动手写一个类似的东西。当然,前提不是照抄了。我打算记录下整个学习和实现它的过程,但由于能力有限,之中难免会出现错误,希望发现的童鞋可以帮忙指正。如果即使自己没能详尽的弄明白它的编程思想和手段,自己也要写出一个可以实现它的功能的近似的东西。 开始之前,我应该感谢一下阮成雄同学。他把GoAgent介绍给了我,才让我实现了“跨过长城,走向世界”的梦想。 如果你没有听说过GoAgent,但平日里苦于无数次的“连接被重置”错误,它将是你的终极解决方案。这里,我不想介绍它的安装和使用过程,需要的同学可以参考GoAgent图文设置教程,或是在code.google.com中搜索...阅读全文

19年第41周:Go语言 微信小程序获取手机号 -加密数据解密算法-AES-128-CBC

一、简介 获取手机号 获取微信用户绑定的手机号,需先调用 wx.login 接口。 因为需要用户主动触发才能发起获取手机号接口,所以该功能不由 API 来调用,需用 button 组件的点击来触发。 注意:目前该接口针对非个人开发者,且完成了认证的小程序开放(不包含海外主体)。需谨慎使用,若用户举报较多或被发现在不必要场景下使用,微信有权永久回收该小程序的该接口权限。 二、参考官方Python示例复写Golang版本 NOTE: 微信官方没有给Golang版本,但给了C++,PHP,Node,Python版本。这里选用Python来作为参考 python版本和Golang版本对比 三、参考资料 微信小程序开发指南-获取手机号 微信小程序开发指南-加密数据解密算法-官方案例下...阅读全文

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

游戏答题神器qanswer

答题神器:《冲顶大会》,《百万英雄》等答题游戏的答题神器,顺利吃鸡! 通过抓取手机屏幕截图经过文字识别,结合搜索引擎给出一个参考值。 [![题目](https://github.com/silenceper/qanswer/raw/master/docs/screenshot.png)](https://github.com/silenceper/qanswer/blob/master/docs/screenshot.png) 分析结果: [![结果](https://github.com/silenceper/qanswer/raw/master/docs/answer.png)](https://github.com/silenceper/qanswer/blob/master/...阅读全文

布隆过滤器

这篇文章可能涉及到一些拓扑知识,可以参考之前的文章: 常见哈希函数FNV和MD5 Golang binary包——byte数组如何转int? 布隆过滤器的原理不算复杂。对数据进行查找,简单点的可以直接遍历;对于拍好顺序的数据,可以使用二分查找等。但这些方法的时间复杂度都较高,分别是O(n)和O(logn)。无法对大量乱序的数据进行快速的查找。 哈希,将给定的数据通过哈希函数得到一个唯一的值,此值可以作为数据的唯一标识,只要通过该标识,再通过哈希函数逆向计算,就能还原出来原始的数据。在前面的网址压缩的调研分析里面介绍的压缩网址的方法,其实也就是一种哈希,只不过借助了数据库的支持。 布隆过滤器就是借助了哈希实现的过滤算法。通过将黑名单的数据哈希之后,可以得到一个数据。申请一个数组空间,长度是黑名...阅读全文

Go语言接口开发——不确定JSON数据结构的解析

在公司主要做接口的开发,会经常遇到接口对接的情况。有的时候,同一个请求返回的JSON数据格式并不一样。如果是正常,则可能只返回一个status字段,说明正常;如果中间出错,除了在status字段里面说明错误类型,还会通过error_message附带错误详细信息。比如要给用户加积分,如果加分失败,还会附带用户id等信息。那么,请求一个接口可能的返回值就是不确定的。 我最初就是定义两个结构体,我处理的数据都共有一个字段status,如果能够解析并且status表示操作成功,那么用封装成功内容的结构体解析;否则,用封装失败的结构体解析。这就是传说中的DIRTY HACK。。。 后来,偶然发现封装正确的结构体也会解析错误的字符串,当然,只会解析共有字段。那么,这个问题就好解决多了。把两个结构体放到...阅读全文

百度云推送——Go语言实现类库

#快速开始 ###下载安装 go get github.com/mnhkahn/BaiduYunPush ###创建文件pushtest.go package main import ( "fmt" "github.com/mnhkahn/BaiduYunPush" ) var apikey = "**************************" var seckey = "******************************" var method = "POST" var url_base1 = "channel.api.duapp.com/rest/2.0/channel/channel" func main() { push := BaiduYunPush.New(ap...阅读全文

博文 2017-02-09 12:21:44 Bryce

安全URL的Base64编码

之前在《网址压缩的调研分析(续)》介绍过Base62算法,他是一种类似于Base64的哈希算法。今天发现了另一种优化的Base64算法,又参考了下Golang的源码,在encoding/base64/base64.go里面。 const encodeStd = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" 传统的Base64用的是A-Z、a-z、0-9,还有+和/,一个64个编码串。 然而,标准的Base64并不适合直接放在URL里传输,因为URL编码器会把标准Base64中的“/”和“+”字符变为形如“%XX”的形式,而这些“%”号在存入数据库时还需要再进行转换,因为ANSI SQL中已将“%”号用作通...阅读全文

Golang——for循环的两种用法

从大一开始学C++,所接触过的for循环只有一种方式,for (int i = 0; i < count; i++) {...}。后来接触了Java,知道Java 5 引入了一种新特性,可以通过for (a : aa)遍历整个数组。虽然知道,但是也没用过,因为之前那种方法足够了。 现在主力语言是Go。Go也支持传统的写法for i := 0; i < count; i++ {...}。同样,还有一种for i, a := range aa {...}。这个跟Java相比,除了能够遍历,还能得到当前遍历的索引值,所以在Go中,更倾向于后面这种方法,令活动更高。 今天要对一个数据进行遍历,对每个元素进行稍加修改,才发现,原来这两种方式是有很大区别的。当时使用第二种方式修改之后,一直发现没有修改成...阅读全文

博文 2017-02-09 12:25:07 Bryce

Golang实现大数乘法

大数乘法,简单的说,就是把小学学的列竖式计算的方法进行了实现。这其实也就是个乘法分配率的变形。 5 * 12 = 5 * (2 + 10) = 5 * 2 + 5 * 10 所以第二行竖式,12的十位1与5相乘的时候,需要再最后空一位,其实是在最后省略了一个0。十位就是省略一个0,也就是左移一位,那么百位就是左移两位。以此类推。 通过代码实现,相乘的两个数就不能用整形表示了,因为存不了很大的整数。需要用字符串表示。按位相乘,最后把结果错位相加就行。乘法的结果等于乘数的位数,所以可以申请一个和乘数位数相同的数组,然后错位相加即可。但是这样太麻烦了。 乘法是从个位开始,但是遍历字符串是从最高为开始的,所以要首先将输入字符串反转。用i表示被乘数的遍历索引,j表示乘数的索引。前面说了左移的位数和乘数...阅读全文

Go On Android

文地址:Go, on Android作者:橙子InfinityGo 语言的高效一直让我想将之用于 Android 的开发上,很多事情,单纯从代码角度考虑,用 Go 来写会方便很多。这篇文章只是一个实例,没啥实质性的意思,只是开发时的一些记录。 我不想说如何获得 Go 的源码或是如何编译之,那些在网上到处可找,推荐直接参考 Go 语言官方网站(http://golang.org/),里面许多有价值的东西。 同样的参考官方网站所述,我们可以将 Go 环境编译为支持 arm 的,使用该环境编译出的程序,也可运行于 Android。 那么先编译 Go 本身,让它可以编译 arm 下的应用,修改一下 .bashrc 文件 在最后加上以下条目 PATH 取决于你的 Go 源码下载到哪里,不一定和我是一样...阅读全文

博文 2015-04-23 17:00:16 yangying19911113

Go 语言简单实现HashSet

公司有个需求,就是能够对列表去重。本屌原本想直接用for循环实现,后来去查了查Java的实现方式,大开眼界。 Set,是指数学里的集合。集合当中不能有重复的元素。判断是否有重复,可以使用哈希的方法。Java容器当中有基于哈希实现的HashSet。把元素都放入HashSet当中,如果有重复,则会插入失败。这样就能判断出来是否重复了。 而Golang并没有这种高级的容器。只是找了一个大神实现的,稍微改了一下,能够支持字符串检测。 http://play.golang.org/p/_FvECoFvhq type HashSet struct { set map[string]bool } func NewHashSet() *HashSet { return &HashSet{make(map[s...阅读全文

博文 2017-02-09 12:24:59 Bryce

冲顶大会等答题类游戏答题神器

参考之前跳一跳外挂的的思路,也整了这么一个东西: [https://github.com/silenceper/qanswer](https://github.com/silenceper/qanswer "https://github.com/silenceper/qanswer") 通过抓取手机屏幕截图经过文字识别,结合搜索引擎给出一个参考值。 # 快速答题 《冲顶大会》,《百万英雄》等答题类游戏答题神器,顺利吃鸡! 通过抓取手机屏幕截图经过文字识别,结合搜索引擎给出一个参考值。 ![题目](https://raw.githubusercontent.com/silenceper/qanswer/master/docs/screenshot.png) ...阅读全文

从面向对象的角度看Go语言与Java语言的区别

Go语言风格 GO语言是支持并发编程和内存垃圾回收的编译型静态类型语言,运行效率高,具有较强的可伸缩性(scalable)。它是为软件工程服务而进行的语言设计,强制语言规范。GO语言的面向对象编程非常简洁优雅,没有继承,隐藏的this指针等。它的面向对象是语言类型系统中的天然的一部分。整个类型系统通过接口串起来浑然一体。 Go语言与JAVA语言的区别 类型系统:JAVA中有两套完全独立的类型系统,一套是值类型系统,byte、int、boolean、char、double另一套是以object类型为根的对象类型系统,Integer,HashMap等。值类型系统希望用object类型引用,则需要装箱。而go语言中多数类型都是值语义,甚至包括一些复合类型如数组(array),结构体(struct)...阅读全文

博文 2016-04-19 09:00:01 NoraLi

使用Go访问MySQL的方法

使用Go访问MySQL的方法 安装MySQL驱动 go get github.com/go-sql-driver/mysql 导入mysql包 import ( "database/sql" _ "github.com/go-sql-driver/mysql" ) 连接数据库 db, err := sql.Open("mysql", "user:password@tcp(127.0.0.1:3306)/dbname") if err != nil { panic(err.Error()) } defer db.Close() err = db.Ping() if err != nil { panic(err.Error()) } 查询 age := 27 rows, err := db.Qu...阅读全文

嵌入式电路设计必备的知识有哪些?

嵌入式是一个综合性比较强的编程开发语言,既涉及了软件开发相关知识还涉及了硬件相关知识,今天小编将为大家分享几个嵌入式硬件电路设计的几个注意事项。 1、确定电源 电源至于嵌入式系统,好比空气之于人,人呼吸的空气中有二氧化碳和氮气等,这就相当于电源系统中各种杂波,如果期望得到纯净的稳定的电源,还需注意这两个方面: (1)电压 嵌入式系统需要各种量级的电源比如常见的5v、3.3v、1.8v等,为尽量减小电源的纹波,在嵌入式系统中使用LDO器件。如果采用DCDC不仅个头大,其纹波也是一个很头疼的问题。 (2)电流 嵌入式系统的正常运行不但需要稳定足够的电源,还要有足够的电流,因此在选择电源器件的时候需要考虑其负载,建议设计时一般留30%的余量。 如果是多层板...阅读全文

Golang精编100题

能力模型 级别 模型 初级primary 熟悉基本语法,能够看懂代码的意图;在他人指导下能够完成用户故事的开发,编写的代码符合CleanCode规范; 中级intermediate 能够独立完成用户故事的开发和测试;能够嗅出代码的坏味道,并知道如何重构达成目标; 高级senior 能够开发出高质量高性能的代码;能够熟练使用高级特性,开发编程框架或测试框架; 选择题 [primary] 下面属于关键字的是()A. funcB. defC. structD. class 参考答案:AC [primary] 定义一个包内全局字符串变量,下面语法正确的是 ()A. var str stringB. str := ""C. str = ""D. var str = "" 参考答案:AD [primar...阅读全文

博文 2017-05-15 07:33:21 _张晓龙_

Go项目的目录结构说明

一、项目目录结构GoPath /bin /pkg /src project_1 project_2 ...... project_n GoPath : 相当于donet下的Solution文件夹;需在环境变量中设置,多个用分号隔开即可; bin : 存放编译后的可执行文件; pkg:存放编译后的包文件; src : 存放项目源文件; project_n : 具体项目的源代码目录,相当于donet下的Project文件夹。 示例如下图: 二、在LiteIDE中的目录结构 参考资料: http://www.tiege.me/?p=417&utm_source=rss&utm_medium=rss&utm_campaign=golang-ide-liteide http://blog.studyg...阅读全文

博文 2016-06-03 10:00:00 wangwangfei

ubuntu下golang+mysql

[GO安装] 本来采用 sudo apt-get install golang 安装,后来发现这样装下来是go1版本,这样后面在编译go-sql-driver插件会有问题。 后来参考参考资料2中所说,从http://www.golangtc.com/download下载对应平台的包。 安装其实很简单,只要简单配置一下环境变量,在.bashrc里增加 export GOROOT=$HOME/bin/go export GOARCH=amd64 #如果是32位就是=386 export GOOS=linux export PATH=${PATH}:$GOROOT/bin export GOPATH=$HOME/devhome/golang/go_demo 然后执行: cd $GOROOT/src...阅读全文

以太坊开发资料pdf电子书

搜集整理的以太坊开发教程pdf电子书,放在百度云盘上了: ## 基本概念 区块链、以太坊的一些基本概念、核心思路及关键算法方面的教程。 - 精通比特币中文版:https://pan.baidu.com/s/1uWXKvKVxliTQW47xcbGvAg - 区块链技术指南中文版:https://pan.baidu.com/s/1O-565-qDOPyR6LtnXQygRQ - 以太坊白皮书中文版:https://pan.baidu.com/s/13T4yyjViGEWTbQZJ_fHbiw - 以太坊官方文档中文版:https://pan.baidu.com/s/1Jg2t4Jsau7-nFFO-ckkm7w ## 底层开发 使用不同语言进行区块链的底层开...阅读全文

[golang] 分布式ID生成算法Snowflake

大部分分布式系统中,对一些互斥资源通常需要一个集群唯一的ID,比如消息id,订单号等。而且很多业务需求往往要求这些ID必须具有先后顺序,以方便分页或者排序。这就要求ID具有两个特性: 全局唯一 随时间递增 Snowflake Twitter-Snowflake算法很好的解决了这种需求,它可以非常高效的生成ID,其核心思想如下(图片来自网络): snowflake-64bit.jpg 时间戳。时间戳段位共41位,单位毫秒,可以使用约70年。为了增加剩余可用期限,一般都会把起始日期尽量后移而不是直接使用1970-01-01。(ps:如果是使用1970,你的程序只能支持到2039年了) 机器id。用于区分集群内不同机器,因为Snowflake生成ID是在每台机器上进行的。一般集群中每个节点都会有一...阅读全文

博文 2017-10-19 10:04:54 king_wang

Go语言中的byte和rune

Go语言中byte和rune实质上就是uint8和int32类型。byte用来强调数据是raw data,而不是数字;而rune用来表示Unicode的code point。参考规范: uint8 the set of all unsigned 8-bit integers (0 to 255) int32 the set of all signed 32-bit integers (-2147483648 to 2147483647) byte alias for uint8 rune alias for int32 可以通过下面程序验证: package main import "fmt" func byteSlice(b []byte) []byte { return b } func...阅读全文

安装VIM8和vim-go插件

安装VIM8 下载源码,编译安装,默认会安装到/usr/local/bin下: git clone https://github.com/vim/vim.git cd vim/src make make install 如果make过程中报有关terminal的错误,并提示安装ncurses,则yum安装ncurses-devel后重新make和make install: yum install ncurses-devel 安装vim-go插件 执行如下命令安装plug.vim插件管理器和vim-go插件: curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/v...阅读全文

博文 2018-10-07 01:35:08 zxdevops

Golang的一致性哈希实现

Golang的一致性哈希实现 一致性哈希的具体介绍,可以参考:http://www.cnblogs.com/haippy/archive/2011/12/10/2282943.html 1 import ( 2 "hash/crc32" 3 "sort" 4 "strconv" 5 "sync" 6 ) 7 ​ 8 const DEFAULT_REPLICAS = 100 9 type SortKeys []uint32 10 ​ 11 func (sk SortKeys) Len() int { 12 return len(sk) 13 } 14 ​ 15 func (sk SortKeys) Less(i, j int) bool { 16 return sk[i] < sk[j] 17...阅读全文

博文 2016-04-21 03:00:03 ldaniel

golang buildmode

go install -buildmode=shared std go build -linkshared hi.go ll -h hi hii 16K Jun 19 02:39 hi* 2.0M Jun 19 02:43 hii* readelf -x .interp hi Hex dump of section '.interp': 0x00400238 2f6c6962 36342f6c 642d6c69 6e75782d /lib64/ld-linux- 0x00400248 7838362d 36342e73 6f2e3200 x86-64.so.2. readelf -x .interp hii Warning: Section '.interp' was not dumped ...阅读全文

博文 2019-06-20 01:02:42 shooter

Go文件上传下载

Go自带很多包,本例使用io包和net包相应的API简单实现基于http的文件上传下载(仅为demo) 定义文件存储文件 //假设文件上传为本地的服务器,上传的基础路径 const BaseUploadPath = "/var/file" main函数中监听http服务 func main() { http.HandleFunc("/upload", handleUpload) http.HandleFunc("/download", handleDownload) err := http.ListenAndServe(":3000", nil) if err != nil { log.Fatal("Server run fail") } } 文件上传处理器 func handleUploa...阅读全文

博文 2019-08-04 08:02:38 愚辛

PHP面试题2019年百度工程师面试题和答案解析

一、单选题(共10题,每题5分)1.以下代码输出的结果是?​​​​ A、[0,1,2,3]B、[1,3,5,7,5]C、[1,2,3,4,5]D、[0,1,2,3,5]参考答案:D答案解析:考的是数组+和array_merge的区别 当下标为数值时,array_merge()不会覆盖掉原来的值,但array+array合并数组则会把最先出现的值作为最终结果返回,而把后面的数组拥有相同键名的那些值“抛弃”掉(不是覆盖). 当下标为字符时,array+array仍然把最先出现的值作为最终结果返回,而把后面的数组拥有相同键名的那些值“抛弃”掉,但array_merge()此时会覆盖掉前面相同键名的值.2.以下代码执行结果是?​A、0B、1C、2D、3参考答案:B答案解析:如果你回答 2 ,恭喜,你...阅读全文

博文 2019-10-10 20:36:36 a993089249

PHP面试题2019年阿里巴巴面试题和答案解析

一、单选题(共27题,每题5分)1.Memcache与Redis的比较错误的是?A、Memcache过期后,不删除缓存,会导致下次取数据数据的问题,Redis有专门线程,清除缓存数据;B、Memcache和redis都是只支持单线程;CPU利用方面Memcache和redis部分伯仲C、Memcache只支持key value存储方式,Redis支持更多的数据类型,比如Key value,hash,list,set,zset;D、Memcache自身不支持持久化,Redis支持持久化;参考答案:B答案解析:Memcache支持多线程,redis支持单线程;CPU利用方面Memcache优于redis2.mysql5.7中关于json类型的说明,不对的是那个A、JSON数据可以做有效性检查B、...阅读全文

博文 2019-10-10 21:37:26 a993089249

go语言模块开发概念与cron定时事务模块的使用

参照代码: 引入模块通过import实现 结合go安装包目录: 不难发现src目录用于存放各个模块 关于cron模块的使用,只需下载源码保存至src目录下,使用时引入即可,相比linux 中的 cron,Go 实现的 cron 可以精确到秒 查看下载源码地址:https://github.com/robfig/cron 参考资料: http://blog.studygolang.com/2014/02/go_crontab/ http://www.cnblogs.com/happyframework/p/3322292.htm...阅读全文

博文 2015-09-18 03:00:01 hero-89

Go 面试每天一篇(第 7 天)

点击上方蓝色“Golang来啦”关注我哟加个“星标”,天天 15 分钟,一起学 Go昨天的题目,看下昨天的留言区,已经有同学回答出来了,还是实操,很好的习惯!这里还是补充下答案:1.参考答案及解析:AC。& 取址运算符,* 指针解引用。2.方便查看,贴下代码: 1package main 2 3import "fmt" 4 5type MyInt1 int 6type MyInt2 = int 7 8func main() { 9 var i int =010 var i1 MyInt1 = i 11 var i2 MyInt2 = i12 fmt.Println(i1,i2)13}参考答案及解析:编译不通过,cannot use i (type int) as type MyInt1 in...阅读全文

博文 2019-08-31 21:12:57 Golang来啦

Go 面试每天一篇(第 5 天)

点击上方蓝色“Golang来啦”关注我哟加个“星标”,天天 15 分钟,一起学 Go从昨天的答题留言来看,@十二 同学三道题目都答对了,特别棒!鼓励其他同学参与答题,加油!公布下昨天题目的答案,题目见昨天的文章。1.参考答案及解析:不能通过编译,new([]int) 之后的 list 是一个 *[]int 类型的指针,不能对指针执行 append 操作。可以使用 make() 初始化之后再用。同样的,map 和 channel 建议使用 make() 或字面量的方式初始化,不要用 new() 。2.参考答案及解析:不能通过编译。append() 的第二个参数不能直接使用 slice,需使用 … 操作符,将一个切片追加到另一个切片上:append(s1,s2…)。或者直接跟上元素,形如:app...阅读全文

博文 2019-08-31 21:11:36 Golang来啦

Go语言的new函数

Go语言有一个内置的new函数,其定义如下: func new func new(Type) *Type The new built-in function allocates memory. The first argument is a type, not a value, and the value returned is a pointer to a newly allocated zero value of that type. 其输入参数是一个类型,返回是一个指向该类型内存的指针,且指针所指向的这块内存已被初始化为该类型的0值。下面例子演示了如何使用new函数: package main import ( "fmt" ) func main() { v := new(int) *...阅读全文

博文 2017-06-24 19:14:34 肖楠

Go项目目录管理

在Go的官网文档How to Write Go Code中,已经介绍了Go的项目目录一般包含以下几个: src 包含项目的源代码文件; pkg 包含编译后生成的包/库文件; bin 包含编译后生成的可执行文件。 可以通过下面的例子来说明工程目录的组织管理。(Windows 7 64位,go version go1.3.3 windows/amd64) 1. 创建一个库文件 创建一个库文件a.go并保存在scr目录的一个子目录下面。 package myfunc import "fmt" func Afunc(str string) { fmt.Println("a.go is package mufunc.") fmt.Println(str) } 这时候目录结构如下: ...阅读全文

博文 2016-06-16 01:00:01 weiyuefei

Go并发(五):WaitGroup

自公众号:灰子学技术原文链接:https://mp.weixin.qq.com/s/PIb-gGBootc6581pHhi5ew本篇其实是Go并发编程的补充篇章,只是用来介绍WaitGroup的使用介绍。对于Go的并发编程来说,主协程需要知道其他的协程何时结束。通常我们的做法是采用channel的方式来控制,这种做法很好,可以参见我的另外一个帖子(Go并发之channel篇:https://mp.weixin.qq.com/s/PIb-gGBootc6581pHhi5ew)。但是对于一些简单的协程控制来说,channel显得有些大材小用,而WaitGroup就可以派上用场了。一、WaitGroup定义WaitGroup是Go pkg中sync 包里的内容:https://golang.org...阅读全文

博文 2019-09-13 10:12:36 ZhDavis

如何学习c语言 零基础20天学会C语言

C语言开发 学习C语言不是一朝一夕的事情,但也不需要花费十年时间才能精通。如何以最小的代价学习并精通C语言是本文的主题。请注意,即使是“最小的代价”,也绝不是什么捷径,而是以最短的时间取得最多的收获,同时也意味着你需要经历艰苦的过程。在这里插入图片描述 一、要读就读好书,否则不如不读 所有初学者面临的第一个问题便是:如何选择教材。好的开始是成功的一半,选择一本优秀的教材是事半功倍的关键因素。不幸的是,学校通常会帮你指定一本很差劲的C语言课本;而幸运的是,你还可以再次选择。 大名鼎鼎的谭浩强教授出了一本《C语言程序设计》,据说发行量有超过400万,据我所知,很多学校都会推荐这本书作为C语言课本。虽然本人的名字(谭浩宇)跟教授仅仅一字之差,但我是无比坚定地黑他这本书的。加下群731871503这...阅读全文

博文 2019-01-17 17:47:34 wenpeng231