nsq源码解析

最近刚刚把go的语法看完,寻思着看些开源项目,值得学习的go语言开源项目,beego的作者asta谢推荐nsq,这对于我们认识channel、分布式开发都有很大的帮助。nsq其实就是一个分布式消息中间件,鼎鼎大名的Kafka就是用java实现的一个MQ。 nsq环境部署 看源码前,首先还是要先会用,然后对整个项目有个大体的了解。 nsq文档,看这个文档就没问题了,最简单的方式是使用docker来部署。 nsq docker部署,文档上直接就有docker-compose,真是十分贴心。不过里面有处错误,会导致consumer.ConnectToNSQLookupd时出错。 version: '3' services: nsqlookupd: ...

MySQL 技术内幕:InnoDB 存储引擎

首先推荐下Draveness's Blog,他的文章深入浅出,很有学习价值,每篇文章我都会很认真地去学习。前面他写了好几篇关于InnoDB的文章,看完后意犹未尽,不过还是有些地方不是很明白。所以决定自己动手,把MySQL 技术内幕:InnoDB 存储引擎看完,解开了不少疑惑。 首先先提几个小问题: InnoDB的逻辑存储结构和磁盘的物理存储结构的关系? InnoDB存储引擎为什么在绝大多数情况下选择B+树建立索引? 插入根据自增顺序进行,B+树分裂会导致什么问题? 行锁和表锁的区别,有了S,X锁后为什么还需要IS,IX锁,可以解决什么问题? ...

自己动手写Docker

前面把Docker-Practice看完,基本了解了Docker的用法。还写了篇博客Docker的一些小实践,后来想深入了解Docker,买了浙大出的Docker容器与容器云,看起来很吃力,一直没能坚持看完。后来发现了自己动手写Docker这本书,从头开始教你写一个简易的Docker,非常适合进阶。看完后不仅对Docker有了更深的了解,还掌握了更多Linux相关的知识,收益很多。 基础技术 Namespace 命名空间 (namespaces) 是Linux内核的功能,它可以隔离一系列的系统资源。举个例子,我们可以开一个shell,在里面可以访问机器的任意文件,可以ps -ef查看所有的进程列表。而命名空间就相当于在机器里开辟了一台新机器给你用,你看不到宿主机器上别的信息。 ...

Docker的一些小实践

最近经常在本地写一些小应用玩玩,但是每当想部署到阿里云上就觉得好麻烦。突然想到了Docker,有了它,真的超级方便。接下去就介绍下学习的过程,和写的几个实例遇到的坑。 Docker学习书籍 网上都推荐一本浙大出的Docker容器与容器云,我特地买了一本。不过看起来很吃力,讲了很多细节,对初学者并不友好。还是建议先把Docker-Practice看完并实践下,等对Docker有了基本的了解,在找感兴趣的点去看浙大那本书,这样会更好点。 Docker实践 ghost博客 我自己的博客就是用的开源的ghost,当时是按照搭建Ghost博客来搭建的,花了不少时间。有了Docker,只需要一份docker-compose.yml就OK了。 version: ...

JSPatch实现分析

JSPatch十分小巧,能让APP具有热更新的能力。最早的一版1000行代码就搞定了,很值得学习探索。 前言 看JSPatch源码前,首先要明白编译型语言,解释性语言,脚本语言,动态语言,静态语言这几个概念。 编译型语言 这个最好理解,最早学的就是C/C++,由编译器把他编译成二进制文件,就可以直接运行,不需要再编译了,所以性能好。不过很多机器底层的CPU架构都不一样,所以不同的机器上面需要编译器重新编译,所以跨平台较差。 编译-解释型语言 计算机专业的话应该走的路都差不多,C/C+ ...