-
Golang同步:条件变量和锁组合使用
所属栏目:[大数据] 日期:2020-12-16 热度:70
条件变量的作用并不是保证在同一时刻仅有一个线程访问某一个共享数据,而是在对应的共享数据的状态发生变化时,通知其他因此而被阻塞的线程。 条件变量与互斥量组合使用 互斥量为共享数据的访问提供互斥支持 条件变量就状态的变化向相关线程发出通知 三种操[详细]
-
golang channel的长度
所属栏目:[大数据] 日期:2020-12-16 热度:54
packagemainimport("fmt""time")funcmain(){test_chan2()}functest_chan2(){c:=make(chan[]int,10)fmt.Printf("len1%vn",len(c))//fmt.Printf("chanel%vn",-c)//close(c)c-[]int{1,2,10}c-[]int{3,4,5}c-[]int{5,6,7}gofunc(){for{select{casexx:=-c:fmt.P[详细]
-
golang Tree二叉树
所属栏目:[大数据] 日期:2020-12-16 热度:86
//golang先序遍历创建二叉树 packagemainimport("container/list""fmt")typetreestruct{left*treeright*treedataint}funccreate(indexint,value[]int)(T*tree){T=tree{}T.data=value[index-1]fmt.Printf("index%vn",index)ifindexlen(value)-12*index=len(v[详细]
-
golang IDE 工具liteide打开报错解决方法
所属栏目:[大数据] 日期:2020-12-16 热度:125
在centos7上安装liteide后,打开报:./liteide: error while loading shared libraries: libpng12.so.0: cannot open shared object file: No such file or directory 其解决方法为: //查看所有的libpng包 #yum list |grep libpng 输出信息为: libpng.x86_[详细]
-
Golang同步:原子操作使用
所属栏目:[大数据] 日期:2020-12-16 热度:86
原子操作即是进行过程中不能被中断的操作。针对某个值的原子操作在被进行的过程中,CPU绝不会再去进行其他的针对该值的操作。 为了实现这样的严谨性,原子操作仅会由一个独立的CPU指令代表和完成。 GO语言提供的原子操作都是非入侵式的,由标准库sync/atomic[详细]
-
A Tour of Golang (一)
所属栏目:[大数据] 日期:2020-12-16 热度:124
从入职开始学习Go也有2周了吧,看书比较慢,加上平时使用,对于Golang只能说是有了一个初步的了解。一边翻书,一边简单的总结一点基础的东西。写着写着感觉就变成了一个C++11和Golang的比较。 变量 1、:= 初始化 相对于C,go提供的:=可以推导表达式的类型[详细]
-
Golang学习摘录(二)
所属栏目:[大数据] 日期:2020-12-16 热度:103
Golang学习二 Full slice expressions切片操作 Python a[low: high: direction] 比如 a = [1,2,3],a[1:2:-1]负1表示反方向,结果是[3,2] Golang第三个不是表示方向:a[low : high : max],string类型切片不支持max操作。 max参数用来指定返回的切片的容量,[详细]
-
golang time操作整理
所属栏目:[大数据] 日期:2020-12-16 热度:76
这里的内容大部分是从他人处整理得到 http://my.oschina.net/1123581321/blog/190942 时间戳 当前时间戳fmt.Println(time.Now().Unix())# 1389058332 str格式化时间当前格式化时间fmt.Println(time.Now().Format("2006-01-02 15:04:05")) # 这是个奇葩,必须[详细]
-
让golang的cron库支持带事件参数的回调
所属栏目:[大数据] 日期:2020-12-16 热度:153
一直在寻觅c/c++下的cron库,可惜一直没找到。目前对我来说,cron可以做定时的某活动,比如晚上八点怎么怎么的,golang下有大神提供的cron库,那么这部分的实现还是放到go实现的服务器下面吧,然后再通知别的服务器,只能绕路子了。 go下的cron库使用的是git[详细]
-
golang BufferIO
所属栏目:[大数据] 日期:2020-12-16 热度:114
测试一下golang库函数里面bufio模块代码,Readline根据'n'切分数据 packagemainimport("bytes""errors""fmt""io""time")typeReaderstruct{buf[]byterdio.Reader//readerprovidedbytheclientr,wint//bufreadandwritepositionserrerrorlastByteintlastRuneSize[详细]
-
Golang logger日志库
所属栏目:[大数据] 日期:2020-12-16 热度:53
go-logger 是golang 的日志库 ,基于对golang内置log的封装。 用法类似java日志工具包log4j 打印日志有5个方法 Debug,Info,Warn,Error,Fatal 日志级别由低到高 设置日志级别的方法为:logger.SetLevel() 如:logger.SetLevel(logger.WARN) 则:logger.Debu[详细]
-
内存池管理思想 另类内存池实现
所属栏目:[大数据] 日期:2020-12-16 热度:101
一般来说,内存池都是采用预分配的方式,分为固定大小的和非固定大小块,固定大小的内存效率高,非固定大小灵活。同时,分为单线程和多线程版的,单线程不需要考虑并发问题。 一般内存池的实现思想:分配一块比较大多内存,把这块内存分成大小相等的块,即固[详细]
-
golang标准库学习——buffio包
所属栏目:[大数据] 日期:2020-12-16 热度:118
import "bufio" bufio包实现了有缓冲的I/O。它包装一个io.Reader或io.Writer接口对象,创建另一个也实现了该接口,且同时还提供了缓冲和一些文本I/O的帮助函数的对象。 一、常量 const ( // 用于缓冲一个token,实际需要的最大token尺寸可能小一些,例如缓冲[详细]
-
一个极其简单的用golang net写的tcpip echoserver
所属栏目:[大数据] 日期:2020-12-16 热度:114
一个极其简单的用golang net写的tcpip echoserver 关键字:linux golang tcpip echoserver 虽然然效率不是很理想,但是可以给初学者参考 package main import ( "fmt" "net" "os" "runtime" ) func doEcho(c net.Conn) { defer c.Close() for { buf := make([详细]
-
[Golang]优秀开源库剖析
所属栏目:[大数据] 日期:2020-12-16 热度:135
原创文章,转载请注明出处:服务器非业余研究 http://blog.csdn.net/erlib 作者Sunface 1.blelve 地址:https://github.com/blevesearch/bleve 介绍: 现代化的文本索引库,可以做多种形式的索引及搜索查询,对于文档内容索引应该是非常好用的. 2.cockroach 地[详细]
-
[Golang] groupcache的简单例子
所属栏目:[大数据] 日期:2020-12-16 热度:113
在网上查了挺多groupcache的相关信息,但是搜出来大部分都是copy,实际的例子也没有,所以就看了下源码,也在golang-nuts上问了,github上搜索了一些groupcache的使用例子,在此作个总结,目前对这个缓存库还仅处于了解状态 大概介绍 其实关于groupcache的介[详细]
-
golang 中 cannot use ** (type interface {}) as type **解决方
所属栏目:[大数据] 日期:2020-12-16 热度:150
在beego中从session中取值的时候,取出来的是intergace{},但是我先返回的值是int型,或者是string,这个时候会出现一个错误: cannot use ** (变量)(type interface {}) as type **(类型) 错误代码: func CurrentId(ctx *context.Context) int { userS[详细]
-
GoConvey断言err和bool的方法
所属栏目:[大数据] 日期:2020-12-16 热度:98
最近在写单元测试的时候GoConvey.So()断言err是否nil和bool是否为true的时候不知道用哪个,于是找了这份官方文档,以后也可以参考。 GoConvey comes with a lot of standard assertions you can use with So(). General Equality So(thing1,ShouldEqual,th[详细]
-
golang通过socket与java通讯
所属栏目:[大数据] 日期:2020-12-16 热度:118
作为计算机专业的学生(虽然很水),直到今天还有二年级的师弟问我计算机专业学计算机网路基础究竟有什么作用?项目中是否只能用一门编程语言?……解释了半天,没能解释明白(原谅计算机专业读久了,口才真的变烂了),于是写下这篇文章。 本文主要是实现ec[详细]
-
Golang Import使用入门
所属栏目:[大数据] 日期:2020-12-16 热度:128
我们在写Go代码的时候经常用到import这个命令用来导入包文件,而我们经常看到的方式参考如下: import( "fmt") 然后我们代码里面可以通过如下的方式调用 fmt.Println("hello world") 上面这个fmt是Go语言的标准库,他其实是去goroot下去加载该模块,当然Go的[详细]
-
golang 阻塞模式选择
所属栏目:[大数据] 日期:2020-12-16 热度:155
packagemainimport("fmt""time")funcmain(){test_chan1()//test_chan2()}functest_chan1(){x:=make([]chanint,10)fori:=0;i10;i++{x[i]=make(chanint,1)gofunc(xxchanint,iiint){//do_something()xx-ii}(x[i],i)}forj:=0;j10;j++{fmt.Printf("%v-",-x[j])}}f[详细]
-
Golang和Erlang的并发调度浅析
所属栏目:[大数据] 日期:2020-12-16 热度:92
Go 语言和 Erlang 都是面向并发应用的语言,都采用轻量级线程和消息传递模型。尽管Go在语法上也支持共享,但必须以通信的方式同步方能保证其正确性。Erlang则是完全不支持进程间的共享,状态信息完全需要依靠消息彼此传递。 从底层来看,在 Google 官方编译[详细]
-
Golang和Erlang的IO调度浅析
所属栏目:[大数据] 日期:2020-12-16 热度:180
之前关于调度器的对比分析的文章,在结束时遗留了一些问题:当系统出现高并发的IO访问时,如一个网络服务器通常要并发处理成百上千的链接,每个链接可能都是由一个用户任务执行的,那么将会出现大量阻塞的IO操作,如果为每个阻塞操作都单独分配一个OS线程,[详细]
-
Golang和Erlang消息传递机制对比
所属栏目:[大数据] 日期:2020-12-16 热度:72
上一篇文章介绍了 Go 和 Erlang 在调度器的实现,本文将简要介绍这两种并发语言的消息传递机制 简要对比 Erlang和Go虽然在实现及功能上差异较大,但是都支持高并发的轻量级用户任务(Erlang的轻量进程,Go的Goroutine), 并且都采用了消息传递的方式作为任[详细]
-
[Golang]OS系统调用浅析
所属栏目:[大数据] 日期:2020-12-16 热度:187
上回讲Goroutine状态变换的时候,遗留了一部分关于Syscall处理的内容,这次打算把Go语言对Syscall的处理机制系统的总结一下,放在今天这篇文章中。 Go 语言库对Syscall的封装 我们知道Go是一门面向系统级开发的Native编程语言,与C/C++ 类似,Go的编译器会直[详细]
