快轉到主要內容
  1. Categories/

程式開發

2017


Golang Day 2

·1 分鐘

Golang 語法注意 #

  • 格式很重要,不管是空行或者是 TAB、大括號等位置,很重要,會編譯不過。不過可以用 gofmt 工具幫你自動排版程式。
  • 所有的程式需要用 package 整理,有點像是 java package/module 的觀念
  • 主程式一定是 package main, 而且一定會呼叫 func main()
  • 引用不必要的 packages 會錯誤
  • 沒用到的變數也會錯誤
  • 不需要分號結尾
  • 條件式不需要用 () 包起來 (這我就有點不習慣了~因為 Java, javascript, C# 都要)
  • golang 應該不算是 OOP, 所以要習慣沒有類別 (Class) 封裝這件事情

Reference #

Golang Day 1

·1 分鐘

安裝 #

brew install golang

環境設定 #

  • GOROOT: GO 安裝的地方,用 brew 安裝的,可以設定 /usr/local/opt/go/libexec 就可以
  • GOPATH: GO 執行的時候要的路徑,看專案在哪邊就設定在哪邊

GOPATH #

一般是指向專案位置,裡面還會切分三個目錄

  • src: 一般程式碼放的地方,可以包含網址.比如說 github.com/golang/golint 這樣的方式
  • pkg: 編譯後的檔案
  • bin: binary file

Empty Go #

1
2
3
4
5
package main

func main() {

}

注意空行以及大括弧的位置,golang 很注意程式碼格式

Akka.Net 不錯用

·2 分鐘

真的使用之後,越來越覺得 Actor Model 是個好物,因為他本來就是拿來做平行運算用的。

建議可以先從以下的幾篇文章以及 Github 的範例開始

好處 #

我剛開始做的時候,其實是想到 Sequence Diagram。因為 Actor Model 的重點其實就是在訊息的傳遞與處理,只是在整體架構上有一個 ActorSystem 幫忙做處理

根據以下的圖片

一個 Actor 在建立之後,AkkaDotNet 會幫你建立整個 Actor 的基本行為。 包含一個 Mailbox、預設的狀態等,而且也預設了每個 Actor 都有可以有 Children Actors 所以,當你傳遞一個訊息給 Actor 的時候,其實不是直接呼叫 Actor 中處理訊息的方法,而是先進入 Mailbox,類似郵件的方式排隊處理。

當處理有問題的時候,你是可以在 Handle 方法中,直接拋出錯誤,讓 Actor 失敗。如此一來就會觸發上層 Actor 的 SupervisorStrategy。預設的 Strategy 可以參考 Fault Tolerance 文件

2016