
golang
文章平均质量分 92
kk3909
区块链 云计算
展开
-
【go-libp2p源码剖析】DHT Kademlia 迭代查询
文章目录简介主要结构时序图函数说明runLookupWithFollowuprunQueryrunrecordPeerIsValuableconstructLookupResultspawnQueryqueryPeerdialPeerupdateStateisReadyToTerminateisLookupTerminationGetClosestNInStates简介query是整个dht的核心主要结构// query represents a single DHT query.type qu原创 2020-12-12 13:06:25 · 1502 阅读 · 1 评论 -
【go-libp2p源码剖析】DHT Kademlia 路由
文章目录简介接口定义接口实现ProvideFindProvidersFindProvidersAsyncFindPeerPutValueGetValueSearchValueValidator.Select简介接口定义整个dht routing共定义了8个方法:Provide、FindProvidersAsync、FindPeer、PutValue、GetValue、SearchValue、Bootstrap//间接的值提供层。它用于查找谁拥有相关内容。//内容由CID(内容标识符)标识,该CID原创 2020-12-14 14:18:09 · 1215 阅读 · 0 评论 -
【go-libp2p源码剖析】DHT Kademlia协议消息处理
文章目录简介Protobuf结构定义Protobuf消息组装、发送(客户端)dht.getValueSingle(dht.go)dht.putValueToPeer(dht.go)dht.findProvidersSingle(dht.go)dht.findPeerSingle(dht.go)dht.Ping(dht.go)dht.Provide(routing.go)Protobuf消息发送Protobuf消息解码处理(服务端)handleFindPeerhandlePinghandleGetValueh原创 2020-12-14 07:33:25 · 1840 阅读 · 0 评论 -
【go-libp2p源码剖析】DHT 路由刷新管理器
文章目录RtRefreshManager初始化DefaultBootstrapPeers启动rtRefreshManager循环RtRefreshManager用于dht路由表刷新。网络上的节点可能随时会离线,RtRefreshManager提供定时(每10分钟)检测机制,如果节点离线,则将该节点从路由表中剔除出去,待所有节点检测完后,刷新k桶数据(填充k桶)。它提供一个Refresh方法,Refresh有一个force参数,如果force参数设置为true,则所有存储桶都将被强制刷新,而与它们的最后原创 2020-12-14 07:32:28 · 1260 阅读 · 0 评论 -
go tcp VS rust tcp socket性能测试对比
初略测试,仅供参考test 1读写分离(启动两个task/goroutine),客户端生成文件,客户端从文件中读取数据写入到服务端在服务端计算速率(收到的bytes/second)文件20g 每次发送数据4kTypeRatego Tcp574m/srust Tcp(async_std)130m/srust Tcp(tokio)174m/s文件20g 每次发送数据40kTypeRatego Tcp1775m/srust原创 2020-12-06 21:54:58 · 2567 阅读 · 0 评论 -
【golang库】静态资源嵌入go.rice
功能说明go.rice是一个go软件包,可以很方便的处理html、js、css、图像、模版、配置文件等静态资源文件,在开发调试过程中,可以直接从磁盘加载所需的文件,生成可执行程序后,在不修改源代码的情况下,将资源文件添加到可执行程序中。作用找到资源文件正确的绝对路径。比如你在home目录执行你的二进制程序,程序依赖一个html-fles的文件夹(包含html等资源),但是html-file...原创 2020-03-20 21:53:00 · 1761 阅读 · 0 评论