精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

你知道程序是怎么處理時區問題的么?

開發 前端
在實際業務開發中,會碰到夏令時,閏秒,時區轉換的問題,這些問題都需要從業務角度去考慮,保證用戶在任何地區看到的數據都一致的,這就需要MySQL數據庫、后端服務以及前端服務做相應的處理才能完成。

[[377401]]

本文轉載自微信公眾號「三太子敖丙」,作者三太子敖丙 。轉載本文請聯系三太子敖丙公眾號。

前言

在實際業務開發中,會碰到夏令時,閏秒,時區轉換的問題,這些問題都需要從業務角度去考慮,保證用戶在任何地區看到的數據都一致的,這就需要MySQL數據庫、后端服務以及前端服務做相應的處理才能完成。

最近我也剛好在開發的時候遇到了,所幸就寫下這個比較冷門的文章,跟大家聊聊夏令時,閏秒,時區轉換在實際開發過程中的解決方案。

夏令時

夏令時介紹

夏令時(Daylight Saving Time:DST):又稱"日光節約時制",是一種為節約能源而人為規定地方時間的制度,在這一制度實行期間所采用的統一時間稱為“夏令時間”。

一般在天亮早的夏季人為將時間調快一小時,可以使人早起早睡,減少照明量,以充分利用光照資源,從而節約照明用電,除了夏令時外還有冬令時,采用的是本地的標準時間。

可以看到意大利是有夏令時制,夏令時的時間從3月28日到10月31日,冬令時(本地標準時間)是從11月1日到3月27日,在夏令時時段內,時間比標準時間快一個小時,例如羅馬市的時區GMT + 1:00,標準時間為10:00:00,在夏令時的時間就是11:00:00,冬令時的時間就是10:00:00。

CET (中歐標準時間) 是UTC + 01:00時區的名稱之一,比UTC(世界標準時間)提前1個小時,與UTC的時間偏差可寫為+01:00,在冬天使用,在夏季時使用CEST - 中歐夏令時間 (UTC + 02:00,提前一個小時)。

LInux時區

Linux服務器的系統時間的校準是通過NTP(Network Time Protocol)服務來實現,每隔一段時間會跟時鐘源進行校對,確保Linux系統時間的準確性,同時Linux操作系統支持不同國家及地區的時區設置,所有時區信息位于/usr/share/zoneinfo目錄下,如果需要設置時區,只需要將/etc/localtime軟鏈接到一個具體的地區即可,如果這個地區有DST機制,那么Linux會自動在DST和標準時間之間切換,不需要額外的代碼來處理。

  1. ## Linux支持的區域信息 
  2. $ ls -ltr /usr/share/zoneinfo/ 
  3. total 320 
  4. lrwxrwxrwx  1 root root     3 10月 23 05:18 Zulu -> UCT 
  5. -rw-r--r--  1 root root  1544 10月 23 05:18 W-SU 
  6. -rw-r--r--  1 root root  1873 10月 23 05:18 WET 
  7. lrwxrwxrwx  1 root root     3 10月 23 05:18 UTC -> UCT 
  8. lrwxrwxrwx  1 root root     3 10月 23 05:18 Universal -> UCT 
  9. -rw-r--r--  1 root root   127 10月 23 05:18 UCT 
  10. -rw-r--r--  1 root root  1970 10月 23 05:18 CET 
  11. ## 前端服務所在Linux服務器的時區 
  12. $ ls -ltr /etc/localtime  
  13. lrwxrwxrwx 1 root root 33 11月  1 06:20 /etc/localtime -> /usr/share/zoneinfo/Asia/Shanghai 

通過zdump命令查看下意大利羅馬的時區屬性。

  1. $ zdump -v /usr/share/zoneinfo/CET 
  2. /usr/share/zoneinfo/CET  Sun Mar 28 00:59:59 2021 UT = Sun Mar 28 01:59:59 2021 CET isdst=0 gmtoff=3600 
  3. /usr/share/zoneinfo/CET  Sun Mar 28 01:00:00 2021 UT = Sun Mar 28 03:00:00 2021 CEST isdst=1 gmtoff=7200 #2021年夏令時開始 
  4. /usr/share/zoneinfo/CET  Sun Oct 31 00:59:59 2021 UT = Sun Oct 31 02:59:59 2021 CEST isdst=1 gmtoff=7200 #2021年夏令時結束 

從上面的信息可以看到,2021年夏令時的開始時間是Sun Mar 28 01:00:00,結束時間為Sun Oct 31 00:59:59,isdst = 1說明當前處于DST時段,gmtoff=7200表示與格林治時間的offset,單位秒,即UTC + 02:00,也稱為CEST時間,這說明Linux操作系統已經自動實現了下夏令時DST的自動切換。

處理夏令時

舉個例子,意大利羅馬的客戶需要開發一個稅務系統,用于國內各地市的稅收記賬,由于意大利是有夏令時制,就需要考慮夏令時DST的處理,在開發的過程中,涉及時間問題的包括MySQL數據庫(mysql-server),后端服務(backend-service)以及前端服務(frontend-service)三個方面,下面就從三個層面分析如何去處理DST。

前端處理

業務對前端的要求是:不管使用的是移動端還是PC端,都應該正確的顯示當時時間,包括有夏令時制的時間。

如果在中國的話,就比較好處理,沒有DST機制,統一使用東八區即GMT/UTC + 08:00即可,前端服務的時間直接取Linux服務服務器的系統時間,Linux的時區只需要設置為Asia/Shanghai即可,前端不需要做任何時間的轉入轉出。

**轉入:**指POST請求寫入數據,user —> frontend-service —> backend-service —> mysql-server,例如繳稅接口。

**轉出:**指GET請求查詢數據,mysql-server —> backend-service —> frontend-service —> user,例如查詢接口。

不過開心的是,Linux操作系統已經自動實現了DST轉換,在前端不需要做任何處理,設置Linux時區為CET。

  1. # 修改LInux時區為CET,也可以通過timedatectl命令修改。 
  2. $ ln -sf /usr/share/zoneinfo/CET /etc/localtime 

這樣在意大利國內的用戶的通過終端(移動端或PC端),登錄系統繳稅或查詢時,用戶時間和前端服務的時間完全一致,即完成如下這一步的處理。

后端處理

我們了解了前端Linux服務器的時區設置為CET,就能自動處理意大利DST夏令時轉換了,后端Java程序部署在Linux服務器上,將其時區設置跟前端一樣,也是CET時區,后端只需要接收前端傳過來的值進行MySQL的CRUD操作即可,稅務表的結構如下:

  1. CREATE TABLE `tax_form` ( 
  2.   `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主鍵id'
  3.   `tax_id` varchar(20) NOT NULL DEFAULT '' COMMENT '稅務編號'
  4.   `amount` decimal(12,4) NOT NULL DEFAULT '0.0000' COMMENT '納稅金額'
  5.   `tax_payer_id` varchar(20) NOT NULL DEFAULT '' COMMENT '納稅人編號'
  6.   `status` tinyint NOT NULL DEFAULT '0' COMMENT '繳稅狀態'
  7.   `audit_time` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '審核時間'
  8.   `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創建時間'
  9.   `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改時間'
  10.   PRIMARY KEY (`id`) USING BTREE 
  11. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='稅務記錄表'

主要看一下繳稅和審核接口,分別的對應的SQL語句如下:

繳稅

  1. -- 繳稅接口的對應的SQL 
  2. insert into tax_form(tax_id,amount,tax_payer_id,status) values('T001', 1234.56, 'U001', 0) 

審核

  1. -- 修改審核狀態 
  2. update tax_form set status = 1, audit_time = '2021-01-07 12:02:30' where  tax_payer_id = 'U001'

涉及時間的字段有兩類

**公共字段:**create_time,update_time這些是每個表必須有的時間字段,而且默認都是MySQL的CURRENT_TIMESTAMP,取的MySQL server的當前系統時間,而這個時間是跟MySQL的時區time_zone設置不同而變化的,同時MySQL也是支持夏令時DST自動轉換的。

業務字段:audit_time審核時間屬性是由前端頁面傳到后端進行處理,后端無需做任何轉換。

MySQL處理

MySQL也是支持夏令時DST機制,不過設置時區time_zone只能設置為地區(類似Linux設置時區一樣),不能石永紅MySQL設置的時區的相關變量

  1. mysql> show variables like '%zone%'
  2. +------------------+--------+ 
  3. | Variable_name    | Value  | 
  4. +------------------+--------+ 
  5. | system_time_zone | CST    |   -- 數據庫服務器的當前時區,不可修改,CST這里指的是中國標準時間(China Standard Time UTC+08:00,即東八區) 
  6. | time_zone        | SYSTEM |   -- 數據庫時區,默認跟服務器保持一致,可修改。 

目前是東八區,修改為意大利時區,即東一區。

  1. mysql> select now(); 
  2. +---------------------+ 
  3. | now()               | 
  4. +---------------------+ 
  5. | 2021-01-07 13:43:31  
  6. -- 修改數據庫時區為零時區,即。 
  7. mysql> set time_zone = 'CET'
  8. ERROR 1298 (HY000): Unknown or incorrect time zone: 'CET' 
  9. -- 嘗試通過+0:00方式修改,可以成功修改。 
  10. mysql> set time_zone = '+1:00'
  11. Query OK, 0 rows affected (0.00 sec) 

MySQL存儲時區信息的數據字典

  1. mysql> show tables from mysql like '%time_zone%'
  2. +-------------------------------+ 
  3. | Tables_in_mysql (%time_zone%) | 
  4. +-------------------------------+ 
  5. | time_zone                     |   -- 時區信息 
  6. | time_zone_leap_second         |   -- 時區閏秒信息 
  7. | time_zone_name                |   -- 時區名 
  8. | time_zone_transition          |   -- 時區轉換 
  9. | time_zone_transition_type     |   -- 時區轉換類型 

默認情況下,這些表都是空的,需要通過MySQL專門提供的命令mysql_tzinfo_to_sql導入,數據會被插入到表time_zone相關的表中。

  1. # Linux下的時區信息/usr/share/zoneinfo通過命令mysql_tzinfo_to_sql加載到相關的time_zone表中。 
  2. $ mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql 

執行完成之后,看一下表中的數據,再嘗試設置時區為CET。

  1. mysql> select * from mysql.time_zone_name where name like '%CET%'
  2. +------+--------------+ 
  3. Name | Time_zone_id | 
  4. +------+--------------+ 
  5. | CET  |          373 | 
  6. -- 設置時區為CET 
  7. mysql> set time_zone = 'CET'
  8. Query OK, 0 rows affected (0.02 sec) 
  9. mysql> select now(); 
  10. +---------------------+ 
  11. | now()               | 
  12. +---------------------+ 
  13. | 2021-01-07 10:00:36 | 

而且也支持時區轉換,例如將北京時間轉換成羅馬時間。

  1. -- 北京時間17:00:00轉換成CET的羅馬時間就是10:00:00 
  2. mysql> select convert_tz('2021-01-07 17:00:00''Asia/Shanghai''CET'as time
  3. +---------------------+ 
  4. time                | 
  5. +---------------------+ 
  6. | 2021-01-07 10:00:00 | 

我們要解決的問題是:MySQL設置time_zone='CET'后是否能自動實現DST轉換,如果可以的話,那么用戶端、前端服務、后端服務以及MySQL服務器時區就統一為CET,同時都能自動處理DST,從上面的zdump -v /usr/share/zoneinfo/CET命令輸出可以看到,2021年意大利的夏令時從3月28號01:59:59號開始,也就是時間調快一小時。

  1. -- 01:59:59時間點,沒有發生DST切換。 
  2. mysql> select convert_tz('2021-03-28 01:59:59''+1:00''CET'as time
  3. +---------------------+ 
  4. time                | 
  5. +---------------------+ 
  6. | 2021-03-28 01:59:59 |  
  7. -- 02:00:00時間點,確實發生DST切換,從02:00:00調快了一小時變成了03:00:00 
  8. mysql> select convert_tz('2021-03-28 02:00:00''+1:00''CET'as time
  9. +---------------------+ 
  10. time                | 
  11. +---------------------+ 
  12. | 2021-03-28 03:00:00 | 
  13. -- 將+1:00時間換成CET,結果也是一樣的,發生了DST切換。 
  14. mysql> select convert_tz('2021-03-28 02:00:00''CET''CET'as time
  15. +---------------------+ 
  16. time                | 
  17. +---------------------+ 
  18. | 2021-03-28 03:00:00 | 

從上面的結果可以看到,當time_zone設置成地區/城市,系統會自動解決夏令時DSTQ切換問題,如果設置time_zone='+1:00’這種方式就失去了夏令時機制,目前在MySQL數據庫中,在初始化time_zone相關表元數據以后,MySQL就可以自己完成夏令時的修正,不需要額外的服務處理。

對于AWS RDS的來說,time_zone是可以選擇地區/城市的,也就是支持夏令時的自動切換。

處理夏令時總結

通過上面的分析可以知道,Linux服務器和MySQL服務器都可以自動處理DST切換,前提是需要設置Linux的時區和MySQL時區為地區,例如都設置為CET。

閏秒

指為保持協調世界時接近于世界時時刻,由國際計量局統一規定在年底或年中(也可能在季末)對協調世界時增加或減少1秒的調整。最近一次閏秒在北京時間2017年1月1日7時59分59秒(時鐘顯示07:59:60)出現。

在實際的業務系統,受閏秒影響的有Linux服務器,Java代碼以及MySQL數據庫,我們來看看它們分別是怎么解決的LeapSecond問題的。

Linux服務器

對于大多數新的linux內核(2.6.x內核以后是支持LeapSecond,在這之前可能會導致Linux Kernel Crash),在設計時都是支持閏秒的,Linux操作系統時間是通過NTP服務來和時鐘源來進行同步,NTP會一級一級地下發閏秒事件通知直到最邊緣的NTP服務器,然后NTP就會把閏秒通知給客戶端的操作系統,由操作系統來處理閏秒通知。

對于閏秒2017-01-01 07:59:60,Linux內核需要處理這個時間,就需要做一些特定的處理,一般會有以下三種方案。

  • 后退一秒
  • 停止一秒
  • 真正的增加一秒

第一種方式會導致一些基于timestamp的消息通知亂序了,而第二種會導致出現兩個一模一樣的timestamp,而最后一種不會出現timestamp的問題,也是后面Linux內核選擇的處理方案。

  1. mysql> select UNIX_TIMESTAMP('2017-01-01 07:59:59'as nts; 
  2. +------------+ 
  3. | nts        | 
  4. +------------+ 
  5. | 1483257599 | 
  6. date -d '@1483257599' --utc 
  7. Sun Jan  1 07:59:59 UTC 2017 
  8. date -d '@1483257600' --utc 
  9. Sun Jan  1 08:00:00 UTC 2017 

從這里可以看到,Linux采用的是第三種方案:真正的增加一秒,這也符合業務系統的需求。

Java代碼

Java代碼的System.currentTimeMillis()會產生閏秒60,是取決于Linux操作系統的,在Linux Kernel 2.6.x之后已經fix了LeapSecond問題。

MySQL數據庫

上面看到了在MySQL下已經有了mysql.time_zone_leap_second數據字典,說明已經支持了LeapSecond,處理方案跟Linux類似。

  1. -- 創建一張測試表存儲timestamp時間戳 
  2. CREATE TABLE ls(   
  3. id bigint NOT NULL COMMENT 'id'
  4. ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP
  5. PRIMARY KEY (id)); 
  6. -- 設置數據庫時區為UTC 
  7. mysql> set time_zone = 'UTC'
  8. mysql> set timestamp = 1483257599;  --對應時間:2017-01-01 07:59:59 
  9. mysql> insert into ls(id) values(1); 
  10. mysql> set timestamp = 1483257600;  --對應時間:2017-01-01 07:59:60 
  11. mysql> insert into ls(id) values(2); 
  12. -- 可以看到MySQL對閏秒進行了處理,將07:59:60轉換成了08:00:00。 
  13. mysql> select id, ts, unix_timestamp(ts) from ls; 
  14. +----+---------------------+--------------------+ 
  15. | id | ts                  | unix_timestamp(ts) | 
  16. +----+---------------------+--------------------+ 
  17. |  1 | 2017-01-01 07:59:59 |         1483257599 | 
  18. |  2 | 2017-01-01 08:00:00 |         1483257600 | 
  19. -- 通過閏秒時間查詢會報錯 
  20. mysql> select * from ls where ts = '2017-01-01 07:59:60'
  21. ERROR 1525 (HY000): Incorrect TIMESTAMP value: '2017-01-01 07:59:60' 
  22. mysql> select * from ls where ts = '2017-01-01 08:00:00'
  23. +----+---------------------+ 
  24. | id | ts                  | 
  25. +----+---------------------+ 
  26. |  2 | 2017-01-01 08:00:00 | 

跨境系統的時間處理

上面介紹的意大利羅馬的稅務系統,其實屬于政企業務,只服務于國內的用戶的需求,不涉及海外用戶的請求,相對來說地區和人員都比較固定,但是像這種跨境電商巨頭ebay,它服務的用戶遍布全球各地,而且每個地區的時區不同,同時每個時區的夏令時DST的起始時間也不一樣,我們要解決的是要根據客戶所在地區顯示正確的時間(包括DST),跟前面的DST處理一樣也涉及到三端處理:前端服務(frontend-service),后端服務(backend-service)以及MySQL數據庫(mysql-server)。

從這個圖上可以看到,前端服務的UI層跟用戶所在的地區時間要完全一致,至于后端服務和MySQL如何處理時間,對于用戶來說根本不關心的,這就要求前端必須要根據不同地區,不同時區,不同夏令時DST產生不同的時間的用戶進行轉換處理,不同地區的時間轉換目前前端(Vue/React)已經有現成的插件可直接使用。

同時希望只在前端處理用戶時間的轉入和轉出,后端和MySQL數據庫不做任何修改就能完成業務處理和數據存儲。

北京用戶在UTC + 8也就是東八區,而羅馬用戶在UTC + 1東一區,都是在UTC的基礎上做處理,那我們就可以將時區都設置為UTC,然后根據用戶所在地區進行相應的處理。

MySQL處理

設置MySQL數據庫的時區為UTC,不管用戶來自哪個地區存儲在數據庫的時間都是UTC,包括公共時間字段(創建時間,修改時間)以及業務時間字段(交易開始時間,交易結束時間)。

-- 設置數據庫時區為UTC,即零時區

  1. -- 設置數據庫時區為UTC,即零時區 
  2. set global time_zone = 'UTC' 

后端處理

MySQL時區是UTC,那么后端服務的所在的Linux Server時區統一設置為UTC,跟MySQL保持一致,這樣后端就不需要做任何轉換。

前端處理

前端拿到標準時區UTC的數據,統一根據用戶所在時區進行轉換,這樣保證與后端數據時區的一致性,前端根據實際情況進行渲染。一般來講,前端將時間數據傳遞到后端,后端封裝成timestamp后存儲在MySQL中對應timestamp類型(MySQL中的timestamp是不區分時區的,例如數據庫是UTC 02:00:00,北京用戶使用ebay在CST 10:00:00下單,數據庫中的訂單表的create_time就應該存儲2020-12-03 10:00:00),同時前端查詢數據的也要做相應的轉換處理。

定時任務

后端服務一般都會一些定時任務,這個時間一般取自Linux OS的時間,跟前端沒關系,基于Linux的UTC時區做相應的調整即可。

總結

上面介紹了夏令時,閏秒以及跨境系統的時間處理問題,主要涉及到MySQL數據庫,后端服務以及前端服務三個層面,對于夏令時,閏秒的轉換處理,Linux和MySQL都可以自動完成處理,不需要額外轉換;對于跨境系統的時間處理,通過設置Linux和MySQL時區為UTC,只需要前端服務處理不同地區用戶時間問題,降低了系統改造的風險,今天就聊這么多,希望對大家有所幫助。

 

責任編輯:武曉燕 來源: 三太子敖丙
相關推薦

2023-04-28 07:44:44

MyBatis查詢SQL

2023-08-30 07:27:39

2022-02-10 09:04:50

架構

2024-04-08 00:00:00

asyncawaiPromise

2025-08-18 02:55:00

Spring數據庫容器

2019-09-20 08:47:57

DockerLinux軟件

2024-12-04 08:40:19

2013-02-27 10:27:44

GitHub

2024-02-19 00:00:00

Docker輕量級容器

2017-12-11 15:04:58

404錯誤HTTP代碼

2015-03-24 14:02:45

程序員

2024-04-10 10:15:16

監聽

2024-11-26 00:45:29

free區域字段

2020-06-29 18:54:39

大數據新發地疫情

2010-01-06 15:36:30

Linux操作系統

2023-10-08 09:42:41

GitHubDataTable?Fill

2024-12-11 08:19:34

2020-12-08 09:25:41

死鎖MySQL數據庫

2020-12-17 08:56:51

單例模式JVM

2022-12-09 09:46:55

插件Lombok
點贊
收藏

51CTO技術棧公眾號

午夜亚洲福利老司机| 韩国女主播成人在线| 精品亚洲aⅴ在线观看| 免费男同深夜夜行网站| 欧美成人视屏| 99久久精品一区| 国产精品嫩草影院一区二区| 欧美黄色一区二区三区| 亚洲最大在线| 欧美一区二区三区爱爱| 欧美日韩在线中文| 国产在线1区| 2020国产精品| 97se国产在线视频| 91在线视频免费播放| 综合天堂av久久久久久久| 亚洲欧美成人网| 黄页网站在线看| 秋霞国产精品| 婷婷成人激情在线网| 伊人狠狠色丁香综合尤物| 天堂中文在线看| 国产原创一区二区| 国产精品成人观看视频国产奇米| 欧美日韩精品在线观看视频| 欧美一区2区| 亚洲国产天堂久久综合| 奇米777在线视频| 嫩草伊人久久精品少妇av杨幂| 亚洲成av人片在线| 大陆极品少妇内射aaaaaa| 国产精品麻豆一区二区三区| zzijzzij亚洲日本少妇熟睡| 91视频88av| 91国产免费视频| 久久亚洲国产精品一区二区| 国内免费久久久久久久久久久| 99鲁鲁精品一区二区三区| 精品日韩免费| 亚洲人成在线观看网站高清| 性色av蜜臀av浪潮av老女人| 欧美影院在线| 日韩欧美一区二区不卡| 黄色片免费网址| 欧美男男gaygay1069| 日本精品免费观看高清观看| 丰满少妇被猛烈进入高清播放| 97久久人人超碰caoprom| 亚洲精品国产一区二区三区四区在线 | 欧美成人r级一区二区三区| 8x8x最新地址| julia一区二区三区中文字幕| 色综合久久天天| 人妻精品无码一区二区三区| 国产精品论坛| 欧美日韩激情美女| 国产女大学生av| 三级在线看中文字幕完整版| 精品福利樱桃av导航| 国产高清精品在线观看| 忘忧草在线日韩www影院| 五月天欧美精品| 每日在线更新av| 夜鲁夜鲁夜鲁视频在线播放| 欧美性生活大片免费观看网址| 国产美女无遮挡网站| xxxxx性欧美特大| 日本韩国精品在线| 久久精品一区二| 福利一区二区免费视频| 制服丝袜亚洲精品中文字幕| 97人人模人人爽人人澡| 4438全国亚洲精品观看视频| 亚洲国产成人一区| 久久久久久亚洲中文字幕无码| 国内黄色精品| 九九久久国产精品| 日韩成人在线免费视频| 麻豆久久精品| 国产视频999| wwwxxxx国产| www久久精品| 亚洲午夜激情| 日韩精品卡一| 色综合久久99| 91丨九色丨蝌蚪| 国产欧美三级电影| 尤物九九久久国产精品的特点| 免费看特级毛片| 99精品免费网| 成人黄色在线观看| 少妇一区二区三区四区| 国产日韩精品一区二区三区在线| 在线免费观看成人网| 大黄网站在线观看| 欧美色精品天天在线观看视频| 欧美一级免费在线| 啪啪亚洲精品| 欧美激情久久久久| 中文字幕乱码无码人妻系列蜜桃| 国产精品一区二区你懂的| 久久国产精品一区二区三区四区 | 欧美激情精品久久久久久免费印度| 国产欧美一区二区三区在线看蜜臂| 美女视频黄频大全不卡视频在线播放| 成人午夜电影免费在线观看| 国产玉足榨精视频在线观看| 一区二区理论电影在线观看| 日本久久久久久久久久久久| 国产精品45p| 日韩亚洲精品电影| www.久久久久久久| 国产高清亚洲一区| 亚洲国产精品日韩| 在线日韩影院| 精品久久久久一区| 日韩激情小视频| 日韩激情一二三区| 久久国产精品久久精品国产| 亚洲妇熟xxxx妇色黄| 欧美三级电影在线观看| 狠狠人妻久久久久久综合蜜桃| 中文字幕午夜精品一区二区三区| 日韩av理论片| 天天av综合网| 午夜久久久久久电影| 在线免费黄色小视频| 日韩欧美大片| 国产精品久久久久久久9999| 亚洲 国产 欧美 日韩| 亚洲精品国产视频| 樱花草www在线| 99久久夜色精品国产亚洲96| 国产精品久久在线观看| 美女毛片在线看| 欧美日韩一区二区三区| 精品人妻伦一二三区久| 欧美日韩网址| 99久久精品免费看国产四区| 日韩毛片久久久| 欧美中文字幕久久| 国产精品天天干| 日韩精品1区2区3区| 欧美一区1区三区3区公司 | 国产噜噜噜噜噜久久久久久久久| 精品美女视频在线观看免费软件| 狠狠爱在线视频一区| 日韩精品人妻中文字幕有码| 亚洲欧洲日本一区二区三区| 国产午夜精品在线| 鲁鲁在线中文| 亚洲美女av黄| 国产精华7777777| 国产精品午夜免费| 九九精品久久久| 国产高清一区| 97超级碰碰| 黄色大片在线| 日韩精品免费电影| 免费视频网站在线观看入口| 国产女主播视频一区二区| 国产小视频精品| 亚洲91精品| 超碰97在线人人| 第一福利在线视频| 亚洲欧美一区二区激情| 天天综合久久综合| 最新国产成人在线观看| 成人三级做爰av| 亚洲韩日在线| 欧美日本韩国国产| 日韩成人综合网| 欧美激情精品久久久| 天堂中文资源在线观看| 欧美综合在线视频| 91嫩草丨国产丨精品| 丁香网亚洲国际| 男人天堂999| 91精品国产自产拍在线观看蜜| 99国产在线| www.日韩| 欧美精品日韩三级| 色吊丝在线永久观看最新版本| 欧美专区亚洲专区| 黄色小视频在线免费看| 久久久久国产精品麻豆| 亚洲日本黄色片| av成人黄色| 一区二区三区四区五区视频| 亚洲精品一二三**| 国产成人激情小视频| 麻豆视频免费在线观看| 亚洲激情视频在线| 亚洲综合免费视频| 香蕉成人伊视频在线观看| 久久久久久国产免费a片| 国产精品77777| 国产性生交xxxxx免费| 你懂的视频一区二区| 麻豆亚洲一区| 中文字幕日韩在线| 国产美女直播视频一区| 国模精品视频| 久热精品在线视频| 欧美一区二区视频| 日韩欧美视频一区| 在线观看黄色国产| 欧美日韩在线第一页| 真实国产乱子伦对白在线| 国产三级精品三级在线专区| 最新日本中文字幕| 美女任你摸久久| 777米奇影视第四色| 欧美激情性爽国产精品17p| 日韩高清在线播放| 久久丝袜视频| 亚洲影影院av| 欧美一区二区三区婷婷| 欧美整片在线观看| 丰满的护士2在线观看高清| 日韩一区二区三区国产| 国产一区二区三区不卡在线| 亚洲国产精品字幕| www.久久久久久| 欧美妇女性影城| 日韩精品在线一区二区三区| 欧美日韩国产精品| 国产一级片视频| 一区二区三区四区不卡在线 | av天堂一区二区| 国产精品99久久久久| av亚洲天堂网| 蜜臀av一区二区三区| 黑人粗进入欧美aaaaa| 国产精品色网| 大陆极品少妇内射aaaaa| 激情另类综合| 日韩 欧美 视频| 狠久久av成人天堂| www.成年人视频| 国内精品久久久久久久97牛牛| 992tv成人免费观看| 99久久婷婷国产综合精品电影√| 亚洲一区二区高清视频| 欧美中文一区二区| 日本午夜精品电影| 成人在线一区| 亚洲视频小说| 天天超碰亚洲| 99精品一级欧美片免费播放| 在线国产一区| 欧美性猛交内射兽交老熟妇| 欧美激情综合色综合啪啪| 免费特级黄色片| 一区二区三区四区五区在线| a在线视频观看| 久久久精品五月天| 男女爽爽爽视频| 蜜桃视频在线一区| 欧美熟妇另类久久久久久多毛| 国产精品系列在线观看| 性感美女一区二区三区| 国产91精品一区二区麻豆网站| 日本性生活一级片| 99r国产精品| 精品无码国产污污污免费网站| 欧美韩日一区二区三区四区| 任我爽在线视频| 夜夜嗨av一区二区三区中文字幕 | 热久久一区二区| 中文国产在线观看| 成人午夜碰碰视频| 天堂久久精品忘忧草| 成人免费在线播放视频| 国产一二三区精品| 欧美日韩免费网站| 影音先锋国产在线| 欧美不卡一区二区三区四区| 完全免费av在线播放| 中国特级黄色大片| 久久久久久亚洲综合影院红桃| 国产精品一区二区亚洲| 亚洲精品国产无天堂网2021| 午夜毛片在线观看| 欧美欧美欧美欧美首页| 日本激情一区二区三区| 在线看福利67194| 青青草原av在线| 国产精品电影网站| 天堂va欧美ⅴa亚洲va一国产| 久久综合精品一区| 亚洲电影在线一区二区三区| 干日本少妇首页| 国产一区91精品张津瑜| 久久精品老司机| 亚洲乱码中文字幕综合| 日韩色图在线观看| 日韩亚洲欧美在线| 瑟瑟在线观看| 久久影视电视剧免费网站| 欧美magnet| av一区二区在线看| 久久国产精品亚洲人一区二区三区| 国产一级做a爰片久久毛片男| 日本伊人午夜精品| 久久精品女同亚洲女同13| 国产精品福利在线播放| 国产婷婷色一区二区在线观看| 日韩一区二区免费在线电影| a天堂中文在线88| 91精品国产高清久久久久久久久| 在线视频成人| 性欧美大战久久久久久久免费观看 | 在线午夜精品自拍| 久久久男人天堂| 国产传媒一区| 一区二区蜜桃| 日本肉体xxxx裸体xxx免费| 91亚洲精品乱码久久久久久蜜桃| 国产91在线播放九色| 色综合久久66| 亚洲欧美日韩综合在线| 欧美极品少妇xxxxx| 国产不卡精品在线| 香蕉久久免费影视| 日韩在线一区二区三区| 亚洲精品视频大全| 亚洲3atv精品一区二区三区| 精品国产亚洲av麻豆| 久久精品人人做人人爽| 国产成人免费精品| 香蕉久久免费影视| 男女视频一区二区| 久久成人激情视频| 91福利在线看| 国产三级视频在线看| 日韩av免费在线看| 亚洲第一论坛sis| 中文字幕日本最新乱码视频| 99re成人精品视频| 国产精品久久久久久久妇| 亚洲激情小视频| 三妻四妾完整版在线观看电视剧 | 色综合一区二区| 天堂在线一二区| 欧美综合在线第二页| 任你弄精品视频免费观看| 免费看黄在线看| av在线这里只有精品| 日韩精品成人在线| 精品视频久久久久久久| 亚洲三级欧美| 日韩精品久久久毛片一区二区| 三级亚洲高清视频| 永久免费av无码网站性色av| 91激情五月电影| 99免在线观看免费视频高清| 国产精品视频永久免费播放| 日本精品黄色| 一级做a爱视频| 午夜久久久影院| 国产福利免费在线观看| 国产欧美日韩高清| 午夜久久tv| 男人网站在线观看| 一本大道久久精品懂色aⅴ| 成人18在线| 亚洲在线视频福利| 日韩午夜激情| 337人体粉嫩噜噜噜| 91精品黄色片免费大全| 成人福利影视| 欧美一区二区影视| 精品一区二区三区在线视频| 欧美日韩人妻精品一区二区三区| 亚洲国产私拍精品国模在线观看| 桃花岛成人影院| 日本丰满大乳奶| 99精品国产视频| 中文字幕日日夜夜| 久久久久国产视频| 你微笑时很美电视剧整集高清不卡| 最新天堂中文在线| 亚洲第一狼人社区| eeuss影院在线播放| 国产v亚洲v天堂无码| 丝袜美腿亚洲一区| 欧美日韩一级大片| 亚洲国产97在线精品一区| 国产精品美女午夜爽爽| 日韩日韩日韩日韩日韩| 国产精品美女久久久久久久久久久 | 精品无码m3u8在线观看| 亚洲丝袜一区在线| 国模大尺度视频一区二区| 国产成人a亚洲精v品无码| 亚洲精品国产无天堂网2021| 国产原创av在线| 国内精品久久国产| 精品中文av资源站在线观看|