开源与创业

本文是根据我在高可用架构群聚会上的演讲整理而成。从小一直是个讷于言的人,每次公开演讲都感觉会有紧张,不能完整的表达自己的想法,很羡慕演讲时能侃侃而谈的人。所以还是把自己的想法整理成文章表达出来。 个人在开源方面算是新手,16年初发布了一个开源项目,叫go-commons-pool,是一个golang的通用对象池,到现在快200个星。创业方面也算是新手,15年初开始作为技术合伙人创业做团队通讯协作工具。一年里做开发的同时兼职做点产品的工作,也做点运营的工作。感觉创业和开源二者的共通之处挺多,所以和...阅读全文

午夜咖啡 Jan 31, 2016 jolestar

1.Go环境配置

1.Go环境配置 1.1 Go 安装 1111 Go的三种安装方式 Go有多种安装方式,你可以选择自己喜欢的。这里我们介绍三种最常见的安装方式: Go源码安装:这是一种标准的软件安装方式。对于经常使用Unix类系统的用户,尤其对于开发者来说,从源码安装是最方便而熟悉的。Go标准包安装:Go提供了方便的安装包,支持Windows、Linux、Mac等系统。这种方式适合初学者,可根据自己的系统位数下载好相应的安装包,一路next就可以轻松安装了。第三方工具安装:目前有很多方便的第三方软件包工具,例如...阅读全文

CSDN博客 2013-05-12 17:20 longxiu628forev 等

Go 语言简介(上)— 语法

周末天气不好,只能宅在家里,于是就顺便看了一下Go语言,觉得比较有意思,所以写篇文章介绍一下。我想写一篇你可以在乘坐地铁或公交车上下班时就可以初步了解一门语言的文章。所以,下面的文章主要是以代码和注释为主。只需要你对C语言,Unix,Python有一点基础,我相信你会在30分钟左右读完并对Go语言有一些初步了解的。 Hello World 文件名 hello.go 1 2 3 4 5 6 7 package main //声明本文件的package名 import "fmt" //import语...阅读全文

CSDN博客 2012-11-06 13:41 ab198604

Golang binary包——byte数组如何转int?

在C语言笔试的时候,比较喜欢考这个东西,如何将一个char数组转成int类型。当年看过,不过早就忘记了。后来看到这种东西binary.BigEndian.Uint32(a),直接瞎了。后来去看文档,看了半天也没搞明白。 在这里直接说一下,源码。下面这个是uint8,也就是byte数组,大小为4,转换成int32的代码。 package main import "fmt" import "encoding/binary" func main() { var a []byte = []byte{0,...阅读全文

Golang开发Thrift接口

三个月没在公司,回来后发现公司内部已经用上了facebook开源的Apache Thrift。大概看了一下介绍,传统接口编写是使用json或者xml作为信息格式进行传输。一般Web Service里面,SOAP这种,使用的就是xml(不过我从来没用过。。);而轻量级网络服务REST,则用的是json作为传输媒介。json相较于xml,传输的内容变少了许多,传输更加便捷。这两种都是基于HTTP的传输方式。 而Apache Thrift,是更加轻量级的Web Service。本科做网络游戏的时候也接...阅读全文

Golang 接口实现

面向对象程序语言已经是非常普及了。再过去的十几年内,面向对象的代表Java语句一直稳坐编程语言前三名的宝座。面向对象开发的学习,是每一个程序员的必修课。 对于我来说,学完C++和Java之后,看了一堆各种特性,却发现花了不少时间,项目却依然没啥功能。。。由于面向对象的引入,使得编程语言一下子多了好多语法特性,致使开发效率低下。尤其是像我这种学渣,体现得尤为明显。 后来,大家意识到一个问题:编程主要是用来解决一个问题,面向过程最符合人类正常的思维,也是最快的用来解决问题的方式;然而,在工程层面,面...阅读全文

go语言编程在windows下开发环境配置(图文)

1.在Go中文论坛下载最新的Go for windows release 2010-05-04 2.将下载包解压在c盘下。 3.设置环境变量。 Code: set goroot=c:/go set goarch=386 set path=c:/go/bin set goos=windows 4.编写第一个go语言程序代码。 Code: package main import "fmt" func main(){ fmt.Printf("this is first my/n go program"...阅读全文

Windows搭建Sublime Text 3 + Go开发环境

1. 安装Sublime Text 3 Sublime Text 3(以下简称ST)的下载与安装我就不说啦,目前还是一个测试版,不过据说比ST2增加了好多新功能,下载地址: http://www.sublimetext.com/3 ST3的破解还是挺方便的(ST你不仁,79刀还是多少刀啊,就别怪我不义啦),推荐朽木博客的方法: http://www.xiumu.org/note/sublime-text-3.shtml 这里说注意一下破解时要注意的: 以下是运行的注册机: 注意椭圆部分,要先点这...阅读全文

CSDN博客 2013-08-26 15:52 cyxcw1

Go 环境搭建,LINUX/Windows

Go语言的hello world!代码: [java] view plaincopyprint? package main import "fmt" func main() { fmt.Println("Hello, 世界") } 接下来为大家带来,Go开发环境的安装。 首先是安装Go,这里有很详细的安装说明,http://code.google.com/p/golang-china/wiki/Install 或者http://golang.org/doc/install 下面我们在window...阅读全文

CSDN博客 2013-10-07 21:04 marshalchen

Golang 处理命令行启动参数

最近要做Apache Thrift相关的项目。大概看了一下,觉得不难。Thrift目前已经至此和Go语言了。照着官方提供的一个例子在学。周五搞了一上午,终于编译通过了。下午去读例子源码,发现一个从来没见过的包——flag。 不管是C开发还是Java,都接触过命令行开发。像大Java的main函数public static void main(String []args)直接参数里面就能读取到命令行启动参数。而Go语言的主函数是func main()果断啥也没,需要用这个包。 虽然Go不像大Jav...阅读全文

Go 语言简单实现HashSet

公司有个需求,就是能够对列表去重。本屌原本想直接用for循环实现,后来去查了查Java的实现方式,大开眼界。 Set,是指数学里的集合。集合当中不能有重复的元素。判断是否有重复,可以使用哈希的方法。Java容器当中有基于哈希实现的HashSet。把元素都放入HashSet当中,如果有重复,则会插入失败。这样就能判断出来是否重复了。 而Golang并没有这种高级的容器。只是找了一个大神实现的,稍微改了一下,能够支持字符串检测。 http://play.golang.org/p/_FvECoFvhq...阅读全文

Go 语言中的方法,接口和嵌入类型

本文为转载技术翻译,原翻译地址:http://se77en.cc/2014/05/05/methods-interfaces-and-embedded-types-in-golang/ 原文地址:http://www.goinggo.net/2014/05/methods-interfaces-and-embedded-types.html 概述 在 Go 语言中,如果一个结构体和一个嵌入字段同时实现了相同的接口会发生什么呢?我们猜一下,可能有两个问题: 编译器会因为我们同时有两个接口实现而报错...阅读全文

CSDN博客 2014-05-16 07:38 kai_ding

Golang下通过syscall调用win32的dll实现mifare card读写

很多同学比如我虽然很喜欢golang,但是还是需要调用很多遗留项目或者其他优秀的开源项目,这时怎么办呢?我们想到的方法是用package里的syscall结合cgo 注意此处有坑: 在我调试时显示not enough arguments in call to syscall.Syscall [ `go run dms.go` | done: 260.3744ms ] # command-line-arguments .\dms.go:72: not enough arguments in cal...阅读全文

CSDN博客 2013-10-08 15:47 songbohr

Golang

Golang之继承模拟 2012-09-13 23:07 by 轩脉刃, 1010 visits, 网摘, 收藏, 编辑 摘要:问题由一个需求引起: web的controller,希望创建一个基类,然后在子类的controller中定义action方法,基类有一个run函数能根据字符串自动找到子类的action方法。 如何解决呢? -- 用继承 示例分析继承 首先这个需求是很普遍的,由于脑中有继承概念,所以想当然地以为这个很容易实现: package mainimport( "reflect")...阅读全文

CSDN博客 2012-10-22 16:37 ilvu999

Go语言面向对象编程

前段时间接触Go语言,感觉有很多新的理念,今天先转载一篇文章,以后有时间再慢慢学习。 本文转载自图灵社区http://www.ituring.com.cn/article/details/1339 作者许式伟 面向对象编程 Go 语言的面向对象编程(OOP)非常简洁而优雅。说它简洁,简介之处在于,它没有了OOP中很多概念,比如:继承、虚函数、构造函数和析构函数、隐藏的this指针等等。说它优雅,是它的面向对象(OOP)是语言类型系统(type system)中的天然的一部分。整个类型系统通过接口...阅读全文

CSDN博客 2014-01-26 09:31 brave2211

Golang分布式设计模式之-----分层设计

提到分布式系统,我们会想到很多机器,分别部署着各自的服务,然后整体组成一个分布式系统。在这类系统中,分布式系统与常规的集中式系统存在着以下三个区别。(来自分布式算法导论) 1、缺乏全局状态知识 2、缺乏全局时间帧 3、非确定性 这三大特点也成为分布式系统设计的难点。也正是如此,分布式系统的设计比常规的集中式系统要难的多。为了区别,我们称这种分布式系统为,群体分布式。这种犹如社会群体。 golang语言天生具有分布式的特点,其主要是基于协程与chan的概念。如果对golang不了解的人可以简单的去...阅读全文

CSDN博客 2014-08-15 10:42 screscent

Go语言 nil和interface详解

golang的nil在概念上和其它语言的null、None、nil、NULL一样,都指代零值或空值。nil是预先说明的标识符,也即通常意义上的关键字。在golang中,nil只能赋值给指针、channel、func、interface、map或slice类型的变量。如果未遵循这个规则,则会引发panic。对此官方有明确的说明:http://pkg.golang.org/pkg/builtin/#Type golang中的interface类似于java的interface、PHP的interfa...阅读全文

CSDN博客 2014-04-20 09:48 abv123456789

数据库访问的缓存与最大连接数

今天查看我写的错误日志,里面报出了Too many connections这个错误。没见过啊,果断去问我大哥,他说是连接数的问题。我又去看之前已经上线的我的代码,才想起来数据库连接需要设置最大连接数的。当连接数超过范围之后,就是报这个错误。 我用的是xorm作为ORM工具,直接使用engine.SetMaxConns(dbMaxConns)就能设置最大连接数。 后来,又优化了一下缓存。一般ORM还是支持缓存机制的。如果缓存命中,就不会去数据库查找数据了,而是会直接返回。添加缓存需要增加缓存时间和...阅读全文

数据库访问时区问题

今天是第二次跳进这个坑里面。 我要做的接口有一个需求,就是根据设定好的开始时间和结束时间过滤掉未开始和过期的内容。我用xorm作为ORM引擎进行数据库开发。直接一条解决了问题。当时还大概测了一下,没有任何问题。 Where("displayorder<>0 AND effectivetime< ? AND expirationtime> ?", time.Now(), time.Now()) 今天iOS开发要调用我的接口开发,因为我写的测试数据不完整,他叫测试配了几条测试数据。测试妹子很专业的,...阅读全文