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

说出你最喜欢的开源项目,七牛和你一起去支持!

![](http://77fy2z.com1.z0.glb.clouddn.com/kaiyuan.jpg) 为进一步支持开源事业,七牛推出了“七牛开源项目扶持计划”,免费支持开源项目,为开源事业尽一份力量。 如果您建有开源项目站,或者参与了其他开源项目站的维护,您就可以申请加入“七牛开源项目扶持计划”。 **申请步骤如下:** ![](http://77fy2z.com1.z0.glb.clouddn.com/申请步骤.png) 同时,我们特别推出了“说出你最喜欢的开源项目,七牛和你一起去支持!”活动,只要是你喜欢的开源项目,七牛就会和你一起去支持!我们还会在每个月的第一个星期一从参与该活动的开发者中随机抽取3个幸运开发者,各送出七牛周边礼品1份。 了解...阅读全文

数字输入golang实现的一个小游戏–猜数字

PS:今天上午,非常郁闷,有很多简单基础的问题搞得我有些迷茫,哎,代码几天不写就忘。目前又不当COO,还是得用心记代码哦! 原文步同至:http://www.waylau.com/golang-game-guess-numbe/ 随机成生一个数字,输入一个数字看否是匹对,配匹则结速,反之提示是大了还是小了, 代码如下: 每日一道理 爱心是一片照射在冬日的阳光,使贫病交迫的人感到人间的温暖;爱心是一泓出现在沙漠里的泉水,使濒临绝境的人重新看到生活的希望;爱心是一首飘荡在夜空的歌谣,使孤苦无依的人获得心灵的慰藉。 package main import ( "bufio" "fmt" "math/rand" "os" "strconv" "time" ) var ( endNum int //设...阅读全文

博文 2014-10-04 19:26:07 jiangu66

【上海招聘】新能源电动汽车公司招聘golang工程师,坐标:上海嘉定

主要工作职责 Major responsibilities 为Front-end提供相关下载及版本管理服务; Front-end与后端动态加密系统的开发和维护工作 上述后端开发的详细设计、维护和开发工作。 任职要求 Qualifications 从事相关行业3年以上,具有大型软件系统开发经验。 熟悉tcp/ip,HTTP(S)相关通信协议。 熟练掌握golang,C/C++,JAVA,Python等编程语言之一,愿意学习使用不同编程语言。 熟悉android,linux系统组件,能使用SHELL编制脚本,有OTA,FOTA相关经验尤佳。 熟悉nginx,redis,memcache,mysql等开源工...阅读全文

Golang用武之地-七牛云存储CEO许式伟

Golang用武之地-七牛云存储CEO许式伟 云落地所面临的最主要问题不是资金和硬件网络等资源,而是系统方案提供商和资源拥有者之间的信息不对称,相互找不到合适的对象。对于运营方而言,如何评估现有的方案也是一个比较大的问题,因为缺少公认的评估方法和标准。 对其内容详细阅...阅读全文

博文 2015-06-17 20:05:13 lihang421

golang语法总结(二十一):方法method

Go不像其它面相对象语言一样可以写个class,然后在class里面写一堆方法,但是它也很巧妙的实现了这种效果,我们只需要在普通函数前面加个接受者(receiver,写在函数名前面的括号里面),这样编译器就知道这个函数(方法)属于哪个struct了。 下面是简单示例: type A struct { Name string} func (a A)foo() { //接收者写在函数名前面的括号里面 fmt.Println("foo")} func main() { a := A{} a.foo() //foo} 需要注意的是,因为Go不支持函数重载,所以某个接收者(receiver)的某个方法只能对应一个函数,比如下面的就属于方法重复,编译无法通过: func (a A)foo() { fmt...阅读全文

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

装逼的傻逼不用装

都是一个逼,我骂git,然后立刻就有人来骂我。这种心态和奴才见到主子被欺负的状态一模一样。 这种人非常恶心,而且通常能力不高。你这煞笔要骂我那我就让你知道自己是个什么东西。 这种人和贴吧里的一种煞笔通常是一种人,常常暴露自己的能力上限。贴吧里有种人,在签名档里写自己是一个程序员。这其实是一种标签行为,往往是自己身上最好的东西,而且是相当满意。 就好比说,我是上海人。这也是一种标签行为。 因为没什么值得炫耀的了,所以拿最好的东西,出身来炫耀。 护主的这只狗,我可以百分之百推理出,是一只煞笔! 他最好的标签就是程序员。而且以一个行业普遍标准来标签的,通常水平又不高。正因为水平不高,才会对行业有归属感,正因为对行业有归属感,才会有守护某些东西的行为,因为这种行为给了自己一个暗示,他也是...阅读全文

golang-MD5

什么是MD5? MD5:为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。该算法的文件号为RFC 1321. MD5算法具有以下特点: 1、压缩性:任意长度的数据,算出的MD5值长度都是固定的。 2、容易计算:从原数据计算出MD5值很容易。 3、抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。 4、强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。 MD5的作用是让大容量信息在用数字签名软件签署私人密钥前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的十六进制数字串)。除了MD5以外,其中比较有名的还有sha-1、RIPEMD以及Haval等。 下面是在goalng下如何实现md...阅读全文

Golang实现生产者和消费者

packagemainimport("fmt""sync")//实现一个生产者和消费者/*生产者产生数据添加到通道里面,消费者消费数据从通道里面不带缓存实现*/funcmain(){ch:=make(chanint)varwgsync.WaitGroupwg.Add(2)goproducers(&wg,ch)goconsumer(&wg,ch)wg.Wait()}//生产者funcproducers(wg*sync.WaitGroup,chchanint){fori:=0;i<10;i++{fmt.Println("send:",i)ch<-i}close(ch)wg.Done()}//消费者funcconsumer(wg*sync.WaitGroup,chchanint){forv:=ra...阅读全文

博文 2017-11-01 08:04:42 dncmn

模板市场开发者开放申请,人人争当模板设计师!

有没有试过,在你自助建站的时候因为设计网站模板而烦恼?因为看不上称心的网站模板而纠结?因为看上一套模板但是需要花钱而舍不得?这些问题让建站者感到头疼。那么对于模板设计师又有什么烦心的事呢?自己设计的网站模板得不到赏识;做出精致的模板没有好的市场进行出售;做出的模板放在市场上没人购买;这些揪心的问题成为了设计者的烦恼。 ![~@C6J4B(~R$$@N4NIX${HZT.png](http://studygolang.qiniudn.com/170313/bf94409f3a7eb8dde116f0c3eb582c58.png) 就在设计师正在苦恼的时候,建站宝盒模板市场先开启模板开发者的招募。无论你是不是设计师、是不是开发者、懂不懂设计、会不会专业技术都好,只要你有创意,就能零成...阅读全文

golang 值接收者和指针接收者

interface_值接收者_指针接收者.png 例子 package main import "fmt" //定义一个 anial 接口类型 type anial interface { move() } type cat struct { name string feet int } type dog struct { name string feet int } // 采用值接受者,参数可以传递结构体类型和结构体指针类型 //func (c cat)move() { // fmt.Printf("%s,走猫步\n", c.name) //} // //func (d dog)move() { // fmt.Printf("%s,走狗步\n", d.name) //} // 采用指针接受...阅读全文

博文 2020-04-09 00:32:51 小麦客

第十三天:golang学习笔记之encoding

★encoding | encoding包定义了供其它包使用的可以将数据在字节水平和文本表示之间转换的接口. 编码在之前一直是一个重大问题,更可读的?效率更高的?轻量级的?重量级的?多种编码类型共存。 encoding encoding定义了四个接口(并没有多少对象去实现,甚至目录下的子包): // 实现了本接口的对象可以把自身编码为二进制,并作为返回值返回 type BinaryMarshaler interface { MarshalBinary() (data []byte, err error) } // 实现了本接口的对象可以把二进制编码为自身,接受者应该为指针,传参应该是TextMarshaler生成的二进制 type BinaryUnmarshaler interface { ...阅读全文

博文 2019-12-28 21:32:41 Macmillan_

golang[34]-区块链-对称加密与非对称加密

对称加密对称密钥加密(英语:Symmetric-key algorithm)又称为对称加密、私钥加密、共享密钥加密,是密码学中的一类加密算法。这类算法在加密和解密时使用相同的密钥,或是使用两个可以简单地相互推算的密钥。事实上,这组密钥成为在两个或多个成员间的共同秘密,以便维持专属的通信联系。与公开密钥加密相比,要求双方获取相同的密钥是对称密钥加密的主要缺点之一。常见的对称加密算法有DES、3DES、AES、Blowfish、IDEA、RC5、RC6。对称加密的速度比公钥加密快很多,在很多场合都需要对称加密。非对称加密公开密钥加密(英语:Public-key cryptography),也称为非对称加密(英语:asymmetric cryptography),是密码学的一种算法,它需要两个密钥...阅读全文

博文 2018-12-13 00:35:45 jonson_jackson

google测试分享-问题和挑战

谈到google测试遇到的问题和挑战之前,我想简单的罗列下国内App测试行业遇到的几个共同的问题: (1)测试人员的价值输出难以衡量。现在很多项目发布上线,大部分价值都是开发贡献的,还有一部分是产品经理贡献的,测试贡献的就是锦上添花,很难让人信服业务发展价值的贡献。 (2)用户体验测试难以形成。随着这些年的App测试技术的发展,测试人员保证产品上线质量上没有任何问题,但是在移动互联网时代,用户对产品的体验要求更高,不是要求没有功能性的问题,而是要好用,用的很爽,这里面测试能产生的价值就需要好好思考了。 (3)自动化测试和手工测试的平衡。这几年自动化测试技术的发展,让很多公司的测试团队都大力开展自动化测试,包括敏捷测试的推广,都是自动化测试对于产品的价值体现不能够分析的非常清...阅读全文

区块链技术背后的运行逻辑

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 区块链技术可能是自互联网技术以来最伟大的发明。区块链可以在不需要有中央权威机构的情况下或不需要双方信任的情况下交换价值或财富。想像一下你和我要赌明天旧金山的天气,赌50美元。我赌明天出太阳,你赌明天会下雨。今天,我们会有三种方式来管理我们之间的赌约: 1、我们可以相信对方。无论下雨还是出太阳,输的一方都会给赢的一方50美元。如果我们是朋友,这种管理方式很好。不过,无论是朋友还是陌生人,总会有人赖账的。 2、我们可以将赌约写下来形成合同。签订合同,双方履行最后赌约就有了保障,然而,如果输掉的一方不愿意付钱的话,赢的一方还要花额外的费用来打官司等等,这可能要花很长时间。尤其是对于小额现金,这可能不是最好的交易管理方式...阅读全文

博文 2019-09-27 17:02:44 链客

golang 生产者消费者模型

package main import ( "fmt" "time" ) // 生产者 func producer(channel chan int){ for i:=0;i<100;i++{ fmt.Println("老怪创造了小怪", i) time.Sleep(time.Second) channel <- i } // 关闭通道 close(channel) } // 消费者 func consumer(name string, channel chan int, done chan bool){ for{ val, ok := <-channel if ok { fmt.Println(name, "消灭了怪物", val) }else{ fmt.Println("消灭了所有怪物!...阅读全文

博文 2019-12-14 19:32:40 就超棒

上海徐汇区互联网公司招聘Golang开发工程师啦

Hi 大家好,我是 Eva,我们公司来招聘Golang开发工程师啦,公司base在上海徐汇,工作内容和要求如下,有兴趣的小伙伴们欢迎发送简历至我的邮箱:eva.wang@trustasia.com,谢谢。 Golang 开发工程师 职位诱惑 : 弹性工作制、不加班、rMBP开发、技术大 牛多、职能部门妹子多 职责描述: 后端服务程序开发; 使用Golang进行PKI、SSL、数字签名方面的研发; 使用高并发进行网络漏洞检测、扫描、抓取分析; 任职要求: 熟练使用Golang进行Web应用开发,会使用相关框架(beego、gin); 精通一门以上编程语言(C/C++,Go,Java,Python等); 熟悉数据结构,有并发编程经验更佳; 熟悉数据库的使用(...阅读全文

关闭HTTP的响应

当你使用标准http库发起请求时,你得到一个http的响应变量。如果你不读取响应主体,你依旧需要关闭它。对于新的Go开发者而言,这个很容易就会忘掉。 错误的做法 resp可能为nil resp, err := http.Get(url) defer resp.Body.Close()//may panic if err != nil { return err } err不为nil,resp也不为nil 有些同学可能以为这样子修改代码就可以了 resp, err := http.Get(url) if err != nil { return err } defer resp.Body.Close() 这对于绝大多数情况是可以的,因为err不为nil往往意味着resp为nil,但是当遇到一个重定...阅读全文

博文 2017-11-06 07:04:41 因心而来

区块链技术背后的运行逻辑

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 区块链技术可能是自互联网技术以来最伟大的发明。区块链可以在不需要有中央权威机构的情况下或不需要双方信任的情况下交换价值或财富。想像一下你和我要赌明天旧金山的天气,赌50美元。我赌明天出太阳,你赌明天会下雨。今天,我们会有三种方式来管理我们之间的赌约: 1、我们可以相信对方。无论下雨还是出太阳,输的一方都会给赢的一方50美元。如果我们是朋友,这种管理方式很好。不过,无论是朋友还是陌生人,总会有人赖账的。 2、我们可以将赌约写下来形成合同。签订合同,双方履行最后赌约就有了保障,然而,如果输掉的一方不愿意付钱的话,赢的一方还要花额外的费用来打官司等等,这可能要花很长时间。尤其是对于小额现金,这可能不是最好的交易管理方式...阅读全文

博文 2019-09-24 13:32:47 链客

【golang基础】go语言中的方法和interface的实现

我们先来看一道面试题:以下代码能编译过去吗?为什么? package main import ( "fmt" ) type People interface { Speak(string) string } type Stduent struct{} func (stu *Stduent) Speak(think string) (talk string) { if think == "bitch" { talk = "You are a good boy" } else { talk = "hi" } return } func main() { var peo People = Stduent{} think := "bitch" fmt.Println(peo.Speak(think)...阅读全文

博文 2018-03-30 16:34:42 wind5o

golang nats[5] cluster集群

集群模式 nats的集群模式对客户端来说并不是透明的。 所以集群对发布者和订阅者都是有影响的。 发布者和订阅者都知道连接的是一个集群的服务,而不是一个单点服务,换句话说发布者订阅者都必须指明集群中各个节点的地址。 当然,发布者和订阅者可以只针对集群中的某节点发布消息和订阅消息,不过这并不是集群模式的目的。 目的 提高可用性和可伸缩性。 实现原理 可用性,多个节点,挂掉任意一个,不影响整个集群对外提供服务。 伸缩性,服务端支持随意增加节点。订阅者可以感知服务端节点的变动,但是发布者并不能自动感知。 3个node的集群 $ gnatsd -p 4222 -m 4333 -cluster nats://localhost:4248 -routes nats://localhost:5248,nat...阅读全文

博文 2018-08-19 22:34:56 luckyase

golang socket

21天精品区块链课程免费学习,深入实战行家带路,助力开发者轻松玩转区块链! >>> package main import ( "fmt" "net" ) func main() { tcpAddr, _ := net.ResolveTCPAddr("tcp4", ":6000") listener, _ := net.ListenTCP("tcp", tcpAddr) defer listener.Close() for { con, err := listener.AcceptTCP() if err != nil { //fmt.Println(err) continue } fmt.Println(con.RemoteAddr().String(), " tcp connect su...阅读全文

博文 2018-09-01 14:33:12 Robin3D

2019 Golang公链项目实战

百度网盘任务1:001 - 内容介绍.mp4任务2:002 -Block结构.mp4任务3:003 - 根据区块数据生成区块HASH.mp4任务4:004 - CreateGenesisBlock.mp4任务5:005 - Blockchain结构.mp4任务6:006 - 添加新的区块.mp4任务7:007 - ProofOfWork框架.mp4任务8:008 - 工作量证明算法分析.mp4任务9:009 - target移位处理.mp4任务10:010 - 挖矿算法完整实现.mp4任务11:011 - 判断区块Hash的有效性.mp4任务12:012 - 课程目标.mp4任务13:013 - 区块的序列化和反序列化.mp4任务14:014 - boltdb数据库的创建或者打开.mp4任务...阅读全文

博文 2019-10-29 15:03:42 一直努力跑

GO语言圣经报个BUG

多年C、C++开发者,刚学GO 二天,目前对着GO语言圣经练习。 https://docs.ruanjiadeng.com/gopl-zh/ch1/ch1-03.html 发现示例程序dup3和dup2的执行结果不一致, 当输入的文件最后一行不是一个换行时。 gopl.io/ch1/dup3 ```go package main import ( "fmt" "io/ioutil" "os" "strings" ) func main() { counts := make(map[string]int) for _, filename := range os.Args[1:] { da...阅读全文

S.O.L.I.D 原则在 Go 中的应用

本文作者: 伯乐在线 - yemengying 。未经作者许可,禁止转载!欢迎加入伯乐在线 专栏作者。前言 由于自己最近灵感枯竭,所以我决定翻译一篇别人的文章 O(∩_∩)O~。作为一个一直想学 Go,但想了好久还没入门的人,我挑了篇写 Go 的文章,顺便帮自己熟悉一下 Go。原文是 Dave Cheney 根据自己 GolangUK 的演讲所整理的,全文以 SOLID 原则为线路,讲述了什么样的 Go 代码才算是好代码,当然 SOLID 原则也适用于其他语言。 英文原文比较长,由我和 Kevin 合译。 世界上有多少个 Go 语言开发者? 介个世界上有多少 Go 开发者捏?在脑海中想一个数字,我们会在最后回到这个话题。 Code review 有多少人将 code review 当做自己工...阅读全文

博文 2017-02-10 16:28:49 伯乐在线

golang 面向对象

method的语法如下: func (r ReceiverType) funcName(parameters) (results) 下面我们用最开始的例子用method来实现: package main import ( "fmt" "math" ) type Rectangle struct { width, height float64 } type Circle struct { radius float64 } func (r Rectangle) area() float64 { return r.width*r.height } func (c Circle) area() float64 { return c.radius * c.radius * math.Pi } func...阅读全文

博文 2014-10-04 19:26:12 huyuantai000

go语言的设计的一点粗浅看法

Go是Google开发的一种编译型,并发型,并具有垃圾回收功能的编程语言。罗伯特·格瑞史莫(Robert Griesemer),罗勃·派克(Rob Pike)及肯·汤普逊于2007年9月开始设计Go语言,[1],稍后Ian Lance Taylor, Russ Cox加入专案中。 Go语言这个出自大公司Google的大牛的作品, 为什么没有象出自Microsoft的anders hejlsberg的C#这么吸引人并流行起来呢?其实Go语言的设计者也是有名的大牛,但为什么三个臭皮匠,竟然抵不过一个诸葛亮呢.本人以初学者第一次接触Go语言来说说粗浅的看法. package main import "fmt" func main() { fmt.Println("Hello, World") } ...阅读全文

博文 2014-10-04 19:26:38 DSharp

移动终端app测试点总结

以下所有测试最后必须在真机上完整的执行 1、安装、卸载测试 在真机上的以及通过91等第三方的安装与卸载 安装在手机上还是sd卡上 2、启动app测试 3、升级测试   数字签名、升级覆盖安装、下载后手动覆盖安装、跨版本升级、升级后可以正常使用。   覆盖安装要确保数据库有字段更新的话,能正常更新,否则就容易导致app异常。 4、功能测试   包括功能点、业务逻辑、关联性(主要测试客户端与PC端的交互,客户端处理完后,PC端与客户端数据一致)、   服务端接口测试(主要通过访问服务端接口来验证服务端业务逻辑功能点是否正确) 5、数据对比测试   可在模拟器或真机上进行,同时与数据库中实际的插入记录做对比。还要对比主站的相同流程...阅读全文

golang 方法与接收者

结构体_结构体方法(接收者).png 例子: package main import "fmt" type person struct { name string age int } func (p person)Hello() { fmt.Printf("Hello, %s\n", p.name) } // 拷贝副本,复制操作 //func (p person)Guonia() { // p.age++ //} // 传递指针(内存地址),真正修改变量值 func (p *person)ZhenGuonia() { p.age++ } func main() { //实例化一个结构体 p1 := person{ name:"小麦客", age:666, } p1.Hello() //p1....阅读全文

博文 2020-04-08 07:32:48 小麦客

Go中的方法集

类型*T方法集 // code_018_struct_method_set project main.go package main import ( "fmt" ) //类型*T方法集 type Person struct { name string sex byte age int } //指针作为接收者,引用语义 func (p *Person) SetInfoPointer() { (*p).name = "yoyo" p.sex = 'f' p.age = 22 } //值作为接收者,值语义 func (p Person) SetInfoValue() { p.name = "xxx" p.sex = 'm' p.age = 33 } func main() { //p 为指针类型...阅读全文

博文 2018-10-06 02:35:09 ck_god

raft简单介绍

一致性算法 - Raft Raft 状态 一个 Raft 集群包含若干个服务器节点;通常是 5 个,这允许整个系统容忍 2 个节点的失效,每个节点处于以下三种状态之一: follower(跟随者) :所有结点都以 follower 的状态开始。如果没收到 leader消息则会变成 candidate状态。 candidate(候选人):会向其他结点“拉选票”,如果得到大部分的票则成为leader。这个过程就叫做Leader选举(Leader Election)。 leader(领导者):所有对系统的修改都会先经过leader。 Raft 一致性算法 Raft通过选出一个leader来简化日志副本的管理,例如,日志项(log entry)只允许从leader流向follower。 基于lead...阅读全文

博文 2018-08-06 11:34:53 kakushao

golang函数方法

定义 Go 语言中同时有函数和方法。一个方法就是一个包含了接受者的函数,接受者可以是命名类型或者结构体类型的一个值或者是一个指针。所有给定类型的方法属于该类型的方法集。语法格式如下: func (variable_name variable_data_type) function_name() [return_type]{ /* 函数体*/ } package main import "fmt" type Circle struct { radius float64 } func main() { var c Circle c.radius = 10 fmt.Println("圆的面积 = ", c.getArea()) } func (c Circle) getArea() float64...阅读全文

博文 2019-12-31 06:32:42 程序小白菜

【go密码学】-非对称加密算法

RSA RSA加密 在RSA中,明文、密钥和密文都是数字。加密过程可以用下列公式: 加密公式中出现的E和N的组合就是公钥。 RSA解密 公式: 数字D和N组合起来就是RSA的私钥。 生成密钥对 求N N = p x q (p、q为质数)。q、q太小容易被破译,太大会导致计算时间很长。N = 17 x 19 = 323 求L(L是仅在生成密钥对的过程中使用的数) L = lcm(p-1,q-1) (L是p-1和q-1的最小公倍数)L = lcm(16,18) = 144 求E 1 < E < Lgcd(E,L) = 1 ;表示E和L的最大公约数为1;E = 5,7,11,13,17,19,23,25,29,31 求D 1 < D < LE x D mod L = 1D = 29 go应用 pa...阅读全文

博文 2018-10-12 20:34:38 jincheng828

go 方法接受者 是指针类型和非指针类型的 区别

go 方法接受者 是指针类型和非指针类型的 区别 非指针类型 package main import "fmt" // 定义接口 type Car interface { GetName() string Run() } // 定义结构体 type Tesla struct { Name string } // 实现接口的GetName()方法 func (t Tesla) GetName() string { t.Name = "test" return t.Name } // 实现接口的Run()方法 func (t Tesla) Run() { fmt.Printf("%s is running\n", t.Name) } func main() { var c Car var t T...阅读全文

博文 2018-12-25 22:35:13 295631788

golang 动态查找类型实例

关键字func和函数名之间的参数被称为receiver(接收者),将函数与接收者的类型绑在一起。如果一个函数有接收者,这个函数被称为method。不同的receiver,method可以同名这里采用封装的方法进行简述方法的妙用先看一下注册路由的方式rest.Post("/user/login", common.MakeHandler(&user.login{}))MakeHandler的方法如下,返回了一个HandlerFuncfunc MakeHandler(h Handler) rest.HandlerFunc { return func(w rest.ResponseWriter, r *rest.Request) { common_handler(w, r, h) } }具体comm...阅读全文

面向项目维护者的命令行工具maintainer

maintainer 是一个用 go 实现的,面向项目维护者的命令行工具,希望能够实现各种对维护者友好的功能。 ![https://asciinema.org/a/117832](https://asciinema.org/a/117832.png) 目前包括: 生成 AUTHORS.md,记录所有贡献过代码的 Contributors 生成 CONTRIBUTING.md,描述为项目贡献的流程(未来希望能够根据不同语言做适配) 生成 CHANGELOG.md,根据项目的 Tag,Release 生成 CHANGELOG.md 已经以 Docker 分发,开箱即...阅读全文

使用 Go 实现简单的事件总线

![pic_1](https://raw.githubusercontent.com/studygolang/gctt-images/master/let%E2%80%99s-write-a-simple-event-bus-in-go/pic_1.png) 事件驱动架构是计算机科学中一种高度可扩展的范例。它允许我们可以多方系统异步处理事件。 事件总线是[发布/订阅模式](https://en.wikipedia.org/wiki/Publish%E2%80%93subscribe_pattern)的实现,其中发布者发布数据,并且感兴趣的订阅者可以监听这些数据并基于这些数据作出处理。这使发布者与订阅者松耦合。发布者将数据事件发布到事件总线,总线负责将它们发送给订阅者。 ![pic_2](ht...阅读全文

博文 2019-07-08 21:35:05 watermelo

【go密码学】-数字签名

介绍 数字签名就是只有消息的发送者才能产生的别人无法伪造的一段数字串,这段数字串是对信息真实性的有效证明。 发送者:生成签名 接受者:验证签名 非对称密码机制 非对称加密中,公钥用于加密,私钥用于解密。数字签名中相反,私钥生成签名,公钥验证签名。 数字签名方法 直接对消息签名 对消息的散列值签名 先用单向散列函数求出消息的散列值,然后再将散列值进行加密。 数字签名算法 RSA 案例一 package main import ( "crypto/rsa" "crypto/rand" "fmt" "crypto/md5" "encoding/base64" "crypto" ) //用公钥加密,私钥解密 //用私钥签名,公钥验证 //公钥是公开的,任何人可以使用公钥,私钥非公开(保存好) //一...阅读全文

博文 2018-10-13 10:34:42 jincheng828

golang接口实现时-值接收者和指针接收者的区别

package main import ( "fmt" ) type notifier interface{ notify() } type user struct{ name string email string } func (u *user) notify(){ fmt.Printf("sending user email to %s<%s>\n", u.name, u.email) } func sendNotification(n notifier){ n.notify() } func main(){ u := user{"ethan","xxx@xx.com"} sendNotification(u) //错误 //sendNotification(&u) //正确 } 上面...阅读全文

博文 2020-04-29 13:33:12 韩小禹

goang Receiver & interface

package main import ( "fmt" ) type Pointer struct { x string } func (this *Pointer) PrintX() { fmt.Printf("X:%s\n", this.x) } func (this *Pointer) SetX(str string) { this.x = str } type Value struct { x string } func (this Value) PrintX() { fmt.Printf("X:%s\n", this.x) } func (this Value) SetX(str string) { this.x = str } func main() { p1 := Pointe...阅读全文

博文 2016-01-19 03:00:01 diegodu

Go 开发的 Web 框架go_wtf

WTF 是小型的Web框架:Web Tiny Framework WTF的目标不是重度框架,不考虑涵盖所有功能,重点放在简单和灵活性上 其实现了一个非常灵活的路由(Mux),并且路由的使用方法也极简单 还通过中间件(Midware)的方式实现了gzip等常用功能 所有的组件都通过接口来耦合,意味着开发者可以自己实现自己的组件,替换到WTF中 一个最简单的例子: 一个稍微复杂点的例子...阅读全文

开源项目 2018-01-11 20:30:01 网友

程序员的职场进化论:物竞天择,适者生存

在我们这个地方,你必须不停地奔跑,才能留在原地。——《爱丽斯漫游仙境》红桃皇后​这句话恰恰可以作为我们这个时代的注脚!你看,我们工作节奏越来越快,越来越忙碌,永远有做不完的事情,哪怕 996 也阻止不了工作堆积成山的节奏。于是我们只能先完成任务再说,跑,跑,跑,跑得足够快,我们才能待在这个地方,至于手上流转的这些事情,完成得好不好,符不符合自己的职业规划,对自己的能力提升有没有帮助,都来不及考虑了。日复一日如此这般,有一天我们忽然发现:好像我没怎么成长啊,好像越来越没竞争力了……然而总有一天,我们会遇到更复杂的事情,需要更高的能力才能应对,怎么办?看来只好利用业余时间来学习提升啦!然而遗憾的是,我们已经处在一个不可逆转的碎片化时代,你不是在电梯里,就是在走路,不是在走路,就是在路边买早餐,不...阅读全文

博文 2019-04-08 22:30:33 answer-A

散列/哈希算法

文档 算法分析基于 RFC 3174 Request For Comments (RFC),所有关于Internet 的正式标准都是以RFC(Request for Comment )文档出版。需要注意的是,还有大量的RFC文档都不是正式的标准,出版目的都是为了提供信息。 由互联网协会(Internet Society,简称ISOC)赞助发行,会交到互联网工程工作小组(IETF)和互联网结构委员会(IAB)。文档可由网站 https://www.ietf.org/ 下载。 SHA1 描述 全称为 Secure Hash Algorithm 1(安全散列算法1)。是一种密码散列函数,美国国家安全局设计,并由美国国家标准技术研究所(NIST)发布为联邦数据处理标准(FIPS)。1993年 发布 ...阅读全文

博文 2019-06-22 15:32:39 悟剑声

网站运营方案该怎么策划

网站运营的重点在于计划、安排与分配。要经营好自己的网站,你要学会该怎么去做好网站运营。网站运营是一种思维的活动,没有死板的限定,要按照自身的情况与网站的定位来知道属于你的网站运营方案。不同种类的行业、不同类型的网站都有他们特定的网站运营策划方案。接下来小编为大家分析下,网站运营方案该怎么策划。 网站运营的内容是策略,核心是决策。将网站推广等工作加以正确有力的决策执行,才能大大的发挥作用。做网站运营,是一个循序渐进的一个过程,不可能一蹴而就。需要不断的磨合和改善,才能更好的完善体系,发挥作用。 网站建设优化方面: 1.需求整理 需求采集、分析和处理是网站营运的一项重要工作。运营人员是开发人员与销售人员、客户之间沟通的桥梁。在网站营运过程中,总会产生各种需求修改和新的...阅读全文

Go 语言方法接受者类型的选择

概述 很多人(特别是新手)在写 Go 语言代码时经常会问一个问题,那就是一个方法的接受者类型到底应该是值类型还是指针类型呢,Go 的 wiki 上对这点做了很好的解释,我来翻译一下。 何时使用值类型 如果接受者是一个 map,func 或者 chan,使用值类型(因为它们本身就是引用类型)。如果接受者是一个 slice,并且方法不执行 reslice 操作,也不重新分配内存给 slice,使用值类型。如果接受者是一个小的数组或者原生的值类型结构体类型(比如 time.Time 类型),而且没有可修改的字段和指针,又或者接受者是一个简单地基本类型像是 int 和 string,使用值类型就好了。 一个值类型的接受者可以减少一定数量的垃圾生成,如果一个值被传入一个值类型接受者的方法,一个栈上的拷...阅读全文

博文 2016-03-23 15:00:01 kai_ding

go - method方法

method 1. 值与引用 varName2 = varName1 varName2.funcName() 如果 varName2 有变化,varName1 无变化,则为值类型(传递) 如果 varName2 有变化,varName1 有变化,则为引用类型(传递) 2. Method 格式: func (r [*]ReceiverType) funcName(param) (result) {...} 注: a. r 为struct对象的接收者,接收者不同,方法也不同 b. r 可以为值传递也可以为引用传递 c. param 和 result 可有可无,与普通函数一样 d. 调用方法,用 "." 连接,即 r.funcName() e. func (r *ReceiverType) fun...阅读全文

博文 2015-10-25 11:00:05 chuangrain