摘要 在之前的几篇文章中,我们从如何实现最简单的HTTP服务器,到如何对路由进行改进,到如何增加中间件.总的来讲,我们已经把Web服务器相关的内容大概梳理了一遍了.在这一篇文章中,我们将从最简单的一个main函数开始,慢慢重构,来研究如何把API设计的更加规范和具有扩展性. 1 构建一个Web应用 我们从最简单的开始,利用gin框架实现一个小应用. 在这这篇文章中,我先不使用MySQL和Redis,缓存和持久化相关的内容我将在以后的文章中提到.在这个系列中,我们主要还是聊聊与Web有关的内容.…
摘要 由于Golang优秀的并发处理,很多公司使用Golang编写微服务.对于Golang来说,只需要短短几行代码就可以实现一个简单的Http服务器.加上Golang的协程,这个服务器可以拥有极高的性能.然而,正是因为代码过于简单,我们才应该去研究他的底层实现,做到会用,也知道为什么这么用. 在本文中,会以自顶向下的方式,从如何使用,到如何实现,一点点的分析Golang中net/http这个包中关于Http服务器的实现方式.内容可能会越来越难理解,作者会尽量把这些源码讲的更清楚一些,希望对各位有…
摘要 在上一篇文章中,我们聊了聊在Golang中怎么实现一个Http服务器.但是在最后我们可以发现,固然DefaultServeMux可以做路由分发的功能,但是他的功能同样是不完善的. 由DefaultServeMux做路由分发,是不能实现RESTful风格的API的,我们没有办法定义请求所需的方法,也没有办法在API路径中加入query参数.其次,我们也希望可以让路由查找的效率更高. 所以在这篇文章中,我们将分析httprouter这个包,从源码的层面研究他是如何实现我们上面提到的那些功能.并…
摘要 在上一篇文章中,我们已经可以实现一个性能较高,且支持RESTful风格的路由了.但是,在Web应用的开发中,我们还需要一些可以被扩展的功能. 因此,在设计框架的过程中,应该留出可以扩展的空间,比如:日志记录.故障恢复等功能,如果我们把这些业务逻辑全都塞进Controller/Handler中,会显得代码特别的冗余,杂乱. 所以在这篇文章中,我们来探究如何更优雅的设计这些中间件. 1 耦合的实现方式 比如我们要实现一个日志记录的功能,我们可以用这种简单粗暴的方式: package main…
提示:本系列文章适合对Go有持续冲动的读者 初探golang web服务 golang web开发是其一项重要且有竞争力的应用,本小结来看看再golang中怎么创建一个简单的web服务. 在不适用web框架的情况下,可以使用net/http包搭建一个web服务. 这里我们使用net/http创建一个打印请求URL的web服务. package main import ( //"log" "fmt" "net/http" ) func main()…
本文为刚刚接触COM的程序员提供编程指南,解释COM服务器内幕以及如何用C++编写自己的接口.继上一篇COM编程入门之后,本文将讨论有关 COM服务器的内容,解释编写自己的COM接口和COM服务器所需要的步骤和知识,以及详细讨论当COM库对COM服务器进行调用时,COM服务器运行的 内部机制. 如果你读过上一篇文章.应该很熟悉COM客户端是怎么会事了.本文将讨论COM的另一端——COM服务器.内容包括如何用C++编写一个简单的不涉及 类库的COM服务器.深入到创建COM服务器的内部过程,毫无遮掩…
之前写了一篇为:golang web实战之一(beego,mvc postgresql) 听说iris更好: 1.  iris hello world package main import "github.com/kataras/iris" func main() { app := iris.New() app.Get("/", func(ctx iris.Context) { //ctx.HTML(`<p>hello world!</p>…
先普及用户通过 浏览器 访问网页 的过程: 网页内容是通过服务器运算得出的结果,将结果(网页代码)传输给浏览器,网页代码再通过浏览器运算(计算.渲染),最终展示在用户的眼前的. 至此,我们知道了有2个运算过程: 1.服务器运算 2.浏览器运算 而让电脑(网站服务器.你的个人电脑)乖乖执行运算,就需要编写程序脚本即程序代码. 而编写代码的过程就叫做:编程.编写代码的人叫做:程序员(又戏称:程序猿.攻城狮). 所以,由运算演变出: 1.服务器运算 -> 服务器脚本 2.浏览器运算 -> 浏览器脚本…
Go语言简介: Golang 简称 Go,是一个开源的编程语言,Go是从2007年末由 Robert Griesemer, Rob Pike, Ken Thompson主持开发,后来还加入了Ian Lance Taylor, Russ Cox等人,并最终于2009年11月开源,在2012年早些时候发布了Go 1稳定版本. 1.Go语言用途: Go 语言被设计成一门应用于搭载 Web 服务器,存储集群或类似用途的巨型中央服务器的系统编程语言. Go 语言在用于高性能分布式系统开发中,无疑比大多数其…
目录 Web入门 学习web路线 前端基础 三剑客的作用 BS架构 数据格式 HTTP协议 四大特性 数据格式 HTTP 状态码分类 状态码列表 案例:简易的BS架构 Web入门 什么是前端? 任何与操作系统打交道的界面都可以称之为"前端" 例如:手机界面(app) 电脑界面(软件) 平板界面(软件) 什么是后端? 不需要和用户打交道,不需要呈现给用户的逻辑结构,后端是控制核心逻辑的运行: 什么是全栈? 通俗的理解为前后端都会,但是不止于此: 学习web路线 接下来本类博文会分享前端的…