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

BitKan

梅克尔树(Merkle trees)是区块链的基本组成部分。虽说从理论上来讲,没有梅克尔树的区块链当然也是可能的,你只需创建直接包含每一笔交易的巨大区块头(block header)就可以实现,但这样做无疑会带来可扩展性方面的挑战,从长远发展来看,可能最后将只有那些最强大的计算机,才可以运行这些无需受信的区块链。 正是因为有了梅克尔树,以太坊节点才可以建立运行在所有的计算机、笔记本、智能手机,甚至是那些由Slock.it生产的物联网设备之上。那么,究竟梅克尔树是如何工作的呢,它们又能够提供些什么价值呢,现在以及未来的? 首先,咱们先来讲点基础知识。梅克尔树,一般意义上来讲,它是哈希大量聚集数据“块”(chunk)的一种方式,它依赖于将这些数据“块”分裂成较小单位(bucket)的数据块,每一...阅读全文

博文 2017-12-06 03:34:43 谈谈以太坊的Merkle树

阿里云数据传输服务低价不低质,服务再升级

摘要: 为了释放更多技术红利,进一步普惠广大客户和开发者,阿里云于12月下旬宣布,数据传输服务(Data Transmission Service) DTS将全面降价,并于当月生效。 此次价格调整涉及多项服务和功能,国内地区数据订阅功能降价40%,国际地区降价最高达60%。 为了释放更多技术红利,进一步普惠广大客户和开发者,阿里云于12月下旬宣布,数据传输服务(Data Transmission Service) DTS将全面降价,并于当月生效。 此次价格调整涉及多项服务和功能,国内地区数据订阅功能降价40%,国际地区降价最高达60%。数据同步功能国内地区micro/small降价15%,medium/large规格降价20%。国际地区降价幅度为45%~50%。数据迁移服务,目前...阅读全文

为何专注于流媒体领域?PPIO 技术揭秘续篇

在各种音视频应用充斥着市场的时候,毫无疑问,流媒体领域将会非常适合区块链技术进行场景落地。在上一篇文章中,我们主要讨论了 PPIO 的 PCDN 架构,接下来将介绍 PPIO 的中 P2SP 的下载逻辑和 IaaS 层的流量计数。 下载逻辑 上图为 PPIO 的 CDN 和 P2SP 的传输架构图。这里将会重点讲解 PPIO 中 P2SP 的下载逻辑,它主要分三个部分,Buffer 管理,下载状态机,和下载算法。接下来会对这三部分一一解释。 Buffer 管理 Buffer 管理,即理解为本地设备管理着资源情况,从而决定需要下载的 Piece 的优先级。Buffer 管理也是和实际应用场景是相关的,对于流媒体来说,存在一个视频播放位置,播放位置附近的内容就是紧急内容,该内容则会被优先下载。 ...阅读全文

基于2PC和延迟更新完成分布式消息队列多条事务Golang版本

背景 分布式多消息事务问题 在消息队列使用场景中,有时需要同时下发多条消息,但现在的消息队列比如kafka只支持单条消息的事务保证,不能保证多条消息,今天说的这个方案就时kafka内部的一个子项目中基于2PC和延迟更新来实现分布式事务 2PC 2PC俗称两阶段提交,通过将一个操作分为两个阶段:准备阶段和提交阶段来尽可能保证操作的原子执行(实际上不可能,大家有个概念先) 延迟更新 延迟更新其实是一个很常用的技术手段,简单来说,当某个操作条件不满足时,通过一定手段将数据暂存,等条件满足时在进行执行 基于2PC和延迟队列的分布式事务实现 系统架构 实现也蛮简单的, 在原来的业务消息之后再添加一条事务消息(事务消息可以通过类似唯一ID来关联到之前提交的消息), worker未消费到事物提交的消息,就...阅读全文

博文 2019-05-18 11:34:37 仔仔

LeetCode算法系列.0149_直线上最多的点数

0149_直线上最多的点数 题目描述 给定一个二维平面,平面上有 n 个点,求最多有多少个点在同一条直线上 示例1: 输入: [[1,1],[2,2],[3,3]] 输出: 3 解释: ^ | | o | o | o +-------------> 0 1 2 3 4 示例2: 输入: [[1,1],[3,2],[5,3],[4,1],[2,3],[1,4]] 输出: 4 解释: ^ | | o | o o | o | o o +-------------------> 0 1 2 3 4 5 6 算法 func maxPoints(points []Point) int { n := len(points) // diffMap 用来过滤掉相同的点,并记录他们的个数 //map特点: po...阅读全文

博文 2018-09-06 17:34:46 tomorrowwu

MAY-Lesson2

golang pointer We can find that, by changing the parameter to a pointer type, the passed pointer argument &a and its copy x used in the function body both reference the same value, so the modification on *x is equivalent to a modification on *p, a.k.a., variable a. In other words, the modification in the double function body can be reflected out of...阅读全文

博文 2019-05-27 21:34:41 夜空一起砍猩猩

忘掉GOPATH,迎接Go modules,进入Go项目依赖库版本管理新时代

Go SDK 1.13测试版马上就要发布了。从此版本开始,Go modules依赖库版本管理特性将正式开始推荐使用。本文将解释一些和Go modules相关的一些命令和概念。 Module(模块)定义为一些Go代码包的集合。通常体现为一个含有若干代码包的目录。每个模块可以发布一系列版本。版本号使用semver(语义化版本 https://semver.org/lang/zh-CN/ )表示。一个模块可能依赖于其它若干模块;准确说来,是依赖于其它若干模块的各自的某个具体版本。每个模块可以在自己的根目录下的go.mod文件中指定其所依赖的各个模块的具体版本。 如果你所维护的某个模块尚未使用Go modules管理依赖,你可以打开一个命令行终端,进入此模块根目录,运行下面这条命令将此模块转换为一个...阅读全文

博文 2019-06-26 06:32:39 liulaomo

DockOne技术分享(八):OpenStack Magnum社区及项目介绍

【编者的话】今天主要跟大家简单介绍下Magnum社区和Magnum项目的一些介绍。Magnum到现在为止,功能做的其实不是很多,希望通过这次机会能和大家多多讨论下,看看怎样让Magnum提供更好的容器服务。 1.Magnum社区Mangum现在应该是OpenStack里边比较热门的一个和Docker集成的新项目。Magnum是去年巴黎峰会后开始的一个新的专门针对Container的一个新项目,用来向用户提供容器服务。从去年11月份开始在stackforge提交第一个patch,今年3月份进入OpenStack namespace,这个项目应该是OpenStack社区从stackforge迁移到OpenStack namespace最快的一个项目。Magnum现在可以为用户提供Kubernet...阅读全文

博文 2017-06-25 15:01:02 platformer

????桥梁模式-Bridge

源码地址:https://github.com/mumushuiding/golang-design-pattern/tree/master/02_Bridge????桥梁模式-Bridge????桥梁模式的目的就是要实现抽象定义和它的实现部分可以互不依赖,单独开发✂️抽象定义和实现的部分相互分隔,各自只在自己的类的层次结构中.⚡️类图抽象定义和它的实现之间的关系称作 ????桥梁,它在二者之间建立连接​ ????参与者桥梁模式的参与者如下:???? Client (客户).???? AbstractDef (抽象定义). 类 AbstractDef 定义了客户可以使用的 ????接口,含有指向由自己规定的接口的IImplementer的引用.SpecAbstractDef (细分的抽象定义...阅读全文

博文 2019-08-23 17:33:01 mumushuiding

第三章 整形

golang数值类型包括:整形数,浮点数,复数。(不同大小,是否支持正负都是不同类型) 整形 包括有符号的整形 int8 int16 int32 int64以及对应的无符号整形数 uint8 uint16 uint32 uint64 这里面的数字 8,16,32,64对应的是计算机位数 。 这里对应有特定平台的有符号int型与无符号uint型 这两种类型是根据CPU的处理位数来确定对应大小的 uintptr 没有指定大小,但是可以容纳指针。 有符号整形 以最高位代表符号位,超出会导致值为相反符号数 例如 int8 127+1 = -128 在golang中取模运算%的符号总是和被取模数的符号一致 例如: -5%3 与-5%-3 的结果都是 -2 除法运算符 / 的行为依赖于操作数是否全为证书...阅读全文

博文 2018-11-13 00:34:40 zhaoxi_yu

go mod 包管理之前世今生

因为之前一直是 C++ Coder,根本没有所谓的包管理,项目依赖一塌糊涂,说到 C++ 的不便之处还得吐槽一句,编译速度贼慢,每次项目中写完代码等待编译的时候就想着,以后再也不想用 C++ 写代码了。 说回正题,go mod 包管理工具 没有包管理之前,项目管理会出现什么问题 在没有包管理方案之前,项目依赖于 GOPATH,这样带来一些不便之处: 多项目难以管理。试想一下,A 项目和 B 项目 同时依赖于一个 C 项目,但是依赖于 C 项目的不同版本,如何解决,只能通过多 GOPATH 设置。 项目的依赖只能够手动 go get 下载到 GOPATH 中,如果换一台服务器开发项目,光是包依赖都得弄半天。 go mod 出来之前,其他方案的是怎么设计的? godep,glide,go ver...阅读全文

博文 2019-12-27 16:33:06 剑指TOP

2018-08-19 说一说现在的Decentralized Storage的传输

golang是特别不适合拿来做应用层可靠协议开发的语言。所有的可靠协议都依赖于连接状态,在讲究并发的场景下,所有的状态都依赖于事件,所有的事件都依赖于内核文件描述符,问题是,在可靠场景下,我们常常需要将一个端口用作一块网卡,一块网卡可以有65536个描述符并发处理事件,一个端口却只有一个描述符,这一个描述符需要模拟出65536个描述符的事件处理效能,这本来就是令人头大的问题。golang本身的协程机制----固然golang和大多数的协程实现不尽一致----导致每一个事件的处理都应短暂,且事件之间应是无状态的,如果对于可靠协议各阶段的业务与事件理解不到位,极其容易实现出资源有余,而协议效能低下的情况。为什么要有上面一段呢?因为目前的Sia,IPFS,Storj,Swarm都是golang实现...阅读全文

golang 1.8 gc的演进

在java的gc中,主要有三种算法,即:标记-删除,标记-整理,复制,网上有很多资料介绍相关内容,其中标记主要是为了找到内存中不可达的对象,并将其回收。而gc过程中最关键的指标就是STW时间,如果STW过长,会影响整体程序的响应。 Serial Serial 采用单一线程进行GC。 特点:STW时间长,但是无线程切换开销,简单高效 ParNew ParNew 与Serial一样,只是在新生代采用并发gc CMS CMS CMS收集器主要用于老年代内存的回收,致力于降低STW时间,但是却拉长了gc的整体时间。 对CPU资源非常敏感,可能会导致应用程序变慢,吞吐率下降。 无法处理浮动垃圾,因为在并发清理阶段用户线程还在运行,自然就会产生新的垃圾,而在此次收集中无法收集他们,只能留到下次收集,这部...阅读全文

博文 2019-12-08 01:33:00 淡泊宁静_3652

LeetCode算法系列_0891_子序列宽度之和

LeetCode算法系列_0891_子序列宽度之和 题目描述 给定一个整数数组 A ,考虑 A 的所有非空子序列。 对于任意序列 S ,设 S 的宽度是 S 的最大元素和最小元素的差。 返回 A 的所有子序列的宽度之和。 由于答案可能非常大,请返回答案模 10^9+7。 示例1: 输入:[2,1,3] 输出:6 解释: 子序列为 [1],[2],[3],[2,1],[2,3],[1,3],[2,1,3] 。 相应的宽度是 0,0,0,1,1,2,2 。 这些宽度之和是 6 。 提示: 1 <= A.length <= 20000 1 <= A[i] <= 20000 算法 const mod = 1e9 + 7 func sumSubseqWidths(a []int) int { //[3...阅读全文

博文 2018-09-05 19:34:42 tomorrowwu

从单租户IaaS到多租户PaaS——金融级别大数据平台MaxCompute的多租户隔离实践

摘要:在2017年云栖大会•北京峰会的大数据专场中,来自阿里云的高级技术专家李雪峰带来了主题为《金融级别大数据平台的多租户隔离实践》的演讲。在分享中,李雪峰首先介绍了基于传统IaaS单租户架构做隔离时面临的问题;然后,他重点分享了MaxCompute PaaS层面的多租户的架构以及MaxCompute在安全隔离方面的具体实践。 **点此查看原文:http://click.aliyun.com/m/42755/** 在2017年云栖大会•北京峰会的大数据专场中,来自阿里云的高级技术专家李雪峰带来了主题为《金融级别大数据平台的多租户隔离实践》的演讲。在分享中,李雪峰首先介绍了基于传统IaaS单租户架构做隔离时面临的问题;然后,他重点分享了MaxCompute PaaS层面的多租户的架构以...阅读全文

Clean Architecture实践:如何设计业务层(Golang实现)

The Clean Architecture Clean Architecture背后的核心想法其实很简单:“非核心”应该依赖于“核心”。 怎么算“核心”?对于一个应用来说,最最核心的当然就是业务数据(及其结构)和业务逻辑。这些信息应该属于一个模块(也就是常说的Service层),在实现上,应该自成一体,对数据持有化(用什么数据库和什么driver)、用户交互(是通过RESTful接口还是说本身是某个桌面应用的一部分)、或者如何与其它服务模块如何交互(消息系统?HTTP请求?)等技术有任何假定和依赖。 举个例子,在设计业务数据结构的时候,比如创建一个用户的结构,常常需要有个Id字段。这时候,就算我们知道数据库会选用MongoDB,而驱动技术用的是Mongo Go Driver,也不能简单地把...阅读全文

博文 2020-03-01 03:32:48 桥头堡2015

golang分层测试之语言入门

前言 go语言(golang) 是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易,作为测试人员,常常以Python作为自己的测试脚本或测试工具主要的实现语言,但是Python始终有其限制性,尤其是在性能方面,所以学习一门高性能的语言可以弥补测试人员在语言方面的丰富度,从本文开始,接下来会以一个系列的形式,通过go语言来进行分层测试,从单元,接口,功能以及性能的测试立足于go语言上进行讲解 入门惯例 每一门机器语言的入门,都会经历一下向世界问好的阶段,于是我们也用golang弄个hello world package main import "fmt" func main() { fmt.Println("Hello, World!") } 我们以python作为参考对比,pac...阅读全文

博文 2018-10-23 01:34:41 周学习的名字被占了

一)golang的单例模式

在23种设计模式中,单例模式作为最普遍运用的设计模式之一,在软件开发中起着非常重要的地位。 应用场景:对资源单一且有严格控制的场景,例如. 数据库连接类对象:可一次创建,一直使用的类 在golang中的单例模式实现方式有多种,但需要效率的实现主要还是依赖于sync/Once实现,其实现原理主要是依赖于sync/atomic包的原子操作源代码如下 type Once struct { m Mutex done uint32 } func (o *Once) Do(f func()) { if atomic.LoadUint32(&o.done) == 1 { return } // Slow-path. o.m.Lock() defer o.m.Unlock() if o.done == 0 ...阅读全文

Docker Swarm代码分析笔记(12)——container相关的config

创建和更新container时需要涉及到container的config(cluster\config.go): // ContainerConfig is exported // TODO store affinities and constraints in their own fields type ContainerConfig struct { container.Config HostConfig container.HostConfig NetworkingConfig network.NetworkingConfig } // OldContainerConfig contains additional fields for backward compatibility //...阅读全文

博文 2017-06-25 14:02:03 肖楠

基于k8s的容器云Paas平台概要设计

基于K8s的容器云Paas平台应该是每个使用k8s的公司必须要做的一件事,今天我们尝试以应用为中心,采用搭积木的方式完成一个最小版本的容器云Paas平台的设计,Let's Go 1. 基础功能 我们期望是实现一个尽可能自助的服务,所以里面先不考虑一些诸如审批,之类的操作,在此部分我们要完成应用从打包到上线的关键流程 1.1 镜像打包 研发编写好代码,此时就要进行代码的生产环境部署,而部署的最小单元通常就是Docker镜像,那么我们就要实现一个自助的镜像打包服务,来实现从源代码到docker镜像的交付 研发将代码提交到GIt代码仓库后,可以让代码仓库管理员设定一个回调钩子,通知我们的部署流水线,按照部署流水线按照之前设定的步骤来进行目标镜像的构建,并将构建的镜像发布到我们的镜像仓库中 其中部署...阅读全文

博文 2020-04-13 21:32:43 仔仔

兄弟连区块链教程eth源码分析node包建立多重协议eth节点

node包建立多重协议eth节点 node包建立多重协议以太坊节点 一个node是一组服务,通过共享资源提供RPC API。Services提供devp2p协议,当node实例开始运行,服务被wire到devp2p网络 Node管理资源 Node实例使用到的所有文件系统资源被放到data目录中。每个资源的路径可以通过额外的node配置改写。data目录是可选的。==如果没有设置或资源路径没有指定,node包会在内存中创建资源。== 配置Node并开启p2p服务,来访问devp2p网络。每个devp2p网络上的host有一个唯一标识符,node key.在重启过程中,Node实例维持这个key。Node加载static的和trusted可信的节点列表,保证关于其他hosts的知识持久化。 JS...阅读全文

博文 2018-10-19 10:34:39 兄弟连区块链培训

Java-100天知识进阶-JVM内存-知识铺(三)

知识铺: 致力于打造轻知识点,持续更新每次的知识点较少,阅读不累。不占太多时间,不停的来唤醒你记忆深处的知识点。 Java内存模型(JMM) JVM内存模式是JVM的内存分区 Java内存模式是一种虚拟机规范 1. Jvm内存按照运行时态及内存规范划分 Java内存区域 2.1 线程安全 2.1.1 程序计数器 2.1.2 虚拟机栈 2.1.3 本地方法 2.2 线程不安全 2.2.1 方法区 2.2.2 堆包含如下图 2.2.3 堆内存划分 总结: 程序计算器是唯一不会 OOM区 堆是gc的主要场所 线程安全区: 虚拟机栈,本地方法,程序计数器 非线程安全区:方法区,堆 堆:划分为 Eden,From Survivor,To Survivor 堆:各区比例:8:1:1 本文由zshipu....阅读全文

博文 2019-11-17 12:02:39 知识铺

Go语言基础(三)—— 面向对象编程

前言: 本专题用于记录自己(647)在Go语言方向的学习和积累。 系列内容比较偏基础,推荐给想要入门Go语言开发者们阅读。 目录如下: Go语言基础(一)—— 简介、环境配置、HelloWorld Go语言基础(二)—— 基本常用语法 Go语言基础(三)—— 面向对象编程 Go语言基础(四)—— 优质的容错处理 Go语言基础(五)—— 并发编程 Go语言基础(六)—— 测试、反射、Unsafe Go语言基础(七)—— 架构 & 常见任务 Go语言基础(八)—— 性能调优 本篇将介绍如下内容: 1.Go是面向对象的语言么? 2.结构体与行为(方法)的定义 3.接口(协议) 我们先来看个引子:“Is Go an object-oriented language?” 在Go的官方论坛里有世界各地的...阅读全文

博文 2020-02-03 10:34:16 奇舞647

1~n整数中1出现的次数

题目描述 输入一个整数 n ,求1~n这n个整数的十进制表示中1出现的次数。 例如,输入12,1~12这些整数中包含1 的数字有1、10、11和12,1一共出现了5次。 示例 输入:n = 13 输出:6 思路 既然是1~n整数中1出现的次数,可以拆解为整数n各个位置上所以可能出现1的个数。 例如一个整数n为4位数,那么结果便是第一位、第二位、第三位以及第四位上可能出现1的次数之和。 每位上出现1的个数依赖于三个位置。 高于该位的数字 该位的数字 低于该位的数字 可以拿401、411以及412的十位做例子。 // 401 // 010 011 012 013 014 015 016 017 018 019 // 110 111 112 113 114 115 116 117 118 119 ...阅读全文

博文 2020-03-13 01:32:52 youzhihua

Golang交叉编译

Golang从1.5版本起支持交叉编译,可以在一个平台上生成另一个平台的可执行程序,非常方便,交叉编译依赖于环境变量GOOS(操作系统),GOARCH(架构),CGO_ENABLED(是否启用cgo)。 Windows 下编译 Mac 和 Linux 64位可执行程序 SET CGO_ENABLED=0 SET GOOS=darwin SET GOARCH=amd64 go build main.go SET CGO_ENABLED=0 SET GOOS=linux SET GOARCH=amd64 go build main.go Mac下编译 Linux 和 Windows 64位可执行程序 CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build m...阅读全文

博文 2019-08-16 00:32:44 土豆吞噬者

EOSIO Dawn 4.0 发布

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 关于Dawn 4.0 RAM分配的反馈一些社区成员表示担心,在其他任何人发现之前,有些人会通过购买便宜的内存来获得不合理的利润。为了缓解这种情况,我们建议那些人用一个非常有限的RAM供应来启动一个节点,然后在头几个月内逐步增加内存。如果RAM的供应量从32GB开始,然后在几个月内增长到1TB,那么RAM的价格可能会随着时间的推移而迅速下降到最初定价的3%。只有那些真正需要RAM或者在出价时考虑未来RAM供应的人才会购买初始RAM。无论哪种方式,没有人会获得“便宜”的RAM或“免费利润”。 测试网络状态我们在欧洲,亚洲和美国拥有节点的内部测试网络一直运行良好,没有出现重大问题。 主观CPU资源使用率在过去的几个月中...阅读全文

博文 2019-09-16 11:02:51 链客

2019-03-07

golang中遇到的坑之 sync.once.do() 源码: func (o *Once) Do(f func()) { if atomic.LoadUint32(&o.done) == 1 { return } // Slow-path. o.m.Lock() defer o.m.Unlock() if o.done == 0 { defer atomic.StoreUint32(&o.done, 1) f() }} 这个方法的定义是,只要f函数被执行一次之后就不会再执行,那么弊端就很明显了,如果f函数执行失败需要重新执行的时候,是不能被满足的。如果需要写单例模式,但是单例初始化依赖于网络或者会出现失败需要重试的时候,还是自己乖乖的用锁来实现吧,不要偷懒用once.d...阅读全文

博文 2019-03-07 19:34:42 小世界_99f6

golang-测试方式

package main import ( "fmt" "testing" ) // 在项目的api目录下有个 main_test.go 文件,那么就可以在这个目录下面执行 go test 命令来执行 // go test -v 可以看出执行了哪几个函数 // test文件下的文件名, 必须是这种类型, 比如: main_test.go // test文件下的每一个文件test case均必须义Test开头并且符合TestXxx形式,否则go test会直接跳过测试不执行 func TestPrint(t *testing.T){ // 表示跳过当前测试 // t.SkipNow() res := print20() if res != 210 { t.Errorf("返回值错误!") } ...阅读全文

博文 2019-12-18 12:32:42 爱吃豆包

Go Strings 源码

模板引擎对LaTeX支持不太好,可以查看静态页面:链接 个人主页 Join Join 方法在字符串拼接的时候使用Builder,通过计算出Builder的大小,只需要分配一次空间。 // Join concatenates the elements of its first argument to create a single string. The separator // string sep is placed between elements in the resulting string. func Join(elems []string, sep string) string { switch len(elems) { case 0: return "" case 1: ret...阅读全文

博文 2020-03-30 23:33:25 Jupiter_Van