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

政府安全资讯精选 2017年第五期 各国加强隐私和个人信息保护

摘要: 网信办规范网上跟帖与评论;印度最高法院裁定宪法保障公民隐私权;美国专家委员会对关键基础设施安全提出预警;英国推动脱欧后与欧盟的数据交换共享伙伴关系。 e3963cf936930ce7a27288c336f6e1fe9505859b 【全球政策趋势】 印度最高法院裁定宪法保障公民隐私权 点击查看原文 概要:日前,印度最高法院作出历史性的判定,宣布宪法将保障印度公民的隐私权。该项决定可能会限制政府推广生物识别ID数据库Aadhaar计划。批评者称Aadhaar可能侵犯公民隐私权。并且,由于印度没有综合隐私保护法,公民在遇到数据泄漏情况时很难依法维权。 点评:印度最高法院的决定后,企业需要更加重视数据安全和用户隐私,尤...阅读全文

go任务调度11(分布式crontab架构分析)

crontab是单机工具(所有worker都在调度,如果有1000个任务,所有worker都在调用者1000个任务。对于编译型语言来说,排序一个一千万的数组只需要一秒,对于一千一万的调度,无需担心性能)(相当于完成一个到worker集群的通知,通知它们杀死任务...阅读全文

博文 2019-04-21 16:35:13 梁十八

一种肯定能提高开发者编程能力的方法

作为一名开发人员,怎样才能提高自己的开发能力?本文作者以自己的亲身体验为例,即使不写大量的代码,也可以提升自己的能力,那这个方法是什么呢? ​​​​ [一种肯定能提高开发者编程能力的方法](http://geek.csdn.net/news/detail/214530) 那么,你在看 Go 的哪些开源项目了...阅读全文

Go 方法与函数区别

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ZYC88888/article/details/80307008 方法是特殊的函数,定义在某一特定的类型上,通过类型的实例来进行调用,这个实例被叫接收者(receiver)。 函数将变量作为参数:Function1(recv) 方法在变量上被调用:recv.Method1() 接收者必须有一个显式的名字,这个名字必须在方法中被使用。 receiver_type 叫做 (接收者)基本类型,这个类型必须在和方法同样的包中被声明。在 Go 中,(接收者)类型关联的方法不写在类型结构里面,就像类那样;耦合更加宽松;类型和方法之间的关联由接收者来建立。 方法没有和数据定义(结构体)混在一起:它们是正交的...阅读全文

博文 2019-01-18 18:31:04 zyc88888

interface 接收者问题

/*定义接口*//*接口定义*/ type DbHander interface { Insert() Update(name,id string) Select() PrintMember() } /*定义结构体*/ type DbUser struct { userName string userId string } /*不修改内容,接收者非指针*/ func (this DbUser) Insert() { logger.Debug("insert DbUser") } /*不修改内容,接收者非指针*/ func (this DbUser) Update(name ,id string) { this.userId = id this.userName = name logger.D...阅读全文

博文 2019-05-29 16:45:30 hacker_cgh

golang中md5生成

package main import ( "crypto/md5" "fmt" "io" ) // golang md5加密 func main() { h := md5.New() // 签名 sign := "wasdhasdhjasduh" // 生成md5码写法1 io.WriteString(h, sign) sum := fmt.Sprintf("%x", h.Sum(nil)) fmt.Println("sum:", sum) // 生成md5码写法2 data := []byte("wasdhasdhjasduh") sum = fmt.Sprintf("%x\n", md5.Sum(data)) fmt.Println("sum:", sum) //sum: f48798...阅读全文

博文 2018-08-10 12:30:02 LittleLee

Ethereum学习笔记(一)

相关命令分析 eth.blockNumber 查看当前块高。 eth.getBlock() 根据高度查看块内容。 eth.syncing 获取同步状态,可以看到全网最新块高,提示用户同步进度。 区块分析 创世区块: { difficulty: 17179869184, extraData: "0x11bbe8db4e347b4e8c937c1c8370e4b5ed33adb3db69cbdb7a38e1e50b1b82fa", gasLimit: 5000, gasUsed: 0, hash: "0xd4e56740f876aef8c010b86a40d5f56745a118d0906a34e69aec8c0db1cb8fa3", logsBloom: "0x0000000000000000...阅读全文

博文 2017-10-26 10:04:44 慢性咽炎患者

高级 PHP、Swoole、Go 开发者的聚集地,期待你的加入

##### 为什么要创建这个群? * 有众多的PHP开发人员在同时学习Swoole和Go,但目前没有一个综合的群出现 * 很多Swoole的群对PHP开发人员不是很友好,都在推广自己的开源产品,很少解答新手的问题 * 在这个开发技术日新月异的时代,只有向优秀人学习和交流,才能真正理解一些前沿的技术 * 群内有资深并且热情的golang大佬,第一时间解答疑问,解答但不限于操作系统,网络协议,服务架构方面的问题。 * 群内有资深并且热情的Swoole大佬,第一时间解答疑问,解答但不限于swoole方面的问题。 * 定位于高级PHP和希望通过学习swoole和golang来提升自己的初中级PHP,摆脱低级curd。 ##### 热情邀请你的加入 ![高级 PHP、Swoole、Go 开发者的聚集地...阅读全文

博文 2019-04-15 15:59:30 kxg3030

Selector(意译)

【EBNF定义】Selector = "." identifier 【EBNF解释】就是说一个'.'加上一个标识符就是一个 Selector 。 【翻译】个人觉得不能翻译成选择器,应该翻译成一次选择,因为这是一个选择的过程,见后文。 【含义】 x.f 这个选择表达式中, f 就称之为 Selector ,就是一次选择,这次选择可能选择了类型为T的一个结构体中的一个 field ,也有可能选择了这个类型相关联的 method 。更重要的是,还有可能是选择了包含在类型 T 中的匿名 field中的field或者method。 【规则】对于x.f这个选择表达式: 1.假设 x 的类型为 T 或者 *T( T 的 underlying typ...阅读全文

工厂模式

目的:在工厂类中选择接口的实现类来实例化,功能模块中不需要关心具体逻辑。 使用条件:已经明确不同条件下创建相应实例。 优点:调用者只需要创建一个对象并调用;扩展功能时也只需要扩展工厂类;屏蔽接口的具体实现,调用者只需要关心接口的调用。 注意:工厂模式与策略模式 差别在于此处是选择对接实体,而对接的接口功能是一致的。比如吃包子,工厂模式是选择哪家店吃包子。而策略模式是选择一家店之后,在那家店选择吃什么。 golang代码: package factorypattern import "fmt" /*定义接口*/ type Animal interface { Cry() } /*接口实现类1*/ type Dog struct { } /*接口实现类2*/ type Cat struct { ...阅读全文

博文 2018-12-26 17:34:45 Marstin

golang 生成android 签名文件

package main import ( "strings" "log" "os" "archive/zip" "crypto/sha1" "io" "path" "encoding/base64" ) func Sha1File(f string) error { sha1h := sha1.New() file, err:= os.Open(f) if err != nil{ return err } defer file.Close() if _, err = io.Copy(sha1h,file);err!=nil{ return err } log.Println("sha1:", base64.StdEncoding.EncodeToString(sha1h.Sum(nil))...阅读全文

博文 2017-08-24 12:33:18 zdglf

gof23行为类模式(golang版)

命令模式 命令模式是一个高内聚的模式,其定义:将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排除或者记录请求日志,可以提供命令的撤销和恢复功能。 命令模式包含如下角色: Command: 抽象命令类需要执行的所有命令得出在这里声明。 ConcreteCommand: 具体命令类负责实现在Command角色中定义的接口 Invoker: 调用者开始执行命令的角色,它会调用在Command角色中定义的接口。 Receiver: 接收者该角色就是干活的角色,命令传递到这里是应该被执行的 命令模式的优点 类间解耦调用者角色与接收者角色之间没有任何依赖关系,调用者实现功能时只须调用Command抽象类的execute方法就可以,不需要了解到底是哪个接收者执行 可扩展性Comma...阅读全文

博文 2018-12-08 18:34:43 菟潞寺沙弥

微信golang签名算法

type WXPrams struct { m map[string]interface{} // 参数 sign string // 签名 } func (p *WXPrams) InitSign() { var keys []string for k, _ := range p.m { keys = append(keys, k) } sort.Strings(keys) builder := strings.Builder{} for _, v := range keys { builder.WriteString(v) builder.WriteString("=") builder.WriteString(fmt.Sprint(p.m[v])) builder.WriteStrin...阅读全文

博文 2019-01-02 19:34:46 AlberLiu

golang实现摘要签名和验证

golang实现摘要签名和验证的过程: 两个步骤: 利用私钥对一个摘要进行签名。 $ ./test -command sign -key ./privatekey.pem -text "12345" MEUCIE7DsGmTHJ3VGZec2UF9hRX7jq9Yd7F2kS7kEL132js8AiEA/ZlyIpo86Rn3waR8m2c4BtQPu8cNjYAnroibK+ujslY= 利用公钥验证签名是否有效。 $ ./test -command verify -cert ./publickey.pem -text "12345" -sign "MEQCIFuvcVHlztAN7YVehgCDYzVSo1Q10iTKeJE5ydxzfih5AiAC2ETt/8XuE1VHaGkLsiJ...阅读全文

博文 2020-01-16 07:32:39 CodingCode

Golang学习(9)——io ioutil包

Golang学习 - io/ioutil 包--------------------// Discard 是一个 io.Writer 接口,调用它的 Write 方法将不做任何事情并且始终成功返回。var Discard io.Writer = devNull(0)// ReadAll 读取 r 中的所有数据,返回读取的数据和遇到的错误。// 如果读取成功,则 err 返回 nil,而不是 EOF,因为 ReadAll 定义为读取// 所有数据,所以不会把 EOF 当做错误处理。func ReadAll(r io.Reader) ([]byte, error)// ReadFile 读取文件中的所有数据,返回读取的数据和遇到的错误。// 如果读取成功,则 err 返回 nil,而不是 EOF...阅读全文

博文 2017-02-09 20:06:46 1160636144

内嵌的结构体如何调用其外部结构体的方法?

```go package main import ( "fmt" ) type Animal struct{} func (a *Animal) Escape() { a.Run() } func (a *Animal) Run() { fmt.Printf("Animal Run.\n") } type Dog struct { Animal } func (d *Dog) Run() { fmt.Printf("Dog Run.\n") } func main() { dog := Dog{} dog.Escape() } ``` 运行结果为:`Animal Run.` 但我想要的结果应该是:`D...阅读全文

如何快速让你的网站被收录

做网站的人最重要的就是让自己的网站被很快的收录。大部分人需要大概1个月作用才会被收了,但是有的几个小时就收录,甚至十多分钟就可以,是不是很神奇。这些是很有技巧性的。下面说下简单的方法1,去搜索引擎提交自己的域名。2、申请一些分类目录网站收录,大概几分钟就可以申请几个。但也不要太多。3、去搜外,A5,落伍者论坛等发帖,留自己的链接。4,交换几个友情了链接。5、购买几个高质量的友情链接。做到上面这几点,最重要的还是你的网站主题和内容要健康积极,千万别复制网上的文章,就算复制也要稍微改下,不然搜索引擎会视为垃圾站点,没有原创内容,要么收录很迟要么完全不收了。现在不是有一种外链工具吗,可以批量的发出几千条外链。我觉得新站最好别这样做,这种外链没有什么意义,他的原理很简单,就是去各种有搜索功能的网站不...阅读全文

PAT: Root of AVL Tree (25),Go语言

An AVL tree is a self-balancing binary search tree. In an AVLtree, the heights of the two child subtrees of any node differ byat most one; if at any time they differ by more than one,rebalancing is done to restore this property. Figures 1-4illustrate the rotation rules. Now given a sequence of insertions, you are supposed to tell theroot of the res...阅读全文

博文 2016-03-11 15:00:03 u013564276

关于dubbo,这里有你不得不看的18个BAT面试题

![](https://upload-images.jianshu.io/upload_images/16533261-434fd1c2db44585b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ## **dubbo是什么** dubbo是一个分布式框架,远程服务调用的分布式框架,其核心部分包含:集群容错:提供基于接口方法的透明远程过程调用,包括多协议支持,以及软负载均衡,失败容错,地址路由,动态配置等集群支持。远程通讯:提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及“请求-响应”模式的信息交换方式。自动发现:基于注册中心目录服务,使服务消费方能动态的查找服务提供方,使地址透明,使服务提供方可以平...阅读全文

博文 2019-04-25 16:54:48 Javaxiaoze

Kafka 集群 Golang 应用实例

项目见:???? kafka cluster example 这个实例做了些什么? 搭建了拥有 3 节点 kafka、 3 节点 zookeeper 的 docker 集群服务; 分别创建了 1 个消息发布者和 2 个相同消费组的消息订阅者的 docker 应用; 使用 ab 进行并发测试,验证该实例消息的订阅 / 发布功能; 通过这个实例,能够了解些什么? 使用 Docker Compose 构建 Kafka 集群 使用 Golang 创建 Kafka Pub/Sub 实例 使用 ApacheBench 进行并发测试 使用 Makefile 简化构建操作命令 如果这个实例,对你了解 kakfa 有所帮助,请为项目添加 star ,非常感谢...阅读全文

Golang 方法接收者是值还是指针问题

对于普通结构体作为接收者,值和指针并没有区别。 (以下代码摘抄自Go In Action 中文版) type defaultMatcher struct{} // 方法声明为使用 defaultMatcher 类型的值作为接收者 func (m defaultMatcher) Search(feed *Feed, searchTerm string) // 声明一个指向 defaultMatcher 类型值的指针 dm := new(defaultMatch) // 编译器会解开 dm 指针的引用,使用对应的值调用方法 dm.Search(feed, "test") // 方法声明为使用指向 defaultMatcher 类型值的指针作为接收者 func (m *defaultMatcher...阅读全文

博文 2018-06-07 15:30:02 gardenofhu

中介者模式 Go语言实现

对于一个模块或者系统,可能由很多对象构成,而且这些对象之间可能存在相互的引用,在最坏的情况下,每一个对象都知道其他所有的对象,这无疑复杂化了对象之间的联系。虽然将一个系统分割成许多对象通常可以增强可复用性,但是对象间相互连接的激增又会降低其可复用性,大量的相互连接使得一个对象似乎不太可能在没有其他对象的支持下工作,系统表现为一个不可分割的整体,而且对系统的行为进行任何较大的改动都会十分困难。结果是你不得不定义大量的子类以定制系统的行为。因此,为了减少对象两两之间复杂的引用关系,使之成为一个松耦合的系统,我们需要使用中介者模式. 中介者模式:用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。中介者模式又称为调停者模式。...阅读全文

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

Go语言开发(十五)、Go语言常用标准库五

Go语言开发(十五)、Go语言常用标准库五 一、md5 1、md5简介 md5在crypto/md5包中,md5包提供了New和Sum方法。 func New() hash.Hash func Sum(data []byte) [Size]byte hash.Hash继承了io.Writer,因此可以将其当成一个输入流进行内容的更新。 type Writer interface { Write(p []byte) (n int, err error) } Write方法将p中的内容读入后存入到hash.Hash,最后在Sum方法通过内部函数checkSum计算出其校验和。Sum函数是对hash.Hash对象内部存储的内容进行校验和计算然后将其追加到data的后面形成一个新的byte切片。通常...阅读全文

博文 2019-01-20 00:35:14 天山老妖S

GO语言学习-方法和接口

方法: 指包含了接受者的函数,接受者可以是命名类型或者结构体类型的一个值或者是一个指针。 例: type Food struct{ color string taste string } func ( fruit Food) Eat() string { return fmt.Sprintf("%v,%v)", fruit.color, fruit.taset) } Food为结构体类型,Eat为Food类型的方法, Eat方法的接受者是Food类型的值(或指针 func ( fruit * Food) Eat() string)。 apple := Food{"red", "sweet"} 或 apple := &Food{"red", "sweet"} 方法使用 apple.Eat() ...阅读全文

博文 2015-06-17 23:02:27 phlong999

go语言面向对象

go语言可通过struct声明新的类型 新建一个类型person type Person struct { name string age int } var p1 Person p1.name = 'liming' p1.age = 18 新建一个类型student,可以通过匿名字段将person所有字段隐式引入student type Student struct { Person //隐式引入 school string name string } s1 := Student{Person{'zhangliang',23}, 'hign school','new name'} s1.age //23 可直接访问Person的字段 s1.name //new name 最外层优先访问,重...阅读全文

博文 2016-05-11 00:00:00 wojiong132

go-tour (2)

继go-tour (1)之后,整理go-tour教程中,有关go语言的方法、接口和并行。 3 方法和接口 3.1 方法 Go没有类。不过你可以为结构体类型定义方法。 方法就是一类带特殊的 接收者 参数的函数。 方法接收者在它自己的参数列表内,位于 func 关键字和方法名之间。 在此例中, Abs 方法拥有一个名为 v ,类型为 Vertex 的接收者。 methods.go package main import ( "fmt" "math" ) type Vertex struct { X, Y float64 } func (v Vertex) Abs() float64 { return math.Sqrt(v.X*v.X + v.Y*v.Y) } func main() { v :...阅读全文

博文 2016-11-06 10:00:03 tianzhaixing

Golang方法和接口

在编程语言中,方法和函数的概念需要搞清楚。函数指的是一个封装的代码块,我们可以直接调用它,并返回结果。而方法其实也是一种函数,只不过方法需要和某个对象绑定。Golang并没有类的概念,不过仍然有方法和接口这些概念。 方法 方法接收者 方法接收者是一个特殊参数,给函数指定了这个参数之后,函数就成为方法了。这个特性有点像Kotlin和C#中的扩展方法,定义了带有接收者的方法之后,接收者这个类型就好像定义了这个方法一样,我们可以直接在该类型上调用方法。这在功能上,和面向对象的概念是很类似的。 例如下面这样,定义了一个汽车结构,然后定义了一个接受者方法。然后就可以用面向对象的方式来调用这个方法了。 func Method() { //方法接收者 car := Car{id: 1} car.beep(...阅读全文

博文 2017-08-03 13:05:04 乐百川

全局命名系统Upspin

Google 的一组开发者[宣布](https://security.googleblog.com/2017/02/another-option-for-file-sharing.html)了一个非官方开源项目  Upspin :某种全局命名系统。它不是 Google 的项目,但得到了 Google 的支持。 开发者称,现有的文件共享机制支离破碎,人们浪费了很多时间在多个步骤的拷贝和重新打包上。Upspin 通过向所有文件提供一种全局性的命名空间去试图改进这种状况。使用 Upspin 命名,一个文件不需要下载再上传就能安全的共享高效的拷贝,让任何有权限的人访问。 举例来说,用户有一个文件名字叫 ann@example.com/dir/file,任何有权限的人都可以通过 Upspi...阅读全文

go-struct、方法

package main import "fmt" func main() { //创建对象,通过.方式进行初始化 a := person{} a.name = "wyf" a.age = 30 fmt.Println(a) //创建对象,通过类似构造的方式进行初始化 b := person{ name: "wyff", age: 300, } fmt.Println(b) //值传递 A(b) fmt.Println(b) //person引用传递 fmt.Println("-------引用地址传递--------") B(&b) fmt.Println(b) fmt.Println("-------初始化一个引用地址类型--------") r := &person{ name: "x...阅读全文

博文 2016-08-30 20:00:08 u013210620

Go Web 编程--如何确保Cookie数据的安全传输

什么是Cookie Cookie(也叫Web Cookie或浏览器Cookie)是服务器发送到用户浏览器并保存在本地的一小块数据,它会在浏览器下次向同一服务器再发起请求时被携带并发送到服务器上。通常,它用于告知服务端两个请求是否来自同一浏览器,如保持用户的登录状态。Cookie使基于无状态的HTTP协议记录稳定的状态信息成为了可能。 Cookie主要用于以下三个方面: 会话状态管理(如用户登录状态、购物车、游戏分数或其它需要记录的信息) 个性化设置(如用户自定义设置、主题等) 浏览器行为跟踪(如跟踪分析用户行为等) Go语言如何表示Cookie 在Go的net/http库中使用http.Cookie结构体表示一个Cookie数据,调用http.SetCookie函数则会告诉终端用户的浏览器把...阅读全文

博文 2020-03-08 21:34:25 kevinyan

go语言实现接口,接受者应该是传值还是传引用(传引用兼容传值)

/* go语言中给接口赋值的时候,对象如果是值(对于引用的接受者处理不了) 如果是指针,则可以自动实现值的处理 */ package main import "fmt" //定义Integer类型 type Integer int type LessAddInf interface{ Less(n Integer) bool Add(n Integer) Integer } func (this Integer) Less(n Integer) bool{ return this < n } func (this *Integer) Add(n Integer) Integer{ *this += n return *this } type Computer struct{ CPU stri...阅读全文

博文 2016-10-27 15:00:03 davidsu33

Go methods for types

You can define methods on struct types. The method receiver appears in its own argument list between the func keyword and the method name. The code snipers here just run as it looks like, so no results given. package main import ( "fmt" "math" ) type Vertex struct { X, Y float64 } func (v *Vertex) Abs() float64 { //一个Vertex指针类型的接收器,也是方法调用者 return m...阅读全文

博文 2015-12-21 20:00:00 resouer

老司机带你用 Go 语言实现 Raft 分布式一致性协议

老司机带你用 Go 语言实现 Raft 分布式一致性协议  随着大型网站的各种高并发访问、海量数据处理等场景越来越多,如何实现网站的高可用、易伸缩、可扩展、安全等目标就显得越来越重要。   为了解决这样一系列问题,大型网站的架构也在不断发展。提高大型网站的高可用架构,不得不提的就是分布式。任何一个分布式系统都无法同时满足 Consistency(一致性),Availability(可用性),Partition tolerance(分区容错性)这三个基本需求,最多只能满足其中两项。 但是,一个分布式系统无论在 CAP 三者之间如何权衡,都无法彻底放弃一致性(Consistency),如果真的放弃一致性,那么就说明这个系统中的数据根本不可信,数据也就没有意义,那么这个系统也就没有任何价值可言。所...阅读全文

博文 2017-03-23 08:20:49 chauncy

golang-nsq消息队列应用

消息队列由生产者和消费者共同协作,生产者产生消息放入队列中,消费者从队列中取出消息。 1.消费者 type Producer struct { id int64 addr string conn producerConn config Config logger logger logLvl LogLevel logGuard sync.RWMutex responseChan chan []byte errorChan chan []byte closeChan chan int transactionChan chan *ProducerTransaction transactions []*ProducerTransaction state int32 concurrentProduce...阅读全文

博文 2017-10-09 01:30:01 fwdqxl

go-struct、方法

package main import "fmt" func main() { //创建对象,通过.方式进行初始化 a := person{} a.name = "wyf" a.age = 30 fmt.Println(a) //创建对象,通过类似构造的方式进行初始化 b := person{ name: "wyff", age: 300, } fmt.Println(b) //值传递 A(b) fmt.Println(b) //person引用传递 fmt.Println("-------引用地址传递--------") B(&b) fmt.Println(b) fmt.Println("-------初始化一个引用地址类型--------") r := &person{ name: "x...阅读全文

博文 2016-08-21 19:00:08 u013210620

区块链矿池的分配模式

### 作者介绍 JouyPub 技术经理 某互联网公司 ### 产生背景   当下各种以挖矿来获得收益的币种,随着时间的推移,挖矿的难度也越来越大,如果仍然靠单机去挖矿,几乎已经不可能了,所以就有矿池。例如按照当前的算力(20EH/s),一个20TH/s的矿机,挖到一个区块的时间为19年,也就是说如果单机挖矿需要19年才能获得奖励,这其中还不包括机器损耗、难度增大等因素,所以只有大家加入到一个矿池,共享自己的算力,爆块后,根据不同的分配模式,奖励再分配给个人。这种挖矿模式可以让个人的收益更加稳定,对于矿池而言,也会收取一些交易手续费。 顺便我们来算下现在挖矿多少天能回本。以蚂蚁矿机为例,每台的算力大概为20TH/s,功率1700W,成本取5000元,全网算力取20EH/s,当前爆块奖励为1...阅读全文

博文 2018-09-22 00:19:26 chongdongshequ

GO面向对象:method

method的语法如下: func (r ReceiverType) methodName(parameters) (results) go中的method是附属在一个给定的类型上的,他的语法和函数的声明语法几乎一样,只是在方法名之前增加了一个receiver,也就是method所依附的主体(可以面向对象中的对象理解) 例如下面的例子: type Box struct { width, heigh, depth float64 } func (b Box) Volume() float64 { return b.width * b.heigh * b.depth } func main(){ b:=Box{4,4,4} volume:=b.Volume() } Volume这个method是...阅读全文

博文 2016-01-29 18:00:01 fzk2008

兄弟连区块链教程Fabric1.0源代码分析ECDSA椭圆曲线数字签名算法

##兄弟连区块链教程Fabric1.0源代码分析ECDSA椭圆曲线数字签名算法,2018年下半年,区块链行业正逐渐褪去发展之初的浮躁、回归理性,表面上看相关人才需求与身价似乎正在回落。但事实上,正是初期泡沫的渐退,让人们更多的关注点放在了区块链真正的技术之上。 # Fabric 1.0源代码笔记 之 ECDSA(椭圆曲线数字签名算法) ## 1、椭圆曲线算法概述 ### 1.1、无穷远点、无穷远直线、射影平面 * 平行线相交于无穷远点; * 直线上有且只有一个无穷远点; * 一组相互平行的直线有公共的无穷远点; * 平面上任何相交的两直线,有不同的无穷远点; * 全部无穷远点沟通一条无穷远直线; * 平面上全部无穷远点和全部普通点构成射影平面。 ### 1.2、射影平面点定义 对于普通平面上...阅读全文

博文 2018-11-09 15:11:26 ITXDL

设计模式-04-职责链模式

职责链模式概述职责链模式是使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。 实现使用数据过滤类来实现职责链模式。用户传递数据给FilterChain类,但是数据具体会被哪个过滤器处理客户并不知道,FilterChain最终会返回被过滤后的数据给用户。 总结与分析职责链模式让请求者和接收者解耦,从而可以动态地切换和组合接收者 代码实现:职责链模式(php/go...阅读全文

博文 2019-04-11 09:34:40 疯狂的卡卡

gof23结构类模式(golang版)

适配器模式 Adapter模式也被称为Wrapper模式,有以下两种: 类适配器(使用继承) https://design-实现目标接口,继承被适配类 对象适配器(使用委托) 继承目标类,依赖被适配类 参考http://blog.51cto.com/liuxp08... package main import ( "fmt" ) func main() { duck := &MallardDuck{} turkey := &WildTurkey{} turkeyAdapter := NewTurkeyAdapter(turkey) fmt.Println("The Turkey says...") turkey.gobble() turkey.fly() fmt.Println("The D...阅读全文

博文 2018-12-02 13:34:44 菟潞寺沙弥

区块链技术

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 第一章:区块链基本知识 1.区块链概念 顾名思义,“区块链”是一个链表,这个链表由所有人共同维护和认可。 1.1.什么是区块链 区块链(Block chain)是一种分布式共享数据库(数据分布式储存和记录),利用去中心化和去信任方式集体维护一本数据薄的可靠性的技术方案。 如果把区块链作为一个状态机,则每次交易就是试图改变一次状态,而每次共识生成的区块,就是参与者对于区块中所有交易内容导致状态改变的结果进行确认。 1.2.区块链的特点 区块结构有两个非常重要的特点: l每个区块的块头包含了前一区块的交易信息的压缩值,因此从创始块到当前区块形成了链条。 l每个区块主体上的交易记录是前一区块创建后、该区块创建前发生的所...阅读全文

博文 2019-09-12 18:02:37 链客

Golang RabbitMQ学习笔记(1 : 简单实现消息发送接收)

****1:生产者**** ```go package main import ( "github.com/streadway/amqp" "log" ) //错误处理 func FailOnError(err error, msg string) { if err != nil { log.Fatalf("%s:%s", msg, err) } } func main() { conn, err := amqp.Dial("amqp://guest:guest@localhost:5672/") FailOnError(err, "连接RabbitMQ失败") defer conn.Close() ch, err := ...阅读全文

兄弟连区块链技术培训Fabric 1.0源代码分析(34) Peer #peer chaincode命令及子命令实现

兄弟连区块链技术培训Fabric 1.0源代码分析(34) Peer #peer chaincode命令及子命令实现# Fabric 1.0源代码笔记 之 Peer #peer chaincode命令及子命令实现## 1、peer chaincode install子命令实现(安装链码)### 1.0、peer chaincode install子命令概述peer chaincode install,将链码的源码和环境封装为一个链码安装打包文件,并传输到背书节点。peer chaincode install支持如下两种方式:* 指定代码方式,peer chaincode install -n <链码名称> -v <链码版本> -p <链码路径>* 基于链码打包文件方式,peer chainc...阅读全文

博文 2018-07-23 15:34:59 Delete_88c3

接口interface

在编程语言中,方法和函数的概念需要搞清楚。函数指的是一个封装的代码块,我们可以直接调用它,并返回结果。而方法其实也是一种函数,只不过方法需要和某个对象绑定。Golang并没有类的概念,不过仍然有方法和接口这些概念。 方法 方法接收者 方法接收者是一个特殊参数,给函数指定了这个参数之后,函数就成为方法了。这个特性有点像Kotlin和C#中的扩展方法,定义了带有接收者的方法之后,接收者这个类型就好像定义了这个方法一样,我们可以直接在该类型上调用方法。这在功能上,和面向对象的概念是很类似的。 例如下面这样,定义了一个汽车结构,然后定义了一个接受者方法。然后就可以用面向对象的方式来调用这个方法了。 func Method() { //方法接收者 car := Car{id: 1} car.beep(...阅读全文

博文 2018-12-28 12:34:43 陈卧虫

golang[33]-blockchain-hash

哈希函数有三个特点:输入无限的字符会输出给我们固定长度的字符(即便是图书馆里面所有的数据)输入的函数的微小变化最后都会带来哈希函数返回值的巨大变化。哈希函数的特点是不能根据哈希函数的返回值倒推出我们输入的数据是什么。同样的,我们在计算哈希函数之前,也不能够判断出数据回输出什么样的哈希值。用途数字指纹数字签名数字防篡改go实现hash123456789101112131415161718192021222324252627func main(){ //第一种方式 sum:= sha256.Sum256([]byte("jonson love olaya")) fmt.Printf("%X",sum) //第2种方式 h:=sha256.New() h.Write([]byte("jonson ...阅读全文

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

golang channel通讯

基于channel的通讯,对于无缓存的channel 发送的成功之时,接收者已经收到了。 接收,发生在发送者成功之前。 为什么会这样呢,如果我们靠记忆,就会怎么样,终究没有忘记快。可是如果我们能够从原理上来理解,也许就不容易忘记了。Golang的协程是协作式的,所以呢,如果发送者发送,那接收者存在一个何时运行的问题,如果发送成功之后,接收者才运行,不是说不可以,总少了那么一点点的协同的味道了。所以,如果换你来实现,一定也是发送者发送,送到接收者,唤起接收者运行(这时,发送者挂起了),然后到发送者重新回来运行的时候,接收者已经接收到了。 再扩展一下,对于带缓存的怎么办呢?这时候,其实就要看是谁,在什么 情况下阻塞了。总之,不能够自己一直运行下去,得给对方(你亲爱的合作方)运行的机会...阅读全文

Golang学习笔记 方法和接口

版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/u011054333/article/details/76650083 在编程语言中,方法和函数的概念需要搞清楚。函数指的是一个封装的代码块,我们可以直接调用它,并返回结果。而方法其实也是一种函数,只不过方法需要和某个对象绑定。Golang并没有类的概念,不过仍然有方法和接口这些概念。 方法 方法接收者 方法接收者是一个特殊参数,给函数指定了这个参数之后,函数就成为方法了。这个特性有点像Kotlin和C#中的扩展方法,定义了带有接收者的方法之后,接收者这个类型就好像定义了这个方法一样,我们可以直接在该类型上调用方法。这在功能上,和面向对象的概念是很类似的。 例如下面这样,定义了一个汽车结构,然后定义了...阅读全文

博文 2019-04-29 07:31:37 u011054333

golang中compress/lzw包

lzw包中提供压缩和解压两种操作 函数列表: func NewReader(r io.Reader, order Order, litWidth int) io.ReadCloser func NewWriter(w io.Writer, order Order, litWidth int) io.WriterCloser (1)压缩 func NewWriter(w io.Writer, order Order, litWidth int) io.WriterCloser 参数列表: 1)w 输出压缩数据的io.Wrier 2)order lzw数据流的位顺序,有LSB和MSB 3)litWidth 字面码的位数,必须在[2,8]范围内,一般位8 返回值:一个io.WriteCloser,...阅读全文

博文 2018-12-07 16:34:51 laijh

Go语言实战笔记(九)| Go 接口

《Go语言实战》读书笔记,未完待续,欢迎扫码关注公众号flysnow_org,第一时间看后续笔记。 接口是一种约定,它是一个抽象的类型,和我们见到的具体的类型如int、map、slice等不一样。具体的类型,我们可以知道它是什么,并且可以知道可以用它做什么;但是接口不一样,接口是抽象的,它只有一组接口方法,我们并不知道它的内部实现,所以我们不知道接口是什么,但是我们知道可以利用它提供的方法做什么。 抽象就是接口的优势,它不用和具体的实现细节绑定在一起,我们只需定义接口,告诉编码人员它可以做什么,这样我们可以把具体实现分开,这样编码就会更加灵活方面,适应能力也会非常强。 func main() { var b bytes.Buffer fmt.Fprint(&b,"Hello World") ...阅读全文

博文 2017-04-10 02:23:24 飞雪无情flysnow_org

分享一个让我进入阿里中间件的个人项目

作者: vangoleo官网: http://www.vangoleo.com/iris-java/ 背景 时光荏苒,进入阿里中间件团队已经快两年时间了。这期间,有幸参与了第四届中间件性能挑战赛的题目组,筹备了以“Dubbo Mesh”为主题的初赛题;和团队一起开展了Dubbo线下meetup活动;将阿里多年双11积累的中间件基础设施最佳实践和方法论,通过阿里云的商业化产品,为广大开发者和企业提供服务。很庆幸能有这样一段难忘的经历。回想起来,能进入中间件团队,和我当初的一个Github项目还有关系。今天把该项目分享给大家。 Q: 什么是中间件团队?A: 阿里巴巴中间件技术部,是世界顶尖的Java技术团队之一,起源于淘宝平台架构组,是跟随着阿里电商业务和双十一成长起来的技术团队,解决复杂的业务...阅读全文

博文 2019-11-12 10:02:43 vangoleo