存儲(chǔ)基礎(chǔ) — 文件描述符 fd 究竟是什么?

一口Linux 2021-04-08 00:00


前情概要


通過上篇 Go 存儲(chǔ)基礎(chǔ) — 文件 IO 的姿勢, 我們看到有兩種文件讀寫的方式,一種是系統(tǒng)調(diào)用的方式,操作的對象是一個(gè)整數(shù) fd,另一種是 Go 標(biāo)準(zhǔn)庫自己封裝的標(biāo)準(zhǔn)庫 IO ,操作對象是 Go 封裝的 file 結(jié)構(gòu)體,但其內(nèi)部還是針對整數(shù) fd 的操作。所以一切的本源是通過 fd 來操作的,那么,這個(gè) fd 究竟是什么?就這個(gè)點(diǎn)我們深入剖析。


fd 是什么?


fdFile descriptor 的縮寫,中文名叫做:文件描述符文件描述符是一個(gè)非負(fù)整數(shù),本質(zhì)上是一個(gè)索引值(這句話非常重要)。

什么時(shí)候拿到的 fd

當(dāng)打開一個(gè)文件時(shí),內(nèi)核向進(jìn)程返回一個(gè)文件描述符( open 系統(tǒng)調(diào)用得到 ),后續(xù) readwrite 這個(gè)文件時(shí),則只需要用這個(gè)文件描述符來標(biāo)識(shí)該文件,將其作為參數(shù)傳入 readwrite

fd 的值范圍是什么?

在 POSIX 語義中,0,1,2 這三個(gè) fd 值已經(jīng)被賦予特殊含義,分別是標(biāo)準(zhǔn)輸入( STDIN_FILENO ),標(biāo)準(zhǔn)輸出( STDOUT_FILENO ),標(biāo)準(zhǔn)錯(cuò)誤( STDERR_FILENO )。

文件描述符是有一個(gè)范圍的:0 ~ OPEN_MAX-1 ,最早期的 UNIX 系統(tǒng)中范圍很小,現(xiàn)在的主流系統(tǒng)單就這個(gè)值來說,變化范圍是幾乎不受限制的,只受到系統(tǒng)硬件配置和系統(tǒng)管理員配置的約束。

你可以通過 ulimit 命令查看當(dāng)前系統(tǒng)的配置:

  ulimit -n
4864

如上,我系統(tǒng)上進(jìn)程默認(rèn)最多打開 4864 文件。


窺探 Linux 內(nèi)核


fd 究竟是什么?必須去 Linux 內(nèi)核看一眼。

用戶使用系統(tǒng)調(diào)用 open 或者 creat 來打開或創(chuàng)建一個(gè)文件,用戶態(tài)得到的結(jié)果值就是 fd ,后續(xù)的 IO 操作全都是用 fd 來標(biāo)識(shí)這個(gè)文件,可想而知內(nèi)核做的操作并不簡單,我們接下來就是要揭開這層面紗。


task_struct


首先,我們知道進(jìn)程的抽象是基于 struct task_struct 結(jié)構(gòu)體,這是 Linux 里面最復(fù)雜的結(jié)構(gòu)體之一 ,成員字段非常多,我們今天不需要詳解這個(gè)結(jié)構(gòu)體,我稍微簡化一下,只提取我們今天需要理解的字段如下:

struct task_struct {
    // ...
    /* Open file information: */
    struct files_struct     *files;
    // ...
}

files; 這個(gè)字段就是今天的主角之一files 是一個(gè)指針,指向一個(gè)為 struct files_struct 的結(jié)構(gòu)體。這個(gè)結(jié)構(gòu)體就是用來管理該進(jìn)程打開的所有文件的管理結(jié)構(gòu)。

重點(diǎn)理解一個(gè)概念:

struct task_struct 是進(jìn)程的抽象封裝,標(biāo)識(shí)一個(gè)進(jìn)程,在 Linux 里面的進(jìn)程各種抽象視角,都是這個(gè)結(jié)構(gòu)體給到你的。當(dāng)創(chuàng)建一個(gè)進(jìn)程,其實(shí)也就是 new 一個(gè) struct task_struct 出來;


files_struct


好,上面通過進(jìn)程結(jié)構(gòu)體引出了 struct files_struct 這個(gè)結(jié)構(gòu)體。這個(gè)結(jié)構(gòu)體管理某進(jìn)程打開的所有文件的管理結(jié)構(gòu),這個(gè)結(jié)構(gòu)體本身是比較簡單的:

/*
 * Open file table structure
 */

struct files_struct {
    // 讀相關(guān)字段
    atomic_t count;
    bool resize_in_progress;
    wait_queue_head_t resize_wait;

    // 打開的文件管理結(jié)構(gòu)
    struct fdtable __rcu *fdt;
    struct fdtable fdtab;

    // 寫相關(guān)字段
    unsigned int next_fd;
    unsigned long close_on_exec_init[1];
    unsigned long open_fds_init[1];
    unsigned long full_fds_bits_init[1];
    struct file * fd_array[NR_OPEN_DEFAULT];
};

files_struct 這個(gè)結(jié)構(gòu)體我們說是用來管理所有打開的文件的。怎么管理?本質(zhì)上就是數(shù)組管理的方式,所有打開的文件結(jié)構(gòu)都在一個(gè)數(shù)組里。這可能會(huì)讓你疑惑,數(shù)組在那里?有兩個(gè)地方:

  1. struct file * fd_array[NR_OPEN_DEFAULT] 是一個(gè)靜態(tài)數(shù)組,隨著 files_struct 結(jié)構(gòu)體分配出來的,在 64 位系統(tǒng)上,靜態(tài)數(shù)組大小為 64;
  2. struct fdtable 也是個(gè)數(shù)組管理結(jié)構(gòu),只不過這個(gè)是一個(gè)動(dòng)態(tài)數(shù)組,數(shù)組邊界是用字段描述的;

思考:為什么會(huì)有這種靜態(tài) + 動(dòng)態(tài)的方式?

性能和資源的權(quán)衡 !大部分進(jìn)程只會(huì)打開少量的文件,所以靜態(tài)數(shù)組就夠了,這樣就不用另外分配內(nèi)存。如果超過了靜態(tài)數(shù)組的閾值,那么就動(dòng)態(tài)擴(kuò)展。

可以回憶下,這個(gè)是不是跟 inode 的直接索引,一級索引的優(yōu)化思路類似。

fdtable

簡單介紹下 fdtable 結(jié)構(gòu)體,這個(gè)結(jié)構(gòu)體就是封裝用來管理 fd 的結(jié)構(gòu)體,fd 的秘密就在這個(gè)里面。簡化結(jié)構(gòu)體如下:

struct fdtable {
    unsigned int max_fds;
    struct file __rcu **fd;      /* current fd array */
};

注意到 fdtable.fd 這個(gè)字段是一個(gè)二級指針,什么意思?

就是指向 fdtable.fd 是一個(gè)指針字段,指向的內(nèi)存地址還是存儲(chǔ)指針的(元素指針類型為  struct file * )。換句話說,fdtable.fd 指向一個(gè)數(shù)組,數(shù)組元素為指針(指針類型為 struct file *)。

其中 max_fds 指明數(shù)組邊界。

files_struct 小結(jié)

file_struct 本質(zhì)上是用來管理所有打開的文件的,內(nèi)部的核心是由一個(gè)靜態(tài)數(shù)組動(dòng)態(tài)數(shù)組管理結(jié)構(gòu)實(shí)現(xiàn)。

還記得上面我們說文件描述符 fd 本質(zhì)上就是索引嗎?這里就把概念接上了,fd 就是這個(gè)數(shù)組的索引,也就是數(shù)組的槽位編號而已。 通過非負(fù)數(shù) fd 就能拿到對應(yīng)的 struct file 結(jié)構(gòu)體的地址。

我們把概念串起來(注意,這里為了突出 fd 的本質(zhì),把 fdtable 管理簡化掉):



  • fd 真的就是 files 這個(gè)字段指向的指針數(shù)組的索引而已(僅此而已)。通過 fd 能夠找到對應(yīng)文件的 struct file 結(jié)構(gòu)體;

file


現(xiàn)在我們知道了 fd 本質(zhì)是數(shù)組索引,數(shù)組元素是 struct file 結(jié)構(gòu)體的指針。那么這里就引出了一個(gè) struct file 的結(jié)構(gòu)體。這個(gè)結(jié)構(gòu)體又是用來干什么的呢?

這個(gè)結(jié)構(gòu)體是用來表征進(jìn)程打開的文件的。簡化結(jié)構(gòu)如下:

struct file {
    // ...
    struct path                     f_path;
    struct inode                    *f_inode;
    const struct file_operations    *f_op;

    atomic_long_t                    f_count;
    unsigned int                     f_flags;
    fmode_t                          f_mode;
    struct mutex                     f_pos_lock;
    loff_t                           f_pos;
    struct fown_struct               f_owner;
    // ...
}

這個(gè)結(jié)構(gòu)體非常重要,它標(biāo)識(shí)一個(gè)進(jìn)程打開的文件,下面解釋 IO 相關(guān)的幾個(gè)最重要的字段:

  • f_path :標(biāo)識(shí)文件名
  • f_inode :非常重要的一個(gè)字段, inode 這個(gè)是 vfs 的 inode 類型,是基于具體文件系統(tǒng)之上的抽象封裝;
  • f_pos :這個(gè)字段非常重要,偏移,對, 就是當(dāng)前文件偏移。還記得上一篇 IO 基礎(chǔ)里也提過偏移對吧,指的就是這個(gè), f_posopen 的時(shí)候會(huì)設(shè)置成默認(rèn)值, seek 的時(shí)候可以更改,從而影響到 write/read 的位置;

思考問題

思考問題一:files_struct 結(jié)構(gòu)體只會(huì)屬于一個(gè)進(jìn)程,那么struct file 這個(gè)結(jié)構(gòu)體呢,是只會(huì)屬于某一個(gè)進(jìn)程?還是可能被多個(gè)進(jìn)程共享?

劃重點(diǎn):struct file 是屬于系統(tǒng)級別的結(jié)構(gòu),換句話說是可以共享與多個(gè)不同的進(jìn)程。

思考問題二:什么時(shí)候會(huì)出現(xiàn)多個(gè)進(jìn)程的  fd  指向同一個(gè) file  結(jié)構(gòu)體?

比如 fork  的時(shí)候,父進(jìn)程打開了文件,后面 fork 出一個(gè)子進(jìn)程。這種情況就會(huì)出現(xiàn)共享 file 的場景。如圖:



思考問題三:在同一個(gè)進(jìn)程中,多個(gè) fd 可能指向同一個(gè) file 結(jié)構(gòu)嗎?

可以。dup  函數(shù)就是做這個(gè)的。

#include <unistd.h>
int dup(int oldfd);
int dup2(int oldfd, int newfd);


inode


我們看到 struct file 結(jié)構(gòu)體里面有一個(gè) inode 的指針,也就自然引出了 inode 的概念。這個(gè)指向的 inode 并沒有直接指向具體文件系統(tǒng)的 inode ,而是操作系統(tǒng)抽象出來的一層虛擬文件系統(tǒng),叫做 VFS ( Virtual File System ),然后在 VFS 之下才是真正的文件系統(tǒng),比如 ext4 之類的。

完整架構(gòu)圖如下:



思考:為什么會(huì)有這一層封裝呢?

其實(shí)很容里理解,就是解耦。如果讓 struct file 直接和 struct ext4_inode 這樣的文件系統(tǒng)對接,那么會(huì)導(dǎo)致 struct file 的處理邏輯非常復(fù)雜,因?yàn)槊繉右粋€(gè)具體的文件系統(tǒng),就要考慮一種實(shí)現(xiàn)。所以操作系統(tǒng)必須把底下文件系統(tǒng)屏蔽掉,對外提供統(tǒng)一的 inode 概念,對下定義好接口進(jìn)行回調(diào)注冊。這樣讓 inode 的概念得以統(tǒng)一,Unix 一切皆文件的基礎(chǔ)就來源于此。

再來看一樣 VFS 的 inode 的結(jié)構(gòu):

struct inode {
    // 文件相關(guān)的基本信息(權(quán)限,模式,uid,gid等)
    umode_t             i_mode;
    unsigned short      i_opflags;
    kuid_t              i_uid;
    kgid_t              i_gid;
    unsigned int        i_flags;
    // 回調(diào)函數(shù)
    const struct inode_operations   *i_op;
    struct super_block              *i_sb;
    struct address_space            *i_mapping;
    // 文件大小,atime,ctime,mtime等
    loff_t              i_size;
    struct timespec64   i_atime;
    struct timespec64   i_mtime;
    struct timespec64   i_ctime;
    // 回調(diào)函數(shù)
    const struct file_operations    *i_fop;
    struct address_space            i_data;
    // 指向后端具體文件系統(tǒng)的特殊數(shù)據(jù)
    void    *i_private;     /* fs or device private pointer */
};

其中包括了一些基本的文件信息,包括 uid,gid,大小,模式,類型,時(shí)間等等。

一個(gè) vfs 和 后端具體文件系統(tǒng)的紐帶:i_private 字段。**用來傳遞一些具體文件系統(tǒng)使用的數(shù)據(jù)結(jié)構(gòu)。

至于 i_op 回調(diào)函數(shù)在構(gòu)造 inode 的時(shí)候,就注冊成了后端的文件系統(tǒng)函數(shù),比如 ext4 等等。

思考問題:通用的 VFS 層,定義了所有文件系統(tǒng)通用的 inode,叫做 vfs inode,而后端文件系統(tǒng)也有自身特殊的 inode 格式,該格式是在 vfs inode 之上進(jìn)行擴(kuò)展的,怎么通過 vfs inode 怎么得到具體文件系統(tǒng)的 inode 呢?

下面以 ext4 文件系統(tǒng)舉例(因?yàn)樗械奈募到y(tǒng)套路一樣),ext4 的 inode 類型是 struct ext4_inode_info

劃重點(diǎn):方法其實(shí)很簡單,這個(gè)是屬于 c 語言一種常見的(也是特有)編程手法:強(qiáng)轉(zhuǎn)類型。vfs inode 出生就和 ext4_inode_info 結(jié)構(gòu)體分配在一起的,直接通過 vfs inode 結(jié)構(gòu)體的地址強(qiáng)轉(zhuǎn)類型就能得到 ext4_inode_info 結(jié)構(gòu)體

struct ext4_inode_info {
    // ext4 inode 特色字段
    // ...
    
    // 重要!!!
    struct inode    vfs_inode;  
};

舉個(gè)例子,現(xiàn)已知 inode 地址和 vfs_inode 字段的內(nèi)偏移如下:

  • inode 的地址為 0xa89be0;
  • ext4_inode_info 里有個(gè)內(nèi)嵌字段 vfs_inode,類型為 struct inode ,該字段在結(jié)構(gòu)體內(nèi)偏移為 64 字節(jié);

則可以得到:

ext4_inode_info 的地址為

(struct ext4_inode_info *)(0xa89be0 - 64)

強(qiáng)轉(zhuǎn)方法使用了一個(gè)叫做 container_of 的宏,如下:

// 強(qiáng)轉(zhuǎn)函數(shù)
static inline struct ext4_inode_info *EXT4_I(struct inode *inode)
{
   return container_of(inode, struct ext4_inode_info, vfs_inode);
}

// 強(qiáng)轉(zhuǎn)實(shí)際封裝
#define container_of(ptr, type, member) \
    (type *)((char *)(ptr) - (char *) &((type *)0)->member)

#endif

所以,你懂了嗎?

分配 inode 的時(shí)候,其實(shí)分配的是 ext4_inode_info 結(jié)構(gòu)體,包含了 vfs inode,然后對外給出去 vfs_inode 字段的地址即可。VFS 層拿 inode 的地址使用,底下文件系統(tǒng)強(qiáng)轉(zhuǎn)類型后,取外層的 inode 地址使用。

舉個(gè) ext4 文件系統(tǒng)的例子:

static struct inode *ext4_alloc_inode(struct super_block *sb)
{
    struct ext4_inode_info *ei;

    // 內(nèi)存分配,分配 ext4_inode_info 的地址
    ei = kmem_cache_alloc(ext4_inode_cachep, GFP_NOFS);

    // ext4_inode_info 結(jié)構(gòu)體初始化

    // 返回 vfs_inode 字段的地址
    return &ei->vfs_inode;
}

vfs 拿到的就是這個(gè) inode 地址。



劃重點(diǎn):inode 的內(nèi)存由后端文件系統(tǒng)分配,vfs inode 結(jié)構(gòu)體內(nèi)嵌在不同的文件系統(tǒng)的 inode 之中。不同的層次用不同的地址,ext4 文件系統(tǒng)用 ext4_inode_info 的結(jié)構(gòu)體的地址,vfs 層用 ext4_inode_info.vfs_inode 字段的地址。

這種用法在 C 語言編程中很常見,算是 C 的特色了(仔細(xì)想想,這種用法和面向?qū)ο蟮亩鄳B(tài)的實(shí)現(xiàn)異曲同工)。

思考問題:怎么理解 vfs inodeext2_inode_infoext4_inode_info 等結(jié)構(gòu)體的區(qū)別?

所有文件系統(tǒng)共性的東西抽象到 vfs inode ,不同文件系統(tǒng)差異的東西放在各自的 inode 結(jié)構(gòu)體中。


小結(jié)梳理


當(dāng)用戶打開一個(gè)文件,用戶只得到了一個(gè) fd 句柄,但內(nèi)核做了很多事情,梳理下來,我們得到幾個(gè)關(guān)鍵的數(shù)據(jù)結(jié)構(gòu),這幾個(gè)數(shù)據(jù)結(jié)構(gòu)是有層次遞進(jìn)關(guān)系的,我們簡單梳理下:

  1. 進(jìn)程結(jié)構(gòu) task_struct :表征進(jìn)程實(shí)體,每一個(gè)進(jìn)程都和一個(gè) task_struct 結(jié)構(gòu)體對應(yīng),其中 task_struct.files 指向一個(gè)管理打開文件的結(jié)構(gòu)體 fiels_struct

  2. 文件表項(xiàng)管理結(jié)構(gòu) files_struct :用于管理進(jìn)程打開的 open 文件列表,內(nèi)部以數(shù)組的方式實(shí)現(xiàn)(靜態(tài)數(shù)組和動(dòng)態(tài)數(shù)組結(jié)合)。返回給用戶的 fd 就是這個(gè)數(shù)組的編號索引而已,索引元素為 file 結(jié)構(gòu);

  • files_struct 只從屬于某進(jìn)程;
  • 文件 file 結(jié)構(gòu):表征一個(gè)打開的文件,內(nèi)部包含關(guān)鍵的字段有:當(dāng)前文件偏移,inode 結(jié)構(gòu)地址

    • 該結(jié)構(gòu)雖然由進(jìn)程觸發(fā)創(chuàng)建,但是 file  結(jié)構(gòu)可以在進(jìn)程間共享;
  • vfs inode 結(jié)構(gòu)體:文件 file 結(jié)構(gòu)指向 的是 vfs 的 inode ,這個(gè)是操作系統(tǒng)抽象出來的一層,用于屏蔽后端各種各樣的文件系統(tǒng)的 inode 差異;

    • inode 這個(gè)具體進(jìn)程無關(guān),是文件系統(tǒng)級別的資源;
  • ext4 inode 結(jié)構(gòu)體(指代具體文件系統(tǒng) inode ):后端文件系統(tǒng)的 inode 結(jié)構(gòu),不同文件系統(tǒng)自定義的結(jié)構(gòu)體,ext2 有 ext2_inode_info,ext4 有ext4_inode_info,minix 有 minix_inode_info,這些結(jié)構(gòu)里都是內(nèi)嵌了一個(gè) vfs inode 結(jié)構(gòu)體,原理相同;

  • 完整的架構(gòu)圖:



    思考實(shí)驗(yàn)

    現(xiàn)在我們已經(jīng)徹底了解 fd 這個(gè)所謂的非負(fù)整數(shù)代表的深層含義了,我們可以準(zhǔn)備一些 IO 的思考舉一反三。

    文件讀寫( IO )的時(shí)候會(huì)發(fā)生什么?

    • 在完成 write 操作后,在文件 file  中的當(dāng)前文件偏移量會(huì)增加所寫入的字節(jié)數(shù),如果這導(dǎo)致當(dāng)前文件偏移量超處了當(dāng)前文件長度,則會(huì)把 inode 的當(dāng)前長度設(shè)置為當(dāng)前文件偏移量(也就是文件變長)
    • O_APPEND  標(biāo)志打開一個(gè)文件,則相應(yīng)的標(biāo)識(shí)會(huì)被設(shè)置到文件 file  狀態(tài)的標(biāo)識(shí)中,每次對這種具有追加寫標(biāo)識(shí)的文件執(zhí)行 write 操作的時(shí)候, file 的當(dāng)前文件偏移量首先會(huì)被設(shè)置成 inode 結(jié)構(gòu)體中的文件長度,這就使得每次寫入的數(shù)據(jù)都追加到文件的當(dāng)前尾端處(該操作對用戶態(tài)提供原子語義);
    • 若一個(gè)文件 seek 定位到文件當(dāng)前的尾端,則 file 中的當(dāng)前文件偏移量設(shè)置成 inode 的當(dāng)前文件長度;
    • seek 函數(shù)值修改 file 中的當(dāng)前文件偏移量,不進(jìn)行任何 I/O 操作;
    • 每個(gè)進(jìn)程對有它自己的 file,其中包含了當(dāng)前文件偏移,當(dāng)多個(gè)進(jìn)程寫同一個(gè)文件的時(shí)候,由于一個(gè)文件 IO 最終只會(huì)是落到全局的一個(gè) inode 上,這種并發(fā)場景則可能產(chǎn)生用戶不可預(yù)期的結(jié)果;

    總結(jié)


    回到初心,理解 fd 的概念有什么用?

    一切 IO 的行為到系統(tǒng)層面都是以 fd 的形式進(jìn)行。無論是 C/C++,Go,Python,JAVA 都是一樣,任何語言都是一樣,這才是最本源的東西,理解了 fd 關(guān)聯(lián)的一系列結(jié)構(gòu),你才能對 IO 游刃有余。

    簡要的總結(jié):

    1. 從姿勢上來講,用戶 open 文件得到一個(gè)非負(fù)數(shù)句柄 fd,之后針對該文件的 IO 操作都是基于這個(gè) fd
    2. 文件描述符 fd 本質(zhì)上來講就是數(shù)組索引, fd 等于 5 ,那對應(yīng)數(shù)組的第 5 個(gè)元素而已,該數(shù)組是進(jìn)程打開的所有文件的數(shù)組,數(shù)組元素類型為 struct file
    3. 結(jié)構(gòu)體 task_struct 對應(yīng)一個(gè)抽象的進(jìn)程, files_struct 是這個(gè)進(jìn)程管理 該進(jìn)程打開的文件數(shù)組管理器。 fd 則對應(yīng)了這個(gè)數(shù)組的編號,每一個(gè)打開的文件用 file 結(jié)構(gòu)體表示,內(nèi)含當(dāng)前偏移等信息;
    4. file 結(jié)構(gòu)體可以為進(jìn)程間共享,屬于系統(tǒng)級資源,同一個(gè)文件可能對應(yīng)多個(gè) file 結(jié)構(gòu)體, file 內(nèi)部有個(gè) inode 指針,指向文件系統(tǒng)的 inode
    5. inode 是文件系統(tǒng)級別的概念,只由文件系統(tǒng)管理維護(hù),不因進(jìn)程改變( file 是進(jìn)程出發(fā)創(chuàng)建的,進(jìn)程 open 同一個(gè)文件會(huì)導(dǎo)致多個(gè) file ,指向同一個(gè) inode );

    回顧一眼架構(gòu)圖:

    ~完~


    后記



    內(nèi)核把最復(fù)雜的活干了,只暴露給您最簡單的一個(gè)非負(fù)整數(shù) fd 。所以,絕大部分場景會(huì)用fd 就行,倒不用想太多。當(dāng)然如果能再深入看一眼知其所以然是最好不過。本文分享是基礎(chǔ)準(zhǔn)備篇,希望能給你帶來不一樣的 IO 視角。


    end






    點(diǎn)擊關(guān)注公眾號,回復(fù)【1024】免費(fèi)領(lǐng)學(xué)習(xí)資料


      推薦閱讀
    所有原創(chuàng)
    Linux驅(qū)動(dòng)
    粉絲問答
    C語言
    從0學(xué)ARM
    計(jì)算機(jī)網(wǎng)絡(luò)
    一口Linux 寫點(diǎn)代碼,寫點(diǎn)人生!
    評論
    •                                                                        
      廣州鐵金剛 2026-08-06 17:44 228004瀏覽
    • 做電池供電攝像頭、可視門鈴、戶外安防的同學(xué)應(yīng)該都踩過這個(gè)坑:攝像頭要拍,ISP、sensor、無線模塊全得開著,整機(jī)電流動(dòng)輒幾百 mA。一節(jié) 18650 撐不了幾天,用戶投訴“怎么又沒電了”。有人會(huì)說:加個(gè) PIR 人體紅外不就行了?問題是 PIR 怕熱、怕寵物、怕隔著亞克力/玻璃殼,而且只能感知“有溫差的人體移動(dòng)”,靈敏度飄忽。真正省電的思路應(yīng)該是:讓攝像頭平時(shí)徹底睡死,只有“前面有人/有動(dòng)靜”時(shí)才被一鍵喚醒——而負(fù)責(zé)這個(gè)“看門”角色的,最合適的是一顆低功耗雷達(dá)。一、為什么是雷達(dá),而不是 PI
      唯創(chuàng)知音語音芯片 2026-08-07 14:44 260瀏覽
    •        很多人只見過封裝在SMD外殼里的小尺寸晶振,卻不知道一顆2016、1612甚至1210封裝的微型石英晶振,從一塊巴掌大的石英原礦,到最終能穩(wěn)定起振的成品,要經(jīng)過十幾道精密工序。它內(nèi)部的石英晶片厚度最薄不到20微米,比普通A4紙的1/5還薄,整個(gè)生產(chǎn)過程里哪怕0.1微米的誤差,都會(huì)直接廢掉整批產(chǎn)品,這也是小尺寸晶振過去長期依賴進(jìn)口,國內(nèi)廠商花了十幾年才啃下量產(chǎn)硬骨頭的核心原因。1. 原石定向切割:0.01度的角度誤差都不能有小尺寸晶振的第一步,
      TKD泰晶科技 2026-08-07 08:43 572瀏覽
    • 做藍(lán)牙音箱的工程師大概都碰過這個(gè)局面。產(chǎn)品要連手機(jī)放歌,要本地播開機(jī)提示音和按鍵音,還要接 App 做配網(wǎng)和狀態(tài)上報(bào)。三件事拆開,早先的常規(guī)做法是音頻藍(lán)牙一顆料、數(shù)傳藍(lán)牙一顆料、本地播放再掛一顆小 MCU 加一片 Flash。板子越畫越大,BOM 越算越貴,待機(jī)電流和固件工作量也跟著漲。WT2605C 出來以后,這套需求可以集成到一顆芯片,就是 WT2605C-32N,該芯片采用QFN32 封裝,4×4 毫米,把音頻藍(lán)牙、BLE 數(shù)傳和 MP3 本地播放三樣全包了。對藍(lán)牙音箱來說,最實(shí)在的好處就
      唯創(chuàng)知音語音芯片 2026-08-06 15:14 424瀏覽
    • 產(chǎn)品使用18V供電,配套4串鋰離子電池,需要設(shè)計(jì)一個(gè)充電器。因?yàn)檩斎?8V,電池最高 16.8V,壓差僅 1.2V。因?yàn)閴翰钐 J褂瞄_關(guān)型的充電控制芯片不穩(wěn)定。嘗試自行設(shè)計(jì)一個(gè)。整體采用分立三極管 + TL431架構(gòu),分4個(gè)功能單元:使能控制回路、限流環(huán)路、TL431 精密恒壓反饋環(huán)路、PNP 功率管主功率輸出回路;實(shí)現(xiàn)完整鋰電池充電邏輯。使能控制回路按鍵按下:5V 電壓經(jīng) R12 (2kΩ) 送入 NPN 管 Q3 基極,Q3 飽和導(dǎo)通,對地拉低 R1、R2 組成的分壓控制節(jié)點(diǎn)電位;該節(jié)點(diǎn)直
      southcreek 2026-08-07 13:45 522瀏覽
    • 做儲(chǔ)能項(xiàng)目,你是怎么選控制器的?隨著工商業(yè)儲(chǔ)能、電網(wǎng)側(cè)儲(chǔ)能的規(guī)模化落地,作為儲(chǔ)能EMS“大腦”的嵌入式控制器,直接決定了整套系統(tǒng)的運(yùn)行穩(wěn)定性、數(shù)據(jù)可靠性與項(xiàng)目落地效率。不少從業(yè)者都踩過類似的坑:接口數(shù)量不足要額外加裝擴(kuò)展模塊、戶外高溫導(dǎo)致設(shè)備宕機(jī)、電磁干擾引發(fā)數(shù)據(jù)丟包、軟件生態(tài)薄弱拖慢開發(fā)周期……選對儲(chǔ)能控制器,核心要盯準(zhǔn)四個(gè)關(guān)鍵維度。首先看接口能力:全鏈路覆蓋,才是降本的核心。一套完整的儲(chǔ)能系統(tǒng),需要同時(shí)對接PCS、BMS、智能電表、溫濕度傳感器、除濕機(jī)、煙感消防主機(jī),還要連接急停開關(guān)、斷路器
      飛凌嵌入式 2026-08-11 08:46 212瀏覽
    • 樓宇自控里的“巴別塔”一棟智慧樓宇、一個(gè)產(chǎn)業(yè)園區(qū)里,暖通空調(diào)運(yùn)行著廠商私有協(xié)議,照明系統(tǒng)遵循專屬通信標(biāo)準(zhǔn),變配電、門禁安防各成體系——設(shè)備間數(shù)據(jù)壁壘森嚴(yán),上位平臺(tái)對接全靠定制化 “翻譯” 開發(fā),不僅成本高企,交付周期也難以管控。這就是樓宇自控行業(yè)多年的痛點(diǎn):協(xié)議林立、封閉林立。而破局的鑰匙,早在30多年前就已經(jīng)寫好了——BACnet。作為ASHRAE制定的樓宇自控國際標(biāo)準(zhǔn)協(xié)議,BACnet是如今全球樓宇自控系統(tǒng)(BAS)互聯(lián)互通的“通用語言”。新風(fēng)機(jī)、冷源群控、變配電、照明、門禁,凡是需要被樓宇
      飛凌嵌入式 2026-08-10 09:26 298瀏覽
    • 摘要東莞市恒創(chuàng)連接器有限公司(HCHGCONN)是位于廣東東莞的連接器源頭制造工廠,專注于連接器國產(chǎn)替代、小間距大電流連接器、線對板連接器、線對線連接器、板對板連接器、電源連接器及定制連接器開發(fā)。公司面向工業(yè)自動(dòng)化、新能源儲(chǔ)能、BMS、汽車電子、AI服務(wù)器、GPU供電、通信設(shè)備、醫(yī)療設(shè)備和智能家居等場景,提供從產(chǎn)品選型、替代評估、樣品驗(yàn)證到批量交付的一站式連接方案。恒創(chuàng)可支持 Molex、TE Connectivity、JST、Hirose、Samtec 等國際品牌部分系列的國產(chǎn)替代評估。常見替
      HC003 2026-08-07 10:14 261瀏覽
    • 讓微弱脈沖信號更清晰——鎖相放大器集成Boxcar平均器在脈沖激光、泵浦-探測、時(shí)間分辨光譜、飛行時(shí)間質(zhì)譜等實(shí)驗(yàn)中,真正需要測量的信號往往只出現(xiàn)在一個(gè)很短的時(shí)間窗口內(nèi),卻被淹沒在遠(yuǎn)大于它的噪聲和背景之中。 針對這類穩(wěn)定重復(fù)的微弱脈沖與瞬態(tài)信號,賽恩科儀為OE2052雙通道數(shù)字鎖相放大器帶來全新的Boxcar Averager功能升級:在鎖相檢測之外,進(jìn)一步提供從周期波形觀察、門控測量到多周期平均的完整數(shù)字Boxcar測量鏈路。 Boxcar平均器,如何從噪聲中“截取”目標(biāo)信號?Boxcar平均器
      SSI_賽恩科儀 2026-08-07 15:49 43530瀏覽
    • 一、方案簡介在Buildroot構(gòu)建的嵌入式Linux系統(tǒng)中部署Flutter應(yīng)用,主流有兩套成熟的開源方案,分別適配不同的顯示場景與開發(fā)需求:方案一:flutter-elinux(Sony開源方案)由索尼官方維護(hù)的嵌入式Linux Flutter工具鏈,既支持DRM/GBM直接渲染,也兼容Wayland、X11等多種顯示后端,場景適配性更廣。方案二:flutter-pi(輕量級嵌入器)一款輕量級Flutter引擎宿主程序,僅基于底層DRM/GBM接口實(shí)現(xiàn)渲染,無需依賴桌面環(huán)境,資源占用更低,更
      飛凌嵌入式 2026-08-07 09:34 243瀏覽
    我要評論
    0
    點(diǎn)擊右上角,分享到朋友圈 我知道啦
    請使用瀏覽器分享功能 我知道啦
    主站蜘蛛池模板: 英雄虎胆电视剧全集| 木下凛凛子伦理电影| 毒战1韩版免费完整观看| 参谋不带长| 星方天使| 转角遇到爱全集| 特殊治疗室护士| 两个人日本免费完整版高清中文| 陷阱2015| 人猿泰山hr版 在线完整版| 财阀刑警| 火影忍者疾风传720集| 逆转裁判电影| 辽宁卫视网络直播| 风流韵事在线观看| 变形金刚7| 公公之浮手中字5HD| 女人泪40集电视剧| 坂本真绫 铃村健一| 熊出没之怪兽计划3| cctv14熊出没之丛林总动员| 《爱我几何》免费观看完整版下载| 金瓶徐少强未删减版免费| 公交车在线观看电视剧| 爱情公寓3预告片完整版| 蜜糖在线观看| 新封神英雄榜全集| 高清《夺命网红2》电影| 办公室定时器韩国电影| 逃亡者planb| 法国版《女超人:麦乐迪》| 杨利伟是神州几号| 遇见未来的你台剧免费观看| 电影《需要爸爸播种子》| 拼命十三郎| 晚娘全集| 荷尔蒙 6| 浪漫刺客免费全集完整版| 坠落电影完整版免费观看| 《她被搬运工侵犯》电影观看| 醉打金枝电视剧| 丰满的乳| 邵氏《女儿国》满天星| 冒牌英雄| 豆腐西施杨七巧| 女销售在线播放| 最近我的妹妹有点怪电影| 神奇公司在哪里综艺免费观看| 《overflower》动漫第1季免费观看全集| 一念天堂免费观看| 21世纪大君夫人全集观看| 吴健版农民伯伯2集在线看| 田中君总是如此慵懒| 七年很痒国语| 《KTV聚会里的秘密》结局| 央视跨年晚会来袭| 顶楼里的大象张紫妍| 和继拇做爰HD中字| 包子先生| 黄子华栋笃笑2018| 天海翼女教师电影| 伍六七第5季记忆碎片| 东航马德里| 入室暴行魔电影免费观看高清 | 金银悔5一1| 哪吒1魔童降临| 后宫甄嬛传全集下载| 爱我几何《莫妮卡》电影完整版中文 | 走火40集全免费观看| 农民伯伯2中字新版本更新内容| 再逢明月照九州| 聊斋艳谭之欲焰三娘| 陌路血地| 重逢丈夫的下属是初恋在线观看 | 第一次洗碗| 风声电视剧免费完整版观看| 电影《美味快递员特殊待遇2》演员阵| 军人使命| 菲律宾遣返4万中国公民| 儿媳妇的味道伦理片| 给我完整版在线观看| 疯狂外星人免费观看完整版国语版 | 性欢愉2做爰HD| 男按摩师做乳房按摩电影中文 | 和部长一起出差电影名字| 星落凝成糖电视剧免费| 电锯惊魂7高清| 美国版《健美》在线播放| 斗罗大陆2在线观看高清免费播放| 安徽卫视海豚tv| 《特殊的治疗》李采潭在线 | 桃花在线观看免费高清电视剧98| 人犬兽人100集全部| 爱情而已电视剧免费观看全集完整版 | 我和丰满瑜伽老师| 美国式保罗2| 宝莲灯后传1到46集免费| 好男人在线电视剧在线观看免费高清| 坎贝奇《无憾》播放| 在厨房被夫上司侮辱电影 | 马志明 大保镖| 壮志凌云2女飞行员版在线观看| 《私人航空》法国电影在线播放视频| 丰原市| 母亲 日本电视剧 在线观看| 林家铺子| 如果·爱电影| 相同年龄的母亲| 青柠在线观看免费高清电视剧下载| 不要忘记我 裴秀智| 死神264| 核弹危机| 《玉女心经3:阴阳和合》免费观看完整版 | meinvsiwa| 公的浮之手中字舅舅| 女朋友的妈妈2英文字母| 马云最新演讲| 滁州市| 高清楠木邸的神明庭院| 切尔诺贝利日记| 电影死神来了6在线观看| 野花电影免费观看完整| 9518虚拟视频| 高清《秘密囚禁》完整版| 第一次竟然给了朋友的| 假面骑士亚极陀免费观看| 雾都在线观看| 法国足球宝贝在线观看| 泼天富贵短剧免费观看| 高清《黑暗面》| 安斋拉拉爱情电影网| 电视剧蔷薇风暴免费观看全集高清| 儿女英雄传主题曲| 八戒8电影在线播放免费观看| 我的小左小右电视剧 | 麦乐迪马克斯女超人满天星电影在线观看 | 月光宝盒私人免费影院 | 本能2在线观看| 女子举报街道办副主任丈夫出轨| 美乃雀电影在线| 方清平单口相声下载| 舒淇三级片灵与欲| 哇嘎高清完整版免费观看| 非杀人小说| 斗罗大陆42集免费观看| 渔夫荒淫史在线观看| 张本煜回怼男观众称“大清亡了” | 祈今朝 电视剧| 蒋玲玲版《渔夫的荒野史记》在线观| 金装的维尔梅免费看全集 | 假面超人全集| 美国电影荣誉守则满天星| 大祠堂在线观看| 工作细胞| 日本办公室的秘密2| 蜜桃成熟时33d等| 青青河边草高清免费版新闻刘涛| 公浮手中字8| 新梅瓶1至5集在线播放| 选择全对:神级人生全集免费| 法国空乘5免费在线观看| 脱缰者也全集观看| 海魂电视剧| 需要爸爸的种子在线观看 | 年轻母亲1在线观看完| 张家川| 正阳门下在线观看| 女士的品格电视剧免费观看40集 | 电视剧长沙保卫战全集在线观看| 美容院的待遇 韩国电影| 无所畏惧电视剧免费 | 圆月弯刀古天乐国语| 卖房子女销售3| 唐朝浪漫英雄剧情介绍| 美国忌讳1~7| 《我的罪恶人生》| 满天星在线观看完整免费高清原声满天| 妖神记在线观看全集免费播放| 女版壮志凌云满天星英文名| 闪婚全集| 《温柔的谎言》韩世雅| 健男抢钱团| 种马猎人3电影免费| 弦子 沿海地带| 圣特罗佩的姑娘们高清| 逆爱 再爱我一次| 维修工的绝遇(2)| 金蝉脱壳电影| 《孤岛惊魂》| 天道结局| 战狼6高清在线观看大牛| 欢快的流行歌曲| 反斗马骝国语| 《麦乐迪女超人》网址是什么| 东北黑道风云20年全集| 加勒比女海盗1完整版电影高清免费完整观看影片 | 奇迹少女第三季免费完整版| 韩剧富翁的诞生| 世界杯奖金分配方案2022| 迷你宝贝| 阿尔法狗| 经典草原歌曲大全| 卖房子的女销售艺术片在线观看| 《志愿军:浴血和平》| 旋风小子| 《和部长一起去出差旅》韩剧丈夫不| 高清打工仔的拷问日常| 47集旗袍电视剧免费观看| 需要爸爸播撒种子电影播放| 罪恶都市特殊车辆任务| 啥事佩奇| 金瓶梅电视剧全集电视剧| 高清《芈月传》免费观看完整| 向东是大海百度影音| 祼婚之后| 爸爸的播种| 罗刹海市刀郎原唱完整版| 极乐净土原版| 换伴美国版高清免费版| 无间在线电视剧免费观看| 海员记录在杜苏芮影响下航行遭遇| 意大利爸爸的种子免费观看电视剧中 | 兄弟姐妹第二季| 安吉拉怀特高清视频哪里看| 曹查理 风流电影| 公主骑士是蛮族的新娘电视剧| 黑白配电影在线观看| 甜密惩罚第一季免费观看完整版| 聊斋奇谈之神魔大战| 朴妮唛28部电视剧在线观看| 李卫当官第一部免费版央视网| 墨雨云间电视剧免费高清观看| 后宅争斗短剧全集| 门第爱奇艺| 《《特殊的房产销售2》》HD免费免费在线观看-2003年全集纪录剧 - 天美影院 | 新丰县| 《少女大人》在线观看| 最后的幸存者第二季| 《情不自禁》叶玉卿在线| 双人调情按摩术电影免费观看| 维多利亚一号周楚楚| 永生战士2电影| 《x迷宫》罗丽星克莱| 金元大劫案| 冲上云霄1主题曲| 朋友互换| 黑衣人3高清完整版下载| 芒果香谢军| 维修工老王的春天结局| 隐形帽子无删减完整版| 驯服人妻HD中字日本| 鸭王2免费看| 法国电影《女超人》 | 苏东坡 电视剧| 终极任务| 《法国空乘2018法版》观看| 七妹电视剧免费观看完整版高清| 大雨天和驾校教练在车里| 公之浮中手9| 高清《侦察兵》免费观看| 临沂新闻综合频道| 《我要再来一次》电影免费播放| 女儿要爸爸播种手机观看| 海边的异邦人中文版在线观看| 家庭计划美国电影在线播放| 动感之星168妖精全集免费看| 下一站幸福在线观看| 边水往事电视剧在线观看全集免费| julia最好看的一部| 法国塔日酒店完整版| 新金梅瓶电影| 校草追求:学霸女神全集免费| 韩国电影需要爸爸的种子| 深圳空姐艳照门| 生活有点甜 电视剧| 返老还童的电影| 《蜜桃成熟时2》| 国足vs澳大利亚直播在线观看| 白雪公主H版无删在线播放| 爱人欲望| 兽皇电影在线观看完整版| 青梅竹马是消防2季未增删| 信丰县| 繁华电视剧| 奔跑吧第十一季免费观看完整版| 李翊君北京演唱会| 电视剧同性| 女人的私人监狱伦理免费观看 | 张居正电视剧| 小谢尔顿第七季电视剧| 狂野之物| 新金梅瓶2 国语完整版| 女家教免费观看| 使徒行者31集| 琉璃川动漫全集在线观看| 边水往事连续剧免费观看全部| 公之浮之6| 谍杀风暴| 幽浮宝贝| 女房东的秘密 韩国电影在线观看 女员工免费观看中文字幕 | 巜人妻初次按摩2在线免费观看| 铁甲威龙| 武藤兰av下载| 暗格里的秘密电视剧在线观看西瓜| 日本厨房激情3| 超人jax| 一起愁愁愁免费观看完整版在线观看| 给我一支烟| 男人和女人一愁愁愁电视剧在线观| 西瓜视频在线免费观看| 二十一世纪性格爱情指南第八集| 妖僧无花和如尘| 《在一起》免费观看| 哈利波特5免费观看| 上流社会韩剧电影完整版免费观看 | 孕妇可以吃的保健品| 《部长出差的日子》在哪里看| 电影《德州情谜》免费看| 电视剧铁腕行动| 圣特罗佩斯的姑娘们| 狮子王原版英文版免费观看| 卿卿日常电视剧免费观看| 妹妹说有我这种哥哥真不幸免费| 女子举报街道办副主任丈夫出轨| 晚安为我而我的妹妹 | 《落魄贵族》1-4集免费观看 | 《销售秘密》3| 水平线上的阴谋国语| 私人女性监狱电视剧剧情详解| 秘密花园免费观看完整版高清| 俄罗斯需要爸爸播种电影剧情| 双面太子妃| 极限救援优酷| 《王者》在线观看完整版| 抑郁症影院满天星执行秘书| 花样男子第二部| 僵尸道长2全集| 青云志第二季免费观看完整版| 小凤新婚下集在线看视频| 《指尖上的热情》类似动漫| 轮回电影在线观看免费完整版国语| 秘密办公室2| 长安的荔枝有电视剧吗| 差一分的美味电视剧免费播放| 你们老公晚上怎样玩你| 二十世纪性格与X爱情观后感 | hhh555现在叫什么| 布洛芬多少钱一盒| 黑海夺金| 野兽家族| 动感之星 小玲 全集| 打工人的巅峰短剧全集| 庆余年2精彩片段| 《部长出差的日子》| 韩国电影售楼秘密| 男生和女生愁愁愁电视剧在线观看网页版 | 免费看神印王座| 水蜜桃5美国伦理| 阿兰 德 卡瓦略| 《原始人》电影免费观看| 周生如故电视剧| 木下凛凛子的搜索结果| 孤胆特工高清完整版电影在线观看| 隋唐英雄4| 新丰县| 赛仑《渔夫的妻子》 | 大祠堂在线观看| 油饼的热量| 在线观看瓜达卢佩的玫瑰| 高清黄泉的使者未删减| 凶宅处理专员在线全集观看| 沁水县| 美国私人女性监狱完整版观看免费| 英雄有约| 瓦尼塔斯的手记动漫全集免费| 飞机特殊待遇5| 我是路人甲电影| 叶问 粤语| 医武双绝:弃少超神短剧全集| 白峰美羽女教师无删减播放 | 我们都是好朋友电视剧| 女友的妈妈双字ID| 97电视剧在线播放免费观看| 大唐诡事录2免费观看完整版| 南线大追歼| 美姐妹牙医| 爸爸接种2| 理智与情感电影| 年轻的阿姨5中字电影| 屠宰呕吐娃娃免费观看完整版视频| 《私人航空》免费观看在线观看| 电视剧二胎| 下一站天后动漫全集| SONE-367本乡爱在线观看| 办公室玩弄娇喘秘书在线观看| 《看上女儿》电影免费播放| 爱我几何莫妮卡完整版在线播放| 爱情最美丽演员表| 《隋唐英雄传》| 重生弃少全集免费| 《女超人2满天星版》完整版| 美国派4在线观看| 血疫电影完整免费观看| 谷原希美视频| omoflow第一季无马赛真人| 星辰剧集网| 《恶犬》短剧全集| 大梦西游2铁扇公主| 高压监狱2法版1时43分| 一又二分之一的夏天歌曲| 铸匠电视剧| 绝种好男人国语| 《理发:特殊待遇》孙婉| 旧版包青天| 特战荣耀在线观看免费| 大鱼吃小鱼电影| 法国女仆满天星美版结局| 爱的色放mp4下载| 你是我的荣耀完整版| 末代皇帝| 莉娜安德森《书虫》| 丰臣兄弟!电视剧| 诺亚方舟:创世之旅| 免费看电视剧漂白| 公公的之浮之2| 古惑仔5龙争虎斗国语高清版免费| 《逆爱》1-24集全| 漂白电视剧免费观看| 昭和100部经典电影免费观看| 拥抱MV| 仁心俱乐部电视剧全集免费观看| 父辈荣耀| 美式忌讳5—7| 七夜雪电视剧全集免费播放| 电影跳出去| 潮与虎39| 大牛战狼6免费观看高清完整视频下载 | 俄罗斯空姐在线观看完整免费高清原声满天星奔跑吧ep彩 | 两个人韩国BD在线观看免费| 维生素爱香水| 从海底出击第一季| 菠萝菠萝蜜免费播放| 铃木美恵子| 瞄准全集免费观看| 淮南子汜论训| 炸天小姐在线观看| 末日三问| 男子与女子免费高清电视剧| 决战燕子门电视剧全集免费播放| 潘多拉之镜| 宅门里的丫鬟| 西厢夜谭| 传闻中的七公主 电视剧| 地爆天星| 女员工付出的中字1230| 《手机》免费观看全集| 和女邻居做爰2在线观看| 暴躁女孩免费看全集| 义姐哺乳观看第一季全集免费| 金银花露的哪个车最多| 天下无双张靓颖| 问心电视剧免费观看| 朴诗妍《爱的释放| 金瓶梅电视剧| 牛莉电视剧| 第九章不等式与不等式组 | 哈利波特电影| 王者二弟| 《导师》完整版电影| 夜晚的阿曼达满天星| 罗马尼亚电影复仇| 本草药王国语| 你是我的命中注定 电视剧| 乳房按摩电影| 荣誉守则(成人版)高清修复1080p,精彩 | 作家的谎言的电影| 阎立品秦雪梅见夫灵悲声大放| 《需要爸爸播种美国》英文版演员全 | 福州 劫持人质| 电视剧星火| 伊波拉病毒国语版电影| 仁心俱乐部在线观看| 白夜行 豆瓣| 中国男篮进2024奥运会了吗| 满天星女版唐三藏免费观看| 秘密搜查官陷落JULIA| 农家小福宝:爹娘宠上天全集免费| 色即是空1 qvod| 浪漫满厨播出时间| 需要爸爸的种子中文| 玫瑰骑士电视剧免费观看完整版| 婚姻料理| 年轻的母亲5电影| 激战酒店1-9集全部播放时间中文版| 灿烂的遗产国语版全集高清| 银河护卫队2电影天堂| 铠甲勇士1部全集| 黑白配1080P高清完整版 | 纵有疾风起在线观看完整版| 永生守卫2妹妹归来| 孤注一掷在线观看高清免费张艺兴 | 女律师替夫还债电影| 朴妮唛29分钟完整版| 老炮儿未删减版| 比蒙巨兽| 职场晋升的妻子职场2| 哇嘎免费观看在线播放高清| 沙漠大战塞丽娜电影免费观看| 炼气十万年短剧免费观看| 彩礼超6万可举报?当地回应| 需要爸爸的种子在线观看完整版 | 黑白配国语版免费播放| 坎贝奇《品味人生》免费观看完整版 | 《出差遇暴雨》完整版免费观看| 《初尝禁果》电影| 情深深雨蒙蒙35| 年轻的母亲5电影| 《诱人的女房东》| 全职猎人95| 潜龙轰天3野兽之腹| 各自远飏| 清凌凌的水蓝莹莹的天1| 99re视频| 卢靖姗太强了| 一眼万年泰剧免费观看| 满清十大刑酷之凌迟| 荷尔蒙爆发的视频原声| 《黑色眼泪》完整版| 韩版恶作剧之吻2| 车贤静三级| 忘年恋电影在线观看免费| 女销售卖房子视频| 生死劫电视剧| 夫妻免费看大片真人电视剧| 安德鲁貂| 邮箱| 堕落的女律师17.| 二十不惑2电视剧免费观看正版| 呼吸过度动漫全集完整版在线观看| 哭悲在线完整观看| 《女律师替夫还债》剧情介绍| 扬门虎将| 壮志凌云女版满天星| 千年情人| 妇产科电视剧| 《激战丛林》电影在线观看意大利| 《不正经的魔术讲师与禁忌教典》| 喜爱夜蒲国语版高清| 黑狱圣女国语在线播放免费| 靖远县| 瓜达卢佩的玫瑰演员表| 葡萄牙vs巴西| 一酷到底| 诱人的瑜伽老师3hd中字| 小小水蜜6电视剧免费观看最新章节| 牝老师4| 劲舞团修改密码| 沉香如屑电视剧全集免费| 圣母在上ova| jizz曰本| 唐朝禁宫秘史电影| 爱我几何,免费| 朦胧的欲望在线观看| 女人复仇记电视剧| 美丽小蜜桃5美丽人生娃娃脸| 功夫熊猫全集| 千方百计爱上你2015| 鬼作在线观看| 《麦乐迪女超人》在线观看| 落魄贵族琉璃川第一季免费播放| 按摩天堂| 春雨电影播放大全在线观看| 你有没有听到我| 韩剧《控制老板》免费观看| medoly女超人| 爱的色放3| 寒战2迅雷高清下载| 吸血贵族满天星免费观看完整版| 田蕴章每日一题每日一字| 米奇电影| 七种贱粤语高清免费观看| 渔夫荒野史记台版免费观看| 3d铺团之极宝乐鉴宝4免费观看 | 爱情攻略高清完整版粤语| 意大利电影需要爸爸的种子| 环太平洋2| 98古惑仔在线观看粤语版| 《李宗瑞1—32全集》电影| 做aj的电视剧大全免费观看中国国语| 法国 女超人| 夏范动画| 电影《顶级特工》| 狙击手特别行动电影免费完整观看 | 电影《爱我几何》无删减完整版 | 谍网迷魂| 回复术士之重启人生| 心慌方2| 战狼8整版国语免费观看姐弟| 麦乐迪和父亲故事电影叫什么| 水浒传25| 我有时候也想成为a片主人公| 猛鬼撞鬼| 隔壁邻居很美味| Tube一8| 茅坑里的僵尸完整版| 情色电影网站| 吴磊赵今麦吻戏堪比火烈鸟| 电影粉红大白菜完整版| 《私人航空》免费在线观看| 帝国的隐忍| 热带雨电影完整版免费看| 一夜之间| 公之浮手在线观看完整版| 公孚之手中字9| 高清今天开始是人类| 美版HD古墓丽影山寨版满天星| 罗娜艳情录经典电影免费观看| 隋唐英雄108| 新编辑部故事| 丹阳市| 《需要爸爸播种子》免费观看在线播放_HD/未删减_1080P高清电影完整版 - 天堂 | 尖峰时刻2国语版| 电视剧扫黑风暴40集在线观看 | 异形终结2| 叶塞尼亚电影完整版| 97免费在线观看| 釜山行2:半岛电影| 绮梦之旅全集观看| 喜羊羊和灰太狼之决战次时代| 正阳门下36集全免费| 高压监狱2019满天星法版免费| 《一年又一年》电视剧| 荷尔德林的陶| 谁是真英雄电视剧| 理想之城西瓜影视在线观看免费| 天海翼搜查官在线| 满江红完整版观看免费| 我的陪读妈妈第25节阅读答案| 踏血寻梅| 修行电影| 战狼16欧式少女版资源百度云链接 | 相门嫡女全集免费| 56集电视剧全部免费| 她很漂亮电视剧韩国| 韩国爸爸b的种子| 高清毒劫| 终末的后宫未删减版 在线播放| 五十度灰ed2k| 邻居换娶妻1完整版中文| XL司令第二季真人版全集免 | 19岁大学真人免费播放电视剧| 赤板栗牙医姐妹1986在线观看| 热门影视| 窃听风云3| 北京教父| 在线看性| 赤坂丽《牙医诊所》在线观看免费| 食人鱼事件电视剧全集| 电视剧小站风云| 仙逆更新至96集在线| 唐朝诡事录第二季免费观看| 安斋拉拉躲雨电影免费观| 爱在苍茫大地全集| 播放美国生活大片| 黑天鹅在线观看| 善良嫂子3| 壮志凌云女版啄木鸟满天星法版免费 | 隐入尘烟电影免费观看| 墨西哥电影《瓜达卢佩的玫瑰》的女| 女律师的堕落 在线| 八犬传东方八犬异闻第二季 | cekc每1| 光能使者国语版全集| 成全高清免费动漫观看| 刘德华演唱会全集| 纵横四海粤语| 肯德桑德兰满天星免费| 美国版荷尔蒙15| 众神之怒电影| 长乐曲在线观看| 我在民国当祖宗短剧免费观看| 汤阴县| 圣特罗佩姑娘们完整版在线观看 | 甜美的咬痕动漫全集在线观看| 被侵犯高傲女教师| 法国版《女超人| 飞哥大英雄全集在线观看| 蜜桃成熟时2未删减版| 苍兰诀在线观看| 花子vs倔强驱魔无删减版立即播放 | 绝战桂林电视剧全集| 维修工人的绝遇2中文版| 《妻子3》在线观看| 电视剧流金岁月港台剧| 新包青天在线观看免费完整版| 邻居也疯狂高清完整版| 赤子板《姐妹牙医》百度云| 洪真英电影完整版免费观看| 电车列车3日剧播放| 赤裸特工未删除版| 小蜜桃4| 喜羊羊与灰太狼之羊羊小心愿| 日剧《卖房子的女人》| 罗曼史qvod| 权力的游戏第一季免费观看完整| 夏日福星粤语版| 晶兵总动员| 韩剧《下属的妻子》主演名单表 | 香醇的绣感完整版| 满天星版超女麦乐迪高清| 加菲猫家族电影中文版免费观看 | 拆局专家粤语| 女健身教练| eeUsS| 电影魔女2| 乡村爱情圆舞曲百度影音| 小姨多鹤| 还珠格格第一部优酷| 坎贝尔《无憾》播放| 郝板理子电影免费观看| 入青云电视剧免费观看| 电影小兵张嘎免费观看| 蜜桃1997| 小鼠波波126集全集| 邵氏《金莲外传》中文在线观看 | 《山河令》全集在线观看| 18岁电影| 杜鹃山选段| 房奴试爱智恩电视剧开头原声| 木府风云电视剧| 怨妇2电影免费中文字幕看完整版| 葡萄姐姐| 双谍姐妹花| 大荔县| 《麦乐迪女超人》完整版在线观看视频 | 妈妈的职业2韩剧中文翻译| 打扑克下蛋怎么玩| 给我完整版在线观看| 人形少女 快播| 富家少爷| 1987版《娃娃脸》免费观看| 台剧浪漫女家教免费观看第14集| 一仆二主百度影音| 《梦中的那片海》电视剧| 《破外女2》完整版| 日本电影追捕完整版| 《纯情罗曼史》| 农场主三姐妹美国与意大利版对比| 《需要爸爸播种子》电影免费在线观看,高清完整版美国倫理片_努努影院 | 欢乐颂第一季在线观看免费高清| 我们都是超能力者完整版电影| 美国版《小蜜蜂》4| 高清《奔跑吧第5季》综艺| 儿子的妻子在线| 《女员工的滋味》2| 希望爸爸来种种子伦理剧| 部长的夫人的味道是褒还是贬| 幸福到万家免费观看| 天赋异禀北极星免费观看| 陈小春电影全集国语| 夫妻那些事在线直播| 女篮坎贝奇无憾 在线观看| 上海电视台直播| 《速度与激情10》电影| 红灯记伴奏| 绿茶妹2 微电影| 丈夫的部下是我的初恋| xl司令真人版全集无删减在线观看| 大红灯笼高高挂 电影| 《布里奇顿 第四季》| 陪读妈妈1-| 绿水青山带笑颜| 兄弟换5| 壮志凌云2011版免费观看| 中国医生在线播放| 朋友的妈妈们在线观看| 百团大战 电影| 生命之树迅雷下载| 美容院:待遇服务4| 哇嘎电影免费观看| 因为爱情有情天结局| 迷雾追踪24集免费观看| 战争电影免费高清在线观看| 电视短剧《正当时》全集播放| 世界十大禁用飞机| 插曲的痛30集全集免费观看第二季| 和部长出差日本| 偷听女人心| 徐艺真《皇后驾到》| 左旋肉碱有用么| 公主嫁到粤语| 北越暴行| 热辣披萨女孩高清观看视频大全| 僵尸至尊粤语| 种上爸爸的种子在线| 勇敢的心电影在线观看免费完整版| 《轮回的花瓣》| 82版杨敏思版本1-5电视剧免费观看| 泰罗奥特曼国语动漫| 死亡笔记电影| 替嫁公主短剧全集| 禁忌7年转一代| 韩国毛片同学韩妈妈屮文字惹| 疯马夜总会| 明明不喜欢 在钱| 电视剧二婶| 猫和老鼠在线观看| 我的瑜伽老师在线观看电影完整版| 韩国电影 好姑娘干 在线观看| 铁拳无敌高清完整版在线观看| 忠者无敌高清电视剧全集免费观看| 护士贝蒂| 新金瓶梅2013什么时候上映| 商务旅行戴绿色帽的女老板电影| 強暴處女1-12系列| 花开有时颓靡无声电视剧免费观看| 变形警车珀利| 高清《俄版女儿国》高清版| 高清《渣女》电影在线观看免费| 隔窗恋爱未剪删超清| 冢本战争电影免费观看| 电影女律师替丈夫还债| 清冷美人被c哭着爬走回来挺进h| 女子在洱海裸泳 警方介入| 爱的二八定律电视剧免费观看完整版| 太极2之英雄崛起| 巜年轻的继拇》4| 韩国电影在线观看修理工的艳遇 | 解药动画片全集在线观看| 徐若瑄终极猎杀| 隔窗恋爱2| 一个好妈妈9中字头强华驿的演员表| 电影《牙医姐妹》1986年在线| 粗野派免费观看完整版普通话| 我的妈妈是校花电视剧| 大掌门电视剧全集| 逆天至尊在线观看西瓜| 蒸发疑云| 法国空姐6大结局| 我年轻瘦子8完整版| 飘落的雪花| 军事不当行为未删减版百度云资源 | 电视剧还君明珠| 贝克街的亡灵| 女人的战争| 婚后的诱惑| 天使的胆量| 我漂亮的小瘦子3剧情| 妻子8免费观看大全电视剧| 小男人和大女人做爰| 魔法使的新娘|