99精品久久精品一区二区-亚洲熟妇无码?v在线播放-日本国产精品无码字幕在线观看-久久久亚洲永夜AV-亚洲一级无码一区二区一-免费国产成高清人在线视频-中文字幕乱码免费观看-国产毛片精品妇女久久久

ARTICLE DETAIL

資訊詳情

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

三態(tài)日歷落庫(kù):Java 批量生成工作日/周末/節(jié)假日與調(diào)休覆蓋的工程實(shí)踐

三態(tài)日歷落庫(kù):Java 批量生成工作日/周末/節(jié)假日與調(diào)休覆蓋的工程實(shí)踐 簡(jiǎn)介一份面向Java開發(fā)者的年度日期詳情入庫(kù)方案解決IT系統(tǒng)中維護(hù)每年工作日、周末與節(jié)假日數(shù)據(jù)的常見(jiàn)需求。資源將核心代碼封裝為單個(gè)Java文件經(jīng)7z壓縮后僅2KB便于快速查看與遷移。實(shí)現(xiàn)基于java.time的LocalDate遍歷全年日期借助DayOfWeek判斷周末并預(yù)留HolidayCalendar等節(jié)假日庫(kù)接口通過(guò)JDBC連接數(shù)據(jù)庫(kù)設(shè)計(jì)日期、工作日標(biāo)識(shí)、周末標(biāo)識(shí)、節(jié)假日標(biāo)識(shí)等字段表結(jié)構(gòu)同時(shí)考慮批量插入與事務(wù)回滾確保大數(shù)據(jù)量下的寫入效率和一致性。代碼層次清晰包含連接初始化、日期列表構(gòu)建、批量持久化及異常回滾等模塊并留有數(shù)據(jù)庫(kù)連接與自定義節(jié)假日規(guī)則的配置擴(kuò)展空間。適合需要構(gòu)建考勤、排班、運(yùn)營(yíng)日歷等模塊的中級(jí)開發(fā)者可借鑒其表設(shè)計(jì)、批量提交和邊界測(cè)試如閏年、補(bǔ)班等思路。已有3738人學(xué)習(xí)下載可直接作為年度工作日歷數(shù)據(jù)初始化的參考腳本。1. 把節(jié)假日、周末、工作日三態(tài)日歷落庫(kù)這個(gè)需求解決的是“每天是不是工作日”做考勤、排班、租金屬性計(jì)費(fèi)或者任務(wù)調(diào)度的后臺(tái)系統(tǒng)時(shí)幾乎每個(gè)業(yè)務(wù)都要回答同一個(gè)問(wèn)題某一天是不是工作日前幾年我維護(hù)過(guò)一個(gè)考勤統(tǒng)計(jì)模塊早期寫法是每次請(qǐng)求都現(xiàn)算——先判斷周幾再去查節(jié)假日表最后還要處理補(bǔ)班結(jié)果同一套規(guī)則散落在三個(gè)服務(wù)里每年年底節(jié)假日安排一公布就要熬夜改代碼。后來(lái)?yè)Q成了標(biāo)題里這個(gè)思路用 Java 把每年的節(jié)假日、周末、工作日詳情按日期批量生成提前落進(jìn)一張數(shù)據(jù)庫(kù)表業(yè)務(wù)查詢只做一次主鍵點(diǎn)查。這篇筆記就把這套方案從表結(jié)構(gòu)、生成器、調(diào)休覆蓋到運(yùn)維習(xí)慣完整拆開講適合正在做日歷類基礎(chǔ)數(shù)據(jù)維護(hù)、或者想讓考勤邏輯從“算”變成“查”的開發(fā)者。2. 日歷表結(jié)構(gòu)設(shè)計(jì)字段明細(xì)、唯一主鍵、覆蓋規(guī)則表怎么搭配2.1 三態(tài)日歷事實(shí)表為什么主鍵用日期而不是自增ID先看結(jié)果表。這張表要回答的核心問(wèn)題是“某天是三種狀態(tài)中的哪一種”所以它在建模上是一張事實(shí)表每一行代表一個(gè)日期只保留與該日期身份相關(guān)的屬性不摻業(yè)務(wù)狀態(tài)。我常用的建表語(yǔ)句如下CREATE TABLE t_calendar_detail ( calendar_date DATE NOT NULL COMMENT 日期主鍵, year SMALLINT NOT NULL COMMENT 年份, month TINYINT NOT NULL COMMENT 月份, day TINYINT NOT NULL COMMENT 日, weekday TINYINT NOT NULL COMMENT 星期幾1周一7周日, day_type TINYINT NOT NULL COMMENT 1工作日2周末3節(jié)假日, holiday_name VARCHAR(64) DEFAULT NULL COMMENT 節(jié)假日名稱工作日/周末為NULL, remark VARCHAR(128) DEFAULT NULL COMMENT 備注如“調(diào)休補(bǔ)班”, create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (calendar_date), KEY idx_year_month (year, month) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT日歷三態(tài)事實(shí)表;主鍵我沒(méi)有用自增 ID直接拿calendar_date做主鍵。原因是這張表的查詢模式非常固定要么按某個(gè)日期精確查要么按年份/月份范圍掃。日期本身全局唯一用它做物理主鍵還能讓按時(shí)間范圍的掃描走聚簇索引順序讀比自增主鍵再回表快一個(gè)量級(jí)。year/month/day/weekday這些冗余字段看著多余但實(shí)際報(bào)表經(jīng)常按“某年某月的工作日數(shù)”分組統(tǒng)計(jì)直接從行里取比DATE_FORMAT包一層函數(shù)高效得多也避免函數(shù)導(dǎo)致索引失效。2.2 覆蓋規(guī)則表調(diào)休補(bǔ)班只改這張表事實(shí)表只負(fù)責(zé)“最終結(jié)果”它不應(yīng)該是人直接改的地方。真正需要人工維護(hù)的是規(guī)則表也就是每年年底公布的調(diào)休與法定節(jié)假日安排。我一般會(huì)再建一張覆蓋規(guī)則表CREATE TABLE t_rule_override ( target_date DATE NOT NULL COMMENT 被覆蓋的日期, override_type TINYINT NOT NULL COMMENT 1調(diào)休補(bǔ)班周末變工作日3法定節(jié)假日工作日變節(jié)假日, holiday_name VARCHAR(64) DEFAULT NULL COMMENT 節(jié)假日名稱, source_year SMALLINT NOT NULL COMMENT 規(guī)則歸屬年份, effective_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 同一天多條規(guī)則時(shí)取最新, create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (target_date), KEY idx_source_year (source_year) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT節(jié)假日/調(diào)休覆蓋規(guī)則表;這張表只保存“與默認(rèn)規(guī)則不一致”的日子。默認(rèn)規(guī)則在代碼里寫死周一至周五是工作日周六周日是周末。與默認(rèn)規(guī)則一致的日期根本不需要進(jìn)規(guī)則表這樣每年要維護(hù)的記錄通常只有三四十條。target_date做主鍵很關(guān)鍵——同一天的最終狀態(tài)只能有一種這個(gè)約束從表結(jié)構(gòu)上就杜絕了“既放假又補(bǔ)班”的矛盾數(shù)據(jù)。2.3 索引取舍按日期范圍查詢?yōu)橹鱠ay_type 不要單獨(dú)建索引索引設(shè)計(jì)上主鍵索引已經(jīng)覆蓋了精確日期查詢。idx_year_month是為了“某年某月”的分組統(tǒng)計(jì)比如查 6 月的應(yīng)出勤天數(shù)。踩過(guò)的坑是最開始我給day_type單獨(dú)建了索引想著按狀態(tài)過(guò)濾會(huì)快實(shí)際完全沒(méi)用。day_type只有三四個(gè)取值區(qū)分度極低優(yōu)化器全表掃比走索引回表更快這個(gè)索引純屬浪費(fèi)寫放大。如果非要做“按工作日查”的統(tǒng)計(jì)正確做法是利用year month組合索引把日期范圍先縮小到一個(gè)月再過(guò)濾狀態(tài)。還有個(gè)細(xì)節(jié)日期務(wù)必用DATE類型不要圖導(dǎo)入方便用VARCHAR。用字符串存日期等值查詢還能靠主鍵索引碰巧命中一旦做BETWEEN或者DATE_SUB運(yùn)算排序規(guī)則和隱式轉(zhuǎn)換會(huì)讓索引徹底失效后面第 5 章會(huì)把這個(gè)坑單獨(dú)展開。3. 用 Java 批量生成全年日歷并寫庫(kù)生成器核心代碼與 JDBC 批量參數(shù)3.1 生成器核心流程LocalDate 遍歷 規(guī)則覆蓋生成全年的邏輯并不復(fù)雜第一步從t_rule_override讀出所有覆蓋規(guī)則第二步從 1 月 1 日遍歷到 12 月 31 日第三步對(duì)每個(gè)日期先按“工作日/周末”默認(rèn)規(guī)則打分再看有沒(méi)有覆蓋規(guī)則有就按覆蓋結(jié)果重寫。這里我直接用 JDBC 做示例換成MyBatis或Spring Data思路完全一致public void generateYear(Connection conn, int year) throws SQLException { MapLocalDate, Integer overrideMap loadOverrideMap(conn, year); LocalDate start LocalDate.of(year, 1, 1); LocalDate end LocalDate.of(year, 12, 31); ListCalendarDetail rows new ArrayList(); for (LocalDate date start; !date.isAfter(end); date date.plusDays(1)) { DayOfWeek dow date.getDayOfWeek(); // 1. 默認(rèn)規(guī)則周一至周五為工作日周六周日為周末 int dayType (dow DayOfWeek.SATURDAY || dow DayOfWeek.SUNDAY) ? 2 : 1; String holidayName null; String remark null; // 2. 覆蓋規(guī)則優(yōu)先調(diào)休補(bǔ)班或法定節(jié)假日以規(guī)則表為準(zhǔn) if (overrideMap.containsKey(date)) { Integer override overrideMap.get(date); dayType override; remark 規(guī)則覆蓋; } // 3. 拼裝實(shí)體year/month/day 直接從 LocalDate 取不用字符串格式化 CalendarDetail detail new CalendarDetail(); detail.setCalendarDate(date); detail.setYear(date.getYear()); detail.setMonth(date.getMonthValue()); detail.setDay(date.getDayOfMonth()); detail.setWeekday(dow.getValue()); detail.setDayType(dayType); detail.setHolidayName(holidayName); detail.setRemark(remark); rows.add(detail); } writeBatch(conn, year, rows); }這段代碼有幾個(gè)值得注意的參數(shù)與選型點(diǎn)。LocalDate遍歷完全沒(méi)有SimpleDateFormat的線程安全問(wèn)題生成 365 個(gè)日期對(duì)象對(duì) JVM 來(lái)說(shuō)開銷可以忽略。getMonthValue()返回 1-12 的int與表結(jié)構(gòu)里TINYINT對(duì)應(yīng)不要用Month枚舉直接存否則下一步寫庫(kù)還要做一次轉(zhuǎn)換。overDayType存的是最終類型所以規(guī)則覆蓋時(shí)直接賦值即可。3.2 JDBC 批量寫入關(guān)閉自動(dòng)提交與 rewriteBatchedStatementsgenerateYear里只組裝數(shù)據(jù)真正的性能差異在寫庫(kù)這一段。批量插入全年 365/366 條數(shù)據(jù)逐條INSERT和批量addBatch在數(shù)據(jù)量小時(shí)看不出差別但如果你要一次性生成未來(lái)五年甚至十年差距就是秒級(jí)和分鐘級(jí)的區(qū)別。我在接入層一般這樣寫private void writeBatch(Connection conn, int year, ListCalendarDetail rows) throws SQLException { // 先清理舊數(shù)據(jù)保證任務(wù)可重復(fù)執(zhí)行不會(huì)主鍵沖突 try (PreparedStatement ps conn.prepareStatement(DELETE FROM t_calendar_detail WHERE year ?)) { ps.setInt(1, year); ps.executeUpdate(); } String sql INSERT INTO t_calendar_detail (calendar_date, year, month, day, weekday, day_type, holiday_name, remark) VALUES (?, ?, ?, ?, ?, ?, ?, ?); conn.setAutoCommit(false); // 關(guān)閉自動(dòng)提交攢一批再提交 try (PreparedStatement ps conn.prepareStatement(sql)) { int batchSize 2000; int count 0; for (CalendarDetail d : rows) { ps.setObject(1, d.getCalendarDate()); ps.setInt(2, d.getYear()); ps.setInt(3, d.getMonth()); ps.setInt(4, d.getDay()); ps.setInt(5, d.getWeekday()); ps.setInt(6, d.getDayType()); ps.setString(7, d.getHolidayName()); ps.setString(8, d.getRemark()); ps.addBatch(); count; // 每 2000 條執(zhí)行一次避免 single batch 過(guò)大 if (count % batchSize 0) { ps.executeBatch(); } } ps.executeBatch(); // 收尾再刷一次 conn.commit(); } catch (SQLException e) { conn.rollback(); throw e; } finally { conn.setAutoCommit(true); } }這里有一個(gè)隱藏很深的性能參數(shù)如果你連的是 MySQL 5.1 以上的版本JDBC 連接串一定要加上rewriteBatchedStatementstrue。不加這個(gè)參數(shù)驅(qū)動(dòng)拿到addBatch后依然是一條一條發(fā)給服務(wù)端批處理名存實(shí)亡加上之后驅(qū)動(dòng)才會(huì)把多條INSERT重寫為一條多值的INSERT語(yǔ)句。jdbc:mysql://127.0.0.1:3306/yourdb?useUnicodetruecharacterEncodingutf8rewriteBatchedStatementstruesetObject傳LocalDate給DATE列在 JDBC 4.2 之后有標(biāo)準(zhǔn)映射比java.sql.Date.valueOf(date)少一層轉(zhuǎn)換包裝代碼也更干凈。batchSize不建議一次頂滿全年數(shù)據(jù)MySQL 的max_allowed_packet會(huì)限制單次包大小2000 一批在絕大多數(shù)默認(rèn)配置下都能安全通過(guò)。3.3 全量重建與增量補(bǔ)刷兩種調(diào)用方式怎么選生成器寫好后調(diào)用策略有兩種常見(jiàn)方式。全量重建適合每年年初一次性執(zhí)行先刪掉整年數(shù)據(jù)再插入整年數(shù)據(jù)邏輯干凈表里永遠(yuǎn)只有一份完整結(jié)果。代價(jià)是執(zhí)行期間該年份數(shù)據(jù)不可用對(duì)排班系統(tǒng)來(lái)說(shuō)凌晨執(zhí)行完全沒(méi)問(wèn)題。增量補(bǔ)刷適合“節(jié)假日安排出了補(bǔ)充通知只改后面三個(gè)月”的場(chǎng)景。比如年中突然宣布某一天放假這時(shí)全量刪掉整年再重建明顯浪費(fèi)只刷受影響區(qū)間更合理。我的做法是給生成器加一個(gè)窗口參數(shù)public void rebuildWindow(Connection conn, LocalDate start, LocalDate end) throws SQLException { // 刪除窗口內(nèi)數(shù)據(jù)重新生成該區(qū)間規(guī)則表全量參與覆蓋判斷 generateRange(conn, start, end); }兩種方式的取舍用一個(gè)簡(jiǎn)單標(biāo)準(zhǔn)判斷數(shù)據(jù)量不到 5 萬(wàn)行無(wú)腦全量重建超過(guò) 5 萬(wàn)行或業(yè)務(wù)要求“生成期間仍可讀”走增量窗口。實(shí)際項(xiàng)目里一般用不到這個(gè)閾值全量重建足夠。4. 調(diào)休與補(bǔ)班把節(jié)假日“覆蓋”邏輯做成可回滾的規(guī)則映射4.1 為什么單純“周末等于休息日”會(huì)翻車默認(rèn)規(guī)則“周六周日為周末休息”在絕大多數(shù)日子里是成立的但每年總有那么十幾天被官方公布的放假安排打破。最典型的例子五一、國(guó)慶前后往往會(huì)有“前一個(gè)周日補(bǔ)班”或“周六調(diào)休放假”就是說(shuō)默認(rèn)規(guī)則里的周六周日可能被改成工作日默認(rèn)規(guī)則里周一到周五也可能被改成節(jié)假日。如果不做覆蓋機(jī)制只靠“周末自動(dòng)休息”的代碼考勤系統(tǒng)在補(bǔ)班那天會(huì)漏判大量缺勤。所以生成環(huán)節(jié)里我把覆蓋邏輯設(shè)計(jì)成“先按默認(rèn)規(guī)則定基調(diào)再用規(guī)則表整體覆蓋”而不是寫一堆if (date.equals(某節(jié)日))。因?yàn)楣?jié)日日期每年都變硬編碼經(jīng)不起時(shí)間推敲。4.2 規(guī)則合并與去重同一天多條規(guī)則取最新一條覆蓋規(guī)則表維護(hù)的人可能不止一個(gè)每年元旦前 A 同學(xué)錄入一批元旦后 B 同學(xué)又改了幾個(gè)日期。如果規(guī)則表出現(xiàn)target_date重復(fù)主鍵約束會(huì)直接阻止但歷史數(shù)據(jù)替換時(shí)可能出現(xiàn)“同一日期先被標(biāo)記調(diào)休補(bǔ)班又被標(biāo)記節(jié)假日”的修改。這種場(chǎng)景我用一句話處理target_date上的記錄永遠(yuǎn)只有最新一條INSERT ... ON DUPLICATE KEY UPDATE保證冪等。INSERT INTO t_rule_override (target_date, override_type, holiday_name, source_year, effective_time) VALUES (?, ?, ?, ?, CURRENT_TIMESTAMP) ON DUPLICATE KEY UPDATE override_type VALUES(override_type), holiday_name VALUES(holiday_name), source_year VALUES(source_year), effective_time CURRENT_TIMESTAMP;加載規(guī)則映射時(shí)也要注意邏輯方向默認(rèn)工作日被覆蓋成節(jié)假日默認(rèn)周末被覆蓋成補(bǔ)班工作日這兩類都從t_rule_override讀統(tǒng)一按target_date做MapLocalDate, Integer生成器只認(rèn)“日期最終的 day_type 值”不再關(guān)心中間發(fā)生了什么。這樣規(guī)則表與事實(shí)表徹底解耦將來(lái)想回滾某條規(guī)則直接刪規(guī)則表里的記錄再重新觸發(fā)重建即可。4.3 跨月邊界與節(jié)假日名稱歸檔前后 15 天一起解析每年公布的年放假安排會(huì)指定“春節(jié)前一周的周日補(bǔ)班”而這個(gè)補(bǔ)班日期很可能落在上一年的 12 月或者下一年的 1 月。所以加載規(guī)則時(shí)的查詢條件不能只鎖死當(dāng)前年份而要前后各留出緩沖我把這個(gè)窗口叫做“年邊界緩沖”。SELECT target_date, override_type, holiday_name FROM t_rule_override WHERE target_date BETWEEN ? AND ?這里的兩個(gè)問(wèn)號(hào)分別是給定年份的1月1日減去15天和12月31日加上15天。生成時(shí)日期落入緩沖區(qū)內(nèi)但年份不是目標(biāo)年份的行會(huì)直接忽略只有落在目標(biāo)年份內(nèi)的日期才寫入事實(shí)表。這個(gè)設(shè)計(jì)解決了很多團(tuán)隊(duì)“春節(jié)補(bǔ)班總漏一天”的毛病。節(jié)假日名稱歸檔也有講究。規(guī)則表里的holiday_name要按真實(shí)節(jié)日寫全比如“國(guó)慶節(jié)”“中秋節(jié)”不要寫“10月1日放假”這種日期化命名。因?yàn)楹罄m(xù)判斷“某節(jié)假日是否調(diào)休”“今年中秋國(guó)慶是否重疊”都要靠這個(gè)名稱做統(tǒng)計(jì)分析命名規(guī)范了報(bào)表層就不用再清洗。5. 日歷落庫(kù)避坑寫日期字段最容易翻車的 5 個(gè)問(wèn)題5.1 YYYY 與 yyyy 混用年尾日期被排到錯(cuò)誤年份現(xiàn)象生成 12 月 31 日的數(shù)據(jù)時(shí)控制臺(tái)打印出來(lái)的年份是下一年。查數(shù)據(jù)庫(kù)發(fā)現(xiàn)這一行的year字段被寫成了下一年的值。原因SimpleDateFormat或DateTimeFormatter里用了YYYY。這個(gè)模式代表“周周年份”不是日歷年。當(dāng)某年的 12 月 31 日恰好屬于下一周的 ISO 周期時(shí)YYYY會(huì)輸出下周所在的年份。解決生成器里完全不要依賴格式化字符串推導(dǎo)年份直接用LocalDate.getYear()。如果歷史代碼用了DateTimeFormatter.ofPattern(yyyy-MM-dd)一定要明確yyyy才是日歷年。這個(gè)坑在年初或者年末跑批時(shí)特別容易觸發(fā)因?yàn)橹苤苣攴菖c日歷年只在跨年那一兩天不同。5.2 主鍵沖突與重復(fù)生成任務(wù)重跑直接拋異?,F(xiàn)象同樣的生成任務(wù)跑第二遍插入第 366 行時(shí)報(bào)Duplicate entry 2025-12-31 for key PRIMARY。原因生成器第一次執(zhí)行成功后事實(shí)表已經(jīng)存在全年數(shù)據(jù)第二次執(zhí)行沒(méi)有做清理直接INSERT主鍵約束攔截。解決writeBatch開頭一定要按年份先DELETE再插入也就是前面代碼里的DELETE FROM t_calendar_detail WHERE year ?。這個(gè)操作把重跑任務(wù)從“不可重復(fù)執(zhí)行”變成“冪等”任何時(shí)間重放都不會(huì)產(chǎn)生臟數(shù)據(jù)。要注意如果刪除之后、插入之前有其他進(jìn)程在查詢這張表會(huì)短暫查不到數(shù)據(jù)。低峰期運(yùn)維或者用臨時(shí)表替換寫入二選一。5.3 時(shí)區(qū)問(wèn)題日期整體偏移一天現(xiàn)象數(shù)據(jù)庫(kù)里存好的日期和本地代碼里L(fēng)ocalDate對(duì)象完全對(duì)不上總是差一天。比如代碼里是 2025-01-01庫(kù)里變成 2024-12-31。原因生成時(shí)用了LocalDateTime或者Date在寫入DATE列時(shí)經(jīng)過(guò) JDBC 驅(qū)動(dòng)做了時(shí)區(qū)換算。應(yīng)用服務(wù)器時(shí)區(qū)與數(shù)據(jù)庫(kù)會(huì)話時(shí)區(qū)不一致時(shí)邊界時(shí)間會(huì)漂移。解決全部改用LocalDate數(shù)據(jù)庫(kù)連接串顯式指定時(shí)區(qū)參數(shù)useJDBCCompliantTimezoneShifttrueserverTimezoneAsia/Shanghai代碼里ps.setObject(1, localDate)直接傳純?nèi)掌趯?duì)象不要Date.valueOf(localDate)之后再轉(zhuǎn)一次。時(shí)區(qū)問(wèn)題屬于典型的“本地沒(méi)事、上線翻車”因?yàn)楸镜財(cái)?shù)據(jù)庫(kù)和線上數(shù)據(jù)庫(kù)時(shí)區(qū)配置往往不同。5.4 只維護(hù)放假?zèng)]維護(hù)補(bǔ)班考勤異常集中在節(jié)前現(xiàn)象某月底考勤報(bào)表突然冒出一批缺勤正好都是之前調(diào)休補(bǔ)班的那幾天。系統(tǒng)后臺(tái)查“節(jié)假日配置”明明有記錄。原因規(guī)則表只錄入了“法定節(jié)假日”這一類覆蓋也就是只把工作日改成了節(jié)假日卻漏掉了“周末補(bǔ)班”這類逆向覆蓋。默認(rèn)規(guī)則認(rèn)為那天是休息日事實(shí)表也就按休息日記錄導(dǎo)致應(yīng)出勤日被算成了休息。解決覆蓋規(guī)則的設(shè)計(jì)必須同時(shí)支持兩個(gè)方向override_type1表示周末改成工作日override_type3表示工作日改成節(jié)假日。生成邏輯不要只處理“放假”那一側(cè)。另外補(bǔ)班日期在規(guī)則表里也要保留holiday_name的原始信息比如備注“國(guó)慶前補(bǔ)班”方便報(bào)表側(cè)解釋異常出勤記錄。5.5 日期列隱式轉(zhuǎn)換VARCHAR 與 DATE 的混用導(dǎo)致索引失效現(xiàn)象表里calendar_date定義為VARCHAR查詢WHERE calendar_date BETWEEN 2025-01-01 AND 2025-01-31慢到全表掃。原因字符串比較按字典序2025-1-1和2025-01-01排序結(jié)果完全不同邏輯上像一個(gè)日期物理上排成兩條序列。一旦數(shù)據(jù)量上來(lái)所謂“日期范圍查詢”根本沒(méi)有范圍可言。解決表結(jié)構(gòu)里列類型必須是DATE參數(shù)傳LocalDate查詢條件不要用DATE_FORMAT(calendar_date) ...這種寫法因?yàn)閷?duì)列做函數(shù)處理會(huì)讓索引失效。正確姿勢(shì)是calendar_date BETWEEN ? AND ?讓日期列裸著參與比較。6. 進(jìn)階增量窗口更新、結(jié)果校驗(yàn)與“只改規(guī)則表”的運(yùn)維習(xí)慣6.1 按未來(lái) 90 天窗口增量重建全量重建適合年初但年中若突發(fā)“某天臨時(shí)放假”的通知重跑整年代價(jià)不大卻也容易把已有人工訂正的數(shù)據(jù)覆蓋掉。我的習(xí)慣是平時(shí)只維護(hù)規(guī)則表發(fā)布新規(guī)則后對(duì)受影響的未來(lái) 90 天窗口做增量重建。窗口選擇 90 天是因?yàn)榻^大多數(shù)臨時(shí)通知都不會(huì)影響超過(guò)一個(gè)季度窗口太大沒(méi)必要太小又可能覆蓋不全連續(xù)調(diào)休。這種運(yùn)維方式要求生成器把“刪除與插入”限定在一個(gè)窗口內(nèi)public void rebuildWindow(Connection conn, LocalDate start, LocalDate end) { deleteRange(conn, start, end); generateRange(conn, start, end); }刪除和生成需要放在同一個(gè)事務(wù)里避免刪除成功、生成失敗造成窗口空窗。6.2 全年結(jié)果校驗(yàn)對(duì)比 SQL 與總數(shù)范圍生成完數(shù)據(jù)別急著上線跑兩組校驗(yàn)。第一組是總量校驗(yàn)按day_type分組統(tǒng)計(jì)全年三種類型加起來(lái)必須等于 366閏年或 365SELECT day_type, COUNT(*) FROM t_calendar_detail WHERE year 2025 GROUP BY day_type;正常年份工作日數(shù)量通常在 240 到 260 之間周末在 100 到 120 之間節(jié)假日約 11 到 20 天。如果統(tǒng)計(jì)結(jié)果明顯越界說(shuō)明規(guī)則覆蓋環(huán)節(jié)出了問(wèn)題。第二組是規(guī)則匹配校驗(yàn)把規(guī)則表里所有補(bǔ)班日期與事實(shí)表交叉比對(duì)SELECT r.target_date FROM t_rule_override r LEFT JOIN t_calendar_detail c ON c.calendar_date r.target_date WHERE r.override_type 1 AND c.day_type ! 1;查出來(lái)的每一行都是“規(guī)則表要求這天補(bǔ)班事實(shí)表卻沒(méi)生效”的漏網(wǎng)之魚。這兩組 SQL 丟進(jìn)定時(shí)任務(wù)里每天跑一次能兜住絕大多數(shù)人為配置錯(cuò)誤。6.3 一個(gè)值得養(yǎng)成的習(xí)慣規(guī)則表永遠(yuǎn)比事實(shí)表“高級(jí)”我接手這個(gè)方案半年后最大的體會(huì)是事實(shí)表只允許被生成器寫入永遠(yuǎn)不要改單行數(shù)據(jù)。哪怕手工修一條“某天應(yīng)該是節(jié)假日”的錯(cuò)誤也先去改規(guī)則表再觸發(fā)對(duì)應(yīng)年份/窗口重建。因?yàn)槭聦?shí)表是下游業(yè)務(wù)讀取的唯一來(lái)源手工改一條很可能覆蓋掉生成邏輯期望的最終狀態(tài)之后規(guī)則表再變動(dòng)這一條手工數(shù)據(jù)就被靜默抹掉了。相反“規(guī)則表 → 生成器 → 事實(shí)表”的單向數(shù)據(jù)流任何時(shí)刻都可以從頭重算等于給日歷系統(tǒng)留了一顆后悔藥。后來(lái)遇到“某個(gè)日期狀態(tài)不對(duì)”的反饋我先查規(guī)則表而不是直接改結(jié)果表十次有九次都是規(guī)則漏配補(bǔ)班。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
开心丁五月| 久久久免费精彩视频| 99欧美热| 激情丁香五月| 丁香五月婷久久| 国产色五月| 伊人久久婷| 丰满少妇乱A片无码| 色老久久| 99热综合| 综合在线色婷婷| 久久五月天婷婷视频| 天堂久久大香蕉| 99热网站| 99成人| 久久六月天| 日日操夜夜爽白洁| 天天舔天天插天天爱| 精品操逼一区二区| 日韩有码一区| aaa久久久| 夜夜撸夜夜骑| 天天操综合网| 婷婷五月激情综合| 97干在线| 一级黄色影片| AV中文在线| 五月丁香色婷婷色| 99热久草| 8区视频在线| 婷婷综合色五月天| 丁香五月天在线| 国产一区男女| 97偷拍在线视频| 欧美搡BBBBB摔BBBBB| 99在线精品观看99| 亚洲AV成人在线| 天天色图| 99热激情| 少妇性按摩无码中文A片| 午夜丁香婷婷| 内射人妻视频国内| 久月久在线视频| 色婷婷五月综合| 婷婷五月大香蕉| 天天干天天干天天干天天干天天干| 9999色色色色| 99热这里只有精品国产精品| 99无码精品| 丁香五月天在线| 99爱视频免费看| 婷婷五月天日逼| 五月丁香啪啪啪| 影音先锋一区二区三区| 激情五月天在线观看婷婷| 九九色99| 成人小说 五月天 婷婷| 日本乱论99| 五月丁香综合色婷婷| 97在线观视频免费观看| 成人在线免费网址| 狠狠第四色| 五月婷婷人人人操| 久久久色婷婷五月天| 色婷婷五月天亚洲| 战争与艾拉电影免费观看| 中出内射的人妻视频| 九九视频精品在线免费| 99热这里只有精品1| 久久久这里有精品| 99在线视频播放| 日韩三级高清无码| 丁香五月天激情视频| 久久综合99| 亚洲国产成人在线| 狠狠干狠狠干| 国产亚洲色婷婷久久99精品91 www.riverspirits.org www.hnnun.com www.changh | 激情五月天。| 超碰com| 99综合自拍| 色婷婷六月天| 99热97| www.夜夜操.com| 五月婷婷香| 久久婷婷五月丁香网| 激情五月丁香五月| 国产毛片精品一区二区色欲黄A片| 亚洲V国产V欧美V久久久久久| 欧美私人家庭影院| 任我鲁这里有精品视频| 色天天狠狠干| 人人摸人人澡人人| 性做久久久久久久免费看| 欧美日韩二区在线| 97色欧美| 五月天激情婷婷小说| 久久丁香久久| 婷婷免费视频| 色五月婷婷91在线| 色99视| 婷婷五月天手机版视频| 色婷婷88| 色五月天婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷 | 激情五月天第四色| 婷婷免费精品视频| 五月婷婷丁香俺日污视频| EEUSS鲁片一区二区三区| 中文资源在线a| 九月丁香| 婷婷欧美激情综合| 99热骚货| 婷婷久久五月天| 性综合网| 婷婷色狠狠| 五月天丁香久久| 思思99热热热99| 婷婷六月激情在线视频| 大香蕉久| 亚洲AV第二区国产精品| 99在线看片| www夜夜| 天干夜夜操| 极品人妻VIDEOSSS人妻| 99婷婷| 黄色笑话深爱激情网丁香五月婷婷啪啪啪啪啪 | 色综合伊人网| 五月婷婷七月丁香| 国产乱妇乱子伦| 超碰在线人人| 亚州精品成人片| 婷五月天天| 亚洲激情综合| 亚洲成人电影在线免费观看| 五月花成人网| 精品亚洲国产成AV人片传媒| 中文字幕丰满孑伦无码专区 | 色婷婷五月天激情| 一级二级色大片| 成人做爰黄A片免费看直播室男男| 热久69| 婷婷丁香五另类网站| 色婷五月天| 一级黄在线| www一起操在线观看| 五月激激网w'w'w| 极品另类| 丁香五月婷婷五月| 五月天亚洲综合网| 婷综合六月| 5月婷婷综合| 婷婷 丁香 精品| 丁香五月婷婷天激情| 中文字幕av久久爽一区| 天天噜日日噜综合无码| 人人干女人| 开心五月婷婷在线视频免费观看| 国产亚洲成AV人片在线观黄桃| 婷婷射丁香| 另类五月激情| 男人的天堂99| 国产亚洲精久久久久| 国产精品人成A片一区二区| 99九九玖玖| 激情综合激情五月一起草| 99噜噜噜在线播放| 五月丁香在线国产 | 最近中文字幕大全免费版在线 | 俺也去在线久久精品23欧美综合视频网站,丰满人妻一区二区三区在线视频53,丰满 | 伦乱美欧| 中文字幕丰满孑伦无码专区| www.狠狠狠.com| 亚洲成人五月天| 五月天婷婷AV| 久久总和99| 伊人三级激情| 五月婷啪啪| 九九色院| 婷婷久久久久| 国产激情久久久| 日韩性视频| 婷婷爱爱蜜臀天天操| 亚洲最大视频| 九热免费视频| 色婷婷丁香五月| 婷婷涩五月| 另类激情五月在线视频欧美| 午夜爱爱网站| 亚洲免费看片| renre人人操国产超碰在线| 色色婷婷丁香| 思思久久96热在精品国产,| 国产精产国品一二三在观看| 99在线视频在线观看| 无遮挡国产高潮视频免费观看| 五月丁香综合网色欲| 色99在线观看| 激情都市五月天| 乱乱av| 人人看人人要| 五月丁香自拍| 天天爽天天干| 色色丁香激情五月| 久久五月激情| 亚洲精品一区中文字幕乱码| 婷婷五月天AV在| 亚洲va综合va国产va中文| 在线观看视频1区| 丁香五月婷婷色播艳门照| 91五月花丁香| 婷婷五月天综合网| 丁香伊人综合| 伊人大香蕉在线视频| 激情图片久久| 五月丁香视频在线观看| 热婷婷久| 婷婷色婷婷| 色吧五月婷婷六月丁香| 吾爱AV导航| 色99日韩| 9999色色色色| 4399在线日本A片| www.色99| 久久ab| 91黄址| 9+1视频网址| 激情五月婷婷伊人| 九九综舍久久| AA片在线观看视频在线播放| 六月婷婷八月丁香| 桔色成人官方网站| 人妻久热| 天天爱天天天射AV| 婷婷六月久久综合导航| 丁香六月婷婷综合啪啪| 99久久精彩视频。| HD久久精品视频| 激情综合女人网五月播播| 日韩性爱AV| 九九热婷婷| 天天日天天狠狠操| 色五月婷婷综合在线| 九九热这里只有精品6| 久热这里只有精品99re,久热这里只有精品7 | 五月天综合在线观看| 五月婷婷影| 五月天婷婷综合网| 亚洲五月天婷婷| 激情五月无码| 91久久99久久91熟女精品| 爱99干99| 婷婷六月激情| 伊人五月综合网| 天天插轮理| 久久婷婷五月天激情四射| 激情五月天婷婷| 超碰国产在线观看| 99操逼| 亚洲精品色色| 婷婷五月丁香久久| 六月丁香狠狠爱| 欧美三级巜人妻互换| AV在线大香蕉| 日韩色色视频| 婷婷射丁香| 综合综合色色| 成人综合网站| 99这里| 五月婷婷婷丁香播| 欧美日韩AAAA| 婷婷五月天六月| 亚洲婷婷视频| 久久五月丁香婷婷| 国产1区2区3区| 丁香五月婷婷操逼| 极骚大香蕉伊人| 五月丁香人妻| AAA久久| 久久精热| 五月婷视屏在线观看| 色色99色色| 婷婷五月天丁香社区| 久久曰9| 色婷婷导航| 日良久久| 亚洲超碰在线| 九九aV| 五月天激情网站| 久久机热思思热| 开心久久爱五月天| 久热这里精品免费| 婷婷丁香五月激情中文字幕版| 亚洲天堂爱爱| 婷婷视频网| 天天做天天爱| 99色视频| 日本欧美成人片AAAA| 天天插天天射| 九九在线精品| 天天干天天操天天拍| AV在线观看网站| 天天日天天舔| 97操视频| 亚洲成人在线播放| 成人做爰黄A片免费看直播室男男| 五月天成人综合| 26uuu亚洲| 五月天偷拍| 激情丁香五月天| 99热这里全都是精品| 丁香六月激情综合| 国产成人精品一区二区三区视频 | 免费AV在线| 97色色色| www.婷婷| 国产婷婷色综合AV蜜臀AV | 婷婷五月天毛片| 欧美婷婷综合网| 婷婷伊人五月丁香天堂网| 色吊丝99| 亚洲激情另类| 色色欧美。| 99在线资源视频| 色情激情五月婷婷| 久操97| 超碰人人干| 色婷婷婷av| 久久婷婷色| 五月熟妇婷婷久久| 激情五月综合网最新| 日韩1区2区| 久久色9| 色五月激情网| 情欲禁地| 97日在线视频| 79精品在线视频| 五月丁香六月停停| 人妻久久久久久久 | 国产精品 的国产| 五月天色色网站| 色五月婷婷丁香国产在线| 天天cha成人综合网| 久久99热久久99精品| 台湾无码A片一区二区| 九九热在线视频观看| 亚洲精品久久久久AV无码| 日韩成人影片网站 | 天天摸天天高潮天天爽| 久久伦乱| 国产性av| 99在线视频色版| 99热思思在线观看| 色播播五月天| 欧美69久成人做爰视频| 99精品热视频| 色婷婷六月天在线| 亚洲色婷婷| 5月婷婷6月六月丁香| 99热99在线| 欧美成人猛片AAAAAAA| 久久天堂女人| 五月丁香婷婷五月色| 五月天激情www| 五月色综合| 亚洲AV成人一区二区在线观看| 五月婷激情影院| 久久99最新| 天天干,夜夜爽| 五月丁香久久| 久久 婷婷 五月天| 五月丁香婷婷潮喷中文字幕| www.色婷婷| 91呦呦呦| 天天爱天天做天天舔| 在线只有精品| 激情网 久久| 久九色| 九九性视频| 丁香六月激情综合| 色丁香五月天| 五月婷在线观看| 图片区 小说区 区 亚洲五月| 六月婷欧美| 99精品爱| 极品少妇高潮啪啪AV无码| 亚洲av无码精品色午夜| 久草xx性爱视频| 五月丁香婷中文字幕| 婷婷俺去也| 久久婷婷超碰| 婷婷五月天激情综合| 亚洲无码成人| 成人在线视频一区| 婷婷色情六月| 拍色综合| 日本五月视频| 亚洲综合五月天婷婷| 九九九精品视频免费观看| 婷婷丁香六月天| 91色综合久久| 久久机热这里只有精品| 欧美色男人网站| 丁香五月在线伊人| 狠狠色丁香| 亚洲AV第二区国产精品| 青草五月天| 九色视频九色九色91jiuseshipin| 涩综合在线 | 99热网址| 激情五月丁香六月综合AVXXXX| 丁香五月天AV在线| 99热这里只有精品23| 九九热这里只有精品6| 日本丁香久在线| 九九热免费| 久久91久久精品久久| 天天综合天天做天天综合| 大香蕉综合在线| 9久视频| 超碰九色| 国产VA播放| 99热最新| 色九月婷婷综合| 丝袜大香蕉| 激情九月婷婷| 激情六月天| 丁香五月婷婷婷婷欧美综合| 亚洲男人的天堂婷婷色五月| 日本网站久久| 99激情视频| 百度4399有码精品V在线观看 | 91919191919久久成人视频| 同性gv国产精品一区二区| 欧美色五月| 91操片| 五月天久久婷婷| 国产激情久久| 少妇人妻人伦A片| 人人人人人人人人人草| 五月天婷a在线| 色五月婷婷婷婷| 国产jd1024基地手机看国产| 很很干天天干| 在线视频你懂得| 五月天偷拍| 激情五月丁香综合蜜桃| 9热超碰| 五月天婷婷在线AN| 久久婷婷色色| 五月丁香激情综合| 色五月丁香婷婷| 五月天婷婷香蕉狠狠超碰综合| 亚洲av免费在线| 色五月婷婷激情综合网| 欧美熟女视频 色婷婷| 日本熟女内射| 伊久久婷婷| 26UUU欧美| 精品久9| 五月亭亭直播| 激情综合五月激情17| 成人无码髙潮喷水A片| 天天爽夜夜爽天天爽夜夜爽| 99九九在线精品热动漫| 国产精品扒开腿做爽爽爽A片唱戏| 综合网五月天123| 五月天丁香婷婷久久九| 婷婷色五月激情强奸四射| 五月婷婷啪| 中文字幕乱码亚洲精品一区| 综合婷婷都市激情| www.狠狠操.co m| 九月婷婷人人操人人舔人人爱| 日本五月天网站| 久久五月婷婷电影| 最熟少妇乱码| 九九色热| 九九无码| 五月色欧美| 丁香五月黄色| 欧美性生交XXXXX无码小说| 九九成人视频| 五月综合在线婷婷图片| 五月婷婷天堂| 国产免费一区二区三州老师F1……| 五月天婷婷基地综合网| 天天日天天做天天操| 狠狠色丁香久久| 成人免费120分钟啪啪| 五月婷婷六月丁香在线视频免费在线观看| 丁香丁香激情网| www.激情com| 五月丁香啪啪网| 婷婷射丁香| 九九热这里精品| 性色综合网| 午夜天堂一区人妻| 九色视频91| 天天日天天日天天搞| 日韩人妻无码专区| 99热第一页| 97在线观视频免费观看| 囯产精品久久欠久久久久久九大| 婷婷五月天激情小说| 五月丁香 久久久| 色色五月丁香婷婷| 婷婷欧美激情| 美女爆乳18禁www久久久久久| 久久人人妻| 激情五月天视频| 婷婷成人综合免费视频| 99久久99视频只有精品| 国产精典视频在线观看| 久久一品区| 色综合激情图区| 午夜一区| 婷婷激情五月| 久久综合丁香| 人人摸人人干| 色色色综合色| 五月情婷婷| 森林影视大全,最好看的2019年视频 | 99五月婷| 99热官网精品在线| 婷婷五月天综合久久日| 五月天网址在线刘玥| 99热手机在线精品| 天天插综合| 色五月天丁香婷婷| 一区视频网站| 91操在线视频| 五月丁香久| 丁香五月婷婷网| AV天堂婷婷五月天| 婷婷五月天亚洲综合| 天堂婷婷五月色| 五月天婷婷色在线视频免费观看| 97视频91| 99爱爱| 色欲色天天香综合| 亚洲激情av| 97人人操人人爽| 丁香色色色| 99在线观看视频| 91肏| 九九香蕉网| 97色色婷婷| 九九碰九九爱97| 激情五月丁香五月| 日韩三级片一区二区| 婷婷五月激情基地| 五月婷婷激情69| 五月丁香六月激情综合在线| 精品51XX| 五月婷婷丁香六月| 久久婷婷五月综合色奶水99啪| 国产精品日日躁夜夜躁| 日本久久99| 99无码黄色视频| 人妻无码精品一区| 午夜成人片400| 丁香婷婷五月香蕉91| 久久五月天综合| 国产亚洲精品久久久久苍井松| 午夜69成人做爰视频| 成人 在线观看国产| 色五月婷婷777| 97操资源婷婷| 操逼三区| 久久综合激情五月天| 亚洲99激情| 黄页大全十八禁| 久久久久思思热| 99综合网| 欧美一级色| 天天日天天久久青青| 久久九九热re6这里有精品| 五月天色色色网| 夜夜爱影院| 婷婷啪啪| 热99只有精品| 九九婷婷综合| 国产成人精品一区二区三区视频| 操逼视频网址| 91碰| 婷婷深爱网| 另类小说色婷婷| 97人人草| 免费观看全黄做爰的视频| 久久婷婷六月综合综合| 玖玖视频福利| 精品久久66| 综合激情婷婷| 丁香五月欧美婷婷| 久久98| 日本特黄aaaaa| 免费观看欧美成人AA片爱我多深| 大香线蕉伊人| 99热这里只有精品99| 9热成人在线视频| 色99在线观看| 日韩激情人伦人| 五月激情婷婷播播开心| 国产精品99久久久久久久女警 | 婷婷不卡基地| 91凹凸在线| 天天操,天天插| 国产婷婷综合| 婷婷在线中文字幕| 久99视频| 天天日综合| 亚洲色五月| 丁香五月天堂网AV| 国产日批视频免费播放| 操人久久| www.夜夜爱.com| 91精品久久久久久| 精品无吗va视频免费观看| 婷婷六月色开| 天堂美国久久| 五月婷婷丁香深深爱| 99网| 五月精品99综合| 99re思思热在线视频| 人妻精品一区二区三区| 久久久久亚洲AV综合| 天天射综合网站| 色五月丁香五月天| 亚洲国产精品二二三三区| 亚洲AV成人片无码网站| 九九精品热| 97在线观看| 91超级碰碰| 亚洲色另类| 久久这里只有精品视频15| jiujiu热在线视频| 超碰在线中文字幕| 五月天久草| 五月天五月色| 丁香网站| 操操啪| 五月婷婷五月天| av在线免费播放观看| 日韩一66精品| 五月丁香| 激情综合网之激情五月| 成人视频一区| AAA久久久| 丁香久久久| 人人操人人看97干| 另类国产综合| 亚洲精品**不卡在线播he| 开心久久爱五月天| 桃色五月天| 色五月婷婷中文字幕在线观看| 久9精品视频| 伊人网啪啪| 色噜噜狠狠色综无码久久合欧美| ...婷婷五月综合不卡,国产在线手机| 婷婷五月伦理网站| 影音先锋男人av资源站| 五月天俺去也| 亚洲影院婷婷色| 天天网曰日曰夜夜综合永久免费| 婷婷丁香五月亚洲综合网在线视频观看| 五月综合激情| 五月激情久久综合| 日逼AV影音先锋男人资源站| 伊人婷婷五月 | 丁香综合伊人| 亚洲妇女熟BBW| 久久人妻乱子伦| 99爱在线视频| 欧美色播综合在线观看| 免费无码毛片一区二区A片| 爱射综合| 国产精品久久久久久久久久| 婷婷丁香五月噜噜噜| www.9操| 久久机只有这里精品| 97色干在线观看| 色综合综合色| 九九热99精品| 婷婷六月天天| 九九热在线观看6| 色色色成人网| 深爱激情av| 91seAV| 2017人人操| 婷婷亚洲天堂| 大地9中文在线观看免费高清| 五月色导航| 天天日日| 亚洲婷婷91丁香| 桃色五月婷婷| 亚洲国产精品成人午夜| 99色综合| 综合五月丁香久久| 久99久视频精品| 99热这里只有精品中文字幕| 亚洲综合婷婷| 国产亚洲成AV人片在线观黄桃| 欧美亚洲婷婷五月| 91啪啪网| 婷婷久久五月天| 五月婷婷丁香色吧网| 97成人在线视频精品| av在线资源| 五月婷婷久久爱| 久久九九一區| 丁香五月婷婷色| 99热99re6国产在线播放| 丁香五月AV| 99热网站| 欧美va在线观看| 亚洲热手机在线观看| 97人碰人操| 伊人网碰碰| 丁香五月1页| 九 九九九AV| 欧洲亚洲免费视频9 | 精品牛仔裤超碰| 色婷婷丁香A片区毛片区女人区| 丁香五月婷婷综合网| 色五月激情| 欧美亚洲色色色色| 91精品无码| 激情五月丁香激情综合网| 亚洲成人在线综合| 日韩精品一区二区三区,四区,五区视频| www.99热这里精品| 六月婷婷狠狠| 91丨九色丨白浆| 欧美性生交A片免费看| 久草热在线视频| 天天做天天双| 久久激情五月天| 久久婷婷五月综合色丁香花| 五月天大香蕉| 狠狠色大香蕉| 精品三区影院| 激情com| 日韩综合久| 《亚洲操B久久免费在线观看,亚洲操B久久在线播放》在线播放 - 高清资源 - 97 | 丁香六月天AV| 婷婷爱爱蜜臀天天操| 色色色色色色综合网| 婷婷综合激情| 天天干天天操天天射| 久久99久久99精品免观看软件| 久久婷婷五月丁香网| 精品操逼一区二区| 97精品人人A片免费看| 五月停亭六月,六月停亭的英语| 99热久草| 婷婷色色综合激情| 99久久婷婷国产综合精品草原| 99久精品| 91久久九| 九久久婷婷| 婷婷综合五月| 91一起操| 婷婷综合亚洲| 六月丁丁香| 久 久9 9 热 视 频| 去干网最新版本亚洲版| 精品婷婷五| 九九99九九99偷拍视频免费看| 久久九九一區| jiujiuxiangjiaowang| 国产乱人偷精品人妻A片| 久久婷色| 91丨九色丨高潮丰满日本| 五月婷婷丁香色吧网| 森林影视大全,最好看的2019年视频| 亚洲区,视频区,视频区免费| 国产综合视频婷婷| 9月色婷婷| 91啪啪啪啪| 成人 AV播放| H亚洲| 日本44久久在线| 丁香五月色| 青草五月天| 色五月婷婷久久| 久久色情| 五月激情偷拍| 俺去也综合| 色欲色香综合网| 久久丁香五月天| 99热这里只有精品2| 九九亚洲| 欧美婷婷| 国产69久久久欧美黑人A片| AV九九| 亚洲精品99| 无码日本精品XXXXXXXXX| 色综合天天| 成人综合网站| 黄桃AV无码免费一区二区三区 | 婷婷色色五月天| 亚洲九九夜夜| www.夜夜操.con| 六月婷婷狠狠做| 婷婷五月天成人综合网| 天天操屄网| 婷婷久久色| 亚洲欧洲午夜成人精品av| 精品久热69| 五月婷婷黄色| 五月天色不卡| 图片区 小说区 区 亚洲五月| 久久久久久久人妻| 激情涩播| 青青艹b| 91精品久久久久久久久久久久| 久久99操| 九九视频精品这里只有| 去干网最新版本亚洲版| 思思久久96热在精品国产,| 99成人免费热视频| 日本婷婷在线| 激情图片五月天| 极品人妻VIDEOSSS人妻| 色激情网| 中美日韩成人在线| 欧美亚洲999| 婷婷激情社区| 激情五月天色色网| 人妻丰满精品一区二区A片| 日本三级第一页| 婷婷丁香成人五月天| 成人短视频在线观看| 久久与婷婷| 五月丁香六月婷婷亚洲综合| 亚洲天堂久久| 五月日韩中文字幕| 伊人久久中文网| 超碰久热| 五月天激情.com| 猫咪伊人久久| 夜夜爽77777妓女免费下载 | AV在线免费播放| 桃色激情婷婷伊人网| 99色色色色| 99在线小视频| 五月丁小婷婷激情四射| 五月婷婷|欧美| 思思热99er在线视频| 日本在线va| 婷婷色综合| 久久码久久无清| 日日噜人人人做人| 99热在线这里| 国产成人综合网| 特黄三级又爽又粗又大| 久久伊人9| 久热中文字幕在线线观看| 色色五月婷婷久久| www.97视频| 九九99九九99偷拍视频免费看| 先锋资源996| 日本色99| 五月丁香亭亭电影久久| 五月婷婷大香蕉| 热99AV网站| 久久久久久久人妻| 亚洲成人超碰| 丁香婷婷综合激情五月色| 五月丁香六月婷| 97丁香视频| 26UUU在线观看| 激情视频网址| 五月天婷婷色色首页| 同性gv国产精品一区二区| 欧美成人精品A片免费一区99| 亚洲亚洲人成综合网络| 午夜激情综合| 色婷婷激情五月天在线观看| 激情99| 9l视频自拍9l视频自拍九色学生| 热的无码综合视频| 五月激情综合网| 99热99操| 综合婷婷五月丁香在线观看| 婷婷色中文字幕| 大香蕉久久久| 亚洲久久激情| 国产干逼片| 婷婷色播六月无码| 婷婷五月激情小说| 欧美日本黄色| 婷婷丁香亚洲色综合91| 久久久日韩特色特黄AAAA| 六月婷婷狠狠色在线观看| 99在线热| 国产婷婷综合| 丁香五月激情在线| 婷婷五月天99综合网站| 天天操夜夜夜拍拍拍| 亚洲免费婷婷| 久久九九爽| 久久婷婷丁香| 超碰99热精品| 久热这里只有精品6| 亚洲在线免费成人| 婷婷激情六月综合| 欧美色婷婷| 久久这里只有精彩| 婷婷九月色| 六月婷婷av| 五月伊人婷婷| 久久99免费视频| 五月丁香六月香综合激情| 成人国产欧美大片一区| 色综久久久| 丁香五月色情| 美妞av| 九九青青草成人| 色欲天天综合网| 丁香五月综合婷婷| 99色干| caop在线| 超碰人人射| 五月色网| 五月婷婷与六月丁香图片激情| 99热这里只有精彩| 99婷婷| 九九在线精点品| 人人人操Av| 婷婷色中文字幕| 狠狠草天天草| 97色吧| 婷婷成人综合五月| 99久久97| 99精品在这里| 久久九九99桃花视频| 丁香五月影视| 人妻操逼视频。| 丁香五月性爱| 天天插轮理| 人人操9| 玖玖热视频| 一区二区乱码视频| 97久久视频| 美妞av| 丰满少妇乱A片无码| 一级二级香港秋霞欧美欧美秋霞| a毛片二逼wwwwwwwwww| 五月综合婷婷久久在线| 啪啪操网| 97干综合网| 看婷婷五月天网| 97人人操人人干| 偷拍视频五月天| 九月色婷婷婷| 久久伦乱| 欧美成人无码高清一区二区三区| 亚洲情综合五月天| 婷婷草| 婷婷人人操| 99精品偷自拍| 韩国天天婷婷| 六月丁香综合| 99欧美| 婷婷五月天黄色小说| 亚洲成人av在线| 99久久国产宗和精品1上映| 丁香六月激情网C0W| 4399在线观看免费毛片| 六月婷婷色综合| 天天夜天天色天天| 夜色爱爱亚洲| 六月天婷婷| 色婷婷丁香五月综合| 庭庭久久内射| 国产乱人偷精品人妻A片| 五月丁香婷婷基地| 国在线激情网| 99se丁香| 色婷操逼| 久久96热| 久久99网址| 日日做A爰片久久毛片A片英语| 激情五月天在线视频| 五月婷在线| 伊人大香久久| 婷婷成人视频| 99re视频精品| 激情综合五月婷| 超碰国产一区| 欧美大香蕉视频| 天天干天天射综合网| 丁香激情四射| 久久九九激情五月天 | 日本女色人人| 思思久久精品| 亚洲五月花| 激情深爱综合| 热久69| 国产看真人毛片爱做A片| 色综合天天天天做夜夜| 五月婷婷中字在线| 91人人操人人看| 思思9久久| 色噜噜狠狠色综合日日| 夜丁香综合| 南京搡BBBB搡BBBB| 天天综合网~91综合网| 色欲色欲久久宗合网| 91性高潮久久久久久久久| 色综合日日| 婷婷激情五月天综合| 九热久| 91女人18毛片水多国产| 玖玖婷婷五月天| 99色在线观看视频| 亚洲人成人五月天| 桃色伊人在线| 久久久久9| 五月丁香888| 五月综合激情久久| 五月丁香成人网| 五月婷婷中文| 操嫩逼电影| 538在线| 色色色成人网| 天天爽天天干| 亚洲思思热久| 97久久精品| 丁香六月婷婷色播| 五月天小说激情| 少妇人妻人伦A片| www.婷婷五月天.com| 色婷另类| 精品人妻久久久久久| 五月丁香激情六月| 日日操,日日爽| 中文网AV| ay2区| 91性高潮久久久久久久久| 国产综合久久久777777| 91碰人人| 日韩精品一区二区三区,四区,五区视频| 日日夜夜天天| 婷婷亚洲综合| 99热精品在线播放| 婷婷午夜精品久久久| 激情六月丁| 五月丁香偷拍| 五月婷婷丁香俺日污视频| 久久久人妻系列| 天天爽天天透天天爱| 99综合婷婷五月| RenRenSe在线视频网站| 五月婷高清视频| 在线区区区| 色七色九九| 99热香港| 丁香五月综合在线| 五月丁香 久久久| 5月婷婷6月丁香aV| 丁香五月视频在线观看| 丁香六月av| 日日射天天射| 激情五月婷婷综合网| 婷婷五月天熟妇| 99热这里只有精品1998| 蜜臀av无码久久久久久久久| 五月激情综合婷婷| 深爱婷婷色| 久久机热这里只有| 99久久精品网| 久久久区区一久久久久久| 激情五月丁香激情综合网| 丁香啪啪中文字幕| 99热在线网站| 4399高清无码视频| 天天色播| 免费AV黄在线播放| 丁香六月视频| 亚洲激情色色| 激情五月天婷婷视频| 丁香婷婷六月在线资源观看| 婷婷六月情| 99热精品在线观看| www.五月婷婷久久.com| 久久精彩视频| 国产美女无遮挡裸体毛片A片| 五月天网址在线刘玥| www.久久99精品| 婷婷丁香91| 97狠狠色| 婷婷丁香77777| 天天色天天噜| 强伦轩人妻一区二区电影| 亚洲啪视频| 免费视频无码| 色噜噜狠狠狠狠色综合久欧美| 影院久久久| 婷婷操逼| 五月的婷婷六月丁香| 99热这里只有精品搜| 99在线免费视频| 婷婷在线视频| www.激情| 亚洲视频另类| 久久婷婷成人| 亚洲激情网站无码| 淑女丝袜bi操逼123| 丁香色六月婷婷| 嫩草AV久久伊人妇女超级A| 67194中文在线| 狠狠综合网| 五月婷婷免费在线观看| 日本高清综合网五月丁香| 久热久| 婷婷五月婷婷| 成人 九九九九| 丁香六月婷婷综合| WWW.桔色成人.COM| 久草狼人| 夜夜操加勒比| 青996青| 六月丁香综合999| 亚洲狠狠操| 久久婷婷五月天懂色| 亚洲字幕AV一区二区三区四区| 大香蕉五月婷婷| 人妻系列久久久久久久久久久 | 婷婷精品视频| 午夜天堂一区人妻| 99少妇精品| 99久久99热| 久久a热| 五月丁香久久| 91一道本| ji'qing'luan'ren'lun| 无码色| 丁香六月婷婷操逼网| 日本啪啪天堂| 六月狠狠综合| 色婷婷五月在线| 久久黄色片| 五月婷婷欧美| 夜夜撸日日骑| 天天干天天干天天| 亚洲AV成人一区二区在线观看| 丁香五月天无码AV| 五月天天天色| 91欧美| 久久99精品久久久久久噜噜| 99精品爱| 能看的av网站| 91se在线观看| 精品色色网| 亚洲婷婷五月| 日逼影音先锋男人资源站| 亚洲小视频免费播放| 五月婷婷在线免费| 禁欲电影完整版在线播放| 91啪啪网| 五月伊人婷婷| 夫妇交换刺激做爰| 日本99视频| 五月婷婷啪啪| 色欲五月丁香| 五月天色婷婷激情综合| 99精品久久久久久久婷婷| www.久久色.com| 天天综合天天玩夜夜玩天天玩夜夜玩 | 在线VA视频| 久久综合干| 韩日AV片| sewuyuejiqingwang| 亚洲色婷婷五月天| 日韩日比视频| 色色色色网色色网色色| 荡乳尤物3HP1V5| 99,色| 五月丁香久久网| 欧美黄色一级| 精品福利911| 亚洲色五月| 色性综合| 激情五月婷婷| 久操无码| 人人九色| 一级二级色大片| 亚洲国产精品VA在线看黑人| 五月刺激丁香月综合| 5月婷婷六月丁香| 四色永久成人网站| 狼人久草| 殴美激情综合网| 日韩AV在线免费观看| 九九婷婷五月天影视| 人妻体体内射精一区二区| WWW色五月天| 五月色网| 人人97碰| www婷婷| 99热人人| 色五月首页| 婷婷久久欧美| 日本婷婷五月天| 婷婷激情五月吧| 日韩AV大全| 狠狠色婷婷| 97碰在线视频| 99久热这里有精品| 久久精品一区二区三区四区| 日本在线视频手机播放五月婷| 激情色色| 丁香久久综合| 五月激情六月宗合| 久思思久视频| 大香蕉婷婷| 久久激情综合| 无码人妻AV久久久一区二区三区| 天堂婷婷五月色| 日本熟妇乱妇熟色A片蜜桃| 超碰狠狠色| 丁香六月欧美| 99热这里只有精品8| 色丁香婷婷| 国产毛片精品一区二区色欲黄A片| 99精品热视频只有精品10| 久久激情网| 五月婷婷九| 亚洲最大视频网站| 久婷婷五月综合欧美| 激情五月天开心总和网| 色婷婷色| 中文字幕在线免费| 五月婷俺去也| 成人综合视频网址| 六月丁AV| 97婷婷丁香| 开心激情站| 久8色色| 六月婷婷视频| 亚洲综合色网| 久久婷婷五月激情网站| 91综合网| 超碰99在线| 丁香五月另类小说在线阅读| 激情五月婷婷老师| 天天插AV丝袜中| 人妻激情综合| 九月婷婷| 五月花婷婷最新| 超碰a女人的天堂| 饮料下药迷倒漂亮女同事强干| 久久欧洲久久| 1024在线观看免费视频| 五月婷婷色影院| 99色啊| 丁香综合久久| 深爱五月激情五月| 狠狠操狠狠狠| 激情99热| 六月成人网| 色色99| 99精品视频在线| 亚洲性视频| 97高清国语自产拍|