您現在的位置是:首頁 > 動作武俠首頁動作武俠
電梯裡的開發邏輯
- 2022-10-15
bs架構和cs架構分別是什麼
剛開始做開發的那段時間
,
我比較著迷於一樣東西
:
電梯
。
之所以會對電梯比較感興趣
,
是因為電梯裡面有很多程式設計開發用得著的東西
,
而且
,
即使是受過良好教育的人
,
也經常按錯按鈕
,
比如想上樓的時候
,
卻按成了下樓
,
就像下面這樣
:
有些人應該有這樣的經驗
。
按的人並沒有錯
,
因為他肯定在想
:
我要上樓
,
總得先讓電梯下來吧
。
為什麼我會知道
,
因為我也這樣按過
^_^
但是從電梯設計者的角度來看
,
就表示電梯準備行進的方向是上行
,
就表示電梯準備行進的方向是下行
。
角度不一樣而已
。
僅僅只是這一點東西
,
肯定不夠的我關注的
。
電梯其實是比較複雜的一個系統
。
我曾經試著畫過它的執行狀態圖
,
但是畫來畫去
,
經過很多次修正之後發現
,
原來電梯的執行狀態圖和程式語言中經常提起的多執行緒生命週期極其相似
:
電梯的維修
=
執行緒的掛起
電梯無人時
=
就緒狀態
電梯執行時
=
執行狀態
這其實是一幅高度精簡和抽象的狀態圖
,
因為電梯實際執行過程肯定是有很多場景在其中的
。
細細想來
,
可以設想當電梯正常執行時
,
會有如下場景
:
如果狗蛋在五樓
,
二丫在九樓
,
電梯在一樓
當狗蛋想下樓
,
而二丫想上樓的時候
,
電梯會怎麼執行呢
?(
先進先出
FIFO
?)
當狗蛋想下樓
,
而二丫也想下樓的時候
,
電梯會怎麼執行呢
?(
先接二丫
?)
當狗蛋想上樓
,
而二丫想下樓的時候
,
電梯會怎麼執行
?(
先到五樓接狗蛋
?)
當狗蛋想上樓
,
而二丫也想上樓的時候
,
電梯會怎麼執行
?(
先到五樓接狗蛋
?)
如果狗蛋在五樓
,
二丫在九樓
,
電梯在十樓
,
出現上面的四種情況又會怎麼處理呢
?
如果狗蛋在五樓
,
二丫在九樓
,
電梯在七樓呢
?
雖然電梯有超重設定
,
但其實在超重和正常承重量之間還是有臨界值的
,
仔細想想
:
如果處於臨界值
,
當電梯上行時
,
它會怎麼處理
?
如果處於臨界值
,
當電梯下行時
,
又會怎麼處理
?
這還只是兩個人的場景
,
我們日常生活中的電梯
,
尤其是寫字樓中的電梯
,
每天不知道有多少人等在多少層樓的門口
,
大家的目的地都不一樣
,
電梯執行是的判斷條件應該會比上面列出的更復雜一些
。
但不管有多麼複雜
,
只要能夠把上面的這些想明白並實現了
,
就是一名合格的工程師
。
(
PS
:
括號裡面列的只是參考
,
實際如何執行
,
可能會由不同電梯公司的程式碼決定
)