当前互联网时代,怎么少的了高并发呢?高并发和高可用一样, 已经变成各个系统的标配了,如果你的系统QPS没有个大几千上万,都不好意思跟人打招呼,虽然可能每天的调用量不超过100。 我要晨读

已有660人晨读

当开发http 接口的时候,往往我们会关心开发的server能承受多少压力,这时候一个比较常用的工具是 apache bench。一部分情况下ab工具确实能满足需求,但是很多时候并不能,需要分布式式测试工具。 我要晨读

已有879人晨读

RWMutex,读写锁,又称“读写互斥锁”。 读写锁简单来说就是可以由任意数量的读者同时使用,或者只由一个写者使用的锁。 我要晨读

已有715人晨读

讲解调度器的基本概念 go语言的作者实现的C的协程库 libtask 源码分析,以理解协程的原理 golang的调度器原理 我要晨读

已有462人晨读

在开发pgx(一个针对Go语言的PostgreSQL driver)的时候,有好几次我都需要在20多个代码分支间跳转。通常我会选用switch语句。还有个更加可读的实现方法是使用函数map。我一开始认为用switch语句进行分支跳转比一个map查找和函数调用更快。数据库驱动(database driver)的性能是一个很重要的考量,所以在做任何改动前,有必要对它们的影响做一下慎重地研究。 我要晨读

已有503人晨读

每次来一个Server的连接,就新开一个Client的连接。用一个goroutine从server拷贝到client,再用另外一个goroutine从client拷贝到server。任何一方断开连接,双向都断开连接。 我要晨读

已有1100人晨读

在构建BST的结构时候,需要导入以下包,作用都很简单分别是提示Error,打印以及Log相关内容: 我要晨读

已有489人晨读

为了快速回顾Go基本的语法知识,打算用Go中的基本语法以及特性来实现一些常见的数据结构和排序算法,通过分析如何实现一些基本的数据结构,可以很快学习Go的语法特性。记忆更加深刻,掌握更加迅速。这是我认为学习一门新语言入门最好的方式。这也是方便自己以后需要用Go来写东西的一种前期准备,到时候就不用去翻一些教程了。系列博文的第一篇就从如何实现List开始。 我要晨读

已有632人晨读

微服务架构让隔离故障变为可能,可以通过明确定义的服务边界来隔离故障。但是像在每个分布式系统中一样,网络,硬件或应用程序每个层面都有可能出错。由于服务依赖关系,任何组件都有可能暂时无法为其消费者服务。为了尽量减少部分中断的影响,我们需要构建容错服务(services),这样我们就可以优雅地来应对某些类型的中断。 我要晨读

已有592人晨读

在我们编写web服务端程序的时候,我们可能会对一些甚至全部的Http Request统一处理,比如我们记录每个访问的Request,对提交的Form表单进行映射等,要达到这些目的,比较优雅的做法是Http 中间件。 我要晨读

已有522人晨读

这是一篇面向即将学习 go 语言并且对指针理念或者 go 的指针类型不是很了解的程序员的内容 我要晨读

已有471人晨读

Golang 的内存管理基于 tcmalloc,可以说起点挺高的。但是 Golang 在实现的时候还做了很多优化,我们下面通过源码来看一下 Golang 的内存管理实现。下面的源码分析基于 go1.8rc3。 我要晨读

已有567人晨读

有并发,就有资源竞争,如果两个或者多个goroutine在没有相互同步的情况下,访问某个共享的资源,比如同时对该资源进行读写时,就会处于相互竞争的状态,这就是并发中的资源竞争。 我要晨读

已有479人晨读

* 连接池中连接类型为interface{},使得更加通用 * 链接的最大空闲时间,超时的链接将关闭丢弃,可避免空闲时链接自动失效问题 * 使用channel处理池中的链接,高效 我要晨读

已有533人晨读

goraft是Raft协议的Golang版本的实现,项目地址为:goraft/raft。整个代码质量较高,值得仔细品味。因此,整理了该博文探究下其内部实现。 我要晨读

已有662人晨读

现有一个tcp客户端程序,需定期从服务器取数据,但由于种种原因(网络不稳定等)需要自动重连。 我要晨读

已有706人晨读

本文讨论的代码质量指的是代码本身的质量,包括复杂度、重复率、代码风格等要素。代码是团队的共同财产,代码质量是团队技术水平和管理水平的直接体现。 我要晨读

已有603人晨读

最近尝试用Go写程序。写了一个tcp网络服务,跑起来之后会把所有的CPU都跑到了100%,略吓人。 经过简单分析发现了问题所在 我要晨读

已有682人晨读