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根 ...
随机推荐
- 1.网站js文件获取
++++++++++++++++++++++ pls,input your domain like: http://111.com #coding:utf8 #encoding=utf8 import ...
- DAX2012 R3安装
安装程序跟DAX2009大同小异,不过这验证需要的组件也太多了,简直是.NET Framework大阅兵啊,各种版本都需要安装,特别是VC++从2008一直装到2012,有点崩溃... DEMO数据的 ...
- C++ AfxBeginThread的介绍/基本用法
AfxBeginThread 用户界面线程和工作者线程都是由AfxBeginThread创建的.现在,考察该函数:MFC提供了两个重载版的AfxBeginThread,一个用于用户界面线程,另一 ...
- Android源码50例汇总,欢迎各位下载(转载)
下载中心好资料很多,藏在各个角落,小弟在此帮大家做了一个整理,做了一个下载目录,方便大家选择性下载. 源码实例如下: <Android应用开发揭秘>源代码推荐 http://down.51 ...
- debug.keystare找不到的解决办法[转]
重装系统之后,丢失了debug.keystore,找了很久都没有找到,根据网上所讲的只要重新运行一个android项目;就会在avd中生成一个新的debug.keystroe,此法也没解决,索性直接重 ...
- Dapper使用总结
- jsonp封装成promise
首先将jsonp通过npm 安装引入js文件中,代码如下 import originJsonp from 'jsonp' export default function jsonp(url, data ...
- wget 报错 OpenSSL: error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failur
解决办法 换成 curl -O -L xxxxxxxx
- python网络编程之开启进程的方式
标签(空格分隔): 开启进程的方式 multiprocessing模块介绍: python中的多线程无法利用多核优势,如果想要充分地使用多核CPU的资源(os.cpu_count()查看),在pyth ...
- c++面向行的输入getline()和get()
来源:c++ primer plus 在c++里当我们输入一个字符串时习惯用cin,但是cin只能读取一段不含空格的字符串,如果我们需要读取一段包含空格的字符串时,就需要用到getline()或get ...