原创 【Flask】 利用uWSGI和Nginx發佈Flask應用

因爲Flask比較容易上手,之前也拿flask寫過幾個小項目,不過當時天真地以爲只要在服務器上nohup跑一個python腳本就算是成功發佈了這個flask項目。實際上這還面臨很多問題,比如併發性不好,不支持異步(雖然也可以在run裏面加

原创 CMake快速製作RPM包

簡介 關於CMake介紹有很多,這裏就不再CV一遍了。這裏說的是CMake中包含的三個工具(cmake cpack ctest)中的cpack工具。他可以幫助快速的打包發佈你的程序。Linux下可以用tar.gz、rpm、zip等格式。公

原创 go web框架gin

Gin 是一個 go 寫的 web 框架,具有高性能的優點。官方地址:https://github.com/gin-gonic/gin 帶目錄請移步 http://xf.shuangdeyu.com/movie/content.html?

原创 Kafka集羣Leader均衡(Balancing leadership)

當一個broker停止或者crashes時,所有本來將它作爲leader的分區將會把leader轉移到其它broker上去。這意味着當這個broker重啓時,它將不再擔任何分區的leader,kafka的client也不會從這個broke

原创 kafka數據丟失總結

數據丟失是一件非常嚴重的事情事,針對數據丟失的問題我們需要有明確的思路來確定問題所在,針對這段時間的總結,我個人面對kafka 數據丟失問題的解決思路如下: 是否真正的存在數據丟失問題,比如有很多時候可能是其他同事操作了測試環境,所以首

原创 Kafka Consumer Rebalance

0.8.2.2之前版本版本:   Kafka的Consumer Rebalance方案是基於Zookeeper的Watcher來實現的。每個consumer group(cg)在zk下都維護一個”/consumers/[group_nam

原创 blink編譯及使用

阿里巴巴在2019年1月27日左右開源了Blink,Blink目前的版本是基於Flink1.5.1修改的,然後增加了一些比較好的特性。github地址爲:https://github.com/apache/flink/tree/blink

原创 將Golang程序 在windows下編譯成Linux下可執行的二進制文件並且執行

首先請確認已經安裝golang, 並且已經配置好了GOROOT,GOPATH,GOBIN 在xx.go所在的的文件夾下按sheet+鼠標右鍵在dos下打開,執行下面的命令 set GOARCH=amd64 set GOOS=linux /

原创 查看端口被哪個進程佔用

lsof -i :22 知道22端口被哪個進程佔用 netstat -lnp|grep 7000 查看7000端口被哪個進程佔用

原创 golang面向併發的內存模型

在早期,CPU都是以單核的形式順序執行機器指令。Go語言的祖先C語言正是這種順序編程語言的代表。順序編程語言中的順序是指:所有的指令都是以串行的方式執行,在相同的時刻有且僅有一個CPU在順序執行程序的指令。 隨着處理器技術的發展,單核時代

原创 Golang面向對象編程之繼承&虛基類【組合&接口】

相關說明 Golang裏面沒有像C++一樣有繼承相關的概念,但是我們卻可以實現繼承相關的用法,這就要用到struct、interface這兩個結構。 Golang裏面有組合的概念,也就是一個struct 裏面可以包含一個或者多個struc

原创 Python的WSGI協議

問題: Python的Web應用和開發框架與底層的Web服務器之間缺乏通用的通信協議,增加了Web應用開發過程的複雜度。   思路:參考Java的Servlet,所有基於Servlet開發的Web應用,可以運行在所有支持Servlet的W

原创 網關協議學習:CGI、FastCGI、WSGI

CGI CGI即通用網關接口(Common Gateway Interface),是外部應用程序(CGI程序)與Web服務器之間的接口標準,是在CGI程序和Web服務器之間傳遞信息的規程。CGI規範允許Web服務器執行外部程序,並將它們的

原创 進程、線程、協程與goruntine

相信作爲服務端開發尤其是高性能服務開發的猿們,曾經面試都曾經被問到進程,線程之類的問題,作爲操作系統最核心的概念,這些X程就像我們的一個個工具,是我們在開發過程中經常接觸的概念,對於這些概念的不清晰我們便發現寫的代碼功能是對的,代碼是渣的

原创 從go語言中找&和*區別

*和&的區別 : & 是取地址符號 , 即取得某個變量的地址 , 如 ; &a *是指針運算符 , 可以表示一個變量是指針類型 , 也可以表示一個指針變量所指向的存儲單元 , 也就是這個地址所存儲的值 . 從代碼中驗證 : 先構建一個Re