Linux內核時鐘系統和定時器實現

一口Linux 2021-08-18 11:50

1. Linux內核時鐘系統和定時器實現

Linux 2.6.16之前,內核只支持低精度時鐘,內核定時器的工作方式:

  • 系統啟動后,會讀取時鐘源設備(RTC, HPET,PIT…),初始化當前系統時間;

  • 內核會根據HZ(系統定時器頻率,節拍率)參數值,設置時鐘事件設備,啟動tick(節拍)中斷。HZ表示1秒種產生多少個時鐘硬件中斷,tick就表示連續兩個中斷的間隔時間。在我電腦上,HZ=250, 一個tick = 1/HZ, 所以默認一個tick為4ms。

cat /boot/config-`uname -r` | grep 'CONFIG_HZ='
CONFIG_HZ=250
  • 設置時鐘事件設備后,時鐘事件設備會定時產生一個tick中斷,觸發時鐘中斷處理函數,更新系統時鐘,并檢測timer wheel,進行超時事件的處理。

在上面工作方式下,Linux 2.6.16 之前,內核軟件定時器采用timer wheel多級時間輪的實現機制,維護操作系統的所有定時事件。timer wheel的觸發是基于系統tick周期性中斷。

所以說這之前,linux只能支持ms級別的時鐘,隨著時鐘源硬件設備的精度提高和軟件高精度計時的需求,有了高精度時鐘的內核設計。

Linux 2.6.16 ,內核支持了高精度的時鐘,內核采用新的定時器hrtimer,其實現邏輯和Linux 2.6.16 之前定時器邏輯區別:

  • hrtimer采用紅黑樹進行高精度定時器的管理,而不是時間輪;

  • 高精度時鐘定時器不在依賴系統的tick中斷,而是基于事件觸發。

舊內核的定時器實現依賴于系統定時器硬件定期的tick,基于該tick,內核會掃描timer wheel處理超時事件,會更新jiffies,wall time(墻上時間,現實時間),process的使用時間等等工作。

新的內核不再會直接支持周期性的tick,新內核定時器框架采用了基于事件觸發,而不是以前的周期性觸發。新內核實現了hrtimer(high resolution timer),hrtimer的設計目的,就是為了解決time wheel的缺點:

  • 低精度;timer wheel只能支持ms級別的精度,hrtimer可以支持ns級別;

  • Timer wheel與內核其他模塊的高耦合性;

新內核的hrtimer的觸發和設置不像之前在定期的tick中斷中進行,而是動態調整的,即基于事件觸發,hrtimer的工作原理:通過將高精度時鐘硬件的下次中斷觸發時間設置為紅黑樹中最早到期的 Timer 的時間,時鐘到期后從紅黑樹中得到下一個 Timer 的到期時間,并設置硬件,如此循環反復。

在高精度時鐘模式下,操作系統內核仍然需要周期性的tick中斷,以便刷新內核的一些任務。前面可以知道,hrtimer是基于事件的,不會周期性出發tick中斷,所以為了實現周期性的tick中斷(dynamic tick):系統創建了一個模擬 tick 時鐘的特殊 hrtimer,將其超時時間設置為一個tick時長,在超時回來后,完成對應的工作,然后再次設置下一個tick的超時時間,以此達到周期性tick中斷的需求。

引入了dynamic tick,是為了能夠在使用高精度時鐘的同時節約能源,,這樣會產生tickless 情況下,會跳過一些 tick。這里只是簡單介紹,有興趣可以讀kernel源碼。


上圖1是Linux 2.6.16以來內核定時器實現的結構,

新內核對相關的時間硬件設備進行了統一的封裝,定義了主要有下面兩個結構:

  • 時鐘源設備(closk source device):抽象那些能夠提供計時功能的系統硬件,比如 RTC(Real Time Clock)、TSC(Time Stamp Counter),HPET,ACPI PM-Timer,PIT等。不同時鐘源提供的精度不一樣,現在pc大都是支持高精度模式(high-resolution mode)也支持低精度模式(low-resolution mode)。

  • 時鐘事件設備(clock event device):系統中可以觸發 one-shot(單次)或者周期性中斷的設備都可以作為時鐘事件設備。

當前內核同時存在新舊timer wheel 和 hrtimer兩套timer的實現,內核啟動后會進行從低精度模式到高精度時鐘模式的切換,hrtimer模擬的tick中斷將驅動傳統的低精度定時器系統(基于時間輪)和內核進程調度。

內核定時器系統增加了hrtimer之后,對于用戶層開放的定時器相關接口基本都是通過hrtimer進行實現的,從內核源碼可以看到:

   
*
These timers are currently used for:
* - itimers
* - POSIX timers
* - nanosleep
* - precise in-kernel timing
*

2. 用戶層定時器API接口

上面介紹完linux內核定時器的實現后,下面簡單說一下,基于內核定時器實現的,對用戶層開放的定時器API:間隔定時器itimer和POSIX定時器。

2.1 常見定時功能的API:sleep系列

在介紹itimer和POSIX定時器之前,我們先看看我們經常遇到過具有定時功能的庫函數API接口:

alarm()
sleep()
usleep()
nanosleep()

alarm:

alarm()函數可以設置一個定時器,在特定時間超時,并產生SIGALRM信號,如果不忽略或不捕捉該信號,該進程會被終止。

#include <unistd.h>
unsigned int alarm(unsigned int seconds);
return0或到期剩余秒數

那么alarm在是如何實現的?Glibc中alarm是基于間隔定時器itimer來實現的(文章后面會說到itimer是基于hrtimer實現的)。如下alarm在庫函數下的實現,alarm調用了setitimer系統調用:

unsigned int 
alarm (seconds)
unsigned int seconds
;
{
...
if (__setitimer (ITIMER_REAL, &new, &old) < 0)
return 0;
...
}
libc_hidden_def (alarm)

sleep:

sleep和alarm的功能類似,不過sleep會讓進程掛起, 在定時器超時內核會產生SIGALRM信號,如果不忽略或不捕捉該信號,該進程會被終止。


那么sleep是如何實現的?Glibc的sleep實現如下:可見其實調用alarm實現的,在alarm的基礎上注冊了SIGALRM信號處理函數,用于在定時器到期時,捕獲到信號,回到睡眠的地方。所以其實可以看出sleep就是對alarm的特化。

unsigned int
__sleep (unsigned int seconds)
{
...
struct sigaction act, oact;
...
//注冊信號回調函數
act.sa_handler = sleep_handler;
act.sa_flags = 0;
act.sa_mask = oset;
if (sigaction (SIGALRM, &act, &oact) < 0)
return seconds;
...
//調用alarm API進行操作
remaining = alarm (seconds);

}
weak_alias (__sleep, sleep)

usleep:

usleep支持精度更高的微妙級別的定時操作,

int usleep (useconds_t useconds)
{
struct timespec ts = { .tv_sec = (long int) (useconds / 1000000),
.tv_nsec = (long int) (useconds % 1000000) * 1000ul };

/* Note the usleep() is a cancellation point. But since we call
nanosleep() which itself is a cancellation point we do not have
to do anything here. */

return __nanosleep (&ts, NULL);
}

Bsd的usleep實現如下:

int usleep (useconds)
useconds_t useconds
;
{
struct timeval delay;

delay.tv_sec = 0;
delay.tv_usec = useconds;

return __select (0, (fd_set *) NULL, (fd_set *) NULL, (fd_set *) NULL,
&delay);
}

nanosleep:

nanosleep()glibc的API是直接調用linux內核的nanosleep,內核的nanosleep采用了hrtimer進行實現。

alarm(), sleep()系列,以及后面的間隔定時器itimer都是基于SIGALRM信號進行觸發的。所以它們是不能同時使用的。

2.2 間隔定時器itimer

間隔定時器的接口如下:

#include <sys/time.h>

int getitimer(int which, struct itimerval *curr_value);
int setitimer(int which, const struct itimerval *new_value,
struct itimerval *old_value)
;
結構定義:
struct itimerval {
struct timeval it_interval; /* next value :間隔時間*/
struct timeval it_value; /* current value:到期時間*/
};
struct timeval {
time_t tv_sec; /* seconds */
s

可以通過調用上面兩個API接口來設置和獲取間隔定時器信息。系統為每個進程提供了3種itimer,每種定時器在不同時間域遞減,當定時器超時,就會向進程發送一個信號,并且重置定時器。3種定時器的類型,如下表所示:


表1 參數which與定時器類型

在Linux 2.6.16 之前,itimer的實現是基于內核定時器timer wheel封裝成的定時器接口。內核封裝的定時器接口是提供給其他內核模塊使用,也是其他定時器的基礎。itimer通過內核定時器的封裝,生成提供給用戶層使用的接口setitimer和getitimer。內核定時器timer wheel提供的內核態調用接口為:可參考

add_timer() 
del_timer()
init_timer()

在Linux 2.6.16 以來,itimer不再采用基于timer wheel的內核定時器進行實現。而是換成了高精度的內核定時器hrtimer進行實現。

如果定時器超時時,進程是處于運行狀態,那么超時的信號會被立刻傳送給該進程,否則信號會被延遲傳送,延遲時間要根據系統的負載情況。所以這里有一個BUG:當系統負載很重的情況下,對于ITIMER_REAL定時器有可能在上一次超時信號傳遞完成前再次超時,這樣就會導致第二次超時的信號丟失。

每個進程中同一種定時器只能使用一次。

該系統調用在POSIX.1-2001中定義了,但在POSIX.1-2008中已被廢棄。所以建議使用POSIX定時器API(timer_gettime, timer_settime)代替。

函數alarm本質上設置的是低精確、非重載的ITIMER_REAL類定時器,它只能精確到秒,并且每次設置只能產生一次定時。函數setitimer 設置的定時器則不同,它們不但可以計時到微妙(理論上),還能自動循環定時。在一個Unix進程中,不能同時使用alarm和ITIMER_REAL類定時器。

下面是測試代碼:

#include <unistd.h>
#include <signal.h>
#include <sys/time.h>

#include <iostream>

void sig_handler(int signo)
{
std::cout<<"recieve sigal: "<<signo<<std::endl;
}

int main()
{
signal(SIGALRM, sig_handler);

struct itimerval timer_set;

//啟動時間(5s后啟動)
timer_set.it_value.tv_sec = 5;
timer_set.it_value.tv_usec = 0;

//間隔定時器間隔:2s
timer_set.it_interval.tv_sec = 2;
timer_set.it_interval.tv_usec = 0;

if(setitimer(ITIMER_REAL, &timer_set, NULL) < 0)
{
std::cout<<"start timer failed..."<<std::endl;
return 0;
}

int temp;
std::cin>>temp;

return 0;
}

2.3 POSIX定時器

POSIX定時器的是為了解決間隔定時器itimer的以下問題:

  • 一個進程同一時刻只能有一個同一種類型(ITIMER_REAL, ITIMER_PROF, ITIMER_VIRT)的itimer。POSIX定時器在一個進程中可以創建任意多個timer。

  • itimer定時器到期后,只能通過信號(SIGALRM,SIGVTALRM,SIGPROF)的方式通知進程,POSIX定時器到期后不僅可以通過信號進行通知,還可以使用自定義信號,還可以通過啟動一個線程來進行通知。

  • itimer支持us級別,POSIX定時器支持ns級別。

POSIX定時器提供的定時器API如下:

int timer_create(clockid_t clock_id, struct sigevent *evp, timer_t *timerid);
int timer_settime(timer_t timerid, int flags, const struct itimerspec *value, struct itimerspect *ovalue)
;
int timer_gettime(timer_t timerid,struct itimerspec *value);
int timer_getoverrun(timer_t timerid);
int timer_delete (timer_t timerid);

其中時間結構itimerspec定義如下:該結構和itimer的itimerval結構用處和含義類似,只是提供了ns級別的精度

struct itimerspec
{

struct timespec it_interval; // 時間間隔
struct timespec it_value; // 首次到期時間
};

struct timespec
{

time_t tv_sec //Seconds.
long tv_nsec //Nanoseconds.
};

it_value表示定時間經過這么長時間到時,當定時器到時候,就會將it_interval的值賦給it_value。如果it_interval等于0,那么表示該定時器不是一個時間間隔定時器,一旦it_value到期后定時器就回到未啟動狀態。

timer_create(clockid_t clock_id, struct sigevent *evp, timer_t *timerid)

創建一個POSIX timer,在創建的時候,需要指出定時器的類型,定時器超時通知機制。創建成功后通過參數返回創建的定時器的ID。

參數clock_id用來指定定時器時鐘的類型,時鐘類型有以下6種:

CLOCK_REALTIME:系統實時時間,即日歷時間;

  • CLOCK_MONOTONIC:從系統啟動開始到現在為止的時間;

  • CLOCK_PROCESS_CPUTIME_ID:本進程啟動到執行到當前代碼,系統CPU花費的時間;

  • CLOCK_THREAD_CPUTIME_ID:本線程啟動到執行到當前代碼,系統CPU花費的時間;

  • CLOCK_REALTIME_HR:CLOCK_REALTIME的細粒度(高精度)版本;

  • CLOCK_MONOTONIC_HR:CLOCK_MONOTONIC的細粒度版本;

struct sigevent設置了定時器到期時的通知方式和處理方式等,結構的定義如下:

struct sigevent
{

int sigev_notify; //設置定時器到期后的行為
int sigev_signo; //設置產生信號的信號碼
union sigval sigev_value; //設置產生信號的值
void (*sigev_notify_function)(union sigval);//定時器到期,從該地址啟動一個線程
pthread_attr_t *sigev_notify_attributes; //創建線程的屬性
}

union sigval
{
int sival_int; //integer value
void *sival_ptr; //pointer value
}

如果sigevent傳入NULL,那么定時器到期會產生默認的信號,對CLOCK_REALTIMER來說,默認信號就是SIGALRM,如果要產生除默認信號之外的其他信號,程序必須將evp->sigev_signo設置為期望的信號碼。

如果幾個定時器產生了同一個信號,處理程序可以用 sigev_value來區分是哪個定時器產生了信號。要實現這種功能,程序必須在為信號安裝處理程序時,使用struct sigaction的成員sa_flags中的標志符SA_SIGINFO。

sigev_notify的值可取以下幾種:

  • SIGEV_NONE:定時器到期后什么都不做,只提供通過timer_gettime和timer_getoverrun查詢超時信息。

  • SIGEV_SIGNAL:定時器到期后,內核會將sigev_signo所指定的信號,傳送給進程,在信號處理程序中,si_value會被設定為sigev_value的值。

  • SIGEV_THREAD:定時器到期后,內核會以sigev_notification_attributes為線程屬性創建一個線程,線程的入口地址為sigev_notify_function,傳入sigev_value作為一個參數。

timer_settime(timer_t timerid, int flags, const struct itimerspec *value, struct itimerspect *ovalue)

創建POSIX定時器后,該定時器并沒有啟動,需要通過timer_settime()接口設置定時器的到期時間和周期觸發時間。

flags字段標識到期時間是一個絕對時間還是一個相對時間。

/* Flag to indicate time is absolute.  */
# define TIMER_ABSTIME 1

如果flags的值為TIMER_ABSTIME,則value的值為一個絕對時間。否則,value為一個相對時間。

timer_getoverrun(timer_t timerid)

取得一個定時器的超限運行次數:有可能一個定時器到期了,而同一定時器上一次到期時產生的信號還處于掛起狀態。在這種情況下,其中的一個信號可能會丟失。這就是定時器超限。程序可以通過調 用timer_getoverrun來確定一個特定的定時器出現這種超限的次數。定時器超限只能發生在同一個定時器產生的信號上。由多個定時器,甚至是那 些使用相同的時鐘和信號的定時器,所產生的信號都會排隊而不會丟失。

執行成功時,timer_getoverrun()會返回定時器初次到期與通知進程(例如通過信號)定時器已到期之間額外發生的定時器到期次數。舉例來說,在我們之前的例子中,一個1ms的定時器運行了10ms,則此調用會返回9。如果超限運行的次數等于或大于DELAYTIMER_MAX,則此調用會返回DELAYTIMER_MAX。

執行失敗時,此函數會返回-1并將errno設定會EINVAL,這個唯一的錯誤情況代表timerid指定了無效的定時器。

timer_delete (timer_t timerid)

刪除一個定時器:一次成功的timer_delete()調用會銷毀關聯到timerid的定時器并且返回0。執行失敗時,此調用會返回-1并將errno設定會 EINVAL,這個唯一的錯誤情況代表timerid不是一個有效的定時器。

POSIX定時器通過調用內核的posix_timer進行實現,但glibc對POSIX timer進行了一定的封裝,例如如果POSIX timer到期通知方式被設置為 SIGEV_THREAD 時,glibc 需要自己完成一些輔助工作,因為內核無法在 Timer 到期時啟動一個新的線程。

int
timer_create (clock_id, evp, timerid)
clockid_t clock_id
;
struct sigevent *evp;
timer_t *timerid;
{
if (evp == NULL || __builtin_expect (evp->sigev_notify != SIGEV_THREAD, 1))
{
...
}
else
{
...
/* Create the helper thread. */
pthread_once (&__helper_once, __start_helper_thread);
...
}
...
}

可以看到 GLibc 發現用戶需要啟動新線程通知時,會自動調用 pthread_once 啟動一個輔助線程(__start_helper_thread),用 sigev_notify_attributes 中指定的屬性設置該輔助線程。

然后 glibc 啟動一個普通的 POSIX Timer,將其通知方式設置為:SIGEV_SIGNAL | SIGEV_THREAD_ID。這樣就可以保證內核在 timer 到期時通知輔助線程。通知的 Signal 號為 SIGTIMER,并且攜帶一個包含了到期函數指針的數據。這樣,當該輔助 Timer 到期時,內核會通過 SIGTIMER 通知輔助線程,輔助線程可以在信號攜帶的數據中得到用戶設定的到期處理函數指針,利用該指針,輔助線程調用 pthread_create() 創建一個新的線程來調用該處理函數。這樣就實現了 POSIX 的定義。

3. 自定義定時器實現方案

在業務項目中,對于系統提供的定時器API往往很難滿足我們的需求:

itimer在進程中每種timer類型(ITIMER_REAL, ITIMER_PROF, ITIMER_VIRT)只能使用一個,另外一點就是他是基于signal進行超時提醒,不僅和alarm,sleep這些api沖突,而且在業務代碼中signal是個很不可控的機制,盡量都會減少使用。

POSIX定時器在itimer基礎上進行了很大的改進,解決了itimer的不足,可以說POSIX定時器可以滿足了業務很多的需求。

3.1 基于小根堆的定時器實現

小根堆定時器的實現方式,是最常見的一種實現定時器的方式。堆頂時鐘保存最先到期的定時器,基于事件觸發的定時器系統可以根據堆頂定時器到期時間,進行睡眠。基于周期性睡眠的定時器系統,每次只需遍歷堆頂的定時器是否到期,即可。堆頂定時器超時后,繼續調整堆,使其保持為小根堆并同時對堆頂定時器進行超時判斷。

小根堆定時器在插入時的時間復雜度在O(lgn)(n為插入時定時器堆的定時器數量),定時器超時處理時調整堆的復雜度在所有定時器都超時情況下為:O(nlgn)。在一般情況下,小根堆的實現方式可滿足業務的基本需求。

3.2 基于時間輪的定時器實現

定時器的實現方式有兩種:一級時間輪和多級時間輪。

一級時間輪

一級時間輪如下圖所示:一個輪子(數組實現),輪子的每個槽(spoke)后面會掛一個timer列表,表示當命中該spoke時,timer列表的所有定時器全部超時。

如果定時器輪的精度是1ms,那么spoke個數為2^10時,僅僅能夠表示1s,2^20表示17.476min.

如果精度為1s,那么spoke個數為2^10時,能夠表示17min,2^20表示12day.

所有這種一級時間輪的實現方式所帶來的空間復雜度還是不小的。特別是在需要跨度比較長的定時器時。基于此,就出現了多級時間輪,也就是linux2.6.16之前內核所采用的定時器的實現方式。


簡單時間輪還有很多實現方式,此時時間輪的每個spoke的含義不再是時間精度,而是某個hashkey, 例如ACE當中采用的簡單時間輪,輪子的含義:

( 觸發時間 >> 分辨率的位數)&(spoke大小-1)

每個spoke所鏈接的timer列表可以采用很高效的multimap來實現,讓timer的插入時間可以降到O(lgn),到期處理時間最壞為O(nlgn),n為每個spoke中的timer個數。


多級時間輪

多級時間輪的實現方式被比作經典的”水表實現方式”,一級時間輪只有一個進制,多級時間輪采用了不同的進制,最低級的時間輪每個spoke表示基本的時間精度,次級時間輪每個spoke表示的時間精度為最低級時間輪所能表示時間長度,依次類推。例如內核的時間輪采用5級時間輪,每一級時間輪spoke個數從低級到高級分別為:8,6,6,6,6,所能表達的時間長度為:2^6 * 2^6 * 2^6 * 2^6 * 2^8 = 2^32 ticks,在系統tick精度為10ms時,內核時間輪所能表示的時間跨度為42949672.96s,約為497天。

那么多級時間輪如何工作的呢:


  • Insert:

定時器的插入,首先都要根據定時器的超時時間與每級時間輪所能表示的時長進行比較,來覺得插入到那個輪子中,再根據當前輪子已走的索引,計算出待插入定時器在該輪子中應插入的spoke。

#define WHEEL_THRESHOLD_LEVEL_1 (0x01 << 8) 
#define WHEEL_THRESHOLD_LEVEL_2 (0x01 << (8 + 6))
#define WHEEL_THRESHOLD_LEVEL_3 (0x01 << (8 + 2 * 6))
#define WHEEL_THRESHOLD_LEVEL_4 (0x01 << (8 + 3 * 6))
#define WHEEL_THRESHOLD_LEVEL_5 (0x01 << (8 + 4 * 6))
  • Schedule:

多級時間輪定時器觸發機制為周期性tick出發,每個tick到來,最低級的tv1的spoke index都會+1,如果該spoke中有timer,那么就處理該timer list中的所有超時timer。

  • Cascade:

Cascade可以翻譯成降級處理。每個tick到來,都只會去檢測最低級的tv1的時間輪,因為多級時間輪的設計決定了最低級的時間輪永遠保存這最近要超時的定時器。

多級時間輪最重要的一個處理流程就是cascade,當每一級(除了最高級)時間輪走到超出該級時間輪的范圍時,就會觸發上一級時間輪所在spoke+1的cascade過程,如果上一級時間輪也走出來時間輪的范圍,也同樣會觸發cascade過程,這是一個遞歸過程。

在cascade過程中存在一種極限情況,所有的時間輪都會進行cascade處理,這個時候tv2, tv3, tv4, tv5的hlsit_head[0]都會發送變動,這個過程在定時數量比較大的情況下,會是一個比較耗時的處理流程。

------------ END ------------
關注,回復【1024】海量Linux資料贈送
 精彩文章合集
linux入門
C語言
Linux驅動
ARM
計算機網絡
粉絲問答
所有原創
一口Linux 寫點代碼,寫點人生!
評論
  • 做藍牙音箱的工程師大概都碰過這個局面。產品要連手機放歌,要本地播開機提示音和按鍵音,還要接 App 做配網和狀態上報。三件事拆開,早先的常規做法是音頻藍牙一顆料、數傳藍牙一顆料、本地播放再掛一顆小 MCU 加一片 Flash。板子越畫越大,BOM 越算越貴,待機電流和固件工作量也跟著漲。WT2605C 出來以后,這套需求可以集成到一顆芯片,就是 WT2605C-32N,該芯片采用QFN32 封裝,4×4 毫米,把音頻藍牙、BLE 數傳和 MP3 本地播放三樣全包了。對藍牙音箱來說,最實在的好處就
    唯創知音語音芯片 2026-08-06 15:14 293瀏覽
  • 文:杜杰編輯:侯煜當地時間7月28日,美國特朗普政府落地最新科技封鎖政策,美國聯邦通信委員會(FCC)正式更新《受管制清單》,新增兩大類設備——境外生產的先進機器人設備、境外生產的聯網電力逆變器。FCC在官方情況說明書中明確,該類境外制造產品,“會對美國國家安全或美國民眾的人身安全構成無法承受的風險”。本次新規設置明確豁免機制:經美國國防部(DoW)、電力逆變器品類經美國國土安全部(DHS)審核并授予“有條件批準”,認定對應設備品類不存在重大安全風險,即可獲得準入豁免。同時政策嚴格執行新老劃斷原
    華爾街科技眼 2026-08-03 21:28 331瀏覽
  • 智能寵物用品這幾年快速普及,自動清理幾乎成了智能貓砂盆的標配。貓咪用完離場,設備自動翻轉清理,養寵家庭省去了每天彎腰清理的麻煩。但自動清理的第一步,是先準確判斷貓到底在不在盆里。這個看似簡單的問題,在小空間里并不容易做好。近場檢測的痛點:距離太遠反而誤事貓砂盆內部空間有限。如果傳感器的檢測距離設得偏大,盆外路過的貓、人甚至物品都會被誤判為貓在盆內,結果該清理時不清理、不該清理時亂清理,體驗直接崩壞。這類產品的核心訴求其實就一句話:近距離、小范圍、精準識別,不能有半點誤判。常規感應方案常因檢測距離
    唯創知音語音芯片 2026-07-31 16:51 313瀏覽
  • 產品使用18V供電,配套4串鋰離子電池,需要設計一個充電器。因為輸入18V,電池最高 16.8V,壓差僅 1.2V。因為壓差太小。使用開關型的充電控制芯片不穩定。嘗試自行設計一個。整體采用分立三極管 + TL431架構,分4個功能單元:使能控制回路、限流環路、TL431 精密恒壓反饋環路、PNP 功率管主功率輸出回路;實現完整鋰電池充電邏輯。使能控制回路按鍵按下:5V 電壓經 R12 (2kΩ) 送入 NPN 管 Q3 基極,Q3 飽和導通,對地拉低 R1、R2 組成的分壓控制節點電位;該節點直
    southcreek 2026-08-07 13:45 345瀏覽
  • 摘要防爆自控系統同時布設本安信號、工業總線、動力供電三類線路,僅依靠標識標牌管控插接極易出現人為錯插問題,高壓動力回路竄入本安弱電回路會突破安全柵限能標準,產生點火風險。依托 A、D、K 標準化機械防呆編碼體系,搭配護套顏色區分管理,適配 3 針 3 孔免焊接冷壓增安型防爆航插、5PIN 總線防爆航空插頭、8 芯焊接防爆法蘭插座的選型使用,從物理結構層面杜絕防爆接近開關連接器、防爆傳感器航插接頭混用插接問題,補齊防爆系統被動安全防護體系。關鍵詞圓形防爆連接器,防呆編碼防爆航插,防爆航空插頭,防爆
    kyfbest科迎法電氣 2026-07-31 18:29 414瀏覽
  • 在前六期中,我們已經分別討論了 CRA 的適用范圍、整體影響、漏洞通報義務、風險評估與技術文檔證據鏈、第三方組件與 SBOM 供應鏈治理,以及產品上市后的支持期、安全更新、用戶說明和終止支持管理。到這里,企業已經能夠回答幾個核心問題:產品是否落入 CRA 適用范圍,產品由哪些組件構成,企業如何證明自己在設計、開發和上市前采取了必要的安全措施,以及產品上市后如何持續維護和安全下線。但對于真正準備落地 CRA 合規的企業來說,還有一個更現實的問題:CRA 的法規條文相對原則化,企業應當如何把“網絡安
    虹科云科技 2026-08-03 16:51 168970瀏覽
  •                                                                        
    廣州鐵金剛 2026-08-06 17:44 119927瀏覽
  • 導語在現代高速數字電路設計中,信號的完整性已不僅是理想波形推演,而是一場與物理非理想特性正面博弈的工程實踐。濾波器芯片作為凈化傳輸鏈路的關鍵屏障,其核心挑戰在于:能否有效識別并濾除那些隱匿在電平跳變過程中的亞納秒級瞬態脈沖干擾,這類干擾持續極短,卻足以在高速鏈路中引發誤觸發。然而,傳統函數發生器受限于采樣率與邊沿速率,根本無法忠實復現如此狹窄且陡峭的異常波形。針對此困境,德思特TS-AWG7000系列任意波形發生器以17 GS/s采樣率與50 ps原生邊沿速度,為瞬態脈沖提供精細刻畫,配合SPG
    德思特測試測量 2026-08-05 14:06 5瀏覽
  • 在物聯網從“萬物互聯”邁向“萬物智聯”的進程中,LTE Cat.1憑借其在速率、成本與網絡覆蓋之間的完美平衡,正成為中低速物聯網市場的絕對主力。隨著2G/3G網絡的逐步退網以及新國標對終端設備智能化、定位功能的強制要求,Cat.1模組迎來了爆發式的增長窗口。在這一關鍵節點,基于華為海思Hi2131芯片設計的LTE Cat.1模組,憑借其在能效、射頻、架構及物理規格上的底層創新,成功打破了“高性能必高功耗”的傳統魔咒,為行業提供了極具競爭力的連接最優解。核心技術優勢:重塑Cat.1能效與連接標桿海
    用戶1778981989717 2026-08-05 21:04 177瀏覽
  • 摘要在防爆電氣設計中,只參照芯數選型而忽略額定載流量,長期滿負荷運行會出現插頭發熱、接觸面氧化、IP67 密封受熱老化等問題。結合常用 3 針 3 孔、4 芯、5PIN、8PIN 圓形防爆連接器,制作分級電流參數對照表,區分冷壓免焊接、焊接兩種接線結構的安全載流數值,設置合理電流冗余系數,搭配使用環境修正參數,規范防爆接近開關連接器、防爆法蘭插座的選型計算方式。關鍵詞圓形防爆連接器,載流參數表,防爆法蘭插座,防爆端子接頭,IP67 防爆防水接插件1 產品概述圓形防爆連接器觸點載流能力由插針直徑、
    kyfbest科迎法電氣 2026-08-03 09:18 128645瀏覽
  • 在芯片總成本中占比不到 1%,卻可能因一處品質偏差導致整片晶圓報廢——半導體切割/研磨膠帶,正隨著先進封裝的爆發,成為封測產線選型中最謹慎對待的耗材之一。但鮮有人注意到,決定這層膠帶性能上限的,是上游一層更薄的基膜。這個長期由日本企業主導的隱形環節,正在出現國產突圍的信號。一、需求之變:先進封裝與“韜定律”重塑膠帶市場AI 算力芯片、HBM 高帶寬存儲、Chiplet 芯粒等先進封裝產品持續放量,國內封測產線擴產節奏不減。作為晶圓減薄與切割工序的必需耗材,晶圓膠帶的需求同步擴容。據 QYRese
    芯膜前沿 2026-07-31 16:35 381瀏覽
  •        很多人只見過封裝在SMD外殼里的小尺寸晶振,卻不知道一顆2016、1612甚至1210封裝的微型石英晶振,從一塊巴掌大的石英原礦,到最終能穩定起振的成品,要經過十幾道精密工序。它內部的石英晶片厚度最薄不到20微米,比普通A4紙的1/5還薄,整個生產過程里哪怕0.1微米的誤差,都會直接廢掉整批產品,這也是小尺寸晶振過去長期依賴進口,國內廠商花了十幾年才啃下量產硬骨頭的核心原因。1. 原石定向切割:0.01度的角度誤差都不能有小尺寸晶振的第一步,
    TKD泰晶科技 2026-08-07 08:43 387瀏覽
  •     長期專注WiFi領域,也算是行業老兵了!同行閑聊中,時不時能提起我和我們!從疫情起,國產替代風生水起,起起落落,大浪淘沙,生存下來的都是強者!    WiFi模塊應用廣泛,對于高端市場和特定市場,要求WIFI模塊需要過CE/FCC之類的認證,也就是說沒有認證的模塊,不具備導入產品設計.接下來就和大家聊聊認證模塊選型參考!    WIFi模塊硬件方面主要考慮以下九點特性:    1
    納拓科技 2026-07-31 17:56 269瀏覽
  • ?摘要:低價大流量卡正全面退市,政策收緊已成定局。面對傳統號卡的不確定性,隨身WiFi憑借穩定連接、多設備共享、獨立設備和靈活套餐等優勢,成為務實可靠的備選方案。1、流量卡黃金時代要結束了通信行業正迎來一場前所未有的“地震式”調整——曾讓無數用戶追捧的低價大流量卡,正在全速退出各大平臺。這早已不是一次普通的競合,而是一場趨勢性的行業洗牌。回望過去,19元200G的神卡,那時真是“睡著都能笑醒”,便宜到不敢相信,爽到忍不住炫耀。那些日子,好像隨便刷、隨便看,流量自由觸手可及。可如今,回頭再看,那種
    愛上電路設計 2026-08-03 10:21 128885瀏覽
  • 在EMC測試過程中,傳導發射(Conducted Emission,CE)超標是工程師最常遇到的問題之一。更令人頭疼的是,同樣的超標曲線背后,可能對應著完全不同的干擾機理:有的是差模噪聲沿電源回路傳播,有的是共模電流通過寄生路徑耦合,還有些問題甚至并非來自電源本身,而是負載、電纜布局或接地結構引起的連鎖反應。 · 150kHz~1MHz 超標:多為差模噪聲為主,干擾沿火線-零線回路傳輸。 · 1MHz~30MHz 超標:通常共模噪聲占主導,干擾通過火線/零線對地回路傳播。 如果條件允許,用電流探
    譽磁電磁兼容EMC 2026-07-31 18:45 509瀏覽
我要評論
0
點擊右上角,分享到朋友圈 我知道啦
請使用瀏覽器分享功能 我知道啦
主站蜘蛛池模板: 斗罗大陆免费完整观看209| 特殊精油按摩3| 兄弟战争4| 《老泥妹》电影| 炎陵县| 金瓶酶2| 王多鱼打扑克视频在线观看 | 山西电视台少儿频道| 满江红电视剧免费观看| 黑白配在线观看完整版免费高清一百| 免费看TVB片| 喜羊羊与灰太狼之决战四时代| 韩国电影朋友在线观看完整版| 不戴胸罩叫邻居修灯泡| 许我耀眼32集全部免费| 画皮2 bt| 维修工艳遇日剧| 钻石王老五的艰难爱情全集| 印度电影爱的火山| omoflow第一季全集在线播放| 驾驶员找工作| 影音先锋色播| 八佰免费播放完整版| 神话优酷| 一起嗟嗟嗟30分钟电视剧| 全村女人村长随便曰| 老男人 电影| 《种马3》电影免费观看| 虎兄虎弟电影| 京香在线| 宫电影版| 漂亮小瘦子7电视剧免费观看| 新妈妈再爱我一次电影| 百里夜刀电视剧| 新金银悔6-10集的播出时间和角色| 画皮2ol| 你是迟来的欢喜全集免费观看| 电影《需要爸爸播种子》HD中字在线观看,高清完整版美国倫理片_屠夫电影网 | 最新恐怖电影2025在线观看| 牙医郝板栗1986原版叫什么| 《泡我家的辣妹》动漫观看第一集| 为爱所困电视剧| 女友的妈妈韩字的id是谁| 胜女的代价 第2季| 血滴子电影| 进击的巨人佩妹| 善良的嫂子理论片| 坎贝尔《无憾》播放| 私人瑜伽教练电影| 绍兴市| 电视剧解放下载| 我的三个母亲全集| 妻子6免费完整高清电视剧看5| 美丽的小蜜桃9| 胡乱的深见君电视剧| 邻家女人丈夫不在的日子| 魔屋2009| ⅩL司令真人| 肖战杨紫在线观看免费| 青蛇电影| 《刘墉铡许翠萍》全场戏第五段| 水手服饲养1小时42分原版视频| 魔鬼情人| 增城地图| 水润女人电视剧在线播放免费| 左右不逢源第二季| 终极审判第二季| 欲乱情迷电影| 侄女的开发日记第三季在线观看| 进击的巨人第三季part 2| 与父同行泰剧| 新有莱在线| 火山要努力鸭| 电影《法国空姐2》| 战狼6双人版免费观看正版影视大全| 《下女》| 春草电视剧全集免费观看| 诱人的秘书在线观看| 太极拳战泰拳| 偷香高手| 法国超人麦乐迪在线观看| 孙红雷一代枭雄电视剧| 清远市| 三年中文在线观看免费观看第三集| 无人观看完整电视剧在线观看| 三年大片免费观看完整版高清第三集 | 新建文件夹2线观看| 丫鬟侯府主母:逆袭成功短剧全集| 《特殊的治疗》中字| 超能失控2| 轻蔑电影| 西西里的美丽传说下载| \私人女人监狱免费看| 木子檀子电影免费观看 | 男生女生一起愁愁愁愁愁电视剧在线观看| 盲山完整版| 美国荷尔蒙2高清免费看| 步步惊心 韩国| 少年包青天3之天芒传奇免费观看| 斑马电影街桥矿| 警车动画片全集免费观看 | 又见一帘幽梦吻戏| 苗圃和李亚鹏| 爱丫爱丫免费观看高清版短剧| 美食的俘虏中文| 电梯小姐电影在线观看| 高清致命录像带:万圣节未删减| 画皮2011| 风流才子纪晓岚插曲| 那小子真酷| 龙兴龘龘怎么读| 潜龙道全集免费观看| 马上天下| 金庸武侠世界免费观看| 王朝的女人·杨贵妃完整版| 大唐诡事录第二季| 东台市| 熊出没系列全集| 浴血荣光免费观看全集| 《孔雀舞曲》| 七龙珠z剧场版| 特殊美容院2| 龙卷风优化| 韩国伦理电影维修工的绝对艳遇| 离婚前规则主题曲叫什么| 他是谁电视剧免费观看全集| 我喜欢你 电视剧| 铯妮玛亚洲欧洲夫妻轮换| 我在北京挺好的剧情| 六国紧急开会向朝鲜施压| 侄女的开发日记第三季在线观看| 十项舞蹈全集观看| 渔夫妻子意大利| 姐妹反目全集免费| 女超人麦乐迪无删减在线观看 | 《家弑服务》| 权宠电视剧免费观看全集高清| 说唱梦工厂2024在线观看| 罪行法则韩剧免费播放| 奥特曼国语全集| 《不当行为4》| 胡歌版鹿鼎记| 高清《黑暗面》| 《美景之屋6》_完整在线观看免费观看 | 四大名妓| 日本差旅电影| 《世外》| 向阳而生电视剧免费观看| 卿本佳人 迅雷下载| 丰满的继牳伦理8伦理| 地下交通站第一部28集下载| 女版战狼六三人| 特种兵之利刃出鞘全集| 黑暗荣耀第二季第五集30分25秒| 爱你几何电影在线观看完整免费高清原声| 阿健要努力活着| 插曲的痛30集全免费观看大结局| 仙逆年番第二部| 人类我们的故事全集| 罗丽星克莱尔魔术师| 猪坚强已瘦骨嶙峋| 笑林小子3| 红蜘蛛第二部| 一夜新娘第三季高清免费观看| 危险的她| 哈利波特与混血王子在线观看 | 京城绯闻电视剧| 法国版《女超人:麦乐迪》| 最后的生还者在线观看| 王府深宅:后宅我做主短剧全集| 清洁工是隐藏首富短剧全集| 赘婿29| 杀破狼2免费完整版| 高清《诱人的女教师2》在线播放| 哈哈哈哈哈第三季免费观看| 血恋在线播放未删减完整版| 下家三千金| 安姨在线| 米小圈上学记电视剧| 国产在线观看免费版电视剧| 人民万岁电影| 电影《金悔瓶》徐少强叫什么名字就| 美人制造在线观看免费完整版| 特殊客房1983经典版本介绍| 时尚王国| 中华英雄电影免费国语在线观看| 小泽彻主演的《老板老板的要求》电影播放 | 今生最爱| 《插曲30分钟在线观看》| 情义英雄武二郎| 无间道3电影| 西班牙掌中之物完整版在线 | 美国矿桥第20集体检视频| 倾城雪全集在线观看| 肉蒲团电影下载| 插曲30分钟高清全集| 孤独剑客| 爱在战火纷飞时| 刘宝瑞 官场斗| 呼和浩特市| 新金瓶梅龚玥菲版| 需要爸爸的种子免费观看| 小偷家族电影观看完整版| 妈妈爱上儿子| 太极拳战泰拳| 金丝雀失忆后| 次板栗电影千金大小姐| 孤身在线观看高清完整版免费| 圣特罗佩姑娘们1982电影在线观看| 《釜山行》| 特邀送货员在线播放| 动感之星小玲| 衰仔失乐园完整版| 新金银屏1—5美国普通话| 名侦探柯南 动漫| 年轻母亲3:我年纪如何| 三生三世十里桃花在线观看| 爱情公寓45| 秘密花园电影在线观看| 商务旅行戴绿色帽子电影| 平凡的世界电影| 一场风花雪月的事下载| 《法国护士长》在线| 恶魔的崛起| 逆风而行电视剧全集免费版| 法国空乘4免费高清原声满天星美版百度 | 赛尔号第二季全集| 战狼6欧美版免费观看完整版国语在 | 公公之浮手中字5HD| 高清葬送的芙莉莲 第二季未删减| 韩国电影 爱人 下载| 《被可怕的科长欺负的新人| 珠光璀璨泰剧在线观看| 东方侠客免费观看全集| 震惊全国十大冤假错案| 布兰迪v酒店2季免费观看| 沙漏全集| 神箭电视剧全集| 北越暴行3在线观看| 长歌行免费观看完整版| 明日战记在线观看免费完整版| 我和继夫做了爱一次有事吗| 俄罗斯空姐4| 美国加州爆发大规模街头斗殴| 精灵幻想| 最强狂兵电视剧| 人犬兽人完整版| 铿锵在线观看完整版 | 砍贝奇品味人生| 暖暖国语版高清在线观看| 男生和女生拔萝卜| 黑白配1080p高清完整版| 一千种死法第五季| 第一次爱的人免费观看韩剧| 樱桃免费版在线观看电视剧大全| 麦乐迪女超人的屈辱在线观看| 亚欧精品在线| 上错花轿嫁对郎在线观看| 女武士满天星| 高清《刘三姐》电视剧| 唐探1900免费观看电影完整版| 箱中女在线观看| 伊波拉病毒未删减版在哪| 恶作剧之吻2第一集| 新凯莱最新消息| 美国禁忌7年转一代| 随唐英雄第四部| 坎贝奇电影高清免费看| 台版缉魂2小时10分版网飞版| 赤警威龙国语| 赫板栗电影在线观看| 金手指电影国语在线观看免费高清 | 峨眉山市| 需要爸爸的种子伦理在线播放 | supergirl麦乐迪完整版| 私人瑜伽教练电影| 需要爸爸播种2在线播放免费| 高清《如月车站Re:》电影| 美国禁忌睫毛膏4完整版她说视频 女超人麦乐迪在线播放完整版电影 | 狂野的爱| 《爱我几何》电影免费| 三维动漫| 百度蹊径| 琉璃电视剧全集1-59集| 少女免费高清在线观看| 刀郎演唱会| 中国好声音 张磊| 骡子和金子 电视剧| 三级片《越南性的暴行| 旋转的爱全集| 明珠奇谭| 男生女生一起愁愁愁全部电视剧观看| 去有风的地方电视剧观看| 爱在空气中泰剧特别篇| 光绪皇帝电视剧| 郑铮鲁能| 原千岁免费观看完整版| 法国禁忌7中文版| 锦月如歌在线观看电视剧高清| 法国空姐第4| 电影情劫| 美女杀羊| 向往的生活第六季免费看| 刀郎新歌翩翩| 法国特殊理发店| 甜蜜蜜在线观看| 只要为你活一天电影| 《激战丛林》完整版| 待到重逢时泰剧| 法国空姐免费高清原声高烧可以吃雪糕吗| 年轻的母亲4先韩剧| 甜蜜第二季无马赛免费观看| 雪烟追逐电视剧| 隔壁的女孩2| 阿诺拉在线观看| 好妈妈1| 瓜达卢佩的玫瑰完整版| magnet舞蹈| 奥特银河格斗3第一集在线观看| 哪吒二在线观看| 苍老师40电影全集免费观看 | 灰姑娘 2015 电影| 爱我几何电影完整版在线播放高清| 死亡修女电影| 游客夜爬泰山隔空开强光互射对骂| 花子vs倔强驱魔师动漫完整版| 成均馆绯闻10| 女员工的付出中字| 包青天菩萨岭| 任达华 温碧霞 惊变| 乌克兰人怎么看待泽连斯基| 女士的品格电视剧免费| 《我的健身锻炼2》| 我的丑娘剧情介绍| 《美丽妻子替弟还债》剧情| 二泉映月课文朗读| 爱我就别想太多大结局| 五福临门电视连续剧剧情| 不识泰山| 牙医姐妹郝板栗完整版| 纯情房东俏房客| 我和黑大佬的365天| 《法国空乘11| 老版敌营十八年| 日韩吃奶摸下AA片免费观看| 情满四合院完整版全集| 律师禁欲| 赌神1电影| 鬼片电影林正英| 《女教师》在线观看| 紫彩乃无码| 哈利波特h版在线观看| 姐姐的好大| 女子护卫队1973完整版| 《刺激的瑜伽教练3》| 夺取电视剧免费观看全集高清| 别有用心的单身女韩剧免费观看国语| 牙医姊妹1986电影免费观看完整版 | 潜行者黄晓明电视剧免费观看| 天堂资源在线官网| 至尊弃少都市:无人敢惹全集免费 | 杀了我治愈我韩剧| 熊出没之过年动画| 达芬奇小姐的启蒙3 | 傲雷雷神2| 大学生理发店的特殊待遇| 哥哥的老婆电视剧在线观看全集免费| 绣春刀ii:修罗战场| 柳州记电视剧在线观看| 武契奇联大痛斥北约| 魔镜号巴士街头中文字幕在线 | 美姊妹医生在线观看完整版电影 | 韩国电影免费观看高清完整版在线 | 幸福到万家电视剧在线观看21| 萍乡市| 《有夫之妇的秘书》演员表| 简言的夏冬在线观看| 插曲的痛30集全集免费播放| 战神联盟大电影3| 如如影视我的罪恶人生| 战狼6欧美电影免费观看在线播放版| 狙击手电影| 将错就错电影完整版| 《家庭矛盾4》麦乐迪观看| 亲爱的热爱的第二季免费全集观看| 大家族电视剧| 大侦探第8季在线观看免费版高清| 激战丛林未册版在线| 蜂巢电视剧哪个平台播放| 雷神公司副董事坠机身亡| 电视剧潜行狙击| xl司今真人版| 虎胆女儿红电影| 如何剥石榴| 东北往事之黑道风云全集免费观看| 坎贝奇品味人生完整观看 | 听说你喜欢我电视剧| 即刻上场电视剧免费观看| 他来自胡志明市| 名人带路| 年轻的母亲韩国在线| 盒子里的猫| 成全完整版动漫高清免费| 高清《神奇女侠》免费观看| 征服人妻第1-52集资源请求| 一起来看流星雨电视剧| 哇嘎在线观看完整版| 温柔的女教师在线观看电视剧免费| 九歌 电影| 亲爱的姑娘我爱你dj| 法国版《女超人:麦乐迪》免费在线观看| 搞笑一家人3国语版| 宫13集| 刑名师爷演员表| 八丈夫人意大利电影免费观看| 人民的名义29| 洗冤录第一部国语全集| 天祝| 云中玫瑰| 新版西游记白骨精| 台湾921大地震| 扫黑风暴全集免费版| 满天星在线播放完整版| 狙击手在线观看免费完整版电影 | XL司令真人版在线观看| 汪峰春天里| 爱情诊所在线观看| 广州大学城攻略| 电影《牙医姐妹》正片牙医姐妹电影| 索命暹罗之按摩师| flypaper百度影音| 香香公主| 刘智贤《瑜伽教室》| 小时代电影1免费观看| 电影远山的呼唤| 青梅竹马是消防员第一部| 八戒八戒八戒免费看电视剧大全八| 中国刑警之九月风暴电视剧| 法国高压监狱伦理片| 还珠格格第3部全集| 《麦乐迪女超人》完整版在线观看视频| 漠风吟电视剧在线观看完整版免费| 五月槐花香免费播放| xL司令第一季马赛免费观看高清| 原罪免费在线观看| 思春期1~4集动漫无删减| 《需要爸爸播种子》第1集免费在线观看 - 道德 - 短剧在线网 | 《学生的妈妈2》中字头歌词| 高压监狱2大佬喜欢怎罚| 西耶娜 盖尔利| 吴京乘风电影免费观看| 《家庭矛盾》麦乐迪免费观看下载| 天使衣橱| 白夜追凶21| 杨思梅金瓶敏第1一5集百度云| 愉悦与苦恼在线观看| 《激战丛林》-罗莎·卡拉乔洛在线| 无人在线观看高清完整免费完整版| 巡回检查组在线| 马与人电影在线观看免费播放| 《卖房子的女销售》完整版| 恋爱暴君下载| 《氪金玩家》樱花动漫| 人世界电视剧免费观看全集完整版| 侏罗纪世界重生| 爱我几何电影在线观看免费| 超级战舰 百度影音| 戏台电影陈佩斯抢先版免费看| 被可怕的科长欺负| 国庆60年阅兵| 坛蜜作品| 罗马的房子主题曲| 成吉思汗电视剧音乐| 双女任务电影免费观看| 斗罗大陆51集| 《分娩按摩》2| 大山猫的个人空间| 穿越火线秒杀| 卢旺达的玫瑰完整版在线观看 | 雄兵连2诸天降临免费观看完整版| 三年成全免费高清观看资源| 邓超羽泉| 理想之城在线观看免费完整版| 韩剧爱的阶梯国语版| 三个少妇按摩| 闪耀的她电视剧免费观看全集| 地味变2未增删樱花米粒米粒 | 太九在线观看免费版电视剧 | 别墅轮换4攻略免费观看电视剧| 高清《学校风云》| 棋魂2第二部在线观看| 《过分野》短剧全集| 特殊美容室待遇.6| 政宗君的复仇 动漫| 黑袍纠察队4| 雯雅婷2| 美容院3:特殊待遇| 天美传奇在线观看免费播放 | 插曲痛30集高清全集下载| 纽约 电影| 暴劫柔情在线观看免费| 大奥电视剧| 《壮志凌云》满天星在线| 免费看办公室秘密全集| 我俩太不公平是什么歌| 《惊变28年》| 《危险动物》| 站着再来一次26集全在线观看 | 心宅猎人电视剧在线观看免费高清| 台中市| 鬼吹灯之天星术免费版| 危机边缘第一季| 绝世红颜短剧全集免费观看| 电影青苹果| 木下凛凛子免费观看平台| 大侦探福尔摩斯2| 花非花雾非雾完整版| 女教师和黑人第一次| 电视剧江城令| 格莱美金曲| 妈妈韩剧大结局| 高清《高嫁柳嫁家》在线看| xl司令动漫第一季全集| 监狱生活电影| 斗罗大陆在线观看免费全集高清| 急速狂飙| 新水浒传28| 交易凯登克罗斯的电影| 快乐星球全集| 《满天星女版西部通缉令》在线观看 | 上海滩英文版| 香港三级片桃色凶器| 发际红第四部| 《哪吒2》高清完整版在线观看| 冲锋电影| 《妈咪快跑爹地》续集| 韩国美容院电影是什么| 私人定制在线观看| 鸭乃桥论的禁忌推理| 一起愁愁30全集免费播放| 厨神全40集电视剧免费观看 | 禁忌5在线观看| 刑警队长| 一胎二宝:妈咪超神短剧全集| 坎贝奇《品味人生》高清全集免费看 | 分手大师| 二对一的商务模式2| 孤身在线观看高清完整版免费| 完美世界动漫在线观看免费播放| 弋阳县| 法国《少女农场》中文版 | 《特殊游泳馆》免费| 云雨影院电视剧全集在线观看 | 电影男与女免费星辰| 详情: JUL-945 在没有丈夫的平日里,我被打工归来的无与伦比的岳父强奸,直到我 | 新继拇| 爱上电视剧| 恶魔的牢笼电影| 几度菊花香电视剧免费观看完整版| 丰满的大胸继拇3| 4名少妇精油按摩1| 公主恋人cg| 记忆传授人| 魔术师1998| 日本电影女大学生去按摩| 斗罗大陆第196集免费观看| 三八线电视剧全集高清| 公民凯恩电影| 某某电视剧在线观看全集免费播放| 哇嘎美国| 新金瓶梅 下载| 保姆妈妈| 妹妹学着点:打脸绿茶短剧全集| 见习修女| 特殊外卖员| 哈法欧尼| 孤男寡女免费观看电视剧战狼4| 破晓之爱国语版| 同学的妈妈中韩双字ID贤宇| over flowe| 小苹果韩国版| 最后一枪百度影音| 希特勒回来了| 《朋友夫妻:交换3》| 女生男生一起愁愁愁视频| 花样年华在线观看| 枭雄电影| 麻豆mdx0020穷小子大翻身| 女超人麦乐迪版| 凯登克里斯版《壮志凌云》 | 三个少妇按摩记在线播放| 赘婿电视剧全集免费播放| 监狱风云之夜囚| 出轨的女人 电影 2011| 酒店实拍1-5集| 《法国空乘5》在线看| 电影甜性涩爱| 韩国电影妈妈的女儿| 洪兴十三妹| 楼上女邻居电视剧全集| 美容院特殊待遇在线| 太平年1-40集免费观看完整版| 大学生4第四季| 余男版《狂怒》高清完整版| 蛛丝马迹| 樱花动漫后宫露营| 激战酒店1—5免费| 高清《豪妇荡乳》无删减版在线观看 | 爱唯侦查DVD| 和尚的一场春梦完整版| 朦胧的欲望在线观看| 野兽电影在线观看| 《修理工的艳遇》观看| 青梅竹马是消防员第一季未增删看| 《愤怒的小鸟》| 天涯歌女邓丽君| 公之浮之手中字22| xl司令第一季全集免费观看动漫| 去同学家拿作业被他弟| 人生之路电视剧全部免费观看| csgo暴躁小老妹视频| 化州市| 布拉格空少G版高清免费看| star467| 孩子走丢妈妈冲上舞台求助| 驱魔公主短剧全集| 金瓶梅全集2| 《日本公与媳5》筱田优| 斗破苍穹年番第四集在线观看| 双枪李向阳| 《理想之城2》全集观看| 维修工人的培训电影| 法国护士长完整版| 偷偷爱你电影| 高清《乞救之噬,覆食殆尽》电视剧| 《宿主》| 风情小鸟电影网| 牙医姐妹在线视频| 云中玫瑰国语版| 公安局长第四部| 女女电影免费观看完整版大结局| 你是我的独家意外电视剧免费观看| 被躁BD水电工在浴室| 用身体偿还给社长的妻子电影在哪里| 坂口美穗乃| 怪侠欧阳德剧情分集介绍 | 《LX司令》第一季动漫免费观看| 修理工的性爱手机在线观看| 恶女花魁快播| 叫兽作品| 年轻的嫂子2免费电影在线观看| 性趣大师| 销冠的秘密2| 好男人手机在线观看免费播放| 神兽金刚2天神地兽| 冕宁火腿| 登山的目的韩国| 秘密女搜查官在线观看前田| 警察与劫匪| 大内密探零零| 品味人生无憾坎贝奇电影在线观看 | 房奴试爱电影电视剧免费观看 | 樱花动漫免费观看完整版| 史丰收速算法下载| 要爸爸播种| 修理工的诱惑| 如果还有明天电视剧| 苍井空百度云视频分享| 《屠宰呕吐娃娃》免费观看| 大熔炉之热血青春电视剧全集免费| 邻居家的姐姐| 韩剧妈妈出轨了结局| 动感之星妖精135集免费观看视频 保险公司推销员8中字手机 | 朝国的继拇4| 斗罗大陆绝世唐门动漫免费观看| 师傅日徒弟的场景| 目中无人2一口气看完| 电影爱你几何在线观看免费 | 正者无敌电视剧| 思思热思思| 警察锅哥播放电视剧一共40集 | 3d豪情字幕文件| 时间都知道电视剧免费观看完整版| 高压监狱2线观看完整免费高清原声| 于成龙 电视剧| 勿谓言之不预也中国用了几次| 全职猎人11| 伸冤人2手机观看免费完整版| 3对1:初次体检4| 《交换3》无删减| 电影黑豹天下| 两个人的世界在哪看| 韩剧想结婚的女人| 蜜桃成熟时李玉珍版| 《XL司令》免费观看| 便衣警互射10枪| 地铁惊魂2009| 《年轻的女仆》韩国电影在线观看 | 新羔羊医生国语免费观看| 窈窕绅士 电影| 少妇与情人苹果园偷欢| 他来自胡志明市| 被闺蜜捆绑震蛋折磨调教 | 高清《大秦帝国》| 蒂法3d在线观看| 战狼9免费高清版西瓜视频| 全职法师第5季全集免费观看樱花| 逆风而行电视剧全集免费版| 叶罗丽精灵梦第八季免费观看 | 韩国电影和老公上司| 绝不放过你| 物质女孩电影| 假面真情短剧免费观看| 保姆妈妈| 高清《民国大侦探》免费观看| 麦乐迪女超人在线观看完整免费高清原声满天星 | 伟哥的故事国语| 柔术满天星电影在线播放| 普京为何此时在盟国领土部署核武| 箭在弦上大结局| 冰封(重生之门)| eeuss| 正在播放:丈夫不在家的5天之间,被命令禁欲直到初夜为止的我身心都被性豪的公 | 疼不疼不疼我继续了| 火线传奇3| 青春猪头少年不会梦到兔女郎| 与部长出差的日子在线观看| 出包王女1| 筷子兄弟小苹果mv| 冷月孤星剑主题曲| 电影美国爸爸要播种| 俄罗斯电影《迷惑》| 恰好是少年在线观看| 给我完整版在线观看| 使徒行者粤语15| 《聊斋之仙根》徐锦江| 19岁大学生真人观看电视剧大全| 《学生》电影完整版在线观看| 舌尖上的中国第6集| 双人调情按摩术hd在线播放视频| 酒醉后爱上你| 江湖情电影| 黑暗森林满天星版法国| 水管修理工HD| 乡村爱情五| 今天的侦探| 电视剧因为遇见你| 韩国电影巜商务旅行戴帽子的主演在| 朱锁锁叶总什么电视剧| 恋夜秀手机视频uc| 艳母在线| 忍不住的继拇中文字幕| 国产在线观看免费全集电视剧网站有 | 木下在线| 电视剧密战| 规章制度的作用| 大耳朵图图之小小欢乐魔法师| 凯登克罗斯在线电影免费观看护士 | 金瓶梅在线观完整版观看视频| 情债电影在线观看| 堕落的律师电影完整版剧情| 乡村爱情4在线观看| 我和我的家乡免费高清完整版| 因法之名免费全集在线观看| 小戏骨白蛇传| 《法国女狱警》完整版| 小时代2片尾曲| 律政俏佳人| 年轻的母亲4费观版| 凯登克罗斯电影在线观看| 情圣囧色夫| 天将雄师西瓜| 中国达人秀街舞卓君| 酒店1-45集全免费观看| 坎贝奇《品味人生》第二部| 电影我有钱了在线观看完整视频| 沈腾马丽小品《寒舍不寒》| 逃跑的女孩完整版| 金银瓶1-5手机版| 来自地狱的法官电视剧| 风云之十里洋场| 美女武士国语| 铜铜钢铿锵锵锵锵锵锵免费观看高清免费观看Afarc| 奇迹蓝罐| 丑闻裴勇俊| 金牌销售的秘密3hd中字| 美人心计第二部| 斗破苍穹58| 熟睡中被义子侵犯观看| 蜘蛛侠1电影国语| 世界上最大的一场暴雨| 法国电影私人航空在线观看 | 二战黑豹电影免费观看高清完整版| 包法利夫人完整版在线观看电影| 电视剧《女人》全集免费观看| 超女麦乐迪在线观看视频全集| 《贪婪:欲望之岛》| 我有时候也想成为a片主人公| 小苹果原版mv| 《Melody女超人》在线播放| 人猿泰山1995意大利哪里能看 | 快乐到死电影完整版百度影音| 郝板栗《千金》免费看| 小妻太水嫩陆教授花式宠免费观看| 我的大胸继拇4| 高压监狱免费视频| 朋友的妻子2| adn-018| 郝板栗《千金》免费观看| 锵锵锵锵观看在线观看电视剧| 四大名捕重出江湖| 古惑仔之少年激斗| 当我飞奔向你完整版免费| 坎贝奇《品味人生》高清全集免费看 | 满天星女超人在线观看| 韩剧电影免费在线播放| 天赋异禀美剧| 首尔之春历史真实事件| 法医追凶印度电影在线观看| 销售的销售秘密6HD中字国| 写真片lcdv观看影院| 电影大突围为啥看不了| 电影《特殊游泳教练》免费观看| 韩国情书复古舞| 老师好在线观看| 巴黎圣母| 私人助理2| 秘密搜查官の大桥未久| 群星闪耀时在线观看| 小米su7发布会直播| 环太平洋国语高清完整版| 周弘版《村姑》免费看| 巜女超人》1979| 漂白免费观看完整版高清| 普法栏目剧听见凉山6| 棋魂国语版| 凯登克罗斯HD版高清播放电影| 杰西简凯登凌云壮志无删减在线观看| 上流春色电视剧免费观看| 巴基斯坦地图中文版| 儿媳忠于本能女主角是谁| 《妈妈爱上儿子同学》| 美味快递中字2015| 魔法 动漫| 电影《意大利夫人》在线观看 | 动漫解说一口气看完| 禁忌少女| 三位大学位按摩记角色分析及角色分| 星汉灿烂电视剧全部剧集| 你的欲梦裸身在线播放| 疯狂初恋电影在线观看免费完整版|