GO + ichartjs + jsonP实现数据图表分析后台
1、Go 开发工具 - LiteIDE(安装使用说明) 2、windows下Go环境配置 下载安装包,配置环境变量。 3、Linux下Go环境配置 假设已经位于Go的安装目录 $GO_INSTALL_DIR下 #hg clone -u release https://code.google.com/p/go #cd go/src #./all.bash 运行all.bash后出现”ALL TESTS PASSED”字样时才算安装成功。 上面是Unix风格的命令,Windows下的安装方式类似,只...阅读全文
Golang适合高并发场景的原因分析
典型的两个现实案例: 我们先看两个用Go做消息推送的案例实际处理能力。 360消息推送的数据: 16台机器,标配:24个硬件线程,64GB内存 Linux Kernel 2.6.32 x86_64 单机80万并发连接,load 0.2~0.4,CPU 总使用率 7%~10%,内存占用20GB (res) 目前接入的产品约1280万在线用户 2分钟一次GC,停顿2秒 (1.0.3 的 GC 不给力,直接升级到 tip,再次吃螃蟹) 15亿个心跳包/天,占大多数。 京东云消息推送系统 (团队人数:4...阅读全文
Go 语言的错误处理机制
转载自:http://blog.iwinux.info/blog/2012/12/error-handling-in-go.html 这段时间在学习 Go 语言,接触到一些比较“另类”的语言特性,其中一个就是它的错误处理机制,跟我以往所知的都不太一样。在我正儿八经地使用过的编程语言(C / Python / Ruby / JavaScript)里面,处理程序错误的方式大致有两种:1. 返回特殊值 2. 抛出异常。 C 语言属于第一种。函数调用出错时会返回特殊值,并有可能根据场景设置某个全局的(一...阅读全文
Golang学习(3)——bytes包
Golang学习 - bytes 包--------------------对于传入 []byte 的函数,都不会修改传入的参数,返回值要么是参数的副本,要么是参数的切片。// 转换: 将 s 中的所有字符修改为大写(小写、标题)格式返回。func ToUpper(s []byte) []bytefunc ToLower(s []byte) []bytefunc ToTitle(s []byte) []byte// 使用指定的映射表将 s 中的所有字符修改为大写(小写、标题)格式返回。func ...阅读全文
Google推全新开源编程语言Go
北京时间11月11日消息,据国外媒体报道,本周二谷歌宣布推出一款名为Go的全新开源编程语言,可以优化规模复杂和多处理器系统的应用程序编程。 Go是谷歌今年发布的第二款编程语言。今年7月份,谷歌曾发布了Simple语言,它是用来开发Android应用的一种BASIC语言。 谷歌资深软件工程师罗布·派克(Rob Pike)表示,“Go让我体验到了从未有过的开发效率。”派克表示,和今天的C++或C一样,Go是一种系统语言。他解释道,“使用它可以进行快速开发,同时它还是一个真正的编译语言,我们之所以现在...阅读全文
使用go语言复制文件
怎样使用go语言将文件复制成另一文件?go语言标准包io里提供一个简单的函数copy实现了这个功能,下面是一个例子。 //////////// package main import ( "fmt" "io" "os" ) func main() { CopyFile(os.Args[1], os.Args[2]) // os.Args[1]为目标文件,os.Args[2]为源文件 fmt.Println("复制完成",) } func CopyFile(dstName, srcName str...阅读全文
go语言的排序和搜索
晚上准备动手写点 go 的程序的时候,想起 go 如何排序的问题。排序 sort 是个基本的操作,当然搜索 search 也是。c 提供一个 qsort 和 bsearch,一个快排一个二分查找,不过是使用起来都不方便; c++ 中的 sort 貌似很不错,因为 c++ 支持泛型(或是说模板),所以很多东西使用起来很方便。go 是通过 sort 包提供排序和搜索,因为 go 暂时不支持泛型(将来也不好说支不支持),所以,go 的 sort 和 search 使用起来跟类型是有关的,或是需要像 c...阅读全文
go官网的7个例子分析
go 语言或是 golang 的官网首页上有 7 个例子代码,赶脚灰常好,赶脚值得写篇文章简单分析一下 —— 虽然第 6 个例子不是太懂,貌似是个玩游戏的。 hello,世界 package main import "fmt" func main() { fmt.Println("Hello, 世界") } 这是hello,世界程序,要比hello,world其实要难一些,因为里面有中文!windows 下直接运行这个程序一般都有错误或是乱码出现,主要是编码的问题,倒不是程序的问题(请使用 ut...阅读全文
在windows/linux下搭建go开发环境
本篇博客主要是介绍在 windows 下搭建 go 开发环境,因为 linux 下相对 windows 甚至更方便一些 (really?);如果你是关心的是 linux 的安装,直接跳到 linux 下安装 go 吧。废话不多说,去 go 的官网,下载 go 的 windows 版本。有 zip 文件下载,直接解压缩使用,不用选择 msi 安装。或是你直接到 golang:windows下安装go。 说点废话。me 为嘛选择 zip 而不是 msi 呢?相对来说,me 更喜欢绿色软件,解压之后基...阅读全文
从例子中学习 go 语言 —— 方法、接口以及并发
本篇本来是接着上一篇的,本篇是 go 的关于方法、接口以及并发的一些例子;上一篇是关于数据结构以及指针的,上上一篇是关于基本语法以及结构的,基本类型、函数、for、if 等等。 方法: package main import ( "fmt" "math" ) type Vertex struct { X, Y float64 } func (v *Vertex) Abs() float64 { return math.Sqrt(v.X*v.X + v.Y*v.Y) } func main() {...阅读全文
从例子中学习 go 语言 —— 数据结构、指针
本篇本来是接着上一篇的,但是一篇过长,效果不好。上一篇是关于基本语法以及结构的,基本类型、函数、for、if 等等,这里的是关于数据结构以及指针的,下一篇是关于方法、接口以及并发的。 struct 结构体: package main import "fmt" type Vertex struct { X int Y int } func main() { fmt.Println(Vertex{1, 2}) } 1). 使用 type 和 struct 定义结构体;和 c 的类似,结构体是对数据的...阅读全文
从例子中学习 go 语言 —— 基本语法
go 语言或是 golang 官网上有个 tour。从例子中学习一门语言虽然具有片面性,但是往往是一个入门的好方法;如果一开始就去是看手册的话,有些凌乱,摸不着头脑,有点看字典的味道。所以,先从例子中学习,然后再系统的学习,应该是个不错的方法。 本篇文章基本按照 tour 的步骤,跑跑例子,从例子中去猜测/分析 go 的语法以及结构等,一定程度上可以锻炼一下,观察和分析能力。 hello,world: package main import "fmt" func main() { fmt.Pri...阅读全文
python,java,go语言之间的区别!
除去Java Python Go这三种语言底层以及语法的不同,这里以个人的理解只说说其面向对象方面的思想。 一个简单的示例: 描述人,李雷,韩梅梅,他俩都是好学生。 将用 javapythongo 这三种语言分别简单的描述。 Java 思想 人,是抽象的概念,可以洗衣做饭的灵长目物种,没法特指一样具体的东西,但它也有一些如性别、撒尿这类的属性和功能。 /** * 抽象出来的人 */ abstract class Human { protected String sex; protected St...阅读全文
golang使用pprof检查goroutine泄露
有一段时间,我们的推送服务socket占用很不正常,我们自己统计的同时在线就10w的用户,但是占用的socket竟然达到30w,然后查看goroutine的数量,发现已经60w+。 每个用户占用一个socket,而一个socket,有read和write两个goroutine,简化的代码如下: c, _ := listerner.Accept() go c.run() func (c *conn) run() { go c.onWrite() c.onRead() } func (c *conn...阅读全文
Go语言开发工具 LiteIDE x10 发布
GO语言开发工具liteide x10发布,更新了GO调试插件。 LiteIDE项目: 操作系统: Windows / Linux x86 / Linux x86_64 / MacOS X 10.6 项目主页: http://code.google.com/p/golangide 项目源码 : http://code.google.com/p/liteide 讨论组: http://groups.google.com/group/liteide-dev 下载链接: http://code.goo...阅读全文
Golang学习(2)——errors 包
Golang学习 - errors 包--------------------Go 语言使用 error 类型来返回函数执行过程中遇到的错误,如果返回的 error 值为 nil,则表示未遇到错误,否则 error 会返回一个字符串,用于说明遇到了什么错误。其实 error 只是一个接口,定义如下:type error interface { Error() string}你可以用任何类型去实现它(只要添加一个 Error() 方法即可),也就是说,error 可以是任何类型,这意味着,函数 E...阅读全文
golang中的数组切片
概念:基于数组,数组切片添加了一系列管理功能,可以随时动态扩充存放空间,并且不会导致所管理的元素被重复复制。创建数组切片:方法一,基于数组:package main import "fmt" func main() { //define an array var myArray [10]int = [10]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10} //create a slice based on array var mySlice []int = myArray[:...阅读全文