佳木斯湛栽影视文化发展公司

主頁(yè) > 知識(shí)庫(kù) > Go語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單的一個(gè)靜態(tài)WEB服務(wù)器

Go語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單的一個(gè)靜態(tài)WEB服務(wù)器

熱門標(biāo)簽:呼叫中心市場(chǎng)需求 服務(wù)外包 地方門戶網(wǎng)站 鐵路電話系統(tǒng) 網(wǎng)站排名優(yōu)化 AI電銷 Linux服務(wù)器 百度競(jìng)價(jià)排名

學(xué)習(xí)Go語(yǔ)言的一些感受,不一定準(zhǔn)確。

假如發(fā)生戰(zhàn)爭(zhēng),JAVA一般都是充當(dāng)航母戰(zhàn)斗群的角色。
一旦出動(dòng),就是護(hù)衛(wèi)艦、巡洋艦、航母艦載機(jī)、預(yù)警機(jī)、電子戰(zhàn)飛機(jī)、潛艇等等
浩浩蕩蕩,殺將過(guò)去。
(JVM,數(shù)十個(gè)JAR包,Tomcat中間件,SSH框架,各種配置文件...天生就是重量級(jí)的,專為大規(guī)模作戰(zhàn))

而GO語(yǔ)言更像F35戰(zhàn)斗轟炸機(jī)
單槍匹馬,悄無(wú)聲息,投下炸彈然后走人。
專屬轟炸機(jī),空戰(zhàn)也會(huì)一點(diǎn)點(diǎn).
實(shí)在搞不定,就叫它大哥F22。
(GO是編譯型語(yǔ)言,不需要依賴,不需要虛擬機(jī),可以調(diào)用C代碼并且它足夠簡(jiǎn)單,卻非常全面)

計(jì)劃Go語(yǔ)言學(xué)習(xí)的知識(shí)點(diǎn)

1.搭建Http服務(wù)
2.連接數(shù)據(jù)庫(kù)
3.本地IO
4.多線程
5.網(wǎng)絡(luò)
6.調(diào)用本地命令
7.調(diào)用C語(yǔ)言代碼

首先,搭建一個(gè)靜態(tài)的服務(wù)器
我寫(xiě)程序喜歡使用HTML通過(guò)AJAX發(fā)送JSON請(qǐng)求到后端處理。

HttpServer.go

復(fù)制代碼 代碼如下:

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)
        }
}

網(wǎng)上看到一個(gè)更BT的方法:

復(fù)制代碼 代碼如下:

package main

import (
        "net/http"
)

func main() {
        http.Handle("/", http.FileServer(http.Dir("/tmp/static/")))
        http.ListenAndServe(":8080", nil)
}

將EasyUI前端框架解壓到 /tmp/static 目錄下:

在GOPATH下執(zhí)行

復(fù)制代碼 代碼如下:

go run HttpServer.go --path=/tmp/static

查看網(wǎng)頁(yè),一切正常。

這樣Go語(yǔ)言以不到50行代碼,編譯之后不到7M的可執(zhí)行文件,就實(shí)現(xiàn)了一個(gè)簡(jiǎn)易的靜態(tài)服務(wù)器。

您可能感興趣的文章:
  • golang搭建靜態(tài)web服務(wù)器的實(shí)現(xiàn)方法

標(biāo)簽:仙桃 崇左 銅川 黃山 衡水 湘潭 蘭州 湖南

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Go語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單的一個(gè)靜態(tài)WEB服務(wù)器》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    沙河市| 紫阳县| 侯马市| 黑山县| 通辽市| 汕头市| 陵川县| 萨嘎县| 九江县| 凉城县| 普安县| 拉孜县| 凌源市| 平南县| 泽普县| 江源县| 仙桃市| 阳东县| 巴彦淖尔市| 沾益县| 拉萨市| 崇文区| 行唐县| 博乐市| 南宫市| 湄潭县| 乡城县| 宜昌市| 临邑县| 冀州市| 赤水市| 滕州市| 顺昌县| 鄂托克前旗| 娱乐| 濮阳市| 乳源| 鄂托克旗| 芦山县| 汉阴县| 五峰|