用 C# 简单模拟 Google Go 语言中的 Channel 和 goroutine 机制

前段时间尝试了一点 Google 的 Go 语言,感觉其很多特性还是不错的。Go 语言旨在结合传统编译型的静态语言和解释型的动态语言的优点,在其中找到一个平衡。从而打造一个既快速(编译执行),又方便编程的语言(动态语言往往语法简单快捷)。同时,Go 语言还具备丰富的特性以支持并发编程,这在现在多核非常普及的情况下,是很重要和强大的一个功能。 Go 语言的并发特性主要有 goroutine, channel 等。 goroutine - 可以大致理解为一种轻量级的线程(或微线程),它是一种“分...阅读全文

博客园 2010-08-25 19:07 RChen

go语言--数值类型

整数类型有无符号和带符号两种。Go同时支持int和uint,这两种类型的长度相同,但具体长度取决于不同编译器的实现。~~当前的gcc和gccgo编译器在32位和64位平台上都使用32位来表示int和uint,但未来在64位平台上可能增加到64位~~。Go里面也有直接定义好位数的类型:rune, int8, int16, int32, int64和byte, uint8, uint16, uint32, uint64。其中rune是int32的别称,byte是uint8的别称。 需要注意的一点是...阅读全文

ITEYE博客 2013-07-24 00:35 jacking124

go linux安装笔记,记录遇到的坑

自ECUG2013洗脑回来,就渴望早点接触Go 听着许式伟和谢孟军的演讲 发现go的网络库的确很强大,高负载利器,语言的一些精简导致很容易写出高效代码,而且开发效率  很高 不,应该是非常高   。(rpcjson,xml,.....其他一些自带的库也都很成熟)   是不是传说中的好东东,必须自己用了才能知道   于是开始品尝go咯~     : D PS 这篇文章完全是菜鸟学习帖   ECUG视频传送们 www.youtube.com/watch?v=af7qOeN9Mvk   上述2人的书籍...阅读全文

博客园 2014-01-08 01:43 scotth

golang/PHP输出excel

以前输入excel的时候utf8总是乱码还是用其他方式把utf8转换为gbk才能显示,呵呵,其实是输出了csv,后来群里的朋友说需要utf8 BOM Excel才能正常识别utf8,今天测试了一下,很爽,比以前省了好几行代码.呼呼 BOM信息参考: http://zh.wikipedia.org/wiki/位元組順序記號 golang实现: package main import ( "os" "encoding/csv" ) func main() { f, err := os.Create(...阅读全文

新浪博客 (2013-08-01 13:20:50) 小菲儿

[mongodb-10gen]ubuntu下安装方法

由于自己老是不死心,所以还是继续在UBUNTU下开始我的GOLANG,今天发现服务源很快一下子就把GO的源代码从GoogleProject上给hg回来了,所以今天才查了一下在UBUNTU下安装Mongodb-10gen的方法。其实在linux下有apt-get命令都相当的简单,唯一的需要就是要有很好的网速,如果能够FQ那是最好不过的了。 其实在mongodb官网上面有介绍,我们只要依照他的方法一步一步进行就可以完成安装了,地址如下: http://docs.mongodb.org/manual/...阅读全文

博客园 2013-11-15 00:18 xdotnet

[GOLANG]获取远程POST来的XML数据(微信公众平台)

今天测试用GO语言链接微信公众平台,一切都很顺利,但是发来的XML数据一直收不到。 将所有有可能的函数和值都测试过了,例如Request.Form,Request.PostForm,Request.MultiPartForm等都没有…… 最后发现它竟然藏在Request.Body里面,包的解释不完善害死人。 Request.Body里的数据是io数据,用ioutil.ReadAll方法可以将数据读出来。 读出来后用string方法转换一下,再用相应的解析函数解析成XML类就可以了。 记录下来留念...阅读全文

新浪博客 2013-07-21 21:32:42 葱烧烙饼

go语言学习小结(一)

学习go。记录下 1),package、import     这两个功能在现在的很多语言(java、C#)都具备了。这里面引入包在C家族确实是个很好的东西,使得代码组织更清晰;import而不是include头文件,完全剔除了c家族的弊病。 2),变量命名风格的改变     定义变量:       var i int跟C家族语法 int i; 相去甚远,貌似更接近delphi、javascript、scala风格。...阅读全文

开源中国博客 2014-06-30 14:35 droidwolf

go语言六——连接mysql

转自:Golang连接Mysql   首先go-driver-sql的mysql版本,我通过 go get code.google.com/p/go-mysql-driver/mysql 安装失败,貌似是git版本不够新的缘故,不过用不着这么麻烦,直接去github下载源代码即可,解压到/usr/local/go/src/pkg/mysql目录 package main // 导入sql包, 跟java.sql类似的 import "database/sql" import _ "mysql"...阅读全文

ITEYE博客 2013-08-07 16:34 ciaos

google go语言

引用:http://developer.51cto.com/art/201203/326428.htm 谷歌今天发布了Go语言的首个正式版本,谷歌称,这是该语言发展过程中的一个重要的里程碑。 Go 语言最初由Rob Pike等谷歌工程师在2007年9月启动设计工作,在2009年11月正式对外发布。Go将动态语言易于编写的特性和静态语言的高效性相结合,具备良好的易用性和极佳的执行效率。Go语言最初定位于网络服务器、存储系统和数据库的程序设计,同时在语言中包含并发构造体,以帮助开发者创建并行任务。...阅读全文

博客园 2012-10-10 14:46 sode

go语言标准库分析之os

golang讲解(go语言)标准库分析之os(7) 今天我们继续讲golang标准库的os包,依然是没有废话直接来 (1)(f *File).Name()这个函数是返回文件的名称,函数原型func (f *File) Name() string要文件的指针操作,返回字符串,感觉比较鸡助的方法底层实现 func (f *File) Name() string { return f.name } import (     "fmt"     "os" )func main() { ...阅读全文

开源中国博客 2014-03-19 15:59 kuerant

go实现排序的链表

链表的数据结构比较线性数组,优点是 可以方便的对任意的位置进行插入和删除。 这一特性使得它很适合于应用在排序等场景下,由于golang目前类库还不是很完善,在java中可以很简单的使用api提供的支持完成对list或者map的排序,在使用go时就没有那么幸运了,可能需要自己去实现。 下面的例子就是使用go package 中的LinkedList实现的排序的链表。 有几个功能特性: 1.支持固定的长度 2.可自定义排序的规则 3.组合LinkedList功能 package codefor...阅读全文

博客园 2013-08-14 23:25 mahang

go revel 简单性能测试

用revel创建的new创建了一个最简单的示例app,并用ab做简单的性能测试。设置并发数为1000。 结果如下: dev模式下运行:1200次/每秒 prod模式下运行:4800次/每秒 默认创建的app只能使用单个cpu,对多核多cpu服务器来说是个资源浪费,通过修改init.go 在其中添加如下代码: runtime.GOMAXPROCS(runtime.NumCPU()) 再次测试后,得到测试数据为:17500/每秒。 另:要做性能测试或者...阅读全文

开源中国博客 2013-07-30 13:48 dijin

【go语言】Goroutines 并发模式(二)

前言 在Goroutines 并发模式(一)中,我们简单地通过boring函数的例子来粗略地阐述了通过channels来和goroutines交流的方法。在本篇中,我将从pattern的方向出发,通过对boring函数的例子进行各种改写,来讲解几种常见了goroutines的并发模式。 并发模式 让我们先来回顾一下boring函数的例子。 func boring(msg string, c chan string) {    for i := 0; ; i++ {         ...阅读全文

开源中国博客 2014-05-31 21:31 何良瑞Nyanko君

为什么go语言适合开发网游服务器端

前段时间在golang-China读到这个贴:有木人用(或打算)golang做游戏服务器端?  个人觉得golang十分适合进行网游服务器端开发,写下这篇文章总结一下。   从网游的角度看: 要成功的运营一款网游,很大程度上依赖于玩家自发形成的社区。只有玩家自发形成一个稳定的生态系统,游戏才能持续下去,避免鬼城的出现。而这就需要多次大量导入用户,在同时在线用户量达到某个临界点的时候,才有可能完成。因此,多人同时在线十分有必要。   再来看网游的常见玩法,除了排行榜这类统计和数据汇总的功能外,基本...阅读全文

博客园 2012-09-11 15:37 Lifehacker

GO(golang)语言学习(1)

GO(golang)语言学习(1)   1.导入包,一个主函数中只有一个main函数,包含一个main包,主函数中我们要申明main的包!   package main func main(){ }   2.引入包文件,譬如我们使用的是fmt包,打印helloword用,golang有一个包可见性的定义,就譬如其他语言中的private 、protected这些声明。当手写字母是小写的就是包内可用,包外就不可以用了,手写字母大写,引用包的就可以使用!举个例子:fmt.Println();我们...阅读全文

ITEYE博客 2014-07-18 13:24 stephen830

初识go语言,写了个递归题目作为helloworld

上周D总在公司TTT上普及了go,当时只是概念上知道这门语言,D总出的小题目我用Java写了类似于DP的算法,被宣布太耗内存^^。这两天在公交上看了会reference(http://golang.org),最喜欢的特性是goroutines、多返回值和并列赋值/声明。觉得光看没用,还是写个helloworld吧,想到之前看到过一个这样的题目: 一颗二叉树,其节点上不均匀的分布了若干石头,石头数跟二叉树总节点数相同,石头只能在边上(即父子节点之间)进行搬运,每次只能搬运一颗石头。求使每个节点石...阅读全文

博客园 2012-12-28 00:48 leoyonn

go channel的一些技巧

1. 一个已经被关闭的 channel 永远都不会阻塞。当一个 channel 一旦被关闭,就不能再向这个 channel 发送数据,但仍然可以尝试从 channel 中获取值。 2. 已经被关闭的 channel 会实时返回。 package main import ( "fmt" "sync" "time" ) func main() { const n = 100000 finish := make(chan bool) var done sync.Wai...阅读全文

开源中国博客 2013-08-23 14:52 壬癸甲乙

关于go接口的一些说明

什么是接口 接口是golang最重要的特性之一,在Go中,接口interface其实和其他语言的接口意思没什么区别。interface理解其为一种类型的规范或者约定。一种类型是不是“实现”了一个接口呢?就看这种类型是不是实现了接口中定义的所有方法。接⼝是一个或多个方法签名的集合,任何非接口类型只要拥有与之对应的全部方法实现 (包括相同的名称、参数列表以及返回值。),就表示它"实现" 了该接口,无需显式在该类型上添加接口声明。此种方式又被称作Duck Type。 接口的实例化 ...阅读全文

开源中国博客 2013-08-30 14:40 壬癸甲乙

go语言一——基础

参考《Go_web_编程.pdf》 See Also: Go 语言简介(上)— 语法 Go 语言简介(下)— 特性 首先编写一个简单的脚本hello.go /* * 定义包名 * main 表示可独立运行 * [other] 编译生成.a文件 */ package main /* * 引入系统级别包 fmt */ import "fmt" // main.main 是每一个可执行程序的入口点 func main() { fmt.Printf("Hello, world ...阅读全文

ITEYE博客 2013-08-02 10:56 ciaos