一个Web应用从 浏览器向服务器发送请求(Request)开始,到服务器根据请求做出相应响应(Response)结束,整个流程中服务器的控制核心无疑是:服务器从HTTP Request中提取请求路径(URL)并找到对应的处理程序(Handler)处理请求,最后返回结果。 我要晨读

已有1051人晨读

最近,我读到一些大肆宣传Go语言最新垃圾回收器的文章,这些文章对垃圾回收器的描述让我感到有些厌烦。这些文章有些是来自Go项目。他们宣称GC技术正迎来巨大突破。 我要晨读

已有586人晨读

HTTP/2被设计为解决HTTP/1.x的许多缺陷。当代网页使用了许多资源:HTML、样式表、脚本、图片等等。在HTTP/1.x中这些资源每一个都必须明确地请求。这可能是一个很慢的过程。浏览器从获取HTML开始,然后在它解析和评估页面的时候,增量地获取更多的资源。因为服务器必须等待浏览器做每一个请求,网络经常是空闲的和未充分使用的。 我要晨读

已有617人晨读

这两天用Go写了第一个项目,还在demo阶段,后续会持续记录关于Go开发的一些坑点。 项目叫做bigpipe,是为了解决服务之间异步Http调用而生的,用Go实现起来非常的简单,并发能力也很不错。 我要晨读

已有727人晨读

闭包包含自由(未绑定到特定对象)变量;这些变量不是在这个代码块内或者任何全局上下文中定义的,而是在定义代码块的环境中定义(局部变量)。“闭包” 一词来源于以下两者的结合:要执行的代码块(由于自由变量被包含在代码块中,这些自由变量以及它们引用的对象没有被释放)和为自由变量提供绑定的计算环境(作用域)——摘自百度 我要晨读

已有549人晨读

当前互联网时代,怎么少的了高并发呢?高并发和高可用一样, 已经变成各个系统的标配了,如果你的系统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人晨读