golang并发编程实践 -- 简单生产者消费者(with chan)
本文简单介绍如何用golang实现经典的生产者消费者模型。 golang语法简洁,凡可以通过几行代码解决的事情,绝不为了解决该问题而在语言中引入不必要的特性。这个和c++正好相反,c++是个庞大的怪物,我这么形容可能很多c++的fans心里要不舒服了,为了让你在看到诸如子类言论时能够心平气和,建议大家使用一下golang吧。本文不是介绍golang编程语言本身的文章,而是从golang如何让并发编程变得容易...阅读全文
本文简单介绍如何用golang实现经典的生产者消费者模型。 golang语法简洁,凡可以通过几行代码解决的事情,绝不为了解决该问题而在语言中引入不必要的特性。这个和c++正好相反,c++是个庞大的怪物,我这么形容可能很多c++的fans心里要不舒服了,为了让你在看到诸如子类言论时能够心平气和,建议大家使用一下golang吧。本文不是介绍golang编程语言本身的文章,而是从golang如何让并发编程变得容易...阅读全文
上一篇文章用golang中的channel实现了简单的消费者模型,下面的版本是用传统的锁技术实现的版本,相对比会发现golang提供的channel更好用。而且golang的channel可以完成很多在别的语言里需要很多代码才能实现的功能。以后陆续解答。 package main import ( "fmt" "sync" "time" ) type Queue struct { Elem []int Capacity int Front int Rear int Lock sync.Locker Cond *sync.Cond } func New() *Queue { theQueue := &Queue{} theQueue.Capacity = 10 theQueue.Elem = ...阅读全文
病猫 时光不再,仍可追忆。回想当年,沙场秋点兵,指点江山,书生意气,如今却如同病猫一样,懦弱、胆怯、不自信等等。何尝又有虎虎生威之态。生活的诱惑很多,我也总是迷失,错误的估算前景。而这种错误带来的致命之痛,如今我却不断遗忘,王者之威也渐渐消散于尽。原以为大学的自由会给我带来无尽的机会和荣耀,现在看来也灰飞烟灭了,现在只有Golang和POJ能够拯救我,带我重回巅峰。我的一生赌在这上面了,不成功便成ren。啊!颤抖吧!我回来了。 独行...阅读全文
序言 此前,我看过这样的一个提问“Yii2框架中,有必要再分离service层么?”,从别人的回答中,自己也收获了答案,但我觉得还需要有个活生生的粟子,才具有更加清晰明了和强有力的说服力。如对我的实战经历感兴趣的继续往下看,喜欢的还可以点击推荐和收藏。在举粟子前,我先讲讲service是什么?有什么作用吧?免得还有人糊涂。1、service是什么?在面向OO的系统里,service就是biz manager,在面向过程的系统里service就是TS脚本。2、service有什么作用?service层的作用就是把这些需要多个model参与的复杂业务逻辑单独封装出来,这些model之间不再发生直接的依赖,而是在service层内协同完成逻辑。service层的第一个目的其实就是对model层进行...阅读全文
欢迎各路golang大神、生力军加盟,一起搞事情~~ 互联网工程师文化,技术驱动,不亚于BAT的福利待遇,外加高速发展的业务和上升空间 http://job.didichuxing.com/social/p/2300 (职位描述是大数据平台,实际是分布式存储方向) 此外,还有java和前端开发招聘需求,欢迎大家投递简历。 简历可发邮箱 taodi@didichuxing.com ...阅读全文
package mainimport ( "crypto/md5" "fmt" "io" "strconv" "time")func main() { crutime := time.Now().Unix() fmt.Println("crutime-->", crutime) h := md5.New() fmt.Println("h-->", h) fmt.Println("strconv.FormatInt(crutime, 10)-->", strconv.FormatInt(crutime, 10)) io.WriteString(h, strconv.FormatInt(crutime, 10)) fmt.Println("h-->", h) token := fmt.Sprin...阅读全文
关于内存 计算机通过两个机制,去实现内存的高效使用。 第一种机制是虚拟内存。硬盘的容量其实是远远大于内存的(RAM),虚拟内存会在内存不足的时候,把不经常访问的内存的数据写到硬盘里。虽然说硬盘容量比较大,但是它的访问速度却很慢。如果内存和硬盘交换数据过于频繁,处理速度就会下降,计算机就会看上去像卡死了一样,这种现象被叫做抖动(Thrushing)。造成电脑蓝屏的主要原因之一就是抖动。 第二种机制就是垃圾回收(GC)。 虚拟内存的东西在计算机组成原理和操作系统的教科书里有相关的章节去讲。由于内容很多我就不多叙述了。主要来讲一下GC的事情。 GC 之前学习java以及参加java相关的面试,被问到关于相关GC的事情一直很是头疼,看了好多遍还是记不住,脑袋里只有隐隐约约的一些关键字,什么老年代、新...阅读全文
package main import ( "fmt" "os" ) type Student struct{ id int name string age int classroom int dorm int } var students []*Student type ManageStudent struct{} func (m *ManageStudent) AddStudent(s *Student){ students = append(students, s) fmt.Println("add success") } func (m *ManageStudent) DelStudent(id int){ var is_find = false for index, student...阅读全文