原创 【OpenVswitch源碼分析之一】背景

什麼是OpenVswitch Open vSwitch是基於開源Apache 2 license的多層軟件交換機,其目的是實現一個產品級質量的交換平臺,其支持標準的管理接口,並開放轉發功能接口供編程擴展和控制。 Open v

原创 【OpenVswitch源碼分析之四】控制面關鍵接口與調用流程

受限於篇幅,前文只講述了控制面板關鍵接口的前兩個部分,本篇繼續講述基本二層協議的配置,Openflow的控制又是一個很大的命題,會放到下一篇文章做闡述。 1. 虛擬設備的生命週期接口 2. 虛擬設備的業務配置接口 3.

原创 尋找兄弟數字

#ifndef _FIND_SIMILAR_WORD_H_ #define _FIND_SIMILAR_WORD_H_ #include <string> #include <map> using namespace std; /* *

原创 計算二叉樹的深度和寬度

如何求解二叉樹的深度,可以先分析一下下圖: 在這個圖中,根節點R的高度H1=max{左子節點高度H2,右子節點高度H3}+1;可以得出H1=H3+1; 而H2=max{H4,0}+1;H3=H5+1; ....;... 所以可以看出對高

原创 tarjan算法的原理和實現

Tarjan算法的操作原理如下: 在任何深度優先搜索中,同一強連通分量內的所有頂點均在同一棵深度優先搜索樹中。也就是說,強連通分量一定是有向圖的某個深度搜樹子樹。我們用low值記錄該點所在強連通子圖對應的搜索子樹的根節點的Dfn值。注意

原创 【JAVA 提高班之三】異常處理

Java中異常提供了一種識別及響應錯誤情況的一致性機制,有效地異常處理能使程序更加健壯、易於調試。異常之所以是一種強大的調試手段,在於其回答了以下三個問題: 什麼出了錯? 在哪出的錯? 爲什麼出錯? 在有效使用異常的情況下,異

原创 開心的小明——動態規劃

問題描述: 小明今天很開心,家裏購置的新房就要領鑰匙了,新房裏有一間他自己專用的很寬敞的房間。更讓他高興的是,媽媽昨天對他說:“你的房間需要購買哪些物品,怎麼佈置,你說了算,只要不超過N元錢就行”。今天一早小明就開始做預算,但是他想買

原创 【OpenStack源碼分析之三】Nova-Compute啓動流程分析

Nova架構概覽 Nova是OpenStack社區最核心的項目,也是社區誕生之時就一直存在的項目,它主要提供計算資源的服務,這個計算資源包含了虛機以及配套的存儲,網絡等資源。我比較喜歡把OpenStack和Linux做類比,我們知

原创 【OpenVswitch源碼分析之三】控制面關鍵接口與調用流程

控制面總覽 上圖只是描述了控制面的調用流程,控制面的接口包括如下幾各方面: 1. 虛擬設備的生命週期接口 2. 虛擬設備的業務配置接口 3. 二層基礎協議的運行啓動 4. Openflow協議的運行開啓與流表下發 下

原创 對Python協程的理解

前言 之前看Python教程的時候瞭解了一些協程的概念,相對還是比較膚淺,但是協程對Python語言而言是一個很重要的特性,加上近期看了我司架構師標哥的一篇講協程的文章,感覺豁然開朗。 爲什麼需要協程 協程這東西,不是Python

原创 關於有限狀態機

一 有限狀態機的實現方式 有限狀態機(Finite State Machine或者Finite State Automata)是軟件領域中一種重要的工具,很多東西的模型實際上就是有限狀態機。 FSM的實現方式: 1) switch/

原创 內存文件操作系統

模擬實現的一個文件操作系統,頭文件如下:#ifndef _FILE_MANAGER_H_ #define _FILE_MANAGER_H_ #inc

原创 【OpenStack源碼分析之四】WSGI與Nova API服務啓動

前言 前文已經介紹了RPC Server的啓動,而Nova API啓動的是WSGI服務,所以先介紹一下WSGI。 WSGI Web服務器網關接口(Python Web Server Gateway Interface,縮寫爲WSG

原创 【OpenStack源碼分析之一】初探OpenStack

打算開始寫一個Openstack的分析系列,其實接觸Openstack也比較久了,但是一直沒有深入瞭解,而且因爲本人對Python知之甚少,用之甚少,所以想研究Openstack的代碼上手就會比較困難,再加上代碼量也比較大。 不

原创 【OpenVswitch源碼分析之六】內核空間轉發面數據結構與流程

內核態的報文處理起始有不少人已經寫了比較詳細的分析,這裏有SDNLAB的一篇文章(http://www.sdnlab.com/15713.html),這裏只是對那些文章再做些總結;內核對報文的處理整體上分爲三個大的步驟: 報文頭