go 语言实现一个简单的 web 服务器
学习Go语言的一些感受,不一定准确。
假如发生战争,JAVA一般都是充当航母战斗群的角色。
一旦出动,就是护卫舰、巡洋舰、航母舰载机、预警机、电子战飞机、潜艇等等
浩浩荡荡,杀将过去。
(JVM,数十个JAR包,Tomcat中间件,SSH框架,各种配置文件...天生就是重量级的,专为大规模作战)
而GO语言更像F35战斗轰炸机
单枪匹马,悄无声息,投下炸弹然后走人。
专属轰炸机,空战也会一点点.
实在搞不定,就叫它大哥F22。
(GO是编译型语言,不需要依赖,不需要虚拟机,可以调用C代码并且它足够简单,却非常全面)
计划Go语言学习的知识点
1.搭建Http服务
2.连接数据库
3.本地IO
4.多线程
5.网络
6.调用本地命令
7.调用C语言代码
首先,搭建一个静态的服务器
我写程序喜欢使用HTML通过AJAX发送JSON请求到后端处理。
HttpServer.go
- package main
- import (
- "flag"
- "io/ioutil"
- "log"
- "net/http"
- "os"
- "strings"
- )
- var realPath *string
- func staticResource(w http.ResponseWriter, r *http.Request) {
- path := r.URL.Path
- request_type := path[strings.LastIndex(path, "."):]
- switch request_type {
- case ".css":
- w.Header().Set("content-type", "text/css")
- case ".js":
- w.Header().Set("content-type", "text/javascript")
- default:
- }
- fin, err := os.Open(*realPath + path)
- defer fin.Close()
- if err != nil {
- log.Fatal("static resource:", err)
- }
- fd, _ := ioutil.ReadAll(fin)
- w.Write(fd)
- }
- func main() {
- realPath = flag.String("path", "", "static resource path")
- flag.Parse()
- http.HandleFunc("/", staticResource)
- err := http.ListenAndServe(":8080", nil)
- if err != nil {
- log.Fatal("ListenAndServe:", err)
- }
- }
网上看到一个更BT的方法..
- package main
- import (
- "net/http"
- )
- func main() {
- http.Handle("/", http.FileServer(http.Dir("/tmp/static/")))
- http.ListenAndServe(":8080", nil)
- }
将EasyUI前端框架解压到 /tmp/static 目录下
在GOPATH下执行
go run HttpServer.go --path=/tmp/static
查看网页,一切正常。

这样Go语言以不到50行代码,编译之后不到7M的可执行文件,就实现了一个简易的静态服务器。
go 语言实现一个简单的 web 服务器的更多相关文章
- 自己动手模拟开发一个简单的Web服务器
开篇:每当我们将开发好的ASP.NET网站部署到IIS服务器中,在浏览器正常浏览页面时,可曾想过Web服务器是怎么工作的,其原理是什么?“纸上得来终觉浅,绝知此事要躬行”,于是我们自己模拟一个简单的W ...
- 一个简单的web服务器
写在前面 新的一年了,新的开始,打算重新看一遍asp.net本质论这本书,再重新认识一下,查漏补缺,认认真真的过一遍. 一个简单的web服务器 首先需要引入命名空间: System.Net,关于网络编 ...
- [置顶] 在Ubuntu下实现一个简单的Web服务器
要求: 实现一个简单的Web服务器,当服务器启动时要读取配置文件的路径.如果浏览器请求的文件是可执行的则称为CGI程序,服务器并不是将这个文件发给浏览器,而是在服务器端执行这个程序,将它的标准输出发给 ...
- Tomcat剖析(一):一个简单的Web服务器
Tomcat剖析(一):一个简单的Web服务器 1. Tomcat剖析(一):一个简单的Web服务器 2. Tomcat剖析(二):一个简单的Servlet服务器 3. Tomcat剖析(三):连接器 ...
- 自己模拟的一个简单的web服务器
首先我为大家推荐一本书:How Tomcat Works.这本书讲的很详细的,虽然实际开发中我们并不会自己去写一个tomcat,但是对于了解Tomcat是如何工作的还是很有必要的. Servlet容器 ...
- 利用 nodeJS 搭建一个简单的Web服务器(转)
下面的代码演示如何利用 nodeJS 搭建一个简单的Web服务器: 1. 文件 WebServer.js: //-------------------------------------------- ...
- 《深度解析Tomcat》 第一章 一个简单的Web服务器
本章介绍Java Web服务器是如何运行的.从中可以知道Tomcat是如何工作的. 基于Java的Web服务器会使用java.net.Socket类和java.net.ServerSocket类这两个 ...
- 一个简单的Web服务器-支持Servlet请求
上接 一个简单的Web服务器-支持静态资源请求,这个服务器可以处理静态资源的请求,那么如何处理Servlet请求的呢? 判断是否是Servlet请求 首先Web服务器需要判断当前请求是否是Servle ...
- 一个简单的Web服务器-支持静态资源请求
目标 实现一个简单的Web服务器,能够根据HTTP请求的URL响应对应的静态资源,如果静态资源不存在则响应404. HttpServer 使用ServerSocket实现的一个服务器,request根 ...
随机推荐
- 免費查看SQL PLAN的工具 - SQL Sentry Plan Explorer
今天 Terry大 介紹給小弟這個 SQL Sentry Plan Explorer 工具,可以用來看SQL Plan. 什麼? 用SSMS看不就很清楚了嗎? 這個Tool有把SQL Plan幫我們整 ...
- 游戏引擎中三大及时光照渲染方法介绍(以unity3d为例)
(转)游戏引擎中三大及时光照渲染方法介绍(以unity3d为例) 重要:在目前市面上常见的游戏引擎中,主要采用以下三种灯光实现方式: 顶点照明渲染路径细节 Vertex Lit Rendering ...
- 利用monkeyrunner、python脚本来做多设备多apk适配ui界面截屏的自动化测试
http://www.cnblogs.com/youxilua/archive/2011/11/25/2262715.html
- 聚类分析K均值算法讲解
聚类分析及K均值算法讲解 吴裕雄 当今信息大爆炸时代,公司企业.教育科学.医疗卫生.社会民生等领域每天都在产生大量的结构多样的数据.产生数据的方式更是多种多样,如各类的:摄像头.传感器.报表.海量网络 ...
- 前端路由两种模式:hash、history
随着 ajax 的使用越来越广泛,前端的页面逻辑开始变得越来越复杂,特别是spa的兴起,前端路由系统随之开始流行. 从用户的角度看,前端路由主要实现了两个功能(使用ajax更新页面状态的情况下): 记 ...
- 兴趣点 / 关键点( Interest point/Keypoint )
• 不同视角图片之间的映射 • 稳定局部特征点 • 可重复性.显著性 • 抗图片变换 • 外貌变换(亮度.光照) ...
- 2.2、CDH 搭建Hadoop在安装(安装Java Development Kit)
第2步:安装Java Development Kit 要安装Oracle JDK,您可以使用Cloudera Manager安装Cloudera提供的版本,也可以直接安装Oracle的其他版本. 继续 ...
- multi_compile
[multi_compile] Used to compile the shader code multiple times with different preprocessor directi ...
- iframe解决ajax主域和子域之间的跨域问题
在某些应用场景下,需要在主域中,调用子域中的某个接口,如果直接在主域中向子域发ajax请求,会报跨域错误,可以用iframe来解决这种跨域问题.假如主域为www.baidu.com,子域为baike. ...
- weechat 常用指令
添加服务器: /server add freenode irc.freenode.org 设置nick: /set irc.server.freenode.nicks "mynick,myn ...