Go語言實現靜態伺服器
學習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
網上看到一個更BT的方法..
將EasyUI前端框架解壓到 /tmp/static 目錄下
在GOPATH下執行
go run HttpServer.go --path=/tmp/static
檢視網頁,一切正常。
這樣Go語言以不到50行程式碼,編譯之後不到7M的可執行檔案,就實現了一個簡易的靜態伺服器。
假如發生戰爭,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的可執行檔案,就實現了一個簡易的靜態伺服器。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29254281/viewspace-1257557/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- C 語言實現使用靜態陣列實現迴圈佇列陣列佇列
- Go語言實現RPCGoRPC
- go語言實現掃雷Go
- go語言依賴注入實現Go依賴注入
- go語言實現ssh打隧道Go
- Go語言interface底層實現Go
- GO語言 實現埠掃描Go
- Go語言實現TCP通訊GoTCP
- 線性迴歸 go 語言實現Go
- Go語言實現的Java Stream APIGoJavaAPI
- Go語言map的底層實現Go
- 檔案複製(Go語言實現)Go
- 使用Go語言實現爬蟲功能Go爬蟲
- 現代程式語言系列1:靜態型別趨勢型別
- Scala: 感覺像動態的靜態語言
- Go語言實現HTTPS加密協議GoHTTP加密協議
- Go 語言實現 QQ 掃碼登陸Go
- Go語言實現位元組記錄鎖Go
- go語言使用切片實現線性表Go
- Go 語言實現解析器翻譯Go
- 使用Go語言實現簡單MapReduce框架Go框架
- 實現一個簡易的靜態伺服器伺服器
- node靜態伺服器斷點續傳實現伺服器斷點
- 計算機語言:編譯型/解釋型、動態語言/靜態語言、強型別語言/弱型別語言計算機編譯型別
- Go 語言實踐(一)Go
- Go 語言實戰 GraphQLGo
- C語言--靜態區域性變數C語言變數
- C語言的本質(34)——靜態庫C語言
- go語言實現自己的RPC:go rpc codecGoRPC
- Go語言實現布穀鳥過濾器Go過濾器
- 漏桶、令牌桶限流的Go語言實現Go
- 快收藏!最全GO語言實現設計模式Go設計模式
- Go語言實現設計模式之命令模式Go設計模式
- nodejs實現靜態伺服器與react前端搭配NodeJS伺服器React前端
- 創業,你選擇靜態還是動態語言?創業
- Go語言————1、初識GO語言Go
- c 語言實現 tcp/udp 伺服器功能TCPUDP伺服器
- go語言實戰嚮導Go