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根 ...
 
随机推荐
- [Linux]Linux下动态安装PHP扩展的一般方法(图)
			
---------------------------------------------------------------------------------------------------- ...
 - 去除文件BOM头工具
			
<?php /** * 用法:复制以下代码至新建的php文件中,将该php文件放置项目目录,运行即可.代码来源于网络. * chenwei 注. */ header('content-Type: ...
 - easyUi 表头排序按钮 bug
			
参考文章:https://www.shiqidu.com/p/81
 - MVC异步控制器加载一个网页的所有内容
			
public void PageAsync() { AsyncManager.OutstandingOperations.Increment(); WebRequest req = WebReques ...
 - BN和滑动平均
			
BN目的是使得每层训练的输出结果在同一分布下,实验证明不仅可以加速收敛速度,还可以提高准确度 因为如果想要计算所有图像的均值与方差,显然不太现实,所以每次计算每个batch的方差与均值,为了使得每个b ...
 - kafka 配置启动
			
Kafka配置(注意log.dirs不要配置在tmp目录下,因为该目录会被linux定时任务删除,会导致kafka崩溃)需要三个Kafka实例,分别安装在下面三个机器上:192.168.240.167 ...
 - Spring 手动 提交事务
			
1.配置文件 applicationContext.xml: <bean id="txManager"class="org.springframework.jdbc ...
 - Shiro在Spring session管理
			
会话管理 在shiro里面可以发现所有的用户的会话信息都会由Shiro来进行控制,那么也就是说只要是与用户有关的一切的处理信息操作都可以通过Shiro取得,实际上可以取得的信息可以有用户名.主机名称等 ...
 - 大数据入门到精通5--spark 的 RDD 的 reduce方法使用
			
培训系列5--spark 的 RDD 的 reduce方法使用 1.spark-shell环境下准备数据 val collegesRdd= sc.textFile("/user/hdfs/C ...
 - fiddler对浏览器、app抓包及证书安装(转)
			
http://blog.csdn.net/u011608531/article/details/50838227 1.fiddler对浏览器抓包 1.1 对浏览器的http的抓包 Capturing开 ...