亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營的一線實戰(zhàn)洞察。

C++11毫秒時間戳獲取與日期字符串互轉(zhuǎn):跨平臺工具類實戰(zhàn)

C++11毫秒時間戳獲取與日期字符串互轉(zhuǎn):跨平臺工具類實戰(zhàn) 時間戳這個東西看起來是“取個時間嘛”的小事但毫秒級的互轉(zhuǎn)一旦做錯排查起來比內(nèi)存泄漏還讓人頭疼。我最近整理一套上報系統(tǒng)的日志字段時看到老代碼里還散落著time(NULL)取秒、再自己湊毫秒的寫法心里特別沒底。C11 的chrono其實早已把取毫秒這件事封裝得很順手關(guān)鍵是你得知道用哪個時鐘、怎么解析字符串、時區(qū)語義怎么定。這篇就把我沉淀下來的方案完整寫出來從獲取當(dāng)前毫秒時間戳到日期字符串和毫秒時間戳互轉(zhuǎn)最后給一個能直接放進(jìn)工程的工具類。寫 C 的朋友也別急著走里面的坑和思路是通用的代碼只是 C11 的殼。1. 為什么是毫秒而不是秒日志和監(jiān)控讓秒級時間戳現(xiàn)了原形1.1 秒的粒度在日志和監(jiān)控里真的不夠用單看“日期時間格式帶不帶毫秒”好像只是多三個數(shù)字的區(qū)別但真實業(yè)務(wù)里差距非常大。我遇到過最典型的場景是耗時抖動排查。服務(wù)接口平均 200ms某次流量高峰后出現(xiàn)一批 3500ms 的超時請求。如果日志時間戳只精確到秒輸出大概是這樣子的2024-01-15 14:30:25 INFO request finished, cost: 3560ms時間戳停留在14:30:25完全看不清這次超時是從哪一秒開始、和哪一次流量波峰重疊。如果日志里帶著.123、.900這樣的毫秒精度按時間排序后就能準(zhǔn)確還原出“上游在某毫秒內(nèi)突然打進(jìn)來一批請求”“數(shù)據(jù)庫連接池在那幾毫秒里卡住”這樣的因果鏈路。另一個常見需求是任務(wù)跨天、跨分鐘歸屬。比如某個定時任務(wù)在23:59:59.800開始處理到第二天00:00:00.250結(jié)束。如果只按秒級時間戳統(tǒng)計這條任務(wù)可能會被歸到 23 號而不是 24 號如果協(xié)議里的結(jié)算、對賬、積分流水也依賴這個時間差一天可是大事故。毫秒時間戳雖然不能根治業(yè)務(wù)邏輯問題但至少能把順序關(guān)系看清楚誰先到、誰后到、誰在哪個窗口里過期。對后臺服務(wù)、日志系統(tǒng)、監(jiān)控上報、設(shè)備通信協(xié)議來說毫秒精度早已是標(biāo)配不是可選項。1.2 老代碼里的 time(NULL) 和 gettimeofday 為什么別扭翻老 C/C 項目最??吹降氖沁@幾類做法time(NULL)拿到秒級time_t然后手動* 1000湊毫秒。結(jié)果就是根本拿不到真毫秒只能硬編。用gettimeofday()拿timeval這是 POSIX 接口Windows 下沒有等價物為了跨平臺得額外包一層#ifdef。在 Windows 下改用GetSystemTimeAsFileTime()但這函數(shù)給的單位是 100 納秒還得換算直接勸退不少人。更野一點(diǎn)的做法是二次封裝一堆_ftime64、localtime_s不同編譯器參數(shù)順序還不一樣代碼里全是宏。這些方案不是不能用問題是每個平臺一套語義不統(tǒng)一而且很容易在“秒轉(zhuǎn)毫秒”“毫秒取秒”的過程中把溢出和時間溢出搞錯。C11 標(biāo)準(zhǔn)庫的chrono把時鐘、時間點(diǎn)、時長統(tǒng)一抽象出來目的就是讓我們少寫這些平臺適配。它不是性能最好的方案但它是跨平臺語義最清晰、最不容易寫錯的方案。后面所有代碼我都默認(rèn)目標(biāo)環(huán)境支持 C11。2. 從 system_clock 里安全取出毫秒別再碰 high_resolution_clock2.1 為什么不能隨便選 high_resolution_clock很多初學(xué)者看完網(wǎng)上的例子習(xí)慣寫出這樣一行auto now std::chrono::high_resolution_clock::now();這行代碼看起來通用實際上隱藏著一個大坑high_resolution_clock不保證基于 Unix epoch也不保證能換算成日期。它在不少實現(xiàn)里只是steady_clock的別名計時起點(diǎn)可能是系統(tǒng)啟動時間甚至可能是某個隨機(jī)時刻。你拿去測代碼耗時沒問題但拿它當(dāng)“當(dāng)前時間的毫秒時間戳”去和日歷日期互轉(zhuǎn)結(jié)果完全不可控。正確的選擇只有一個std::chrono::system_clock。這個名字里的“system”指的就是系統(tǒng)的墻上時鐘它在 C11 標(biāo)準(zhǔn)里被定義為能表示系統(tǒng)范圍的實時時鐘時間點(diǎn)可以和time_t互通多數(shù)實現(xiàn)直接基于 Unix epoch。我們要做“毫秒時間戳和日期互轉(zhuǎn)”必須用它。2.2 從 time_point 到 int64_t核心代碼其實就幾行獲取當(dāng)前毫秒時間戳的完整寫法如下#include chrono #include cstdint int64_t now_utc_ms() { auto now std::chrono::system_clock::now(); return std::chrono::duration_caststd::chrono::milliseconds( now.time_since_epoch()) .count(); }拆開看三步system_clock::now()返回一個time_point它代表“當(dāng)前這個時刻”在某個時鐘坐標(biāo)系里的位置。.time_since_epoch()把這個時間點(diǎn)轉(zhuǎn)換成自 epoch 以來的時長。對system_clock來說epoch 一般就是1970-01-01 00:00:00 UTC。duration_castmilliseconds把時長強(qiáng)制切到毫秒精度.count()取出對應(yīng)的整數(shù)毫秒數(shù)。這里的關(guān)鍵是你必須理解time_point和duration的分工前者是“墻上的一點(diǎn)”后者是“一段時間”。很多人被chrono的模板類型繞暈其實只要記住這個分工后面所有轉(zhuǎn)換都順了。2.3 有時要拆出“秒 毫秒余數(shù)”兩種寫法看著辦有些場景不只要總毫秒數(shù)還希望拿到“整秒部分”和“毫秒余數(shù)”。這時候不要用兩次system_clock::now()那在兩次調(diào)用之間系統(tǒng)時間可能已經(jīng)前進(jìn)了幾微秒造成秒和毫秒對不齊。正確做法是只取一次時間點(diǎn)再分別切auto now std::chrono::system_clock::now(); int64_t total_ms std::chrono::duration_caststd::chrono::milliseconds(now.time_since_epoch()).count(); int64_t sec_part total_ms / 1000; int32_t ms_part total_ms % 1000;因為total_ms本身就是 epoch 以來的總毫秒數(shù)除以 1000 的商就是整秒余數(shù)就是毫秒。這里要提醒一句上面的除法和取模對total_ms 0的場景不成立因為 C11 的整數(shù)除法是向零截斷的。比如-1 / 1000在數(shù)學(xué)上是-0.001向零截斷后得到0余數(shù)是-1。如果你要支持 1970 年以前的時間戳這里必須特殊處理我后面在格式化章節(jié)會專門說。平臺精度其實不必?fù)?dān)心Windows 上system_clock::now()底層通常是GetSystemTimeAsFileTime()提供的精度是 100 納秒Linux 上一般基于clock_gettime(CLOCK_REALTIME)能到納秒。取毫秒完全是降維使用。3. 日期字符串轉(zhuǎn)毫秒時間戳解析、轉(zhuǎn)換與“UTC還是本地時間”的抉擇3.1 先看看 std::get_time 方案能寫但坑不少很多人第一反應(yīng)是用std::get_time解析日期字符串#include iomanip #include sstream std::tm tm{}; std::istringstream ss(2024-01-15 14:30:25); ss std::get_time(tm, %Y-%m-%d %H:%M:%S);這段代碼在多數(shù)編譯器上能跑但有幾個長期被低估的問題get_time不會幫你解析毫秒字段。字符串里帶.123就得先切掉或者再單獨(dú)讀一次。如果輸入是 ISO 8601 風(fēng)格2024-01-15T14:30:25.123Z格式串還要改成%Y-%m-%dT%H:%M:%S而且 Windows 標(biāo)準(zhǔn)庫的get_time實現(xiàn)和 Linux 上的行為存在微妙差異對輸入流里空白的處理方式可能不同。解析之后多余字符不一定被自動檢查。字符串尾部多了一個空格或亂字符你很難立刻發(fā)現(xiàn)。默認(rèn)情況下std::istringstream會跳過輸入開頭的空白但日期字符串內(nèi)部的空格需要格式串精確匹配某些舊編譯器的get_time實現(xiàn)在這里翻過車。所以我的建議是項目里的緊湊代碼不要用它做“日期字符串轉(zhuǎn)時間戳”的主邏輯get_time更適合交互式配置解析這種寬松場景。生產(chǎn)環(huán)境互轉(zhuǎn)往下看。3.2 用 sscanf %n 做嚴(yán)格解析可讀性和正確性都能保住我實際用的解析函數(shù)長這樣#include cstdio #include cstring #include string bool parse_ms(const std::string text, int64_t out_ms, bool utc true) { std::string t text; // 兼容 ISO 8601: 2024-01-15T14:30:25.123Z if (t.size() 10 t[10] T) { t[10] ; } if (!t.empty() t.back() Z) { t.pop_back(); } int y 0, mo 0, d 0, h 0, mi 0, s 0, ms 0; int consumed 0; int n sscanf(t.c_str(), %4d-%2d-%2d %2d:%2d:%2d.%3d%n, y, mo, d, h, mi, s, ms, consumed); if (n 7 || consumed 0) { return false; } // 嚴(yán)格檢查字符串必須被完全消費(fèi)允許尾部空白 while (consumed static_castint(t.size()) (t[consumed] || t[consumed] \t || t[consumed] \r || t[consumed] \n)) { consumed; } if (consumed ! static_castint(t.size())) { return false; } std::tm tmv{}; tmv.tm_year y - 1900; tmv.tm_mon mo - 1; tmv.tm_mday d; tmv.tm_hour h; tmv.tm_min mi; tmv.tm_sec s; tmv.tm_isdst 0; time_t secs 0; if (utc) { #ifdef _WIN32 secs _mkgmtime(tmv); #else secs timegm(tmv); #endif } else { tmv.tm_isdst -1; secs mktime(tmv); } out_ms static_castint64_t(secs) * 1000 ms; return true; }幾個設(shè)計點(diǎn)我展開說一下。第一用%4d而不是%d能限制年份最多讀 4 位避免20240115 143025這種粘連字符串被錯誤拆開。雖然正常日志不會這么寫但解析函數(shù)面對不可信數(shù)據(jù)時嚴(yán)格是好事。第二%n是 sscanf 的“當(dāng)前已消費(fèi)字符數(shù)”輸出它不參與返回值計數(shù)。所以判斷順序是先看n 7有 7 個有效字段再看consumed是否把整個字符串吃干凈。尾部允許少量空白但不允許出現(xiàn)2024-01-15 14:30:25.123abc這種內(nèi)容。第三utc參數(shù)決定了字符串的語義。utc true表示輸入的日期時間就是 UTC 時刻utc false表示這是本地時間。這是最容易埋雷的地方下一節(jié)細(xì)說。第四毫秒字段%3d最多讀 3 位。如果字符串是2024-01-15 14:30:25.1會被解析成 1 毫秒如果是2024-01-15 14:30:25.100就是 100 毫秒。為了避免歧義業(yè)務(wù)日志最好強(qiáng)制寫滿 3 位。3.3 本地時間還是 UTCmktime 與 timegm 的差異必須說透這是日期字符串轉(zhuǎn)時間戳里最重要的語義問題。同樣的字符串2024-01-15 14:30:25在 UTC8 時區(qū)如果按本地時間理解對應(yīng) epoch 毫秒數(shù)會比按 UTC 理解少 8 小時整整 28800000 毫秒。我見過的很多事故都是把“日志里打印出來的人類可讀時間”當(dāng)成了絕對時間然后直接用它去做時間計算。實際上日志打印的字符串是什么時區(qū)取決于格式化時用了localtime還是gmtime解析時也必須保持一致。mktime(tm)把tm當(dāng)成系統(tǒng)當(dāng)前時區(qū)的本地時間換算成 epoch 秒。它自己會處理時區(qū)偏移也會修改tm的tm_wday、tm_yday字段。對帶夏令時的地區(qū)還依賴tm_isdst標(biāo)志。timegm(tm)把tm當(dāng)成 UTC 時間直接換算成 epoch 秒。它是 GNU 擴(kuò)展Windows 上沒有Windows 對應(yīng)的是_mkgmtime(tm)。_mkgmtime(tm)MSVC 提供的 UTC 版本和timegm行為一致。所以代碼里用了條件編譯#ifdef _WIN32 secs _mkgmtime(tmv); #else secs timegm(tmv); #endif如果不需要支持 1970 年前的場景在使用_mkgmtime/timegm之前把tmv.tm_isdst設(shè)置成0就夠了它能避免一部分未初始化內(nèi)存導(dǎo)致的隨機(jī)結(jié)果。補(bǔ)一個常見誤區(qū)有人為了省事先timegm把 UTC 轉(zhuǎn)成 epoch再調(diào)localtime展示完全沒問題但要小心解析方向和展示方向必須配對。解析時按本地時間展示時卻用 UTC最后存庫的時間戳?xí)詣悠茙讉€小時而且這類問題特別難發(fā)現(xiàn)因為它只在跨時區(qū)的服務(wù)器上看得出異常。3.4 不想依賴系統(tǒng)時區(qū)函數(shù)手寫日期算法更可控如果寫的是嵌入式、核心路由或?qū)蓽y試性要求很高的代碼可能連timegm都不想讓它們依賴系統(tǒng) TZ 環(huán)境。這時可以直接用日期算法把“年月日時分秒毫秒”算成 epoch 毫秒完全按 UTC 或固定偏移解釋。這是我在項目中用的一個純函數(shù)版本避免平臺差異int64_t days_from_civil(int y, int m, int d) { y - m 2; const int era (y 0 ? y : y - 399) / 400; const unsigned yoe static_castunsigned(y - era * 400); const unsigned doy (153 * (m (m 2 ? -3 : 9)) 2) / 5 d - 1; const unsigned doe yoe * 365 yoe / 4 - yoe / 100 doy; return era * 146097 static_castint64_t(doe) - 719468; }配合關(guān)系式int64_t seconds days_from_civil(y, mo, d) * 86400 h * 3600 mi * 60 s; out_ms seconds * 1000 ms;這套算法來自現(xiàn)代 C20chrono日期底層實現(xiàn)的公開推算邏輯我自己在項目里驗證過多年跨度包括閏年邊界。優(yōu)點(diǎn)是不依賴平臺宏、不依賴 TZ、純輸入輸出非常適合單元測試。代價是沒有本地時間語義。如果你真的需要“把本地時間字符串轉(zhuǎn)成 epoch 毫秒”那就躲不開mktime它內(nèi)部要查系統(tǒng)時區(qū)規(guī)則。所以我的最終建議是業(yè)務(wù)內(nèi)部統(tǒng)一用 UTC 字符串解析時也走utc true只有面向用戶展示時才轉(zhuǎn)成本地時間。4. 毫秒時間戳轉(zhuǎn)回日期字符串格式化、補(bǔ)零和線程安全4.1 先拆秒和毫秒負(fù)數(shù)時間戳要單獨(dú)處理從int64_t total_ms轉(zhuǎn)成日期字符串第一步永遠(yuǎn)是拆整數(shù)int64_t sec_part total_ms / 1000; int32_t ms_part static_castint32_t(total_ms % 1000);如前面提到的負(fù)數(shù)時 C 整數(shù)除法向零取整total_ms -1會得到sec_part 0, ms_part -1。直接拿去格式化秒和毫秒拼出來就是畸形的1970-01-01 00:00:00.-1。所以正式格式化前要做一個逆標(biāo)準(zhǔn)化if (ms_part 0) { sec_part - 1; ms_part 1000; }這個是毫秒時間戳互轉(zhuǎn)里最常見也最少有人寫的細(xì)節(jié)。別覺得 1970 年之前不重要設(shè)備上報、歷史回放、跨時區(qū)結(jié)算都可能遇到負(fù)時間戳而且萬一某個中間件傳了一個壞值你至少不會打印出完全沒法解析的字符串。4.2 localtime 與 gmtime 的線程安全版本跨平臺宏就兩行拿到sec_part之后需要把它拆成年月日時分秒。絕不建議直接用localtime或gmtime這兩個函數(shù)在傳統(tǒng)實現(xiàn)里返回的是靜態(tài)緩沖區(qū)指針多線程下數(shù)據(jù)會被互相覆蓋。正確做法是用帶_r或_s后綴的線程安全版本。我一般封裝成這樣#include ctime #include cstdint inline void safe_break_time(int64_t sec, bool utc, std::tm out) { time_t raw static_casttime_t(sec); #ifdef _WIN32 if (utc) { gmtime_s(out, raw); } else { localtime_s(out, raw); } #else if (utc) { gmtime_r(raw, out); } else { localtime_r(raw, out); } #endif }這里最大的坑是參數(shù)順序。Windows 的gmtime_s/localtime_s第一個參數(shù)是輸出tm*第二個是輸入const time_t*Linux 的gmtime_r/localtime_r第一個參數(shù)是輸入const time_t*第二個才是輸出tm*。順序?qū)懛床粫幾g報錯但運(yùn)行結(jié)果完全亂掉。cast成time_t也要注意。如果你在 32 位系統(tǒng)上用了老的 32 位time_tsec_part超過 2038 年就會溢出表現(xiàn)是日期“回到”1901 年?,F(xiàn)代 64 位系統(tǒng)基本沒有這個問題但寫跨平臺庫時最好自己確認(rèn)下time_t的寬度。4.3 用 snprintf 補(bǔ)零格式化輸出串一眼就能對齊拆完tm和毫秒余數(shù)格式化就簡單了。我推薦直接用snprintf不繞彎子#include cstdio std::string format_ms(int64_t total_ms, bool utc true) { int64_t sec_part total_ms / 1000; int32_t ms_part static_castint32_t(total_ms % 1000); if (ms_part 0) { sec_part - 1; ms_part 1000; } std::tm tmv{}; safe_break_time(sec_part, utc, tmv); char buf[40]; snprintf(buf, sizeof(buf), %04d-%02d-%02d %02d:%02d:%02d.%03d, tmv.tm_year 1900, tmv.tm_mon 1, tmv.tm_mday, tmv.tm_hour, tmv.tm_min, tmv.tm_sec, ms_part); return std::string(buf); }幾個格式位%04d保證年份四位%02d保證月、日、時、分、秒兩位%03d保證毫秒三位。輸出風(fēng)格是2024-01-15 14:30:25.123。如果要存日志文件或上報協(xié)議我建議統(tǒng)一成這個格式因為人類可讀、機(jī)器也能用同一套parse_ms原樣解析回去。如果想輸出 ISO 8601 UTC 字符串把格式改成%04d-%02d-%02dT%02d:%02d:%02d.%03dZ并且在調(diào)用safe_break_time時傳入utc true這樣日志里能明確看到Z后綴跨系統(tǒng)追溯時不會誤判時區(qū)。5. 一個可以直接帶走的跨平臺工具類完整代碼與性能實測心得5.1 完整頭文件拷貝進(jìn)項目就能用前面幾段把原理拆開了這里我把它們整合成一個不依賴第三方庫的頭文件。假設(shè)你的項目就是 C11文件名我一般叫MillisClock.h。#pragma once #include chrono #include cstdint #include cstdio #include ctime #include string namespace millisclock { inline int64_t now_ms() { auto now std::chrono::system_clock::now(); return std::chrono::duration_caststd::chrono::milliseconds( now.time_since_epoch()) .count(); } inline void safe_break_time(int64_t sec, bool utc, std::tm out) { time_t raw static_casttime_t(sec); #ifdef _WIN32 if (utc) { gmtime_s(out, raw); } else { localtime_s(out, raw); } #else if (utc) { gmtime_r(raw, out); } else { localtime_r(raw, out); } #endif } inline bool parse_ms(const std::string text, int64_t out_ms, bool utc true) { std::string t text; if (t.size() 10 t[10] T) { t[10] ; } if (!t.empty() t.back() Z) { t.pop_back(); } int y 0, mo 0, d 0, h 0, mi 0, s 0, ms 0; int consumed 0; int n sscanf(t.c_str(), %4d-%2d-%2d %2d:%2d:%2d.%3d%n, y, mo, d, h, mi, s, ms, consumed); if (n 7 || consumed 0) { return false; } while (consumed static_castint(t.size()) (t[consumed] || t[consumed] \t || t[consumed] \r || t[consumed] \n)) { consumed; } if (consumed ! static_castint(t.size())) { return false; } std::tm tmv{}; tmv.tm_year y - 1900; tmv.tm_mon mo - 1; tmv.tm_mday d; tmv.tm_hour h; tmv.tm_min mi; tmv.tm_sec s; tmv.tm_isdst 0; time_t secs 0; if (utc) { #ifdef _WIN32 secs _mkgmtime(tmv); #else secs timegm(tmv); #endif } else { tmv.tm_isdst -1; secs mktime(tmv); } out_ms static_castint64_t(secs) * 1000 ms; return true; } inline std::string format_ms(int64_t total_ms, bool utc true) { int64_t sec_part total_ms / 1000; int32_t ms_part static_castint32_t(total_ms % 1000); if (ms_part 0) { sec_part - 1; ms_part 1000; } std::tm tmv{}; safe_break_time(sec_part, utc, tmv); char buf[40]; snprintf(buf, sizeof(buf), %04d-%02d-%02d %02d:%02d:%02d.%03d, tmv.tm_year 1900, tmv.tm_mon 1, tmv.tm_mday, tmv.tm_hour, tmv.tm_min, tmv.tm_sec, ms_part); return std::string(buf); } } // namespace millisclockLinux 上如果編譯器沒開 GNU 擴(kuò)展timegm會編譯失敗。兩個解決辦法一是編譯時加-D_GNU_SOURCE二是干脆在文件頂部加#if !defined(_WIN32) #define _GNU_SOURCE 1 #endif必須放在所有系統(tǒng)頭文件之前。如果你不想碰宏把utc true的解析換成第 3 章的days_from_civil純算法也能完全擺脫timegm。5.2 性能實測心得別在熱路徑上反復(fù)調(diào) mktime有人會擔(dān)心這些轉(zhuǎn)換函數(shù)的開銷尤其是日志系統(tǒng)每秒輸出幾十萬行時。我實測下來的感受是format_ms的主要成本在localtime_r/gmtime_r它內(nèi)部每次都要查時區(qū)規(guī)則、校正夏時令狀態(tài)。而parse_ms的主要成本在mktime/timegm特別是本地時間模式下mktime會做一次完整的日歷歸一化。在我手頭一臺普通服務(wù)上純循環(huán)調(diào)用format_ms100 萬次大概能感覺到明顯的耗時但通常只有幾百毫秒級別如果一次服務(wù)啟動要格式化幾億條日志那就不能在一個轉(zhuǎn)換上斤斤計較而是要考慮用第 3.4 節(jié)的days_from_civil算法替換gmtime_r純整數(shù)運(yùn)算會快很多。對固定時區(qū)做緩存。例如你的服務(wù)只在 UTC8 運(yùn)行可以把時區(qū)偏移緩存成一個常量避免每次調(diào)用都走 TZ 環(huán)境變量。日志模塊批量刷盤時一次格式化一批再統(tǒng)一寫減少上下文切換和鎖競爭。順便說一句日志里面如果既要人類可讀字符串又要 epoch 毫秒最好兩個都打印出來。比如int64_t t millisclock::now_ms(); LOG_INFO(time_ms%lld time_str%s, t, millisclock::format_ms(t).c_str());這樣排查問題時用字符串肉眼定位用time_ms做跨進(jìn)程排序兩邊互相印證。5.3 業(yè)務(wù)約定統(tǒng)一存儲為 UTC 毫秒展示時再轉(zhuǎn)本地工具類只是“術(shù)”真正讓團(tuán)隊少踩坑的其實是“約定”。我現(xiàn)在的項目里定下三條鐵律存儲、傳輸、計算的內(nèi)部時間一律用int64_tUTC 毫秒任何數(shù)據(jù)庫表、協(xié)議字段、日志字段都這么定義。只有日志展示、用戶界面輸出才允許出現(xiàn)本地時間字符串而且必須帶時區(qū)或調(diào)用明確的format_ms(...)函數(shù)。所有外部輸入的日期字符串入口處統(tǒng)一用parse_ms解析一次轉(zhuǎn)成 UTC 毫秒后內(nèi)部流轉(zhuǎn)不要再保留字符串格式到處傳。這樣做的好處是數(shù)據(jù)在系統(tǒng)內(nèi)部永遠(yuǎn)是同一種語義不會因為某臺服務(wù)器TZ沒配置、某臺機(jī)器被設(shè)置成不同時區(qū)導(dǎo)致毫秒值錯位。以前我見過最頭疼的問題就是同一份日志一臺機(jī)器打印出來是14:30另一臺是22:30兩邊還在對著一個時間戳吵架。6. 我在實際項目里踩過的坑和最后幾條建議6.1 夏令時會讓“本地時間解析”徹底變得不可預(yù)測mktime配合tm_isdst -1看起來能自動判斷夏令時但真實情況是一旦系統(tǒng)時區(qū)跨過春季夏令時切換日某段本地時間根本不存在秋季切換時某段本地時間又會重復(fù)出現(xiàn)。解析2024-03-10 02:30:00這類時間結(jié)果可能比你預(yù)期多一小時也可能少一小時。如果業(yè)務(wù)涉及跨境、跨季節(jié)調(diào)度我強(qiáng)烈建議不要用“本地時間字符串 絕對時間”這種模型。要么所有字符串本身就是 UTC要么解析時固定按一個業(yè)務(wù)區(qū)偏移解釋。用utc true永遠(yuǎn)比依賴mktime判斷夏令時更可控。6.2 system_clock 會隨系統(tǒng)時間跳變計時別拿它做system_clock是墻上時鐘NTP 同步、管理員手動改時間都會讓它瞬間跳變。如果拿它去計算定時任務(wù)的剩余毫秒數(shù)或者拿兩次now_ms()的差值當(dāng)耗時系統(tǒng)時間一旦回?fù)芫蜁霈F(xiàn)負(fù)值調(diào)度邏輯可能直接亂掉。正確分工是記錄事件發(fā)生的時間戳用system_clock測量一段代碼的執(zhí)行耗時用steady_clock。steady_clock是單調(diào)時鐘不受系統(tǒng)時間調(diào)整影響。兩條線不要混著用否則線上會冒出很多“不可能”的負(fù)耗時。6.3 最后幾條實在建議解析函數(shù)返回bool而不是默默返回0是我改代碼時最堅持的一點(diǎn)。一個非法日期字符串如果被解析成“1970 年 1 月 1 日”后續(xù)排查成本遠(yuǎn)高于讓調(diào)用方立刻感知失敗。單元測試?yán)镒钪档眉拥挠美褪峭禂嘌詉nt64_t t 1705307425123; std::string s millisclock::format_ms(t, true); int64_t back 0; assert(millisclock::parse_ms(s, back, true)); assert(back t);這個用例能同時覆蓋格式化、解析、補(bǔ)零邏輯還可以順手測一下負(fù)數(shù)、跨年、閏年邊界。工具類在系統(tǒng)里跑久了真正出問題的往往不是普通日期而是這些邊界值。我還喜歡在日志輸出的最前面統(tǒng)一帶上毫秒時間戳整數(shù)比如[1705307425123]這樣即使后續(xù)格式調(diào)整了外部工具也能根據(jù)整數(shù)字段精確排序。別小看這些細(xì)節(jié)線上事故排查的時候多一個可復(fù)現(xiàn)的毫秒錨點(diǎn)往往比多查兩小時日志有價值得多。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
少妇无码av专区线| 国产高清26uuu| 麻豆熟妇乱妇熟色A片在线看| 91人妻素女| 欧美性爱一区| 久久社区一区二区三区| 免费国产| 超碰国产在线| 大学生美女口爆| 亚洲人体视频在线观看| 韩国轻伦国内自拍一区| 国产福利在线视频网站| 四虎在线观看视频| 熟妇一区二区三区| 日韩精品中文字幕二区| 人人操人人摸超碰| 嗯嗯嗯嗯啊啊啊好紧好大| 91春色| 国产精品色哟哟| 美女视频尤物网在线看| 无码人妻丰满熟妇区毛片| 亚洲制服欧美另类内射| 97视频免费在线观看| 97爱啪| 色情综合网| 日本影视久久免费| 极品人妻少妇综合| yazhousetuoumei| 东亚亚洲无码高清| 欧美91在线| 狠狠2050在线观看| 素人播放一区| 欧美国产欧美在线观看| 人爽不卡视频| 天天综合网在线91| 亚州欧美总和| 好看的91视频| 久久九九99| 日日操丁香五月天| 天天色综亚洲91污| 在线观看一卡二卡| 亚洲图片欧美91N| 亚洲一区二区久久久久| 日韩 欧美 另类 人妻| 强奸乱伦AV网址| 日韩三级av片| 激情情色五月天| 五月天婷婷社区| 亚洲欧美综合图片| 男人天堂2030| PMv在线观看| 啊啊啊免费| 无码精品啪啪啪一区二区三区三州| 午夜福利区| 色欧美天天| 天天干夜夜一操| 在线精品福利免费播放| 91操碰| 91亚州日韩高清| 91大神电影天堂| 成人AV素股で擦久久| 99操碰| 青娱乐国产精品| 欧美呦呦性爱| 亚洲黄片免费在线播放| 午夜福利免费精品视频| 99久久综合| 亚洲日韩av一区二区三区百合| 欧美97日韩| 五毛骚逼极品美女怕怕| 亚洲Av诱惑| 国产黄色视频久久| 激情五月天社区| 国产精品久久久久亚洲av| 国产亚洲色婷婷久久99精品91葵花宝典 | 久久草视频污视频| 久久粉色| 中国国产精品一区视频| 思思99热| 天天综合,91综合永久| 后入内射蜜桃臀| 日韩一999精品| 久久亚洲人妻| 神马久久久久久| 日本成人A片网站| 秋霞网—男女啪啪亚洲免费体验区| 欧美综合娱乐久久| 韩国一区二区精品亚洲| 国产中文字幕在线观看| 亚洲天堂一二| 久久αⅴ| 搡老女人老妇女AAA一VU麻豆| 在线看免费无码AV天堂的| 极品白嫩美女白浆成人福利在线看| 日韩国语字幕| 色与欲影视天天看综合网| 超碰97久| 性在久久久久久| 久久伊人网视频一区二区三区 | 久久久96| 亚洲综合五月天| 中文一区二区| 97久久综合网| 特级丰满少妇一级AAAA爱毛片| 天美国产精品| 加勒比人妻综合| 国产中出内射一区二区| 亚洲国产精品有声| 97在线观看免费| 亚洲国产成人精品999| 约操熟妇| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | 96久久科窝| 一本大道久| 亚洲av影院在线观看| 大香蕉99热| 久久久久9999| 欧美黑人猛交春色影视大全| 久久啊啊| 亚州精人品大香蕉| 亚洲综合九九| 精品一区二区三区蜜桃臀赵总 | 色综合99999| 日韩成人小视频| 亚洲蜜桃V妇女| 亚洲影视高清第一页| 亚洲天堂中文字| 精品九九九九九九九九九| 欧美aa一级片| 欧美第二页午夜| 国产传媒操逼视频| 色综合加勒比| 9精品久久| 男人高清无码一区二区| 亚洲偷91色| 日韩人成网站在线播放| 97se亚洲综合自| 久热久| 欧美日韩久久精品爱爱| 美女的肌被草喷水视频| 欧美性巨大╳╳╳╳╳高跟鞋| 91高跟美女在线播放| 狠狠中文字幕| 91 天天综合| ,国产乱人伦精品一区二区三区| 亚洲无992tv| 久久九七| 国产超碰国产97| 手机午夜电影神马久久| 99精品久久久久久| 蜜臀国产AV中文字幕| 久久久久久九九九| 操碰97| 搡老女人老91二区| 97久久久精品| 色噜噜综合在线| 欧美人与动性人交a| 图色综合网| av网站在线观看了| 久久狠狠色噜噜狠狠狠狠97| 91在线/欧洲| 一区二区三区视频在线观看免费| 久久久中文| 黄色不卡视频| 天天综合精品| 国产精品视频麻豆入口| 2020中文字幕在线观看| 大香蕉宅男伊人| 操91| 操逼操网| 亚洲日韩成人性爱视频| 岛国艾薇凹凸视频天堂| 国产隔壁老王影院在线| 久久这里只| 日本高清熟女久久一区| 日日AV加勒比| 一区二区日韩欧美久久| 大学生美女口爆| 熟女露脸激情自拍视频| 不卡九肏| 91女在线观看| www五月| 婷婷丁香九月| 综合久久少妇中文字幕| 伊人久久AV诱惑悠悠| 欧美日韩人妻婷婷一区| 动漫片子网站3黄| 亚洲操操| WWW4虎| 色婷视频| 日本大片日本一区二区免费高清| 啪一啪免费视频| 午夜福利无毒不卡| 富女玩鸭子一级毛片| 亚洲校园激情| 免费9 1久久| 久操大香蕉手机视频在线看| 国产成人无码久久精品| 欧美人妻久久精品二区三区| 精品国产人成在线| 吖在线不卡一区二区国产剧情| 日韩情色一区二区| 人人妻人人澡人人爽久久av| 女同性恋中文字幕| 日韩欧美久久婷婷网站| 欧亚韩国999| 亚洲欧美setu| 97频视在线| 中 文字幕一区二区三四 五 区日 日 骚 | 翘臀vidoes| 日韩草久视频| 国产久久一区二区午夜| 久久久久9久久久久| 欧美日韩国产在线| 久久久久久夜夜夜夜夜| 美女久久久久久久| 国产一区二区在线播放,久久亚洲精品中文字幕第一区,亚洲精品在线中文字幕视频 | 萌白酱自拍视频| 不卡av在线中文字幕| se吧提供国产乱老熟视频胖女人| 操B在线观看| 久久性爱网站| 岛国片在线观看视频亚洲| 亚洲欧美日韩精品久久久一区二区 | 五月色网| 国产91啪| 粉嫩绯色AV一区二区在线| 熟女这里只有精品6| 亚洲av无码国产精品字幕| 日本一区二区三区午夜观看| 日韩欧美tv一区二区在线观看| 欧美日日操| 久久三| 99爱在线视频| 97色色国产视频| 91超碰碰在线| 日本久久超碰| www.91逼逼.com| 亚洲一区二区中文字幕| 久久久啊啊| 色超碰综合| 在线视频一区二区传媒| 美女91色黄18| 色九九久九九| 亚洲本色精品一区二区久久| 91青青草| 亚洲最新av无码成人精品区| 97精品综合久久| 亚洲图片欧美制度| 亚洲脚交| 国产精品ⅴ无码大片在线看.| 国产极品一区二区三区三州| 2025亚洲男人天堂| 久久精品操| 操屄日韩| 丁香五月天啪啪| 亚洲欧美日韩有码| 久久久久久久久一区二区三区| 黄片免费日韩| 五月婷婷久久综合| 亚州色阁| 日韩国产不卡在线视频| 日本久操视频| 亚洲国产福利视频| 国模不卡| 天操老女人| 九九九九久久久久| 3p国产欧美99热| 亚洲色香| 人妻干天天| 久久丁香五月婷婷| 日本黄色XXX| 久久久久久久强迫| 大香蕉伊人75| 人人做人人妻人人夜视频| 91岛国动作片| 久久久国产护士丝袜美腿一| 偷拍五区| 精品视频123区小说区| 盗摄 精品 另类 一区| 黄久在线| 久草免费福利在线播放| 青青久操| 国产综合日韩伦理| 91夜夜蜜桃臀1区2区3区| 成人怡红院| 天堂8在线新版官网| 久久综合久色欧美综合狠狠| 九九精品99| 九九英色视频| 免费观看国产小粉嫩喷水精品午| 91国产大片| av三级电影在线播放| 99热在线播放| 亚洲欧美黄| 人妻AV 中文字幕的| 精品一区二区2| 亚洲超碰AV| 综合色久欲| 在线人人人人人人精品超 | 亚洲激情视频| 青青草伊人久久| 操人人| 亚洲狼狼干综合1| 亚洲AV无码秘 蜜桃臀国精产品| 玖玖97综合| 张柏芝国产一区在线观看| 久久思思热| 操逼操2| 亚洲情色1区| 日韩熟女操逼| 人妻素股| 超碰资源亚洲97| 人人操,人人液| 中文字幕制服欧美久久一区| 日韩激情啪啪| JuliaAnnXXX888| 久久一二三四五六七八九区区区| 亚洲色天| 欧美情色男人的天堂| 九色精品视频导航1| 丰满人妻一区二区中文| 99热这里是精品| 中文字幕片| 99国产精品视频尤物| 毛片麻豆91糖心精品毛情片| 艹我哪美一区无码| 亚洲精品乱码线路中文字幕| 丰满人妻一区二区中文| 日产狠狠干| 乱伦熟妇一区二区| 欧美日韩狠狠爱| 亚洲色图 欧美热图 清纯唯美 另类自拍 | 中文日韩欧美熟| 久99| 久久久一区二区三区三州| 啊啊啊啊啊,啊啊啊啊好舒服,操我舒服啊啊啊 | www.狠狠| 国产三区免费在线观看| 欧美A片中文字幕| 欧美性少妇| 日日干夜夜操视频h| 成人三级片无码| 熟女探花啪啪| 国产97在线播放| 区一在线观看| 国产精品青草综合久久| 成人性爱av| 亚洲se91| 亚欧美色图| 激情图片伦理国产一区二区日韩| 丁香五月激情综合国产| 欧美激情性久久久久久| 亚洲欧美色图片| 久久骚| 不卡人妻少妇精品毛片一区23区视频| 色播五月婷婷| 国产一区二区三区精品观看啪| TS人妖另类精品视频系列 | 先锋色眉乱伦资源| 国产午夜精品在线观看| 清纯唯美亚洲另类| 国产夫妻性生活视频| 日韩av熟女一区二区三区成人| 亚洲国产午夜真人一级片中文字幕精品黄网站 | 黄页| 啪啪综合网| 女人18精品一区二区三区| 91在线丝袜视频| 亚洲色吧网| 国产成人+综合亚洲+天堂| 伊人网综合在线视频| 欧美夜夜草视频| 久久人| 91欧美经典| 99rre在线精品99re8| 偷拍片久久| 亚洲 另类 丝袜 自拍 动漫| 影音先锋国产精品| 无码自拍SM| 日韩亚洲Av人人夜夜澡人人爽| 中文字幕乱在线伦视频中文字幕乱码在线| 20cm女自慰在线日韩欧美| 午夜操一操| 2019天天干| 一本久道久久综合狠狠爱一密臀精| 亚洲国产精品久久久久婷婷老年| 97在线日韩中文字幕| 久久久久幕乱码| 啊啊啊啊,啊啊好多水| 亚洲色图第四色| 青青草国产一区二区三区| 97超碰中文字幕| 啊啊啊啊啊啊啊在线| 欧美玖玖爱免费玖玖| 亚洲综合色在线| 欧洲一区二区| 网友自拍第一页| 国产高清亚洲日韩一区| 99re热有精品视频国产| 乳欲人妻办公室奶水| 日本一区二区做爱的视频| 天堂中文资源在线bt| 国模少妇一区二区三区| 性欧美另类高清| 超碰久久性爱| 久热久一区二区三区| 中美日韩毛片| 99在线啪| 青青色在线观看| 欧美亚洲国产91在线| 可能人人看人人摸| 日韩中文欧美| 国产成人主播| 夜夜嗨绯色| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 日韩在线AB| 国产日韩人人| 欧美性暴力猛交| 国产精品久久天天干| 精品一二三区久久AAA片| 亚洲天堂电影精品一区| 久久亚洲色图中文字幕| 日本不卡五区| 性爱乱伦网址| 国产av青草| 中文字幕无码不卡啪啪| 国产精品人妻无码久久久老鸭窝| 精品区国产区一区二区三区| 久久九七| 精品午夜福利| 天堂中文日本在线观看| 青青操少妇| www男人天堂| 无码外流操逼视频| 蜜桃成人1区2区3区| 日日骚精品视频| 日本一区不卡| 日本123区操B视频| 2019亚洲男人天堂| 国产9 9在线 | 亚洲| 伊人99热| 色97国产69香蕉| 伊人网青青| 嗯嗯啊啊视频在线看| 色踪合AV| 中国一级操逼视频| 手机不卡视频不卡在线一二三区| 99色热| 欧美午夜视频免费观看| 用力操死我| 天天伊人| 日韩啪啪啪啪啪| 日日日日做夜夜夜夜做无码97| 亚洲熟女乱色一区二区三区| 99re6久热只有精品6在线直播| av橘色网站| 日韩国产成人自拍视频| 天天色怡春院| 国产精品成人福利在线| 殴洲老熟女| 大香蕉乱级| 中文字幕在线观看网页| 欧美日韩大香蕉| 免费看美国人人爽,人人操 | 99国产精品人妻人伦| 五月天婷婷社区| 五月丁香综合啪啪| 日韩精品一二三| 亚洲成人免费在线| 亚洲欧美97| 久久思思热| 九热久| 亚洲老熟妇xxx| 久久久久久久久一区二区三区| 中文字幕在线高清男人的天堂| 91男人天堂网| 99爱爱| 好涩综合| 视频在线观看一二三区| 亚洲高清无毛一区二区| 大香蕉色欲AV| 九色婷婷| 欧美日韩传媒| 香港成人一级视频在线青青草| 欧美真人抽搐一进一出gif| 大香蕉欧美伊| 欧美大香蕉专区网| 黄色工厂这里只有精品| 内射白嫩美女| 欧美天天干| 欧美亚洲韩国视频十五区| 人妻av在线| 亚洲高清自拍| 91丝袜在线视频| 在线啊v一区| 国产极品馒头逼| 久久精品视频在线观看| 国产亚州精品美女久久久免费| 蜜桃传媒视频第一区入口在线看| 色噜噜综合在线| 色哟哟综合| 亚洲熟女少妇免费视频| 啊啊啊操一区| 2019久久久久久久久福利| 伊人性在线视频| 青青草在线视频人人想人人上| 国产成年女人免费视频播放a| 少妇特黄一区二区三区| 九九天堂| 成年人一级黄色毛片大全在线观看| 九九九成人| 久久一留热品黄| 久久一区二区三区入口| 欧美大香蕉久| 日本熟妇人妻一区二区三区| WWW.加勒比人妻一区不卡.com| 日韩性爱高清免费视频| 国产无码高清操逼视频| 超碰97男女| 天天综合网1| 激情五月激情综合网| 吖在线不卡一区二区国产剧情| 欧美日韩亚洲少妇寂寞影院正在播放| 狠狠搞 亚洲91| 免费黄色片子| 久久久久国产精品喷潮免费观看臀| 性猛交| 超碰97.com| 国产25页| 国产一区二区三区不卡手机在线| 综合一区中亚洲国产成人综合精品 | 色香av| 久久是精品| 中文字幕久久精品一区| 观看免费区二区三区二| 99re在线观看| 中文字幕一区二区三区视频播放| 日韩精品免费高清视频在线| 日本阿v天堂在线观看| 大茄子熟女AV导航| 四虎免费在线播放| 欧亚揄拍偷拍精品视频 | 狠狠超| 综合亚洲欧美| 97在线公开视频| 亚洲人精品午夜不卡| 日韩中文字幕av在线播放| 野狼激情网| 夜夜爽33333| 五月丁香综合激情| 久久久一级| 99性爱| 久久婷婷色| 在线精品福利免费播放| 亚洲一欧洲中文字幕在线| A级毛片在线看免费| 台湾一区国产高清在线| 激情五月综合开心五月| 强奸乱伦AV网址| 日韩操逼性鲍| 精品中文字幕第一页| 最新国内自拍av免费| 欧美1区二区三区公司| 日日操免费视频| 夜夜操美女| 99在线免费公开视频| 欧美五十路熟| 国产精品久久久久久久毛片1| 日日操丁香五月天| 欧美网站免费| 中文字幕在线观看丝袜| 韩国轻伦国内自拍一区| 国产精品熟女九九九| 龙兴卡官方查询| 99日视频在线免费| 啊啊啊啊操死我| 久操91视频| 无码人妻精品一区二区中文| 亚洲一本色道中文无码aV天美| 欧美成人一区二区三区在线播放| 好吊妞转入那个网| 超碰97玖玖爱| 国产九九九九九九| 久久久久九九九| 日本操逼视频不卡直接放| 免费在线黄片视频| 五月婷婷色| 91亚州欧美| 在线电影亚洲色图| 久久少妇| 亚洲国产成人精品无码专区| 操狠狠| 亚洲drav色图| 亚洲阿v天堂在线| 国产精品欧美日韩久久| 蜜臀久久99精品久久久久久久久| 丝袜美腿校园春色| 麻豆天美在线| 中文字幕,人妻,日韩| 国产精品亚洲美女久久久久| 日韩av三四区| 中文字幕一区二区无码成人| 青青免费在线视频一区| 中文字幕在线观看视频www| 欧美日日夜夜| 精品1区2区3区| 很黄很色的视频在线观看| 志村玲子视频一区二区| 久污| 强奸乱伦AV网址| 日产狠狠干| 骚逼自拍99| 92性色国产午夜福利在线661| 午夜男女爽爽爽在线视频| 午夜天堂精品久久| 亚洲丝袜综合| 一区二区三区欧美激情| AV丝袜东京热| 国产精品高清2021在线| 亚洲图片欧美91N| 夜夜高潮夜夜爽国产伦精品| 黄色电影在线播放综合网站| 亚殴在线| 精品传媒在线一区| 欧美精品999| 少妇丝袜在线观看AV| 黄色香蕉视频网站一区| 青青草原狼av| 啊啊啊操死我| 欧美黄页在线| 99热这里只有精品18| 三级三久久线久久99久目本WW| 国产精品久久久久久久久久久久久久久久 | 精品伊人久久久大香线蕉小说| 色欲人妻一区二区在线| 国产在线观看一区二区三区| 男人的天堂在线有码| 九九热精品| 中文字幕 码精品视频网站| 97在线观看免费| 欧美精品久久久久久久久88| 91女优在线观看 | 精品久久久久久久久久久久| 国产精品久久天天干| 男人天堂站| 三男一女不戴套的A片| 久久熟女人| 又粗又长又大国产不卡| 韩国轻伦国内自拍一区| 日产欧美电影一区二区三区| 成人女人国产| 少妇啪啪自拍| 色婷婷一区二区三区久久午夜 | 久久宗合亚洲| 精品一区二区成人动漫| 五月天精品| 91操人| 亚洲黑人在线| 欧美婷婷久久| AV免费在线播放一区| AV天黑人| 人人人人人人少妇| 日韩免费簧片| 日韩精品三级片长长久久| 美國A片| 蜜区区视频79| 欧美性天天影视| 日本国产亚洲一区在线观看| 青青草大香蕉在线视频| 中文字幕123| 极品人妻少妇综合| 久无码| 啪啪啪东京| 久久精品电影| 熟妇在线视频一区二区| 自拍偷拍第26| 青草伊人久久| 97操97色| 欧美黄片欧美黄片xxx| 99热婷婷一区二区三| 五月天黄色av| 国产乱人伦AVA麻豆软件.| 欧美劲爆第一页| 久久久性爱视频| 日本黄 R色 成 人网站| 国产偷人伦激情在线观看| 日韩欧美偷拍美女视频| 超碰av在线| 超清福利精品视频在线| 国产精品对白自产拍| 操穴国产| 最新日韩黄片| 成人网站 免费观看| 久久久久久九九九九| 97干天天| 久久99热这里只频精品6学生| 日韩免费三级黄片电影| 亚洲综合嫩| 99在线视频播放| 亚洲男人天堂2019| 久久精品国产96精品亚洲拳交| 91东北熟女| 国产天天噜一噜久久久| 亚州综合电影| 精品一区二区啪啪啪| 丝袜美腿制服人妻二区中文字幕 | 无码国产精品久久久久| 波多野42部激情无码喷潮| 床戏久久久av一区二区麻豆| 成人热久久精品| 91neishe| 九九热在线精品视频| 凹凸视频在线观看伊人| 超碰97人妻免费在线| 男人天堂新在线| 亚洲中文字幕一区| 日韩精品人妻中文字有码在线| 国产视频三区四区| 99精品视频在线观看| 免费啪啪一级视频| 激情五月天插| 久久久精品中文字幕爱豆| 亚洲精品九九九| 成人青青草原伊人| 欧美偷偷网| 国产偷人妻精品一区二区在线| 中文字幕丝袜人妻| 人妻久热在线| 91n美女视频| 超碰久久中文| 久久久久性熟视频| 91狠狠综合久久久久久| 婷婷五月丁香五月| 婷婷啪啪| 久久久久免费少妇| 欧美后进式| 性爱动态120秒| 屌逼传媒| 日韩精品.久久精品.AV女优.天美传媒| 亚洲色综合| 超碰免费人人| 丁香五月电影| 夜夜爽33333| 97AV爱| 久极品在线观看| 色女99一级片在线观看| 久久夜嗨| 97操在线| 麻豆成人影音在线| 久久亚码| 国产传媒av天美传媒在线| 久久免费精品96| 久婷婷一区| 在线一区| 麻豆色约约| 亚洲色图A| 97亚洲综合| 欧美18老人禁| 无码精品久久| 久久激情亚洲精品无码?V| 日韩性爱再线视频| 五月天综合| 久无码| 第45页一区二区| 久久m| 五十路熟女在线不卡观看一区二区| 精品无码一区二区三区| 亚洲丝袜在线观看| 国产呦精品系列在线观看| 国内毛片热久久思思热| 亚洲va有码在线天堂| 欧美网站免费| 国产熟女少妇一区| 超碰97久久观看| 激情婷婷黑人91| 亚洲全色网| 思思热久久成人| 91色久| 中日韩久久人妻一区二区| 美女丝袜激情小说| 欧美色图电影| 伊人精品久久网站| 五月丁香色综合| 91国产大片| 91操熟女视频| 久久久久久国产成人| 免费看久久久性性| 91色图片| 男人的天堂久久| 特级特黄一级毛片免费| 久久98| 好看的91视频| 黑人在线91| 国产精品亚洲天堂网址| av天堂影视中文在字幕在线中文| WWW.加勒比人妻一区不卡.com| 精品人妻高清麻豆av| 国产精品免费1区2区视频| 丁香五月久久| 九九自拍伦理| 中文字幕精品探花视频 | 国产小炒后入式| 成人小电影网站tex| 激情五月天插| 97在线免费看| 超碰久超碰久| 伊人久操| 亚洲淫色网中文| 97天堂| 九月色婷婷| 激情情色五月天| 五十路六十路素人熟女| 操少妇很爽av| 少妇精品| 亚洲欧美日韩精品久久久一区二区 | 97硬碰| 夜夜精品视频| 亚洲五月天激情| 中文字幕av一区二区三区人妻少妇 | 亚洲夜色在线| 久久精品操| 日韩去日本高清在| 黑人干亚洲| 人人艹亚洲| 操B久久| 最新av中文字幕高清| 色一射色一射| 亚洲中文字幕在现观看| 熟女丰满人妻一区| 久久精品熟妇丰满人妻99| 国产精品电影| 99久在线精品99re8蜜桃| 日韩av乱伦| 深夜激情| 六月丁香网| sewuyueav| 一区二区激情国产熟女 | 福利社区午夜一区二区| 四虎884a| 青椒国产97在线熟女| 强奸熟女一区二区三区| 日韩久久.一级黄色片| 999九九精品| 91强奸乱轮| 桑老女人九区| 99色| 凹凸视频在线一区二区| 9久久9综合| 超清福利精品视频在线| 国产精品高潮久久AV| av天堂天堂av日韩| 自拍第一页| 97在线视频观看| AV中亚| 亚洲97P| 色官网色综合| 亚洲丝袜二区在线| 大香蕉碰碰| 日韩字幕一区| 狠狠干2020| 熟女精品一区二区三区| 麻豆久久精品亚洲精品88| 美腿丝袜高跟网免费视频免费视频| 日韩人妻制服丝袜av| 欧美第五页| 97精品国产97久久久| 日本人妻伦在线中文字幕| 日韩无码AB| 激情视频网址| 爱妃国产亚洲视频中文字幕| 人妻黑丝袜电影| 色情婷婷| 影视综合无码少妇| 青青草原香蕉日本Ap| 精品人人| 成人八戒网站| 成人久久久| 五月天加勒比啪| 激情六月天| 亚洲国产一区二区入口| 欧美精品黑人猛交高潮| 自拍欧美| www.久久| 精品中文字幕一区二区| 蜜臀99精品国产高清在线观看| 久久九九一区二区三区成人| 新婚人妻扶着粗大强行坐下| 久久精品一区二区三区四区五区| 夜夜操中文字幕| 久久精品人体AV| 97在线视频观看网站| 黄页| 天天干夜夜肏| 综合久欧洲| 色色五月天婷婷| 天堂а√在线最新版在线| 欧美偷拍| 伊人四虎综合| 国产精品久久久777| 亚洲精品视频二区| 色青青久久影视| 午夜超爽| 波多野结衣之双飞调教在线播放 | 青青草国产欧美非洲黑人| 物业黑人 AV一区| 欧美熟妇精品黑人巨大一二三区| 久久99亚洲精品久久99果| 岛国在线免费视频| 测评在线观看AV| 欧美瑟综合| 试看60秒| 99色婷婷中文字幕乱色| 香蕉一区二区三区在线视频| 91久久久久久| 国产18精品亚洲精品| 少妇人妻好深太紧了vr91| 亚洲伊人成综合成人网| 丰满人妻-区二区三区免费看| 天天影视之亚洲综合网| 亚洲揄拍网| 婷婷五月天久久精品视频一区二区三区 | 黄色成品网站| 亚洲中文字幕妇伦久久| 少妇一线天久久久久久| 婷婷亚洲色| 大屁股xxxxx| 久久久久久AⅤ无码免费肉站| 日本免费专区| 日韩国产欧美伦理在线| 人妻一二三区| 亚洲免费在线探花| 国产av又色又爽又黄| 国产毛片在线| 久久成人午夜精品影院| 1人人看人人摸人人操| 久热在线精品免费观看| 伊人久久综合影院精品久久久 | 久久久久13| 日韩人妻精品久久久久| 好吊妞转入那个网| 亚洲春色激情小说| 天天淫人人妻日日色| 中文字幕 av v| 裸体女人草逼视频播放一区,二区,三区,四区,五区 | 婷婷激情丁香| 一区二区视频在看| 亚洲在线a| 17c嫩草51久久91嫩草| 日韩熟女三十乱伦| 久久透逼视频| 亚洲中文一区二区三区| 日韩成人精品视频自拍| 午夜精品久久久久久久99蜜桃一| 人人干人人搞人人摸| 777奇米影视777四色| www色色com| www.狠狠干.coom| 日少妇亚洲版| 2017超碰| 丝袜美腿丝袜| 97超碰精品| 欧美日韩国产另类综合| 亚洲制服欧美另类内射| 久热99| 玖玖综合色| 91少妇通奸网站| 成人一二三区| 国产精品黑人一区二区三区| 久久riav中文精品| 久久婷婷热| 久久的网站啊啊啊啊啊| 无码男人天堂| 亚洲女人91| 亚洲啪AⅤ永久无码| 能直接看AV的网站| 97色五月天完| 国产精品电影推荐| 美女性91| 免费人成在线观看网站品爱网| 小情侣高清国产在线视频| 日韩一区二区精品视频| 97 国产一区| 日韩日韩日韩-国产乱码精品一区二区| 亚洲有码视频二区| 最新的亚洲无吗| 亚洲天堂东京热| 欧美 综合 亚洲| 国产97在线视频| 日韩不卡在线一区二区| 日本熟妇一区二区三区| 四季AV一区二区凹凸精品小说| 亚洲人妻色图| 欧美日产国产在线成人第一区| 无码国产精品午夜不卡(| 日韩精彩免费| 美女黄色91| 天天干干天天干干| 国产一区96在线| 在线色资源| 永久免费av无码网站国产app| 色婷婷亚洲婷婷| 伊人991| 秋霞 色色| 99热网站| 亚洲极品| 欧美综合娱乐久久| 快点操死我| 亚洲色电影在线| 岛园激情| 97一区二区三区视频| 欧洲久久一二线| 97精品综合| 狠狠干2020| 午夜视频好爽啊| 丝袜综合色图| 91无码西班牙视频在线| 天天爱天天操| 91精品国| 在线v中文字幕一区二区三区| 精品视频专区| 色哟哟 日韩精品| 熟妇熟女亚洲天堂网| 色区97| www久久99| 草B在线| 超碰成人国产| 97久久天天综合色天天综合色电影| 无码高清操逼网址| 老熟女熟妇| 视频一区二区三区精品| 欧美日韩免费专区在线| 欧美中出| 精品久久久久9999| 91在线视频国产网站| 91色艳| …亚洲黄色厕厕女女在线播…| 欧美色婷婷| 久久精品超碰| 欧美熟女少妇| 3PAV乱伦视频| 色呦呦、国产精品| 国模无码人体一区二区三| 亚洲成人一二三区| 日韩免费高清大片在线| 少妇六月天| 亚洲成人在线高清| 一区二区三区四区久久视1| 五十路六十路七十路熟婆| 蜜臀99999| 99久久婷婷丁香| 亚洲丝袜制服国产91_国语字幕免费观看完整版下载第5集_ | 五月天开心网| 色汉综合| 99天天超碰| 18禁精品网站在线看| 操逼短片| 欧美视频在线视频免费va| 久久三区四区| 欧美性爱97超碰| 少妇熟女1区2区3区| 亚熟hd视频在线| 日韩性爱视频免费在线| 青青青在线高清视频在线一二三四区| 日本在线一二| 91人精品妻入口| 黄久在线| 久久人妻视频网| 欧美视频一| 亚洲国产青青| 亚洲第一综合| 亚洲啪啪视频免费| 熟妇激情| AV天天在线观看| 亚洲国产ⅴ高清在线观看| 四虎影视永久在线观看精品免费网站 | 99热超碰| 在线一道啪| 麻豆精品.欧美精品.日韩精品.| 国产精品久久发布| 无码精品人妻一区二区三区妖精| 亚洲熟女乱综合一区二区在线-...亚洲国产日韩欧美一区二区三区,久久久久久精 | 97超碰免费生活| 色婷婷丁香五月| 久久免费99精品久久久久久| 97视频在线视频| 色婷婷在线视频| 性爱乱伦视频免费| 中文字幕人妻丝袜乱一区三区| 亚洲一二三精品久久网| 一区二区三区 日韩欧美| 美女久久久久久久久久久| 亚洲欧洲久久天堂| 综合熟女| 波多野结衣先锋影音| 高清无码人妻久久久一区二区三区aⅴ| 插老姨肥穴| 麻豆久久久一区二区| 中国大陆国产高清AⅤ毛片| 国产三级片在线观看| jiujiujiujingpin| 在现视频女上位好爽| 色爱三区| 18禁无码永久免费无限制| 91综合无码| 青青草久久| 中文字幕片| 9久综合网| 水野优香在线观看| 精彩国产视频播放1区2区| 91快色色色色色| 亚洲精品自拍| 国产午夜精品一区二区三区牛牛| 狠狠亚洲| 日日干日日操五月天伦理视频| 精品婷婷| 国产AV无码AV| 国产精品盗摄 偷窥盗摄| 成人怡红院| 风间由美日韩欧美久久| 999 久久久| 一区 欧美 日韩 麻豆| 97色伦欧美| 99热啪啪| 亚洲中文字幕精品久久久久久直播| 色天使亚洲综合在线观看| 国产91福利小视频在线观看| 精品久久97| 男生通女生屁股| 综合大香蕉美。| 嫩草黄页| 欧美激色| 久久久免费懂色| 精品成人女人久久| 久久人爽| 亚洲老司机123专区| 亚洲AV无码久久精品蜜桃小说| 国产精品久久发布| 欧美久久草熟女| 偷窥自拍亚洲色图| 东北黄色电影| 啪啪视频mP4| 丰满翘臀美女影院视频| AV色天香在线| 神马久久久久眼| 日本淫色网| 国产传媒日本欧美专区| 欧美日日夜夜| 久久亚洲不卡一区二区三区| 中文字幕免费观看| 色香在线| 亚欧美综合网。| 蜜桃精品一区二区三区久在线| A男人的天堂| 大屁股熟女一区二区三区| 国产风韵犹存熟妇三区| 久久性爱视频免费看| 日本影视久久免费| 天天干天天舔| 丰满人妻一区二区三区性色|