1. 程式人生 > 實用技巧 >LeetCode 第 4 號問題:尋找兩個正序陣列的中位數

LeetCode 第 4 號問題:尋找兩個正序陣列的中位數

一、實驗目的

對 Python 呼叫 OpenDaylight 的 REST API 方法有初步瞭解

二、實驗任務

本實驗需要用另一種方法完成上一個實驗相同的功能,即通過 Python 程式呼叫 OpenDaylight 的北向介面下發關於硬超時的流表,實現拓撲內主機在一定時間內的網路通斷。

三、實驗步驟

1. 實驗環境

安裝了 Ubuntu 16.04.5 Desktop amd64 的虛擬機器

2. 實驗過程

(1)生成拓撲

$ sudo mn --topo=single,3 --controller=remote,ip=127.0.0.1,port=6633 --switch ovsk,protocols=OpenFlow13

生成拓撲之後發現 ping 失敗

解決辦法:要在 OpenDaylight 啟動之後再生成拓撲

(2)編寫 Python 程式碼和 JSON 格式的請求內容

$ nano odlnorth.py
$ nano hardtimeout.json

(3)執行 Python 程式碼,完成流表下發

執行 odlnorth.pu報錯

解決辦法:沒有安裝 requests庫,執行以下安裝

$ sudo apt-get install python-pip //如果 pip 沒裝的話需要執行
$ sudo pip install requests

安裝 pip 中報錯

解決辦法:查詢了一些資料之後發現可能是之前的 apt 命令沒有執行完成就被關掉了。開啟 root 許可權,執行以下兩條命令強制解鎖
(我沒有用 root 許可權也試過,結果仍讓報錯)

sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock

執行完後再次執行安裝 pip 命令

成功了,但是安裝的速度非常非常慢,基本不動。於是我又去查詢資料看看能不能安裝的快點。
解決辦法:可以通過更新 apt-get 的源來解決這個問題。具體的步驟可以參考以下這篇部落格。
https://blog.csdn.net/gxz987/article/details/98185262


可以發現更新完之後的速度非常快。

解決了前面的問題之後,啟動 OpenDaylight,建立拓撲,執行 odlnorth.py。

實驗結果與預期一致。

四、總結

這次實驗整體上並不難,有實驗六的基礎做起來很快。唯一讓我比較困擾的就是中間 pip 安裝出現的兩次問題,好在都順利解決了。