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

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

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

博文 2016-11-04 20:00 KeKeQiaoKeLi

go web应用的部署和热更新

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

Go 语言 Web 框架 ThinkGo

ThinkGo 是一款 Go 语言编写的 web 快速开发框架。它基于开源框架 Gin 进行二次开发,旨在实现一种类 ThinkPHP 的高可用、高效率的 web 框架。在此感谢 [Gin](https://github.com/gin-gonic/gin) 和 [httprouter](https://github.com/julienschmidt/httprouter)。它最显著的特点是模块、控制器、操作三段式的标准 MVC 架构,且模块与插件的目录结构完全一致,令开发变得非常简单灵活。 [![ThinkGo Admin](http://static.oschina.net/uploads/img/201601/16202035_sq8e.jpg)](https://github.c...阅读全文

开源项目 2016-01-16 00:00:00 henrylee2cn

GIN+GORILLA=A GOLANG WEBSOCKET SERVER

鉴于聊天已然成为大部分app的基础功能,而大部分app用户基数有没有辣么大,常用的聊天server架构如xmpp或者消息队列实现之类的用起来还挺麻烦的,有比较难跟网页端做交互,加之H5标准落地,所以websocket已然成为一个轻巧可用性高的聊天server实现方法; websocket的server常见的是用nodejs或者java的netty框架实现,netty相对重一点,direct buffer的内存泄露调起来比较麻烦,试了一下go,轻巧,稳定性不错,性能不错,所以用go实现了一下; websocket的协议标准和基本概念网上一搜一片,这里不赘述; http server用gin来做,websocket的handler则用gorilla,由于不重复造轮子,所以整个搭建的过程很快; i...阅读全文

博文 2015-12-16 15:54 bader

golang--gin获取post里body的参数

如题,post发送数据有几种形式,form和流是最常用的。特别是在程序里使用httpclients,一般都算通过流发送。在php里,是通过php://input来获取的。在gin中,可以通过c.Request.Body.Read(buf)。具体代码如下: package main import ( "fmt" "net/http" "github.com/gin-gonic/gin" ) func main() { router := gin.Default() router.POST("/events", events) router.Run(":5000") } func events(c *gin.Context) { buf := make([]byte, 1024) n, _ :=...阅读全文

博文 2016-08-11 15:07 Manrener

Go 的 WebSocket 框架 Melody

Melody 是一个 Go 语言的微型 WebSocket 框架,基于 [github.com/gorilla/websocket](https://github.com/gorilla/websocket) 开发,主要特性: * 接口简单易用,类似 net/http 或者 [Gin](http://www.oschina.net/p/gin-web-framework) * 提供给所有广播以及给选择连接会话广播的简单途径 * 消息缓冲对并发写是安全的 * 可自动处理 ping/pong 和会话超时 一个简单的实例: [![Chat demo](http://static.oschina.net/uploads/img/201505/25075129_v...阅读全文

开源项目 2015-05-25 00:00:00 olahol

golang标准库的学习

1.内存分配 new,make(slice,map,channel) 一个返回指针,一个返回类型值 ---------并发 1.使用channel和goroutine开发并行程序的能力。什么是goroutine? 具体统称为线程,进程,协程;分配和释放在堆空间上;仅比分配栈空间多一点消耗。 -----------goroutine func ready(w string, t int) { time.Sleep(time.Duration(t) * time.Second) fmt.Println(w, "is ready!") } func main() { //两个线程和主线程是同时运行的,若主线程不等待,则程序会直接退出 //go关键字开始一个goroutine go ready("o...阅读全文

博文 2015-07-19 18:31 ice_201507

mac系统下搭建go语言环境

1,首先查看是否安装go,或者安装版本 yishiyaonie:GO liuhanlin$ go version go version go1.5.1 darwin/amd64 记住版本不能过低,比如1.2,在以后的编译项目过程中可能会带来很多很多麻烦。切记。 2,配置go的开发环境 首先要确定你的开发目录,也就是go项目的代码存放位置 mkdir -p /Users/liuhanlin/GO 其次需要vi ~/.bash_profile ,有就直接打开,没有就创建一个新的。 export GOPATH=/Users/liuhanlin/GO export GOBIN=$GOPATH/bin export PATH=$PATH:$GOBIN 加入如下环境变量控制,最后保存 source ~/...阅读全文

博文 2016-05-29 15:48 guoer9973

Golang 套件管理工具 Glide

# 原文來自: [Golang 套件管理工具 Glide](https://blog.wu-boy.com/2016/05/package-management-for-golang-glide/) 套件版本管理已經是各大語言不可或缺的工具,像是 [Node.js][1] 有 [npm][2],[PHP][3] 有 [Composer][4],[Ruby][5] 有 [RVM][6] 等...,都已經發展很成熟了,但是在 [Golang][7] 語言呢,在 Go 1.5 以後的版本,可以透過 `GO15VENDOREXPERIMENT` 或 [Glide](https://glide.sh/) 來管理套件版本,在 Go 官方網站也有整理一份 [Wiki](https://github....阅读全文

【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 11:36:55 qiran87

招聘Golang开发工程师

职位诱惑: 高性能,可扩展,快乐,牛团队 职位描述: 工作职责: 1. 实现互联网SaaS平台。 2. 独立设计或辅助设计平台级系统的架构。 基本任职要求: 1. 计算机或相关专业本科及以上学历。 2. 三年以上的互联网应用系统开发经验,Go开发至少1年以上经验。 3.熟悉Web应用系统平台开发,对HTTP,TCP/IP协议有深入理解 ,熟悉gin,beego等web框架。 4.具有高负载、高并发开发设计经验 5.熟练使用MySQL/MongoDB/Redis等数据库编程以及HDFS文件系统。 6. 基础扎实,熟悉常用数据结构和算法,熟悉主流分布式系统设计概念和算法。 7、最重要的是有责任心...阅读全文

APIGin_API_Framework

欢迎使用GO Gin API Framework @(示例笔记本)[马克飞象|帮助|Markdown] GIN API Framework是一款专为Go Gin 框架打造的API Framework,通过精心的设计与技术实现,集成了大部分稳定开发组件,memcache consistance Hash,redis,nsq,api doc ,mysql 等。特点概述: 功能丰富 :支持大部分服务器组件,支持API Doc; 得心应手 :简单的实例,非常容易上手; 深度整合 :深度整合memcache,redis,mysql,beego ,gin 框架。 性能优先 :为啥不直接使用beego那,因为gin是目前httprouter性能最高,占用资源最少的框架,而beego...阅读全文

开源项目 2016-12-15 11:49:19

PHPer学习Golang

Go Web Gin 框架学习 : http://www.imop.us/v/MjA2NQ==.html Go学习编译自己得应用包【学习】: http://www.imop.us/v/MjA2Ng==.html Go Web 绑定Nginx【学习】: http://www.imop.us/v/MjA2Nw==.html 学习Go 基础【学习】: http://www.imop.us/v/MjA2OA==.html 学习Go 基础二【学习】 http://www.imop.us/v/MjA2OQ==.html 学习Go 基础三【学习】http://www.imop.us/v/MjA3MA==.html 学习Go 基础四【学习】http://www...阅读全文

golang写服务端程序,作为文件上传与下载的服务器。配合HTML5以网页作为用户页面

golang写服务端程序,作为文件上传与下载的服务器。配合HTML5以网页作为用户页面 1.整个工程结构如图: 其中:mainup.go是监听本地等待用户接入实现上传的服务端程序,mainup.exe是相应的可执行文件。 maindown.go是监听本地等待开发者接入实现查看所有上传的文件并且下载删除的服务端程序。 indexup.html是呈献给用户上传文件的网页,indexdown.html是查看所有上传的文件,进行删除下载的服务端程序。 static文件夹里面包含了引用的库 files文件夹存放上传的文档。 2.源码 mainup.go和maindown.go文件都引用了gin包,我这里已经从github上下载到本地了。下载源码后用户记得自己设置下载gin包。 github一直传不上,...阅读全文

博文 2016-06-26 18:42 su_sai

基于 Gin 的 Go 前端组件化 web 框架

基于 Gin 的 Go (风格)轻量高效的前端组件化 web 框架,这是一项正在完善的工作 Ego 是一个用 Go 编写的全栈 Web 框架,轻量级和高效的前端组件解决方案 前端编译执行,不影响后端效率 项目地址: https://github.com/go-ego/ego 安装: ``` go get -u github.com/go-ego/ego ``` 例子: https://github.com/go-ego/ego/tree/master/examples/ego 路由 ```go package main import ( "github.com/go-ego/ego" ) func main() { ...阅读全文

主题 2017-03-21 23:17:41 vway

golang写服务端程序,作为文件上传与下载的服务器。配合HTML5以网页作为用户页面

golang写服务端程序,作为文件上传与下载的服务器。配合HTML5以网页作为用户页面 1.整个工程结构如图: 其中:mainup.go是监听本地等待用户接入实现上传的服务端程序,mainup.exe是相应的可执行文件。 maindown.go是监听本地等待开发者接入实现查看所有上传的文件并且下载删除的服务端程序。 indexup.html是呈献给用户上传文件的网页,indexdown.html是查看所有上传的文件,进行删除下载的服务端程序。 static文件夹里面包含了引用的库 files文件夹存放上传的文档。 2.源码 mainup.go和maindown.go文件都引用了gin包,我这里已经从github上下载到本地了。下载源码后用户记得自己设置下载gin包。 github一直传不上,...阅读全文

博文 2016-06-26 18:42 su_sai

上海徐汇区互联网公司招聘Golang开发工程师啦

Hi 大家好,我是 Eva,我们公司来招聘Golang开发工程师啦,公司base在上海徐汇,工作内容和要求如下,有兴趣的小伙伴们欢迎发送简历至我的邮箱:eva.wang@trustasia.com,谢谢。 Golang 开发工程师 职位诱惑 : 弹性工作制、不加班、rMBP开发、技术大 牛多、职能部门妹子多 职责描述: 后端服务程序开发; 使用Golang进行PKI、SSL、数字签名方面的研发; 使用高并发进行网络漏洞检测、扫描、抓取分析; 任职要求: 熟练使用Golang进行Web应用开发,会使用相关框架(beego、gin); 精通一门以上编程语言(C/C++,Go,Java,Python等); 熟悉数据结构,有并发编程经验更佳; 熟悉数据库的使用(...阅读全文

Gin实战:Gin+Mysql简单的Restful风格的API

我们已经了解了Golang的Gin框架。对于Webservice服务,restful风格几乎一统天下。Gin也天然的支持restful。下面就使用gin写一个简单的服务,麻雀虽小,五脏俱全。我们先以一个单文件开始,然后再逐步分解模块成包,组织代码。 It works 使用Gin的前提是安装,我们需要安装gin和mysql的驱动,具体的安装方式就不在赘述。可以参考Golang 微框架Gin简介和Golang持久化。 创建一个文件夹用来为项目,新建一个文件main.go: ☁ newland tree . └── main.go main.go package main import ( "gopkg.in/gin-gonic/gin.v1" "net/http" ) func main() {...阅读全文

博文 2017.03.22 21:53 人世间

Golang 微框架 Gin 简介

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

博文 2017.03.14 20:52* 人世间

Golang Web服务升级部署方案

1. 新旧版本同时运行,监听不同的端口,通过调整转发规则将新请求转发到新版本端口,等待一段时间后,停止旧版本进程。 优点:简单。 缺点:每次升级都要调整转发规则,重启转发机,以载入新配置。服务将短暂中断。 2. 借助第三方工具(monit、supervisord、upstart、daemontools等)实现daemon守护进程. 优点:无需调整转发规则 缺点:每个Web应用都要配合启动一个独立的守护进程,占用系统资源。服务将短暂中断。 3. 借助 https://github.com/stretchr/graceful 包实现优雅升级 优点:无需调整转发规则 缺点:服务将短暂中断。 4. 借助 https://github.com/codegang...阅读全文

golang写服务端程序,作为文件上传与下载的服务器。配合HTML5以网页作为用户页面

golang写服务端程序,作为文件上传与下载的服务器。配合HTML5以网页作为用户页面 1.整个工程结构如图: 其中:mainup.go是监听本地等待用户接入实现上传的服务端程序,mainup.exe是相应的可执行文件。 maindown.go是监听本地等待开发者接入实现查看所有上传的文件并且下载删除的服务端程序。 indexup.html是呈献给用户上传文件的网页,indexdown.html是查看所有上传的文件,进行删除下载的服务端程序。 static文件夹里面包含了引用的库 files文件夹存放上传的文档。 2.源码 mainup.go和maindown.go文件都引用了gin包,我这里已经从github上下载到本地了。下载源码后用户记得自己设置下载gin包。 github一直传不上,...阅读全文

博文 2016-06-26 18:42 su_sai

GIN_API_Framework是一款专为Go Gin 框架打造的API Framework

GIN API Framework是一款专为Go Gin 框架打造的API Framework,通过精心的设计与技术实现,集成了大部分稳定开发组件,memcache consistance Hash,redis,nsq,api doc ,mysql 等。特点概述: 功能丰富 :支持大部分服务器组件,支持API Doc; 得心应手 :简单的实例,非常容易上手; 深度整合 :深度整合memcache,redis,mysql,beego ,gin 框架。 性能优先 :为啥不直接使用beego那,因为gin是目前httprouter性能最高,占用资源最少的框架,而beego orm是目前最接近django的框架,so...。 项目地址: https://github.com/...阅读全文

Revel or Beego?

<p>Hi, i&#39;m new in go and i&#39;ll start a new web project (it&#39;s a personal initiative) and i want use go lang. I would use a go framework to build a rest API layer. Do you used revel or beego? which one do you think that is better? Any recommendation? My biggest concern is the life time and maintenance of the chosen frame...阅读全文

golang 热更新技巧

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

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

请教各位,import中加入api是什么意思?

今天看到一段代码,不太明白,百度也没找到答案,所以只能来请教各位了: 代码如下: ```go import ( "fmt" "net/http" "github.com/gin-gonic/gin" "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/client_golang/prometheus/promhttp" api "github.com/appleboy/gin-status-api.v1" ) ``` 最后一行的api "github.com/appleboy/gin-status-api.v1",,,前面的api是什么意思呢? 谢谢...阅读全文

关于gin框架一段代码的疑惑

刚接触golang和gin框架,看到一段下面的代码表示很疑惑,golang语言的语法是不是太随便了? ![gin.jpg](http://studygolang.qiniudn.com/161219/a7dbbfb90b3a537f93c9495b29c707fe.jpg) 定义struct的成员(RouterGroup)类型都不写,还是说默认是interface{}?,但是后面又直接调用RouterGroup.engine成员,难道不要类型转换吗?求解惑! ![gin2.jpg](http://studygolang.qiniudn.com/161219/e9391d4fd61b95ddd7f981e5dcb890bd.jpg...阅读全文

gin框架,关于加载react编写的html问题,无法正常显示

package main import ( "log" "net/http" "github.com/gin-gonic/gin" ) func main() { //注册一个 默认的路由器 router := gin.Default() //加载html文件 // router.LoadHTMLGlob("") router.LoadHTMLFiles("/Users/hopkings/www/Go/src/TodoList/htmltmpl/todolist.html") router.GET("/index", func(c *gin.Context) { // c.HTML(http.StatusOK, "todolist....阅读全文

go资源

数据库操作库 https://github.com/jmoiron/sqlx https://github.com/go-xorm/xorm https://github.com/xormplus/xorm https://github.com/jinzhu/gorm RPC https://github.com/smallnest/rpcx https://github.com/grpc/grpc-go https://github.com/hprose/hprose-go https://github.com/micro/go-micro GUI https://github.com/andlabs/ui https://github.com/visualfc/goqt https://...阅读全文

博文 2017-02-13 11:00:28 老查

golang 通过gin框架获取未知的参数

本的gin文档中(https://github.com/gin-gonic/gin)已经封装了很多可用的获取用户指定的参数,而在某些特定情况下我们需要获取用户传递的所有参数,则需要采用以下的方式来进行: func GetArgs(c *gin.Context){ … if c.Request.Form == nil { c.Request.ParseMultipartForm(32 << 20) } for k, v := range c.Request.Form { fmt.Println(k, v) } //回复 … } $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).tex...阅读全文

博文 2016-09-02 15:46 pingD

写在学习golang一个月后

遇到的问题 连接池。由于PHP没有连接池,当高并发时就会有大量的数据库连接直接冲击到MySQL上,最终导致数据库挂掉。虽然Swoole有连接池,但是Swoole只是PHP的一个扩展,之前使用Swoole过程中就踩过很多的坑。经过我们的讨论还是觉得使用Golang更加可控一些。 框架的选择 在PHP中一直用的是Yaf,所以在Go中自然而言就选择了Gin。因为我们一直以来的原则是:尽量接近底层代码。 封装过于完善的框架不利于对整个系统的掌控及理解。我不需要你告诉我这个目录是干嘛的,这个配置怎么写,这个函数怎么用等等。 Gin是一个轻路由框架,很符合我们的需求。为了更好地开发,我们也做了几个中间件。 中间件——input 每个接口都需要获取GET或POST的参数,但是gin自带的方法只能返回str...阅读全文

博文 2017.04.23 22:16* 闫大伯