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

腾讯云IM支持JAVA Server

image 因阿里云IM服务不稳定,网易云太贵,现切换至腾讯云。 起因 根据腾讯云官方文档利用Java编写Server,因腾讯云现不支持Java。 官方在后台服务中调用 REST API,本质上是发起 HTTPS POST 请求。云通信提供了 Server SDK 来封装对 REST API 的调用,开发者可以将其直接集成到您的服务端代码中。 PHP Server SDK; Node.js Server SDK; Java Server SDK 敬请期待 (完善中); Golang Server SDK(敬请期待)。 内容 现阶段完成内容如下: 缓存identifier usersig 存入Redis。 账号管理 独立模式账号导入 独立模式账户批量导入 单发单聊消息 推送 获取推送报告 设置...阅读全文

博文 2019-01-25 14:34:48 UpdateCw

golang 热更新技巧

## 序言 Golang标准库的http部分提供了强大的web应用支持,再加上negroni等中间件框架的支持,可以开发高性能的web应用(如提供Restful的api服务等)。 通常这些web应用部署在多台Linux操作系统的应用服务器上,并用Nginx等做为反向代理,实现高可用的集群服务。当应用版本升级时,如何实现比较优雅的多态服务器的版本更新呢? ## 问题分析 Web应用的更新,我觉得可能需要考虑几个方面的问题: 1. 编译好的应用二进制文件、配置文件上传到服务器上; 2. 应用服务器能感知到有新的版本上传; 3. 在没有停止服务的情况下,热更新版本; 4. 最好所有的更新过程,可以脚本化,减少手动操作的错误。 ## 方案 其实,go社区有一些开源项目,可以自动检测web应用的改变,...阅读全文

博文 2017-04-21 02:00:37 lancelotM

Go语言程序的状态监控

Go是很实在的编程语言,从一开始就提供了很详细的运行状态信息。产品上线后的调优和排查疑难杂症都得靠这些状态信息。这边总结一些我们项目里用到的状态监控手段。 pprof Go自带了一个pprof工具,这个工具可以做CPU和内存的profiling,官方的博客有一篇文章介绍用法:《Profiling Go Programs》 官方的文章讲了怎么用自带的pprof工具分析数据,但是获得分析数据的部分比较单一,我在很长一段时间一直误以为cpuprof和memprof必须在程序启动时打开,其实cpuprof和memprof是可以在线打开和关闭的。 并且pprof模块其实不只是cpuprof和memprof这两个功能,其中还提供了Lookup功能用于获取堆状态信息、线程状态信息、 goroutine状态...阅读全文

博文 2014-10-13 14:54:27 达达

golang实现tcp通信例子

tcp/udp ip通信是当前重要的通信方式。 当然对于golang开发者而言,实现tcp通信也是必要的。本文的内容主要是基于《Go语言四十二章经》简书地址:https://www.jianshu.com/nb/29056963的详细讲解 本文的例子分为服务端与客户端两部分: 服务端: package main import ( "bufio" "fmt" "io" "net" "time" ) //tcp server 服务端代码 func main() { //定义一个tcp断点 var tcpAddr *net.TCPAddr //通过ResolveTCPAddr实例一个具体的tcp断点 tcpAddr,_ = net.ResolveTCPAddr("tcp","127.0.0.1:9...阅读全文

博文 2019-02-03 19:34:43 乐乐J

GO的TCP性能测试,优化结果

之前做过一次测试,没有任何优化的情况下C++(16Gbps)是GO(4Gbps)的4倍性能,参考http://blog.csdn.net/win_lin/article/details/40744175 这次针对TCP部分对go做了优化,测试结果令人满意。GO单进程(7Gbps)不输c++(8Gbps),是c++使用writev(16Gbps)的一半,GO多进程(59Gbps)完胜c++是c++的好几倍。 测试代码参考:https://github.com/winlinvip/srs.go/tree/master/research/tcp 备注:之前的测试是在虚拟机上,这次在物理机上,结果可能会略有不同。 Why TCP TCP是网络通讯的基础,而web则是基于HTTP框架,HTTP又基于T...阅读全文

博文 2014-11-22 14:00:01 winlinvip

GopherChina大会视频大全

Gopher China 历届大会视频都放到这里了。 以下视频需要翻墙才能观看,请大家自行找梯子哈。 GopherChina2019(北京) 等待更新... GopherChina2018(上海) Day1 1、基于Go构建滴滴核心业务平台的实践 石松然2、Go在Grab地理服务中的实践 张志印3、 Rethinking Errors for Go 2 Marcel4、Go在区块链的发展和演进 姜家志5、Badger Fast Key Value DB in Go Manish6、Golang在阿里巴巴调度系统Sigma中的实践 李雨前7、罗辑思维Go语言微服务改造实践 方圆8、Golang打造下一代互联网 IPFS全解析 余长洪 Day2 1、Composition In Go Willi...阅读全文

博文 2019-03-18 18:34:40 如来神掌

golang对mysql的基本操作

golang 操作mysql 导入数据库驱动 import ( "database/sql" "fmt" _ "github.com/go-sql-driver/mysql" "time" ) mysql连接配置 const ( USERNAME = "root" PASSWORD = "*******" NETWORK = "tcp" SERVER = "localhost" PORT = 3306 DATABASE = "blog" ) 建立连接 dsn := fmt.Sprintf("%s:%s@%s(%s:%d)/%s",USERNAME,PASSWORD,NETWORK,SERVER,PORT,DATABASE) DB,err := sql.Open("mysql",dsn) if...阅读全文

博文 2018-07-17 21:34:46 我的饭卡呢

Golang 微服务教程(一)

译文链接:wuYin/blog原文链接:ewanvalentine.io,翻译已获作者授权。 本节对 gRPC 的使用浅尝辄止,更多可参考:gRPC 中 Client 与 Server 数据交互的 4 种模式 前言 系列概览 《Golang 微服务教程》分为 10 篇,总结微服务开发、测试到部署的完整过程。 本节先介绍微服务的基础概念、术语,再创建我们的第一个微服务 consignment-service 的简洁版。在接下来的第 2~10 节文章中,我们会陆续创建以下微服务: consignment-service(货运服务) inventory-service(仓库服务) user-service(用户服务) authentication-service(认证服务) role-servic...阅读全文

博文 2018-06-01 16:34:38 wuYin

golang开发windows界面

在 awesome-go 节点下有不少开发界面的库, 大部分是基于web, gtk, qt跨平台的, 也有基于sciter go绑定的go-sciter, 基于原生包装的跨平台的库ui, 只支持Windows桌面端的walk 个人倾向于后2个, 适合个人的技术栈, 试用了下ui这个库, demo比较 少就4个, 运行起来有点卡, 而且生成的可执行文件很大. 最重要的是不支持设置控件坐标(没找到), 而且开放的接口比较少. 下面对比下ui和walk代码, 就拿button控件来说. ui type Button struct { ControlBase b *C.uiButton onClicked func(*Button) } type ControlBase struct { iface...阅读全文

博文 2018-09-14 17:34:43 最近不在

Gogs:可能是比Gitlab更好的选择

Gitlab是一个很棒的Git托管服务,几乎像GitHub一样强大。 但是,有没有能和Gitlab/Github媲美但操作更简单的项目呢?我认为 Gogs 是很好的选择。 简介 现在,GitHub已经成为首选的代码托管平台。 因为它又很多很棒的功能,操作简单,几乎所有的开发者都喜欢它。 同时,谷歌的代码托管项目准备关闭,你可以把项目转移到这里。 但如果你在写Android应用程序,或者正在创建下一个伟大的iOS游戏,或者不想让别人看到你的代码没,该怎么办? 你当然可以购买私人GitHub库,但你肯定更想把资金投资到更紧迫的事情上。 这就是 Gitlab 和 Gogs 这样的软件诞生的原因。 他们提供的服务和GitHub非常相似,不同的是,你可以把项目放在你自己的服务器上,甚至是自己的工作站上...阅读全文

博文 2015-03-19 03:00:01 zoucaitou

基于golang的websocket

项目中的消息通知用到了websocket,感觉比http长连接分块发送好用,特此记录一下。 WebSocket协议用ws表示。此外,还有wss协议,表示加密的WebSocket协议,对应HTTPs协议。 完成握手以后,WebSocket协议就在TCP协议之上,开始传送数据 websocket原理及运行机制 WebSocket是HTML5下一种新的协议。它实现了浏览器与服务器全双工通信,能更好的节省服务器资源和带宽并达到实时通讯的目的。它与HTTP一样通过已建立的TCP连接来传输数据,但是它和HTTP最大不同是:WebSocket是一种双向通信协议。在建立连接后,WebSocket服务器端和客户端都能主动向对方发送或接收数据,就像Socket一样;WebSocket需要像TCP一样,先建立连接...阅读全文

博文 2017-09-27 13:05:34 ywhu

go语言的一些资料

1.首先推荐一个基础学习go的,趣味性,针对性不错,对基础很好。http://go-tour-zh.appsp0t.com/#1 2.tideide 一个好go编辑器,能调试,有项目构建,方便配置交叉编译,语法高亮功能。 3.go文档,中文的虽然不全,但是基本的都有https://golang-china.googlecode.com/svn/trunk/Chinese/golang.org/index.html#toc11 (也许要架梯子,你懂的) 4.go语言google group https://groups.google.com/forum/#!forum/golang-china 5.go实现的blog合集:http://www.cnblogs.c...阅读全文

教你如何让go get畅通无阻

目前golang开发有一些热度,仅仅在github上面就有大量的用go重写的项目或go开发创新项目。 go开发者经常需要使用go get来下载和安装第三方库或软件。经常会碰到go get无法访问,因为这些第三方库或软件或项目对应的网站被墙了。 很多人都是用shadowsocks来翻墙,但是shadowsocks是基于socks5协议的。对于go get并没有什么用处。如果我们能把socks5代理转为http代理,那就可以访问了。 一个牛逼的国人用go开发了一个可以将socks5代理转为http代理的项目cow。请点击链接进入项目,按照文档学习使用。设置非常简单,提供的说明很清晰易懂。按照说明,可以在本机启动一个http代理,以shadowsocks为二级代理。之后就可以畅通无阻的go get...阅读全文

博文 2017-02-24 15:00:10 hutaishi

Go后台项目实战

本项目完全使用原生开发,没有使用任何WEB框架(如:gin,beego,Martini等),和ORM(如:gorm,xorm,beego) 三层架构 三层架构(3-tier architecture) 通常意义上的三层架构就是将整个业务应用划分为:界面层(User Interface layer)、业务逻辑层(Business Logic Layer)、数据访问层(Data access layer)。区分层次的目的即为了“高内聚低耦合”的思想。在软件体系架构设计中,分层式结构是最常见,也是最重要的一种结构。 控制层/界面层 因为我的项目中并没有写WEB页面,所以就拿控制层来说,就是将你的请求从页面传到后台代码 服务层/业务逻辑层 针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑...阅读全文

博文 2018-07-23 14:34:50 陈_2ace

基于go语言的消息推送系统架构分析

本系统是猎豹移动基于go语言开发的一套消息推送系统,源码地址:https://github.com/Terry-Mao/goim 一、架构图 二、功能简介 1.comet 长连接服务器,支持长轮训、tcp、websocket连接,有超时机制 2.logic 逻辑处理服务器,消息推送入口,通过userId在router服务器中查找对应的comet服务器,将serverId和消息一起保存到kafka队列,logic是无状态服务器,可以随意增删,因为comet需要连接logic,所以在comet服务器中需要连接logic的通过LVS的虚IP,LVS加了real server后不会断开,所以需要在comet服务触发SIGHUP,重新load配置文件。 3.router 路由服务器,保存userId和...阅读全文

博文 2015-10-24 19:00:05 qinyongbo

Go语言中的微服务

# Go语言中的微服务 ## 摘要 我最近在墨尔本 Golang 聚会上就如何开发微服务和框架做了一次演讲。在本文中,我将与您分享我的想法(此外,它对我来说是一个很好的复习)。 在这里,我要介绍以下框架: * [Go Micro](https://micro.mu/) * [Go Kit](https://gokit.io/) * [Gizmo](https://github.com/NYTimes/gizmo) * [Kite](https://github.com/koding/kite) ## 框架简介 ### Go Micro 这是我认为最受欢迎的框架之一。有很多博客文章和简单的例子可供使用参考。您可以从 [microhq](https://medium.com/microhq) 在...阅读全文

博文 2019-07-23 01:16:11 TomatoAres

李嘉璇:技术人如何深入人工智能

前不久趣直播举办了一场技术人成长交流会,邀请了《TensorFlow 技术解析与实战》作者李嘉璇来分享。以下是视频:以下是文字版:谢谢智维的介绍,介绍的太棒了,我其实没有他说的那么棒,让我压力好大,尤其巧哥又讲的那么好我目前主要是做人工智能方向的,比较熟悉的是 TensorFlow,我有写过一本书,《TensorFlow 技术解析与实战》,我这里面再多说两句,因为有非常多的人会问我,你是怎么写出一本书的?或者说你写出一本书遇到什么样的困难?我现在面试的时候就会有人问我这样的问题,会经常让我去说这个事,我跟大家分享一下。我在写这本书的时候,我脑子里没有第二件事了,我说的第二件事就包括吃饭和睡觉上厕所,脑子里没有这些,就是在我的意识里,这些东西都不存在的。我眼里只有这一件事,我活着就是为了写书这...阅读全文

视频资源

千峰 黑马 尚硅谷在YouTube的资源不少 而且质量都还不错 小甲鱼的视频也不错 看着他的Python零基础入门开始的编程学习 还看了他的汇编课程 很幽默以下是copy来的视频资源学习前必读!!!网盘失效及视频问题,请添加小千学姐微信:dasima2018进行咨询。扫码添加小千学姐微信小千花了将近一天时间整理,千锋12大课程全部新更视频汇总奉上!不需要做任务,直接复制链接到浏览器进行领取,只求各位能分享给身边的朋友一起学习,共同进步!JavaEE+分布式开发--职业发展千锋Java初识与职业发展https://pan.baidu.com/s/1I_ToH6E1F-iM9ndyxdZUvw最新Java全套视频教程https://pan.baidu.com/s/1QPNnvNVrxOoW601...阅读全文

博文 2020-05-18 11:34:29 Brown新西兰波浪哥

A list of Go projects

Indexes and search engines These sites provide indexes and search engines for Go packages: godoc.orggo-searchgowalkerSourcegraph Contributing To edit this page you must be a contributor to the go-wiki project. To get contributor access, send mail to adg@golang.org from your Google Account. Dead projects If you find a project in this list that is de...阅读全文

博文 2014-10-13 13:00:06 julong2011

让互联网更快的协议,QUIC在腾讯的实践及性能优化

作者|罗成 编辑|小智 本文主要介绍 QUIC 协议在腾讯内部及腾讯云上的实践和性能优化。欲了解 QUIC 协议产生的背景和核心特性,可阅读今日二条推文。 写在前面 如果你的 App,在不需要任何修改的情况下就能提升 15% 以上的访问速度。特别是弱网络的时候能够提升 20% 以上的访问速度。如果你的 App,在频繁切换 4G 和 WIFI 网络的情况下,不会断线,不需要重连,用户无任何感知。如果你的 App,既需要 TLS 的安全,也想实现多路复用的强大。如果你刚刚才听说 HTTP2 是下一代互联网协议,如果你刚刚才关注到 TLS1.3 是一个革命性具有里程碑意义的协议,但是这两个协议却一直在被另一个更新兴的协议所影响和挑战。如果这个新兴的协议,它的名字就叫做“快”,并且正在标准化为新一代...阅读全文

NSQ:分布式的实时消息平台

NSQ是一个基于Go语言的分布式实时消息平台,它基于MIT开源协议发布,代码托管在GitHub,其当前最新版本是0.3.1版。NSQ可用于大规模系统中的实时消息服务,并且每天能够处理数亿级别的消息,其设计目标是为在分布式环境下运行的去中心化服务提供一个强大的基础架构。NSQ具有分布式、去中心化的拓扑结构,该结构具有无单点故障、故障容错、高可用性以及能够保证消息的可靠传递的特征。NSQ非常容易配置和部署,且具有最大的灵活性,支持众多消息协议。另外,官方还提供了拆箱即用Go和Python库。如果读者兴趣构建自己的客户端的话,还可以参考官方提供的协议规范。 NSQ是由四个重要组件构成: nsqd:一个负责接收、排队、转发消息到客户端的守护进程 nsqlookupd:管理拓扑信息并提供最终一致性的发...阅读全文

博文 2015-05-05 11:09:59 李小兵

Go中的make和new的区别

make用于内建类型(map、slice 和channel)的内存分配。new用于各种类型的内存分配。 内建函数new本质上说跟其它语言中的同名函数功能一样:new(T)分配了零值填充的T类型的内存空间,并且返回其地址,即一个*T类型的值。用Go的术语说,它返回了一个指针,指向新分配的类型T的零值。有一点非常重要:new返回指针。 内建函数make(T, args)与new(T)有着不同的功能,make只能创建slice、map和channel,并且返回一个有初始值(非零)的T类型,而不是*T。 本质来讲,导致这三个类型有所不同的原因是指向数据结构的引用在使用前必须被初始化。例如,一个slice,是一个包含指向数据(内部array)的指针、长度和容量的三项描述符;在这些项目被初始化之前,sl...阅读全文

博文 2014-10-26 23:15:08 ghj1976

web个人云笔记

# 前言 **我为什么要写一个个人的云笔记?** (⊙o⊙)…额额额?。。。这件事儿还得从一只蝙蝠说起...... 好了_(:з」∠)_不想扯了...... **~~有以下几个原因:~~** 1. 突然发现有道云笔记不是自己的 我的隐私都在别人的库里?。并且一直想有一个自己的云笔记。 2. 打开全球最大同性交友平台gay....嗯嗯嗯...错了,Github。发现开源的云笔记软件很少几乎没有 3. 想做一个前后端分离的项目,并且想开源分享给大家。 4. 一只蝙蝠的传说。(大家应该清楚?) --- 以上就是我一时冲动,不对。。。一时兴起,所以抄起我的小本本就开干!!来一场说撸就撸的guan......额不对,说撸就撸的码!(时不时就开车。老司机快上车!!?)
...阅读全文

开源项目 2020-03-02 23:09:50 biningo

Go 解决"Connection reset by peer"或"EOF"问题

【问题】 我编写了一个http Client程序代码如下: // create a request req, err := http.NewRequest(method, url, body) if err != nil { return nil, err } // send JSON to firebase resp, err := http.DefaultClient.Do(req) if err != nil { return nil, err } if resp.StatusCode != http.StatusOK { return nil, fmt.Errorf("Bad HTTP Response: %v", resp.Status) } defer resp.Body.Clo...阅读全文

博文 2016-12-19 14:00:02 吃一堑消化不良

Golang Web编程的Get和Post请求发送与解析

Golang Web编程的Get和Post请求发送与解析 时间 2014-08-19 15:26:48 CSDN博客 原文 http://blog.csdn.net/typ2004/article/details/38669949 本文的是一篇入门文章,通过一个简单的例子介绍Golang的Web编程主要用到的技术。 文章结构包括: Client-Get 请求 Client-Post 请求 Server 处理 Get 和 Post 数据 在数据的封装中,我们部分采用了json,因而本文也涉及到Golang中json的编码和解码。 一、Client-Get package main import ( "fmt" "net/url" "net/http" "io/ioutil" "log" ) f...阅读全文

博文 2015-01-31 01:00:03 stephen830

[Go]通过HTTP获取信息返回JSON

用 HTTP.GET 从开放 API 中查询深圳通信息,然后将 JSON 数据存入结构体中,再格式化输出。注意:获取的并不是实时的深圳通信息Warm upstrconv.ParseUint: 解析无符号的数值字符串func ParseInt(s string, base int, bitSize int) (i uint64, err error)参数1 数字的字符串形式参数2 数字字符串的进制:二进制、八进制、十进制、十六进制参数3 返回结果的bit大小,也就是int8 int16 int32 int64encoding/json.Unmarshal: 解析 JSON 编码的数据json.Unmarshalgo-simplejson代码// 从开放的 Api 中查询深圳通相关信息。 // ...阅读全文

博文 2015-06-18 19:00:34 abv123456789

golang模拟点击浏览器

发现一个很好玩的浏览器模拟操作包,下面演示一下,打开网站,点击某个链接 package main import ( "fmt" "time" "github.com/go-vgo/robotgo" "sourcegraph.com/sourcegraph/go-selenium" ) func main() { var webDriver selenium.WebDriver var err error caps := selenium.Capabilities(map[string]interface{}{"browserName": "firefox"}) if webDriver, err = selenium.NewRemote(caps, "http://localhost:951...阅读全文

博文 2017-09-11 03:41:47 YiYou.Org

Go中优雅的HTTP服务关闭

虽然写出7x24小时不间断运行的服务是一件很酷的事情,但是我们仍然在某些时候,譬如服务升级,配置更新等,得考虑如何优雅的结束这个服务。 当然,最暴力的做法直接就是kill -9,但这样直接导致的后果就是可能干掉了很多运行到一半的任务,最终导致数据不一致,这个苦果只有遇到过的人才能深深地体会,数据的修复真的挺蛋疼,有时候还得给用户赔钱啦。 所以,通常我们都是给服务发送一个信号,SIGTERM也行,SIGINTERRUPT也成,反正要让服务知道该结束了。而服务收到结束信号之后,首先会拒绝掉所有外部新的请求,然后等待当前所有正在执行的请求完成之后,在结束。当然很有可能当前在执行一个很耗时间的任务,导致服务长时间不能结束,这时候就得决定是否强制结束了。 具体到go的HTTP Server里面,如何优...阅读全文

博文 2015-05-16 20:05:15 siddontang

实力公司寻实力程序员加入、借宝地发帖招聘golang\php\ios\Android程序员

## PHP 工程师:10 人  **工作职责:** - 负责网站 PC 站、移动网站、APP 等的 server 端开发;  - 参与需求评审、系统设计等工作。  **职位要求:** - 四年以上 LNMP 相关工作经验;  - 熟练使用 PHP,至少使用两个 PHP 开发框架,具有良好的编程能力和代码风格;  - 具备数据库设计和优化能力,熟练使用 mysql 和任意一门 nosql ;  - 熟悉前端技术栈,JS/CSS/HTML ;  - 计算机相关专业,拥有扎实的计算机基础理论知识;  - 具有良好的沟通能力和团队协作精神;  - 思维缜密,逻辑性强,追求极致,具有挑战精神,能承受高强度的工作压力。  - 熟悉亚马逊云、谷歌云加分  **薪水:25k 起步**    ##...阅读全文

主题 2017-10-12 08:53:01 ruok

Go 各版本回顾

![Illustration created for “A Journey With Go”, made from *the original Go Gopher, created by Renee French.](https://raw.githubusercontent.com/studygolang/gctt-images2/master/Go-Retrospective/00.png) 对每一个开发者来说,Go 的发展历史是必须知道的知识。了解几年来每个发行版本的主要变化,有助于理解 Go 的设计思想和每个版本的优势/弱点。想了解特定版本的更详细信息,可以点击每个版本号的链接来查看修改记录。 ## [Go 1.0](https://blog.golang.org/go-versio...阅读全文

博文 2020-05-05 11:42:29 lxbwolf

go web应用的部署和热更新

### 序言 Golang标准库的http部分提供了强大的web应用支持,再加上negroni等中间件框架的支持,可以开发高性能的web应用(如提供Restful的api服务等)。 通常这些web应用部署在多台Linux操作系统的应用服务器上,并用Nginx等做为反向代理,实现高可用的集群服务。 当应用版本升级时,如何实现比较优雅的多态服务器的版本更新呢?我google、baidu了一下,也许我输入的关键字不对,也许这对很多人不是个问题,反正我是没有找到完整的方案。 ### 问题 Web应用的更新,我觉得可能需要考虑几个方面的问题: * 编译好的应用二进制文件、配置文件上传到服务器上; * 应用服务器能感知到有新的版本上传; * 在没有停止服务的情况下,热更新...阅读全文

主题 2015-10-25 08:08:28 rod6

快速开始使用grpc(golang版)

开始前准备 安装gprc go get -u google.golang.org/grpc 安装protocol buffers protoc编译器这个用于生成gRPC服务代码的。 下载解压后放入PATH路径,供后续使用。接下来安装protoc的go语言的插件go get -u github.com/golang/protobuf/protoc-gen-go 。 注意:这边插件也必须要在PATH路径下 栗子 采用$GOPATH/src/google.golang.org/grpc/examples/helloworld的栗子 新建helloworld.proto,这个文件可以供多人使用。 syntax = "proto3"; //语法声明 package helloworld; //包名 /...阅读全文

博文 2018-12-03 17:34:44 你家旭哥

服务发现:Zookeeper vs etcd vs Consul

【编者的话】本文对比了Zookeeper、etcd和Consul三种服务发现工具,探讨了最佳的服务发现解决方案,仅供参考。 如果使用预定义的端口,服务越多,发生冲突的可能性越大,毕竟,不可能有两个服务监听同一个端口。管理一个拥挤的比方说被几百个服务所使用的所有端口的列表,本身就是一个挑战,添加到该列表后,这些服务需要的数据库和数量会日益增多。因此我们应该部署无需指定端口的服务,并且让Docker为我们分配一个随机的端口。唯一的问题是我们需要发现端口号,并且让别人知道。 当我们开始在一个分布式系统上部署服务到其中一台服务器上时,事情会变得更加复杂,我们可以选择预先定义哪台服务器运行哪个服务的方式,但这会导致很多问题。我们应该尽我们所能尽量利用服务器资源,但是如果预先定义每个服务的部署位置,那么...阅读全文

博文 2015-09-20 10:39:43 国会山上的猫TuxHu

golang 连接mssql sql server

package main import ( "database/sql" "fmt" "strings" ) import ( _ "github.com/mattn/go-adodb" ) type Mssql struct { *sql.DB dataSource string database string windows bool sa SA } type SA struct { user string passwd string } func (m *Mssql) Open() (err error) { var conf []string conf = append(conf, "Provider=SQLOLEDB") conf = append(conf, "Data Sour...阅读全文

博文 2016-03-30 16:00:07 CodyGuo

go语言init和main函数

Go里面有两个保留的函数:init函数和main函数。下边就来比较一下两个函数的异同。 相同点:两个函数在定义时不能有任何的参数和返回值,且Go程序自动调用。 不同点:init可以应用于任意包中,且可以重复定义多个。main函数只能用于main包中,且只能定义一个。 下边说一下两个函数的执行顺序: 对同一个go文件的init()调用顺序是从上到下的 对同一个package中不同文件是按文件名字符串比较“从小到大”顺序调用各文件中的init()函数,对于 对不同的package,如果不相互依赖的话,按照main包中"先import的后调用"的顺序调用其包中的init() 如果package存在依赖,则先调用最早被依赖的package中的init() 最后调用main函数 下图截自astaxie...阅读全文

博文 2015-06-17 23:02:22 Mervyn1205

redis管理工具Redis Web Ui管理工具

# GoRedisManager redis 客户端管理平台(redis manager)【部署简单便捷,SSH连接,用户校验,操作日志等】。欢迎star!! ![redis-login.JPG](https://static.studygolang.com/211119/013cb36705068f945f29b166712a196b.JPG) ![index2.JPG](https://static.studygolang.com/211119/32c19928267d779986a375f2b49fa4e0.JPG) ## 功能清单 * 管理连接、切换DB * 支持 string 类型 * 支持 list 类型 * 支持 set 类型 * 支持...阅读全文

开源项目 2021-11-02 21:49:13 gphper

2015 学习推荐书籍(golang ,web ,机器学习)

golang 以下都是来源于studygolang(一般人都知道): 《The Way to Go 中文 — 无闻译》 https://gobyexample.com/ 50 个 Go 开发者常犯的错误(英) 相对于《golang语言编程》比较适合新手入门。 《golang语言编程》 许式伟 比较全面讲解golang,有项目实例,有跟其他语言的对比,有深度也有广度,当然也就没那么细节了。 个人感觉,不适合第一门语言学习吧。唯有对比才有体会这门工程性语言。 估计,c++和python 都了解后 看更有感触! 《Go 学习笔记 第三版 — 雨痕》 总结性,看完语法在看这个不错,下半部分分析源码的,没投精力看,跳看,个人觉得了解/原理得话,看《深入理解go》加上其他blog就够了。。 ps : 他...阅读全文

博文 2015-06-23 13:07:17 u010129347

Golang RPC 之 Thrift

Thrift 简介: Thrift 是一款高性能、开源的 RPC 框架,产自 Facebook 后贡献给了 Apache,Thrift 囊括了整个 RPC 的上下游体系,自带序列化编译工具,因为 Thrift 采用的是二进制序列化,并且与 gRPC 一样使用的都是长连接建立 client 与 server 之间的通讯,相比于比传统的使用XML,JSON,SOAP等短连接的解决方案性能要快得多。本篇只介绍 Golang 关于 Thrift 的基础使用。 安装 安装 Thrift 的 Golang 库有两种方案: 直接通过 go get 命令安装,缺点是因为不可抗拒的网络因素大部分人可能会失败:$ go get git.apache.org/thrift.git/lib/go/thrift 通过...阅读全文

博文 2017-03-17 05:52:34 谢烟客

基于Gin框架封装go web项目骨架(GoSkeleton)

1.这是一个基于go语言gin框架的web项目骨架,定位于单体应用开发,其目的主要在于将web项目主线逻辑梳理清晰,最基础的东西封装完善,让开发者更多关注实际业务进行快速开发即可。 2.专注于前后端分离业务场景,开发常用模块齐全,从项目开发到上线、运维。我们提供了整套解决方案。 3.更多功能参见项目地址以及文档:https://gitee.com/daitougege/GinSkeleton 4.项目整体逻辑 ![图例](http://139.196.101.31:2080/GinSkeleton.jpg) 5.并发测试 > 2核4g云服务器并发测试, QPS 1 万+ ![QPS](http://139.196.101.31:208...阅读全文

开源项目 2020-08-20 14:58:32 张三丰

golang框架解析-iris

前言 报了个驾校,时隔两个多月没发文章了,驾考上周终于都结束了,这之后得补补前两月的文章了。之前定了个目标,读完beego、iris、gin等go框架的源码,之前已经发过一篇过于beego的文章golang框架解析-beego,今天带来的是go框架iris的解析,主要讲解iris框架的一个生命周期过程。 在读这篇文章之前,如果没看过golang框架解析-beego的可以先去看看,因为golang框架解析-beego有讲关于go如何启动一个http server,这个知识点对理解本篇文章有很大的帮助。 安装 使用glide安装: glide get github.com/kataras/iris glide get github.com/kataras/golog 复制代码启动一个简单的iri...阅读全文

博文 2019-06-30 23:34:31 TIGERB

微服务实战(一):微服务架构的优势与不足

【编者的话】本文来自Nginx官方博客,是微服务系列文章的第一篇,主要探讨了传统的单体式应用的不足,以及微服务架构的优势与挑战。正如作者所说,微服务架构更适合用于构建复杂的应用,尽管它也有自己的不足。 这篇文章作者是Chris Richardson,他是早期基于Java的Amazonite EC2 PaaS平台CloudFoundry.com的创始人。现在他为企业提供如何开发和部署应用的咨询服务。他也经常在http://microservices.io上发表有关微服务的文章。 微服务正在博客、社交媒体讨论组和会议演讲中获得越来越多的关注,在Gartner的2014 Hype Cycle上它的排名非常靠前。同时,软件社区中也有不少持怀疑论者,认为微服务不是什么新东西。Naysayers认为这就...阅读全文

博文 2016-02-29 11:00:20 hokingyang

Golang测试技术

本篇文章内容来源于Golang核心开发组成员Andrew Gerrand在Google I/O 2014的一次主题分享“Testing Techniques”,即介绍使用Golang开发 时会使用到的测试技术(主要针对单元测试),包括基本技术、高级技术(并发测试、mock/fake、竞争条件测试、并发测试、内/外部测 试、vet工具等)等,感觉总结的很全面,这里整理记录下来,希望能给大家带来帮助。原Slide访问需要自己搭梯子。另外这里也要吐槽一 下:Golang官方站的slide都是以一种特有的golang artical的格式放出的(用这个工具http://go-talks.appspot.com/可以在线观看),没法像pdf那样下载,在国内使用和传播极其不便。 一、基础测试技术 1、测...阅读全文

博文 2014-11-16 21:00:08 大蓝妹

http.ServeMux解析

## web server概述 使用go语言搭建一个web服务器是很简单的,几行代码就可以搭建一个稳定的高并发的web server。 ``` // hello world, the web server func HelloServer(w http.ResponseWriter, req *http.Request) { io.WriteString(w, "hello, world!\n") } func main() { http.HandleFunc("/hello/", HelloServer) err := http.ListenAndServe(":8080", nil) if err != nil { log.Fatal("ListenAndServe: ", err) }...阅读全文

博文 2015-09-29 14:14:51 shanks

Effective Go

自:https://golang.org/doc/effective_go.html Effective Go IntroductionExamplesFormattingCommentaryNamesPackage namesGettersInterface namesMixedCapsSemicolonsControl structuresIfRedeclaration and reassignmentForSwitchType switchFunctionsMultiple return valuesNamed result parametersDeferDataAllocation with newConstructors and composite literalsAllocati...阅读全文

博文 2014-12-01 00:00:01 leonzhouwei

使用go build 进行条件编译

当我们编写的go代码依赖特定平台或者cpu架构的时候,我们需要给出不同的实现 C语言有预处理器,可以通过宏或者#define包含特定平台指定的代码进行编译 但是Go没有预处理器,他是通过 go/build包 里定义的tags和命名约定来让Go的包可以管理不同平台的代码 这篇文章将讲述Go的条件编译系统是如何实现的,并且通过实例来说明如何使用 1. 预备知识:go list命令的使用 在讲条件编译之前需要了解go list的简单用法 go list访问源文件里那些能够影响编译进程内部的数据结构 go list与go build ,test,install大部分的参数相同,但是go list不会执行编译操作。使用-f参数可以让我们提供的text/template里的代码在包含go/build.P...阅读全文

博文 2014-10-04 19:26:02 varding

人生苦短,我学Java

当你踏进计算机世界的大门时,PHP、JavaScript、.Net、Python、C、C++、Ruby、Golang、Java等编程语言一定是不陌生的,这么多的编程语言可能让你有点眼花缭乱了,学哪一个好呢?有的人觉得C语言是最好的,因为大学第一门课学的就是它呀;有的人觉得PHP语言是最好的,因为“PHP是世界上最好的语言”呀;有的人觉得C++是最好的,因为面向对象编程,从此有对象了啊。然而我想说Java语言综合来说是最好的,正如术业有专攻,在某个特定的领域也有最适合的语言,但从互联网发展趋势、语言自身情况、岗位就业情况、职业发展路线四个维度来看,综合评分最高的是Java。编程世界里的第一堂课是“Hello,World”,Java工程师职业前景是Java语言的第一堂课,我们从上述的三个维度来上...阅读全文

博文 2020-05-28 21:32:48 AI课工场

goconvey - 课时 1:优雅的单元测试

注意事项 本博客隶属于 goconvey - 课时 1:优雅的单元测试 请注意配套使用。 本博文为 goconvey - Go 语言单元测试包的配套博客,旨在通过文字结合代码示例对该库的使用方法和案例进行讲解,便于各位同学更好地使用和深入了解。 库简介 Go 语言虽然自带单元测试功能,在 GoConvey 诞生之前也出现了许多第三方辅助库。但没有一个辅助库能够像 GoConvey 这样优雅地书写代码的单元测试,简洁的语法和舒适的界面能够让一个不爱书写单元测试的开发人员从此爱上单元测试。 下载安装 您可以通过以下两种方式下载安装 GoConvey: gopm get github.com/smartystreets/goconvey 或 go get github.com/smartystre...阅读全文

博文 2014-10-20 09:29:06 无闻

Golang编程经验总结

如何选择web框架: 首先Golang语言开发web项目不一定非要框架,本身已经提供了Web开发需要的一切必要技术。当然如果想要ruby里面Rail那种高层次全栈式的MVC框架, Golang里面暂时没有,但是不是所有人都喜欢这种复杂的框架。Golang里面一些应用层面的技术需要自己去组装,比如session,cache, log等等. 可选择的web框架有martini, goji等,都是轻量级的。 Golang的web项目中的keepalive 关于keepalive, 是比较复杂的, 注意以下几点: http1.1 默认支持keepalive, 但是不同浏览器对keepalive都有个超时时间, 比如firefox: 默认超时时间115秒, 不同浏览器不一样; Nginx默认超时时间7...阅读全文

博文 2015-02-04 17:00:02 u013834131

golang书籍大全,觉得不错的可以给我star下

#### 编程书籍的整理和收集 目录: #### AI与算法 * [数学之美](https://github.com/KeKe-Li/book/blob/master/AI/%E6%95%B0%E5%AD%A6%E4%B9%8B%E7%BE%8E.pdf) * [机器学习](https://github.com/KeKe-Li/book/blob/master/AI/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0.pdf) * [凸优化理论](https://github.com/KeKe-Li/book/blob/master/AI/%E5%87%B8%E4%BC%98%E5%8C%96%E7%90%86%E8%AE%B...阅读全文

资源 2017-12-13 09:58:11 KeKe-Li

优秀的 Go 存储开源项目和库

可以看到,今年谷歌家的 Go 编程语言流行度有着惊人的上升趋势,其发展也是越来越好,因此本文整理了一些优秀的 Go 存储相关开源项目和库,一起分享,一起学习。 存储服务器(Storage Server) Go 实现的存储服务器 minio - Minio 是一个与 Amazon S3 APIs 兼容的开源对象存储服务器,分布式存储方案 rclone - “用于云存储的 Rsync” - Google Drive, Amazon Drive, S3, Dropbox, Backblaze B2, One Drive, Swift, Hubic, Cloudfile… camlistore - Camlistore 是你的个人存储系统:一种存储、同步、共享、建模和备份内容的方式 torus - ...阅读全文

博文 2017-02-14 11:00:08 编辑部的故事