原创 Linux命令 ps --ppid使用的一個坑

看一下下面這個命令 ps --ppid [父進程名] -o pid= 這個命令會打印出這個父進程下的所有子進程(非遞歸) 但是,如果父進程下沒有子進程,這個命令不打印任何東西並且返回錯誤碼1! 例如: def test(pid):

原创 linux 0地址的妙用

1.楔子  我在學習list_head這個結構體的時候偶然發現了0地址這個東西,其中list_head是內嵌於許多數據結構的 比如用的最多的頁 struct page { ...... struct list_head

原创 對於位置無關代碼的理解

這個概念其實很好理解。對於一個可重定位目標文件,裏面一定有很多需要重定位的符號。這些符號需要在靜態鏈接器進行鏈接的時候回填絕對的虛擬內存地址。這種叫做位置有關代碼。 而位置無關代碼的意思是,在動態鏈接階段(這個階段可以發生在裝載時也可以發

原创 Ubuntu16.04中的可重定位目標文件

最近在看《CSAPP》這本神書,其中看到了第七章鏈接中的可重定位目標文件,自己動手在ubuntu16.04上試了一試,發現有很多都做了一些改動,在此記錄 1.源程序 main.c static int a = 1; int buf[2]

原创 【轉】基於linux4.20.1的mmap源碼分析

原文鏈接:http://www.leviathan.vip/2019/01/13/mmap%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90/ 內核版本: 4.20.1 函

原创 leetcode981 map數據結構超時大坑(unordered_map find()比運算符[]快了10多倍)

TL的代碼 class TimeMap { public: /** Initialize your data structure here. */ TimeMap() { } void set

原创 The target you are trying to run requires an OpenSSL implementation.

我在安裝grpc的時候遇到了這個問題 DEPENDENCY ERROR The target you are trying to run requires an OpenSSL implementation. Your system

原创 ubuntu16.04 徹底卸載MySQL

以MySQL- 5.7.18爲例: sudo apt-get autoremove --purge mysql-server-5.7 sudo apt-get remove mysql-server sudo apt-

原创 iptables 流量控制

在filter表下面一行增加以下兩行  iptables -A FORWARD -m limit -d 192.168.10.2 --limit 30/sec -j ACCEPT  # 這句意思是限定每秒只轉發30個到達192.168.

原创 leetcode327 超時大坑

這題使用把兩個賦值 for (int i = st; i <= mid; i++) { int m = mid; int n = mid;

原创 你真的會寫二分查找嗎?

上個月面試網易,面試官要我寫個二分查找,查找與target相等的數字的下標。。。我心想:簡單;刷刷一寫,面試官說:你這不對,int mid  = (st + ed) >> 1;會溢出; 我:???? 那好吧 我改成unsigned int

原创 openstack代碼解讀之 neutron.agent.linux.iptables_manager模塊

關於這個模塊,我開始有以下幾個問題: 1.研究過他的人一定會對裏面的chain的命名方式感到奇怪,爲什麼會有unwrapped_chain與wrapped_chain同時存在呢,這個按照他註釋裏面寫的意思 # Add a neutron

原创 python __getattr__, __getattribute__,__get__的用法

class C(object): a = 'abc' def __getattribute__(self, *args, **kwargs): print("__getattribute__() is called

原创 OpenStack 關於admin-openrc.sh的作用(Queens版本)

在許多安裝文檔中,都要source admin-openrc.sh。那麼這一步具體有什麼用呢?還是要從代碼看起。 不執行source admin-openrc.sh,直接執行neutron port-list會出現以下錯誤: Auth

原创 python常用的工具函數

1.zip:接受任意多個(包括0個和1個)序列作爲參數,返回一個tuple列表。 如: a = [1,2] b = [3,4] c = dict(zip(a, b)) print c 結果: {1: 3, 2: 4}