
Go
元宇宙开源博客
这个作者很懒,什么都没留下…
展开
-
Go语言学习笔记(一)------目录
做区块链项目,发现自己的Go基础还是比较差,一些基本的东西还是了解不多,所以我想重新过一下go语言,这个系列博客就是为了记录一下自己的学习路径,同时方便自己回顾,在此感谢大家的翻译《the way to go》和无闻大大。笔记目录Go语言学习笔记(一)------目录Go语言学习笔记(二)------Go的基本结构和要素Go语言学习笔记(三)------控制结构Go语言学习笔记...原创 2019-02-15 09:01:47 · 714 阅读 · 0 评论 -
Kubernetes学习笔记(一)------目录
又开始连载学习笔记啦,这一次是Kubernetes,因为对linux下高并发处理不是太了解,所以我开始学习高并发处理的日常操作。Kubernetes学习笔记(一)------目录Kubernetes学习笔记(二)------什么是KubernetesKubernetes学习笔记(三)------运行Kubernetes集群Kubernetes学习笔记(四)------部署应用和服务...原创 2019-03-18 18:36:41 · 387 阅读 · 0 评论 -
Kubernetes学习笔记(二)------什么是Kubernetes
一、概述1.2014年6月,谷歌云计算专家埃里克·布鲁尔(Eric Brewer)在旧金山的发布会为新的开源工具揭牌,它的名字Kubernetes意思是船长或领航员,这也恰好与它在容器集群管理中的作用吻合,即作为装载了集装箱(Container)的众多货船的指挥者,负担着全局调度和运行监控的职责。Kubernetes对计算资源进行了更高层次的抽象,通过将容器进行细致的组合,将最终的应用服务交给...原创 2019-03-18 19:29:27 · 562 阅读 · 0 评论 -
Go语言学习笔记(十七)------数据库MongoDB学习笔记
MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。在高负载的情况下,添加更多的节点,可以保证服务器性能。MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。与SQL数据库进行一...原创 2019-04-01 09:46:08 · 1053 阅读 · 0 评论 -
hyperledger fabric 智能合约开发(三)------合约接口的数据操作方法
合约接口的数据操作方法写入区块链数据如果是 struct 结构体,需要序列化成二进制,通常使用 json,其他形式的序列化也可以,只要能反序列化即可(反序列化,是二进制数组变为格式化数据)。Hyperledger fabric levelDB提供基于key/value的数据存储,其中key是字符串,value则是二进制字节数组,Hyperledger的Go API提供了三个方法用于数据存取:P...原创 2019-03-22 16:40:08 · 4979 阅读 · 0 评论 -
商业公链之区块链技术使用的常见库(八)------Go语言单调时间库"github.com/aristanetworks/goarista/monotime"
操作系统提供了一个“挂钟”,它可能会随时钟同步发生变化,而“单调时钟”则不会。一般的规则是挂钟是用来告诉时间的,而单调时钟是用来测量时间的。后来的讲时间操作使用挂钟读数,但后来的时间测量操作,特别是比较和减法,使用单调时钟读数。需要测量时间时最好使用monotime.Now()而不是time.Now(),相比之下前者更准确。1.获取当前单调时间:start := monotime.Now()...原创 2019-04-04 08:50:52 · 490 阅读 · 0 评论 -
hyperledger fabric 智能合约开发(六)------其他合约接口
其他合约接口我们在开发中,还会遇到其他合约接口调用,可能不会太频繁,但会遇见。下面我来介绍一下其他合约接口开发:Package cid(import "github.com/hyperledger/fabric/core/chaincode/shim/ext/cid")func AssertAttributeValue检查属性值是否等于指定值func AssertAttribute...原创 2019-03-27 18:09:14 · 1500 阅读 · 1 评论 -
商业公链源码解析(零)------目录
有了大把基础知识,又有了区块链技术的追求,不分析一把竞争对手的区块链源码,不见一见商业级源码风采,岂不是很亏,感谢这个开源的区块链技术世界,正是开源,才让我们一睹区块链风采,追赶先行者脚步。哈哈,摸着石头过河,好爽。项目介绍:目前分析商业源码,从而构建区块链架构意识,落地具体技术。项目步骤:区块链架构和技术 区块链技术所用的常见库 区块链各个模块设计及核心代码目录:商业公链之...原创 2019-03-27 18:20:29 · 595 阅读 · 0 评论 -
商业公链之区块链技术使用的常见库(一)------Go语言命令行库"gopkg.in/urfave/cli.v1"
Go语言命令行库"gopkg.in/urfave/cli.v1"很多go语言都使用这个来实现命令行操作,包括以太坊geth。用户只需要提供一些模块的配置、参数的解析、以及关联函数。其他在库内自动完成,并生成帮助信息。举个例子想要实现这种命令行界面:NAME:GoFlag - flag testUSAGE:___go_build_goflag_go.exe ...原创 2019-03-27 19:02:56 · 1389 阅读 · 0 评论 -
商业公链之区块链技术使用的常见库(四)------Go语言内存数据库 "github.com/tidwall/buntdb"
BuntDB是纯Go开发的、低层级的(low-level)的、可嵌入的key/value内存数据库(IMDB),数据持久化存储,遵从ACID,支持自定义索引和地理空间数据。BuntDB旨在给用户提供可靠稳定高效的数据库。特点:1.因为是内存数据库,所以支持快速的读和写2.可采用简单的API,实现数据库嵌入功能3.20维以下的空间索引;对地理空间数据有用4.支持创建任何数据类型...原创 2019-04-01 09:33:33 · 1549 阅读 · 0 评论 -
商业公链之区块链技术使用的常见库(五)------Go语言并发actor库"github.com/AsynkronIT/protoactor-go/actor"
Go语言并发actor库"github.com/AsynkronIT/protoactor-go/actor"ProtoAct是下一代的Actor模型框架,提供了.NET和Go语言的实现,默认支持分布式,提供管理和监控功能。Proto.Actor提供了可伸缩、实时的事务处理,任何需要高吞吐量、低延迟的业务需求都可以用到Proto.Actor。目前该版本处于开发状态中,并不太适...原创 2019-04-01 09:35:12 · 957 阅读 · 0 评论 -
商业公链之区块链技术使用的常见库(二)------GO语言日志库"github.com/cihub/seelog"
GO语言日志库"github.com/cihub/seelog"Seelog可以设置不同级别的日志库,过滤输出设定级别的日志,输出不同格式日志文件到终端或文件,根据触发日志名或者函数名区分不同日志,实现网络转发或者定期删除日志等功能。日志级别分为:Trace(相比debug范围更广,适合release),debug(只适合debug开发版本,调试时更详细的了解系统运行状态),info(重要...原创 2019-03-28 08:35:47 · 1465 阅读 · 0 评论 -
商业公链之区块链技术使用的常见库(六)------Go语言文档数据库"gopkg.in/mgo.v2"
MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。1.安装mgo:go get gopkg.in/mgo.v22.导入mgo包import ("gopkg.in/mgo.v2""gopkg...原创 2019-04-02 08:55:49 · 4122 阅读 · 0 评论 -
商业公链之区块链技术使用的常见库(三)------Go语言键值数据库 ”github.com/syndtr/goleveldb/leveldb”
levelDB是Google开源的KeyValue文件数据库,LevelDB是一个非常高效的kv数据库,1.2-version就能够支持billion级的数据量了,在这个数量级下还有着非常高的性能,主要归功于它的良好设计,特别是LSM算法.特点:1.key和value都是任意长度的字节数组;2.entry(即一条k-v记录)默认是按照key的字典顺序存储的,开发者开源重载这个排序函数;...原创 2019-03-29 08:48:44 · 930 阅读 · 0 评论 -
商业公链之区块链技术使用的常见库(九)------Go语言http路由库"github.com/gorilla/mux"
目录介绍安装使用常用方法介绍1.初始化路由2.路由注册3.子路由的使用4.定义路由别名5.静态文件路由7.生成已注册的URL8.Walk方法9.Middleware 中间件10.开启监听端口:11.get请求处理:12.post请求处理测试Get请求Post请求综合示例介绍mux是一个用来执行http请求的路由和...原创 2019-04-08 11:18:27 · 1984 阅读 · 1 评论 -
商业公链之区块链技术使用的常见库(七)------Go语言缓存LRU库"github.com/hashicorp/golang-lru"
Golang第三方库golang-lru基于双向链表实现了三种LRU及变种Cache:LRU,Q2,ARC。LRU算法:若数据已经在缓存中,将其移到队首,并返回结果。若数据不在缓存中,将新记录添加到队首。若缓存超长,清理队尾缓存数据。2Q算法有两个缓存队列,一个是FIFO队列,用于保存最近访问的数据;一个是LRU队列,用于保存热点数据。recent用于保存最近访问的数据,frequent用...原创 2019-04-03 09:07:06 · 1027 阅读 · 0 评论 -
Go语言学习笔记(十八)------go使用问题合集
go get 问题合集1.问题:package golang.org/x/net/ipv4: unrecognized import path "golang.org/x/net/ipv4" (https fetch: Get https://golang.org/x/net/ipv4?go-get=1: dial tcp 216.239.37.1:443: connectex: A conn...原创 2019-04-09 10:14:45 · 735 阅读 · 0 评论 -
hyperledger fabric 智能合约开发(二)------合约接口介绍
合约接口介绍Chaincode 实现 shim.ChaincodeStubInterface 接口,有三个方法,分别是:Init、Query 和 Invoke。链码结构:链码包头:由于需要编译为可执行文件,所以需要 main 包。package main导入包:导入其他库的包,一般这里需要导入两个包 "github.com/hyperledger/fabric/core/cha...原创 2019-03-22 08:45:11 · 2334 阅读 · 0 评论 -
hyperledger fabric(零)目录
这几篇很早就写完了,不知道有哪些错误,希望大家反馈hyperledger fabric 测试(零)目录hyperledger fabric 测试(一)1.11构建fabric环境hyperledger fabric 测试(二)1.12 手动配置fabric网络hyperledger fabric 测试(三) 1.13 加入新的组织hyperledger fabric 测试(四)...原创 2019-03-21 19:03:51 · 828 阅读 · 0 评论 -
Go语言学习笔记(二)------Go的基本结构和要素
一、文件名、关键字、标识符1.Go 的源文件以 .go 为后缀名存储在计算机中,这些文件名均由小写字母组成,如 hello.go 。如果文件名由多个部分组成,则使用下划线 _ 对它们进行分隔,如 hello_test.go 。2.Go 代码中的几乎所有东西都有一个名称或标识符。另外,Go 语言也是区分大小写的,有效的标识符必须以字母(可以使用任何 UTF-8 编码的字符或 _ )开头,然后...原创 2019-02-15 18:38:05 · 697 阅读 · 0 评论 -
Go语言学习笔记(十六)------数据库Redis学习笔记
一、redis介绍redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)和zset(有序集合)。目前应用redis最广泛的应该是新浪微博平台,其次还有Facebook收购的图片社交网站instagram。以及其他一些有名的互联网企业。Go目前支持redis的驱动有如下http...原创 2019-02-28 19:50:14 · 943 阅读 · 0 评论 -
Go语言学习笔记(十五)------数据库MySQL学习笔记
一、安装MySQL1.下载MySQL:点击链接下载https://dev.mysql.com/downloads/file/?id=484900,然后点击no,thanks,获得ZIP Archive版是免安装的。只要解压就行了。和安装版的没什么不同,但就是不需要安装。找到下载好的mysql-x.x.xx-winx64.zip右键选择(解压到...),找到你想安装的地方。2.设置配置文件:...原创 2019-02-28 14:16:22 · 515 阅读 · 0 评论 -
Go语言学习笔记(十四)------常见的陷阱与错误
为了方便起见,这里列出了一些常见陷进,以便于你能发现更多的解释和例子:永远不要使用形如 var p*a 声明变量,这会混淆指针声明和乘法运算永远不要在 for 循环自身中改变计数器变量永远不要在 for-range 循环中使用一个值去改变自身的值永远不要将 goto 和前置标签一起使用永远不要忘记在函数名后加括号(),尤其调用一个对象的方法或者使用匿名函数启动一个协程时永远不要使用 n...原创 2019-02-27 09:42:11 · 265 阅读 · 0 评论 -
Go语言学习笔记(十三)------网络,模板和网页应用
一、tcp服务器1.go在编写web应用方面非常得力。因为目前它还没有GUI(Graphic User Interface 即图形化用户界面)的框架,通过文本或者模板展现的html界面是目前go编写应用程序的唯一方式。(注:有了一些不太成熟的GUI库例如:go ui)2.简单的客户端-服务器应用,一个(web)服务器应用需要响应众多客户端的并发请求:go会为每一个客户端产生一个协程用来处理...原创 2019-02-26 19:02:57 · 549 阅读 · 0 评论 -
Go语言学习笔记(十二)------协程(goroutine)与通道(channel)
一、并发、并行和协程1.Go 语言为构建并发程序的基本代码块是 协程(goroutine) 与通道 (channel)。他们需要语言,编译器,和runtime的支持。Go 语言提供的垃圾回收器对并发编程至关重要。不要通过共享内存来通信,而通过通信来共享内存。通信强制协作。2.一个应用程序是运行在机器上的一个进程;进程是一个运行在自己内存地址空间里的独立执行体。一个进程由一个或多个操作系统线...原创 2019-02-26 09:59:01 · 1481 阅读 · 0 评论 -
Go语言学习笔记(十一)------错误处理与测试
一、错误处理1.具有defer-panic-and-recover 机制。通过在函数和方法中返回错误对象作为它们的唯一或最后一个返回值——如果返回 nil,则没有错误发生——并且主调(calling)函数总是应该检查收到的错误。处理错误并且在函数发生错误的地方给用户返回错误信息:照这样处理就算真的出了问题,你的程序也能继续运行并且通知给用户。 panic and recover 是用来处理真...原创 2019-02-25 10:40:46 · 956 阅读 · 0 评论 -
Go语言学习笔记(十)------读写数据
一、读取用户的输入1.从键盘和标准输入 os.Stdin 读取输入,最简单的办法是使用 fmt 包提供的 Scan 和 Sscan 开头的函数。Scanln 扫描来自标准输入的文本,将空格分隔的值依次存放到后续的参数内,直到碰到换行。 Scanf 与其类似,除了Scanf 的第一个参数用作格式字符串,用来决定如何读取。 Sscan 和以 Sscan 开头的函数则是从字符串读取,除此之外,与 S...原创 2019-02-22 11:40:42 · 764 阅读 · 0 评论 -
Go语言学习笔记(九)------接口(Interfaces)与反射(reflection)
一、接口定义1.接口提供了一种方式来说明对象的行为:如果谁能搞定这件事,它就可以用在这儿。接口定义了一组方法(方法集),但是这些方法不包含(实现)代码:它们没有被实现(它们是抽象的),接口里也不能包含变量。通过如下格式定义接口:type Namer interface { // Namer 是一个接口类型Method1(param_list) return_typeMethod2(...原创 2019-02-20 18:00:56 · 709 阅读 · 0 评论 -
Go语言学习笔记(七)------包(package)
一、标准库概述1.像 fmt 、 os 等这样具有常用功能的内置包在 Go 语言中有 150 个以上,它们被称为标准库,大部分(一些底层的除外)内置于 Go 本身。完整列表可以在 Go Walker 查看。unsafe : 包含了一些打破 Go 语言“类型安全”的命令,一般的程序中不会被使用,可用在 C/C++ 程序的调用中。 os : 提供给我们一个平台无关性的操作系统功能接口,采用类...原创 2019-02-20 09:38:14 · 1003 阅读 · 0 评论 -
Go语言学习笔记(八)------结构(struct)与方法(method)
一、结构体定义1.Go 通过类型别名(alias types)和结构体的形式支持用户自定义类型,或者叫定制类型。结构体也是值类型,因此可以通过 new 函数来创建。组成结构体类型的那些数据称为字段(fields)。每个字段都有一个类型和一个名字;在一个结构体中,字段名字必须是唯一的。结构体定义的一般方式如下:type identifier struct {field1 type1fi...原创 2019-02-20 12:01:05 · 591 阅读 · 0 评论 -
Go语言学习笔记(六)------Map
一、声明、初始化和 make1.map 是一种特殊的数据结构:一种元素对(pair)的无序集合,pair 的一个元素是 key,对应的另一个元素是 value,所以这个结构也称为关联数组或字典。这是一种快速寻找值的理想结构:给定 key,对应的 value 可以迅速定位。2.map 是引用类型,可以使用如下声明:var map1 map[keytype]valuetype ,例如:var ...原创 2019-02-19 16:59:25 · 372 阅读 · 0 评论 -
Go语言学习笔记(五)------数组与切片
一、声明和初始化1.数组是具有相同唯一类型的一组已编号且长度固定的数据项序列(这是一种同构的数据结构);这种类型可以是任意的原始类型例如整型、字符串或者自定义类型。数组长度必须是一个常量表达式,并且必须是一个非负整数。数组长度也是数组类型的一部分,所以[5]int和[10]int是属于不同类型的,数组的编译时值初始化是按照数组顺序完成的。如果我们想让数组元素类型为任意类型的话可以使用空接口作为...原创 2019-02-19 11:51:49 · 432 阅读 · 0 评论 -
Go语言学习笔记(四)------函数
一、介绍1.除了main()、init()函数外,其它所有类型的函数都可以有参数与返回值。函数参数、返回值以及它们的类型被统称为函数签名。函数重载(function overloading)指的是可以编写多个同名函数,只要它们拥有不同的形参与/或者不同的返回值,在 Go里面函数重载是不被允许的,这将导致一个编译错误。函数可以将其他函数调用作为它的参数,只要这个被调用函数的返回值个数、返回值类型...原创 2019-02-18 19:00:16 · 490 阅读 · 0 评论 -
Go语言学习笔记(三)------控制结构
Go 提供了下面这些条件结构和分支结构:if-else 结构、switch 结构、select 结构,用于 channel 的选择;可以使用迭代或循环结构来重复执行一次或多次某段代码(任务):for (range) 结构;一些如 break 和 continue 这样的关键字可以用于中途改变循环的状态;此外,使用 return 结束某个函数的执行,或使用 goto 和标签来调整程序的执行位置,Go...原创 2019-02-18 12:01:52 · 309 阅读 · 0 评论 -
Kubernetes学习笔记(三)------运行Kubernetes集群
一、创建Kubernetes集群选择正确的解决方案:如果你只是想试一试Kubernetes,我们推荐基于Docker的本地方案。 基于Docker的本地方案是众多能够完成快速搭建的本地集群方案中的一种,但是局限于单台机器。 当你准备好扩展到多台机器和更高可用性时,托管解决方案是最容易搭建和维护的。 全套云端方案 只需要少数几个命令就可以在更多的云服务提供商搭建Kubernetes。...原创 2019-03-19 14:51:22 · 694 阅读 · 0 评论 -
Kubernetes学习笔记(四)------部署应用和服务到k8s上
一、部署nginx应用到k8s上1.创建一个部署:kubectl create deployment nginx --image=nginx2.查看部署:kubectl get deployments3.创建一个服务:kubectl create service nodeport nginx --tcp 80:804.查看服务:kubectl get svc5. 查看是否部署成...原创 2019-03-20 11:56:09 · 859 阅读 · 0 评论 -
商业公链之区块链技术使用的常见库(十)------Go语言微服务库 "github.com/micro/go-micro”
Go语言微服务库 github.com/micro/go-micro由于Grpc存在ip和具体服务绑定,一旦服务ip改变,客户端代码也要改变,管理麻烦。同时,存在服务发现和服务间调用问题。直接使用实现了服务注册的 go-micro 框架。Micro是一套微服务构建工具库。对于微服务架构的应用,Micro提供平台层面、高度弹性的工具组件,让服务开发者们可以把复杂的分布式系统以简单的方式构建起来,...原创 2019-04-09 17:13:18 · 2476 阅读 · 0 评论