原创 2.Supervisord進程管理工具的安裝使用 (副標題:用supervisord管理Tornado進程)

先來介紹 supervisord。Supervisor 是一個進程監控程序。滿足的需求是:我現在有一個進程需要每時每刻不斷的跑,但是這個進程又有可能由於各種原因有可能中斷。當進程中斷的時候我希望能自動重新啓動它,此時,我就需要使用到了S

原创 2.開始Tornado的源碼分析之旅

Tornado 是由 Facebook 開源的一個服務器“套裝”,適合於做 python 的 web 或者使用其本身提供的可擴展的功能,完成了不完整的 wsgi 協議,可用於做快速的 web 開發,封裝了 epoll 性能較好。文章主要

原创 牛頓迭代法

平時經常看到牛頓法怎樣怎樣,一直不得要領,今天下午查了一下百度百科,寫寫我的認識,很多地方是直觀理解,並沒有嚴謹的證明。在我看來,牛頓法至少有兩個應用方向,1、求方程的根,2、最優化。牛頓法涉及到方程求導,下面的討論均是在連續可微的前提

原创 1.讀懂tornado的預備知識:什麼是epoll

問:epoll 或者 kqueue 的原理是什麼?爲什麼 epoll 和 kqueue 可以用基於事件的方式,單線程的實現併發?我沒看過 linux 內核,對這方面一直有疑問…… 必須從很多基礎的概念開始構建這個答案,並且可能引申到

原创 3.大概瞭解Tornado框架的設計模型

Tornado框架設計模型 從上面的圖可以看出,Tornado 不僅僅是一個WEB框架,它還完整地實現了HTTP服務器和客戶端,在此基礎上提供WEB服務。它可以分爲四層: 最底層的EVENT層處理IO事件; TCP層實現了TCP

原创 21.番外篇:Tornado的多進程管理分析---process.py代碼解讀

Tornado的多進程管理我們可以參看process.py這個文件。 在編寫多進程的時候我們一般都用python自帶的multiprocessing,使用方法和threading基本一致,只需要繼承裏面的Process類以後就可以

原创 (1)Two Sum-----LeetCode

Given an array of integers, find two numbers such that they add up to a specific target number. The function twoSum sho

原创 5.Tornado HTTP服務器的基本流程---Tornado底層I/O的內部實現

本小節介紹Tornado HTTP服務器的基本流程,分別分析httpserver, ioloop, iostream模塊的代碼來剖析Tornado底層I/O的內部實現。 httpserver.py中給出了一個簡單的http服

原创 6.Tornado RequestHandler和Application類---瞭解web.py文件

前面一小節提到了需要了解 web.py 這個文件,這個文件最關鍵的地方是定義了 Application 和 RequestHandler 類。我們再看看 Tornado 的 Hello World,我們再精簡一下,下面是最簡單的實例化

原创 8.RequestHandler的分析---handler是如何工作的

前面一小節談到了Application 類,這裏再來看看RequestHandler類。 從上一節的流程可以看出,RequestHandler 類把 _execute 方法暴露給了 application 對象,在這個方法裏完成了請求

原创 4.Tornado源碼必須要讀的幾個核心文件----瞭解Tornado的大致工作機制

前面我們看了一些關於 Tornado 的總體框架設計圖,還有一些模塊設計。比如3.大概瞭解Tornado框架的設計模型 裏面的文件組織,真的不少,那麼我們應該具體去讀哪幾個文件呢? 爲了方便,約定$root指帶tornado的根目

原创 7.Application對象的接口與起到的作用---Application對象工作機制

前面小節談到了Tornado的RequestHandler和Application類,這兩塊內容還很多,分開來再補充一下,這篇先談談Application類。 總的來說,Application對象提供如下幾個接口: __init__

原创 從gcc的編譯到makefile的引入

1.使用gcc編譯運行第一個HelloWorld程序(只涉及單個文件) 可以在任何一個目錄編寫C程序然後編譯運行,我這個實例在自己主目錄進行:   然後就進入了編寫程序的界面:   按下鍵盤”i”進入編輯界面,然後

原创 C++ static、const和static const 以及它們的初始化

const定義的常量在超出其作用域之後其空間會被釋放,而static定義的靜態常量在函數執行後不會釋放其存儲空間。 static表示的是靜態的。類的靜態成員函數、靜態成員變量是和類相關的,而不是和類的具體對象相關的。

原创 運算符重載典型問題——對象自增實現成員變量自增且對象間賦值

operator 是C++的關鍵字,本質上operator++() 與普通重載函數相同,不同的是C++專門爲這個特殊的重載函數定義了各種基本數據類型,因此我們可以不去管理數據的類型,只需在用的時候填好所要進行運算的數據就可以了。 定義方式