获得徽章 0
- #挑战每日一条沸点#
一般开发web项目,需要处理这些
路由匹配,参数获取,ORM持久化操作,日志
更高级一些,将使用redis,Elasticsearch,以及rpc远程调用
如果你是Java转行而来,你需要首先意识到一个问题:Go语言没有Spring那种包办的生态,需要各种框架拼装起来(祈求🎈有Spring这种角色吧)好在Go的设计就是两个字:简单,所以用起来倒是不难
目前,滴滴开源了Go语言的ioc框架go- spring,但是在Go的社区中,并没有使用ioc的风气,大家仍然使用手动管理依赖的模式(可能大多数是python和C++来的人的原因,如果都是Java来的,怕是早已风靡一时)
本文需要的知识储备:Go语言基础(基础语法,json,简易web服务)
从原生Web框架整起
Go语言是一名新生儿(相比隔壁Jvav,C艹老哥),所以Go语言诞生之时就能很轻松的进行主流Web开发(不依托框架),这在Java来看,是很可怕的事情,很难想象没有汤姆猫,Java的咖啡杯还能不能轻松端起来(包括Netty框架)
所以我们首先从Go原生框架做起,从内存存储到io操作,到数据库存储,一步步升级
展开赞过评论1 - #挑战每日一条沸点#
net/http -> fasthttp
地址:github.com
fasthttp号称比net/http快十倍,其优化的核心思路很简单:资源复用。
复用 goroutine,减轻 runtime 调度压力;
对象复用,大量使用 sync.Pool 减轻 GC 压力。
除了复用,还有其他的一些优化手段,例如尽量避免 string 与 []byte 的转换开销等。
这些优化技巧和最佳实践,在其 Github 主页上已经贴心给出:_github.com,建议阅读学习。
因为fasthttp的实现与标准库差距较大,所以它与net/http的 API 接口是不同的,这导致从net/http重构为fasthttp需要一些学习成本。
使用fasthttp的知名项目:Fiber、Gearbox、atreugo 等。展开赞过评论1