随笔分类 - [86]golang
-
Go Revel - Parameters(参数绑定)
摘要:Go Revel - Parameters(参数绑定)参数绑定Revel框架会尽可能的将提交参数转换为期望的Go类型。这个从一个字符串提交参数转换为另一个类型被称为数据绑定。参数所有的请求参数被存放在一个Params中,他包括:URL路径参数URL查询参数表单值(或Multipart)文件上传这是Params的定义:type Params struct { url.Values Files map[string][]*multipart.FileHeader}嵌入的url.Values提供了对简单值的访问,但开发者会发现非字符的值使用revel的数据绑定机制也非常容易。Action... 阅读全文
-
go实现排序的链表
摘要:go实现排序的链表Posted on2013-08-14 23:25mac的学习笔记阅读(224) 评论(0)编辑收藏链表的数据结构比较线性数组,优点是 可以方便的对任意的位置进行插入和删除。这一特性使得它很适合于应用在排序等场景下,由于golang目前类库还不是很完善,在java中可以很简单的使用api提供的支持完成对list或者map的排序,在使用go时就没有那么幸运了,可能需要自己去实现。下面的例子就是使用go package 中的LinkedList实现的排序的链表。有几个功能特性:1.支持固定的长度2.可自定义排序的规则3.组合LinkedList功能?packagecodeforf 阅读全文
-
Go学习笔记 - 使用jsonrpc进行远程访问
摘要:Go学习笔记 - 使用jsonrpc进行远程访问JSON-RPCJSON-RPC是一个轻量级的远程调用协议,简单易用。请求数据体:{ "method": "getName", "params": ["1"], "id": 1}method: 远端的方法名params: 远程方法接收的参数列表id: 本次请求的标识码,远程返回时数据的标识码应与本次请求的标识码相同返回数据体:{ "result": {"id": 1, "name": &q 阅读全文
-
revel框架教程之权限控制
摘要:Go语言实战 - revel框架教程之权限控制一个站点上面最基本都会有三种用户角色,未登录用户、已登录用户和管理员。这一次我们就来看看在revel框架下如何进行权限控制。因为revel是MVC结构的,每一个url其实都会映射到一个具体的Controller.Action上面,所以权限控制落到实处就是对Action的访问进行控制。那么思路是如下:1. 有一个方法能够判定当前是什么角色。2. 有一地方定义了每一个Action的访问权限要求。3. 有一个方法能够在调用所有Action之前被调用,而且能够判定是否还要继续调用Action。我们一项一项来解决。存储当前用户的角色信息先定义一个角色类型如下 阅读全文
-
Go语言Web框架gwk介绍4
摘要:Go语言Web框架gwk介绍 (四)事件gwk支持事件系统,但并没有硬编码有哪些事件,而是采用了比较松散的定义方式。订阅事件有两种方式: 调用On函数或者OnFunc函数func On(moudle, name string, handler Subscriber) func OnFunc(moudle, name string, handler func(*EventContext))参数moudle是指订阅哪一个模块触发的事件,参数name是指订阅事件的名字,参数handler是处理事件的对象实例,是Subscriber类型的对象,Subscriber接口定义如下:type Subscri 阅读全文
-
Go语言Web框架gwk介绍 3
摘要:Go语言Web框架gwk介绍 (三)上一篇忘了ChanResultChanResult可以用来模拟BigPipe,定义如下type ChanResult struct { Wait sync.WaitGroup Chan chan string ContentType string Start []byte End []byte Timeout time.Duration}ChanResult会先输出Start,然后读取Chan中的字符串输出到客户端,最后输出End。还忘了Controller的... 阅读全文
-
Go语言Web框架gwk介绍2
摘要:Go语言Web框架gwk介绍 (二)HttpResult凡是实现了HttpResult接口的对象,都可以作为gwk返回Web客户端的内容。HttpResult接口定义非常简单,只有一个方法:type HttpResult interface { Execute(ctx *HttpContext) error}func Execute(ctx *HttpContext) error 方法定义了应该怎么样将数据返回客户端,*HttpContext 是当前http请求的上下文对象,后文会详细介绍。gwk内置了支持几种常用的HttpResult。ContentResulttype Content... 阅读全文
-
Go语言Web框架gwk介绍 1
摘要:Go语言Web框架gwk介绍 (一)今天看到Golang排名到前30名了,看来关注的人越来越多了,接下来几天详细介绍Golang一个web开发框架GWK。现在博客园支持markdown格式发布文章么?后台的编辑器不太好用嘛。GWK简介gwk(GO Web Server Kit)是GO语言的Web Server开发框架,简单易用,扩展性好,而且兼容Go App Engine。安装gwk只支持GO 1.1+版本,安装GO 1.1后,运行下面的命令即可。go get github.com/sdming/wkgwk依赖kiss和mcache两个package,如果没有自动安装成功的话,可以单独运行下面 阅读全文
-
关于Java、Python、Go编程思想的不同
摘要:Go学习笔记 - 关于Java、Python、Go编程思想的不同看了两周七牛团队翻译的《Go语言程序设计》,基本上领略到了Go语言的魅力。学习一个语言,语法什么的任何人都是很容易学会,难就难在充分领略到这门编程语言的思想。面向对象喂!屌丝码农该找个对象了。除去Java Python Go这三种语言底层以及语法的不同,这里以个人的理解只说说其面向对象方面的思想。 一个简单的示例:描述人,李雷,韩梅梅,他俩都是好学生。将用javapythongo这三种语言分别简单的描述。Java 思想人,是抽象的概念,可以洗衣做饭的灵长目物种,没法特指一样具体的东西,但它也有一些如性别、撒尿这类的属性和功能。/* 阅读全文
-
创业进行时之用户注册
摘要:Go语言实战 - 创业进行时之用户注册用户注册、登录和注销是任何一个网站都必然会有的功能,可以说,这是重新造轮子做多的领域,每个做网站的人应该都做过很多遍。见微知著,从这么一个小功能其实就可以看到所使用的web框架中的大部分东西。今天就让我们用这个基本模块来看看revel吧。先整理一下我们选用的技术框架和组件:web框架:revel数据库:mongodb数据库driver:mgo工欲善其事,必先利其器,这里着重推荐一个mongodb的GUI客户端 -mongovue,可以说,如果没有这个工具,在开发的过程中我们会痛苦许多许多。这里假设你已经有了对Go语言最基本的知识,已经配置好GOROOT和G 阅读全文
-
Go - Revel框架介绍
摘要:Go - Revel框架介绍https://github.com/robfig/revelhttp://robfig.github.io/revel/web框架:revel数据库:mongodb数据库driver:mgo编辑器:SublimeText2 + GoSublime(特别提一点,GoSublime的9o用起来真方便) 阅读全文
-
Node.js与Golang使用感受与小结1
摘要:Node.js与Golang使用感受与小结【一】Node.js与Golang使用感受与小结目录一、互联网的基石TCP/IP协议二、HTTP服务器编写与编程语言无关三、构建HTTP服务器需要掌握的知识点四、HTTP协议基础五、Node.js简介六、是前端选择,还是后端的福音?七、Node.js与传统php-fpm模式之间的对比八、安装Node.js九、让浏览器读懂你的心--Content-Type十、向浏览器发送文件十一、Node.js异步流程控制(序列模式、并发模式、有限并发模式)十二、静态资源文件的简单优化十三、现在还需少些什么?十四、Golang简介十五、为什么要用Golang?十六、安装 阅读全文
-
golang微信公众平台之人脸识别
摘要:golang微信公众平台之人脸识别好吧,其实整个都是建立在face++的基础上的,没有任何技术含量,我只是个勤劳的搬运工。微信公众平台,怎么说呢,还是传统的一问一答的形式,你发个信息过来,我收到了处理下,再给你回馈一条信息,就是这么简单。简单的你来我往先说信息互传的问题,微信公众平台是post过来一个xml,服务器端打包一个xml发回去。从最简单的,直接把用户信息返回去搞起吧。文本消息 <xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA 阅读全文
-
Golang项目目录结构组织
摘要:Golang项目目录结构组织忆往昔:从接触golang到现在满打满算两周时间,总的来说,语法够简单,不过现在可以看、可以参照的资料数量太少了。还记得我刚开始写的第一个有点用的程序,1000多行代码吧,完全挤在一个文件里,我不知道如果把这些内容分拆到不同的文件中去,该怎样编译,网上搜了一圈,都寥寥数语,没有成体系的讲解。可能玩golang的都是大牛吧,这些东西都水到渠成,认为没有必要写出来。后来看许式伟的《go语言编程》里提到了一点工程管理的信息,这才知道怎么去拆分,怎样编译。想来,当初的代码是这样的:01packagemain0203import(04 ...05)0607func...{08 阅读全文
-
go语言中几个有趣的特性以及对go的看法
摘要:go语言中几个有趣的特性以及对go的看法1.多值返回在C/C++里面如果需要返回多值,一般是在函数传入指针或者引用,比如fun(int *a,int *b,int *c),但在go里面,如果需要返回多值,只需要把函数写成这样1 func test_func()(int,int,int){2 a := 1;3 b := 2;4 c := 3;5 6 return a,b,c;7 }最后函数会依次返回a,b,c这个其实在lua中早就有了,所以实际上在go里面也算不上什么新的东西,go里面还有一个返回值命名的特性 func read_file()(read_count... 阅读全文
-
freetype-go学习
摘要:freetype-go学习freetype-go的源码在这里https://code.google.com/p/freetype-go/它的作用是生成带文字的png图片首先解决的几个概念:什么是FreeType?FreeType是一个可移植的,高效的字体引擎。字体在电脑上的显示有两种方式:点阵和矢量。对于一个字,点阵字体保存的是每个点的渲染信息。这个方式的劣势在于保存的数据量非常大,并且对放大缩小等操作支持不好。因此出现了矢量字体。对于一个字,矢量字体保存的是字的绘制公式。这个绘制公式包括了字体轮廓(outline)和字体精调(hint)。字体轮廓使用贝塞尔曲线来绘制出字的外部线条。在大分辨率 阅读全文
-
golang--gorilla/context,golang之单例模式
摘要:golang--gorilla/context,golang之单例模式gorilla是用golang写的web工具箱,里面提供了一系列的工具。在用golang开发web中,搭配gorilla可以加快整个开发的进程。gorilla的官网在这里,代码托管在github,这里要看的是gorilla/context。在context文件夹里面,有个context.go文件,里面就是context包主要的代码。在context.go的开始部分,声明了几个全局变量,var (mutex sync.Mutexdata = make(map[*http.Request]map[interface{}]inte 阅读全文
-
win7下安装32位GoSublime Package
摘要:win7下安装32位GoSublime Package1 安装sublime Text 21) 下载地址:http://www.sublimetext.com/2 本文安装的是32位的Sublime Text 2.0.1 Setup.exe2) 默认安装即可3) 破解(sublime本身是免费软件不破解也能用,破解方法摘自网络)十六进制编辑器ultraedit和WinHex都可以,我用的ultraedit,这里以WinHex为例。sublime_text.exe默认位置C:\Program Files (x86)\Sublime Text 2\sublime_text.exe a.将subli 阅读全文
-
GoLang-代码规范
摘要:GoLang-代码规范开始一项新语言前需要先了解该语言的语法(如果你有其他语言的编程知识的话),开始学习前,我们一起了了解下Go的格式。 如果大家都统一编码风格,那么在维护他人代码时就能带来便利。同时我们在提交代码前执行一次fmt命令,以便提交统一风格的代码。 注释Go支持C语言风格的“//”块注释,也支持C++风格的行注释,同时可使用/**/进行包的 注释.我们看string包的源代码,使用//注释了包,方法以及行。我们需要养成好的习惯,尽量去多写些注释,这样不但有利于自己以后的回顾,已给他人阅读你的代码提供了方便,当然Go下的源代码使用Go命令能够生成文档,而文档的描述内容源自注释,... 阅读全文
-
go windows 32位环境搭建
摘要:go windows 32位环境搭建网上讲go语言编译环境搭建的文章不少了,搭建环境本身也相对简单,本文主要是提供一个可下载的地址,因为刚开始我找了好几个地址都没能下载到想要的版本,这个地址是刚试过能访问的:http://code.google.com/p/go/downloads/listDownloads页面有下面这些go语言开发包,这里我们选择下载go1.0.3.windows-386.zip:go1.0.3.darwin-386-signed.pkggo1.0.3.darwin-386.pkggo1.0.3.darwin-386.tar.gzgo1.0.3.darwin-amd64-s 阅读全文