golang
chunqi zhi
幸福或许就是命中注定要发生的事......
展开
-
解决 go mod 需要引用github的私有项目问题
export GOPRIVATE=“github.com/balabala”github.com/balabala 是你的个人账户所在地址原创 2020-11-10 09:55:37 · 1488 阅读 · 0 评论 -
基于 golang 的实现简单的 RPC 版 Watch 功能
本文主要参考《Go 语言高级编程》一书!在很多系统中都提供了 Watch 监视功能的接口,当系统满足某种条件时 Watch 方法返回监控的结果。在这里我们可以尝试通过 RPC 框架实现一个基本的 Watch 功能。因为 RPC client.send 方法是线程安全的,我们可以通过在不同的 Goroutine 中同时并发阻塞调用 RPC 方法,通过在一个独立的 Goroutine 中调用 Wat...原创 2020-04-19 21:35:45 · 1301 阅读 · 0 评论 -
基于 golang 的实现简单的发布订阅模型
本文主要参考《Go 语言高级编程》一书!发布订阅(publish-and-subscribe)模型通常被简写为 pub/sub 模型。在这个模型中,消息生产者成为发布者(publisher),而消息消费者则成为订阅者(subscriber),生产者和消费者是 M:N 的关系。在传统生产者和消费者模型中,是将消息发送到一个队列中,而发布订阅模型则是将消息发布给一个主题。// Package pu...原创 2020-04-19 21:01:53 · 1612 阅读 · 0 评论 -
以太坊源码分析(14)P2P分析
#概述Kademlia(简称Kad)是一种分布式哈希表技术,用于建立p2p网络拓扑结构。 基本原理就是以两个节点ID的异或值作为两节点间的距离d,每个节点都将其他节点的信息存储到称之为K桶的表结构中,该表结构按照d的为1的最高bit位分层(可理解为桶索引),每层中存储最多K个节点信息。如下:| I | 距离范围 | 邻居 ||:---:|:---------:|:-------...转载 2018-08-18 20:48:45 · 266 阅读 · 0 评论 -
以太坊源码分析(22)core-genesis创世区块源码分析
genesis 是创世区块的意思. 一个区块链就是从同一个创世区块开始,通过规则形成的.不同的网络有不同的创世区块, 主网络和测试网路的创世区块是不同的. 这个模块根据传入的genesis的初始值和database,来设置genesis的状态,如果不存在创世区块,那么在database里面创建它。 数据结构 // Genesis specifies the h...转载 2018-08-19 10:32:58 · 419 阅读 · 0 评论 -
以太坊源码分析(31)eth-downloader-peer源码分析
peer模块包含了downloader使用的peer节点,封装了吞吐量,是否空闲,并记录了之前失败的信息。 ## peer // peerConnection represents an active peer from which hashes and blocks are retrieved. type peerConnection struct {...转载 2018-08-19 11:05:15 · 244 阅读 · 0 评论 -
以太坊源码情景分析之区块(block)数据之被动同步
区块数据同步分为被动同步和主动同步被动同步是指本地节点收到其他节点的一些消息,然后请求区块信息。比如NewBlockHashesMsg主动同步是指节点主动向其他节点请求区块数据,比如geth刚启动时的syning,以及运行时定时和相邻节点同步被动同步 被动同步由fetcher完成,被动模式又分为两种收到完整的block广播消息(NewBlockMsg) 收到blockh...转载 2018-08-17 11:37:02 · 935 阅读 · 0 评论 -
以太坊源码情景分析之区块(block)数据同步之主动同步
主动同步 同步入口 主动同步有好几个主要场景geth刚启动 新peer加入 定时sync 后面两个场景入口都在ProtocolManager.syncerfunc (pm *ProtocolManager) syncer() { // Start and ensure cleanup of sync mechanisms pm.fetche...转载 2018-08-28 15:34:24 · 1384 阅读 · 0 评论 -
以太坊源码分析(10)CMD深入分析
### cmd包分析#### cmd下面总共有13个子包,除了util包之外,每个子包都有一个主函数,每个主函数的init方法中都定义了该主函数支持的命令,如 ##### geth包下面的: ```func init() { // Initialize the CLI app and start Geth app.Action = geth a...转载 2018-08-18 20:27:26 · 671 阅读 · 0 评论 -
golang 版本 菲波那切数列
package mainimport ( "fmt")func fibonacci(n int, ch chan int) { x, y := 0,1 for i := 0; i < n; i++ { ch <- x x, y = y, x+y } close(ch)}func main() { ch := make(ch...原创 2018-05-28 19:36:17 · 184 阅读 · 0 评论 -
Fedora 安装 golang
下载golang: [root@localhost /]# yum install golang 默认安装到 GOROOT="/usr/lib/golang"默认加入环境变量了,可直接查看golang版本: [root@localhost /]# go version ...原创 2018-05-28 19:37:45 · 1330 阅读 · 0 评论 -
Golang 初识网络编程
本文通过 Go 语言写几个简单的通信示例,从 TCP 服务器过渡到 HTTP 开发,从而简单介绍 net 包的运用。TCP 服务器首先来看一个 TCP 服务器例子package mainimport ( "fmt" "log" "net")func main() { // net 包提供方便的工具用于 network I/O 开发,包括TCP/IP, UD...转载 2018-05-28 21:33:07 · 302 阅读 · 0 评论 -
Golang IntToByte 实现
package test01import ( "bytes" "encoding/binary" "fmt" "os")func IntToByte(num int64) []byte { var buffer bytes.Buffer err := binary.Write(&buffer, binary.BigEndian, num) ...原创 2018-07-01 16:38:23 · 6949 阅读 · 2 评论 -
以太坊源码分析(1)go-ethereum的设计思路及模块组织形式
go-ethereum的设计思路及模块组织形式=================================== 以太坊的目标是基于区块链技术打造一个运行智能合约的去中心化平台。 ## 一. 区块链技术区块链属于一种去中心化的数字记账技术,区块链数据由彼此互不信任的节点共同维护,每个节点复制一份完整的记录。 ## 二. 以太坊核心概念* EVM: 以太坊虚拟...转载 2018-08-18 17:15:23 · 356 阅读 · 0 评论 -
以太坊源码分析(7)Ethereum 资源分享
# Awesome Ethereum [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome) > collection of be...转载 2018-08-18 17:35:34 · 1084 阅读 · 0 评论 -
以太坊源码分析(8)区块分析
## 区块存储区块的存储是由leveldb完成的,leveldb的数据是以键值对存储的。在这里保存区块信息时,key一般是与hash相关的,value所保存的数据结构是经过RLP编码的。在代码中,core/database_util.go中封装了区块存储和读取相关的代码。在存储区块信息时,会将区块头和区块体分开进行存储。因此在区块的结构体中,能够看到Header和Body两个结构体。...转载 2018-08-18 17:55:35 · 378 阅读 · 0 评论 -
golang 实现计算三角形的面积
golang 实现计算三角形的面积package main import ( "math" "fmt")func main() { a, b, c := 0.0,0.0,0.0 fmt.Print("Input a, b, c:") fmt.Scanf("%f,%f,%f", &a, &b, &c) s := (a + b + c) / ...原创 2018-05-16 18:45:56 · 851 阅读 · 0 评论