Junedayday Blog

六月天天的个人博客

0%

gin框架

gin是非常流行的一款HTTP框架。相较于原生的HTTP server,gin有很多改进点,主要在于3点:

  1. 上手简单,开发思路与原生HTTP基本一致
  2. 引入多个工具库,提高了开发效率
  3. 生态丰富,有许多开源的组件

围绕着gin框架,我们将展开今天的话题。

阅读全文 »

RPC框架

作为一名开发者,我们最常见的日常工作就是web类编程:即对于CRUD请求,开发相关的业务代码。

在Go语言中,常见的RPC包括HTTP/gRPC/Thrift等,但绝大多数的开发场景仍是基于HTTP。本文对RPC的讨论,主要是基于HTTP的场景。

如果我们能熟练地掌握一套主流RPC框架,至少能提升20%的开发效率,而优秀的框架能带来更大的帮助。提效是为了有更多时间提升个人能力,我们今天就先对RPC框架有一个概览。

阅读全文 »

概览

目前,Go语言在中国市场虽然蓬勃发展,但相较于JAVA语言的成熟面试体系,Go缺少了很多“八股文”性质的资料,出现了两个问题:

  1. 对新手来说,知识很难体系化;
  2. 对面试者来说,遇到的问题千奇百怪,甚至面试官之间的答案也不一样

那么,我将挑选五个概述类的问题,并给出我的思考,希望能对大家带来帮助。

阅读全文 »

在上一讲,我们梳理了EtcdServer的关键函数processInternalRaftRequestOnce里的四个细节。

其中,wait.Wait组件使用里,我们还遗留了一个细节实现,也就是请求的处理结果是怎么通过channel返回的。

1
2
3
4
5
6
7
8
9
10
11
select {
// 正常消息的返回,也就是我们本章要研究的
case x := <-ch:
return x.(*applyResult), nil
case <-cctx.Done():
proposalsFailed.Inc()
s.w.Trigger(id, nil)
return nil, s.parseProposeCtxErr(cctx.Err(), start)
case <-s.done:
return nil, ErrStopped
}
阅读全文 »