事情是這樣的,公司有個比較老的SDK庫,在我進公司三個月以後就交由我來維護了,因而呼我就勤勤奮奮的扛起了這份神聖手動黑人臉
的職責。這個SDK主要是跟向APP提供後臺的服務,相似這樣的:bash
APP須要向server上傳本身的Capability
(App能支持的功能項,每一個APP可能不同)。而這個APP是一個long
型,每個Bit表示一個功能項。spa
63 | 62 | 61 | ··· | 5 | 4 | 3 | 2 | 1 | 0 |
---|
祖傳代碼裏是這樣寫的:日誌
public final static long CAP_0 = 0x01;
public final static long CAP_1 = 0x01 << 1;
public final static long CAP_2 = 0x01 << 2;
···
···
···
public final static long CAP_31 = 0x01 << 30;
複製代碼
我接到的需求就是這樣,提供後臺新增的Capability
,因而我就沒動腦子寫出了下面的代碼:code
public final static long CAP_0 = 0x01;
public final static long CAP_1 = 0x01 << 1;
public final static long CAP_2 = 0x01 << 2;
···
···
···
public final static long CAP_31 = 0x01 << 30;
public final static long CAP_31 = 0x01 << 31;
public final static long CAP_32 = 0x01 << 32;
public final static long CAP_33 = 0x01 << 33;
複製代碼
事情就是這麼個事情,狀況就是這麼個狀況!cdn
SDK的使用者,某APP開發(其實這個需求就分給我了)死活和後臺調不通,現象就是若是APP正確上報某個
Capability
,點擊APP上的按鈕,會向server發出命令請求,實際是server一直報錯。server
按理說,這個事情只要後臺告訴我具體是什麼錯誤,也是很容易查出來的。然鵝...,日誌上顯示 error msg: deviceId not found
,咱們的公司後臺在臺灣,溝通起來特費勁,so我就一我的默默的排查...,朝着deviceId not found
這個方向去查了。。。。blog
我:deviceId我有傳呀,怎麼仍是這個錯誤?
大佬:是否是,deviceId中途被改動了?
我:我去追蹤一下看看。
……
我:deviceId是正確。
大佬:那你找臺灣的後臺看看吧。。
我:哦,我再看看吧。。
複製代碼
就這樣過了許久...,咦,等等,這個capability怎麼是負的...,😯😯,內心一萬隻喜洋洋飄過。 改代碼:開發
public final static long CAP_0 = 0x01L;
public final static long CAP_1 = 0x01L << 1;
public final static long CAP_2 = 0x01L << 2;
···
···
···
public final static long CAP_31 = 0x01L << 30;
public final static long CAP_31 = 0x01L << 31;
public final static long CAP_32 = 0x01L << 32;
public final static long CAP_33 = 0x01L << 33;
複製代碼
嗯,細節戰勝愛(cheng)情(xu)啊(yuan)!it
你能不能來找我一下,我準備了酒,也準備了故事!372702757
io