學(xué)習(xí)Go語言的一些感受,不一定準(zhǔn)確。
假如發(fā)生戰(zhàn)爭,JAVA一般都是充當(dāng)航母戰(zhàn)斗群的角色。
一旦出動,就是護衛(wèi)艦、巡洋艦、航母艦載機、預(yù)警機、電子戰(zhàn)飛機、潛艇等等
浩浩蕩蕩,殺將過去。
(JVM,數(shù)十個JAR包,Tomcat中間件,SSH框架,各種配置文件...天生就是重量級的,專為大規(guī)模作戰(zhàn))
而GO語言更像F35戰(zhàn)斗轟炸機
單槍匹馬,悄無聲息,投下炸彈然后走人。
專屬轟炸機,空戰(zhàn)也會一點點.
實在搞不定,就叫它大哥F22。
(GO是編譯型語言,不需要依賴,不需要虛擬機,可以調(diào)用C代碼并且它足夠簡單,卻非常全面)
計劃Go語言學(xué)習(xí)的知識點
1.搭建Http服務(wù)
2.連接數(shù)據(jù)庫
3.本地IO
4.多線程
5.網(wǎng)絡(luò)
6.調(diào)用本地命令
7.調(diào)用C語言代碼
首先,搭建一個靜態(tài)的服務(wù)器
我寫程序喜歡使用HTML通過AJAX發(fā)送JSON請求到后端處理。
HttpServer.go
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)
}
}
網(wǎng)上看到一個更BT的方法:
import (
"net/http"
)
func main() {
http.Handle("/", http.FileServer(http.Dir("/tmp/static/")))
http.ListenAndServe(":8080", nil)
}
將EasyUI前端框架解壓到 /tmp/static 目錄下:
在GOPATH下執(zhí)行
這樣Go語言以不到50行代碼,編譯之后不到7M的可執(zhí)行文件,就實現(xiàn)了一個簡易的靜態(tài)服務(wù)器。
標(biāo)簽:運城 楚雄 深圳 喀什 湘潭 本溪 九江 晉城
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Go語言實現(xiàn)簡單的一個靜態(tài)WEB服務(wù)器》,本文關(guān)鍵詞 語言,實現(xiàn),簡單,的,一個,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。