作者empireisme (empireisme)
看板Soft_Job
標題[討論] 醫院的排隊叫號機怎麼設計比較好
時間Tue Jun 6 01:24:40 2023
如題
這不是作業,也不是我公司的工作(小弟在數位廣告業當碼農,在台北扣完勞健保大概快四萬QQ)
是剛好有一次去醫院看病的時候想到,醫院的排隊叫號機
好像剛好可以是一個小system design的題目 ?
(小弟非本科年資快兩年,但平常幾乎都在CRUD跟設計TABLE還有接第三方API,所以以下內容
沒意外應該會有很多不太對的地方,希望可以海涵QQ)
就我的理解,醫院的排隊叫號機有以下規則
1.首先是可以線上掛號(checkInOnline),這邊很簡單,反正就是先掛號的優先看病,我這邊為了簡化先不考慮
現場掛號這件事,也假設只有一間醫院,以及一個門診,門診也沒有其他
2.可以過號(skipNumber),也就是現場叫號(callNumber)的時候,如果病人不在,那麼就把他
跳掉,直到他又現場註冊(checkInAgain),重新插入健保卡的時候,排隊叫號機才會
每看三個線上掛號的病人就去看現場註冊的病人,當然當現場線上掛號的病人時,排隊叫號機
就會一直去叫被過號的病人
上面就是我粗淺的規則
然後下面是我的思路:
我決定用物件來區分行為,因為事情好像沒有很複雜所以不引入Interface
我決定區分兩個class分別是 Patient 和 Hospital
Patient有兩個函數分別是
1.checkInOnline
2.checkInAgain (要有基本的防呆,只有被過號了,才能現場註冊,另外看過醫生的話,也不能再次註冊)
這兩個函數都argument都是 Hospital物件
Hospital我一開始有想到優先佇列,只是後來覺得好像直接設成兩個Queue事情好像
比較簡單?
我決定Hosptital要有這幾個Member
int skipNumber=3;
int skipNumberNow=0;
Queue<Patient> normalQueue= new LinkedList<>();
Queue<Patient> skipQueue= new LinkedList<>();
並且要有下面兩個函數
1.callNumber()
2.skipNumber()
說了這麼多,這是我的github,我覺得我真的code寫得很亂很爛
https://reurl.cc/nDEYG8
懶得看github的人
我直接貼code
https://imgur.com/jKRcBmK
https://imgur.com/UW2yp0z
我這邊為了各種防呆,宣告了一堆 flag
感覺程式碼沒有寫的很好
想請問各位先進,有沒有甚麼可以改善的方法,或是思路
謝謝各位年薪三百萬
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.227.13.10 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Soft_Job/M.1685985884.A.451.html
1F:→ kissmickey: 不是你想怎麼寫就怎麼寫 06/06 01:47
2F:→ kissmickey: 是以醫院制度醫生跟護理師說的算 06/06 01:47
3F:推 abccbaandy: 建議把你手上的專案優化比較實在... 06/06 01:57
4F:推 jyunwei: 現實當然很難,但想想也沒關係吧 06/06 02:31
5F:推 Burwei: 這感覺比較像是OOP隨堂小練習XD 06/06 02:34
6F:→ Burwei: 可以多想一下要變成一個可以用的系統,會有哪些service、 06/06 02:34
7F:→ Burwei: 資料怎麼傳遞、db怎麼設計之類的 06/06 02:34
8F:推 WTS2accuracy: 當下號碼為n,叫號未到的號碼x存set 06/06 02:58
9F:→ WTS2accuracy: 過號者x重新註冊時去查set 06/06 02:58
10F:→ WTS2accuracy: x在set的話從set踢出 塞入 pq<K,V> = (n+3,x) 06/06 02:59
11F:→ WTS2accuracy: pq 依K排序 06/06 02:59
12F:→ WTS2accuracy: 每次叫號 if(pq.peek().K <= n) 改叫過號者號碼 06/06 03:00
13F:→ WTS2accuracy: 之後做pq.poll() 如果再度過號就重新塞進set 06/06 03:01
14F:→ WTS2accuracy: 應該連OOP都用不太到 現成的資結就能實作了 06/06 03:01
15F:推 BigCockman: 你這是OOP跟系統設計沒什麼關聯 這就簡單的CRUD就能 06/06 03:05
16F:→ BigCockman: 解決了 頂多就是思考怎麼解決多人同時預約熱門醫生的 06/06 03:05
17F:→ BigCockman: 問題 06/06 03:05
18F:→ lazarus1121: 實務上一定是crud吧,大概四個欄位就搞定了 06/06 08:03
19F:→ lazarus1121: 好像需要五個,編號,id,是否掛號,是否看完,掛號時間 06/06 08:09
20F:推 codepo: 現在的醫院叫號機應該還有一些病人的優先順序,例如高齡 06/06 08:14
21F:→ codepo: 病患的順序比般人高之類的,然後再疊加上去是否已過號, 06/06 08:14
22F:→ codepo: 過號病患插卡後,會等兩位未過號的病患看診完就輪到他, 06/06 08:14
23F:→ codepo: 此時他的優先度又比其他人高,可以再多觀察看看叫號機的 06/06 08:14
24F:→ codepo: 實務狀況 06/06 08:14
25F:推 yamagishi: 開三條thread放東西就好 06/06 08:27
26F:→ yamagishi: main 06/06 08:27
27F:→ yamagishi: 準備要進入main的(max3) 06/06 08:27
28F:→ yamagishi: skip 06/06 08:27
29F:→ yamagishi: 變數只用一個 priority,剩下都是內部的商業邏輯處理 06/06 08:29
這樣會有share resource的問題嗎
還是我想太多了
你的pq 是怎麼決定順序的阿
30F:推 OriginStar: 我以為掛號機的目的是如何取最大的公平性,每家醫院診 06/06 08:41
31F:→ OriginStar: 所看來不太一下,自己看診掛號多注意一下就可以觀察到 06/06 08:42
32F:推 tmdla: 廣告業碼農也太有上進心 06/06 09:08
33F:→ devilkool: 剛好公司最近在做類似的東西,沒做這麼複雜因為實體的 06/06 09:39
34F:→ devilkool: 叫號機可以自己按號碼,醫生想先看誰就看誰XD 06/06 09:39
35F:推 stupid0319: 這麼簡單的功能,先上線,使用者有問題再改就好了 06/06 09:40
36F:→ ashlikewing: 前提就錯了吧,這不是system design 06/06 09:48
37F:→ empireisme: 喔喔 我想說leetcode有一題是design twitter 所以這 06/06 09:57
38F:→ empireisme: 種只是算是物件設計嗎? 06/06 09:57
39F:→ quickbym1: 已經從 OOP 下手了,可以從 OOA 的角度先找關聯性 06/06 09:59
40F:推 Sunal: 只有表面看起來公平,裡面醫生要先看幾號就按幾號 06/06 10:14
41F:→ brucetu: 在現場都沒有發現自己被醫生跳號過 XD 06/06 10:29
42F:→ empireisme: 其實我有發現,但能怎樣,還是要加入一個強制跳號功 06/06 10:31
43F:→ empireisme: 能 06/06 10:31
44F:→ brucetu: 討論題目是不需要跟真實世界情況一致的 06/06 10:36
45F:→ brucetu: 只要專注在想要討論的點就可以了 06/06 10:37
46F:推 Sunal: 這功能不能太常用啊 不然整天逛醫院的老人家會抗議 06/06 10:37
47F:推 gmoz: 這題目難的是需求分析跟訪談 寫code不算問題 06/06 11:34
48F:→ qss05: 可是我看大部分的,過號他就直接停在那裡,然後人工出來叫 06/06 11:37
49F:→ qss05: ,等到知會過的都看完了,號碼就繼續往下按,會來回顯示的 06/06 11:37
50F:→ qss05: 反而很少 06/06 11:37
51F:→ gmoz: 而且還要分掛號順序跟 報到順序(含過號報到) 06/06 11:37
52F:→ gmoz: 最重要的設計其實在人工介入的部分XD 06/06 11:38
53F:→ TConvertible: 簡單的事情不用寫得很複雜,放在 list 裡面就好吧 06/06 11:39
54F:推 SHANGOYANYI: 醫院取號這東西 考慮線上取號的話 最極端情況應該就 06/06 12:59
55F:→ SHANGOYANYI: 等於售票系統 瞬間一堆連線進來時系統要撐得住 然後 06/06 12:59
56F:→ SHANGOYANYI: 要有一套算法去決定誰搶到幾號這樣 06/06 12:59
57F:推 maybeilikeu: 叫號機沒用,還是會有人一直問護理師可不可以先看 06/06 14:08
58F:推 Kendai: 這個東西需要整合到HIS裡面,而且是寡占,可以研究但沒市場 06/06 15:13
59F:推 oyaji5566: 發給護士一個擴音喇叭,她說幾號就是幾號 06/06 16:17
60F:→ oyaji5566: 更正 是護理師 06/06 16:18
61F:推 xam: 這個題目還有個重點是要設計一個可抽換的策略模組啊.. 06/06 16:35
62F:→ xam: 因為規則每家可能要的都不一樣,而且還會變... 06/06 16:36
63F:推 luke72: 一個list就解決了,不用複雜化吧… 06/06 16:56
64F:推 B0988698088: 你忘了設計有民代關說喬床位時有user會無視queue直 06/06 17:17
65F:→ B0988698088: 接排到最前面的問題 06/06 17:17
66F:推 ManInBlack: 蠻有趣的啊,有點類似設計電梯的題目 06/06 17:25
67F:推 vi000246: 現在結合線上掛號 還會有報到功能 到現場插健保卡報到 06/06 18:01
68F:推 Sunal: 有沒有看過醫生一開診直接把所有號碼按完,所有人都變過號 06/06 18:09
69F:推 Sunal: 之後就看誰先報到先看了 06/06 18:12
70F:→ superpandal: 這個很簡單 你需要的是讀寫鎖 外加一個list 你用的 06/06 19:11
71F:推 brucetu: 說一個list解決的去看一下system design在玩什麼吧 又不 06/06 19:11
72F:→ brucetu: 是學校寫作業 06/06 19:11
73F:→ superpandal: linkedlist就很不錯 病人申請是寫 醫生更改順序也是 06/06 19:12
74F:→ superpandal: 寫 只是你需要儲存當前的順序 建議儲存在硬碟 整個物 06/06 19:14
75F:→ brucetu: 既然是當作SD題目討論 那就不是要問你怎麼樣最簡單寫code 06/06 19:15
76F:→ brucetu: 實現功能 也不是要你自己想像題目沒提到的use case讓討 06/06 19:15
77F:→ brucetu: 論越來越發散 06/06 19:15
請問B大 如果不討論use case 也不是討論實現功能,是要討論每個函數的職責嗎
還是每個class的用途 謝謝
78F:→ superpandal: 件儲存在硬碟一個檔案 每個醫生一個檔 06/06 19:16
79F:→ superpandal: 當然資料庫也可以 但有點太肥 06/06 19:20
80F:→ superpandal: 務實操作 不打高空 06/06 19:24
81F:→ layer0930: 實際上user 只有登入醫院的系統以及醫院的實體機器。 06/06 19:35
82F:→ layer0930: 這應該流量不會很大吧 06/06 19:35
83F:→ layer0930: 看起來就算不存db,只用 一個list也搞定 06/06 19:40
84F:推 hobnob: 精神可嘉 06/06 20:10
85F:推 HeIIoWorId: 這題目覺得有趣,之前看到的情境是病患看診後,醫師 06/06 20:17
86F:→ HeIIoWorId: 決定要排當日檢查,檢查完畢後還要回來診間報到,此 06/06 20:17
87F:→ HeIIoWorId: 外他還有可能是年長者,必須優先進入,光是這些情境 06/06 20:17
88F:→ HeIIoWorId: 就有不少要判斷的事情了 06/06 20:17
89F:→ freeunixer: 有些醫院會故意把網路掛號的排在很後面,現掛的較優先 06/06 20:43
90F:→ freeunixer: 當天檢完馬上要回來的,醫生會要他回來後直接敲門告知 06/06 20:45
91F:→ freeunixer: 至於喬床位不需要考慮,因為需要喬床位表示已經沒床位, 06/06 20:47
92F:→ freeunixer: 沒床位那就根本沒法先預約病床了,就無關系統預約了. 06/06 20:48
93F:→ superpandal: 都還好 不就是list內結構需要有什麼field 目前能想到 06/06 20:57
94F:→ superpandal: 最麻煩就是不只一個人可以改順序的問題 但這情況讓它 06/06 20:59
95F:→ superpandal: 存在就很奇妙 有的話必須引入diff機制 06/06 21:01
96F:推 Sunal: 就算討論發散也是很正常的 06/06 21:29
97F:推 Sunal: 網路上也不是所有人都會跟你認真的討論。回過頭來說,真實 06/06 21:34
98F:→ Sunal: 世界就是會有那麼多奇奇怪怪規則 06/06 21:34
※ 編輯: empireisme (36.227.13.10 臺灣), 06/06/2023 21:52:02
99F:推 luke72: SD在玩什麼?你是問實務還是考試還是粉絲向? 06/06 21:49
100F:→ luke72: 這種人為遠大於系統的,實務上就是list+插隊搞定 06/06 21:52
101F:→ luke72: 不然你提個系統能符合所有醫生的規矩啊,沒接過業務喔 06/06 21:56
102F:→ luke72: 不然為什麼考試都問搶票系統,選課系統,從未考過醫院 06/06 21:58
103F:推 WWIII: 快四萬先辭職吧 怎麼生活啊 06/07 01:32
104F:→ empireisme: 靠年終生活,而且我還四大碩qq 但當然不是電資 06/07 08:48
105F:→ empireisme: 考試好像很喜歡考短網址哈哈 06/07 08:49
106F:推 brucetu: 因為短網址很多知識點可以討論 算是背答案的題 06/07 08:55
107F:→ brucetu: 你這題因為你已經把scale限縮 硬要討論效能瓶頸有點怪 06/07 08:56
108F:→ brucetu: 你如果改成提供全國醫院統一使用的線上預約系統 06/07 08:57
109F:→ brucetu: 就變成類似搶票系統的標準題 06/07 08:57
110F:→ brucetu: 然後答題方式你google一下就很多了 06/07 08:58
111F:→ brucetu: 只有一間醫院 一個診間 就沒有concurrency以及資料量的 06/07 09:00
112F:→ brucetu: 問題,SD題目也不是要面試者天馬行空自己引入其他需求 06/07 09:00
113F:→ empireisme: 喔喔 因為我原本想說想要實作具有擴充性的程式碼,萬 06/07 09:04
114F:→ empireisme: 一如果抽換看病的規則的話 06/07 09:04
115F:→ empireisme: 之前看到有人討論過電商的折價券,雖然沒牽涉到併發 06/07 09:05
116F:→ empireisme: ,但我覺得已經夠複雜了Qq 06/07 09:05
117F:→ brucetu: 其實SD不考寫code 但我還是離題順便說一下那個code,建 06/07 09:10
118F:→ brucetu: 議不要讓Patient直接存取queue,他可以向診間預約報名,q 06/07 09:10
119F:→ brucetu: ueue應該是診間的private member,封裝在診間內,排隊邏 06/07 09:10
120F:→ brucetu: 輯怎麼實作外面不用知道。如果你有一天要換成用magic que 06/07 09:10
121F:→ brucetu: ue來實作,外面不用知道magic queue的存在,也不用參考, 06/07 09:10
122F:→ brucetu: 病患只要知道他可以向診間線上報名就好了。 06/07 09:10
123F:→ brucetu: 你想做可抽換排隊邏輯是對的,更好的做法是有一個interfa 06/07 09:13
124F:→ brucetu: ce定義排隊機,讓診間選擇使用哪一個 06/07 09:13
125F:→ brucetu: 這樣診間也不用看到data structure 06/07 09:14
126F:→ empireisme: 所以病人掛號的那個Function input是排隊機嗎?那醫 06/07 09:27
127F:→ empireisme: 院是還要被排隊機依賴注入嗎? 06/07 09:27
128F:→ brucetu: 可以用工廠模式讓診間取得他要使用的排隊機 06/07 12:25
129F:→ brucetu: 用 clinic.register(catient); 註冊病患 06/07 12:26
130F:→ brucetu: *patient 06/07 12:26
132F:→ brucetu: 這只是OOP的部分 系統設計可以看資料要怎麼存取 06/07 12:53
133F:→ empireisme: 謝謝b大,原來b大是c#派哈哈 06/07 13:07
134F:推 InfinitySA: SPEC和流程定好後其實不難... 06/07 13:55
135F:推 ss19990516: 身為醫院資訊碼農...這個問題最困難的不是程式... 06/07 17:33
136F:→ ss19990516: 而是平衡整院方、醫師、護理師的要求 06/07 17:34
137F:推 ss19990516: 一開始很單純,掛號序號+檢查後回來報到,兩個規則 06/07 17:37
138F:→ ss19990516: 後來多了一個過號要延後順序,再來又多了敬老號 06/07 17:38
139F:→ ss19990516: 最後做出來的東西,醫師、護理師、病人都不爽 06/07 17:40
140F:→ ss19990516: 全部抱怨都變成資訊處的鍋... 06/07 17:41
141F:→ ss19990516: 講到後面變成抱怨了... 06/07 17:43
142F:→ superpandal: 噗 這麼差的東西不用展示了 list當queue... 需求到這 06/07 17:47
143F:→ superpandal: 樣子其實也不用寫系統 原來老舊系統還比較好用 06/07 17:49
144F:→ superpandal: 你以為是concurrency 其實只是保障正確性 這東西確 06/07 17:59
145F:→ superpandal: 實不用注重什麼高併發 06/07 18:00
146F:→ superpandal: 說真的甚至不用寫java 腳本就搞定了 腳本想要硬幹複 06/07 18:06
147F:→ superpandal: 雜好用的系統也可以 06/07 18:07
148F:→ superpandal: 甚至某些小工具的power遠超你的想像 06/07 18:18
149F:→ superpandal: 正確性這東西不用高併發 低併發就夠你受了 當然想賭 06/07 18:28
150F:推 luke72: 是啊,醫生哪管你什麼工廠模式,急不急都是醫生決定的 06/07 18:28
151F:→ superpandal: 可以 06/07 18:28
152F:→ luke72: 高併發更不用管,遇到高併發都是會死人了還管你SD? 06/07 18:31
153F:→ luke72: 高併發都是重大災難,醫院自己有檢傷SOP 06/07 18:32
154F:→ luke72: 拉回來,這題就是命題太爛,醫院絕對不是軟體技術問題 06/07 18:34
155F:推 brucetu: 我不懂你們為什麼要一直討論實務討論到最後攻擊題目太爛 06/07 18:39
156F:→ brucetu: ? 06/07 18:39
157F:→ brucetu: 原文不是說當作小的SD題目討論嗎 06/07 18:39
158F:→ superpandal: 我是沒攻擊題目 但依照範例這連system都不算 以 06/07 19:11
159F:→ superpandal: number排連簡單的事件都處理不了 06/07 19:12
160F:→ superpandal: 到這樣還不如照原來 我是不覺得樓主只是當討論 06/07 19:16
161F:→ brucetu: 攻擊題目是指另一位,至於我貼的那個範例,是因為剛好討 06/07 19:17
162F:→ brucetu: 論到code的部分,那個跟系統設計無關 06/07 19:17
163F:→ brucetu: 因為原po有提到他想實作具有擴充性的程式,才討論一下他 06/07 19:20
164F:→ brucetu: 的code可以怎麼開介面,那個是OOP的部分了,所以貼出的範 06/07 19:20
165F:→ brucetu: 例也只是想清楚一點表達coding的部分,跟系統設計需要考 06/07 19:20
166F:→ brucetu: 量的東西無關 06/07 19:20
167F:推 asleisureto: 不是code是政治問題,然後工程師話語權在醫院就是底 06/07 19:32
168F:→ asleisureto: 層,所以...QQ 06/07 19:32
169F:→ superpandal: 這樣做擴充性並沒有高沒擴充多少 只是多了規範 06/07 19:41
170F:→ superpandal: 說題目很爛的其實也說的通 因為還真的不如舊方法 06/07 19:44
171F:→ superpandal: 然後樓主還很奇怪 說不複雜不需要引interface 後面又 06/07 19:45
172F:→ superpandal: 說需要擴充 然後給的範例又interface 突然又可以了 06/07 19:47
173F:→ superpandal: 所以你提供的樓主應該會 到底在做什麼 06/07 19:50
174F:→ empireisme: 其實是我知道interface可以隔離,但是我不會實作,有 06/07 23:13
175F:→ empireisme: 點像是我知道llm訓練了chatgpt但我不會用llm 另外我 06/07 23:13
176F:→ empireisme: 覺得我code寫的很醜qq 一堆flag 變數 06/07 23:13
177F:→ superpandal: 你的說詞很反覆 還沒走先學跑了 語言還沒弄好就開始 06/07 23:41
178F:→ superpandal: system design了 這樣都差不多4萬可領真的是上天眷顧 06/07 23:42
179F:→ empireisme: 好吧 那先不要說這是system design好了,其實我上過 06/08 01:19
180F:→ empireisme: 交大資結跟oop,這邊建議語言要先補充什麼呢,因為我t 06/08 01:19
181F:→ empireisme: hread也看了,但是現職工作就是一直堆商業邏輯,才想 06/08 01:19
182F:→ empireisme: 說可以寫一些東西來進步的稅 06/08 01:19
183F:→ empireisme: 有沒有什麼具體的考核點呢?因為所謂的更熟Java不知道 06/08 01:23
184F:→ empireisme: 指的是更熟內建的資結的api嗎?還是什麼,因為如果沒 06/08 01:23
185F:→ empireisme: 去看我現在不會的東西,好像就沒進步的感覺,還是說 06/08 01:23
186F:→ empireisme: 我應該要去補充設計模式嗎? 06/08 01:23
187F:→ brucetu: 那你就先寫個演唱會搶票系統 TDD跟DDD也瞭解一下 06/08 01:24
188F:→ brucetu: 設計模式常用的幾招會就好 不一定要整本書都學完 06/08 01:26
189F:→ superpandal: 很簡單 自己玩 現在都是用框架 外加有上頭 你很難玩 06/08 01:27
190F:→ superpandal: 出什麼花樣 也很難領悟奧秘 但代價什麼自己想想 因為 06/08 01:28
191F:→ superpandal: 有人會組擋你看穿本質 06/08 01:29
192F:→ superpandal: 現在看起來是好開發了 但學得更多了 06/08 01:29
193F:→ superpandal: 阻擋 06/08 01:30
194F:→ empireisme: 演唱會搶票是指不要超賣嗎?那有需要記錄User是誰搶 06/08 01:33
195F:→ empireisme: 到票這樣嗎?看過對岸的課程,但講的不深只有提到jvm 06/08 01:33
196F:→ empireisme: 鎖或是分布式鎖 06/08 01:33
197F:→ empireisme: 謝謝二位 06/08 01:33
198F:→ superpandal: 別人是旁敲側擊學東西 你是旁敲側擊別人學東西 06/08 01:34
199F:→ brucetu: 不要超賣只是整個系統中的一個小issue 06/08 01:38
200F:→ brucetu: 你要想burwei大提出的那些問題 06/08 01:40
201F:→ superpandal: 這根本沒意義 推文所考慮的點都是值得考量的 06/08 01:45
202F:→ empireisme: 喔喔,了解了,謝謝哈哈 06/08 01:45
203F:→ superpandal: 如果你想做正經的東西出來 但你這篇很糟糕 06/08 01:49
204F:→ brucetu: 電商 影音串流 社群 instant messaging 都去github找看 06/08 02:02
205F:→ brucetu: 看別人怎麼做 多注意介面怎麼設計 盡量畫圖幫助理解 06/08 02:02
206F:→ empireisme: 好的謝謝 06/08 09:06
207F:推 timofEE: 先把題目明確再來想怎麼做吧 06/08 23:25
208F:→ timofEE: 一直出想法小專案都被擴成大問題了 06/08 23:25
209F:→ timofEE: 門診掛號一路加到住院回診緊急開刀 06/08 23:25
210F:→ timofEE: 要不要連哪個民代插隊比較有利也一起放進來? 06/08 23:25
211F:推 a159753: 公立醫院: 80歲敬老優先 06/09 16:08
212F:→ asdfghjklasd: 有人做.google 一下 06/10 00:55
213F:→ cck525: 實務上一定是crud啦 不過之前去長庚看診在掛門號上好像沒 06/10 15:23
214F:→ cck525: 遇到什麼不便 06/10 15:23
215F:→ alan3100: 你應該參考狀態設計模式 而不是建一堆flag 06/11 23:18
216F:→ acgotaku: 你用內存去搞?服務重啟怎麼辦 06/12 10:03
217F:→ acgotaku: 這個用資料庫讀寫鎖就完成 用 redis queue做序列 06/12 10:06
218F:推 JackChena: 基本的排版空格也要做一下 06/21 23:56