我高中的時候,是住校生。寢室到了10點半就會熄燈,早上6點40左右就要起來跑早操。
一天半夜大概兩三點,起床放了個大號。想要充廁所的時候發現沒有水,很尷尬,也沒有其他的辦法。半夜還冷的很。就**睡覺了,想著明早一早起來的時候衝就是了。
等到第二天早上,一早起來,急急忙忙的出早操,生怕遲到,遲到是會被班主任老左罵的,我也就忘了衝廁所。等中午回到寢室的時候,宿管大叔找到我說我沒有衝大便的事,說我生活習慣有問題之類的。我和他解釋了半天,大叔最後說,算了,我本來還打算還跟你們老左說的,看你認錯態度比較好,就算了。我心中os,瓜娃子娃娃,這個事情都還要給老左說,你大爺,我又不是故意的。後面,宿管大叔警告我說,以後注意點,下不為例。
宿管大叔的這種行為,用我們四川話說,就是男牙尖。
高中差不多都是10年前的事了,後面隨著社會的飛速發展,我在很多地方都發現了紅外線感應的廁所。只要你把你的屁股挪出了紅外線的感應範圍,那他就會自動幫你沖掉便便了。多好的事兒啊。
我一直都堅持乙個觀點,程式**於生活,而且程式也高於生活。程式和生活是很關聯的。
當我們學習到多執行緒程式設計的時候,就難免會學習到鎖的使用。我們也會發現到,因為我們記性不好(也許不是),我們都可能會忘了「衝廁所」,我們可能會忘掉把鎖釋放掉。
想想這麼乙個函式:
int fun(int x) {
lock(...);
if (...) return 1;
else if (...) return 2;
else throw ...;
unlock(...);
這個時候,我們忘掉「衝廁所」的機會就太大了,多個return語句,以及可能出現的異常丟擲。都有可能導致我們忘記了釋放掉鎖。以為我們要在每個return,throw前面加上乙個unlock。
那麼我們能不能給這個函式加乙個紅外線裝置?讓我們屁股一挪開的時候,他就充掉我們的便便?
在我們學習程式的時候,被誤以為c語言程式之父的譚浩強先生曾經寫到過的《c語言》中講,變數三要素:型別,名稱,值。其實我覺得還有乙個東西很重要,作用域。為什麼重要呢?當你在坑里的時候,你是在大便,大便在坑里是正常的,當你走出坑的時候,在星巴克喝咖啡的時候(我還沒喝過呢),在電影院看電影的時候,如果有個大便是在你視線之類,這不就囧死你娘親了。如果沒有作用域,我們的程式世界不知道會帶來怎樣的一種不可想象的混亂。
因為作用域很重要,我們可以使用作用域的概念完成「紅外線裝置」。
定義如下乙個類scopelock
class scopelock {
public:
scopelock(pthread_mutex_t mutex) : mutex(_mutex)
pthread_mutex_lock(&mutex);
~scopelock() {
pthread_mutex_unlock(&mutex);
private:
pthread_mutex_t mutex;
好了,這樣你就只需要在你需要鎖上鎖的地方頂乙個乙個scopelock的區域性變數,然後就不用管了,就好比,你只需要開啟廁所的們,安心大便,就不用想著衝廁所的事兒了。多好的事兒啊。
需要說明這個scopelock不是我自己發明的,來自posa卷2,《pattern oriented software architecture》,不錯的一本書。
如果,我只能把忘了衝大便這個事情學習這麼一點兒,我覺得我就膚淺了。說過,程式高於生活,你還能想到其他的嗎?想到同樣方法解決類似問題的用途嗎?
聽了一次高中的勞技公開課
焊接技術勞技公開課 2004 11 23 星期二和王老師去聽了一次勞動技術課。這是南京市教研室中學組第十 一 十三周教研活動。11月 23日上午8 30 江浦高階中學,研究課 焊接技術 執教者 施 參加者為各區縣教研員 電子電工教師 通知 見 聽課的過程 聽課教師 9個,都是一線的勞技教師。早上7 ...
記錄Hive中一次查詢慢的問題
hive查詢問題 快速查詢hive資料倉儲表中的總條數 需要連線hive的元資料 mysql select d.name,t.tbl name,t.tbl id,p.part id,p.part name,a.param value from tbls t left join dbs d on t....
網頁中一次匯出多張Excel的問題
最近在做乙個教師成果管理系統,由於需求,需要將老師的各項成果以excel匯出。對於乙個老師而言,我是通過匯出一張excel,然後裡面有多張sheet,這個沒什麼問題。但是這裡邊有個系主任的更高許可權的管理,就是當老師登入系統後,會判斷老師的身份許可權,如果是系主任,可以在對自己各項操作基礎上,還能檢...