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

Go微服务 - 第十部分 - 集中化日志

第十部分: Go微服务 - 集中化日志 本文介绍我们的Go微服务基于Logrus、Docker Gelf日志驱动以及Loggly服务(Logging as a Service)的日志策略。 Logrus: Go语言中的结构化、可插拔日志功能。 Docker Gelf日志驱动器: 是一种方便的格式,可以被很多工具理解,例如Graylog, Logstash, Fluentd等等。 Loggly: 这是一个日志数据管理的SaaS解决方案。使用它可以将日志从整个基础设施的深处带到一个可以跟踪活动和分析趋势的地方。最重要的是,Loggly是一种托管服务,你不需要任何额外的硬件或软件就可以使用Loggly,并且可以动态根据操作进行扩展。 简介 日志。你根本不知道你会失去多少, 直到你这样做。为你的团队...阅读全文

博文 2018-05-22 23:34:37 WalkerQiao

企业级区块链实战课程(第四版)

虽然各地已经逐渐开始复工复业,不过疫情形势依然非常严峻。虽然健康非常重要,但工作也同样重要。待在家里,我也没闲着。前一段时间完成了《企业级区块链实战课程》初稿编写。最近一直在修改,目前已经到了第四版,感觉还可以更好。下面是第四版教程部分更新内容。1、区块链技术理论这部分内容主要参照的是《大话区块链》,后面有时间会进行进一步优化。初步想法是加入一些更有技术深度的内容。 2、区块链开发实战预备知识 这部分内容相对比较成熟,修改余地不大,只是做了部分文字润色。3、Hyperledger Fabric架构详解这部分内容改动比较大,主要是因为前面讲了太多的理论,这里开始进入实战环境的搭建。 这部分特点是详解讲解了Fabric网络环境手动安装的过程,更偏向于生产环境实战。同时对Hyperledger F...阅读全文

博文 2020-02-25 22:32:52 应平与你说未来

数人云推出的容器管理工具 Crane

Crane 是数人云推出的容器管理工具,它根据  Docker  的原生编排功能,采用轻量化架构,帮助开发者快速搭建 DevOps  环境,体验  Docker  的各种最新功能。 **主要功能**: * Swarm特性:强调了Swarm的通用功能,通过前端界面友好来增强用户体验。 * 项目模板管理: 用户可以将项目保存为模板,其他人可以直接快速部署模板。 * 镜像管理:用户的私有镜像可以公开给其他人。 * 模糊搜索:由后端支持的内存索引服务功能。 * 主机运维:可以查看主机的各种配置和状态,例如核心版本,docker配置,docker镜像以及给定主机的容器信息等等。 * 虚拟网络管理:虚拟网络CRUD实现应用网络隔离和独立的网络规划,无缝对接多种overlay网络方案 * ...阅读全文

[Go - Note] go中json序列化(Encode)和反序列化(Decode)以及struct tag

import "encoding/json" struct tag 可以选择的控制字段有几种: * `-`:不要解析这个字段 * `omitempty`:当字段为空(默认值)时,不要解析这个字段。比如 false、0、nil、长度为 0 的 array,map,slice,string * `FieldName`:当解析 json 的时候,使用这个名字 * type,有些时候,我们在序列化或者反序列化的时候,可能结构体类型和需要的类型不一致,这个时候可以指定,支持string,number和boolean,array,object Encode func Marshal(v interface{}) ([]byte, error) omitempty: struct字段若有次tag,序列化时...阅读全文

博文 2020-01-27 10:32:38 Arboat

什么是gRPC?

本文会介绍gRPC和协议缓冲。gRPC可以使用协议缓冲作为它的IDL和底层信息交换格式。如果你刚接触gRPC或者协议缓冲,那就看本文!如果你想深入或者实战,查看Quick Starts。 概述 在gRPC里,客户端可以直接调用不同机器上的服务应用的方法,就像是本地对象一样,所以创建分布式应用和服务就很简单了。在很多RPC(Remote Procedure Call Protocol)系统里,gRPC是基于定义一个服务,指定一个可以远程调用的带有参数和返回类型的的方法。在服务端,服务实现这个接口并且运行gRPC服务处理客户端调用。在客户端,有一个stub提供和服务端相同的方法。 在各种环境里,gRPC客户端和服务端都能运行并且互相通讯 - 从谷歌内部服务到你自己的桌面 - 并且可以写在任何gR...阅读全文

博文 2017-08-17 12:05:06 竹天亮

golang结构体json的时间格式化解决方案

有时候项目开发会遇到一个结构体的Json转换的时间格式问题。 即这种1993-01-01T20:08:23.000000028+08:00 这种表示UTC方法。从我们习惯来说,更喜欢希望的是 1993-01-01 20:08:23这种格式。 重新复现代码如下: package main import ( "time" "encoding/json" ) type Student struct { Name string `json:"name"` Brith time.Time `json:"brith"` } func main() { stu:=Student{ Name:"qiangmzsx", Brith:time.Date(1993, 1, 1, 20, 8, 23, 28, ti...阅读全文

博文 2017-07-16 04:06:36 不会写代码的程序猿

请教,struct中属性如果是函数,能否序列化?

突发奇想,希望实现struct的函数或者属性,指向某个方法,并序列化,但报错,想知道是否可行? 测试代码如下: ```Go //测试方法的持久化 func Test1(t *testing.T){ F :=func(){ fmt.Println("这只是个测试") } src :=Foo{ Cache:2, InnerFunc:F, } //正常运行 src.Do() src.Do2() var buf bytes.Buffer enc:=gob.NewEncoder(&buf) dec:=gob.NewDecoder(&buf) enc.Encode(src) var funcdst Foo err:=d...阅读全文

RPCX: 一个用Go实现的类似Dubbo的分布式RPC框架

目录 [−] RPC是什么RPCX的特点RPCX架构RPCX的特性服务器特性编码 (序列化)注册中心扩展点客户端特性负载均衡容错重选算法扩展点RPCX例子点对点ServerClient多服务器ServerClientBenchmark参考文档 rpcx是一个类似阿里巴巴 Dubbo 和微博 Motan 的分布式的RPC服务框架,基于Golang net/rpc实现。 谈起分布式的RPC框架,比较出名的是阿里巴巴的dubbo,包括由当当网维护的dubbox。不知道dubbo在阿里的内部竞争中败给了HSF,还是阿里有意将其闭源了,官方的代码使用的spring还停留在2.5.6.SEC03的版本,dubbox的spring也只升级到3.2.9.RELEASE。不管怎样,dubbo还是在电商企业得到...阅读全文

博文 2017-02-08 12:53:36 smallnest

grpc 基础知识 - Go

该篇文章介绍了golang的grpc编程。通过下面的例子,你将会学到: 1. 在一个.proto文件里define一个service 2. 用protocol buffer 编译工具生成server和client代码 3. 用go grpc的api写一个简单的server和client你应该已经读过 概述( Overview),并且对 protocol buffers有所了解,注意教程中的例子用了protocol buffer 的proto3版本:详情见以下两个链接 proto3 language guide , Go generated code guide.为什么用grpc?我们的示例是一个简单的路由映射应用程序,它允许客户机获取有关其路由上功能的信息,创建其路由的摘要,并与服务器和其他...阅读全文

博文 2019-02-18 18:34:43 晓_7611

vmware上安装linux过程记录

以前的电脑上安装过vmware+redhat,但是奈何电脑太老,配置太低,打开的时候超级卡,没法用。换了电脑后,再装上玩玩,故此记录一下安装过程。需要安装的小伙伴可以在此获取包然后按此步骤安装。 1、创建新的虚拟机 -> 自定义安装 2、选择虚拟机兼容版本,选择最高的就好 3、选择安装系统的方式,我们选择稍后安装 4、选择安装的系统类型,系统为32位的就选32位的(redhat enterprise linux 7),系统为64位的就安装64位的 5、设置安装的虚拟机系统名称以及安装的虚拟机存放路径,路径自己定义(建议不要放到C盘) 6、为虚拟机分配处理器(cpu)个数和每个cpu核数 7、为虚拟机分配内存大小 8、选择网络类型,这里使用桥接模式,安装好后会利用该方式上网 9、选择使用网络类...阅读全文

博文 2019-10-20 12:02:43 小碗汤

Go语言的坑

以下排名不分先后: 1. 内存使用有限制:貌似不会使用虚拟内存,超过一点数量就会oom。 2. gob大小有限制:序列化的数据大小有限制,Encode似乎还行,Decode就会报错:invalid message length 3. strings.Split()行为:strings.Split("", "\t"),得到的slice长度不是0,而是1,也就是说会得到一个[""]。这与python的split()行为是不同的! 待续。。...阅读全文

博文 2015-06-17 23:03:16 yhcharles

好程序员HTML5技术分享前端自动化工具推荐

好程序员HTML5技术分享前端自动化工具推荐随着前端开发技术的不断发展,前端开发工作也变得越来越复杂,如果能合理地采用一些自动化的工具,生活要容易得多。LiveReload 我目前的开发主力机是一台较早的 13寸 Macbook Pro,外加一台戴尔的显示器。相信做前端开发的都知道,这多出来的一台显示器对工作效率的提升有多大。LiveReload 技术+两块显示屏可以帮你省去重复刷新浏览器这一枯燥的工作。目前实现 LiveReload 的方式很多,如果你倾向于图形化的桌面应用,可以尝试一下 LiveReload.app, 地址是:https://github.com/livereload/LiveReload,这款应用同时有 Mac 版和 Windows 版,使用起来也很简单,通过图形界面设...阅读全文

golang标准库中的encoding/gob包

一、golang中的gob包是什么?gob是golang包自带的一个数据结构序列化的编码/解码工具。二、go标准库中的gob编码规则当发生方传递的是struct{A,B int}结构的值,接收方可以允许前9种结构,但是后4四种结构却是不允许的。允许模拟相似,但是不允许矛盾。各个类型的编码规则1、结构体内只有导出字段并且导出字段才能被编码和解码2、编码至少存在一个可编码字段,解码也至少需要一个能被解码字段,不然会报错。3、解码方的导出字段必须存在与编码后的同名字段,类型一致,或者接收方为同类型指针,或为指向指针的指针类型。(比如,编码:A int,则解码可以为A int,A *int,A **int,这三种的一种,虽然A ***int不会报错,但是接收不到值),如果导出字段名称一样,但是类型不...阅读全文

博文 2019-07-17 18:32:42 CC_ab48

Go 开发的高一致性分布存储 hyflow-go

hyflow-go是一款可进行地理复制、主内存main-memory的高一致性数据存储,其最大特点是将低延时和高事务完美统一。 其模板化的架构: 1. 事务层:基于commit-time事务认证,灵活支持传统数据库的MVCC( Multi-Version Concurrency Control )和 single-versioning。能用来提供串行化serializability 或EUS(Extended Update Serializability ),这些依赖于底层的顺序Order层。 2.顺序层Ordering Layer:一致性的协议是可插拔的,可选择偏序(partial order)协议,如 Alvin POB, M2Paxos 或 E‑Paxos;或者完整顺序协议...阅读全文

如何在go中使用protobuf

protobuf是Google开发出来的一个语言无关、平台无关的数据序列化工具,在rpc或tcp通信等很多场景都可以使用。通俗来讲,如果客户端和服务端使用的是不同的语言,那么在服务端定义一个数据结构,通过protobuf转化为字节流,再传送到客户端解码,就可以得到对应的数据结构。这就是protobuf神奇的地方。并且,它的通信效率极高,“一条消息数据,用protobuf序列化后的大小是json的10分之一,xml格式的20分之一,是二进制序列化的10分之一”。 安装 编译安装protobuf的编译器protoc wget https://github.com/google/protobuf/releases/download/v2.6.1/protobuf-2.6.1.tar.gz tar ...阅读全文

博文 2017-08-03 06:34:59 Dr_Zhang

基于go搭建微服务实践教程 (三)

文地址转载请注明原文及翻译地址 在第三节,我们要让我们的accountservice做一些有用的事情。 声明一个 Account 结构 嵌入一个键值对的存储,用来存储Account结构 序列化结构为JSON,并且用于我们的accounts/{accountId} HTTP服务 源代码 这篇博客中的所有代码可以从分支p3中得到。 git checkout P3 声明一个Account结构 在我们的项目中,在accountservice文件夹中创建一个model文件夹 mkdir model 在model文件夹下创建一个文件名字为account.go并写入以下代码: package model type Account struct { Id string `json:"id"` Name st...阅读全文

博文 2018-05-19 20:33:23 瘦瘦鸭

在Jenkins pipeline中融入python和go语言编程

在Jenkins pipeline的groovy脚本中可以实现很多复杂灵活的功能,但是:1 一来对java、groovy不是很熟,也不知道能不能引入一些三方库?比如搞个jdbc操作下mysql什么的。2 二是自己对go和python比较熟悉,所以想能够更加灵活的实现更多的功能:比如: 操作数据库,无需依赖构建宿主机必须有数据库client来靠shell操作数据库。 操作gitlab,比如参数化构建,传递进来的各仓库的tag参数,需要先将tag在gitlab中对应起来一一先打tag,然后再拉取新打的tag的代码去构建。这需要调gitlab的rest API接口。 还有一些比如发邮件,钉钉,企业微信 等告警通知时,虽然都有插件,但插件太多还是比较烦,特别如果需要依赖插件里面的各种自带的环境变量时...阅读全文

博文 2019-04-09 10:35:11 重庆MX

go必知必会

protobuf详解 1、安装 源码包下载 git clone https://github.com/google/protobuf 安装依赖 sudo apt-get install autoconf automake libtool curl make g++ unzip 生成需要的配置脚本 cd protobuf //进入源码库中 ./autogen.sh //运行脚本生成需要的配置脚本 编译安装 ./configure make make check sudo make install sudo ldconfig //用于刷新共享库的缓存 安装proto-gen-go go get -u github.com/golang/protobuf/proto go get -u githu...阅读全文

博文 2019-01-13 16:34:39 yongfutian

兄弟连区块链培训教程分享持久化

兄弟连区块链培训教程分享持久化:数据库选型、直到现在,我们的区块链实现中还没有用到数据库,我们只是把每次启动程序计算得到的区块储存在内存中。我们不能复用一个之前生成的区块链,也不能与他人分享,因此,现在我们要把它存在磁盘上。那该选择什么样的数据库?其实任何一种都可以。在比特币文档中,没有说要一个具体的数据库,所以这取决于开发者。Bitcoin Core用的是LevelDB。本篇教程中使用BoltDB。BoltDBBoltDB有如下特性:1. 小而简约2. 使用Go实现3. 不需要单独部署4. 支持我们的数据结构它的Github中这样描述Bolt is a pure Go key/value store inspired by Howard Chu’s LMDB project. The go...阅读全文

博文 2018-09-26 18:34:42 兄弟连区块链培训

谈谈golang的rpc

之前因为工作需要,写过2个golang的http协议的服务,并没有发现性能上有什么明显的问题。 http/1 之所以如此,主要是因为golang的http客户端默认就支持keepalived长连接复用,并且支持对同一个Host维护连接池(多个连接),所以并没有受到短连接问题的性能影响,当然你也要注意配置一下http客户端的一些参数来优化一下keepalived的行为,具体可以参考:《go HTTP Client大量长连接保持》。 既然Http客户端已经这么好用,还需要研究其他的么?显然,http存在一些问题: 服务端串行应答:在一条连接上的连续请求,在服务端必须按照请求到来的顺序返回应答。 这导致前一个请求处理慢直接影响后续所有请求响应时间变长,显然是个不可忽视的问题。 http协议解析性能...阅读全文

博文 2017-11-04 06:30:50 鱼儿的博客

go-ConcurrentMap实现

用go实现ConcurrentMap // 泛化的Map的接口类型 type GenericMap interface { // 获取给定键值对应的元素值。若没有对应元素值则返回nil。 Get(key interface{}) interface{} // 添加键值对,并返回与给定键值对应的旧的元素值。若没有旧元素值则返回(nil, true)。 Put(key interface{}, elem interface{}) (interface{}, bool) // 删除与给定键值对应的键值对,并返回旧的元素值。若没有旧元素值则返回nil。 Remove(key interface{}) interface{} // 清除所有的键值对。 Clear() // 获取键值对的数量。 Len(...阅读全文

博文 2016-10-26 09:00:00 niyuelin1990

k8s :kube-apiserver 启动流程 - 2

前言 文章字数一多,在线编辑不方便,本文是 k8s:kube-apiserver 启动流程的第2部分传送门:k8s :kube-apiserver 启动流程 - 1 回顾 上回讲到 Run 方法: // kubernetes/cmd/kube-apiserver/app.server.go func Run(runOptions *options.ServerRunOptions, stopCh <-chan struct{}) error { ... server, err := CreateServerChain(runOptions, stopCh) if err != nil { return err } return server.PrepareRun().Run(stopCh) ...阅读全文

博文 2018-03-24 23:34:38 xingpingz

Go Application elasticHD无需安装的elasticsearch dashboard

ElasticHD 是一款 ElasticSearch的可视化应用。不依赖ES的插件安装,更便捷;导航栏直接填写对应的ES IP和端口就可以操作Es了。目前支持如下功能:ES 数据实时搜索ES DashBoard 数据可视化展示,(内存,硬盘等等。。。)ES Index Template (在线修改、查看、上传)SQL Converts to DSL Downloads ElasticHDPrecompiled binaries for supported operating systems are available.Application Info​​​​​​​​​​​ 图像 小部...阅读全文

博文 2017-06-06 08:39:36 farmerx

Golang 中使用 JSON 的小技巧

有的时候上游传过来的字段是string类型的,但是我们却想用变成数字来使用。 本来用一个json:",string" 就可以支持了,如果不知道golang的这些小技巧,就要大费周章了。 参考文章:http://attilaolah.eu/2014/09/10/json-and-struct-composition-in-go/ 临时忽略struct字段 type User struct { Email string `json:"email"` Password string `json:"password"` // many more fields… } 临时忽略掉Password字段 json.Marshal(struct { *User Password bool `json:"pas...阅读全文

博文 2017-06-22 09:04:03 徐学良

go-反射机制

思路 结构对象映射出来:类名,成员名,成员值 package dao import ( _ "ChbeeGoTest/models" "ChbeeGoTest/utils/myLog" "fmt" "reflect" "strings" ) type Dao struct { } var DaoInter = new(Dao) //将对象映射到表格中,返回主键ID func (this *Dao) Insert(obj interface{}) { //对象转表格 table := obj2table(obj) fmt.Println(table.TbName) //序列化列名 cloums := strings.Join(table.Cloum, ",") fmt.Println(clou...阅读全文

博文 2016-05-01 22:00:02 shuanger_

IPFS数据模型-IPLD

ipld.io Github:ipld 原文:IPLD specs 有许多系统使用merkle-tree和hash-chain受启发的数据结构(例如git,bittorrent,ipfs,tahoe-lafs,sfsro)。IPLD(星际链接数据)定义: merkle-links:merkle-graph的核心单元 merkle-dag:任何边为merkle-links的图。dag代表“有向无环图” merkle-paths:使用命名的merkl-links来遍历merkl-dags的unix风格的路径。 IPLD格式:可以表示IPLD对象的一组格式,例如JSON,CBOR,CSON,YAML,Protobuf,XML,RDF等。 IPLD规范格式:一种序列化格式的确定性描述,确保相同的逻辑...阅读全文

go公链实战0x03数据持久化

上一节学习了基于go语言的数据库boltDB的基本使用,这一节用boltDB实现区块链的数据持久化。 存储方式 区块链的数据主要集中在各个区块上,所以区块链的数据持久化即可转化为对每一个区块的存储。boltDB是KV存储方式,因此这里我们可以以区块的哈希值为Key,区块为Value。 此外,我们还需要存储最新区块的哈希值。这样,就可以找到最新的区块,然后按照区块存储的上个区块哈希值找到上个区块,以此类推便可以找到区块链上所有的区块。 区块序列化 我们知道,boltDB存储的键值对的数据类型都是字节数组。所以在存储区块前需要对区块进行序列化,当然读取区块的时候就需要做反序列化处理。 没什么难点,都是借助系统方法实现。废话少说上代码。 序列化 //区块序列化 func (block *Block...阅读全文

博文 2018-06-24 20:34:39 chaors

go-ConcurrentMap实现

用go实现ConcurrentMap// 泛化的Map的接口类型type GenericMap interface { // 获取给定键值对应的元素值。若没有对应元素值则返回nil。 Get(key interface{}) interface{} // 添加键值对,并返回与给定键值对应的旧的元素值。若没有旧元素值则返回(nil, true)。 Put(key interface{}, elem interface{}) (interface{}, bool) // 删除与给定键值对应的键值对,并返回旧的元素值。若没有旧元素值则返回nil。 Remove(key interface{}) interface{} // 清除所有的键值对。 Clear() // 获取键值对的数量。 Len() ...阅读全文

博文 2016-10-31 05:00:03 u012798391

让Raft变快100倍 - Dragonboat的写优化

Dragonboat是近期开源的Go实现的多组Raft库,16字节荷载的写可以持续在900万次每秒,9:1高读写比下可以持续在超千万次每秒。详细的benchmark信息可参考github项目首页,同时也烦请大家点Star鼓励:github.com/lni/dragonboat​github.comDragonboat的性能是持续优化改进的结果,它从2017年年中时候的每秒10万次写,一路走来,经过数十项优化以后最终成为当前开源版本所能具备的1000万次写每秒的性能。对于同样的吞吐需求,更高效的实现意味着库本身消耗的资源将更少,能为用户应用留出的资源更多。Dragonboat在2.8GHz志强上,对于16字节荷载,平均每个CPU核心能承担超过每秒40万次写,且在测试中线性伸展至22核每秒900...阅读全文

博文 2019-01-08 11:34:49 贺大伟

七层流量接入系统

和大家聊一聊七层流量接入中间件。1. 接入系统简介与架构1.1 Go反向代理用Go语言实现一个订制化的反向代理。Go语言近几年在国内较流行,随着docker的成名而愈加受人追捧。目前国内使用Go开发的团队和系统越来越多,像百度的BFE、360的长连接推送、七牛云存储、滴滴登录认证等,名单很长。Go比较适合于中间件(反向代理、消息队列等)以及旁路系统(存储、长连接推送等)的开发,也有很多团队开始使用Go来编写WebAPI(使用beego框架)。Go语言提供原生的协程(goroutine)支持,天生高并发,而且是用同步逻辑编写异步程序(语言底层封装了异步I/O),开发效率极高。重复造轮子业界有很多成熟的反向代理(Nginx、Tengine),为何不基于这些开源的项目二次开发?主要考虑三点:1)开...阅读全文

博文 2017-02-11 17:01:49 magiccao

再测Golang的JSON库

写项目一直需要进行序列化,听到了,也看到了很多同学老师对各个golang的json库进行测评。那本人为什么还要继续进行这一次测评呢? 因为实践过的知识最有说服力,也是属于自己的,我也希望看到本博文的同学老师可以修改和执行测评的代码执行一遍,我相信会有不一定的体会。 本次测评我选择了类库有: 类库 序号类库地址备注 1encoding/jsonGolan 2easyjsongithub.com/mailru/easyjson 3ffjsongithub.com/mailru/easyjson 4iterator/jsongithub.com/json-iterator/go 主要是针对上述的类型进行,本人采用了对不同的类库使用不同的结构体(仅仅是结构体名称不同,字段顺序和类型一样)。 环境 环...阅读全文

博文 2018-02-09 13:33:04 梦朝思夕

dubbo-go 的开发、设计与功能介绍

dubbo-go 的前世今生 dubbo-go 是目前 Dubbo 多语言生态最火热的项目。dubbo-go 最早的版本应该要追溯到 2016 年,由社区于雨同学编写 dubbo-go 的初版。当时很多东西没有现成的轮子,如 Go 语言没有像 netty 一样的基于事件的网络处理引擎、 hessian2 协议没有 Go 语言版本实现,加上当时 Dubbo 也没有开始重新维护。所以从协议库到网络引擎,再到上层 dubbo-go ,其实都是从零开始写的。 在 2018 年,携程开始做 Go 语言的一些中间件以搭建内部的 Go 语言生态,需要有一个 Go 的服务框架可以与携程的现有 dubbo soa 生态互通。所以由我负责重构了 dubbo-go 并开源出这个版本。当时调研了很多开源的 Go 语...阅读全文

深入Go语言 - 13 反射

目录 [−] TypeValue转换 本章重点介绍Go语言中的反射。包reflect可以实现运行时的反射,允许程序操纵对象的值和类型。典型地,你可以获取 interface{}的动态类型以及的它的值和方法。 Go是静态类型的语言,每一个对象在声明和初始化的时候都已经有一个确定值,即使是声明为接口类型的变量,它的静态类型也已经确定,即使任何包含这个接口方法集的类型的对象都可以赋值给它。 我们可以在运行时获取对象的动态类型和值。 类型Type和值Value是我们使用发射库的主要用的两个概念。 Type Type是一个interface,代表Go中的一个类型,可以把它看成某个类型的元数据(描述类型的类型),这个类型既可以是Go语言或者库中定义的type类型,也可以你自己定义的type类型。 下面我...阅读全文

博文 2017-02-08 12:53:41 smallnest

Go官方库RPC开发指南

Go官方提供了一个RPC库: net/rpc。包rpc提供了通过网络访问一个对象的方法的能力。服务器需要注册对象, 通过对象的类型名暴露这个服务。注册后这个对象的输出方法就可以远程调用,这个库封装了底层传输的细节,包括序列化。服务器可以注册多个不同类型的对象,但是注册相同类型的多个对象的时候回出错。 我最近写了一本电子书: Go RPC开发指南,介绍Go RPC开发的相关技术,这是其中的一章,专门介绍官方库 net/rpc的使用。 同时,如果对象的方法要能远程访问,它们必须满足一定的条件,否则这个对象的方法回呗忽略。 这些条件是: 方法的类型是可输出的 (the method's type is exported) 方法本身也是可输出的 (the method is exported) 方法...阅读全文

博文 2017-03-04 16:00:56 tantexian

关于dubbo,这里有你不得不看的18个BAT面试题

![](https://upload-images.jianshu.io/upload_images/16533261-434fd1c2db44585b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ## **dubbo是什么** dubbo是一个分布式框架,远程服务调用的分布式框架,其核心部分包含:集群容错:提供基于接口方法的透明远程过程调用,包括多协议支持,以及软负载均衡,失败容错,地址路由,动态配置等集群支持。远程通讯:提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及“请求-响应”模式的信息交换方式。自动发现:基于注册中心目录服务,使服务消费方能动态的查找服务提供方,使地址透明,使服务提供方可以平...阅读全文

博文 2019-04-25 16:54:48 Javaxiaoze

初步了解RESTful(二)—————认知RESTful API

**1**.Request和Response RESTful API的开发和使用,无非是客户端向服务器发请求(request),以及服务器对客户端作出回应(response)。客户端会给予GET方法向服务器发送请求获取资源,基于PUT或PATCH方法向服务器发送更新数据的请求,服务API设置时也应该要按照相应规范来处理对应的请求,这点现在应该成为所有RESTful API的开发者的共识。这里我们来简单说一下常见的响应码: 当GET、PUT和PATCH请求成功时,要返回对应的数据,及状态码200,即SUCCESS; 当POST创建数据成功时,要返回创建成功的数据,及状态码201,即CREATED; 当DELETE删除数据成功时,不返回数据,状态码要返回204.即NO CONTENT; 当GET...阅读全文

博文 2018-02-04 22:06:24 yinshidaoshi

TLS1.3 协议的Golang 实现——ClientHello

前言 撰写本文时TLS1.3 RFC 已经发布到28版本。以前写过一点密码学及TLS 相关的文章,为了更深入理解TLS1.3协议,这次将尝试使用Go语言实现它。网络上已有部分站点支持TLS1.3,Chrome浏览器通过设置可支持TLS1.3 (draft23),利用这些条件可验证,我们实现的协议是否标准。 完整的实现TLS1.3 工作量很大,概念和细节非常多(感觉又在挖坑)。本文首先会从ClientHello开始,后续可能会考虑 :Authentication、Cryptographic Computations、0-RTT 。 5G 未来 每次基础设施的升级都是时代变革的前奏。 在移动互联网2G/3G时代,很多创新都约束在了Wifi 下;移动互联网进入4G时代后,爆发了各种直播、短视频等创...阅读全文

博文 2018-07-02 21:35:45 云栖技术

golang

package main import ( "fmt" // "path" // "runtime" // "os" // "regexp" // "strings" // "time" "encoding/json" // "sort" ) func main() { Example() } type List struct { Url string Source string State string } type Person struct { Name string Age int Slices []string //slice Mapstring map[string]string StructArray []List //结构体的切片型 MapStruct map[string]...阅读全文

博文 2016-03-06 18:00:01 hotqin888

web 全架构系列(一): 整体分层及各层模块化

介绍 这一系列文章, 旨在描述面对一个从零开始的 B(C)/S 应用的时候, 如何去搭建一个业务无关的平台, 承载上层应用流量. 这里要强调这个平台的几个特点: 业务无关性: 无论业务的形态如何, 均可以在此架构之上运行, 这里可能会面临若干情况, 如无状态服务, 长连接服务等, 后续会根据场景运行描述, 但是这些场景可以看作是一个有限集. 可扩展性: 这里的扩展性特指两个方面, 一是业务的扩展, 二是流量的增加, 这两者对于任何一个平台而言, 都是要着重考虑的. 业务根据不同的指标, 可以分为若干类, 这里期望通过两种指标来描述这一系列文章想要覆盖的场景, 以说明业务无关性: 根据状态: 分为无状态服务和有状态服务 根据实时性: 分为异步与实时应用 这两个指标可以任意组合, 但是最常用的组...阅读全文

博文 2019-03-22 23:34:41 acrazing

Go转型——数据结构初级(一)

**1**.数据结构基本概念 在计算机中,我们可以用一个由若干“位”组合起来形成的一个位串来表示一个数据元素,比如,用一个字长的位串来表示一个整数,用八位二进制数字来表示一个字符,我们管这种位串叫**元素**或**节点**。当数据元素由若干数据项组成时,位串对应数据项的子位串称为**数据域**。 数据元素之间的关系可以分为两种不同的表示方式:**顺序映象**和**非顺序映象**。并且得到了两种存储结构:**顺序存储结构**和**链式存储结构**。 顺序映象的特点是借助数据元素在存储器中的相对位置来表示数据元素之间的逻辑关系,而非顺序映象利用指示数据元素存储地址的指针来表示数据元素之间的逻辑关系,日常一图顶千言: ![image.png](https://static.studygolang....阅读全文

六、protobuf的使用和原理

protobuf详解 1、安装 源码包下载 git clone https://github.com/google/protobuf 安装依赖 sudo apt-get install autoconf automake libtool curl make g++ unzip 生成需要的配置脚本 cd protobuf //进入源码库中 ./autogen.sh //运行脚本生成需要的配置脚本 编译安装 ./configure make make check sudo make install sudo ldconfig //用于刷新共享库的缓存 安装proto-gen-go go get -u github.com/golang/protobuf/proto go get -u githu...阅读全文

博文 2019-01-13 16:34:39 yongfutian

golang[47]-区块链-比特币交易

比特币的交易第一笔交易比较特殊,他是coinbase交易,矿工的收益。金额每4年减少一半,从2009年一开始一个区块奖励50BTC、后来减少为了25个BTC、一直到18年 12.5BTC。总共有2100万BTC。交易和我们的银行的转账非常不同,比特币中没有记录账户的信息、而是交易的信息。go实现交易 demo123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101...阅读全文

博文 2018-12-14 23:36:00 jonson_jackson

Golang gRPC基础入门一: 介绍和安装

What you are wasting today is tomorrow for those who died yesterday; what you hate now is the future you can not go back. 你所浪费的今天是昨天死去的人奢望的明天; 你所厌恶的现在是未来的你回不去的曾经。 gRPC 简介: gRPC 是一款高性能、开源的 RPC 框架,产自 Google,基于 ProtoBuf 序列化协议进行开发,支持多种语言(Golang、Python、Java等),本篇只介绍 Golang 的 gRPC 使用。因为 gRPC 对 HTTP/2 协议的支持使其在 Android、IOS 等客户端后端服务的开发领域具有良好的前景。gRPC 提供了一种简单的...阅读全文

博文 2018-01-18 15:33:05 90design

vue+golang实现评论系统

数据结构设计: 评论可以被回复, 回复也可以被回复, 以此连接下去就形成了树的结构 哪个用户评论、 评论的对象类型(视频、文章、用户动态...)、 具体哪个评论对象、 评论的内容、 评论的父亲节点(对于顶级评论没有父亲节点)、 根节点(如果想取出某一条评论的所有孩子节点, 也就是取出评论下方的所有回复就可以select * from comments where root_id=comment.id)、 回复了谁(如果不加这个字段需要先关联查询父节点、再从父节点关联查询用户) 本项目基于gin+gorm脚手架 https://github.com/Gourouting/singo package models import "time" type Comment struct { ID ui...阅读全文

博文 2019-10-24 22:32:47 aside section._1OhGeD