最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Go語言實現簡單的一個靜態(tài)WEB服務器

 更新時間:2014年10月30日 09:26:51   投稿:junjie  
這篇文章主要介紹了Go語言實現簡單的一個靜態(tài)WEB服務器,本文給出了實現代碼和運行效果,學習Golang的練手作品,需要的朋友可以參考下

學習Go語言的一些感受,不一定準確。

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

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

計劃Go語言學習的知識點

1.搭建Http服務
2.連接數據庫
3.本地IO
4.多線程
5.網絡
6.調用本地命令
7.調用C語言代碼

首先,搭建一個靜態(tài)的服務器
我寫程序喜歡使用HTML通過AJAX發(fā)送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下執(zhí)行

復制代碼 代碼如下:

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

查看網頁,一切正常。

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

相關文章

  • GO語言中回調函數的使用

    GO語言中回調函數的使用

    本文主要介紹了GO語言中回調函數的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-03-03
  • go語言開發(fā)中如何優(yōu)雅得關閉協程方法

    go語言開發(fā)中如何優(yōu)雅得關閉協程方法

    這篇文章主要為大家介紹了go語言開發(fā)中如何優(yōu)雅得關閉協程方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-05-05
  • Go 實現百萬WebSocket連接的方法示例

    Go 實現百萬WebSocket連接的方法示例

    這篇文章主要介紹了Go 實現百萬WebSocket連接的方法示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-08-08
  • go語言題解LeetCode66加一示例詳解

    go語言題解LeetCode66加一示例詳解

    這篇文章主要為大家介紹了go語言題解LeetCode66加一示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12
  • go連接mysql的項目實踐

    go連接mysql的項目實踐

    本文主要介紹了go連接mysql的項目實踐,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-03-03
  • Go語言基礎學習之Context的使用詳解

    Go語言基礎學習之Context的使用詳解

    在Go語言中,Context是一個非常重要的概念,它用于在不同的?goroutine?之間傳遞請求域的相關數據,本文將深入探討Go語言中?Context特性和Context的高級使用方法,希望對大家有所幫助
    2023-05-05
  • Go語言中的函數詳解

    Go語言中的函數詳解

    函數是基本的代碼塊,用于執(zhí)行一個任務。本文詳細講解了Go語言中的函數,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-07-07
  • Go?通過?Map/Filter/ForEach?等流式?API?高效處理數據的思路詳解

    Go?通過?Map/Filter/ForEach?等流式?API?高效處理數據的思路詳解

    Stream?的實現思想就是將數據處理流程抽象成了一個數據流,每次加工后返回一個新的流供使用。這篇文章主要介紹了Go?通過?Map/Filter/ForEach?等流式?API?高效處理數據,需要的朋友可以參考下
    2022-01-01
  • Golang?中反射的應用實例詳解

    Golang?中反射的應用實例詳解

    這篇文章主要為大家介紹了Golang?中反射的應用實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-08-08
  • 用gomock進行mock測試的方法示例

    用gomock進行mock測試的方法示例

    go-mock是專門為go語言開發(fā)的mock庫,該庫使用方式簡單,支持自動生成代碼,這篇文章主要介紹了用gomock進行mock測試的方法示例,感興趣的小伙伴們可以參考一下
    2018-11-11

最新評論

沧源| 房产| 满城县| 时尚| 杂多县| 尖扎县| 红原县| 江北区| 扶沟县| 庆城县| 来安县| 敖汉旗| 沙坪坝区| 华安县| 深泽县| 湖南省| 上虞市| 开远市| 乳源| 滕州市| 桂东县| 任丘市| 和平县| 上思县| 宣威市| 商南县| 新绛县| 铅山县| 莱州市| 长宁区| 敖汉旗| 大同县| 安义县| 海盐县| 瑞昌市| 静安区| 阳高县| 宁蒗| 阜平县| 同心县| 西和县|