2019
12-26
12-26
图解Go里面的WaitGroup了解编程语言核心实现源码 HOT
在cpu内有一个cache line的缓存,这个缓存通常是8个字节的长度,在intel的cpu中,会保证针对一个cache line的操作是原子,如果只有8个字节很有可能会出现上面的这种情况,即垮了两个cache line, 这样不论是在原子操作还是性能上可能都会有问题
继续阅读 >
PHP 代码分享
MongoDB 教程
正则表达式
jQuery 教程
JavaScript 代码片段
PHP7 教程
Go语言提供了一个error类型,专门用来表示程序出现异常的错误信息。但是有时候,error本身提供的这些错误信息不能完全满足我们的要求,这种情况下我们就需要自己去改造error,来实现自己希望的error格式以及内容。
继续阅读 >
很多 C 语言或者 Unix 开发者听到 select 想到的都是系统调用,而谈到 I/O 模型时最终大都会提到基于 select、poll 和 epoll 等函数构建的 IO 多路复用模型,我们在这一节中即将介绍的 Go 语言中的 select 关键字其实就与 C 语言中的 select 有比较相似的功能。
这一节会介绍 Go 语言中的 select 的实现原理,包括 select 的结构和常见问题、编译期间的多种优化以及运行时的执行过程。
继续阅读 >
,我们可以看出来,条件变量内部会包含一个Locker的对象,这个Locker是一个interface,只要支持Lock与Unlock两个方法,就有资格成为Locker的一个对象。也就是说我们要使用条件变量,必须要先有一个mutex类似的锁。
继续阅读 >
当我们在一个匿名的遥测和分析系统上工作时,我们的目标是能够处理来自数百万终端的大量的POST请求。Web处理程序将接收一个JSON文档,其中可能包含需要写入Amazon S3的许多有效负载的集合,这是为了使map-reduce系统稍后操作这个数据。
继续阅读 >
可直接编译成可执行文件,不依赖任何东西,部署就是扔一个文件上去就完成了。这点非常重要,无论是个人开发还是工作中的很多任务,尤其在需要到服务器上跑的最方便了,不需要配置环境什么的,相比Python好太多。
继续阅读 >
谷歌的“20%时间”工作方式,允许工程师拿出20%的时间来研究自己喜欢的项目。语音服务Google Now、谷歌新闻Google News、谷歌地图Google Map上的交通信息等,全都是20%时间的产物。
Go语言最开始也是20%时间的产物。
继续阅读 >
排序:优化查询的根本,插入时进行排序实际上就是为了优化查询的效率。
页:用于减少IO次数,还可以利用程序局部性原理,来稍微提高查询效率。
页目录:用于规避链表的软肋,避免在查询时进行链表的扫描。
多页:数据量增加的情况下开辟新页来保存数据。
目录页:“特殊的页目录”,其中保存的数据是页的地址。查询时可以通过目录页快速定位到页,避免多页的扫描。
继续阅读 >
线上某集群峰值TPS超过100万/秒左右(主要为写流量,读流量很低),峰值tps几乎已经到达集群上限,同时平均时延也超过100ms,随着读写流量的进一步增加,时延抖动严重影响业务可用性。该集群采用mongodb天然的分片模式架构,数据均衡的分布于各个分片中,添加片键启用分片功能后实现完美的负载均衡。
继续阅读 >
在调研容器监控系统的时候,其实是有很多选择的,比如docker自带的docker stats命令,Scout,Data Dog,Sysdig Cloud,Sensu Monitoring Framework,CAdvisor等。
通过docker stats命令可以很方便的看到当前宿主机上所有容器的CPU,内存以及网络流量等数据。但是docker stats命令的缺点就是统计的只是当前宿主机的所有容器,而获取的监控数据是实时的,没有地方存储,也没有报警功能。
继续阅读 >
GitHub Pages大家可能都知道,常用的做法,是建立一个gh-pages的分支,通过setting里的设置的GitHub Pages模块可以自动创建该项目的网站。
这里经常遇到的痛点是,master遇到变更,经常需要去sync到gh-pages,特别是纯web前端项目,这样的痛点是非常地痛。
Github官方可能嗅觉到了该痛点,出了个master当作网站是选项,太有用了。
继续阅读 >
从PHP程序员的角度来说,我觉得有以下几点值得你入手Go语言:
1. Go语言简单,容易上手。你可以很快的上手,开发测试运维Go服务。
2. Go语言有效的提升了并发编程的体验,不再有复杂的并发和控制方式。
3. Go语言的常用库很丰富。基本Web开发,后端编程,网络编程基本上都有。
4. Go语言拥有C语言的灵活,拥抱底层,有着Python的简约,快速开发。
继续阅读 >
本系列文章,将会以编程开发中需求最大、应用最广的Web开发为例,一步一步的学习Go语言。当看完本系列,您能够清晰的了解Go语言Web开发的基本原理,您会惊叹于Go语言的简洁、高效和新鲜。
继续阅读 >