使用golang学习算法(1)-排序

前言 终于感觉到算法的重要了。于是打算继续学习下。 其实算法跟语言没有啥关系,用啥语言都可以实现关键是思路,最近正好在学习golang。打算把算法的编写使用golang完成。 没有使用IDE,使用的是sublime2+ golang的插件,然后使用命令行进行编译。 开发效率也不低,也支持语言的自动补齐。 搭建环境【http://blog.csdn.net/freewebsys/article/details/17955255】 学习的参数书,使用《算法导论》,也就是敲敲书上的代码学习下。 1,插...阅读全文

开源中国博客 2014-11-14 09:55 xoxoxo

GoLang 连接 Mysql 数据库

搜索下 找到一个 golang 的库地址: http://go-lang.cat-v.org/library-bindings 有数据库。。gui 等。 发现就这个更新 时间最近。。下载 zip包。 https://github.com/Philio/GoMySQL 经过编译发现只可以再 linux 下面进行编译。windows 没有弄好。 首先在 linux 下面设置环境变量: export PATH=$PATH:/opt/google/go/bin export GOROOT=/opt/go...阅读全文

开源中国博客 2014-11-14 09:53 xoxoxo

go语言学习,使用Sublime Text 2 搭建环境

搭建环境参考 : http://blog.csdn.net/love_se/article/details/7754274 解决GBK编码问题: 然后使用Ctrl+Shift+P打开命令行模式,在里面输入Install Package即可搜索需要的Package。一般使用“ConvertToUTF8” http://www.fuzhaopeng.com/2012/sublime-text-2-with-gb2312-gbk-support/ http://my.oschina.net/rc668...阅读全文

开源中国博客 2014-11-14 09:54 xoxoxo

Golang 1.0 文档使用。godoc ,go 命令 学习 ,本地运行 gotour

首先要安装环境 参考: http://toeo.iteye.com/blog/1470598 找了半天 没有 看明白 doc 的目录结构。 原来 doc 是web 展示的 !!! 本地 运行 web 版本 doc文档 输入 > godoc -http=:6060 然后在浏览器里面就可以看到了: 访问你的浏览器年 就有自己的一个 本地 文档中心了。 google go 毫不吝啬。golang.org 上面的文档相关东西都 本地化了。直接在web里面运行go程序的没有 本地化。必需通过web访问。(...阅读全文

开源中国博客 2014-11-14 09:55 xoxoxo

windows 安装Go 环境 搭建Mysql数据库连接

在linux 上做go 环境搭建 已经可以了。并且 连接上了 mysql 数据库。 但是 开发 还是 在windows 上面的比较多。所以要研究下 windows 下如何弄 。 需要使用一个 mingw 的环境 。 要使用make 命令 官网: http://www.mingw.org/ 下载 http://sourceforge.net/projects/mingw/files/ 安装: 安装 基本编译环境。 开始下载文件。 然后下载 golang windows 版本: http://cod...阅读全文

开源中国博客 2014-11-14 09:55 xoxoxo

windows 下搭建 GoLang 语言开发环境

首先从网上下载 windows golang 环境 http://code.google.com/p/gomingw/downloads/list 64 和 32 分别下载 amd64 和 386的 压缩包。 我的电脑是 64 bit windows 7 所以下载 gowinamd64_weekly.2012-01-15.zip 这个事每周 打一个版本的。。更新速度还是挺快的。 然后解压缩到 d:/soft/go/目录下 然后安装 eclipse go 插件: http://goclipse.g...阅读全文

开源中国博客 2014-11-14 09:55 xoxoxo

golang实现类似var_dump()功能

PHP的var_dump()打印变量信息会有换行和缩进, 阅读起来非常方便. 但在golang通过fmt.Fprintf("%#v", a)打印变量信息的时候却不换行, 阅读起来不方便. 网上找了几个实现var_dump()类似功能的包, 用起来都不很顺手, 下面简单实现一个(源代码存在github上面). 安装: go get github.com/favframework/debug 示例代码: package main import ( "github.com/favframework/d...阅读全文

开源中国博客 2014-11-13 22:03 liudng

golang讲解(go语言)标准库分析之os(8)

/*640*60,创建于2013-5-24*/ var cpro_id = "u1290382"; Golang标准库 今天我们继续os包,不多说话了就说一句是golang的os包 (1)type FileInfo里边就两个函数Stat和Lstat这个我就不多说了,使用方法相同前边咱们也介绍了 [php] import ( "fmt" "os" ) func main() { //这个和stat差不多 f, _ := os.Lstat("1.go") fmt.Println(f) // &{1....阅读全文

微度网络 2014-01-05 widuu

goroutine与调度器

我们都知道Go语言是原生支持语言级并发的,这个并发的最小逻辑单元就是goroutine。goroutine就是Go语言提供的一种用户态线程,当然这种用户态线程是跑在内核级线程之上的。当我们创建了很多的goroutine,并且它们都是跑在同一个内核线程之上的时候,就需要一个调度器来维护这些goroutine,确保所有的goroutine都使用cpu,并且是尽可能公平的使用cpu资源。 这个调度器的原理以及实现值得我们去深入研究一下。支撑整个调度器的主要有4个重要结构,分别是M、G、P、Sched,...阅读全文

skoo's notes 29 November 2013 skoo

Go语言内存分配器的实现

前几天断断续续的写了3篇关于Go语言内存分配器的文章,分别是Go语言内存分配器设计、Go语言内存分配器-FixAlloc、Go语言内存分配器-MSpan,这3篇主要是本文的前戏,其实所有的内容本可以在一篇里写完的,但内容实在太多了,没精力一口气搞定。本文将把整个内存分配器的架构以及核心组件给详细的介绍一下,当然亲自对照着翻看一下代码才是王道。 内存布局结构图 我把整个核心代码的逻辑给抽象绘制出了这个内存布局图,它基本展示了Go语言内存分配器的整体结构以及部分细节(这结构图应该同样适用于tcmal...阅读全文

skoo's notes 13 October 2013 skoo

Go语言内存分配器-MSpan

MSpan和FixAlloc一样,都是内存分配器的基础工具组件,但和FixAlloc没太大的交集,各自发挥功效而已。span(MSpan简称span)是用来管理一组组page对象,先解释一下page,page就是一个4k大小的内存块而已。span就是将这一个个连续的page给管理起来,注意是连续的page,不是东一个西一个的乱摆设的page。为了直观形象的感受一下span,还是得画个图吧,图形是最好的交流语言。 MSpan结构定义在malloc.h头文件中,代码如下: struct MSpan ...阅读全文

skoo's notes 11 October 2013 skoo

Go语言内存分配器-FixAlloc

昨天写了一篇Go语言内存分配器设计,记录了一下内存分配器的大体结构。在介绍内存分配器的核心实现前,本文先介绍一下内存分配器中一个工具组件——FixAlloc。FixAlloc称不上是核心组件,只是辅助实现整个内存分配器核心的一个基础工具罢了,由此可以看出FixAlloc还是一个比较重要的组件。引入FixAlloc的目的只是用来分配MCache和MSpan两个特定的对象,所以内存分配器中有spanalloc和cachealloc两个组件(见《Go语言内存分配器设计》的图)。MCache和MSpan...阅读全文

skoo's notes 09 October 2013 skoo

golang讲解(go语言)标准库分析之os(7)

/*640*60,创建于2013-5-24*/ var cpro_id = "u1290382"; Golang标准库 今天我们继续讲golang标准库的os包,依然是没有废话直接来 (1)(f *File).Name()这个函数是返回文件的名称,函数原型func (f *File) Name() string要文件的指针操作,返回字符串,感觉比较鸡助的方法底层实现 [php] func (f *File) Name() string { return f.name } import ( "fm...阅读全文

go语言示例:hello world

go语言示例:hello world 我们的第一个例子是经典的"hello world".这里是全部代码。 Plain Text code ? 1 2 3 4 5 package main import "fmt" func main() { fmt.Println("hello world") } 为了运行这个程序。我们把程序放到hello-world.go 文件中,并运行go run 命令。 $ go run hello-world.go hello world 有时候我们为了生成二进制文件...阅读全文

CSDN博客 2013-11-24 22:31 xming4321

go build和go install的区别

go build通过go build加上要编译的Go源文件名,我们即可得到一个可执行文件,默认情况下这个文件的名字为源文件名字去掉.go后缀。 $ go build hello.go $ lshello hello.go 当然我们也 可以通过-o选项来指定其他名字: $ go build -o mygo hello.go $ lsmygo hello.go 如果我们在go-examples目录下直接执行go build命令,后面不带文件名,我们将得到一个与目录名同名的可执行文件: $ go bu...阅读全文

开源中国博客 2014-11-13 14:07 Goopand