我为什么喜欢Go语言

来源:http://www.cnblogs.com/AllenDang/archive/2012/03/03/2378534.html从2000年至今,也写了11年代码了,期间用过VB、Delphi、C#、C++、Ruby、Python,一直在寻找一门符合自己心意和理念的语言。我很在意写代码时的手感和执行的效率,所以在Go出现之前一直没有找到。在熟悉Go之后,我虽没有停下脚步,也去体验了D语言,但几乎立即就放弃了,它的设计还是太复杂。就说说Go吧。它的好其实也就两个字——简洁! 看很多朋友的留言...阅读全文

CSDN博客 2013-12-23 20:15 heiyeshuwu

云计算时代,我与Go语言难解的缘分

来源:http://www.ituring.com.cn/article/14092文/许式伟我在新浪微博、《Go语言编程》一书中下了一个论断:Go语言将超过C、Java,成为未来十年最流行的语言。 我曾在2007年第2届ECUG大会上提到了我对未来软件产业趋势的判断:存储与计算将向服务端转移;PC单机转换为强悍的服务器+多元化的终端。这个趋势判断对我的职业生涯其实影响非常重大。从业务角度讲,正因为这个判断,促使我选择成立金山实验室研究云存储技术;也促使我关注Erlang这门面向分布式编程的领域...阅读全文

CSDN博客 2013-12-23 20:20 heiyeshuwu

创建尽可能小的 Docker 容器

注:本文由 Adriaan de Jonge 编写,本文的原文地址为 Create The Smallest Possible Docker Container 当我们在使用 Docker 的时候,你会很快注意到你正在下载很多 MB 作为你的预先配置的容器。一个简单的 Ubuntu 容器很容易超过 200 MB,并且随着在上面安装软件,尺寸在逐渐增大。在某些情况下,你不需要任何事情都使用 Ubuntu 。例如,如果你只是简单的想运行一个 web 服务,使用 GO 编写的,没有必要围绕它使用任何工...阅读全文

Segmentfault 2014年08月05日 yexiaobai

Go与C语言的互操作

原文 http://tonybai.com/2012/09/26/interoperability-between-go-and-c/ Go有强烈的C背景,除了语法具有继承性外,其设计者以及其设计目标都与C语言有着千丝万缕的联系。在Go与C语言互操作(Interoperability)方面,Go更是提供了强大的支持。尤其是在Go中使用C,你甚至可以直接在Go源文件中编写C代码,这是其他语言所无法望其项背的。 在如下一些场景中,可能会涉及到Go与C的互操作: 1、提升局部代码性能时,用C替换一些G...阅读全文

CSDN博客 2014-07-24 14:36 maijian

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/wk gwk依赖ki...阅读全文

CSDN博客 2013-08-05 19:41 dyllove98

20130103Windows下编译GO程序

今天试着编译了一下beego库,顺便学习了一下go的安装环境。 下解压包安装在d:目录下go目录,设置了 GOROOT=D:\go GOARCH=386 GOBIN=%GOROOT%\bin 在D:\go下创建目录project,然后创建工程HelloGO. HelloGO下目录结构为: HelloGO ----src ------HelloGO.go(是对beego的测试) -----pkg(可选) ----bin(说这个是可选项的,但是我不创建的时候生成会失败) -----make.bat(...阅读全文

CSDN博客 2013-01-03 22:09 fengbangyue

Go 的垃圾回收机制在实践中有哪些需要注意的地方?

来源:http://www.zhihu.com/question/21615032不想看长篇大论的,这里先给个结论,go的gc还不完善但也不算不靠谱,关键看怎么用,尽量不要创建大量对象,也尽量不要频繁创建对象,这个道理其实在所有带gc的编程语言也都通用。想知道如何提前预防和解决问题的,请耐心看下去。先介绍下我的情况,我们团队的项目《仙侠道》在7月15号第一次接受玩家测试,这个项目的服务端完全用Go语言开发的,游戏数据都放在内存中由go 管理。在上线测试后我对程序做了很多调优工作,最初是稳定性优先...阅读全文

CSDN博客 2013-09-09 14:09 heiyeshuwu

(1)Go lang --认识和安装

介绍: Go 编程语言是一个使得程序员更加有效率的开源项目。Go 是有表达力、简洁、清晰和有效率的。它的并行机制使其很容易编写多核和网络应用,而新奇的类型系统允许构建有弹性的模块化程序。Go 编译到机器码非常快速,同时具有便利的垃圾回收和强大的运行时反射。它是快速的、静态类型编译语言,但是感觉上是动态类型的,解释型语言。Linux安装 1.安装C语言工具Go的工具链采用C语言编写,构建需要安装以下开发工具:GCC,C语言标准库,the parser generator Bison,make,aw...阅读全文

CSDN博客 2013-03-16 18:56 wuhualong1314

java与Go的交流

语句结束没有分号import支持导入多个(中间没有逗号) 语法:import ("xx" "xx" "xx")导出(类似于public等可被访问):首字母大写的变量及方法是被导出的声明变量: 语法: 变量名:=值 var 变量名,变量名,...... 类型函数: 函数可以没有参数或接受多个参数,函数可以返回任意数量的返回值;当两个或多个连续的函数命名参数是同一类型,则除了最后一个类型之外,其他都可以省略; 函数可以返回多个“结果参数”,而不仅仅是一个值。它们可以像变量那样命名和使用。 如果命名了...阅读全文

CSDN博客 2014-03-06 12:20 u012885276

golang在windows平台使用zmq

zmq官方推荐的golang库,guthub地址是http://github.com/pebbe/zmq4 测试代码就不发了,上面的地址有具体示例, 前几天碰到的问题是在windows 7 64位系统环境下go get github.com\pebbe\zmq4的时候无法完成 最开始可能是提示SOCKET未定义, 查看这个包的代码可以发现这套库使用了cgo,这是需要gcc等一些环境支持了 不推荐cygwin,因为我测试的时候,在这套环境下仍然无法编译成功 这时需要安装mingw,注意系统是32还...阅读全文

Segmentfault 2014年07月31日 舞林

Go语言将支持Android

在前些日子谷歌于2009年发布的第二款自家语言Go语言刚刚发布了1.3正式版,大幅度解决了GC问题,最近谷歌开发版里又有了新爆料:谷歌终于要在1.4版本中正式支持Android系统开发,可以编译器直接编译发布到Android平台 概述 我们建议将Go语言引入Android平台,重点是用Go语言编写游戏程序,API将在Android NDK中定义。 背景 Android平台被设定为一个多应用操作系统,一个相对于传统UNIX系统来说更依赖于网络库和服务的操作系统,这意味着我们将为Go运行时开放更多的...阅读全文

Segmentfault 2014年06月22日 高阳Sunny

GNVM -- Windows下Node.js多版本管理器

gnvm,是一个 windows 下 简单的 Node.js 多版本管理器,类似 nvmw | nodist 等。 原本是 14 年 为了学习 Go 语言 而建立的一个项目,后来一直没有维护,结果前阵子,陆陆续续的收到了 很多 issues ,既然有人用,本着不想挖坑不填的想法,又继续更新了。 先给个运行效果: c:\> gnvm install latest 1.0.0-x86 1.0.0-x64 5.0.0 Start download Node.js versions [5.10.1, 1...阅读全文

Segmentfault 2014年05月30日 Kenshin

Go - Channel 原理

注:该文原文为 Channel Axioms ,作者是 Dave Cheney,这是他的博客地址 大部分的新的 Go 程序员能快速理解 channel 是作为一个 queue 的值和认同当 channel 是满的或者是空的时候, 操作是阻塞的概念。 这篇文章探讨了 channel 四个不太常见的特性: 给一个 nil channel 发送数据,造成永远阻塞 从一个 nil channel 接收数据,造成永远阻塞 给一个已经关闭的 channel 发送数据,引起 panic 从一个已经关闭的 ch...阅读全文

Segmentfault 2014年05月15日 yexiaobai

Go的sync/mutex实现

概述 sync/mutex是Go语言底层基础对象之一,用于构建多个goroutine间的同步逻辑,因此被大量高层对象所使用。 其工作模型类似于Linux内核的futex对象,具体实现极为简洁,性能也有保证。 数据结构 type Mutex struct { state int32 sema uint32 } mutex对象仅有两个数值字段,分为为state(存储状态)和sema(用于计算休眠goroutine数量的信号量)。 初始化时填入的0值将mutex设定在未锁定状态,同时保证时间开销最小。...阅读全文

Segmentfault 2014年05月14日 无锋之刃

你好,Go

你好,Go Go语言是一门类似C语言的编译型语言,它的编译速度非常快。这门语言的关键字一共25个,比所有英文字母还少一个,这对于我们的学习来说非常有利。先让我们看一看这些关键字都长什么样。 break default func interface select case defer go map struct chan else goto package switch const fallthrough if range type continue for import return var 本...阅读全文

CSDN博客 2013-05-10 10:21 broadview2006

我为什么喜欢Go语言

本文转载自http://www.cnblogs.com/AllenDang/archive/2012/03/03/2378534.html 我为什么喜欢Go语言 从2000年至今,也写了11年代码了,期间用过VB、Delphi、C#、C++、Ruby、Python,一直在寻找一门符合自己心意和理念的语言。我很在意写代码时的手感和执行的效率,所以在Go出现之前一直没有找到。在熟悉Go之后,我虽没有停下脚步,也去体验了D语言,但几乎立即就放弃了,它的设计还是太复杂。 就说说Go吧。它的好其实也就两个...阅读全文

CSDN博客 2014-02-06 22:05 brave2211

Go语言 goroutine是一把双刃剑

go中的goroutine是go语言在语言级别支持并发的一种特性。初接触go的时候对go的goroutine的欢喜至极,实现并发简便到简直bt的地步。但是在项目过程中,越来越发现goroutine是一个很容易被大家滥用的东西。goroutine是一把双面刃。这里列举一下goroutine使用的几宗罪: 1 goroutine的指针传递是不安全的 1 2 3 4 5 6 7 8 fun main() { request := request.NewRequest() //这里的NewRequest...阅读全文

CSDN博客 2014-04-20 20:37 abv123456789

Go 程序的性能调试问题 - CPU 篇

注:本文的原文 Debugging performance issues in Go programs 由 Dmitry Vyukov 在 05/10/2014 - 07:06 编写 注:原文太长,大家要看全部的请看原文,其他的部分,后续慢慢翻译。 让我们假设你想提升你的GO程序的性能。这里有一些工具可以帮助你完成这个任务。这些工具能帮助你定位多种类型的热点(CPU,IO,内存),你为了能够显著提升程序性能,你必须专注于热点发生的地方。尽管如此,另外一个结果是可能的--这些工具能帮助你确定程序中...阅读全文

Segmentfault 2014年05月11日 yexiaobai

go语言入门-安装-编写-运行(一)

windows平台 1.下载go语言包,解压到C:\go 2.增加了2个全局变量,修改了1个变量 1、变量名:GOPATH 变量值:e:\go GO的编译目录在e:\go这个文件夹里. 2、变量名:GOROOT 变量值:c:\go GO的主目录在c:\go这个文件夹里. 3、在变量名:PTAH,开始增加C:\go\bin;记得一定在结尾加上';'分号. 3.下载并安装Notepad++5.6.8(就不给下载地址了,GOOGLE上一大片) 4.对Notepad++进行配置: 1、安装好NOTEPA...阅读全文

Segmentfault 2014年05月05日 fengxiuping

Go By Example 系列:非阻塞 Channels 操作

注:该系列文章全部来自 Go By Example 系列翻译而来,个人翻译水平以及理解水平有限,如要更加精确的理解,请看原文Go by Example: Non-Blocking Channel Operations。 在 channels (信道?) 上基本的 sends (发送) 和 receives (接收)是阻塞模式的。尽管如此, 我们可以使用 select 和一个 default 子句来非阻塞的 sends、receives,甚至是非阻塞的多路选择。 注:感谢@lidashuang的说...阅读全文

Segmentfault 2014年05月04日 yexiaobai