Tikye(TIY)知识科普之技术架构

设计思路考虑到Tikye对于区块链系统的性能、安全等需求远比一般的公有链性能更高,为了保证交易场景下的公开透明,交易各方皆能参与到区块链的共同监管与治理,同时能兼顾高频交易需要较高的TPS,我们设计了一套支持可插拔、可扩展的高性能应用级区块链系统。在下文中,该区块链系统简称Tikye。该系统为开发者提供便捷的SDK工具包,同时还将为外部系统提供可兼容的API接口,基于Tikye的特性解决传统问题。主要依靠智能合约来解决基于Tikye的事务性问题,智能合约在区块链环境中运行,保证了事务执行的可行性...阅读全文

Segmentfault 2019-09-19 11:32:43 逗币狗

长连接、短连接、长轮询、短轮询、WebSocket释疑

看到一篇不错的文章,特意转载过来,原文地址:长连接、短连接、长轮询、短轮询、WebSocket 一、短连接和长连接 短连接:每次Http请求都会建立Tcp连接,管理容易 长连接:只需要建立一次Tcp连接,以后Http请求重复使用同一个Tcp连接,管理难 HTTP1.1规定了默认保持长连接(HTTP persistent connection ,也有翻译为持久连接),数据传输完成了保持TCP连接不断开(不发RST包、不四次挥手),等待在同域名下继续用这个通道传输数据;相反的就是短连接如果服务器没有...阅读全文

Segmentfault 2019-09-19 12:32:40 Corwien

白话比原链跨链技术

随着Bystack的主侧链架构的推出,主侧链之间的跨链问题也成为比原链团队的主要攻克工程难题,当前比原链已经推出了两种跨链的机制,各有不同的侧重点,可能因为本身的跨链技术比较晦涩,本篇想以较为通俗的方式向社区介绍比原链最新的跨链技术。 一些预备知识 跨链简单的来说就是解决如何让一条链上的token转移到另一条链上,本质是将一条链上的价值转移到另一条链,跨链需要保证以下几点: 1. 确保已跨链的资产的妥善保管,不能在原链上能够继续流通,要防止被窃取或者挪用; 2. 确保两条链上转移的资产是等同的,...阅读全文

Segmentfault 2019-09-19 12:32:40 比原链Bytom

Go Vet 命令:超出预期的强大

!["Golang 之旅"插图,由 Go Gopher 的 Renee French 创作](https://raw.githubusercontent.com/studygolang/gctt-images2/master/go-vet-command-is-more-powerful-than-you-think/go-vet.png) Go `vet` 命令在编写代码时非常有用。它可以帮助您检测应用程序中任何可疑、异常或无用的代码。该命令实际上由几个子分析器组成,甚至可以与您的自定义...阅读全文

Go语言中文网 2019-09-19 08:07:17 TomatoAres

leetcode 回溯题目 golang语言

回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就 “回溯” 返回,尝试别的路径。回溯法是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为 “回溯点”。许多复杂的,规模较大的问题都可以使用回溯法,有“通用解题方法”的美称。回溯算法的基本思想是:从一条路往前走,能进则进,不能进则退回来,换一条路再试。 链...阅读全文

51CTO博客 2019-09-18 09:02:22 努力的C

goa - 基于中间件的轻量级golang web框架

What is goa ? ✨ goa = go + koa Goa是一个基于中间件的golang web框架,其整体思想来源于koajs,并且结合了golang的特性。Goa致力于成为 web 应用和 API 开发领域中的一个更轻量、更高效的框架。Goa 并没有捆绑任何中间件,而是提供了一套优雅的方法,帮助您快速而愉快地编写服务端应用程序。 Goa采用了许多koajs的特性,部分API参照了gin源码。goa-router则是完全基于高效、内存占用低的httprouter二次开发。 特性 轻量...阅读全文

Segmentfault 2019-09-19 12:32:39 NicholasCao

goa - 基于中间件的轻量级golang web框架

### Goa [Goa](https://goa-go.github.io)是一个基于中间件的golang web框架,其整体思想来源于[koajs](https://github.com/koajs/koa),并且结合了golang的特性。Goa致力于成为 web 应用和 API 开发领域中的一个更轻量、更高效的框架。Goa 并没有捆绑任何中间件,而是提供了一套优雅的方法,帮助您快速而愉快地编写服务端应用程序。 > Goa采用了许多[koajs](https://github.com...阅读全文

Go语言中文网 2019-09-18 19:40:53 NicholasCao

golang modules

本文使用go的版本 go1.13 ,使用的系统为 macos go modules 使用 go mod init hello ##初始化 go run hello.go ##运行项目搞定 使用go modules 不需要讲想法放大GOPATH下的src中并且只需要在项目的根目录执行 go mod init 模块名称,然后开始写代码,最后执行 go run hello.go go会自动下载项目依赖的第三方的包。简直太方便了。 下载之后的包放哪里了? 使用 go mod 依赖的包并没有放在项目的 v...阅读全文

Segmentfault 2019-09-19 12:32:38 曹飞龙

比特币和加密货币入门

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 比特币与加密货币 现在人们对加密货币空间产生巨大的兴趣的同时也同样也存在这疑惑与不解。比特币,加密货币,区块链,ICOs(各种首发代币)。这些都意味着什么?对这些外来概念,我们的自然反应通常是怀疑和拒绝。但在概念与术语背后,这些强大的新技术整改变着我们的金融体系。 比特币始于针对2008年全球金融危机背景下的一项实验中,旨在建立更好的金融体系。早些时候,加密货币在不入流的基调中发展着,因为它们主要与毒品交易,勒索软件...阅读全文

Segmentfault 2019-09-19 12:32:38 链客

[译] Go 1.13 errors 包错误处理

原文地址:peter.bourgon.org/blog/2019/0… 原文作者:Peter 译文地址:github.com/watermelo/d… 译者:咔叽咔叽 译者水平有限,如有翻译或理解谬误,烦请帮忙指出 Go 1.13 引入了一个增强的package errors,大致标准化了错误处理。就个人而言,我觉得它的 API 令人有点困惑。本文提供一些如何更有效使用它的参考。 创建 errors sentinel errors(译者注:表示在此错误中断,程序不会继续往下处理)和以前一样。将它...阅读全文

掘金 2019年09月18日 咔叽咔叽

比特币核心概念及算法

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 bitcoin项目地址位于github仓库,当前各种“币”,基本都是从抄写bitcoin代码开始起步的。想要深度研究,从看源码开始不可避免。 P2P:电骡、迅雷、BT,在中国网络影视的发展让大家对P2P很熟悉,可能已经没有人记得比特币实际上是第一批P2P的实践者。所有交易记录在全网通过P2P的方式广播,每个人都保存一份完整的交易记录。所以也叫去中心化。 去中心化:bitcoin的去中心化是指的账本去中心化,每个人都拥...阅读全文

Segmentfault 2019-09-19 12:32:37 链客

比特币区块的产生速度为何被设定为10分钟?

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 众所周知,比特币的block产生速度被设定为了10分钟,按着官方wiki所说,每一个节点需要一些时间来确认block(<10mins),但为什么是10分钟呢?和网络延迟有关系吗?和hash方程的难度有关系吗? 本期《晓说区块链》,陈晓东先生(维基链首席技术官)将围绕这些话题,为大家解读。 网友:为什么比特币的block产生速度被设定为10分钟? 和网络延迟有关系么?按着官方wiki所说, 每个节点需要一些时间来确认b...阅读全文

Segmentfault 2019-09-19 12:32:37 链客

区块链+5G=智慧城市?

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 智慧城市是一个非常大的产业范畴,同时包括面向政府的智慧治理、面向市民的智慧民生和面向产业的智慧经济三大板块,涵盖了智慧政务、智慧环保、智慧安防、智慧交通、智慧教育、智慧医疗、智慧生活、智慧企业等数十个场景。 智慧城市场景的实现依靠多种技术的综合运用,从信息数据的采集、整合、发布和分析,最后反馈到实际应用场景中。能够实现这一过程并在智慧城市中广泛应用的技术有:物联网、云计算、生物识别、地理空间技术、区块链、人工智能。这...阅读全文

Segmentfault 2019-09-19 12:32:36 链客

ABS是啥,为什么区块链可以与它完美结合?

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 房地产市场在各方调控下终于进入新的平稳期,但租房市场近日来却是水涨船高。抛开传统的租售比概念不谈,今天小编想和大家谈谈ABS模式是如何改变传统租房市场,以及区块链技术将给ABS带来哪些机遇。 如果你是一个金融小白,肯定连ABS是什么都不知道。事实上,所谓ABS,也就是资产证券化,它指的是将缺乏流动性、但具有可预期收入的资产进行打包,通过在资本市场上发行证券的方式予以出售,以最大化提高资产的流动性。 注意!重点来了:“...阅读全文

Segmentfault 2019-09-19 12:32:36 链客

golang优雅的错误处理

golang的错误处理一直深受大家诟病,项目里面一半的代码在做错误处理。 自己在做golang开发一段时间后,也深有同感,觉得很有必要优化一下,一方面让代码更优雅一些,另一方面也为了形成系统的错误处理方式,而不是随心所欲的来个errors.new(),或者一直return err。 在查阅一些资料之后,发现自己对golang错误处理的认识,还停留在一个低阶的层面上。这里想和大家探讨一下,也为巩固自己所学 错误的返回处理 在函数多层调用时,我常用的处理方式是: func Write(w io.Wr...阅读全文

Segmentfault 2019-09-19 12:32:35 manshu

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

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

掘金 2019年09月18日 li_peng

Golang error 的突围

写过 C 的同学知道,C 语言中常常返回整数错误码(errno)来表示函数处理出错,通常用 -1 来表示错误,用 0 表示正确。 而在 Go 中,我们使用 error 类型来表示错误,不过它不再是一个整数类型,是一个接口类型: type error interface { Error() string } 复制代码它表示那些能用一个字符串就能说清的错误。 我们最常用的就是 errors.New() 函数,非常简单: // src/errors/errors.go func New(text st...阅读全文

掘金 2019年09月18日 Stefno

Protobuf生成Go代码指南

这个教程中将会描述protocol buffer编译器通过给定的.proto会编译生成什么Go代码。教程针对的是proto3版本的protobuf。在阅读之前确保你已经阅读过Protobuf语言指南。 编译器调用 Protobuf核心的工具集是C++语言开发的,官方的protoc编译器中并不支持Go语言,需要安装一个插件才能生成Go代码。用如下命令安装: $ go get github.com/golang/protobuf/protoc-gen-go 提供了一个protoc-gen-go二进制...阅读全文

Segmentfault 2019-09-19 12:32:35 KevinYan

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

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

博客园 2019-09-18 11:49 li-peng

记录 gRPC Deadlines 的一次事故

收到交易服务的报警,服务器内存暴增。后经排查发现是由于gRPC客户端调用的时候在上下文(context)中未设置Deadline导致的。那么为什么未设置Deadline会导致内存耗尽呢? 当您使用gRPC时,gRPC库负责通信,编组,解组和最后期限执行。Deadline允许gRPC客户端指定在RPC以错误DEADLINE_EXCEEDED终止之前,他们愿意等待RPC完成的时间。默认情况下,此截止日期是一个非常大的数字,取决于语言实现。如何指定截止日期也取决于语言。指定截止日期或超时的方式因语言而...阅读全文

Segmentfault 2019-09-19 12:32:34 维子