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

Golang几大框架的优势和区别?

Martini、Beego、Revel 等等…… golang-china 讨论组的回答: 苏沛: 试用了一下 Martini , 感觉现在的一些第三方插件数量和质量并不是特别好,会有一些坑或者要自己写些中间件。 总体不如另外两个框架成熟。 我去年开始研究Go语言,不知不觉快有一年了。以前我研究php和nodejs,都是弱类型的解释性语言。想找一个编译型的强类型语言继续学习,就选中了新奇的Go语言。我只关注Web方面的应用,看了很多有兴趣的开源的Go Web框架,随便吐槽一下。 Fan Yang: 刚刚开始用Beego,也就是图它是中国人做的,有问题可能直接问作者什么的也方便些。 框架的对比。来自[Go语言的Web框架](http:/...阅读全文

6 款最棒的 Go 语言 Web 框架简介

![](https://raw.githubusercontent.com/studygolang/gctt-images/master/top-6-web-frameworks-for-go-as-of-2017/twitter_status.jpg) https://twitter.com/ThePracticalDev/status/930878898245722112 如果你只是想写一个自己用的小网站,或许你不需要框架,但如果你是要开发一个投入生产运营的网站,那么你肯定会需要一个框架,而且是需要一个好的 Web 框架。 如果你已经掌握所有必要的知识和经验,你会冒险自己去重新开发所有的功能么?你有时间去找满足生产级别要求的库来用于开发么?另外,你确定这个库可以满足你后续所有的要求? 这...阅读全文

博文 2017-12-09 03:34:14 polaris

Golang优秀开源项目汇总(持续更新。。。)

Golang优秀开源项目汇总(持续更新。。。) 我把这个汇总放在github上了, 后面更新也会在github上更新。 https://github.com/hackstoic/golang-open-source-projects 。 欢迎fork, star , watch, 提issue。 资料参考来源:http://studygolang.com/projects 监控系统 序号 名称 项目地址 简介 1 OpenFalcon http://github.com/open-falcon/of-release OpenFalcon是一款小米监控系统。功能:*数据采集免配置:agent自发现、支持Plugin、主动推送模式; *容量水平扩展:生产环境每秒50万次数据收集、告警、存储、绘图...阅读全文

博文 2016-08-13 22:00:06 hackstoic

GO到底适合干什么?

LZ最近从上家公司java转到go,工作内容还是主要业务逻辑代码,感觉go写起来不是很顺畅(oop思想可能根深蒂固了,语言熟练度也是一个原因),一个Orm框架用起来就特别麻烦。。。个人感觉基于go的特性还是做一些基础的服务器组件会很有优势。。写一般的业务代码简直别扭。。没泛型、if err != nil等等.. 当然好处就是很多东西要自己实现,没有可靠的轮子。。。大家都用GO做什么呢...阅读全文

使用 beego 搭建 web 应用之一

介绍 你是一个从PHP,Python,Ruby等动态语言转移到Go的web应用开发人员吗?想知道怎样使用Go开发基于web的应用程序吗?你想要知道怎样使用类似于已知的框架的方式进行开发,在那儿你能重复的利用已知的知识? 如果是这样,那么你可能已经做了一些搜索,无论是在谷歌,StackOverflow的或其他网站,以寻求一个框架来帮助你;你可能已经看到了有许多可能的选择,包括Beego,Martini和Gorilla,另外还有net/http包。 这四个当中,我尝试的最多的就是Beego。我认为,它的功能十分的丰富,但是不太复杂,因此上手是相对较快的。 地狱星星翻译于 3 个月 前 0人顶 顶 翻译的不错哦! Beego不是一般的web开发包。它构建在大量已存在的Go之上,提供了许多的功能,以...阅读全文

博文 2014-10-04 19:25:56 中奖啦, 地狱星星, --zxp

Go语言现有Web开发框架

经常有人问:Go有哪些Web开发框架? 做Web开发的总是想要一个开发框架。好的框架的确很有用处。不过,如果Go新手,记得一定别被框架束缚住了,一定要学习Go的基础。 为了方便大家,我将现有的一些框架(**文档比较全的**)做一个汇总(没用过,没法提供各种对比): 1、web.go,源码地址:https://github.com/hoisie/web,官方首页:http://webgo.io/ 2、revel,类似Java的play框架。源码地址:https://github.com/robfig/revel,官方首页:http://robfig.github.io/revel/。Danny.Tian总结的学习笔记:[一步一步学习Revel Web开源框架](http...阅读全文

Golang 微框架 Gin 简介

所谓框架 框架一直是敏捷开发中的利器,能让开发者很快的上手并做出应用,甚至有的时候,脱离了框架,一些开发者都不会写程序了。成长总不会一蹴而就,从写出程序获取成就感,再到精通框架,快速构造应用,当这些方面都得心应手的时候,可以尝试改造一些框架,或是自己创造一个。 曾经我以为Python世界里的框架已经够多了,后来发现相比golang简直小巫见大巫。golang提供的net/http库已经很好了,对于http的协议的实现非常好,基于此再造框架,也不会是难事,因此生态中出现了很多框架。既然构造框架的门槛变低了,那么低门槛同样也会带来质量参差不齐的框架。 考察了几个框架,通过其github的活跃度,维护的team,以及生产环境中的使用率。发现Gin还是一个可以学习的轻巧框架。 Gin Gin是一个g...阅读全文

博文 2017-12-03 16:03:06 mickelfeng

go服务端----使用gin框架搭建简易服务

使用gin框架搭建简易服务 go语言web框架挺多的,各有各的特点和风格。我之所以在项目中使用gin框架,是因为项目一开始是用的martini,一个设计得很好的框架,但是存在一个比较严重的问题,就是大量使用反射使用太多导致效率过低(这个问题也导致了程序在访问量暴涨时内存上涨过快的问题),而且这个框架在去年就没有人维护了,而作者推荐使用风格很相近的gin框架,大概看了一下,风格确实差不多,而且效率很高,于是就用了gin。至于其它的框架,了解得比较多的是beego,项目中也使用了它的子项目beelog,但是由于我做的项目是偏向于应用服务,而不是网站服务,它的风格更适合网站服务,因此就没有选择它。 贴一下这两个框架的github仓库,martini就不推荐了 gin beego 下面贴一下用gin...阅读全文

博文 2016-11-04 13:00:06 KeKeQiaoKeLi

go编程之beego\orm使用

前面有提到go的mysql操作,但使用其进行数据库的操作封装,显然在实际的开发迭代中有几大问题存在,首先,sql操作及语句啰嗦而且复杂,其次工作效率也不是很高;如果使用此方法进行数据库开发,势必照成过多的代码冗余,且使用过程中容易产生各种问题。所以,今天我们一起来看看怎么使用beego下orm框架来辅佐我们进行mysql数据库操作。 orm即对象关系映射,通过类或者结构体与数据库表进行一一对应,今天我们通过简单的数据库操作代码来对照说明,且在代码中有对应操作的解释: import ( "fmt" _ "github.com/Go-SQL-Driver/MySQL" "github.com/astaxie/beego/orm" //对应的beego/orm库 可以通过 go get来获取到本地...阅读全文

博文 2015-06-17 23:08:20 xixionedream

go-import下划线的作用

在Golang里,import的作用是导入其他package,但是今天在看beego框架时看到了import 下划线,不知其意,故百度而解之。 import 下划线(如:import _ hello/imp)的作用:当导入一个包时,该包下的文件里所有init()函数都会被执行,然而,有些时候我们并不需要把整个包都导入进来,仅仅是是希望它执行init()函数而已。这个时候就可以使用 import _ 引用该包。即使用【import _ 包路径】只是引用该包,仅仅是为了调用init()函数,所以无法通过包名来调用包中的其他函数。 【示例】 目录结构: GOPATH --bin --pkg --src main.go --hello --imp init.go main.go 1 package ...阅读全文

博文 2015-06-20 03:00:01 hezhixiong

完整视频代码及学习资料-Zinx框架-Golang轻量级TCP并发服务-适合基础学习-也适合技能加强

![image.png](https://static.studygolang.com/190412/5eba8cb38cd844bcd8f69e0f1d2bd483.png) ![image.png](https://static.studygolang.com/190412/1105a68f5823cf0801b764ff1bedc2d0.png) ![image.png](https://static.studygolang.com/190412/bb8e5840e39a64197c1a1d9079488e8c.png) ![image.png](https://static.studygolang.com/190412/4edc7fb39cefa5da63b9e739561...阅读全文

为什么80%的码农都做不了架构师?

一般来说技术团队的金字塔顶尖往往是技术最牛的人做架构师(或TL)。所以架构师在广大码农中的占比大概平均不到 20%。而架构师也可以分为初级、中级、高级,江湖上真正高水平的架构师就更少了。所以,80%码农干上许多年,还是做不了架构师,正在辛苦工作的程序员们,你有没有下面几种感觉?​① 我的工作就是按时完成领导交给我的任务,至于代码写的怎样,知道有改进空间,但没时间去改进,关键是领导也不给时间啊。② 我发现我的水平总是跟不上技术的进步,有太多想学的东西要学,Swoft用的人最近比较多啊,听说最近Swoole比较火,还有微服务,听说PHP又更新了……③ 我发现虽然我工作5年了,除了不停的Coding写业务代码,Ctrl+c和Ctrl+V更熟练了,但编码水平并没有提高,还是一个普通程序员,但有人已经...阅读全文

博文 2019-06-20 12:03:47 PHPsix

基于Go实现的分布式MQ

基于Go实现的分布式MQ 2015-09-14 赵超 讲师:赵超(Beta版厨子3.0) 个人简介: 6年的Java开发经验、先后就职于淘宝Java中间件团队、腾讯无线媒体产品部。现就职于陌陌担任基础业务组主管。专注于分布式消息总线、LBS技术领域、golang在大规模生产换环境应用的探索。 今天交流的内容也是我上半年主要做的一个开源的MQ的项目,希望对大家有帮助 一、RPC与MQ之间对比 我们通常接触到的RPC同步调用的种类非常多比如fb 的thrift/阿里的dobbo 腾讯的taf、淘宝的hsf这类同步调用框架 从图里面可以看到作为一个业务完成后端要发生非常多的RPC通信 随着业务的复杂度提高,各服务间的依赖度也逐步加大,那么服务间的响应时间也就各有参差了 在一个请求链路上如果存在一个...阅读全文

博文 2015-10-24 05:00:01 zdy0_2004

工作5年C++服务器,转GO的感触,GO服务器业余时间整理的,用时2个月,框架到细节

之前c++服务器,是端游转过手游来的,在我不断的优化下,成功从c++98到c++11,以及32位到64位的转变,从端游服务器,转到手游服务器,上线人数单服1W+没太大压力。 go是我业余的时候接触到的,在现在大环境下,高并发和跨平台是现在开发游戏服务器的主流,之前那套c++说实在是够用,只要能达到那个量,单服性能极致,我只服c++。 skynet+lua,c底层,lua逻辑,我也过来过c++底层,lua逻辑,但实际效果是lua并不是我想要去写的,可能我对lua脚本不感兴趣。go做的事情和skynet做的大同小异,都是携程,抢占式g调度模式,go 有个goroutine和channel,skynet lua虚拟机。 当时设计go的时候,由于跟c++大轮子有点出路,c++是循环轮子模式,单...阅读全文

游戏服务器框架 Leaf/go

Leaf 是一个使用 Go 语言开发的开源游戏服务器框架,注重运行效率 并追求极致的开发效率。Leaf 适用于几乎所有的游戏类型。其主要的特性: * 良好的使用体验。Leaf 总是尽可能的提供简洁和易用的接口,尽可能的提升开发的效率 * 稳定性。Leaf 总是尽可能的恢复运行过程中的错误,避免崩溃 * 多核支持。Leaf 通过模块机制和 [leaf/go](https://github.com/name5566/leaf/tree/master/go) 尽可能的利用多核资源,同时又尽量避免各种副作用 * 良好的模块支持。 一个 Leaf 开发的游戏服务器由多个模块组成(例如 [LeafServer](https://github.com/name5566/leafserver))...阅读全文

Go官方库RPC开发指南

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

博文 2016-09-18 17:00:02 colobu

go语言:巧用beego框架的bee工具进行热编译测试(不用每次都go run xxx.go了~)

对于我们go语言的初学者来说,喜欢自己一边学一边写写小代码。每次写完之后,我们都想看看程序结果,虽然go语言提供的go run工具灰常方便,直接运行就能看到结果,但是每次都重复这一个命令是不是有点烦呢? 幸好beego框架提供了一个bee工具,这个工具本来是用于框架的热编译使用的,但我们取巧一点也可以用于我们小型的测试程序的! 首先运行下面命令: go get github.com/beego/bee 如无意外,应该在$GOPATH/bin目录下自动生成一个bee运行文件,windows下应该是bee.exe(如果有意外,应该是那种问题,因为本人一直科学上网,所以不知道会不会存在那种问题。) 切换到你测试的目录,比如$GOPATH/src/test,新建一个测试文件(文件名随意): pack...阅读全文

博文 2015-01-26 08:00:01 JM_Joy

作为一名Java程序员,我为什么不在生产项目中转向Go

自Google在2009年发布Go语言的第一个正式版之后,这门语言就以出色的语言特性受到大家的追捧,尤其是在需要高并发的场景下,大家都会想到是不是该用Go。随后,在国内涌现出了一批以七牛为代表的使用Go作为主要语言的团队,而许世伟大神本人也在各种场合下极力推动Go在国内的发展,于是在这种大环境下,中国的Go开发者群体逐渐超越了其他地区。 那么问题来了,业余时间好学是一回事,真正要将一个新东西运用到生产中则是另一回事。JavaScript的开发者可以义无反顾地选择Node.js,但是对于Java开发者来说,在下一个大项目里究竟是该选择Go,还是Java呢? 郑重声明:本文并不是来探讨Go或者Java谁是更好的语言,每种语言都有自己的设计哲学和适用场景,今天主要是在探讨实际工程中的选择和权衡的问...阅读全文

博文 2015-09-23 10:40:41 丁雪丰

实力公司寻实力程序员加入、借宝地发帖招聘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_spider

##简介## 本项目基于golang开发,是一个开放的垂直领域的爬虫引擎,主要希望能将各个功能模块区分开,方便使用者重新实现子模块,进而构建自己垂直方方向的爬虫。 本项目将爬虫的各个功能流程区分成Spider模块(主控),Downloader模块(下载器),PageProcesser模块(页面分析),Scheduler模块(任务队列),Pipeline模块(结果输出); ##执行过程简述:## 1. Spider从Scheduler中获取包含待抓取url的Request对象,启动一个协程,一个协程执行一次爬取过程,此处我们把协程也看成Spider,Spider把Request对象传入Downloader,Downloader下载该Request对象中url所对应的页面...阅读全文

Golang 网络爬虫框架gocolly/colly 一

Golang 网络爬虫框架gocolly/colly 一 gocolly是用go实现的网络爬虫框架,目前在github上具有3400+星,名列go版爬虫程序榜首。gocolly快速优雅,在单核上每秒可以发起1K以上请求;以回调函数的形式提供了一组接口,可以实现任意类型的爬虫;依赖goquery库可以像jquery一样选择web元素。 gocolly的官方网站是http://go-colly.org/,提供了详细的文档和示例代码。安装colly: go get -u github.com/gocolly/colly/... 在代码中导入包: import "github.com/gocolly/colly" colly的主体是Collector对象,管理网络通信和负责在作业运行时执行附加的回掉...阅读全文

博文 2017-12-30 00:30:00 majianguo

golang日志框架logrus

golang自带日志框架功能比较简单,仅提供print、panic、fatal三个方法,对于常规的日志切割等功能并未提供支持。 这里推荐使用sirupsen/logrus日志库。 logrus feature 结构化、可插拔的日志模块 完全兼容官方log库接口 Field机制 可扩展的HOOK机制 TEXT与JSON两种可选格式 简单使用示例 std Logger 与官方log类似,logrus也提供了一个名为std的标准logger,对外导出的各类方法直接使用std记录日志,一般可按如下方式使用 package main import log "github.com/sirupsen/logrus" func main() { log.Info("hello, world.") } 自建L...阅读全文

博文 2017-07-31 12:06:17 yiduyangyi

用Go实现的简易TCP通信框架

接触到GO之后,GO的网络支持非常令人喜欢。GO实现了在语法层面上可以保持同步语义,但是却又没有牺牲太多性能,底层一样使用了IO路径复用,比如在LINUX下用了EPOLL,在WINDOWS下用了IOCP。 但是在开发服务端程序的时候,很多都是被动触发的,都是客户端发送来的请求需要处理。天生就是一个event-based的程序。而在GO下,因为并发是作为语言的一部分,goroutine, channel等特性则很容易的使程序员在实现功能时从容的在同步与异步之间进行转换。 因为自己的需要,我针对event-based场景的服务端做了简易的封装。具体代码见这里. 设计原则 因为GO的IO机制和并发原语的原生支持,再加上对网络API的封装,程序员可以简单的实现一个高效的服务端或者客户端程序。一般的实...阅读全文

博文 2014-10-23 03:00:02 concurrency

go语言实现一个简单的登录注册web小程序

最近学习golang也有一段时间了,基础差不多学了个大概,因为本人是java程序员,所以对web更感兴趣。根据《go web编程》中的例子改编一个更简单的例子,供新手参考,废话不多说,上菜: 这个例子使用到了beego框架和beedb框架,如果是go新手beego和beedb得自己去google下载安装。 目录结构: index.go package controllers import ( "fmt" "github.com/astaxie/beego" "login/models" ) type IndexController struct { beego.Controller } func (index *IndexController) Get() { sess := index.S...阅读全文

博文 2014-10-04 19:27:34 chengxw

golang websocket的例子

最近写了一个chrome的websocket extension, server端用的是Java的Netty框架, 后来发现golang 实现websocket 非常简单,高效, 下面是例子, 简单实现了用户登录,广播,相当于聊天室! package main import ( "code.google.com/p/go.net/websocket" "html/template" "log" "net/http" "os" "strings" "time" ) const ( listenAddr = "localhost:9527" // server address ) var ( pwd, _ = os.Getwd() RootTemp = template.Must(templat...阅读全文

博文 2015-06-17 20:03:47 u013834131

Go 应用框架 Iris-Go

原先我们用go来开发基于web的应用时,一般会用到net/http包,然后在代码中处理大量相同的事情,如:路由、鉴权等。 现在通过Iris-Go,可以方便的帮助你来开发基于web的应用。 简单来说:Iris-Go与国内大牛的[BeeGo](http://www.oschina.net/p/beego)类似,但从其官方介绍的资料来看,Iris-Go的性能更优! ![image](https://raw.githubusercontent.com/iris-contrib/website/cf71811e6acb2f9bf1e715e25660392bf090b923/assets/benchmark_horizontal_transparent.png...阅读全文

开源项目 2016-06-27 18:00:05 网友

beego框架之orm模块

参考beego原文:http://beego.me/docs/mvc/model/orm.md#main.go beego ORM 是一个强大的 Go 语言 ORM 框架,orm模块主要是处理MVC中的M(models)。 首先以bee工具创建一工程名为:beegoorm,修改的文件为 beegoorm/main.go 和 beegoorm/models/models.go(仅2个文件) beegoorm/models/models.go package models import ( "github.com/astaxie/beego/orm" ) type User struct { Id int Name string Profile *Profile `orm:"rel(one)"`...阅读全文

博文 2015-07-01 03:00:00 hezhixiong

【软件周刊】要的就是速度,Angular 4.0.0 beta0 发布;JetBrains 带来全新 Go IDE — Gogland

要的就是速度,Angular 4.0.0 beta0 发布 由于想将核心包版本对齐,加上语义化版本控制,Angular 2 之后将迎来 Angular 4。更新内容: fix(编译器):修复 compiler_host 中的合并错误 common: add a titlecase pipe common: export NgLocaleLocalization compiler: add id property to i18nMessage compiler: digest methods return i18nMessage id if sets forms: add novalidate by default http: simplify URLSearchParams creation...阅读全文

博文 2016-12-17 13:00:03 局长

一探B站后台架构, 他山之石, 何以攻玉? -- 仅从一个一线Golang开发者的角度谈B站4.22代码

4月22日, B站部分后台源代码因为某愤怒的员工, 被上传至Github. 本文我们不讨论安全, 法律 (根据代码漏洞, 去恶意攻击或者获利是违法的! 我们工作时也要注意代码安全), 我仅从开发者的角度谈谈, 这份代码我们能学到什么? B站Golang生态建设, 代码规范, 工具建设, 技术栈选择, 对于Go在部门或公司的推广又有哪些值得借鉴? 首先必须得说, B站这份代码整体还是不错的, 不是说组件或者基础库多么的厉害, 而是从整体目录分布, 业务代码分布, API易用性, 业务代码风格, 工具的统一, 上手难度上来评价. 这里是一个小小的总结. 约329个Go服务, 历史约170人左右贡献过Go代码. 代码和目录规范性比较好, 代码生成工具建设比较好, 大家可以借鉴一下. 对于一个Gol...阅读全文

博文 2019-04-25 07:54:12 七月天_5092

Python、Java、Scala、Go Package对照表

格式转换类 分类 Python Java Scala Go Excel xlwt/xlrd, XlsxWriter POI - - PDF PyPDF2 Apache FOP - - CSV csvkit, tablib - - - XML解析 BeautifulSoup/bs4 - - - JSON - jackson json4s, spray-json - 数据处理和计算类 分类 Python Java Scala Go 二维数据分析 pandas - Saddle - 网络分析 networkx JUNG - - 矩阵计算 numpy - Algebird, Breeze blas, gocomplex, go-fn 科学计算 scipy SCaVis - - 符号计算 sympy ...阅读全文

博文 2015-04-10 19:00:00 Worldguy

如何实现支持数亿用户的长连消息系统 | Golang高并发案例

360消息系统介绍 360消息系统更确切的说是长连接push系统,目前服务于360内部多个产品,开发平台数千款app,也支持部分聊天业务场景,单通道多app复用,支持上行数据,提供接入方不同粒度的上行数据和用户状态回调服务。 目前整个系统按不同业务分成9个功能完整的集群,部署在多个idc上(每个集群覆盖不同的idc),实时在线数亿量级。通常情况下,pc,手机,甚至是智能硬件上的360产品的push消息,基本上是从我们系统发出的。 关于push系统对比与性能指标的讨论 很多同行比较关心go语言在实现push系统上的性能问题,单机性能究竟如何,能否和其他语言实现的类似系统做对比么?甚至问如果是创业,第三方云推送平台,推荐哪个? 其实各大厂都有类似的push系统,市场上也有类似功能的云服务。包括我...阅读全文

博文 2016-01-31 01:00:10 RandyLeonard

go-martini基础入门

Martini框架是使用Go语言作为开发语言的一个强力的快速构建模块化web应用与服务的开发框架。Martini是一个专门用来处理Web相关内容的框架,其并没有自带有关ORM或详细的分层内容。所以当我们使用Martini作为我们的开发框架时,我们还需要选取适合的ORM等其他包。昨天大象哥哥看了下,感觉还是蛮屌蛮简单的,不啰嗦上代码。 package main import ( "github.com/astaxie/beego/context" "github.com/go-martini/martini" "github.com/martini-contrib/render" "net/http" "fmt" ) //定义一个自己的中间件,这里将beego的context注入 func m...阅读全文

博文 2015-10-31 12:00:03 别人说我名字很长

Golang通过Thrift框架完美实现跨语言调用

每种语言都有自己最擅长的领域,Golang 最适合的领域就是服务器端程序。 做为服务器端程序,需要考虑性能同时也要考虑与各种语言之间方便的通讯。采用http协议简单,但性能不高。采用TCP通讯,则需要考虑封包、解包、粘包等等很多因素,而且想写个高效的TCP服务,也很难。 其实,对于此类需求,采用RPC(Remote Procedure Call Protocol)编程最靠谱。使用 RPC 编程被认为是在分布式环境中运行的客户机和服务器应用程序之间进行可靠通信的最强大、最高效的方法之一。 Golang内置了对RPC支持,但只能适用于go语言程序之间调用,且貌似序列化、反序列化性能不高。如果go语言能使用Thrift开发,那么就如虎添翼了。可惜,thrift虽然很早就包含了golang的代码,但...阅读全文

博文 2015-08-26 18:00:01 scut1135

go语言:log4go

go语言中日志框架log4go用法 [plain] view plaincopyprint? package main import ( l4g "github.com/alecthomas/log4go" ) func main() { l4g.AddFilter("stdout", l4g.DEBUG, l4g.NewConsoleLogWriter()) //输出到控制台,级别为DEBUG l4g.AddFilter("file", l4g.DEBUG, l4g.NewFileLogWriter("test.log", false)) //输出到文件,级别为DEBUG,文件名为test.log,每次追加该原文件 //l4g.LoadConfiguration("log.xml")//使...阅读全文

博文 2015-06-17 23:01:52 LvanNeo

2015年web开发的预测。。go语言

本文中,我们将一同看看当今 Web 开发的发展趋势,给大家分享我对 2015 年及未来的一些看法、观察和预测。我从 2000 年就开始做 Web 技术方面的工作,而近几年主要是做云架构解决方案。作为一名 Web 开发者,我曾在 .Net、Node.js 和 Go 技术栈上开发 Web 应用和 Web 服务。最近,我将 Web 技术和开发趋势作为整体研究了一遍,在这里分享一下我的想法和观察结果。首先,让我分享一些我所观察到的可用性和体系结构目前的趋势。可用性的趋势如今,用户体验变得比以往更重要,响应式网页设计(RWD)也成为了网站必备的特性。RWD 能让最终用户在不同尺寸的设备上访问网站,包括手机和平板浏览器。有了 RWD 取代移动网站,我们便无需为移动用户单独开发额外的网站。特别是当我们需要...阅读全文

博文 2015-03-08 04:00:02 蘑蘑茶

beego搭建api服务

beego介绍 beego是一个Golang实现的开源Go应用开发框架,他可以用来快速开发 API、Web 及后端服务等各种应用,是一个 RESTful的框架,主要设计灵感来源于tornado、sinatra和flask这三个框架,但是结合了Go本身的一些特性(interface、struct 嵌入等)而设计的一个框架。 Beego Framework: 一个使用 Go 的思维来帮助您构建并开发 Go 应用程序的开源框架 beego简介 beego安装, bee命令 安装beego #go get github.com/astaxie/beego 安装bee工具,bee工具是一个为了协助快速开发beego项目而创建的项目,可以通过bee快速创建项目、实现热编译、开发测试以及开发完之后打包发布...阅读全文

博文 2016-05-14 10:00:00 ldaniel

【Gin框架】为什么我压测Gin框架性能只能达到300qps就开始超时呢

大家一直都说Go性能很好,而Gin框架更是比较好的web服务框架。但是为什么我用http_load压测Gin,当300qps的时候,就开始出现大量超时。而且压测10min后就开始出现超时现象。 我的Gi操作就是当请求进来后,sleep 1毫秒,然后return ok(1毫秒为模拟服务响应时间,比如查数据库什么的),但是即使这样当压力到达300qps的时候,服务就超时了。。。 请大神们帮忙,是不是我使用的哪个地方有问题?至少Gin也要导到少说1千,多了1万的qps吧?为啥到了300就有问题了。。。 代码如下: package main import ( "time" "gopkg.in/gin-gonic/gin.v1" "net...阅读全文

主题 2017-05-02 03:36:55 qiran87

一个go lua binding完工

最近对go语言比较感兴趣,想试用go来做点东西,go做主框架,动态加载一些程序来执行。由于现在go语言不支持go模块的动态链接,所以需要选用一个脚本语言来补充,找了一下,感觉lua比较符合要求,虚拟机比较小,可以同时开多个执行多个lua脚本。于是就找了一下go对lua的binding,找到golua,但是已经好久没更新了,现在go1下编译都通不过,修改了一下通过来,结果发现不能注册go函数到lua中执行。。。 不得已,就想自己写一个,希望他能满足一下要求: 可以将go函数注册到lua中去,扩展lua的函数库 可以同时执行多个lua脚本 支持bool、int、float、string类型的相互转换,其他类型先不考虑 之后又添加: 从go中调用lua中的函数 其他类型都转的lua中的userda...阅读全文

博文 2014-10-04 19:26:05 偃鼠饮河

Golang 的Gin框架入门教学

学习Golang差不多有一个星期时间,开始自己做点小功能,练练手。 Gin 介绍 Gin 是一个 Golang 写的 web 框架,具有高性能的优点,,基于 httprouter,它提供了类似martini但更好性能(路由性能约快40倍)的API服务。官方地址:https://github.com/gin-gonic/gin 安装框架 配置好GOPATH,建议自己在GOPATH建个项目,这里我以aze.org作为项目目录。 $ go get github.com/gin-gonic/gin 安装mysql驱动 $ go get github.com/go-sql-driver/mysql 组织项目 经过上面的model和handler的分离,代码结构变得更加清晰,可是我们还是单文件。下一步将...阅读全文

博文 2018-08-29 06:36:06 阿泽Aze

golang 反射

自:http://golanghome.com/post/546 自己在用Go写Web框架时,遇到要从接口中返回对象信息的技术问题。网上关于Go中接口反射的资料较少,所以自己学习了一段时间,特将结果与大家分享。 代码约定 import ( "fmt" "reflect" ) type boy struct { Name string age int } type human interface { SayName() SayAge() } func (this *boy) SayName() { fmt.Println(this.Name) } func (this *boy) SayAge() { fmt.Println(this.age) } func main() { // 定义接口变...阅读全文

博文 2015-04-04 03:00:00 rojas

分布式RPC服务框架rpcx

rpcx是一个类似阿里巴巴 [Dubbo](https://www.oschina.net/p/dubbo) 和微博 [Motan](https://www.oschina.net/p/motan-weibo) 的分布式的RPC服务框架,基于Golang net/rpc实现。 [![吞吐率](https://static.oschina.net/uploads/img/201701/31092925_nmK2.png)](https://github.com/smallnest/rpcx/blob/master/_documents/throughput.png) [![超低的延迟Latency](https://static.oschina.net/uploads/img/201701...阅读全文

开源项目 2017-02-07 04:00:07 smallnest

hive,skynet以及go语言

2013-09-25 hive,skynet以及go语言 hive,skynet以及go语言 skynet到hive的演化 hive和go的比较 关于网游 hive,skynet以及go语言 这里的hive和skynet都是云风大神的开源项目。skynet是一个基于actor模型的开源并发框架。hive是skynet简化并去掉了一些“历史包袱”之后重新设计的框架。go是google开源的一门编程语言。 为什么把这些东西放到一块呢?因为我看了一下它们的代码,发现很多地方有惊人的相似之处,这些正是大牛们长时间积累沉淀下来的东西,非常有价值,所以这篇文章将它们拿到一起分析一下。 skynet到hive的演化 actor模型和[[][skynet]]的文章,最新的skynet代码我没有跟进。按云风的...阅读全文

博文 2015-03-17 10:25:36 zenlife

使用Go语言工作400天后的感受

我在2011年就听说了Go并学习了一段时间,坦白的说,那时候对Go是比较无感的,因为并没有看到Go特别亮眼的地方,可能和我使用C、Erlang、Java有关,这三种语言可以写高性能、高并发、高可用的服务;包含了面相过程、面向并发、面向对象的思想,我觉得我并不需要再学习Go,何况那个时候好像也没宣传的那么优秀。 一切都发生在418天前,因为工作的需要,我开始写Go了,本来预期是一段压抑、蛋疼的旅程(被迫使用其它语言的同学可能都会有此感受),结果收获了非一般的惊喜、非一般的效率、非一般的开发体验。 先用几个词来总结一下我的感受:简洁、标准、组合、创造力、生产力! 特别是生产力,由于Go优秀的标准库、完美的代码安全、全面的三方库、完善的测试机制、完善的标准管理工具,使用Go给我们小组带来了极大的生...阅读全文

博文 2016-03-28 15:54:45 erlib

Golang Web框架Web.go

Web.go 跟 web.py 类似,但使用的是 Go 编程语言实现的 Web 应用开发框架。Go发布没多久该框架就诞生了,差不多是最早的Go框架。目前已经有段时间没有更新了。不过,该框架代码不多,其源码可以读一读。 ##安装## `go get github.com/hoisie/web` ##创建一个 Hello World 应用## ``` package main import ( "github.com/hoisie/web" ) func hello(val string) string { return "hello " + val } func main() { web.Get("/(.*)"...阅读全文

开源项目 2014-10-29 05:45:53 hoisie

Teleport2.0 一个Golang TCP Socket的全新框架

Teleport beta2.0 实现了一个全新的Golang TCP Socket框架,它通用、高效、灵活!可被用于Peer-Peer对等通信、RPC、长连接网关、微服务、推送服务,游戏服务等领域。 teleport_server 1. 特性 服务器和客户端之间对等通信,两者API方法基本一致 底层通信数据包包含Header和Body两部分 支持单独定制Header和Body编码类型,例如JSON Protobuf Body支持gzip压缩 Header包含状态码及其描述文本 支持推,拉,回复等通信方式 支持插件机制,可以自定义认证、心跳、微服务注册中心、统计信息插件等。 无论服务器或客户端,均支持都优雅重启、优雅关闭 支持实现反向代理功能 日志信息详尽,支持打印输入、输出消息的详细信息(...阅读全文

博文 2017-08-27 09:05:14 HenryLee