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

对Golang interface的理解

理解golang的interface主要在于以下两点: interface是方法的集合 interface是一种类型 简单示例 package main import "fmt" type Animal interface { Speak() string } type Cat struct{} func (c Cat) Speak() string { return "cat" } type Dog struct{} func (d Dog) Speak() string { return "dog" } func Test(params interface{}) { fmt.Println(params) } func main() { animals := []Animal{Cat{}...阅读全文

博文 2017-06-27 13:08:38 GoDev

【项目分析】公信宝GXS

作为一个区块链超级小白,最开始的时候我以为公信宝就等同于布洛克城app,就是上传我们的数据,然后挖矿。在读了项目白皮书和其它资料后,才知道公信宝的世界超越我的想象,让我们一起来看看吧。 一、项目简介 GXChain(公信链)是公信宝团队打造的一条数据交换公有区块链,是公信宝数据交易所的底层链,不仅支撑着公信宝数据交易所高频的数据交易交换,还支持开发者开发应用。在公信链上开发应用,不仅可以利用区块链的技术特性,还可以获得各行业多维度数据的支持,做出非常落地于民生的有价值应用。 已经开发出来并上线的应用,证明了公信链在商业上的可用性,基于GXChain的第一个企业级应用——公信宝去中心化交易所,已经在2017年9月24日正式商业化落地。 基于公信链的第二个应用,也是第一个大型个人端应用——公信宝...阅读全文

博文 2018-06-28 18:34:40 不可一日不拱卒

golang 组合和接口

一,组合 golang 中一切 皆是类型 这个和 面向对象的 概念有点像 ,但是又不太像,和javascript倒是有些相似之处 那么如何实现 像 Java中的 继承呢,golang使用的是组合 请看代码 和 运行输出 说明一切 type father struct { name string sex int } type sun struct { father name string } func main() { s:=sun{father:father{name:"father",sex:11},name:"sun"} fmt.Println(s) fmt.Println("name",s.name) fmt.Println("name",s.father.name) fmt.Prin...阅读全文

博文 2016-04-11 14:00:03 lzp2011150309

golang interface赋值

说说我对golang的interface赋值的理解。 先说golang中类型方法定义。 如 type bird struct { id int } func (b bird) fly() { fmt.Println("fly") } func (b *bird) eat() { b.id++ } 中bird类型有两个方法,fly和eat。 两个方法是有区别的,fly由(b bird)绑定,eat由(b *bird)绑定。 在应用中,(b *bird)绑定方式可以修改对象中的参数,而(b bird)方式则不可以。 再来说接口的赋值。接口赋值可以分为对象对接口的赋值和接口对接口的赋值。 对象对接口的赋值需要对象完全实现接口定义的所有方法。 如定义如下接口 type animal interfac...阅读全文

博文 2015-06-17 20:02:23 iwbno1

RPCX使用案例

花了一个礼拜整理了一下 RPXC的使用方法,大致过程如下:服务器端开发首先,我们需要实现自己的服务,这很简单,就是定义普通的方法即可:package example import ( "context" "fmt" ) type Args struct { A int B int } type Reply struct { C int } type Arith int func (t *Arith) Mul(ctx context.Context, args *Args, reply *Reply) error { reply.C = args.A * args.B fmt.Printf("call: %d * %d = %d\n", args.A, args.B, reply.C) ret...阅读全文

博文 2018-08-07 16:59:58 lsr199461

关于Skycoin, 我所知道的50件事#skycoin

关于Skycoin,你应该知道的50件事1.Skycoin是新一代去中心化互联网和世界上最先进的区块链应用 平台。2.Skycoin是由比特币和以太坊的早期开发者发明的第三代区块链 平台。它还修复了其他区块链网络相关的安全问题,并将加密货币的 创建与挖掘过程分离。使Skycoin真正地做到了去中心化,满足了 Satoshi创建比特币的原始愿景。3. 正在从头开始重建互联网,使得用户可以摆脱对网络服务 提供商(ISP)的依赖。这也解决了过去用户数据被ISP监控,追踪、 销售等问题。Skyminers加密和处理人们的互联网数据。需要使用天线在全球范围 内发送/传输数据,而无需通过地下/海底光纤电缆和卫星以便ISP来 提供互联网。这样,巨型ISP公司就无法控制互联网。人们有权力对 自己的互联网做主...阅读全文

博文 2019-05-22 01:34:45 钢铁肥蛋嘭嘭嘭

golang中 方法集的概念,你了解么?

go规范中提到过方法集的概念,你了解么?下面的代码输出结果是啥? package main import "fmt" type t1 int type t2 int func( t *t1) String() string { return "ptr" } func( t t2) String() string { return "val" } func main() { var a t1 var b t2 a = 5 fmt.Println( a, b) } 结果分析: 指针的方法集包括两部分:(t *T)这样的方法和(t T)这样的方...阅读全文

IPFS+FILECOIN:下一个网络世界的霸主,没有之一

【前言】 在没有比特币系统以前,互联网世界一片祥和。自从BTC的问世,这一传统互联网领域的被区块链的这一新的生产关系逐渐蚕食。 任何伟大想法的出现以及落地,必须要有一种完美的激励体系才能让其发扬光大。 今天,当ipfs遇上filecoin,下一个网络世界的霸主应运而生,而且这个霸主没有之一。 下面小编就带您详细了解一下下一个网络世界的霸主。【背景】当前互联网正处于一场革命中:1、集中式专有服务正在被去中心化开放服务所代替;2、信任式参与被可验证式计算所代替;3、脆弱的位置寻址被弹性的内容寻址所代替;4、低效率的整体式服务被点对点算法市场所代替;5、比特币、以太坊和其他的区块链网络已经证明了去中心化交易账本的有效性。这些公共账本处理复杂的智能合约应用程序和交易价值数百亿美金的加密资产。这些系统...阅读全文

博文 2018-07-08 09:34:41 向往自由的孩子

区块链技术产生数字货币时代

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 比特币是一种革命性的数字货币,更是一种颠覆性的创新技术。比特币最大的贡献是创造了信用,解决了困扰互联网进一步发展的拜占庭将军问题。 同时,比特币点对点的网络模式,起到了去中心化的作用,可以提供便捷、有效、安全的价值转移服务。并且,比特币网络用比特币奖励矿工们积极挖矿,为比特币的发展提供了巨大动力。 比特币是一种点对点的支付系统,在这个系统内,支持使用者进行点对点交易转账,从而不再需要银行或者类似支付宝这样的第三方了。这些交易数据每过十分钟左右,都会被打包在一个名为“区块”的文档中,这些“区块”依赖加密哈希函数链接在一起,形成了区块链。 我们常说的比特币挖矿,是指矿工们在比特币世界中利用电脑去计算加密过的哈希值,验...阅读全文

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

关于SMT,你需要知道的

想知道什么是SMT,首先你总得了解,这三个字母代表的意思: Smartmesh Token。字面意思一目了然,Smartmesh的通证。要了解Smartmesh,自然要先知道什么是mesh,以及它是如何变得smart。 什么是mesh网络?MESH网络:即”无线网格网络”,它是多跳(multi-hop)网络,是由ad hoc网络发展而来,是解决“最后一公里”问题的关键技术之一。在向下一代网络演进的过程中,无线是一个不可缺的技术。无线mesh可以与其它网络协同通信。是一个动态的可以不断扩展的网络架构,任意的两个设备均可以保持无线互联,具有动态自组织、自配置、自维护等突出特点。Mesh网络的五大优势: 快速部署和易于安装 非视距传输(NLOS) 健壮性 结构灵活 高带宽 Mesh网络关键技术: ...阅读全文

Janus WebRTC Server研究

前言 未编译及测试,直接裸看Janus WebRTC Server代码。 WebRTC本身只支持点对点,群聊只能客户端通过发多路音视频数据给别的客户端,对于客户端压力非常大,所以无法支持更多人的群聊,而且有些NAT是无法通过点对点对连的,所以需要一个中转服务器来中转,经过初步考察有kurento、 licode、 janus三个主要的开源项目,其中又以janus的star最多,所以就先拿这个项目研究一下,我个人是有点想写个golang版本来替代。 janus github地址:https://github.com/meetecho/janus-gateway janus原理 初看了一下janus源码,大概原理如下: janus使用ICE模拟WebRTC客户端与真实的WebRTC客户端进行交换...阅读全文

博文 2018-10-16 09:34:42 云上听风

TIM:高带宽特征的点对点数字货币-数字货币项目点评

声明:本测评内容仅供参考,任何依本测评内容作出的投资行为,与本测评内容无关。项目有风险,投资需谨慎。 TIM项目创建了一种高带宽点对点货币块链结构体系,该体系将使各种类型的社会价值商品在一个单一的系统上得到了高效的处理,从而提高了跨行业的商业性、安全性、分散性以及可靠性。项目应用了弹性DAG架构技术、GPS节点标识技术、免费子链以及量子安全加密等技术。TIM也是世界上第一个基于量子安全技术的区块链项目。 去中心化是区块链的重要特征之一,但同时也带来了处理数据效率低的问题。目前通过采用大规模分散的分类账本技术,取代以中介为基础的金融或商业系统的可能性正在逐步成为现实。目前在基于DLT的体系结构上正在测试的多种类型的实用程序,虽然说早期的成功可以推动各种类型商业的数字化,但是区块链的带宽问题在很...阅读全文

博文 2018-08-15 13:36:18 币圈百小生

TIM:具有高带宽特征的点对点数字货币 | ONETOP评级

声明:本测评内容仅供参考,任何依本测评内容作出的投资行为,与本测评内容无关。项目有风险,投资需谨慎。Statement: the contents of this assessment are for reference only. Any investment behavior made according to the contents of this assessment is not related to the contents of this assessment. The project is risky and the investment must be prudent. TIM项目创建了一种高带宽点对点货币块链结构体系,该体系将使各种类型的社会价值商品在一个单一的系统上得...阅读全文

博文 2018-08-15 12:35:33 ONETOP评级

go的方法

receiver为值的方法,编译器实现了对应的receiver为指针的方法,不是简单的取值后调用的包装,而是真正操作该字段 receiver为指针的方法,则没有实现对应的receiver为值的方法,值可以调用只是语法糖(取指针后调用) 编译器对接口则没有语法糖提供 method-value绑定的receiver在绑定时就确定了,乃是一个拷贝,而非外部变量 method-expression则与普通的函数无异(注意receiver类型的不同) package main type INT int func (i INT) A() { print(int(i)," ") } func (i *INT) B() { print(int(*i)," ") } func (i INT) C() { i+...阅读全文

博文 2014-10-04 19:27:49 刘地

Java消息队列总结只需一篇解决ActiveMQ、RabbitMQ、ZeroMQ、Kafka

一、消息队列概述消息队列中间件是分布式系统中重要的组件,主要解决应用解耦,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构。目前使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ二、消息队列应用场景以下介绍消息队列在实际应用中常用的使用场景。异步处理,应用解耦,流量削锋和消息通讯四个场景。2.1异步处理场景说明:用户注册后,需要发注册邮件和注册短信。传统的做法有两种 1.串行的方式;2.并行方式a、串行方式:将注册信息写入数据库成功后,发送注册邮件,再发送注册短信。以上三个任务全部完成后,返回给客户端。​b、并行方式:将注册信息写入数据库成功后,发送注册邮件的同时,发送注册短信。以上三个任务完成后,返回给客户端...阅读全文

博文 2018-09-21 00:08:41 Spring51

诚聘golang开发工程师武汉

因公司发展需要武汉分公司招聘:Golang技术工程师3名 一:岗位要求 1、熟悉golang语言,精通JAVA/Python/C++/Go/PHP/solidity等语言经验中至少一种编程语言或其他开发语言, 具有良好的编程 习惯和风格。 2、专科及以上学历,软件工程、计算机等相关专业,具有较强的学习沟通和口头表达能力。 3、对计算机网络系统有深刻理解,有分布式,点对点网络协议或应用开发经验。 二:有以下经验优先; 1、有一年以上GO语言开发经验或有实际相关项目经验均口,有开发过撮合制交易系统,大并发,分布式架构应用系统优先。 2、熟悉TCP/IP协议、HTTP协议,了解P2P网络协议,最好有了解区块链底层和以太坊接口和区块链智能合约...阅读全文

Java消息队列总结只需一篇解决ActiveMQ、RabbitMQ、ZeroMQ、Kafka

一、消息队列概述消息队列中间件是分布式系统中重要的组件,主要解决应用解耦,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构。目前使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ二、消息队列应用场景以下介绍消息队列在实际应用中常用的使用场景。异步处理,应用解耦,流量削锋和消息通讯四个场景。2.1异步处理场景说明:用户注册后,需要发注册邮件和注册短信。传统的做法有两种 1.串行的方式;2.并行方式a、串行方式:将注册信息写入数据库成功后,发送注册邮件,再发送注册短信。以上三个任务全部完成后,返回给客户端。b、并行方式:将注册信息写入数据库成功后,发送注册邮件的同时,发送注册短信。以上三个任务完成后,返回给客户端。...阅读全文

博文 2018-09-20 16:17:45 Java1324

windows go开发环境(3) IDE

git的命令行git bash用起来虽然很方便,但是有时不够直观。 git同时提供了git GUI工具。 windows下也可以使用更强大的sourcetree工具(同时支持gir,hg,svn,便于多项目查看)。 不过我对装.net framework总是心有芥蒂。能不用就不用了。 还可以在sublime里面安装sublimegit插件。这样就可以直接在sublime里面完成git status, git commit,git diff,git push等操作。 sublime3自带 go.sublime,支持go的语法高亮和补全、 还需要添加sublime下的go编译系统,在sublime下选择【工具菜单】,选择【编译系统】,继续选择【新编译系统】,在弹出的文件内写入如下代码: { "c...阅读全文

博文 2016-08-24 11:00:02 laputa73

模仿go语言的C语言面向对象范式

/** *C语言模拟go语言对多态的实现 *定义一个接口,一个类实现了该接口的所有函数, *则这个类即为该接口的实现,不显式声明一个类实现的接口 * *在C语言中,则定义一个包含一组函数指针的结构体模拟接口 *子类有一个创建该结构体的函数,则表示该子类实现接口 */ #include #include #include #ifndef SAFE_FREE #define SAFE_FREE(p) \ do \ { \ free(p); \ p = NULL; \ } while (0) #endif //SAFE_FREE /** *定义接口 *cthis是一个指针,指向实现该接口的类 *eat是接口包含的函数(函数指针) */...阅读全文

博文 2015-06-17 23:01:48 bbeikke

消息队列应用-使用异步队列就解耦了吗

消息队列作用一文介绍了为什么要使用消息队列。我们再来讨论下如何有效使用消息队列。 消息队列模式 目前主流消息队列主要由两种模式,1个是点对点模式,1个是发布订阅模式。简单做下介绍 点对点模式 1个消息只会被一个消费者消费。可以有一个或者多个消费者同时消费一个队列,但是被消费的消息不会重复。 发布订阅模式 消息可以被多个消费者消费。此类队列一般被称为一个topic,所有订阅该topic的consumer都可消费所有消息。 目前市面上有很多消息队列产品,ActiveMq,RabbitMQ,Kafka,ZeroMQ,golang实现的NSQ,支持的队列模式基本都可以以上面两个模式总结,只是实现方式不同,具体选型需要根据自己的使用场景选择。 比如kafka以其优异的性能应用在日志收集,hadoop技...阅读全文

博文 2019-08-25 23:32:52 刘凯_7013

go lang学习笔记——接口

go接口非常强大,除了作为一般的接口使用外。它还是go的运行时多态的基础。更能提供超越boost::any的能力。许式伟的《go语言编程》一书中有对接口的机制作较深入的剖析和介绍。 结合书中描述再加上我自己的理解。整理了一下go接口的数据结构和基本操作的描述。 有必要说明的是,以下结构引用的部分书中代码,并且做了极大的精减,只为了能用最简单的方式描述并理解go接口的实现原理。如果我的理解和实现情况相差千里,还望指正。 类型的数据结构 typedef struct _MemberInfo { const char * tag; // 方法原型 void * addr; // 方法地址(函数入口地址) } MemberInfo; typedef struct _TypeInfo { Member...阅读全文

博文 2015-06-17 23:08:10 nobugtodebug

高性能消息中间件——NATS

前 言这段时间我的主要工作内容是将公司系统中使用的RabbitMQ替换成NATS,而此之前我对Nats一无所知。经过一段时间紧张的学习和开发之后我顺利的完成了任务,并对消息中间件有了更深的了解。在此感谢同事钟亮在此过程中对我的帮助。NATS属于比较小众的一款中间件产品,中文资料基本上是没有的,故写以记之,为想学习Nats的同学提供一点帮助。 在介绍NATS之前先了解下什么是分布式系统和消息中间件对于分布式系统的定义,一直以来我都没有找到或者想到特别简练而又合适的定义,这里引用一下Distributed System Concepts and Design (Thrid Edition)中的一句话A distributed system is one in which components l...阅读全文

博文 2019-01-16 20:34:42 中间件

TIM:项目应用了弹性DAG架构技术、GPS节点标识技术

声明:本测评内容仅供参考,任何依本测评内容作出的投资行为,与本测评内容无关。项目有风险,投资需谨慎。Statement: the contents of this assessment are for reference only. Any investment behavior made according to the contents of this assessment is not related to the contents of this assessment. The project is risky and the investment must be prudent. TIM项目创建了一种高带宽点对点货币块链结构体系,该体系将使各种类型的社会价值商品在一个单一的系统上得...阅读全文

博文 2018-08-15 13:36:18 脑爆炸

Rust 从基础到实践(9) 特征(上)

rust_logo.jpg 这些天主要学习 golang 和 typescript,所以接触很多有关接口的概念,也加深了我对接口的理解。今天我们看一看在 Rust 中是如何定义接口和如何实现接口。接口可以提供对行为抽象,让不同类型共享相同的抽象行为。不过在Rust这里是用关键字trait而不是interface来定义接口,不知道接口在 Rust 中使用和应用和其他语言还有什么不同,而是仅仅就是名字不同。 trait 定义 pub trait Summary { fn summarize(&self) -> String; } 接下来定义要实现特征的类别,我们需要对 Article 进行一个概要summerize的方法。 pub struct Article { pub title: Stri...阅读全文

博文 2019-03-30 18:34:39 zidea

区块链的新概念“胖协议”

最近得到一个新概念,胖协议(Fat Protocols)。(胖协议可以理解为基础链)胖协议的概念来自于Fat Protocols,翻译版见文章末尾。从这个角度看过去,或许我们能更清楚互联网和区块链之间的区别。 图1-互联网生态 vs 区块链生态。我们经常用到的App,但凡跟网络沾边,就都离不开协议。说到协议,除了经常看到的http:/(HTTP协议),经常听到的IP地址(IP协议),其他我们知道的并不多。其实,网络上每个消息的发送与接收,都离不开协议。协议就像人们约定成俗的语言,没有协议,电脑之间无法通讯,网络也就不复存在。就好像你说A语,我说B语,大家谁也听不懂谁。 协议如此重要,可它却是价值最小的。但也不奇怪,因为那都是瘦协议,薄薄的一层,只约定了软件应该如何通讯。比如微信,发送消息使用...阅读全文

博文 2017-07-29 18:06:23 大硕简书

区块链

区块链技术起源于化名为“中本聪”(SatoshiNakamoto)的学者在 2008 年发表的奠基性论文《比特币: 一种点对点电子现金系统》。狭义来讲, 区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构, 并以密码学方式保证的不可篡改和不可伪造的分布式账本...阅读全文

博文 2020-04-21 10:05:02 wjl2020

消息传输模型的思考

一、消息传输模型 从消息传输模型上,大致可以抽象为以下几种: (1)点对点模型(Point-to-point) 基础模型中,只有一个发送者、一个接收者和一个分布式队列。 在P2P模型中,有几个关键术语:消息队列(Queue)、发送者(Sender)、接收者(Receiver)。每个消息都被发送到一个特定的队列,接收者从队列中获取消息。队列保留着消息,直到它们被消费或超时。 每个消息只有一个消费者(Consumer)(即一旦被消费,消息就不再在消息队列中) 发送者和接收者之间在时间上没有依赖性,也就是说当发送者发送了消息之后,不管接收者有没有正在运行,它不会影响到消息被发送到队列。 接收者在成功接收消息之后需向队列应答成功。 如果你希望发送的每个消息都应该被成功处理的话,那么你需要P2P模型。...阅读全文

博文 2019-07-23 02:32:39 AWeiLoveAndroid

【他山之石】大话密码学·默克尔树·章三 扬前帆

前帆(Jib):主桅杆前面使用的帆 基本定义 Merkle Tree 是由计算机科学家 Ralph Merkle 在很多年前提出的,并以他本人的名字来命名,中文翻译过来叫默克尔树,也叫哈希树。 哈希树 主要用途 Merkle Tree 常用来做完整性校验的,所谓的完整性校验,就是检查一下数据有没有损坏或者被恶意篡改。 Merkle Tree 的最大的应用场合就是在点对点网络上,早期的 BT ,电驴,快播等各种下载器,以及目前普遍使用的 Git 版本控制系统,NMP包管理,GoLang 包管理,IPFS 协议以及比特币以太坊等等项目都用到了它。例子太多了……欢迎补充…… Merkle Tree Merkle Tree 如果直接去看定义,会看到一张比较复杂的图,可能会把你一下子吓到,然后就不想学...阅读全文

图解kubernetes命令执行核心实现

K8s中的命令执行由apiserver、kubelet、cri、docker等组件共同完成, 其中最复杂的就是协议切换以及各种流拷贝相关,让我们一起来看下关键实现,虽然代码比较多,但是不会开发应该也能看懂,祝你好运 1. 基础概念 K8s中的命令执行中有很多协议相关的处理, 我们先一起看下这些协议处理相关的基础概念 1.1 Http协议中的Connection与Upgrade HTTP/1.1中允许在同一个链接上通过Header头中的Connection配合Upgrade来实现协议的转换,简单来说就是允许在通过HTTP建立的链接之上使用其他的协议来进行通信,这也是k8s中命令中实现协议升级的关键 1.2 Http协议中的101状态码 在HTTP协议中除了我们常见的HTTP1.1,还支持web...阅读全文

博文 2020-04-08 14:33:17 仔仔