存QQ號(hào)碼,究竟該用int類型還是string類型?
大家好,我是了不起。
QQ號(hào)相信現(xiàn)在玩互聯(lián)網(wǎng)的基本上人人都有。大多數(shù)人應(yīng)該玩過這個(gè)游戲吧,“今天是馬化騰的生日,轉(zhuǎn)發(fā)這條消息到五個(gè)群,你的QQ等級(jí)就會(huì)多一個(gè)太陽。”
看到這里你也許會(huì)心一笑,多少年前的老把戲了,還想騙我?但是當(dāng)初人人想提高QQ等級(jí)的年代,應(yīng)該不少人被騙過。
今天了不起不和大家議舊,而是和大家聊一個(gè)一直以來爭(zhēng)議很大的問題——存QQ號(hào)碼,究竟該用int類型還是string類型?
圖片
1、QQ歷史
QQ,最早的名字是OICQ(Open ICQ),于1999年2月推出。彼時(shí),QQ號(hào)的分配還顯得非常稀缺且珍貴,最早的QQ號(hào)是五位數(shù)或六位數(shù)。
由于那個(gè)時(shí)代的互聯(lián)網(wǎng)用戶基數(shù)較小,能夠擁有一個(gè)五六位數(shù)的QQ號(hào)在當(dāng)時(shí)幾乎是一種“身份的象征”。
事實(shí)上,這些早期的QQ靚號(hào),現(xiàn)在在網(wǎng)上有專門的售賣產(chǎn)業(yè)。
后來隨著QQ的普及,越來越多的用戶開始涌入這個(gè)社交平臺(tái),然后QQ號(hào)長(zhǎng)度開始變長(zhǎng),七位,八位,到現(xiàn)在的十一位。
圖片
2、選擇 int 還是字符串?
先看騰訊內(nèi)部人員的回答:
圖片
答案很明顯了,他們最先開始是用的 int32,后面遷移到 int64 了。
但是這樣設(shè)計(jì)是合理的么?
如果早期程序員設(shè)計(jì)過身份證號(hào)存儲(chǔ)的人,應(yīng)該都吃過虧。
因?yàn)樽铋_始身份證號(hào)用 bigint 存就可以,后來身份證多出了一個(gè) X,然后......
所以,如果讓我來主導(dǎo)QQ設(shè)計(jì)的話,我會(huì)選擇 string。
無它,能滿足多樣化的用戶需求,不僅僅是長(zhǎng)度,如果后期需要帶有特殊符號(hào)或其它國家的手機(jī)號(hào),那么 string 是一個(gè)更為穩(wěn)妥的選擇。用 string 可以確保無論用戶輸入什么形式的號(hào)碼,你的程序都能正確處理并保存。
即使int節(jié)約內(nèi)存,查詢速度快,但是一旦有需求變更,就會(huì)很難受。


























