网站首页 成长录 “慢生活”不是懒惰,放慢速度不是拖延时间,而是让我们在生活中寻找到平衡。
Go Slice 最大容量大小是怎么来的
image原文地址:[GoSlice最大容量大小是怎么来的](https://github.com/EDDYCJY/blog/blob/master/golang/2019-01-06-Go-Slice-%E6%9C%80%E5%A4%A7%E5%AE%B9%E9%87%8F%E5%A4%A7%E5%B0%8F%E6%...
阅读全文
Golang 编译原理 计算器(通俗易懂)
**本文不需要你掌握任何编译原理的知识。只需要看懂简单的golang语言即可,完整的代码示例在,代码是从[writinganinterpreteringo](https://links.jianshu.com/go?to=https%3A%2F%2Fgithub.com%2FOhBonsai%2Freading-not...
阅读全文
Golang并发:再也不愁选channel还是选锁
周末又到了,为大家准备了一份实用干货:如何使用channel和Mutex解决并发问题,利用周末的好时光,配上音乐,思考一下吧?。来,问自己个问题:**面对并发问题,是用channel解决,还是用Mutex解决**?如果自己心里还没有清晰的答案,那就读下这篇文章,你会了解到:*使用channel解决并发问题的核心思路和示...
阅读全文
总结了才知道,原来channel有这么多用法!
这篇文章总结了channel的10种常用操作,以一个更高的视角看待channel,会给大家带来对channel更全面的认识。在介绍10种操作前,先简要介绍下channel的使用场景、基本操作和注意事项。channel的使用场景把channel用在**数据流动的地方**:1.消息传递、消息过滤2.信号广播3.事件订阅与广...
阅读全文
75.多端口监听和各端口各干各的事儿
一个应用不会只做一件事情,或只完成一个任务。通常是既要显示WEB页面,也要做长链接,可能你还同时需要给手机端提供数据服务。那么,我需要在一个应用服务端,实现同时为多个请求的业务服务。这些服务通常是不在一个端口实现的。利用go语言的端口监听和协程,实现一下这个。建立一个项目,假设我们需要访问的端口有两个:25000,25...
阅读全文
来,控制一下 Goroutine 的并发数量
image原文地址:[来,控制一下Goroutine的并发数量](https://github.com/EDDYCJY/blog/blob/master/golang/2019-01-20-%E6%9D%A5-%E6%8E%A7%E5%88%B6%E4%B8%80%E4%B8%8Bgoroutine%E7%9A%84%...
阅读全文
golang中bufio包
一、介绍go标准库中的bufio最近用golang写了一个处理文件的脚本,由于其中涉及到了文件读写,开始使用golang中的io包,后来发现golang中提供了一个bufio的包,使用这个包可以大幅提高文件读写的效率,于是在网上搜索同样的文件读写为什么bufio要比io的读写更快速呢?根据网上的资料和阅读源码,以下来详...
阅读全文
Golang RabbitMQ 自动重连/重发生产者
背景Golang里面采用来连接`rabbitmq`,使用之后发现这个库比较底层,只提供协议的封装。这个库用到生产环境不合适,包装了一层以提供更加稳定的功能,目标***断线重连:**这个需求不过分,生产环境各种网络问题,最起码的重连要支持,支持重连次数***消息重发:**这个要求不过分,Rabbitmq有消息确认机制关键...
阅读全文
Golang 定时任务管理
本文基于实现了一个CrontabJobManager。更加容易使用,同时也能够满足更加复杂的场景。,如果有用,欢迎点赞,欢迎讨论,欢迎找茬。需求在开发中,经常遇到一些需要定时任务的场景。各个语言都有定时语言的库,[GolangCron](https://github.com/robfig/cron/tree/v2)提供...
阅读全文
Golang并发模型:轻松入门select
之前的文章都提到过,**Golang的并发模型都来自生活,select也不例外**。举个例子:我们都知道一句话,“吃饭睡觉打豆豆”,这一句话里包含了3件事:1.妈妈喊你吃饭,你去吃饭。2.时间到了,要睡觉。3.没事做,打豆豆。在Golang里,select就是干这个事的:到吃饭了去吃饭,该睡觉了就睡觉,没事干就打豆豆。...
阅读全文
go cache2go分析
该项目github源码链接:该开源项目特点是代码量少,核心代码只有三个文件,是一个用Go实现的并发安全的缓存库,适合学习读写锁、goroutine、map操作。特性:1)并发安全2)可设置每条缓存的过期时间。3)内置缓存访问次数4)自调节的缓存过期检查5)可设置缓存增加/删除回调函数内容:cacahe.go、cache...
阅读全文
go gomemcache包源码分析
因为beego中的cache模块中的子模块memcached引用了这个包,所以也对这包的源码进行分析了下。花了一定的时间编写整理这篇博客,这个包一共两个文件,。关于memcache学习,可以到这边教程学习1)funcNew(server...string)*Client用法:mc:=memcache.New("127....
阅读全文
golang 使用组合的方式实现继承
摘要_golang并非完全面向对象的程序语言,为了实现面向对象的继承这一神奇的功能,golang允许struct间使用匿名引入的方式实现对象属性方法的组合_组合使用注意项*使用匿名引入的方式来组合其他struct*默认优先调用外层方法*可以指定匿名struct以调用内层方法代码事例__packagemainimport...
阅读全文
Golang并发模型:轻松入门协程池
goroutine是非常轻量的,不会暂用太多资源,基本上有多少任务,我们可以开多少goroutine去处理。但有时候,我们还是想控制一下。比如,我们有A、B两类工作,不想把太多资源花费在B类务上,而是花在A类任务上。对于A,我们可以来1个开一个goroutine去处理,对于B,我们可以使用一个协程池,协程池里有5个线程...
阅读全文
判断Golang接口是否实现
今天在看beegoconfig模块fake.go文件的时候,看到var_Configer=new(fakeConfigContainer)这行代码,一开始不懂这行代码的功能是什么?后面了解到这行代码的作用是判断fakeConfigContainer结构体是否实现了Configer这个接口案例:__typeAinterf...
阅读全文