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

把服务端放在linux上,客户端放在windows上,但是windows连不上服务端

可以ping通,并且linux下telnet也是可以通信的,请问这是什么原因呢? 2017/07/19 11:10:11 an error!dial tcp 39.108.236.252:7778: connectex: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. exit status ...阅读全文

第一个go语言的网络程序

//服务端 package main import ( "net" "os" ) func serve(s net.Conn) { var buf [1024]byte for { n, err := s.Read(&buf) if err != nil || n == 0 { break; } s.Write(buf[0:n]) } } func main() { l, e := net.Listen("tcp", ":12345") if e != nil { os.Exit(-1) } for { s, e := l.Accept() if e != nil { os.Exit(-1) } go serve(s) } } //客户端 package main import ( "net...阅读全文

博文 2015-06-17 23:02:39 dux003

HEXA 机器人怎么玩?本次推荐的 Skill(机器人应用)给了大家一些小思路

这次的Skill精选,没有像上次推荐的Light Chaser和Fire Marshall Rob一样,具备类似追寻光线、预警火情这样实际应用的功能。但从可玩性来说,今天我们推荐的两款工具类Skill却不输前两者,经过今天的介绍,你或许会对HEXA的玩法又多一些想象。 下面正式进入今天的Skill精选: ![输入图片说明](https://static.oschina.net/uploads/img/201712/13111218_JGB6.png "在这里输入图片标题") **Simulator Kit** 熟悉HEXA的朋友应该知道,HEXA在开发方面的友好程度,除了在系统方面降低了机器人爱好者和开发者学习和探索机器人开发的门槛外,对于小白用户,我们还提供了3D...阅读全文

NSQ的golang客户端简单使用

NSQ的golang客户端简单使用 NSQ 是由国外的一个短链服务商bitly使用golang开发的一个消息队列系统,正好使用到了这个东西,在这里简单的记录下。 获取客户端 nsq的golang客户端是官方版本的 go get github.com/nsqio/go-nsq 即可 简单的消费者和生产者使用 该客户端有原始的command函数用于一些基础操作,也有consumer和producer的封装,我这里是直接使用了封装了。 consumer 消费者比较简单,只要监听队列消息,并处理就可以了,下面是一个简单的例子。 type NSQHandler struct { } func (this *NSQHandler) HandleMessage(message *nsq.Message) ...阅读全文

博文 2016-09-05 08:00:08 sryan

go语言学习笔记之冒泡排序的实现

冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。 算法原理 冒泡排序算法的运作如下: 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 针对所有的元素重复以上的步骤,除了最后一个。 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较 算法稳定性 冒泡排序是就地排序,且它是稳定的。 算法描述 go语言 package bubblesort //冒泡排序 func BubbleSort(values []int) { flag := true for i := 0; i < len(values)-1; i++ { flag = true for...阅读全文

博文 2015-06-17 23:01:47 wuwenxiang91322

golang panic: non-positive interval for NewTicker

image.png 原因:随机的时间为0 package main import ( "fmt" "math/rand" "sync" "time" ) func ReadLock(ch chan struct{}, lock sync.RWMutex) { fmt.Println("wait Rlock") lock.RLock() fmt.Println("start Rlock") rand.Seed(time.Now().UnixNano()) randNum := rand.Intn(2) t1 := time.NewTicker(time.Second * time.Duration(randNum)) for { select { case <-t1.C: fmt.Printl...阅读全文

博文 2020-04-05 20:32:50 anthonydan

[上海|15-30K]开发者工具平台招募全栈开发者/机器学习实习生

### 关于我们: 程序员客栈(https://proginn.com),程序员的经纪人,技术众包领域的领军者。 相关报道:http://36kr.com/p/5070975.html 基于业务的发展,开发者们对于开发工具的需求也越来越迫切,因此我们希望能邀请有志于为程序员开发出优秀工具产品的你来加入我们,和我们一起打造出一个业内领先的开发工具平台! ### 需要人才 -------------- #### 1 - (全职)全栈工程师,15-30K,上海 工作内容: 1. 负责新产品架构设计,功能开发 2. 维护完善现有的系统功能 岗位要求: 1. 理工科专业(物理/数学/计算机相关专业优先),本科以上学历, 3 年以上代码编写与...阅读全文

【请教】socket客户端conn.Write()发送的内容末尾加上\n就能得到server端回应,否则超时,请帮忙看看是客户端还是server端问题,先谢谢了

客户端建立连接: conn, err := net.DialTimeout("tcp", destIPPort, 3*time.Second) if err != nil { Log(LL_INFO, "tcp connect error bef process log file, please check it.") return err } defer func() { if nil != conn { conn.Close() } }() 客户端发送和接收: scanner := bufio.NewScanner(file) for scanner.Scan() { line := scanner.T...阅读全文

【上海】蝴蝶互动招聘GOLANG开发工程师

#### **岗位职责** 1. 负责公司基础平台建设,包括账号/认证/支付等系统 2. 负责平台网站开发 3. 搭建平台监控体系 #### **岗位要求** 1. 计算机相关专业本科及以上学历,3年以上相关工作经验 2. 计算机基础扎实,有较好的数据结构与算法功底,熟悉Linux系统和网络编程 3. 熟练掌握Golang,有实际项目开发经验 4. 熟悉NoSQL技术(redis,memcached等) 5. 有Web安全意识,熟悉常见的Web安全问题以及防御措施 6. 具有分布式/高性能系统设计和开发经验者优先 **简历请投至** wangling01@hoodinn.co...阅读全文

2018.9.11 从0到1,你准备好了吗?

最近两天又接到一个任务,给一家区块链公司招聘go开发的人才。于是便在一些社区发了招聘帖子,没多久就有人加我微信,立即通过了。对方是一位前端开发工程师,对区块链感兴趣,想转做区块链后端开发,对于这样的转行跳槽者,我觉得她是有勇气的。她跟我了解了区块链行业的人才需求以及薪酬情况,我也一一解答向她了。她还问了我一个问题:你们招区块链培训机构出来的人么?我说:这个和培训机构没关系的,主要看你自己的技术功底的,不过我个人觉得区块链培训机构,目前应该都不是很成熟的,不太建议你去,大部分不太靠谱。她还和我说,听培训机构说有很多hr跟他们要人。我第一感觉就是她被这些机构忽悠了,区块链技术处于起步阶段,大家都还在摸索,并没有完全成熟的模式,他们这些机构哪能一下子掌握呢?这些都是要靠实践才行的,不是去短时间培训...阅读全文

TCP长连接用json通信服务端怎么确定服务?

初次做长连接服务,遇到点小问题,以前都是http的,以url确定服务 举个例子说得清楚点 比如有2个服务,一个登录一个聊天,客户端传过来对应的json是 登录: {"type":"login","username":"abc","password":"123456"} 聊天: {"type":"chat","from":"张三","to":"李四","content":"李四你好"} json的type字段就表明了请求什么服务 对于golang通常我们要把这俩json解析为对应的结构体: type Login struct{ Type string Username string Password string } ...阅读全文

习惯不同语言以太坊开发者可选择客户端

## 为什么会有多种类型的客户端? 在以太坊早期的工程中,已经在多种不同的操作系统上实现了多个不同的客户端,这对整个以太坊的生态系统来说是巨大的胜利。它让我们验证了协议的明确性(在以太坊 [黄皮书](https://github.com/ethereum/yellowpaper) 中指明),向新的革新敞开大门,也让我们都保持诚实。然而,这也让很多新用户倍感困扰,因为自始至终也没有一个“以太坊安装包”让他们直接使用。 截止到2016年9月,最受欢迎的两个客户端分别是: [Go客户端(go-ethereum)](http://ethdoc.cn/ethereum-clients/go-ethereum/index.html#go-ethereum) 和 [Rust客户端(Parity)](htt...阅读全文

博文 2018-06-09 12:19:57 hubwiz

使用Go实现TLS 服务器和客户端

使用Go实现TLS 服务器和客户端 传输层安全协议(Transport Layer Security,缩写:TLS),及其前身安全套接层(Secure Sockets Layer,缩写:SSL)是一种安全协议,目的是为互联网通信提供安全及数据完整性保障。 SSL包含记录层(Record Layer)和传输层,记录层协议确定了传输层数据的封装格式。传输层安全协议使用X.509认证,之后利用非对称加密演算来对通信方做身份认证,之后交换对称密钥作为会谈密钥(Session key)。这个会谈密钥是用来将通信两方交换的数据做加密,保证两个应用间通信的保密性和可靠性,使客户与服务器应用之间的通信不被攻击者窃听。 本文并没有提供一个TLS的深度教程,而是提供了两个Go应用TLS的简单例子,用来演示使用G...阅读全文

博文 2019-05-14 21:34:50 VIL凌霄

可直接嵌入业务系统为终端客户提供分析服务的阿里云分析型数据库

课程介绍 分析型数据库(AnalyticDB),是阿里巴巴自主研发的海量数据实时高并发在线分析(Realtime OLAP)云计算服务,使得您可以在毫秒级针对千亿级数据进行即时的多维分析透视和业务探索。分析型数据库对海量数据的自由计算和极速响应能力,能让用户在瞬息之间进行灵活的数据探索,快速发现数据价值,并可直接嵌入业务系统为终端客户提供分析服务。 产品详情:https://www.aliyun.com/product/ads 课时列表 • 课时1:产品和应用场景 • 课时2:开通、购买和创建 • 课时3:创建表组和表 • 课时4:写入和导入数据 • 课时5:本地客户端访问 开始学习http://click.aliyun.com/m/27...阅读全文

2018.8.30你是这些公司青睐的人才吗?

最近一个案例引发了我对区块链公司用人要求的思考。一周前推荐了一位我认为不错的候选人,985院校计算机专业硕士学历,两年工作经验,毕业后一直在一家知名的互联网公司上班,技术也比较扎实,近期两个月在持续关注区块链并看好区块链行业,想趁年轻进入这个行业,看看有没有更好的发展机会。他的条件不错,我帮他推荐了业内三家不错的区块链公司。当初拿到他的简历时,我挺满意的,认为他很大概率上会拿到这几家公司的offer,因为之前操作过类似的case,这种背景的人一般都会被offer。等待了一周,结果却在我的意料之外。那么问题到底出现在哪里呢?我这几天一直在思考。直到今天和一位区块链公司的招聘聊天中她的一句话提醒了我:请尽量帮我找资深一点的人吧,要来了就能干活的那种,薪资不是问题,都能谈。从去年年底到现在,半年多...阅读全文

S3 的一个命令行客户端

使用Golang 实现了一个S3的简易客户端。 目前实现如下功能: 文件的上传 文件的下载 文件的删除 文件大小,更新时间查看 目前已发布1.0.0, 支持Windows和Linux,其他平台自行编译即可。 session config { "id": "", "secret": "", "endPoint": "", "region": "" } Usage: s3 [arguments] The commands are: put upload file to s3 get download file from s3 rm delete file in s3 ls list files in s3 Use "s3 " for more inform...阅读全文

博文 2019-08-08 11:02:46 _____

【go共识算法】-Raft

介绍 Raft 状态 一个 Raft 集群包含若干个服务器节点;通常是 5 个,这允许整个系统容忍 2 个节点的失效,每个节点处于以下三种状态之一: follower :所有结点都以 follower 的状态开始。如果没收到 leader消息则会变成 candidate状态。 candidate:会向其他结点“拉选票”,如果得到大部分的票则成为leader。这个过程就叫做Leader选举(Leader Election)。 leader:所有对系统的修改都会先经过leader。 Raft 一致性算法 Raft通过选出一个leader来简化日志副本的管理,例如,日志项(log entry)只允许从leader流向follower。 基于leader的方法,Raft算法可以分解成三个子问题: L...阅读全文

博文 2018-10-10 20:34:39 jincheng828

golang开发问题

开发问题: How to find out which types implement which interface in Golang? How do you quickly find the implementation(s) of an interface in Golang? Ctrl + Alt+b Ctrl +b show usage 证书问题1: 2018/03/09 10:44:13 check userEcaCert signature: x509: invalid signature: parent certificate cannot sign this kind of certificate 解决: ecaCert.BasicConstraintsValid = t...阅读全文

博文 2018-07-12 13:30:47 gregoryli

程序员的自我修养 IO/CUP密集型线程

有关进程线程协程的概念在上一篇文章 golang协程为什么比线程轻量https://www.jianshu.com/p/dd4a480a1410已经解释,有需要的同学可以查看。 多进程与单进程相比的优势: 1.某个操作可能会陷入长时间等待,等待的线程会进入睡眠状态,无法继续执行。多线程执行可以有效利用等待时间。典型的例子是等待网络响应,这可能要花费数秒甚至数十秒。 2.某个操作(常常是计算)会消耗大量的时间,如果只有一个线程,程序和用户之间的交互会中断。多线程可以让一个线程负责交互,另一个线程负责计算。 3.程序逻辑本身就要求并发操作,例如一个多端下载软件(例如Bittorrent) 4.多CPU或多核计算机,本身具备同时执行多个线程的能力,因此单线程程序无法完全全面地发挥计算机的全部计算能...阅读全文

博文 2019-08-04 17:32:39 one_zheng

使用micro搭建go微服务遇见了一个问题

大家好,我遇见了一个bug,希望有能力的同学可以帮忙解答一下。 我初始化了一个user-srv,开启成功了,并且handler也注册进去了,然后我又初始化了一个api-srv,监听端口8082,作用是调用user-srv为客户端提供服务,我在客户端访问:http://127.0.0.1:8082/user/SelectUser ,系统提示user服务调用到了,可是SelectUser函数没有被调用到,在user-srv中出现以下提示,想问下该怎么解决,谢谢各位 ![image.png](https://static.studygolang.com/171013/ead63d9f399af278e928f6c87f1bc929.png) ...阅读全文

Go 关于SOCKET客户端中文编码转换

用go编写Socket发现,从客户端输入中文时,服务器端无法正常显示。 image.png 需要对中文进行转码。 转码需要从go官方的golang.org/x/text包实现。可以通过如下命令安装 go get golang.org/x/text 或者通过github下载text包 转换函数 func GbToUtf8(s []byte) ([]byte, error) { //reader := transform.NewReader(byte.NewReader(s), simplifiedchinese.GBK.NewEncoder()) reader := transform.NewReader(bytes.NewReader(s),simplifiedchinese.GBK.New...阅读全文

博文 2019-07-22 16:32:44 guazi1020

Hyperledger Fabric 1.2系列:1. 环境准备

简介 当前主机信息: Ubuntu16.04 x86_64 root@JDu4e00u53f7:~# uname -a Linux JDu4e00u53f7 4.4.0-62-generic #83-Ubuntu SMP Wed Jan 18 14:10:15 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux 我们需要准备的环境有: cURL Docker Compose Docker Golang Nodejs 安装 安装cURL sudo apt-get install curl //Ubuntu系统一般默认会安装 安装Docker Hypreledger Fabric1.2 要求Docker的版本最低为 Docker 17.06.2-ce 安装方法请参考:...阅读全文

博文 2018-07-31 19:34:47 空白格灬

golang并发----缓冲通道实现对象池

缓冲通道实现可复用的对象池 type reusableobj struct{} type objpool struct { bufchan chan *reusableobj } func newobjpool(numofobj int) *objpool { objpool := objpool{} objpool.bufchan = make(chan *reusableobj, numofobj) for i := 0; i < numofobj; i++ { objpool.bufchan <- &reusableobj{} } return &objpool } func (p *objpool) getobj(timeout time.Duration) (*reusableob...阅读全文

博文 2019-12-07 06:32:44 zjtriplehhh

TCP连接的状态变迁

全部11种状态 客户端独有的:(1)SYN_SENT (2)FIN_WAIT1 (3)FIN_WAIT2 (4)CLOSING (5)TIME_WAIT 。 服务器独有的:(1)LISTEN (2)SYN_RCVD (3)CLOSE_WAIT (4)LAST_ACK 。 共有的:(1)CLOSED (2)ESTABLISHED 。 ![image.png](https://static.studygolang.com/190222/c1b69cd34b964ea79036a1f00b187f9f.png) 状态变迁 1、建立连接时的状态变迁 一开始,建立连接之前服务器和客户端的状态都为CLOSED。服务器创建socket后开始监听,变为LISTEN状态。客户端请求建立连接,向服务器发送SYN...阅读全文

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

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

gRPC源码/transport/客户端 服务端

综述 http2Client实现自ClientTransport接口http2Server实现自ServerTransport接口 https://github.com/messixukej... 在liangzhiyang/annotate-grpc-go基础上补充了部分注释 客户端:http客户端连接创建 原理(引自http2-spec/HTTP2中英对照版(06-29).md at master · fex-team/http2-spec · GitHub.md)):Upon establishment of a TCP connection and determination that HTTP/2 will be used by both peers, each endpoint ...阅读全文

博文 2018-06-11 11:34:38 蓝白狂想

Go语言==接口(interface)

7. 接口(interface) 接口本身是调用方和实现放均需要遵守的一种协议,按统一方法命名参数类型和数量来协调逻辑处理。Go语言中使用组合实现对象特性的描述,对象内部使用结构体内嵌组合对象应具有的特性,对外通过接口暴露能使用的特性。Go语言的接口设计是非入侵式的,开发者无需知道哪些类型被实现。而接口实现者只需要知道实现的是什么样子的接口,但无需指明实现哪一个接口。编译器知道接口应该由谁来实现。 非入侵式的设计让接口与实现者真正解耦。编译速度提高。 1.声明接口 + 接口是一种类型,也是一种抽象结构,不会暴露所含数据的格式、类型及结构 ``` //1.1 接口声明格式 //每个接口类型由数个方法组成 type 接口类型名 interface { 方法名1(args[]) 返回值列表1 方法...阅读全文

上链(SimpleChain)技术社区激励计划:Bug Bounty

如果在体验上链测试网络或对该网络进行技术测试的过程中,发现BUG或提供对于代码的修改建议,你将有机会获得SIPC作为激励奖金。激励总奖金高达10000 SIPC!!!此次活动持续到SimpleChain2.0(2019年年底)版本上线,激励奖金将会在每月的月底送出。如何参与?1) 下载相应操作系统的Go版本: https://golang.org/下载你所使用的操作系统下的客户端程序:https://golang.org/project/按照GitHub上的README文档进行测试体验:https://github.com/simplechain-org/go-simplechain2) 如果你发现BUG或提供对于代码的修改建议,欢迎到GitHub上提交。格式如下:My Operating ...阅读全文

博文 2019-03-11 17:34:42 SimpleChain社区

用 Go 语言实现一个 telegram 的 bot - 成功复读

telegram bot(复读机) 尝试 用 Go 语言做了一个 telegram 的 bot . 用来简单实现对话(复读)。 获得 telegram bot token 和 BotFather 交谈即可中途需要设置一下名字和查找路径 go get 首先获取 api 包 go get -u github.com/go-telegram-bot-api/telegram-bot-api code package main import ( "log" "os" "github.com/go-telegram-bot-api/telegram-bot-api" ) func main() { bot, err := tgbotapi.NewBotAPI(os.Getenv("TELEGRAM_A...阅读全文

博文 2019-07-26 19:02:37 yhyddr

实现Raft协议:Part 0 - 介绍

翻译自Eli Bendersky的系列博客,已获得原作者授权。 本文是系列文章中的序言,本系列文章旨在介绍Raft分布式一致性协议及其Go语言实现。文章的完整列表如下: 序言:介绍(本文) 第一部分:选主 第二部分:指令和日志复制 第三部分:持久性和优化 Raft是一个相对较新的算法(2014),但是已经在业界取到了广泛的应用。最知名的案例应该就是Kubernetes,其中的分布式键值存储组件etcd就依赖了Raft协议。 本系列文章的写作目的,在于描述Raft协议的一个功能完备且经过严格测试的实现方式,并提供一些Raft工作方式的直观理解。这并不是您学习Raft协议的唯一途径。我假定您至少读过Raft论文; 此外,也强烈建议您花时间仔细研究Raft网站上的资源——观看创作者的一两次演讲,鼓...阅读全文

博文 2020-05-06 14:36:21 GuoYaxiang

图解kubernetes调度器SchedulerCache核心源码实现

SchedulerCache是kubernetes scheduler中负责本地数据缓存的核心数据结构, 其实现了Cache接口,负责存储从apiserver获取的数据,提供给Scheduler调度器获取Node的信息,然后由调度算法的决策pod的最终node节点,其中Snapshot和节点打散算法非常值得借鉴 设计目标 数据感知 SchedulerCache的数据从apiserver通过网络感知,其数据的同步一致性主要是通过kubernetes中的Reflector组件来负责保证,SchedulerCache本身就是一个单纯数据的存储 Snapshot机制 当scheduler获取一个待调度的pod,则需要从Cache中获取当前集群中的快照数据(当前此时集群中node的统计信息), 用于后...阅读全文

博文 2020-01-14 11:34:30 代码仔

Go语言从入门到精通-04| Socket客户端与服务端

请从github下载配套代码: https://github.com/shuningzhang/learn_golang 大家都知道Web服务是基于HTTP协议的,而HTTP协议又是TCP协议上的应用层协议。因此我们在开发一个Web服务之前,我们先介绍一下如何使用Go语言开发一个基于TCP的客户端与服务端程序(关于TCP协议的原理可以参考本号之前的文章《从socket到TCP协议,透彻理解网络编程》)。 Go语言从入门到精通-04| Socket客户端与服务端 程序比较简单,服务端用于等待客户端的连接,连接建立成功后,如果接到客户端的数据,则原封不动的返回相同的数据。客户端建立与服务端的连接,连接建立成功后向服务端发送字符串数据,并等待接收服务端的返回。 服务端 前面已经介绍,服务端用于等待...阅读全文

博文 2019-03-20 00:34:41 萨泥君

兄弟连区块链入门教程以太坊源码分析hashimoto源码分析(二)

兄弟连区块链入门教程以太坊源码分析hashimoto源码分析(二)。“超级计算机是将计算受限问题转化为I / O约束问题的一种设备。”Ken BatcherInstead, an algorithm will have little room to be sped up by new hardware if it acts in a way that commodity computer systems are already optimized for.相反,如果一种算法以商品计算机系统已经优化的方式运行,那么算法将没有多少空间可以被新硬件加速。Since I/O bounds are what decades ofcomputing research has gone towards s...阅读全文

博文 2018-10-24 15:34:46 兄弟连区块链培训

NSQ学习:流控的实现

消息中间件的pull与push 消息中间件的实现无非两种套路,一种让客户端pull,典型的比如kafka便是如此,而另一种则是push,也就是让客户端不需要做任何操作,只需要做好conn便可以源源不断收到服务端的推送,典型的代表就是我们今天介绍的nsq。 pull的优势在于客户端可以自己做流控,比如客户端想什么时候pull就什么时候pull,不会因为服务端的强迫而接受,但劣势也很明显,如果服务端的生产速度很慢,客户端需要不断的轮询会让cpu处于繁忙且无用的状态。 push的优势则在于能够不受限于客户端的速度,可以让服务端更快的、批量的把数据push给客户端,因此大部分push实现的消息中间件都是属于内存型,而nsq比较特殊,它实际上是内存+磁盘的一个消息中间件。 push流的nsq如何做流控...阅读全文

博文 2019-06-11 01:02:39 imxyb

go微服务框架go-micro深度学习(三) Registry服务的注册和发现

服务的注册与发现是微服务必不可少的功能,这样系统才能有更高的性能,更高的可用性。go-micro框架的服务发现有自己能用的接口Registry。只要实现这个接口就可以定制自己的服务注册和发现。 go-micro在客户端做的负载,典型的Balancing-aware Client模式。 服务端把服务的地址信息保存到Registry, 然后定时的心跳检查,或者定时的重新注册服务。客户端监听Registry,最好是把服务信息保存到本地,监听服务的变动,更新缓存。当调用服务端的接口是时,根据客户端的服务列表和负载算法选择服务端进行通信。 go-micro的能用Registry接口type Registry interface { Register(*Service, ...RegisterOptio...阅读全文

Go语言实践_实现一(客户端)对一(服务器端)聊天室

一、目的 使用Go语言实现一个服务器端与客户端的聊天室。 软件:Goland,Go1.9 代码仓库地址 二、思路 1,首先启动服务器端,使用listen_socket函数监听IP地址上的客户端连接; 2,启动客户端,并向服务器端发送数据,发送结束后端口阻塞,等待服务器端的消息; 3,服务器端接收到由客户端发送来的消息; 4,服务器端向客户端发送数据,发送结束后; 5,客户端接收到由服务器端发送来的消息,发送结束后端口阻塞,等待客户端的消息; 6,重复步骤2-5; 7,如果服务器端接收到由客户端发送来的“close"消息后,服务器端关闭与客户端的连接,继续等待下一个客户端的连接; 8,客户端关闭,聊天结束。 三、Go代码实现 Sever端 // One-to-one ChatRoom Seve...阅读全文

博文 2018-08-08 00:30:00 OctoptusLian

003_go启动httpServer

一、 golang中开发http服务,可以用net/http包提供的功能。net/http包提供了非常全的功能,并且启动的http服务也非常稳定和高效,完全可以用在生产环境中。 package main import ( "fmt" "log" "net/http" ) // w表示response对象,返回给客户端的内容都在对象里处理 // r表示客户端请求对象,包含了请求头,请求参数等等 func index(w http.ResponseWriter, r *http.Request) { // 往w里写入内容,就会在浏览器里输出 fmt.Fprintf(w, "Hello golang http!") } func main() { // 设置路由,如果访问/,则调用index方法 ...阅读全文

博文 2018-06-02 17:30:00 arun-python

????【Go 实践】实现一个简单的多人聊天室

简介 Github 地址 博客原文 本文使用 go 实现了一个多人聊天室,参考文章为 Writing a Chat Server in Go,点击查看中文翻译版。 本文的特点在于:将原始项目分为自底向上的若干个阶段,新手可以一步步地实现系统的不同模块,逐渐掌握相应知识点。源码里有详细的注释,引导你在不看源代码的情况下自己实现相应代码。 本文假设你: 了解 go 语言的基本语法 了解 git 的使用 完成本项目,你将学会这些内容: Reader 方法的基本使用 使用 net 包实现一个 tcp 服务器:监听端口、建立连接、提供服务 sync 加锁 goroutine 与 channel gob 的基本使用 运行 运行环境:go 1.13.1 打开 GO111MODULE,运行 go mod d...阅读全文

博文 2019-11-18 23:04:42 Segami

DockOne微信分享(六十四):基于Docker实现DevOps的一些探索

【编者的话】本次分享从DevOps介绍;Docker介绍;基于Docker实现DevOps的优势;Docker化DevOps流水线实例分享等四方面展开。 DevOps介绍DevOps(Deveplopment和Operations的简称),中译为开发运维一体化,可定义为是一种过程、方法、文化、运动或实践,主要是为了通过一条高度自动化的流水线来加强开发和其他IT职能部门之间的沟通和协作,加速软件和服务的交付。 在一个较成熟的软件和服务交付的团队里,就技术层面来说主要分为三个组成部分:开发、测试和运维。DevOps的作用就是将这三个部分紧密的连接起来,提供一条从软件开发到质量保障到技术运营的自动化流水线,加强不同角色之间的沟通和协作,基于用户需求实现软件和服务的快速交付。 "开发的这群傻叉新给的...阅读全文

博文 2017-06-25 16:25:05 EricCheung

云数据库 Redis 版使用教程

课程介绍 云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore 课时列表 • 课时1:Redis总体介绍 • 课时2:pub/sub应用场景与使用接口 • 课时3:如何使用云Redis控制台 • 课时4:实例创建 • 课时5:数据库管理 • 课时6:连接数据库 • 课时7:数据迁移 • 课时8:备份与恢复 开始学习http://click.aliyun.com/m/27849/ ...阅读全文

Bytom设计结构解读

一、引文 设计Bytom 数据结构,组合了许多技术点,如 patricia tree,utxo, bvm, account model,protobuf,sql,memcache 等。本文会对一些技术点做以下两点分析。 Bytom 为什么要采用该技术点? Bytom 如何应用该技术点? 最后介绍综合这些技术点如何实现Bytom。 [patricial tree](http://www.allisons.org/ll/AlgDS/Tree/PATRICIA/) 二、为什么要采用PAT树? •PAT树具有[基数树](https://en.wikipedia.org/wiki... 的特点,内容可快速追踪。 •PAT树具有[merkle树](https://en.wikipedia.org/wik...阅读全文

博文 2018-07-26 16:34:56 比原链Bytom

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

设计思路考虑到Tikye对于区块链系统的性能、安全等需求远比一般的公有链性能更高,为了保证交易场景下的公开透明,交易各方皆能参与到区块链的共同监管与治理,同时能兼顾高频交易需要较高的TPS,我们设计了一套支持可插拔、可扩展的高性能应用级区块链系统。在下文中,该区块链系统简称Tikye。该系统为开发者提供便捷的SDK工具包,同时还将为外部系统提供可兼容的API接口,基于Tikye的特性解决传统问题。主要依靠智能合约来解决基于Tikye的事务性问题,智能合约在区块链环境中运行,保证了事务执行的可行性、高效性和安全性。为了区块链系统的处理能力,我们通过引入多条平行链组成链路由系统。平行链和主链保持既独立又统一的关系,所有平行链可以拥有自己的超级节点、状态机和原始交易数据,由主链来存储关键数据以及完...阅读全文

博文 2019-09-19 11:02:46 逗币狗