golang
文章平均质量分 72
巴途Adolph
这个作者很懒,什么都没留下…
展开
-
Go语言学习三:Go基础(iota,array,slice,map,make,new)
分组声明import "fmt"import "os"const i = 100const ii = 3.1415const iii = "test"var i intvar ii float64var iii string//分组代码如下import( "fmt" "os")const( i = 1 ii = 3.1415 iii原创 2014-04-16 22:39:33 · 2628 阅读 · 0 评论 -
Linux Signal及Golang中的信号处理
信号(Signal)是Linux, 类Unix和其它POSIX兼容的操作系统中用来进程间通讯的一种方式。一个信号就是一个异步的通知,发送给某个进程,或者同进程的某个线程,告诉它们某个事件发生了。 当信号发送到某个进程中时,操作系统会中断该进程的正常流程,并进入相应的信号处理函数执行操作,完成后再回到中断的地方继续执行。 如果目标进程先前注册了某个信号的处理程序(signal ha转载 2015-11-25 09:55:56 · 2249 阅读 · 0 评论 -
Golang同步:条件变量和锁组合使用
条件变量的作用并不是保证在同一时刻仅有一个线程访问某一个共享数据,而是在对应的共享数据的状态发生变化时,通知其他因此而被阻塞的线程。条件变量与互斥量组合使用互斥量为共享数据的访问提供互斥支持条件变量就状态的变化向相关线程发出通知三种操作方法等待通知: wait 阻塞当前线程,直到收到该条件变量发来的通知单发通知: signal 让该条件变量向至少一个正在等待它的通知的线程发送通知,表示原创 2015-11-26 22:28:11 · 5364 阅读 · 0 评论 -
Golang同步:锁的使用案例详解
互斥锁 互斥锁是传统的并发程序对共享资源进行访问控制的主要手段。它由标准库代码包sync中的Mutex结构体类型代表。只有两个公开方法LockUnlock类型sync.Mutex的零值表示了未被锁定的互斥量。var mutex sync.Mutexmutex.Lock()示例// test for Go//// Copyright (c) 2015 - Batu原创 2015-11-26 01:19:27 · 9272 阅读 · 0 评论 -
Golang同步:原子操作使用
原子操作即是进行过程中不能被中断的操作。针对某个值的原子操作在被进行的过程中,CPU绝不会再去进行其他的针对该值的操作。 为了实现这样的严谨性,原子操作仅会由一个独立的CPU指令代表和完成。GO语言提供的原子操作都是非入侵式的,由标准库sync/atomic中的众多函数代表类型包括int32,int64,uint32,uint64,uintptr,unsafe.Pointer,共六个。这些原创 2015-11-29 14:10:42 · 18280 阅读 · 1 评论 -
Golang之字符串格式化
字符串格式化// Go 之 字符串格式化//// Copyright (c) 2015 - Batu//package mainimport ( "fmt")type point struct { x, y int}func main(){ // 格式化整型,使用`%d`是一种 // 标准的以十进制来输出整型的方式 // 有符号十进制整数(int)原创 2016-01-02 14:00:21 · 4358 阅读 · 0 评论 -
Golang之反射reflect包
反射规则在计算机科学领域,反射是指一类应用,它们能够自描述和自控制。也就是说,这类应用通过采用某种机制来实现对自己行为的描述(self-representation)和监测(examination),并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义。 每个语言的反射模型都不同(同时许多语言根本不支持反射)。 Go语言实现了反射,所谓反射就是动态运行时的状态。原创 2016-01-08 03:18:47 · 4922 阅读 · 0 评论 -
Golang之bytes.buffer
bytes.buffer是一个缓冲byte类型的缓冲器存放着都是byte Buffer 是 bytes 包中的一个 type Buffer struct{…} A buffer is a variable-sized buffer of bytes with Read and Write methods. The zero value for Buffer is an empty b原创 2015-12-26 01:13:01 · 5324 阅读 · 1 评论 -
golang 的 channel 实现 生产者/消费者 模型
Golang 提供了优雅的并发方式转载 2016-02-24 22:57:20 · 2291 阅读 · 0 评论 -
Go语言配置文件解析器,类似于Windows下的INI文件.
configPackage config is a Configuration file parser for INI format包 config 是一个简洁方的,支持注释的Go语言配置文件解析器,类似于Windows下的INI文件.配置文件形式为[section] 的段构成, 内部使用 name=value键值对 如果为指定段节点,则默认放入名为[default]的段当中. “#”为注释的开原创 2016-03-22 09:30:11 · 2958 阅读 · 0 评论 -
ATC:一个GO应用程序开源框架
ATCATC 是一个快速开发GO应用程序的开源框架,支持RESTful API 及 Thrift RPC的框架.可根据自身业务逻辑选择性的卸载中间件的功能,均支持平滑退出。要求GO版本 >= 1.8当前版本: 0.1.1 (Beta 2017-05-02)稳定版本: 1.0.0 (2017-05)More info atc.wiki老版本GITHUB安装ATCgo get github.com/ad原创 2017-06-03 11:15:03 · 2084 阅读 · 0 评论 -
ATC:go Thrift RPC 使用 (连接池)
RPCRPC引擎目前支持Thrift(client & serve)Thrift安装go get github.com/adolphlxm/atc/rpc/thriftThrift服务端使用步骤第一步:引入包import( "github.com/adolphlxm/atc/rpc/thrift")第二步:初始化服务// 创建服务实例ThriftRPC := thrift.NewTh原创 2017-10-20 10:59:20 · 3342 阅读 · 0 评论 -
Golang的select/非缓冲的Channel实例详解
select golang 的 select 就是监听 IO 操作,当 IO 操作发生时,触发相应的动作。 在执行select语句的时候,运行时系统会自上而下地判断每个case中的发送或接收操作是否可以被立即执行【立即执行:意思是当前Goroutine不会因此操作而被阻塞,还需要依据通道的具体特性(缓存或非缓存)】每个case语句里必须是一个IO操作所有channel表达式都会被求值、原创 2015-10-30 21:19:43 · 17532 阅读 · 1 评论 -
Golang time包的定时器/断续器
定时器在time包中有两个函数可以帮助我们初始化time.Timertime.Newtimer函数初始化一个到期时间据此时的间隔为3小时30分的定时器t := time.Newtimer(3*time.Hour + 30*time.Minute)注意,这里的变量t是*time.NewTimer类型的,这个指针类型的方法集合包含两个方法Rest 用于重置定时器该方法返回一个bool类型的值St原创 2015-10-31 01:51:41 · 6433 阅读 · 0 评论 -
Go语言学习二:Go基础(变量、常量、数值类型、字符串、错误类型)
使用var关键字是go语言最基本的定义变量方式,与C语言不通的是Go语言把变量放在变量名后面。原创 2014-04-14 20:54:41 · 2746 阅读 · 0 评论 -
golang学习(一)之安装
golang简介 Go语言是谷歌推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发Go,是因为过去10多年间软件开发的难度令人沮丧。golang官网http://golang.org/goland安装下载地址:https://code.google.co原创 2014-04-07 23:21:56 · 2066 阅读 · 0 评论 -
Go语言学习四:struct类型
struct我们可以声明新的类型,作为其它类型的属性或字段容器。原创 2014-08-21 15:10:23 · 1304 阅读 · 0 评论 -
Ubuntu 14.04/CentOS 6.5中安装GO LANG(GO语言)
解压缩tar zxvf go1.2.2.linux-amd64.tar.gz移动(要有ROOT权限) mv go /usr/local/go以下全部都需要ROOT权限1.Ubuntu 14.04安装个GO Lang(go 语言)1.1设置系统环境变量vi /etc/profile在最后添加(按i键进入编辑状态,把光标拉倒最后,添加如下转载 2014-09-25 17:17:22 · 1671 阅读 · 0 评论 -
Mac OS 安装golang
下载golang安装包下载地址:http://www.golangtc.com/downloadhttps://code.google.com/p/go/downloads/listgo1.4.darwin-amd64-osx10.8.pkggo1.4 Mac OS X (x86 64-bit) PKG installer设置环境原创 2015-01-07 13:58:47 · 2080 阅读 · 0 评论 -
Thrift RPC 使用指南实战(附golang&PHP代码)
Thrift RPC 使用指南实战thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发。它结合了功能强大的软件堆栈和代码生成引擎,以构建在 C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, and OCaml 这些编程语言间无缝结合的、高效的服务。原创 2015-05-13 17:44:17 · 9880 阅读 · 4 评论 -
Mac install Thrift
系统当前环境:OS X Yosemite 10.10.3折腾时间:2015.5.7刚开始尝试通过官方http://thrift.apache.org/ 去编译安装,过程遇到坑无数。其中提示bison版本过低,原因:Xcode中自带的bison是2.3的,而Thrift 0.9.2版本需要bison > 2.5版本。 折腾半天没解决好人提供解决思路:把xcode bison 改个原创 2015-05-07 21:47:32 · 3487 阅读 · 2 评论 -
golang net/http包使用
http客户端import “net/http” http包提供了HTTP客户端和服务端的实现。Get、Head、Post和PostForm函数发出HTTP/ HTTPS请求。package mainimport ( "fmt" "io/ioutil" "net/http")func main() { response, err := http.Get("htt原创 2015-08-24 13:57:52 · 2444 阅读 · 0 评论 -
冒泡排序Bubble sort-golang
算法原理比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。 冒泡排序就是把小的元素往前调或者把大的元素往后调。比较是相邻的两个元素比较,交换也发生在这两个元素之间。所以,如果两原创 2015-09-18 14:32:32 · 1044 阅读 · 0 评论 -
快速排序Quick sort - golang
算法原理一趟快速排序的算法是: 1)设置两个变量i、j,排序开始的时候:i=0,j=N-1; 2)以第一个数组元素作为关键数据,赋值给key,即key=A[0]; 3)从j开始向前搜索,即由后开始向前搜索(j–),找到第一个小于key的值A[j],将A[j]和A[i]互换; 4)从i开始向后搜索,即由前开始向后搜索(i++),找到第一个大于key的A[i],将A[i]和A[j]互换; 5)原创 2015-09-18 15:23:13 · 2071 阅读 · 2 评论 -
Go语言学习:Channel是什么?
Channel是什么 在Go语言中,Channel即指通道类型。有时也用它来直接指代可以传递某种类型的值的通道。类型表示法chan T 关键字chan代表了通道类型的关键字,T则代表了该通道类型的元素类型。例如:type IntChan chan int 别名类型IntChan代表了元素类型为int的通道类型。我们可以直接声明一个chan int类型的变量:var Int原创 2015-10-24 10:31:19 · 2072 阅读 · 0 评论 -
ATC:go logs 使用
logs日志模块,目前支持的引擎有stdout、file安装go get github.com/adolphlxm/atc/logs使用步骤第一步:引入包import( "github.com/adolphlxm/atc/logs")第二步:添加输出引擎logs.SetLogger("stdout")// 引擎支持第二个参数,配置信息logs.SetLogger("file",`{"原创 2017-10-20 11:02:14 · 1189 阅读 · 0 评论