真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

巧用Unix時間戳-創(chuàng)新互聯(lián)

Unix時間戳包含了豐富的時間信息,很多平臺都有時間戳的概念,也提供了不少操作時間戳的系統(tǒng)調用

創(chuàng)新互聯(lián)建站是一家專注于成都網(wǎng)站建設、做網(wǎng)站成都西信服務器托管的網(wǎng)絡公司,有著豐富的建站經(jīng)驗和案例。

這些系統(tǒng)調用固然強大,但我比較喜歡使用便捷的方法,而不是去調用系統(tǒng)函數(shù),下面分享敲代碼時候碰到的兩個小例子,我使用了非常規(guī)的做法,使效率提高了那么一點點。

當代碼變簡單,變高效,哪怕只是一點點,心情都是非常舒暢的~~~

定義:是從1970年1月1日(UTC/GMT的午夜)開始所經(jīng)過的秒數(shù),不考慮閏秒。

Example1

需求,一個存儲在Memcached(可理解為數(shù)據(jù)庫)的結構體,結構主要內容如下,每個玩家每天可以獲得MAX經(jīng)驗,exp字段表示今天得到的經(jīng)驗,這個字段用于判斷是否達到當天的最高經(jīng)驗

假設玩家要增加100經(jīng)驗,exp+100超過MAX了,那么他要增加的經(jīng)驗為 MAX-exp,在這之前要做一個判斷

先判斷是否今天第一次獲得經(jīng)驗,如果是,設置當前的時間到time,然后exp設置為100

這時候一般做法可能是,把time和當前時間提取出來,獲取他們的年月日,來判斷是否同一天,如果不是同一天,把當前時間設置為time

struct xx{

int exp;        //經(jīng)驗

unsigned int time;    //時間

};

我的做法是,獲取當前時間和time,但這個time我不會把時間戳存進去,而是計算之后的一個數(shù)值

一天的時間為60*60*24=86400

#define DAYTIME 86400

當前時間/DAYTIME 和 time做判斷,如果相等,表示同一天,如果不相等,把當前時間/DAYTIME 設置為time

兩種做法相比較,第一種需要調用兩次系統(tǒng)函數(shù),來獲取tm,還有一次time系統(tǒng)調用,然后做3次判斷,年月日

第二種,只調用一次time系統(tǒng)調用,做一次除法和一次判斷,搞定

Example2

需求,在Memcached存一個數(shù)據(jù),需要設置超時時間,每日凌晨過期,這樣的需求很廣泛,每日任務之類的都可以有這種需求

那么在設置這個key的時候,需要指定超時時間~,指定距離今日凌晨剩余的秒數(shù)。PS(當秒數(shù)為0的時候,需要設置為86400,不然0在memcached中的意思是,永不超時)

常規(guī)做法,通過系統(tǒng)函數(shù)獲取當日的時分秒,然后計算出當日逝去的秒數(shù),最后86400-秒數(shù),設置為超時時間

我的做法,

#define DAYTIME 86400

當前時間%DAYTIME 即可得到當日逝去的秒數(shù),然后86400-當日逝去的秒數(shù),設置為超時時間

兩種做法相比較,第一種需要額外調用一次系統(tǒng)函數(shù),兩次乘法兩次加法 時*3600+分*60+秒得到當日逝去秒數(shù)

第二種,只做了一個取模操作,就得到了上面若干步驟得到的結果

如果你有其他高效的做法,歡迎分享,互相學習

另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。


分享題目:巧用Unix時間戳-創(chuàng)新互聯(lián)
網(wǎng)頁網(wǎng)址:http://weahome.cn/article/gsjdi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部