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

Golang之Interface

前言 由于golang中说interface的文章太多了,很多都已经说的很细节了,所以我再说感觉也有点难。于是总结出几个关键问题,供你参考,如果能做到准确无误有理有据的回答,那么interface应该是没有问题了。 interface底层结构有哪两种,分别是什么样子的,里面保存了哪些信息? 其中tab是什么时候生成的? 从别的类型转换成interface,从interface转换成别的类型,这两者的过程是怎么样的? 两个interface之间是否可以比较? golang底层是如何判断一个类型是否实现了一个interface? 1、底层结构 type eface struct { // 16 bytes on a 64bit arch _type *_type data unsafe.Poin...阅读全文

博文 2019-08-26 15:33:14 LinkinStar

golang 聊天室学习笔记

1聊天室服务器端package main import ( "fmt" "net" "strings" "time" ) //定义的此结构体为全局map的value值,包括每一个用户的姓名,ip地址和私人管道 type client struct { name string addr string C chan string } /*这个函数是将私人管道中的内容发送给用户,配合全局管道Message使用可以实现广播的功能, 单独使用可以实现私聊的功能*/ func writemsg2client(clinet client, conn net.Conn) { for m := range clinet.C { conn.Write([]byte(m + "\n")) } } //这只是一个封...阅读全文

博文 2019-07-26 17:34:18 xingzhehxiang

Go Web 编程之 响应

概述 上一篇文章中,我们介绍了请求的结构与处理。本文将详细介绍如何响应客户端的请求。其实在前面几篇文章中,我们已经使用过响应的功能——通过http.ResponseWriter发送字符串给客户端。但是这种方式仅限于发送字符串。本文我们将介绍如何定制响应的参数。 ResponseWriter接口 如果你看了我前面几篇文章,应该对处理器和处理器函数都非常熟悉了。处理器函数即拥有以下签名的函数: func (w http.ResponseWriter, r *http.Request) 这里的ResponseWriter其实是定义在net/http包中的一个接口: // src/net/http/ type ReponseWriter interface { Header() Header Wri...阅读全文

博文 2019-12-23 00:32:42 darjun

Container - 为 Go语言而生的运行时依赖注入容器

Container 是一款为 Go 语言开发的运行时依赖注入库。Go 语言的语言特性决定了实现一款类型安全的依赖注入容器并不太容易,因此 Container 大量使用了 Go 的反射机制。如果你的使用场景对性能要求并不是那个苛刻,那 Container 非常适合你。 并不是说对性能要求苛刻的环境中就不能使用了,你可以把 Container 作为一个对象依赖管理工具,在你的业务初始化时获取依赖的对象。 使用方式 go get github.com/mylxsw/container 要创建一个 Container 实例,使用 containier.New 方法 cc := container.New() 此时就创建了一个空的容器。 你也可以使用 container.NewWithContext(...阅读全文

博文 2020-05-25 18:32:43 mylxsw

兄弟连区块链入门教程eth源码分析p2p-udp.go源码分析(二)

ping方法与pending的处理,之前谈到了pending是等待一个reply。 这里通过代码来分析是如何实现等待reply的。pending方法把pending结构体发送给addpending. 然后等待消息的处理和接收。 // ping sends a ping message to the given node and waits for a reply. func (t *udp) ping(toid NodeID, toaddr *net.UDPAddr) error { // TODO: maybe check for ReplyTo field in callback to measure RTT errc := t.pending(toid, pongPacket, fun...阅读全文

博文 2018-10-17 14:35:13 itxdl2006

2019-06-26

本文介绍了fabric中的一个示例应用balance-transfer,fabric版本是1.4.1。本文基于上一章hyperledger基础培训-创建第一个fabric网络的基础上,如果还未了解,请先了解上一章节内容。 balance-transfer是什么 balance-transfer是Hyperledger fabric Node SDK的一个示例应用,主要使用了SDK中fabric-client 和 fabric-ca-client 模块中的API,实现了与Fabric网络交互的各种操作。 1. 预装环境 预装环境在上一章节hyperledger基础培训-创建第一个fabric网络已有详细介绍,可跳转至该文章查看。 Docker - v1.12或更高版本 Docker Compo...阅读全文

博文 2019-06-27 21:02:39 青柠果嗄

剥开比原看代码11:比原是如何通过接口/create-account创建帐户的

作者:freewind 比原项目仓库: Github地址:https://github.com/Bytom/bytom Gitee地址:https://gitee.com/BytomBlockc... 在前面,我们探讨了从浏览器的dashboard中进行注册的时候,数据是如何从前端发到后端的,并且后端是如何创建密钥的。而本文将继续讨论,比原是如何通过/create-account接口来创建帐户的。 在前面我们知道在API.buildHandler中配置了与创建帐户相关的接口配置: api/api.go#L164-L244 func (a *API) buildHandler() { // ... if a.wallet != nil { // ... m.Handle("/create-ac...阅读全文

博文 2018-07-23 15:34:53 比原链Bytom

使用 Go 添加文档

简介 swagger 起步 编写文档 运行 总结 当前部分的代码 简介 对于 API 服务来说, 文档是必不可少的. 然而文档却挺烦人的, 尤其是同步更新的问题. 如果选择手写文档, 经常会忘了更新文档;或者处于高速开发的前期, 来不及更新文档. 现在更推崇的方式是文档即注释, 就是将文档作为注释, 和代码同步更新,使用自动生成文档的方式实时更新. 另一种概念是文档即测试, 让文档不但能看, 也能用, 这对于 API 文档来说,是一个巨大的便利. 有了它, 再也不用一边看文档, 一边开着 Postman 实验了. 这就是 swagger. swagger 起步 swagger 提供了很多工具用于创建 API 文档, 尤其是创建了 RESTful APIs 标准. 这个 RESTful API...阅读全文

博文 2019-11-10 09:33:29 帅气猫咪

Dubbo2.6.x—注册中心源码分析 dubbo-registry模块 (api and zookeeper)

文章有点长,亲,要慢慢看! 1. 概述 1.1 注册中心作用 在Dubbo中,注册中心为核心模块,Dubbo通过注册中心实现各个服务之间的注册与发现等功能,而本次源码的分析为registry模块的api和zookeeper的实现。 服务的提供者和消费者都需要把自己注册到注册中心,提供者让消费者感知到服务存在,从而消费者发起远程调用,也让服务治理中心感知到有服务提供者上线;消费者则是让服务治理中心可以发现自己。 1.2 Zookeeper Zookeeper是一个提供分布式协调服务的开源软件,常用于解决分布式应用中经常遇到的一些数据管理问题。Zookeeper功能非常强大,可以实现如分布式应用配置管理、统一命名服务、状态同步服务、集群管理等功能。关于Zookeeper,大家如果想了解可以关注一...阅读全文

博文 2020-01-11 21:32:47 苡仁ilss

2020 区块链 golang 版本(3)

封面 学区块链会不会过时 我们通过比特币了解到区块链,所以大家认为比特币的兴衰就代表区块链发展趋势,其实比特币只不过是区块链的一个最佳实践罢了。现在还是处于区块链的起步阶段。而且区块链无论在应用上还是技术上都还有广泛的空间。随着比特币出现之后以太坊的出现有推动了区块链的发展。 我们都知道在比特币中涵盖多种技术,今天我们就来谈一谈比特币的几个关键技术 密码学 比特币被称为加密货币,虽然所是加密货币,但是其实比特币的交易会会在全网广播。比特币中主要应用了密码学中的哈希和签名。 哈希运算 我们先说哈希运算,因为输入空间远远大于输出空间,所以不同值经过哈希运算得到哈希值相同是难免的。哈希值取值可能为 ,但是输入是无限空间,不同值经过哈希运算得到相同哈希值的现象叫做哈希碰撞。但是没有方法可以认为制造出...阅读全文

博文 2020-04-25 01:32:52 zidea

机器学习业务实践之路

课程介绍 本系列课程为您讲述如何使用机器学习算法快速解决业务问题,会以实际业务作为出发点,所有实验都提供实验流程以及实验数据,帮您用最短的时间快速学习机器学习的原理与使用方法。 课时列表 • 免费 课时1:机器学习背景知识以及业务架构介绍 • 课时2:【在线自测】机器学习入门知识自测 • 免费 课时3:机器学习实验工具PAI介绍 • 课时4:【项目实验】免费开通机器学习PAI • 免费 课时5:推荐系统-基于协同过滤的商品推荐 • 免费 课时6:推荐系统-基于用户画像的商品推荐 • 免费 课时7:深度学习-TensorFlow实现图像分类 • 免费 课时8:文本分析-新闻自动分类系统 • 免费 课时9:文本分析- 文本...阅读全文

golang 标准库间依赖的可视化展示

简介 国庆看完 << Go 语言圣经 >>,总想做点什么,来加深下印象.以可视化的方式展示 golang 标准库之间的依赖,可能是一个比较好的切入点.做之前,简单搜了下相关的内容,网上也要讨论,但是没有发现直接能拿过来用的.标准库之间,是必然存在依赖关系的,不同库被依赖的程度必然是不一样的.但究竟有多大差别呢? 以下内容,数据源自真实环境的 golang 1.9 版本的标准库.所以,本文不仅是一篇可视化相关的讨论文章,更是提供了一个可以直接探究 golang 标准库间依赖关系的快速梳理工具. 数据准备 标准库各个包之间的相互关系,可以直接通过命令获取,然后简单变换为一个标准的 JSON 对象: go list -json std 示例输出: { "Dir": "/usr/local/go/s...阅读全文

博文 2017-10-08 20:34:47 iOS122

兄弟连区块链入门教程以太坊源码分析core-vm源码分析

## contract.go contract 代表了eth state database里面的一个合约。包含了合约代码,调用参数。 结构 // ContractRef is a reference to the contract's backing object type ContractRef interface { Address() common.Address } // AccountRef implements ContractRef. // // Account references are used during EVM initialisation and // it's primary use is to fetch addresses. Removing this ob...阅读全文

博文 2018-10-23 11:34:45 兄弟连区块链培训

Caddy源码阅读(一)Run详解

Caddy源码阅读(一)Run详解 前言 本次系列会讲解 caddy 整个生命周期涉及到的源码。 平时我们使用 caddy 都是使用 它的 二进制 分发文件,现在来分析 caddy 的 Run 函数。从最外层逻辑看它都做了些什么。 Caddy Run 我们来看看 Caddy Run 中引入了哪些包和操作,对 Caddy 的总体行为做一个概览caddy/caddymain/run.go首先看 init 函数 func init() { caddy.TrapSignals() flag.BoolVar(&certmagic.Default.Agreed, "agree", false, "Agree to the CA's Subscriber Agreement") flag.StringVa...阅读全文

博文 2019-08-20 22:02:39 yhyddr

14.Go语言标准库flag基本使用

Go语言内置的flag包实现了命令行参数的解析,flag包使得开发命令行工具更为简单。 1.os.Args 如果你只是简单的想要获取命令行参数,可以像下面的代码示例一样使用os.Args来获取命令行参数。 os.Args十一个存储命令行参数的字符串切片,它的第一个元素是执行文件的名称。 package main import ( "fmt" "os" ) func main() { //os.Args是一个[]string if len(os.Args)>0{ for index,arg := range os.Args{ fmt.Printf("args[%d]=%v\n",index,arg) } } } 结果: ➜ test go build -o "args_demo" ➜ test...阅读全文

博文 2020-02-07 01:33:11 DevOperater

Go的调试工具:gdb vs dlv

GoLand编辑器虽然很强大,但是在展示内存及堆栈信息这一块还是比较的弱,有可能是我的姿势不对,所以,开始切入了gdb调试,但是gdb踩到了坑,并没有解决,也就引发了gdb与dlv的对比了 gdb 安装 yum install ncures-devel wget http://ftp.gnu.org/gnu/gdb/gdb-8.2.tar.gz tar zxf gdb-8.2.tar.gz cd gdb-8.2 make && make install 进入调试 go build -gcflags '-N -l' main.go gdb main 使用 启动调试程序(gdb) [lday@alex GoDbg]$ gdb ./GoDbg 在main函数上设置断点(b) (gdb) b mai...阅读全文

博文 2019-08-15 20:32:39 tyloafer

深度性能测试:功能决定现在,性能决定未来!

摘要: 深度性能测试能协助测试人员发现APP中存在的深层次性能问题,直接定位多项性能问题及瓶颈的根本原因,方便开发者快速提升APP性能表现,使得APP运行得更加稳定。MQC深度性能测试能够帮助开发者发现深层次的性能问题,更精准地定位问题。 功能决定现在,性能决定未来! 一、 内存泄漏   内存泄漏是指由于代码编写不当导致不再使用的对象无法得到及时释放。内存泄漏产生的内存垃圾不仅浪费资源,拖慢运行效率,甚至还可能造成内存溢出,直接导致应用崩溃。    对于Android应用,比较容易发生泄漏的是Activity、Fragment对象,此类对象的共性是其都有一定的生命周期。以Activity为例,一个Activity实例的生命起始于onCreate(),终结于onDestroy()...阅读全文

QuickBI助你成为分析师——数据源FAQ小结

摘要: 添加数据源的时候经常会遇到各种问题,下面来讲解一下常见情况,若仍有疑问扫码咨询哦! 使用 Quick BI 分析数据时,需要先指定原始数据所在的数据源,测试连通数据源是数据分析的基础,下面让我们看一下添加数据源时常遇到的问题吧! **MaxCompute** 注意以下几点: AccessId和AccessKey 必须是有效的 对应账号最好是项目admin或者owner 若为普通用户,需具有 list、select、create instance权限。 **ECS自建库** 目前ECS自建库经典网络添加白名单时常常遇到下面情况: ![图片描述](http://img.blog.csdn.net/20180328105245739?water...阅读全文

【Zinx第三章-基础路由模块】Golang轻量级并发服务器框架

【Zinx教程目录】Zinx源代码https://github.com/aceld/zinx (请拷贝网址,在浏览器打开[简书不让自动跳转])完整教程电子版(在线高清)-下载Zinx框架视频教程(框架篇)(完整版下载)链接在下面正文 Zinx框架视频教程(应用篇)(完整版下载)链接在下面正文 Zinx开发API文档Zinx第一章-引言Zinx第二章-初识Zinx框架Zinx第三章-基础路由模块Zinx第四章-全局配置Zinx第五章-消息封装 Zinx第六章-多路由模式 Zinx第七章-读写分离模型 Zinx第八章-消息队列及多任务 Zinx第九章-链接管理 Zinx第十章-连接属性设置 【Zinx应用案例-MMO多人在线游戏】(1)案例介绍(2)AOI兴趣点算法(3)数据传输协议protoc...阅读全文

博文 2019-07-09 09:02:38 aceld

Go36-14-接口

接口 通过关键字type和interface,我们可以声明出接口类型。接口类型的类型字面量与结构体类型的看起来有些相似,它们都用花括号包裹一些核心信息。只不过,结构体类型包裹的是它的字段声明,而接口类型包裹的是它的方法定义。 实现接口 接口类型声明中的这些方法所代表的就是该接口的方法集合。一个接口的方法集合就是它的全部特征。对于任何数据类型,只要它的方法集合中完全包含了一个接口的全部特征(即全部的方法),那么它就一定是这个接口的实现类型: type Pet interface { SetName(name string) Name() string Category() string } 这里声明了一个接口类型Pet,它包含3个方法定义。这3个方法共同组成了接口类型Pet的方法集合。只要一个...阅读全文

博文 2019-01-10 12:35:09 骑士救兵

兄弟连区块链入门教程eth源码分析p2p-udp.go源码分析(二)

ping方法与pending的处理,之前谈到了pending是等待一个reply。 这里通过代码来分析是如何实现等待reply的。pending方法把pending结构体发送给addpending. 然后等待消息的处理和接收。 // ping sends a ping message to the given node and waits for a reply. func (t *udp) ping(toid NodeID, toaddr *net.UDPAddr) error { // TODO: maybe check for ReplyTo field in callback to measure RTT errc := t.pending(toid, pongPacket, fun...阅读全文

博文 2018-10-17 17:34:41 兄弟连区块链培训

《Go 语言程序设计》读书笔记(十)反射

Go语言提供了一种机制在运行时更新变量和检查它们的值、调用它们的方法和它们支持的操作,但是在编译时并不知道这些变量的具体类型。这种机制被称为反射。反射也可以让我们将类型本身作为第一类的值类型处理。 在本章,我们将探讨Go语言的反射特性,看看它可以给语言增加哪些表达力,以及在两个至关重要的API是如何用反射机制的:一个是fmt包提供的字符串格式功能,另一个是类似encoding/json和encoding/xml提供的针对特定协议的编解码功能。反射是一个复杂的内省技术,不应该随意使用,因此,尽管上面这些包内部都是用反射技术实现的,但是它们自己的API都没有公开反射相关的接口。 为何需要反射 有时候我们需要编写一个函数能够处理任何类型,一个大家熟悉的例子是fmt.Fprintf函数提供的字符串格...阅读全文

博文 2020-01-17 17:32:40 Kevin

golang从context源码领悟接口的设计

注:写帖子时go的版本是1.12.7 Context的github地址 go语言中实现一个interface不用像其他语言一样需要显示的声明实现接口。go语言只要实现了某interface的方法就可以做类型转换。go语言没有继承的概念,只有Embedding的概念。想深入学习这些用法,阅读源码是最好的方式.Context的源码非常推荐阅读,从中可以领悟出go语言接口设计的精髓。 对外暴露Context接口 Context源码中只对外显露出一个Context接口 type Context interface { Deadline() (deadline time.Time, ok bool) Done() <-chan struct{} Err() error Value(key interf...阅读全文

博文 2019-07-26 14:05:57 li_peng

通用抽奖工具之系统设计

前言 上篇文章《通用抽奖工具之需求分析》我们已经通过一些常见的抽奖场景,得到了符合这些抽奖场景的抽奖工具五要素: 抽奖五要素 要素名称 第一要素 活动 第二要素 场次 第三要素 奖品 第四要素 中奖概率 第五要素 均匀投奖 以及创建一个抽奖活动的5个基本步骤,如下: 活动配置 场次配置 奖品配置 奖品中奖概率配置 奖品投奖配置 上篇文章回顾 《通用抽奖工具之需求分析》 需求已经分析完了,今天我们就来看看这通用抽奖工具具体的设计,分为如下三个部分: DB设计 配置后台设计 接口设计 DB设计 第一要素活动配置的抽奖活动表: -- 通用抽奖工具(万能胶Glue) glue_activity 抽奖活动表 CREATE TABLE `glue_activity` ( `id` int(11) uns...阅读全文

博文 2020-01-02 10:34:20 TIGERB

Derek解读Bytom源码-P2P网络 地址簿

作者:Derek 简介 Github地址:https://github.com/Bytom/bytom Gitee地址:https://gitee.com/BytomBlockchain/bytom 本章介绍bytom代码P2P网络中addrbook地址簿 作者使用MacOS操作系统,其他平台也大同小异 Golang Version: 1.8 addrbook介绍 addrbook用于存储P2P网络中保留最近的对端节点地址 在MacOS下,默认的地址簿路径存储在~/Library/Bytom/addrbook.json 地址簿格式 ** ~/Library/Bytom/addrbook.json ** { "Key": "359be6d08bc0c6e21c84bbb2", "Addrs":...阅读全文

博文 2018-09-17 13:34:41 比原链Bytom

Golang错误和异常处理的正确姿势

序言 错误和异常是两个不同的概念,非常容易混淆。很多程序员习惯将一切非正常情况都看做错误,而不区分错误和异常,即使程序中可能有异常抛出,也将异常及时捕获并转换成错误。从表面上看,一切皆错误的思路更简单,而异常的引入仅仅增加了额外的复杂度。 但事实并非如此。众所周知,Golang遵循“少即是多”的设计哲学,追求简洁优雅,就是说如果异常价值不大,就不会将异常加入到语言特性中。 错误和异常处理是程序的重要组成部分,我们先看看下面几个问题: 错误和异常如何区分? 错误处理的方式有哪几种? 什么时候需要使用异常终止程序? 什么时候需要捕获异常? ... 如果你对这几个问题的答案不是太清楚,那么就抽一点时间看看本文,或许能给你一些启发。 face-to-exception.png 基础知识 错误指的是可...阅读全文

博文 2018-12-24 18:31:34 u013589865

剖析nsq消息队列(二) 去中心化源码解析

在上一篇帖子剖析nsq消息队列(一) 简介及去中心化实现原理中,我介绍了nsq的两种使用方式,一种是直接连接,还有一种是通过nslookup来实现去中心化的方式使用,并大概说了一下实现原理,没有什么难理解的东西,这篇帖子我把nsq实现去中心化的源码和其中的业物逻辑展示给大家看一下。 nsqd和nsqlookupd的通信实现 上一篇中在启动nsqd时我用了以下命令,我指定了一个参数 --lookupd-tcp-address ./nsqd -tcp-address ":8000" -http-address ":8001" --lookupd-tcp-address=127.0.0.1:8200 --lookupd-tcp-address=127.0.0.1:7200 -data-path=....阅读全文

博文 2019-09-18 14:04:48 li_peng

新装Linux操作系统后,要保留哪些自启动服务?

和Windows系统一样,Linux服务器运行过程中也会一些没用的软件服务默认运行,这些占用了很多系统资源,也会有安全隐患,所以一般是建议关闭的。那么,工作中Linux主机到底需要有哪些开机自启动服务呢? 新装Linux系统之后,有必要保留的开机自启动服务有5个: Ø sshd:远程连接Linux服务器时要用到,所以必须开启,不然就无法提供远程连接服务了。 Ø rsyslog:日志相关软件,这是操作系统提供的一种机制,系统的守护程序通常会使用rsyslog程序将各种信息写到各个系统日志文件中。 Ø network:系统启动时,如果想激活或关闭各个网络接口的话,可以考虑开启。 Ø crond:用于周期性的执行系统及用户配置的任务计划。有需要时开启。几乎是运维工作中必须要用的一个软件。 Ø sy...阅读全文

博文 2019-11-15 16:40:15 zhouzhou2018

区块结构描述

1、块链(Blockchain)表现形式为块文件,名称如blockfile_000000,由块(Block)按照顺序排列组成,每一个块的头部(Header)都包含了当前块的data_hash和前一个块的hash值previous_hash,官网blockchain结构图如下:块链B包含了块B0,B1,B2,B3,其中B0是创世块(genesis block) 2、块(Block)包含3部分内容:块头,块数据,块的元数据。具体描述如下:2.1块头(Block Header)块头结构形式如下: "header": { "data_hash": "xXLEx+MSmIh3XiYCOOzgqgbncCWv/CerQmr4pv5htIw=", "number": "4", "previous_hash...阅读全文

博文 2020-01-09 23:32:45 阿留神

golang碎片整理之反射

本文介绍go语言反射的意义和基本使用。 变量的内在机制 go语言中的变量是分为两部分的: 类型信息:预先定义好的元信息 值信息:程序运行过程中可动态变化的。 反射的介绍 反射是指在程序运行期对程序本身进行访问和修改的能力。程序在编译时,变量被转换为内存地址,变量名不会被编译器写入到可执行部分。在运行程序时,程序无法获取自身的信息。支持反射的语言可以在程序编译期将变量的反射信息,如字段名称,类型信息、结构体信息等整合到可执行文件中,并给程序提供接口访问反射信息,这样就可以在程序运行期获取类型的反射信息,并且有能力修改它们。Go程序在运行期使用reflect包访问程序的反射信息。在上一篇博客中我们介绍了空接口。空接口可以存储任意类型的变量,那我们如何知道这个空接口保存的数据是什么呢?反射就是在运...阅读全文

博文 2019-07-07 22:03:13 霍帅兵

Go 译文之如何使用反射

作者:Jon Bodner | 地址:Learning to Use Go Reflection 什么是反射 多数情况下,Go 中的变量、类型和函数的使用都是非常简单的。 当你需要一个类型,定义如下: type Foo struct { A int B string } 当你需要一个变量,定义如下: var x Foo 当你需要一个函数,定义如下: func DoSomething(f Foo) { fmt.Println(f.A, f.B) } 但有时候,你想使用的变量依赖于运行时信息,它们在编程时并不存在。比如数据来源于文件,或来源于网络,你想把它映射到一个变量,而它们可能是不同的类型。在这类场景下,你就需要用到反射。反射让你可以在运行时检查类型,创建、更新、检查变量以及组织结构。 Go...阅读全文

博文 2019-08-18 17:02:38 波罗学

Bytom Dapp 开发笔记(三):Dapp Demo前端源码分析

本章内容会针对比原官方提供的dapp-demo,分析里面的前端源码,分析清楚整个demo的流程,然后针对里面开发过程遇到的坑,添加一下个人的见解还有解决的方案。 储蓄分红合约简述 为了方便理解,这里简单说说储蓄分红合约的内容,具体可以查看储蓄分红合约详细说明,储蓄分红,顾名思义就是储蓄之后,当达到一定的时间,按照比例返回本息这样的意思,所以demo中拆分成saving(储蓄)与profit(提现)两个页面,本章内容是针对合约交易的提交,所以只针对储蓄页面说明。 比原官方Dapp-demo使用说明 比原官方demo地址 1)访问的前提需要用chrome打开比原官方demo地址,同时安装bycoin插件,在应用商店搜索就行; 2)安装完bycoin,需要初始化用户信息,新建或者导入备份文件去恢复...阅读全文

博文 2019-08-28 11:02:41 比原链Bytom

Pod创建流程代码版本[kubelet篇]

在k8s的面试中Pod的创建流程是一个常问的问题,而kubelet则无疑重中之重,之前也写过一篇Pod的运行,不过没有涉及到具体的代码,本文尝试用代码的方式,来复数整个核心的流程,同时为了方便记忆,又将整个过程分为:准备、配置、清理、构建运行四个阶段,让我们一起来看下吧, 文末有大图总结​ 2. 准备阶段 当获取到Pod添加的事件的时候,首先会进行一些基础的工作,我吧这个过程称为准备阶段,准备阶段主要做的事情有如下:1)加入PodManager 2)准入控制检查 3)分发事件 4)根据Pod添加对应的探针, 让我们一起来看下关键实现 2.1 加入PodManager PodManager中的功能除了存储Pod的信息,还会进行对应Pod的configMap和secret的管理,当心加入Pod的...阅读全文

博文 2020-04-12 23:32:42 仔仔

利用阿里云容器服务实现自定义节点伸缩

摘要: 容器服务目前提供创建节点触发器的功能,调用节点触发器,并可以利用openAPI查看扩容出来的ECS节点方便管理和自动化的需求. 本文将向您介绍完成这一能力的步骤。 简介 阿里云容器服务很早就提供了基于集群CPU/内存的平均使用量触发节点自动伸缩功能,帮助许多客户自如应对业务压力的弹性变化。其原理是利用阿里云的云监控能力,在资源使用(cpu和memory)达到阈值时,触发节点伸缩。 同时还有一些企业级用户希望根据自身的监控数据和逻辑判断是否进行扩容和缩容操作,甚至可以按照固定时间进行节点扩容和缩容,针对这种场景,就需要调用的是扩容或者缩容触发器。 容器服务目前提供创建节点触发器的功能,调用节点触发器,并可以利用openAPI查看扩容出来的ECS节点方便管理和自动化的...阅读全文

QuickBI助你成为分析师-数据建模(二)

摘要: 数据集编辑功能界面介绍以及常见问题总结。 在数据集编辑界面可以进行数据建模来更好的展示数据,创建数据集默认将数值类型字段作为度量,日期、字符串等类型作为维度,度量可以根据维度分组展示。下面来介绍一下常见功能: **维度编辑:** 如下图为维度编辑功能: ![图片描述](http://img.blog.csdn.net/20180409103136953?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveXVucWlpbnNpZ2h0/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) 1.编辑: 修改维度显示名以及...阅读全文

Go 模块--开始使用 Go Modules

Go的1.11和1.12版本包括对模块--新的Go依赖管理系统的初步支持,使依赖版本信息变得明确且更易于管理。这篇博客文章介绍了开始使用模块所需的基本操作。模块是存储在根目录有一个 go.mod文件的文件树中的 Go 包(package)的集合。go.mod文件定义了模块的module path(也是模块根目录的导入路径)以及模块依赖的其他模块的要求,满足了依赖要求模块才能被成功构建起来。每个依赖模块的要求被写为一个模块路径和相应的模块版本。下面展示了一个简单的go.mod文件 module example.com/hello go 1.12 require rsc.io/quote v1.5.2 从Go 1.11开始,当当前目录或任何父目录有go.mod时,只要该目录位于$GOPATH/s...阅读全文

博文 2020-02-22 15:32:45 Java天天

首发特性:goproxy.cn 现已推出首个 Go 模块代理统计数据 API

前言 这周很值得纪念,首先是 goproxy.cn 已缓存的模块版本总数突破了一百万,这甚至比起 Go 官方的 proxy.golang.org 已缓存的还要多出不少。其次是 goproxy.cn 的日访问量已稳定在千万级,正在朝着亿级进发,目前这在国内我了解到的别的几个同类服务中是最多的了。另外尤为重要的一点是,经过我们的不懈努力,甚至付出了两次事故的代价(详见:status.goproxy.cn),我们终于使得 goproxy.cn 达到了零错误率!现在的 goproxy.cn 可以说是很稳的了,大家可以放心使用。 刚刚在开头稍微为这一个月发生的事情做了个小总结。接下来说一下本次的重点,也就是 goproxy.cn 推出了 Go 模块代理世界中的首个统计数据 API(文档详见:gopro...阅读全文

博文 2020-03-30 21:32:45 煎鱼

shell快讲第一节--shell基础

前言 我有不少同事学了shell很久,最后来一句学不会,或者学会写几个代码段子过一阵子不用也就忘记了。我并没有专门学过shell,也从不钻研它,比如有人用shell写图形界面,有人用shell写游戏,包括更大型的程序。其实这种人我也佩服的,但是我觉得写代码最好要使用匹配场景的语言,shell我只用来写一些简单的插件,再复杂的需求我会用Python,如果是工程项目我会用golang就这样。 怎么才叫学会一门语言 这个问题看似简单,实则还挺复杂的,大学的时候我觉得学会一门语言就是学会它的语法,当我学会了c的语法的时候,我就骄傲的说我学会了c,当然现实啪啪啪的打脸。我无法用c完成任何一项编程工作。可能也有人觉得学会一门语言就是学会它主要的标准库,比如python,学会主要的标准库就可以做很多事情了...阅读全文

博文 2019-08-13 12:32:49 梦回上玄

Go 命令行解析 flag 包之扩展新类型

上篇文章 说到,除布尔类型 Flag,flag 支持的还有整型(int、int64、uint、uint64)、浮点型(float64)、字符串(string)和时长(duration)。 flag 内置支持能满足大部分的需求,但某些场景,需要自定义解析规则。一个优秀的库肯定要支持扩展的。本文将介绍如何为 flag 扩展一个新的类型支持? 扩展目标 在 gvg 这个小工具中,list 子命令支持获取 Go 的版本列表。但版本的信息来源有多处,比如 installed(已安装)、local(本地仓库)和 remote(远程仓库)。 查看下 list 的帮助信息,如下: NAME: gvg list - list go versions USAGE: gvg list [command optio...阅读全文

博文 2019-11-25 15:04:42 波罗学

通过例子学习 Go 和 Rust ---- 指针

指针表示内存上的一段数据的位置、长度、类型信息。在 Go 和 Rust 里面都可以操作指针,咱用一个最简单的例子来看看它们的异同之处。 Go func zeroval(ival int) { ival = 0 } func zeroptr(iptr *int) { *iptr = 0 } func main() { i := 1 fmt.Println("initial:", i) zeroval(i) fmt.Println("zeroval:", i) zeroptr(&i) fmt.Println("zeroptr:", i) fmt.Println("pointer:", &i) } initial: 1 zeroval: 1 zeroptr: 0 pointer: 0xc00002...阅读全文

博文 2020-03-03 16:32:45 Tericoder

GO的第七天,JSON

最近比较忙,一直没有时间。最近的开发过程也遇到一些问题,之后会慢慢记录下来。团队开发当中也遇到一些让人心烦的事,不说废话了,先开始今天的话题吧。json是一种用于发送和接收结构化信息的标准协议。现在基本上API传输格式都是json,而且json数据格式相对好处理。 JSON go语言中将 结构体 转为 json 的过程叫编组(marshaling)。编组通过调用 json.Marshal 函数完成。 type Movie struct { Title string Year int `json:"released"` Color bool `json:"color,omitempty"` Actors []string } var movies = []Movie{ {Title: "Cas...阅读全文

博文 2020-04-07 23:32:43 Mr_J

Supervisor 的使用和进阶 (4) - supervisor Event 的使用

本文主要介绍 supervisor Event 的功能。 supervisor 作为一个进程管理工具,在 3.0 版本之后,新增了 Event 的高级特性, 主要用于做(进程启动、退出、失败等)事件告警服务。 Event 特性是将监听的服务(listener)注册到supervisord中,当supervisord监听到相应事件时,将事件信息推送给监听对应事件的listener。 事件类型 Event 可以设置 27 种事件类型,可以分为如下几类: 1. 监控进程状态转移事件; 2. 监控进程状态日志变更事件; 3. 进程组中进程添加删除事件; 4. supervisord 进程本身日志变更事件; 5. supervisord 进程本身状态变更的事件; 6. 定时触发事件。 事件可以被单独监...阅读全文

【译】Go 语言项目源码贡献官方指导文档

以前给 Go 语言项目源码提交过一些 commits,期间阅读他们的官方指导文档的时候觉得这篇指导文档可以作为绝佳的关于大型软件项目的规范管理的参考,因为最近又提交了几个 commits,就又把这篇文档再看了一遍,有感于 Go 团队在项目管理和工程实践上的一些宝贵经验,就把文档翻译成了中文;一来为了更加深入地理解 Go 语言团队的项目工程最佳实践,二来则是为了给其他有意给 Go 语言源码提交贡献的开发者提供一点参考。 导言 Go 语言项目欢迎所有的代码贡献者。 这是一份指导你完成向 Go 语言项目贡献代码整个流程的文档,会略微跟其他开源项目所使用的指导文档有所不同。我们假设阅读者已经对 Git 和 Go 有基本的理解以及具备相关的基础知识。 除了这里所介绍的信息,Go 语言社区也维护了一份关...阅读全文

博文 2020-04-07 10:32:42 panjf2000

Go语言一知半解上手记(三)

一、前言   在前两篇文章《Go语言一知半解上手记(一)》、《Go语言一知半解上手记(二)》中,我们实现了从读取 xlsx 格式的数据字典开始,到生成 schema 文件,到最后生成代码文件的完整过程。   在文章二中,我们在 template.go 中添加了解析 schema 的方法 analyzeSchema ,在这个方法里,又调用了 generateModelFile、generateControllerFile 来生成最后的代码文件。这两个方法对数据字典格式的针对性及强,参考性不大,因此文章中未进行描述。在后面的实现过程中,我们又增加了 router 中使用的代码脚本的生成功能,最终,在 analyzeSchema 中便有了三个代码文件生成函数的调用,他们目前是顺序执行的,而Go语言...阅读全文

博文 2020-02-18 14:34:17 明峰泉听

EtcdRaft源码分析(线性一致读)

背景 我们知道Raft是Leader+Follower的模型,所有的更新由Leader处理,然后再同步给Follower。 想象一下,如果要所有的节点都参与进来支持读取的请求,会带来什么样的问题? Leader跟Follower并不总是一致的,换句话说Follower会落后Leader的进度。如果没有特别的处理,那么不同的节点读取的结果很可能不一致。 如果Leader被集群孤立,而且其他人已经推举出了新的Leader。而老的Leader还没有察觉到这个变化,他任然觉得还是Leader,但是他的数据已经不可信。如果他还在对外提供服务,那么读取的结果很可能不一致。 EtcdRaft的线性一致读是通过ReadIndex的机制来实现,大致的实现其实很简单,也就是在处理请求之前,会去集群中确认自己权力...阅读全文

博文 2020-04-08 07:32:51 小蜗牛爬楼梯

Go 译文之 defer、panic 和 recover

作者:Andrew Gerrand翻译:https://blog.golang.org/defer-panic-and-recoverGo有和其他语言一样常见的流程控制语句:if, for, switch, goto。同时也有go表达式来实现在不同的goroutine中运行代码(并发)。而今天我们将讨论的是go的异常控制流程:defer、panic和recover。Deferdefer语句会将函数推入到一个列表中。同时列表中的函数会在return语句执行后被调用。defer常常会被用来简化资源清理释放之类的操作。举个例子,我们来观察下下面这个函数,它的主要功能是打开两个文件并将一个文件的内容拷贝到另一个文件:func CopyFile(dstName, srcName string) (wr...阅读全文

博文 2019-06-09 09:52:37 波罗学​

学习使用 Go 的反射

什么是反射 大多数时候,Go中的变量,类型和函数非常简单直接。当需要一个类型、变量或者是函数时,可以直接定义它们: type Foo struct { A int B string } var x Foo func DoSomething(f Foo) { fmt.Println(f.A, f.B) } 复制代码但是有时你希望在运行时使用变量的在编写程序时还不存在的信息。比如你正在尝试将文件或网络请求中的数据映射到变量中。或者你想构建一个适用于不同类型的工具。在这种情况下,你需要使用反射。反射使您能够在运行时检查类型。它还允许您在运行时检查,修改和创建变量,函数和结构体。 Go中的反射是基于三个概念构建的:类型,种类和值(Types Kinds Values)。标准库中的reflect包提供...阅读全文

博文 2020-01-19 12:34:19 kevinyan

[Golang实现JVM第二篇]解析class文件是万里长征第一步

正确解析class文件是万里长征第一步。本篇我们会全程使用golang完成class文件的解析工作。 数据类型 JVM的class文件完全是二进制文件,最小单位是字节,也有数据类型,但都是字节的整数倍(废话)。规范中class文件一共有两类数据,一种是无符号整数,一种是表。无符号整数一共有u1,u2, u4, u8四种类型,分别表示8bit, 16bit, 32bit, 64bit的无符号整数。表则是无符号整数的集合,class文件中在出现表之前都会先跟着一个u2类型的长度数据,表名后面表的总长度,这样才能正确解析表。 另外还要注意字节序的问题,JVM规范规定class文件统一采用Big Endian字节序,也就是低地址存储高位,高地址存放低位。如果是用C/C++语言写JVM,则程序使用的字...阅读全文

博文 2020-05-27 19:32:48 司青玄

如何通过Dataworks禁止MaxCompute 子账号跨Project访问

摘要: 之前有很多DataWorks用户问MaxCompute访问权限问题,比如子账号为什么可以增删查别人在别的项目创建的表,即使这个子账号并没有加入那个项目 。 今天手把手教大家实现子账号授权并关闭跨Project的数据访问权限。 **原文链接:http://click.aliyun.com/m/43802/** 之前有很多DataWorks用户问MaxCompute访问权限问题,比如子账号为什么可以增删查别人在别的项目创建的表,即使这个子账号并没有加入那个项目 。 今天手把手教大家实现子账号授权并关闭跨Project的数据访问权限。 1、访问RAM控制,https://ram.console.aliyun.com/ ![图片描述](http:...阅读全文