Introduction
MongoDB是一個面向文檔的免費數據庫
多用於數據採集和分布式處理(Map/Reduce),特別是在大數據處理方面比較擅長
數據庫排名:
https://db-engines.com/en/ranking
MongoDB為唯一一個排名前五的文檔存取型的數據庫
Golang網路編程-day29-socket-TCP編程
introduction
socket編程分為客戶端及服務器
golang中服務端處理流程:
監聽端口
接收客戶端的連接
創建goroutine,處理該連接
golang中客戶端處理流程:
建立與服務端的連接
進行數據受發
關閉連接
一般socket基本的架構如圖所示
golang 將以上的服務皆封裝了,且性能非常高
Python機器學習-numpy
introduction
對一份大型的數據來說,是由多筆樣本所構成的
列(column)通常為樣本的指標或是特徵(feature)
行(row)則代表一筆含有多項特徵的資料集合
綜合以上,以矩陣形式表示資料會更為直觀
計算方便
計算效率高
numpy庫可用於矩陣計算
Golang多線程初識-day28-線程異常(panic)
introduction在實際業務開發中,我們可能會創建上萬個goroutine,當其中某個goroutine panic了,且沒有捕獲(recover)錯誤,那麼整個程序將會崩潰。所以,養成好習慣,每當創建一個goroutine,請記得於函數內寫下recover
Golang多線程初識-day28-定時器(超時處理)
introduction
Timer可以讓用戶自定義超時的邏輯
尤其是在應對select處理多個channel的超時、單channel讀寫的超時等情形,
為一次性的時間觸發事件,其與Ticker不同
Ticker是按一定時間間隔持續觸發時間事件
設置超時時間(timeout),避免阻塞時間過長
定時器(Ticker)位於time包中,使用NewTicker()方法生成定時器
Golang多線程初識-day27-goroutine通信-管道(channel)
introduction
類似unix中的管道(pipe),或是隊列(queue)
channel為引用類型的數據結構
先進先出
線程安全,多個goroutine同時訪問,不需要加鎖
channel是有類型的,整數的channel只能存放整數,依此類推
使用make()初始化管道
Golang多線程初識-day26-goroutine通信-線程同步(sync)
全局變量和鎖(sync)
透過全局的數據結構達到線程之間的通信
建立互斥鎖(sync.Mutex) -> 只會有一個線程進到程序中進行讀寫
透過go build -race 檔名查看是否存在資源的競爭
Golang多線程初識-day25-goroutine
多線程編程(併發)
在C++, Java中創建線程,亦必須實現線程池管理線程;亦須解決線程之間數據共享的問題
goroutine 用於golang中的併發,屬於輕量級的線程
不需考慮線程池如何實現(由golang中的runtime管理)
創建goroutine非常方便(go)
Go初識-day24-錯誤處理
定義錯誤
errors.New("錯誤碼") : 生成一個錯誤類型的實例12345678910111213package mainimport ( "errors" "fmt")//定義一個errNotFound的變量為error類型,並用errors.New產生實例var errNotFound error = errors.New("NotFoundError")func main(){ fmt.Printf("error : %v",errNotFound)}
在函數外定義錯誤,在函數內引用
Go初識-day23-json數據協議
Introduction
目前有80%的API支持json數據協議
json協議為一種資料傳輸的標準,不同語言之間溝通的橋樑
將golang中數據類型,如struct,map等,使用json序列化,與其他語言進行交互