標籤: 台北網頁設計公司

  • 南極洲熱浪來襲九天 鷹島融化約20%積雪

    摘錄自2020年2月25日中央社報導

    南極洲這個月初遭為期九天的熱浪侵襲,位於南極洲東北端的鷹島(Eagle Island)約20%積雪融化,這是日益加劇的氣候危機所帶來的普遍徵兆。

    NASA地球觀測站表示,僅一週左右時間,鷹島的積雪就融化4英吋(約10公分),大約占該島季節性積雪總量的20%。

    麻薩諸塞州尼柯斯學院(Nichols College)地理學家裴爾托(Mauri Pelto)告訴NASA觀測站:「我從未看過南極洲冰雪融化形成水池的速度如此之快。你可以在阿拉斯加和格陵蘭看到這樣的融冰現象,但南極洲很罕見。」

    氣候學家費特韋斯(Xavier Fettweis)繪出從南極半島流入海水的融冰量,並指出熱浪是造成今夏海平面上升的最大主因。

    本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    台北網頁設計公司這麼多,該如何挑選?? 網頁設計報價省錢懶人包”嚨底家”

    網頁設計公司推薦更多不同的設計風格,搶佔消費者視覺第一線

    ※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

    小三通海運與一般國際貿易有何不同?

    小三通快遞通關作業有哪些?

  • 預防全球災難 末日種子庫收6萬新種子樣本

    摘錄自2020年2月25日中央社報導

    挪威北極圈內的「末日種子庫」今(25日)預計將收到來自世界各地的6萬個種子樣本。這個全球最大農作物儲藏庫為了保護作物免於全球性災難,而囤積各類種子。

    這些種子將寄存在挪威斯瓦巴群島(Svalbard)內斯匹次柏根島(Spitsbergen Island)朗葉比(Longyearbyen)附近的深山中,距離北極點(North Pole)約1000公里。

    法新社報導,掌管種子庫的作物信託基金(Crop Trust)執行長施密茲(Stefan Schmitz)說:「隨著氣候變遷和生物多樣性喪失的速度增加,針對瀕臨滅絕作物的拯救工作產生新的急迫性。」

    最新運送的一批將讓種子庫藏提升至約105萬種,這些種子放置在種子庫的三座地窖,這個種子庫被譽為糧食作物的「諾亞方舟」。

    本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    ※想知道網站建置網站改版該如何進行嗎?將由專業工程師為您規劃客製化網頁設計後台網頁設計

    ※不管是台北網頁設計公司台中網頁設計公司,全省皆有專員為您服務

    ※Google地圖已可更新顯示潭子電動車充電站設置地點!!

    ※帶您來看台北網站建置台北網頁設計,各種案例分享

    小三通物流營運型態?

    ※快速運回,大陸空運推薦?

  • 日311地震重災區 女川核電廠2號機通過重啟審查

    摘錄自2020年02月26日中央社報導

    日本女川核電廠2號機以重啟運轉為前提的申請,已通過日本原子力規制委員會審查,成為位於311大地震重災區首座合格的核電廠,也是第2座遭受海嘯侵襲重生的核電廠。

    日本放送協會(NHK)報導,東北電力公司希望位於宮城縣的女川核電廠2號機能重啟運轉提出申請,日本原子力規制委員會今(26日)已正式彙整完成表示合格的審查書。

    女川核電廠2號機是位於2011年311大地震後遭受重創的東北地方,首度獲審查合格的核電廠機組。東北電力公司在311大地震2年後的2013年,以重啟運轉為前提向原子力規制委員會提出審查申請。

    持續進行審議的原子力規制委員會,2019年11月彙整出表示事實上符合新規範標準的審查書草案,並向一般民眾徵集意見。

    本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    台北網頁設計公司這麼多,該如何挑選?? 網頁設計報價省錢懶人包”嚨底家”

    網頁設計公司推薦更多不同的設計風格,搶佔消費者視覺第一線

    ※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

    小三通海運與一般國際貿易有何不同?

    小三通快遞通關作業有哪些?

  • 程序員需要了解的硬核知識之操作系統和應用

    程序員需要了解的硬核知識之操作系統和應用

    利用計算機運行程序大部分都是為了提高處理效率。例如,Microsoft Word 這樣的文字處理軟件,是用來提高文本文件處理效率的程序,Microsoft Excel 等表格計算軟件,是用來提高賬本處理效率的程序。這種為了提高特定處理效率的程序統稱為 應用

    程序員的工作就是編寫各種各樣的應用來提高工作效率,程序員一般不編寫操作系統,但是程序員編寫的應用離不開操作系統,此篇文章我們就針對 Windows 操作系統來說明一下操作系統和應用之間的關係。

    操作系統功能的歷史

    操作系統其實也是一種軟件,任何新事物的出現肯定都有它的歷史背景,那麼操作系統也不是憑空出現的,肯定有它的歷史背景。

    在計算機尚不存在操作系統的年代,完全沒有任何程序,人們通過各種按鈕來控制計算機,這一過程非常麻煩。於是,有人開發出了僅具有加載和運行功能的監控程序,這就是操作系統的原型。通過事先啟動監控程序,程序員可以根據需要將各種程序加載到內存中運行。雖然仍舊比較麻煩,但比起在沒有任何程序的狀態下進行開發,工作量得到了很大的緩解。

    隨着時代的發展,人們在利用監控程序編寫程序的過程中發現很多程序都有公共的部分。例如,通過鍵盤進行文字輸入,显示器進行數據展示等,如果每編寫一個新的應用程序都需要相同的處理的話,那真是太浪費時間了。因此,基本的輸入輸出部分的程序就被追加到了監控程序中。初期的操作系統就是這樣誕生了。

    類似的想法可以共用,人們又發現有更多的應用程序可以追加到監控程序中,比如硬件控製程序編程語言處理器(彙編、編譯、解析)以及各種應用程序等,結果就形成了和現在差異不大的操作系統,也就是說,其實操作系統是多個程序的集合體。

    我在 這篇文章中提到了彙編語言,這裏簡單再提一下。

    彙編語言是一種低級語言,也被稱為符號語言。彙編語言是第二代計算機語言,在彙編語言中,用助記符代替機器指令的操作碼,用地址符號或標號代替指令或操作數的地址。用一些容易理解和記憶的字母,單詞來代替一個特定的指令,比如:用ADD代表数字邏輯上的加減,MOV代表數據傳遞等等,通過這種方法,人們很容易去閱讀已經完成的程序或者理解程序正在執行的功能,對現有程序的bug修復以及運營維護都變得更加簡單方便

    可以說共用思想真是人類前進的一大步,對於解放生產力而言簡直是太重要了

    要把操作系統放在第一位

    對於程序員來說,程序員創造的不是硬件,而是各種應用程序,但是如果程序員只做應用不懂硬件層面的知識的話,是無法成為硬核程序員的。現在培訓機構培養出了一批怎麼用的人才,卻沒有培訓出為什麼這麼做的人才,畢竟為什麼不是培訓機構教的,而是學校教的,我很相信耗子叔說的話:學習沒有速成這回事。言歸正題。

    在操作系統誕生之後,程序員不需要在硬件層面考慮問題,所以程序員的數量就增加了。哪怕自稱對硬件一竅不通的人也可能製作出一個有模有樣的程序。不過,要想成為一個全面的程序員,有一點需要清楚的就是,掌握硬件的基本知識,並藉助操作系統進行抽象化,可以大大提高編程效率。

    下面就看一下操作系統是如何給開發人員帶來便利的,在 Windows 操作系統下,用 C 語言製作一個具有表示當前時間功能的應用。time() 是用來取得當前日期和時間的函數,printf() 是把結果打印到显示器上的函數,如下:

    #include <stdio.h>
    #include <time.h>
    
    void main(){
      // 保存當前日期和時間信息
      time_t tm;
      
      // 取得當前的日期和時間
      time(&tm);
      
      // 在显示器上显示日期和時間
      printf("%s\n", ctime(&tm));
    }

    讀者可以自行運行程序查看結果,我們主要關注硬件在這段代碼中做了什麼事情

    • 通過 time_t tm,為 time_t 類型的變量申請分配內存空間;
    • 通過 time(&tm) ,將當前的日期和時間數據保存到變量的內存空間中
    • 通過 printf(“%s\n”,ctime(&tm)), 把變量內存空間的內容輸出到显示器上。

    應用的可執行文件指的是,計算機的 CPU 可以直接解釋並運行的本地代碼,不過這些代碼是無法直接控制硬件的,事實上,這些代碼是通過操作系統來間接控制硬件的。變量中涉及到的內存分配情況,以及 time() 和 printf() 這些函數的運行結果,都不是面向硬件而是面向操作系統的。操作系統收到應用發出的指令后,首先會對該指令進行解釋,然後會對 時鐘IC 和显示器用的 I/O 進行控制。

    計算機中都安裝有保存日期和時間的實時時鐘(Real-time clock),上面提到的時鐘IC 就是值該實時時鐘。

    系統調用和編程語言的移植性

    操作系統控制硬件的功能,都是通過一些小的函數集合體的形式來提供的。這些函數以及調用函數的行為稱為系統調用,也就是通過應用進而調用操作系統的意思。在前面的程序中用到了 time() 以及 printf() 函數,這些函數內部也封裝了系統調用。

    C 語言等高級編程語言並不依存於特定的操作系統,這是因為人們希望不管是Windows 操作系統還是 Linux 操作系統都能夠使用相同的源代碼。因此,高級編程語言的機制就是,使用獨自的函數名,然後在編譯的時候將其轉換為系統調用的方式(也有可能是多個系統調用的組合)。也就是說,高級語言編寫的應用在編譯后,就轉換成了利用系統調用的本地代碼

    不過,在高級語言中也存在直接調用系統調用的編程語言,不過,利用這種方式做成應用,移植性並不友好。

    移植性:移植性指的是同樣的程序在不同操作系統下運行時所花費的時間,時間越少證明移植性越好。

    操作系統和高級編程語言使硬件抽象化

    通過使用操作系統提供的系統調用,程序員不必直接編寫控制硬件的程序,而且,通過使用高級編程語言,有時也無需考慮系統調用的存在,系統調用往往是自動觸發的,操作系統和高級編程語言能夠使硬件抽象化,這很了不起。

    下面讓我們看一個硬件抽象化的具體實例

    #include <stdio.h>
    
    void main(){
      
      // 打開文件
      FILE *fp = fopen("MyFile.txt","w");
      
      // 寫入文件
      fputs("你好", fp);
      
      // 關閉文件
      fclose(fp);
    }

    上述代碼使用 C 編寫的程序,fputs() 是用來往文件中寫入字符串的函數,fclose() 是用來關閉文件的函數。

    上述應用在編譯運行后,會向文件中寫入 “你好” 字符串。文件是操作系統對磁盤空間的抽象化,就如同我們在 這篇文章提到的一樣,磁盤就如同樹的年輪,磁盤的讀寫是以扇區為單位的,通過磁道來尋址,如果直接對硬件讀寫的話,那麼就會變為通過向磁盤用的 I/O 指定扇區位置來對數據進行讀寫了。

    但是,在上面代碼中,扇區壓根就沒有出現過傳遞給 fopen() 函數的參數,是文件名 MyFile.txt 和指定文件寫入的 w。傳遞給 fputs() 的參數,是往文件中寫入的字符串”你好” 和 fp,傳遞給 fclose() 的參數,也僅僅是 fp,也就是說磁盤通過打開文件這個操作,把磁盤抽象化了,打開文件這個操作就可以說是操作硬件的指令。

    下面讓我們來看一下代碼清單中 fp 的功能,變量 fp 中被賦予的是 fopen() 函數的返回值,該值被稱為文件指針。應用打開文件后,操作系統就會自動申請分配用來管理文件讀寫的內存空間。內存地址可以通過 fopen() 函數的返回值獲得。用 fopen() 打開文件后,接下來就是通過制定的文件指針進行操作,正因為如此,fputs() 和 fclose() 以及 fclose() 參數中都制定了文件指針。

    由此我們可以得出一個結論,應用程序是通過系統調用,磁盤抽象來實現對硬盤的控制的。

    Windows 操作系統的特徵

    Windows 操作系統是世界上用戶數量最龐大的群體,作為 Windows 操作系統的資深用戶,你都知道 Windows 操作系統有哪些特徵嗎?下面列舉了一些 Windows 操作系統的特性

    • Windows 操作系統有兩個版本:32位和64位
    • 通過 API 函數集成來提供系統調用
    • 提供了採用圖形用戶界面的用戶界面
    • 通過 WYSIWYG 實現打印輸出,WYSIWYG 其實就是 What You See Is What You Get ,值得是显示器上显示的圖形和文本都是可以原樣輸出到打印機打印的。
    • 提供多任務功能,即能夠同時開啟多個任務
    • 提供網絡功能和數據庫功能
    • 通過即插即用實現設備驅動的自設定

    這些是對程序員來講比較有意義的一些特徵,下面針對這些特徵來進行分別的介紹

    32位操作系統

    這裏表示的32位操作系統表示的是處理效率最高的數據大小。Windows 處理數據的基本單位是 32 位。這與最一開始在 MS-DOS 等16位操作系統不同,因為在16位操作系統中處理32位數據需要兩次,而32位操作系統只需要一次就能夠處理32位的數據,所以一般在 windows 上的應用,它們的最高能夠處理的數據都是 32 位的。

    比如,用 C 語言來處理整數數據時,有8位的 char 類型,16位的short類型,以及32位的long類型三個選項,使用位數較大的 long 類型進行處理的話,增加的只是內存以及磁盤的開銷,對性能影響不大。

    現在市面上大部分都是64位操作系統了,64位操作系統也是如此。

    通過 API 函數集來提供系統調用

    Windows 是通過名為 API 的函數集來提供系統調用的。API是聯繫應用程序和操作系統之間的接口,全稱叫做 Application Programming Interface,應用程序接口。

    當前主流的32位版 Windows API 也稱為 Win32 API,之所以這樣命名,是需要和不同的操作系統進行區分,比如最一開始的 16 位版的 Win16 API,和後來流行的 Win64 API

    API 通過多個 DLL 文件來提供,各個 API 的實體都是用 C 語言編寫的函數。所以,在 C 語言環境下,使用 API 更加容易,比如 API 所用到的 MessageBox() 函數,就被保存在了 Windows 提供的 user32.dll 這個 DLL 文件中。

    提供採用了 GUI 的用戶界面

    GUI(Graphical User Interface) 指得就是圖形用戶界面,通過點擊显示器中的窗口以及圖標等可視化的用戶界面,舉個例子:Linux 操作系統就有兩個版本,一種是簡潔版,直接通過命令行控制硬件,還有一種是可視化版,通過光標點擊圖形界面來控制硬件。

    通過 WYSIWYG 實現打印輸出

    WYSIWYG 指的是显示器上輸出的內容可以直接通過打印機打印輸出。在 Windows 中,显示器和打印機被認作同等的圖形輸出設備處理的,該功能也為 WYSIWYG 提供了條件。

    藉助 WYSIWYG 功能,程序員可以輕鬆不少。最初,為了是現在显示器中显示和在打印機中打印,就必須分別編寫各自的程序,而在 Windows 中,可以藉助 WYSIWYG 基本上在一個程序中就可以做到显示和打印這兩個功能了。

    提供多任務功能

    多任務指的就是同時能夠運行多個應用程序的功能,Windows 是通過時鐘分割技術來實現多任務功能的。時鐘分割指的是短時間間隔內,多個程序切換運行的方式。在用戶看來,就好像是多個程序在同時運行,其底層是 CPU 時間切片,這也是多線程多任務的核心。

    提供網絡功能和數據庫功能

    Windows 中,網絡功能是作為標準功能提供的。數據庫(數據庫服務器)功能有時也會在後面追加。網絡功能和數據庫功能雖然並不是操作系統不可或缺的,但因為它們和操作系統很接近,所以被統稱為中間件而不是應用。意思是處於操作系統和應用的中間層,操作系統和中間件組合在一起,稱為系統軟件。應用不僅可以利用操作系統,也可以利用中間件的功能。

    相對於操作系統一旦安裝就不能輕易更換,中間件可以根據需要進行更換,不過,對於大部分應用來說,更換中間件的話,會造成應用也隨之更換,從這個角度來說,更換中間件也不是那麼容易。

    通過即插即用實現設備驅動的自動設定

    即插即用(Plug-and-Play)指的是新的設備連接(plug) 后就可以直接使用的機制,新設備連接計算機后,計算機就會自動安裝和設定用來控制該設備的驅動程序

    設備驅動是操作系統的一部分,提供了同硬件進行基本的輸入輸出的功能。鍵盤、鼠標、显示器、磁盤裝置等,這些計算機中必備的硬件的設備驅動,一般都是隨操作系統一起安裝的。

    有時 DLL 文件也會同設備驅動文件一起安裝。這些 DLL 文件中存儲着用來利用該新追加的硬件API,通過 API ,可以製作出運行該硬件的心應用。

    文章參考:

    《程序是怎樣跑起來的》第九章

    關注公眾號後台回復 191106 即可獲得《程序是怎樣跑起來的》电子書

    本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理
    【其他文章推薦】

    台北網頁設計公司這麼多,該如何挑選?? 網頁設計報價省錢懶人包”嚨底家”

    網頁設計公司推薦更多不同的設計風格,搶佔消費者視覺第一線

    ※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

    小三通海運與一般國際貿易有何不同?

    小三通快遞通關作業有哪些?

  • CSS(7)— 清除浮動(float)

    CSS(7)— 清除浮動(float)

    CSS(7)— 通俗講解清除浮動

    上一篇講了CSS浮動 博客地址:

    一、理解清除浮動

    1、為什麼要清除浮動

    我們前面說過,浮動本質是用來做一些文字混排效果的,但是被我們拿來做布局用,則會有很多的問題出現。

    由於浮動元素不再佔用原文檔流的位置,所以它會對後面的元素排版產生影響,為了解決這些問題,此時就需要在該元素中清除浮動。

    準確地說,並不是清除浮動,而是清除浮動后造成的影響

    2、清除浮動本質

    清除浮動的本質: 主要為了解決父級元素因為子級浮動引起內部高度為0 的問題。

    我們來詳細解釋下這句話

    再解釋下就是在標準流下面一個父div沒有設置高度屬性,那麼它的高度就會被子元素的高度撐開。但是如果這個父div中的子元素是浮動的話,如果父div下面再有

    一個兄弟div,那麼這個兄弟div就會遮擋這個父元素。這個現象也叫浮動溢出

    示例

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
        <style>
        .father {
            height: 200px;
            border: 1px solid red;
            width: 300px
    
        }
        .big {
            width: 100px;
            height: 100px;
            background-color: purple;
            float: left;
        }
        .small {
            width: 80px;
            height: 80px;
            background-color: blue;
            float: left;
        }
        .footer {
            width: 400px;
            height: 100px;
            background-color: pink;
        }
        </style>
    </head>
    <body>
        <div class="father"> 父div
            <div class="big">子div</div>
            <div class="small">子div</div>
        </div>
        <div class="footer">兄弟div</div>
    </body>
    </html>

    運行結果

    很明顯這裏,div1和div2已經上浮,而兄弟div就往上移動。這裏因為父div有文字所以佔了點高度,不然兄弟div會完全覆蓋父div。

    當然我們可以通過設置父div的高度,來使它不被兄弟div所覆蓋。比如這裏設置 height: 200px;

    在刷新下頁面

    當父div設置高度后,被覆蓋的問題卻是解決了,但在很多時候我們是不會去設置父div的高度,因為很多時候我們都不知道父div的高度要設置多少。

    所以這個時候需要思考解決這個問題。

    二、清除浮動的方法

    清除浮動的方法本質: 就是把父盒子里浮動的盒子圈到裏面,讓父盒子閉合出口和入口不讓他們出來影響其他元素。

    在CSS中,clear屬性用於清除浮動。

    基本語法格式

    選擇器 {clear:屬性值;}

    屬性值

    1、額外標籤法

    通過在浮動元素末尾添加一個空的標籤,例如

     <div style="clear:both"></div>

    我們在上面的代碼添加

    <body>
        <div class="father"> 父div
            <div class="big">子div</div>
            <div class="small">子div</div>
            <div style="clear:both"></div>  <!--  只需在父盒子里最後面添加這個空標籤添加clear:both屬性就可以清除浮動 -->
        </div>
        <div class="footer">兄弟div</div>
    </body>

    運行結果

    完美解決了。

    優點 通俗易懂,書寫方便。

    缺點 添加無意義的標籤,結構化較差。

    2、父級添加overflow屬性方法

    可以通過觸發BFC的方式,可以實現清除浮動效果。(BFC後面會講)

    可以給父級元素添加: overflow為 hidden|auto|scroll  都可以實現。

    我們將上面代碼修改為

    <body>
        <div class="father" style="overflow: hidden;"> 父div  <!-- 父元素添加 overflow: hidden --> 
            <div class="big">子div</div>
            <div class="small">子div</div>
        </div>
        <div class="footer">兄弟div</div>
    </body>

    也是能實現去除浮動的效果。

    優點 代碼簡潔

    缺點 內容增多時候容易造成不會自動換行導致內容被隱藏掉,無法显示需要溢出的元素。

    3、使用after偽元素清除浮動

    :after 方式為空元素的升級版,好處是不用單獨加標籤了** 

    示例

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>使用after偽元素清除浮動</title>
        <style>
        .clearfix:after {  /*正常瀏覽器 清除浮動*/
            content:"";
            display: block;
            height: 0;
            clear: both;
            visibility: hidden;
        }
        .clearfix {
            *zoom: 1;  /*zoom 1 就是ie6 清除浮動方式  *  ie7一下的版本所識別*/
        }
        .father {
            border: 1px solid red;
            width: 300px;
    
        }
        .big {
            width: 100px;
            height: 100px;
            background-color: purple;
            float: left;
        }
        .small {
            width: 80px;
            height: 80px;
            background-color: blue;
            float: left;
        }
        .footer {
            width: 400px;
            height: 100px;
            background-color: pink;
        }
        </style>
    </head>
    <body>
        <div class="father clearfix">
            <div class="big"></div>
            <div class="small"></div>
        </div>
        <div class="footer"></div>
    </body>
    </html>

    優點 符合閉合浮動思想 結構語義化正確

    缺點 由於IE6-7不支持:after,使用 zoom:1觸發 hasLayout。

    注意: content:”.” 裏面盡量跟一個小點,或者其他,盡量不要為空,否則再firefox 7.0前的版本會有生成空格。

    4、使用before和after雙偽元素清除浮動

    使用方法 將上面的clearfix樣式替換成如下

        .clearfix:before, .clearfix:after {
            content: "";
            display: table;
        }
        .clearfix:after {
            clear: both;
        }
    
        .clearfix {
            *zoom: 1;
        }

    優點 代碼更簡潔

    缺點 由於IE6-7不支持:after,使用 zoom:1觸發 hasLayout。

    5、總結

    1、在網頁主要布局時使用:after偽元素方法並作為主要清理浮動方式.文檔結構更加清晰;
    2、在小模塊如ul里推薦使用overflow:hidden;(同時留意可能產生的隱藏溢出元素問題);

    你如果願意有所作為,就必須有始有終。(9)

    本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理
    【其他文章推薦】

    台北網頁設計公司這麼多,該如何挑選?? 網頁設計報價省錢懶人包”嚨底家”

    網頁設計公司推薦更多不同的設計風格,搶佔消費者視覺第一線

    ※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

    小三通海運與一般國際貿易有何不同?

    小三通快遞通關作業有哪些?

  • Go語言Hello world(GOPATH和Go Module版)

    Go語言Hello world(GOPATH和Go Module版)

    本文是「vangoleo的Go語言學習筆記」系列文章之一。
    官網:

    往期回顧:

    上一篇文章中,我們在Golang Playground中體驗了Go語言,編寫並運行了一個簡單的Hello World,相信大家對Go語言的語法有了一些了解。

    學習一種編程語言,除了基本的語法,更重要的是要了解如何在實際的工程中使用它。本文中,我會和大家一起,從零開始,安裝Go語言,配置環境,安裝IDE,開發一個Hello World程序。這個Hello World版我會編寫兩個版本:GOPATH和Go Module版本。

    Q:
    本教程為什麼會編寫兩個版本?
    A:
    網上大部分Go語言Hello World都只簡單地介紹了GOPATH版本。但是從Go的1.11版本之後,已不再推薦使用GOPATH來構建應用了。也就是說GOPATH被認為是廢棄的,錯誤的做法。
    正確的做法是使用Go Module。所以,有必要在教程中將這個信息告訴初學者,引導大家使用推薦的最佳實踐方式Go Module。
    或許這也是本Hello World教程和網上大部分教程的區別吧。會從開發者的實際使用出發。介紹Go語言的發展歷史和最佳實踐。

    安裝Go

    使用Go語言開發,第一步肯定是安裝Go啦。

    第一步:進入Go語言的官網https://golang.org。點擊“Download Go”。是的,就是那個傻傻的土撥鼠^_^

    第二步:根據操作系統下載對應的軟件包進行安裝。
    Golang對主流的操作系統都有支持,比如Windows,MacOS和Linux等。
    本系列教程中,我會使用MacOS操作系統,所以選擇下載“Apple macOS”。大家要根據自己的操作系統進行下載。

    第三步:安裝Go。
    在MacOS下安裝Go很簡單,就是標準的DMG文件安裝,直接“下一步”就可以了。
    第四步:確認Go是否安裝成功。
    運行命令“go version”,會輸出類似於“go version go1.12.9 darwin/amd64”的內容。請確保包沒有任何錯誤發生。

    配置環境

    和其他開發語言類似,安裝了Go之後,還需要對開發環境進行相應的配置。比如在Java中,需要配置JAVA_HOME,MAVEN等。
    Go開發相關的環境變量如下:

    • GOROOT:GOROOT就是Go的安裝目錄。
    • GOPATH:GOPATH保存go項目代碼。

    GOROOT

    GOROOT是Go的安裝路徑。Mac中安裝Go會自動配置好GOROOT,路徑為/usr/local/go。GOROOT在絕大多數情況下都不需要修改。以下是GOROOT目錄的內容(已省略了一些無關信息):

    tree -L 2 /usr/local/go
    
    ./
    ├── bin
    │   ├── go
    │   └── gofmt
    ├── doc
    │   ├── articles
    │   └── docs.html
    ├── src
    │   ├── errors
    │   ├── fmt
    │   ├── log
    │   └── os

    可以看到GOROOT下有bin,doc和src目錄。bin目錄下有我們熟悉的go和gofmt工具。可以認為GOOROOT和Java里的JDK目錄類似。

    GOPATH

    GOPATH是開發時的工作目錄。用於:

    • 保存編譯后的二進制文件。
    • go getgo install命令會下載go代碼到GOPATH。
    • import包時的搜索路徑。

    關於GOPATH需要特別注意。在GO的1.11版本之前,GOPATH是必需的,且所有的Go項目代碼都要保存在GOPATH目錄下。Go的1.11版本之後,GO官方引入了Go Module。使用Go Module管理的項目可以放在GOPATH目錄外面。

    使用GOPATH時,GO會在以下目錄中搜索包:

    1. GOROOT/src:該目錄保存了Go標準庫代碼。
    2. GOPATH/src:該目錄保存了應用自身的代碼和第三方依賴的代碼。

    假設程序中引入了如下的包:

    import "github.com/tom/hello-go/foo/bar"

    第一步:Go會先去GOROOT的scr目錄中查找,很顯然它不是標準庫的包,沒找到。
    第二步:繼續在GOPATH的src目錄去找,準確說是GOPATH/src/github.com/tom/hello-go/foo/bar這個目錄。如果該目錄不存在,會報錯找不到package。在使用GOPATH管理項目時,需要按照GO尋找package的規範來合理地保存和組織Go代碼。

    Go的這個“將所有代碼都放置在GOPATH中”的設計,的確是和其他主流語言很不一樣。不管Go官方是出於什麼考慮,這個設計在實際使用中,的確給開發者造成了很大的不便和理解上的困難。甚至直接勸退了很多Go的初學者。
    萬幸的是,Go Module正式發布了。Go Module的發布解決了困擾Go語言長達十年的代碼組織,依賴管理問題。

    說明:關於GOPATH和Go Module的歷史淵源,詳細使用,會在另一篇進行說明。本文還是聚焦在Hello World入門。

    另外,由於某些原因,Go的某些託管在Google倉庫中的代碼在國內是無法訪問的。如果使用Go Module,我們可以設置GOPROXY,讓Go從GOPROXY下載Go代碼,速度更快。國內用戶可以設置GOPROXY為,使用如下命令來設置GOPROXY:

    export GOPROXY=https://goproxy.cn

    關於環境配置,總結下來就是:

    • 如果使用Go Module(推薦的),設置export GOPROXY=。
    • 如果使用GOPATH(遺留的,被廢棄的),需要設置GOPATH到本地的某個目錄。

    安裝IDE

    目前比較常用的IDE有:

    • Visual Studio Code
    • GoLand

    Visual Studio Code是微軟開發的一款開源的,輕量級的文本編輯器。通過安裝Go插件,可以用於Go語言的開發。GoLand是JetBrains公司開發的,專業的Go語言開發IDE。

    推薦使用GoLand。很多人都說Visual Studio Code更輕量級,但作為一款每天都要重度使用的,需要靠它吃飯的工具,我們需要的是功能全面。尤其是當你需要完備的調試,需要強大的IDE智能輔助功能時,相信你會選擇更專業的GoLand。

    GoLand的官方主頁為https://www.jetbrains.com/go/,點擊“Download”即可下載

    注意
    GoLand使用的是和IntelliJ IDEA一樣的框架,是用Java語言開發的。你需要安裝Java環境才可以運行GoLand哦。

    GoLand是收費軟件,只有30天的試用期。試用期結束后,需要購買授權。當然在天朝,我們都習慣不花錢用軟件。大家可以自行百度或google搜索一下。

    Hello World(GOPATH版)

    第一步:設置GOPATH
    首先設置GOPATH,假設GOPATH設置為$HOME/worspace/go
    第二步:創建子目錄
    進入$HOME/workspace/go目錄。新建子目錄src。然後再src中新建子目錄hello。在hello目錄,新建一個hello-world.go文件:
    目錄結構應該如下所示:

    $HOME
      workspace
        go
          src
            hello
              hello-world.go

    第三步:創建hello-world.go文件:

    package main
    import "fmt"
    func main() {
        fmt.Println("hello world")
    }

    第四步:執行go build
    $HOME/workspace/go目錄執行命令:

    go build

    會生成一個可執行二進制文件:hello。如果是Windows系統,會生成hello.exe文件。
    第五步:運行hello文件:

    ./hello
    
    hello world

    輸出“hello world”。

    Hello World(GO Module版)

    第一步:創建項目的根目錄
    任意創建一個目錄(可以不在GOPATH中),假設是$HOME/tmp/hello。
    第二步:初始化Go模塊
    執行命令:

    go mod init github.com/vangoleo/hello

    該命令會將hello目錄初始化為一個Go module,並生成一個$HOME/tmp/hello/go.mod文件。內容如下:

    module github.com/vangoleo/hello
    
    go 1.12

    第三步:編寫hello.go文件
    編寫文件$HOME/tmp/hello/hello.go:

    package main
    
    import (
        "fmt"
        "rsc.io/quote"
    )
    
    func main() {
        fmt.Println(quote.Hello())
    }

    第四步:編輯go.mod文件:
    在實際項目中,都會使用到第三方庫。可以在Go Module中添加項目的依賴。本例中,我們會添加一個quote依賴,該依賴會打印當前語言的“Hello World”,比如,如果是中文環境,會打印“你好,世界”。
    編輯go.mod文件,添加quote依賴:

    module github.com/vangoleo/hello
    
    go 1.12
    
    require rsc.io/quote v1.5.2

    第五步:執行go build
    執行go build,會生成可執行文件$HOME/tmp/hello/hello
    第六步:執行hello文件
    執行hello文件,輸出“你好,世界”。

    最後

    本文中,我們從下載安裝,配置Go環境開始,並完成了GOPATH和Go Module兩個版本的Hello World應用。如果你跟着我一步一步完成了這些步驟,恭喜你!!!已經完成了第一個真正的Go應用,並且使用了正確的Go Module來管理Go程序。

    接下來,我們可以開始學習Go語言的語法部分(基本數據類型,判斷,循環等)了。咋們下期見。

    本文由 發布

    本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理
    【其他文章推薦】

    ※想知道網站建置網站改版該如何進行嗎?將由專業工程師為您規劃客製化網頁設計後台網頁設計

    ※不管是台北網頁設計公司台中網頁設計公司,全省皆有專員為您服務

    ※Google地圖已可更新顯示潭子電動車充電站設置地點!!

    ※帶您來看台北網站建置台北網頁設計,各種案例分享

    小三通物流營運型態?

    ※快速運回,大陸空運推薦?

  • 揭示太陽能遠景 日政商要角300人與會 目標主力電源

    文:宋瑞文(加州能源特約撰述)

    本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    台北網頁設計公司這麼多,該如何挑選?? 網頁設計報價省錢懶人包”嚨底家”

    網頁設計公司推薦更多不同的設計風格,搶佔消費者視覺第一線

    ※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

    小三通海運與一般國際貿易有何不同?

    小三通快遞通關作業有哪些?

  • COP26主題定調金融 聯合國氣候特使:零碳帶來當代最大商機

    環境資訊中心綜合外電;姜唯 編譯;林大利 審校

    本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    ※想知道網站建置網站改版該如何進行嗎?將由專業工程師為您規劃客製化網頁設計後台網頁設計

    ※不管是台北網頁設計公司台中網頁設計公司,全省皆有專員為您服務

    ※Google地圖已可更新顯示潭子電動車充電站設置地點!!

    ※帶您來看台北網站建置台北網頁設計,各種案例分享

    小三通物流營運型態?

    ※快速運回,大陸空運推薦?

  • 電動機車 Gogoro 與時尚結合,邀請派對潮男試乘

    電動機車 Gogoro 與時尚結合,邀請派對潮男試乘

    先前在媒體上熱烈討論的電動車 Gogoro 繼續以生活品味為主打形象,這次與時裝雜誌的活動結合,試圖要把騎機車這件事事情變得更潮。Gogoro 獲邀參與 GQ 紳裝正義 2016 SUIT WALK 遊行與派對活動。

    為響應 GQ 派對主題,Gogoro 也舉辦「紳士有禮」體驗,只要消費者在 Taipei 101 四樓 Gogoro 展區完成最新智慧解鎖、拍照分享後即可獲得神秘限定騎乘邀請函,現場亦可索取潮男限定試騎卷,憑卷在 3 月 14 日白色情人節到 Gogoro 信義全球體驗中心試騎,即可獲得 Gogoro 限量潮 T 一件,數量有限敬請把握!   Gogoro 執行長暨創辦人陸學森表示:「Gogoro 非常榮幸可以成為這次時尚盛會中唯一的二輪交通品牌,我們希望鼓勵無論男性女性,時時刻刻都用各式方式展現自己的風格,例如 Smartscooter® 智慧雙輪可以讓消費者更換不同設計的面板,也是希望突破機車只是交通工具的想像,讓智慧雙輪不僅可以帶你帥氣的在城市間遊走、也可以透過不同的面板造型與設計,讓車主展現你獨一無二的個人風格。」  

     
    ▲ 全球最時尚大叔 Nick Wooster 稱讚 Gogoro 智慧雙輪時尚外型最合紳士出遊。(Source:Gogoro)   紳裝正義活動到 2016 年已經是第三屆舉行,從 2014 年開始主辦人就串連台灣、香港、新加坡與上海等亞洲時尚重地,邀請所有的型男紳士在每年白色情人節期間,穿上最時尚、最具個人風格的西裝到街頭遊行展現紳士魅力。此次 Gogoro 除了是唯一受邀參加遊行的交通工具品牌之外,遊行後也與其他時尚品牌如 Porches、HUGO BOSS、瑞士頂級 Zenith 真力時手錶等,於 Taipei 101 四樓參與 GQ 紳裝正義派對,在現場展現如何透過科技時尚魅力、展現自我風格。  

    ▲ 時尚男孩小杰帶領 Gogoro 型男軍團參與 GQ 紳裝正義遊行。(Source:Gogoro)   (首圖說明:Gogoro 型男軍團參與GQ SUIT WALK 2016 於台北101時尚派對。Source:Gogoro)   (本文授權轉載自《》─〈〉)

    本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    台北網頁設計公司這麼多,該如何挑選?? 網頁設計報價省錢懶人包”嚨底家”

    網頁設計公司推薦更多不同的設計風格,搶佔消費者視覺第一線

    ※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

    小三通海運與一般國際貿易有何不同?

    小三通快遞通關作業有哪些?

  • 寶馬 i 系電動車2015年全年銷量為29513輛

    近日,寶馬集團發佈了寶馬 2015年的財報, 2015年,寶馬集團銷量達到2,247,485輛,同比增長6.1%。(2014年:2,117,965輛)。

    2015年,BMW品牌全球銷量增長5.2%,至1,905,234輛(2014年:1,811,719輛)。其中,BMW 2系、4系以及BMW X家族表現突出,促進了銷量增長。

    另外要提一下寶馬的新能源車型 BMW i 系,該車型實現了65.9%的增長,共交付客戶29,513輛(2014年:17,793輛),其中,BMW i3在全球範圍的銷量增幅為49.9%,共售出24,057輛(2014年:16,052輛),BMW i8銷量達到5,456輛(2014年:1,741輛)。

    寶馬其他車型銷量還包括 MINI 品牌:交付量增長 12.0%,達338,466 輛(2014年:302,183 輛);勞斯萊斯:全球共交付客戶3,785輛,其中魅影和古斯特對銷量做出最大貢獻。另外,2015寶馬集團的全球前四大市場是中國、美國、德國和英國。

    本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    ※想知道網站建置網站改版該如何進行嗎?將由專業工程師為您規劃客製化網頁設計後台網頁設計

    ※不管是台北網頁設計公司台中網頁設計公司,全省皆有專員為您服務

    ※Google地圖已可更新顯示潭子電動車充電站設置地點!!

    ※帶您來看台北網站建置台北網頁設計,各種案例分享

    小三通物流營運型態?

    ※快速運回,大陸空運推薦?