3atv精品不卡视频,97人人超碰国产精品最新,中文字幕av一区二区三区人妻少妇,久久久精品波多野结衣,日韩一区二区三区精品

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

main函数初探

發(fā)布時(shí)間:2023/12/20 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 main函数初探 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

main方法初探

    • 題外話
    • main函數(shù)的類(lèi)是怎么被虛擬機(jī)識(shí)別加載至內(nèi)存的
    • jvm的運(yùn)行機(jī)制
    • jvm的啟動(dòng)細(xì)節(jié)1---launch
    • jvm的啟動(dòng)細(xì)節(jié)2---classloader

題外話

剛學(xué)java的同學(xué)肯定都知道m(xù)ain方法是一個(gè)程序的入口,為我們創(chuàng)建了一個(gè)主線程,作為一個(gè)老油條了,今天學(xué)習(xí)springboot項(xiàng)目啟動(dòng)時(shí)發(fā)現(xiàn)也是通過(guò)main方法啟動(dòng)的,于是就觸發(fā)了我的好奇心,main函數(shù)是怎么被執(zhí)行的呢?被執(zhí)行之前虛擬機(jī)幫我們做了些什么呢?

想了解springboot啟動(dòng)流程和autoconfig的同學(xué)請(qǐng)看這里:

  • SpringBoot之@EnableAutoConfiguration注解
  • springboot autoconfig 自動(dòng)配置原理實(shí)現(xiàn)
  • main函數(shù)的類(lèi)是怎么被虛擬機(jī)識(shí)別加載至內(nèi)存的

    java編譯成class文件后,虛擬機(jī)是怎么解析class文件并且初始化我們的實(shí)體類(lèi)的呢? 這時(shí)候提到j(luò)vm類(lèi)加載機(jī)制和雙親委派模型了

    1)Bootstrap ClassLoader

    負(fù)責(zé)加載$JAVA_HOME中jre/lib/rt.jar里所有的class,由C++實(shí)現(xiàn),不是ClassLoader子類(lèi)

    2)Extension ClassLoader

    負(fù)責(zé)加載java平臺(tái)中擴(kuò)展功能的一些jar包,包括$JAVA_HOME中jre/lib/*.jar或-Djava.ext.dirs指定目錄下的jar包

    3)App ClassLoader

    負(fù)責(zé)記載classpath中指定的jar包及目錄中class

    4)Custom ClassLoader

    屬于應(yīng)用程序根據(jù)自身需要自定義的ClassLoader,如tomcat、jboss都會(huì)根據(jù)j2ee規(guī)范自行實(shí)現(xiàn)ClassLoader

    加載過(guò)程中會(huì)先檢查類(lèi)是否被已加載,檢查順序是自底向上,從Custom ClassLoader到BootStrap ClassLoader逐層檢查,只要某個(gè)classloader已加載就視為已加載此類(lèi),保證此類(lèi)只所有ClassLoader加載一次。而加載的順序是自頂向下,也就是由上層來(lái)逐層嘗試加載此類(lèi)。

    那么我們自己在項(xiàng)目里面寫(xiě)的代碼是由哪個(gè)加載器加載的呢?

    雙親委派
    雙親委派模式要求除了頂層的啟動(dòng)類(lèi)加載器之外,其余的類(lèi)加載器都應(yīng)該有自己的父類(lèi)加載器,但是在雙親委派模式中父子關(guān)系采取的并不是繼承的關(guān)系,而是采用組合關(guān)系來(lái)復(fù)用父類(lèi)加載器的相關(guān)代碼。

    protected Class<?> loadClass(String name, boolean resolve)throws ClassNotFoundException {// 增加同步鎖,防止多個(gè)線程加載同一類(lèi)synchronized (getClassLoadingLock(name)) {// First, check if the class has already been loadedClass<?> c = findLoadedClass(name);if (c == null) {long t0 = System.nanoTime();try {if (parent != null) {c = parent.loadClass(name, false);} else { // ExtClassLoader沒(méi)有繼承BootStrapClassLoaderc = findBootstrapClassOrNull(name);}} catch (ClassNotFoundException e) {// ClassNotFoundException thrown if class not found// from the non-null parent class loader}if (c == null) {// If still not found, then invoke findClass in order// to find the class.long t1 = System.nanoTime();// AppClassLoader去我們項(xiàng)目中查找是否有這個(gè)文件,如有加載進(jìn)來(lái)// 沒(méi)有就到用戶自定義ClassLoader中加載。如果沒(méi)有就拋出異常c = findClass(name);// this is the defining class loader; record the statssun.misc.PerfCounter.getParentDelegationTime().addTime(t1 - t0);sun.misc.PerfCounter.getFindClassTime().addElapsedTimeFrom(t1);sun.misc.PerfCounter.getFindClasses().increment();}}if (resolve) {resolveClass(c);}return c;} }

    工作原理
    如果一個(gè)類(lèi)收到了類(lèi)加載的請(qǐng)求,它并不會(huì)自己先去加載,而是把這個(gè)請(qǐng)求委托給父類(lèi)加載器去執(zhí)行,如果父類(lèi)加載器還存在父類(lèi)加載器,則進(jìn)一步向上委托,依次遞歸,請(qǐng)求最后到達(dá)頂層的啟動(dòng)類(lèi)加載器,如果弗雷能夠完成類(lèi)的加載任務(wù),就會(huì)成功返回,倘若父類(lèi)加載器無(wú)法完成任務(wù),子類(lèi)加載器才會(huì)嘗試自己去加載,這就是雙親委派模式。就是每個(gè)兒子都很懶,遇到類(lèi)加載的活都給它爸爸干,直到爸爸說(shuō)我也做不來(lái)的時(shí)候,兒子才會(huì)想辦法自己去加載。

    優(yōu)勢(shì)
    采用雙親委派模式的好處就是Java類(lèi)隨著它的類(lèi)加載器一起具備一種帶有優(yōu)先級(jí)的層次關(guān)系,通過(guò)這種層級(jí)關(guān)系可以避免類(lèi)的重復(fù)加載,當(dāng)父親已經(jīng)加載了該類(lèi)的時(shí)候,就沒(méi)有必要子類(lèi)加載器(ClassLoader)再加載一次。其次是考慮到安全因素,Java核心API中定義類(lèi)型不會(huì)被隨意替換,假設(shè)通過(guò)網(wǎng)路傳遞一個(gè)名為java.lang.Integer的類(lèi),通過(guò)雙親委派的的模式傳遞到啟動(dòng)類(lèi)加載器,而啟動(dòng)類(lèi)加載器在核心Java API發(fā)現(xiàn)這個(gè)名字類(lèi),發(fā)現(xiàn)該類(lèi)已經(jīng)被加載,并不會(huì)重新加載網(wǎng)絡(luò)傳遞過(guò)來(lái)的java.lang.Integer.而之際返回已經(jīng)加載過(guò)的Integer.class,這樣便可以防止核心API庫(kù)被隨意篡改。可能你會(huì)想,如果我們?cè)赾alsspath路徑下自定義一個(gè)名為java.lang.SingInteger?該類(lèi)并不存在java.lang中,經(jīng)過(guò)雙親委托模式,傳遞到啟動(dòng)類(lèi)加載器中,由于父類(lèi)加載器路徑下并沒(méi)有該類(lèi),所以不會(huì)加載,將反向委托給子類(lèi)加載器,最終會(huì)通過(guò)系統(tǒng)類(lèi)加載器加載該類(lèi),但是這樣做是不允許的,因?yàn)閖ava.lang是核心的API包,需要訪問(wèn)權(quán)限,強(qiáng)制加載將會(huì)報(bào)出如下異常。

    java.lang.SecurityException:Prohibited package name: java.lang

    想了解更多關(guān)于jvm類(lèi)加載機(jī)制和雙親委派模型可以參考:

  • 深入理解JVM類(lèi)加載機(jī)制
  • JVM內(nèi)存結(jié)構(gòu)、垃圾收集算法、垃圾收集器、字節(jié)碼文件結(jié)構(gòu)、類(lèi)加載機(jī)制
  • jvm的運(yùn)行機(jī)制

    開(kāi)始進(jìn)入正題,讓我們一起看看底層C++代碼是怎么一步一步執(zhí)行到main函數(shù)的吧

    main()方法:

    int main(int argc, char *argv[]) { //#ifdef DEBUGsync_wcout::set_switch(true); //#endifif (argc != 2) {std::wcerr << "argc is not 2. please re-run." << std::endl;exit(-1);}wstring program = utf8_to_wstring(std::string(argv[1]));std::ios::sync_with_stdio(true); // keep thread safe?std::wcout.imbue(std::locale(""));std::vector<std::wstring> v{ L"automan_jvm", L"1", L"2" };automan_jvm::run(program, v); }

    從源碼中,我們可以看到,它從程序啟動(dòng)時(shí)獲取參數(shù),并進(jìn)行監(jiān)測(cè)。 目前該程序要求的是只能有兩個(gè)參數(shù)。 但是實(shí)際上還有許多參數(shù)是可以在這里配置的 ,參數(shù)設(shè)置請(qǐng)看這里 JVM參數(shù)設(shè)置
    run()方法:
    然后,它以相關(guān)的參數(shù),調(diào)用了 jvm的 run方法。 代碼如下:

    void automan_jvm::run(const wstring & main_class_name, const vector<wstring> & argv) {//todo: 這里注冊(cè)了一個(gè)交互信號(hào),信號(hào)處理程序又是一個(gè) 無(wú)限循環(huán),需要注意//todo: 用 raise 生成信號(hào)signal(SIGINT, SIGINT_handler);automan_jvm::main_class_name() = std::regex_replace(main_class_name, std::wregex(L"\\."), L"/");automan_jvm::argv() = const_cast<vector<wstring> &>(argv);vm_thread *init_thread;automan_jvm::lock().lock();{automan_jvm::threads().push_back(vm_thread(nullptr, {}));init_thread = &automan_jvm::threads().back();}automan_jvm::lock().unlock();init_native();HANDLE gc_tid;gc_tid= (HANDLE)(_beginthreadex(nullptr, 0, reinterpret_cast<unsigned int (*)(void *)>(GC::gc_thread), NULL, 0, NULL));gc_thread() = gc_tid;// go!init_thread->launch(); // begin this thread. }

    注意到代碼的第二行,它注冊(cè)了一個(gè)交互信號(hào),此時(shí)的環(huán)境仍然是本地線程,即該線程為根線程,不受jvm的管理。信號(hào)處理程序?qū)嶋H上是一個(gè) gc任務(wù),這也是為什么我們時(shí)常聽(tīng)到j(luò)ava的gc觸發(fā),既有jvm管理的部分,也有本地的部分。 它的代碼如下:

    void SIGINT_handler(int signo) {// re-use gc bit to stop-the-world,but won't trigger GC。while (true) {bool gc;GC::gc_lock().lock();{gc = GC::gc();}GC::gc_lock().unlock();if (gc) {continue;} else {GC::gc_lock().lock();{GC::gc() = true;}GC::gc_lock().unlock();// FIXME: I don't know whether it is safe... only a solution for dead lock of wind_jvm::num_lock...automan_jvm::num_lock().unlock(); // It's only a patch.GC::detect_ready();GC::gc() = false; // set backBytecodeEngine::main_thread_exception(); // exit}} }

    我們觀察到,該方法實(shí)際上是一個(gè)無(wú)限循環(huán),但是這個(gè)線程又是根線程,所以我最開(kāi)始有一些疑惑。 現(xiàn)在回頭來(lái)看時(shí),我注意到: GC::detect_ready(),該方法實(shí)際上也是無(wú)限循環(huán)的,但是,它會(huì)主動(dòng)的釋放cpu。 我們看看這個(gè)方法:

    void GC::detect_ready() {while (true) {LockGuard lg(gc_lock());int total_ready_num = 0;int total_size;ThreadTable::get_lock().lock();{total_size = ThreadTable::get_thread_table().size();for (auto & iter : ThreadTable::get_thread_table()) {thread_state state = std::get<2>(iter.second)->state;if (state == Waiting || state == Death/*iter.second == false && iter.first->vm_stack.size() == 0*/) {total_ready_num ++;} else {break;}}}ThreadTable::get_lock().unlock();ThreadTable::print_table(); // deleteif (total_ready_num == total_size) { // over!return;}Sleep(1);} }

    可以看到,它實(shí)際上在管理 jvm內(nèi)部的線程。 根據(jù)線程狀態(tài),進(jìn)行線程的回收。 它的退出條件是: jvm的內(nèi)部所有線程均為活躍線程。 同時(shí),它沒(méi)有互斥量進(jìn)行阻塞,可見(jiàn)它的活躍程度是很高的。 換言之,一旦程序觸發(fā)了退出信號(hào),jvm內(nèi)部的線程維護(hù),幾乎時(shí)刻在運(yùn)行。

    讓我們回到 信號(hào)處理程序上,它最后調(diào)用了: BytecodeEngine::main_thread_exception(),它的代碼及作用如下:

    void BytecodeEngine::main_thread_exception(int exitcode) // dummy is use for BytecodeEngine::excute / SIGINT_handler. {automan_jvm::lock().lock();{for (auto & thread : automan_jvm::threads()) {WaitForSingleObject(_all_thread_wait_mutex,INFINITE);thread_state state = thread.state;ReleaseMutex(_all_thread_wait_mutex);if (state == Death) { // pthread_cancel SIGSEGV bug sloved:continue;}if (thread.tid != GetCurrentThreadId()) {HANDLE _handle =OpenThread(THREAD_ALL_ACCESS,FALSE,GetCurrentThreadId());WaitForSingleObject(_handle,INFINITE);CloseHandle(_handle);//todo: 當(dāng)線程執(zhí)行完后,清理。cleanup(nullptr);} else {thread.state = Death;}}}automan_jvm::lock().unlock();GC::cancel_gc_thread();automan_jvm::end();exit(exitcode); }

    可以看到,它實(shí)際上是等待當(dāng)前jvm中,所有的線程執(zhí)行完畢,回收相關(guān)的資源。 然后回收gc線程,調(diào)用jvm的end方法收尾,最后退出整個(gè)程序。

    因此,我們可以說(shuō): jvm啟動(dòng)之初,掛載了一個(gè)信號(hào)處理程序,該程序負(fù)責(zé)所有的收尾工作,一旦接收到特定信號(hào),整個(gè)程序完成,然后退出。 但是這里我一點(diǎn)不懂,它設(shè)計(jì)成了 while(true)的方式,但是實(shí)際上該代碼塊只能被執(zhí)行一次,這個(gè)問(wèn)題留待以后有緣再回答吧。

    ok,如今我可以回退退退到: jvm的run方法那里,繼續(xù)解讀。

    信號(hào)處理程序注冊(cè)完后,之后的代碼功能依次是:

    1.將傳入的參數(shù)保存到j(luò)vm中;

    2.在jvm的線程表中,插入了一個(gè)方法和參數(shù)均為空的線程,注意了,該線程將被稱(chēng)為初始化線程(init_thread),并且該線程不受 jvm的管控,它是本地線程象征性的放入 jvm的線程表。

    3.初始化本地方法,實(shí)際上就是將本地的庫(kù)地址進(jìn)行緩存,本質(zhì)上將本地的方法緩存起來(lái),緩存的內(nèi)容包括native包下的所有類(lèi)的核心方法。

    4.開(kāi)啟一個(gè)gc線程,同時(shí)該gc線程并不會(huì)放入 jvm的線程表中,而是單獨(dú)的存儲(chǔ)在jvm中。也就是jvm可以直接操縱該線程。 此外,這個(gè)gc線程本身也是一個(gè)真正意義上的線程,它才生成之后,將會(huì)根據(jù)信號(hào),阻塞式的進(jìn)行垃圾清理。它與上面注冊(cè)的那個(gè)信號(hào)處理程序有些不同,我們可以看到其源碼:

    unsigned *GC::gc_thread(void *) {// init `cond` and `mutex` first:gc_cond = CreateEvent(NULL,FALSE,FALSE,NULL);gc_cond_mutes=CreateMutex(NULL,FALSE,NULL);while (true) {WaitForSingleObject(gc_cond_mutes,INFINITE);//todo: 這里會(huì)等待gc條件,該線程具有跟進(jìn)程一樣長(zhǎng)的生命周期WaitForSingleObject(gc_cond,INFINITE);ReleaseMutex(gc_cond_mutes);detect_ready();system_gc();} }

    它會(huì)阻塞式的接收處理信號(hào),每次任務(wù),將會(huì)首先處理線程回收,然后處理資源回收,也就是system_gc()的作用,考慮到這里主線不是討論gc,所以暫時(shí)先不看gc的細(xì)節(jié)。

    5.初始化線程調(diào)用launch()操作,進(jìn)行java程序的啟用,需要注意,當(dāng)前的初始化線程(init_thread),也就是根線程。

    launch()方法:
    該方法可以說(shuō)是關(guān)鍵了,內(nèi)容很細(xì)也很多,考慮到本文的主線任務(wù),將略寫(xiě)本方法,提一提它的功能作用即可,其代碼如下:

    void vm_thread::launch(InstanceOop *cur_thread_obj) {// start one threadp.thread = this;p.arg = &const_cast<std::list<Oop *> &>(arg);p.cur_thread_obj = cur_thread_obj;if (cur_thread_obj != nullptr) { // if arg is not nullptr, must be a thread created by `start0`.p.should_be_stop_first = true;}bool inited = automan_jvm::inited();//todo: 實(shí)際上這個(gè)線程是用于初始化的HANDLE cur_handle = (HANDLE)(_beginthreadex(NULL, 0, scapegoat, &p, 0, NULL));this->tid = GetThreadId(cur_handle); // save to the vm_thread.if (!inited) { // if this is the main thread which create the first init --> thread[0], then wait.//todo: 阻塞執(zhí)行 tid線程,tid執(zhí)行完后才往后執(zhí)行WaitForSingleObject(cur_handle,INFINITE);GC::signal_all_patch();int remain_thread_num;while(true) {automan_jvm::num_lock().lock();{remain_thread_num = automan_jvm::thread_num();}automan_jvm::num_lock().unlock();assert(remain_thread_num >= 0);if (remain_thread_num == 0) {break;}//讓出CPU調(diào)度Sleep(0);}GC::cancel_gc_thread();automan_jvm::end(); #ifdef DEBUGsync_wcout{} << pthread_self() << " run over!!!" << std::endl; // delete #endif} }

    從代碼中可以看出,它首先將 init_thread與jvm進(jìn)行了綁定,然后獲取jvm的初始化狀態(tài)。當(dāng)然了首次運(yùn)行時(shí),此時(shí)其肯定未被初始化。 之后它將開(kāi)啟另一個(gè)線程,注意注意了,這是繼 gc線程后,本程序開(kāi)啟的第二個(gè)線程。 這個(gè)線程實(shí)際上將是我們?cè)趈ava端調(diào)用mian方法的那個(gè)線程。同時(shí),它也會(huì)做很多的工作,在本文中,我先暫不討論,后文會(huì)專(zhuān)門(mén)的討論。

    之后,init_thread將會(huì)阻塞在此,直到j(luò)ava的mian線程結(jié)束。 之后init_thread會(huì)做如下工作:

    1.喚醒所有阻塞的線程。 其代碼如下:

    void GC::signal_all_patch() {while(true) {gc_lock().lock();if (!GC::gc()) { // if not in gc, signal all thread is okay.signal_all_thread();break;}gc_lock().unlock();}gc_lock().unlock(); void signal_all_thread() {int size = automan_jvm::thread_num();for (int i = 0; i < size; ++i) {SetEvent(_all_thread_wait_cond);//todo: 這里通過(guò)釋放 CPU 達(dá)到broadst的目的Sleep(0);} }

    2.判斷當(dāng)前jvm的線程數(shù)量,當(dāng)線程數(shù)量為0的時(shí)候,退出循環(huán)。

    3.取消gc線程,以及 調(diào)用 jvm的end進(jìn)行收尾。 整個(gè)程序代碼執(zhí)行完畢,退出。 這里我需要提一下,windows中,主線程退出,則子線程也會(huì)立即退出,無(wú)論子線程是否執(zhí)行完畢(linux則不會(huì))。 所以,這里面對(duì)jvm 的穩(wěn)健性有要求,如果jvm錯(cuò)誤的判斷當(dāng)前系統(tǒng)中的線程數(shù),則會(huì)造成一個(gè)不可預(yù)見(jiàn)的后果。 (注意,當(dāng)java的主線程執(zhí)行完畢后,jvm實(shí)際上進(jìn)入了一個(gè)預(yù)退出狀態(tài),此時(shí)對(duì)線程的管理是十分活躍的,正如 信號(hào)處理程序中的那樣!我不知道這是整個(gè)demo本身的原因,還是說(shuō)發(fā)行版的jvm就是這樣設(shè)計(jì)的。)

    總結(jié):
    目前,我們知道,整個(gè)jvm的原生階段(不考慮java中新開(kāi)線程的影響),包含了三個(gè)線程,即初始化線程,gc線程,java的主線程。

    程序的正常退出包括兩個(gè)途徑:

    1.java的mian線程執(zhí)行完畢后,且jvm的其它線程均執(zhí)行完畢,則整個(gè)程序會(huì)因?yàn)榇a執(zhí)行完畢而退出。

    2.觸發(fā)了退出的信號(hào),我查了下信號(hào)量: SIGINT, 它好像是 “通過(guò)ctrl+c對(duì)當(dāng)前進(jìn)程發(fā)送結(jié)束信號(hào)”,這就說(shuō)得通了。

    在代碼中, 我找到有主動(dòng)發(fā)出這個(gè)信號(hào)的地方,位于runtime/thread中,但是pthread中,是給單個(gè)線程發(fā)送信號(hào),在windows中,我暫未找到相關(guān)的api,因此就是粗略處理的: 其代碼如下:

    void ThreadTable::kill_all_except_main_thread(DWORD main_tid) {for (auto iter : get_thread_table()) {if (iter.first == main_tid) continue;else {//這里相當(dāng)于觸發(fā)gcDWORD ret = raise(SIGINT);if (ret!=0) {assert(false);}}} }

    從它的方法名稱(chēng),以及實(shí)現(xiàn)來(lái)看,它應(yīng)該是要 關(guān)閉除了當(dāng)前線程之外的其它所有 jvm線程。可是一旦觸發(fā)信號(hào)后,實(shí)際上會(huì)導(dǎo)致程序整體退出。 我想這可能是 跟 main_exception_thread有關(guān),那個(gè)方法會(huì)根據(jù)當(dāng)前的線程,而定點(diǎn)關(guān)閉線程。 同時(shí)整個(gè)代碼塊是線程安全的。 這樣就是說(shuō),當(dāng)SIGINT信號(hào)走到了 取消gc線程的時(shí)候,那么所有的線程一定是關(guān)閉了的。 bingo!!

    目前尚未驗(yàn)證,但是我想應(yīng)該是這樣的。 只是不知道這里并非根據(jù)線程去觸發(fā) 信號(hào),應(yīng)該是需要進(jìn)一步完善的。

    目前為止,整個(gè)jvm的行為算是粗略的分析完了

    jvm的啟動(dòng)細(xì)節(jié)1—launch

    節(jié)上文,jvm的launch方法的內(nèi)容詳細(xì)講述一下。 在vm的launch中,有如下方法塊:

    .... HANDLE cur_handle = (HANDLE)(_beginthreadex(NULL, 0, scapegoat, &p, 0, NULL));this->tid = GetThreadId(cur_handle); // save to the vm_thread.if (!inited) { // if this is the main thread which create the first init --> thread[0], then wait.//todo: 阻塞執(zhí)行 tid線程,tid執(zhí)行完后才往后執(zhí)行WaitForSingleObject(cur_handle,INFINITE); ....

    其中第一行代碼開(kāi)辟的這個(gè)線程,便是java中的mian線程,也就是java中的主線程。 它接收命令的參數(shù)去執(zhí)行任務(wù)。 其中,scapegoat方法 的代碼如下:

    //線程的任務(wù) unsigned scapegoat (void *pp) {temp *real = (temp *)pp; // if (real->cur_thread_obj != nullptr) { // so the ThreadTable::get_thread_obj may be nullptr. // I add all thread into Table due to gc should stop all threads.ThreadTable::add_a_thread(GetCurrentThreadId(), real->cur_thread_obj, real->thread); // the cur_thread_obj is from `java/lang/Thread.start0()`. // }if (real->should_be_stop_first) { // if this thread is a child thread created by `start0`: should stop it first because of gc's race.// it will be hung up at the `global pthread_cond`. and will be wake up by `signal_all_thread()`.wait_cur_thread_and_set_bit(&real->the_first_wait_executed, real->thread);}real->thread->start(*real->arg);return 0; };

    通過(guò)代碼不難察覺(jué),它首先將當(dāng)前的線程加入了jvm的線程表中,進(jìn)行管理(注意,此時(shí)jvm線程表中,實(shí)際上管理的線程有兩個(gè)了,一個(gè)是init_thread,它是本地線程的抽象,另一個(gè)就是 mian線程,也就是當(dāng)前加入的這個(gè)線程)。 接著,當(dāng)前線程(mian線程) 將會(huì)調(diào)用 start()方法,將命令行的參數(shù)一并傳遞。 start的源碼如下:

    void vm_thread::start(list<Oop *> & arg) {if (automan_jvm::inited() == false) {assert(method == nullptr); // if this is the init thread, method will be nullptr. this thread will get `main()` automatically.assert(arg.size() == 0);automan_jvm::inited() = true; // important!//todo: 這里是執(zhí)行 main 方法 ,重要vm_thread::init_and_do_main(); // init global variables and execute `main()` function.} else {// [x] if this is not the thread[0], detach itself is okay because no one will pthread_join it.//todo: 這里分離子線程 // CloseHandle(tid); // pthread_detach(pthread_self());assert(this->vm_stack.size() == 0); // checkassert(arg.size() == 1); // run() only has one argument `this`.this->vm_stack.push_back(StackFrame(method, nullptr, nullptr, arg, this));this->execute();automan_jvm::num_lock().lock();{automan_jvm::thread_num() --;assert(automan_jvm::thread_num() >= 0);}automan_jvm::num_lock().unlock();}WaitForSingleObject(_all_thread_wait_mutex,INFINITE);this->state = Death;ReleaseMutex(_all_thread_wait_mutex); }

    它會(huì)根據(jù)jvm是否初始化而判定當(dāng)前線程的start是去引導(dǎo)和啟動(dòng)main方法,還是一般的線程。 注意我們?cè)趯W(xué)習(xí)java的時(shí)候,實(shí)例化線程我們需要重寫(xiě)run(){}方法,這個(gè)run方法里面寫(xiě)的實(shí)際上是線程的任務(wù),而線程的啟動(dòng),是由一個(gè)start0本地方法,即jvm調(diào)用的。 調(diào)用之后,會(huì)來(lái)到這里這個(gè)代碼塊。 它將走else下面這個(gè)代碼邏輯,里面實(shí)際上就是執(zhí)行了run方法。 run方法執(zhí)行完后,會(huì)將當(dāng)前的線程狀態(tài)改為 death. 之后這個(gè)線程便會(huì)在特定的時(shí)期被gc給回收掉。

    扯遠(yuǎn)了,我們還是看看main線程的操作吧。 它將會(huì)調(diào)用 vm_thread::init_and_do_main()方法。 這個(gè)方法就比較長(zhǎng),我將分塊展示。

    1.初始化Class,用于類(lèi)的映射

    java_lang_class::init(); // must init !!!auto class_klass = BootStrapClassLoader::get_bootstrap().loadClass(L"java/lang/Class");java_lang_class::fixup_mirrors(); // only [basic types] + java.lang.Class + java.lang.Object

    首先,調(diào)用java_lang_class::init()方法,它的作用是將 使用標(biāo)識(shí)符與 (核心)類(lèi)進(jìn)行隱射,代碼如下:

    void java_lang_class::init() { // must execute this method before jvm!!!auto & delay_mirrors = get_single_delay_mirrors();// basic types.delay_mirrors.push(L"I");delay_mirrors.push(L"Z");delay_mirrors.push(L"B");delay_mirrors.push(L"C");delay_mirrors.push(L"S");delay_mirrors.push(L"F");delay_mirrors.push(L"J");delay_mirrors.push(L"D");delay_mirrors.push(L"V"); // void...delay_mirrors.push(L"[I");delay_mirrors.push(L"[Z");delay_mirrors.push(L"[B");delay_mirrors.push(L"[C");delay_mirrors.push(L"[S");delay_mirrors.push(L"[F");delay_mirrors.push(L"[J");delay_mirrors.push(L"[D");// set statestate() = Inited; }

    然后,使用BootstrapClassLoader去加載 Class類(lèi),注意注意,我們看下BoostrapClassLoader的源碼:

    class BootStrapClassLoader : public ClassLoader { private:JarLister jl; private:BootStrapClassLoader() {}BootStrapClassLoader(const BootStrapClassLoader &);BootStrapClassLoader& operator= (const BootStrapClassLoader &);~BootStrapClassLoader() {} public:static BootStrapClassLoader & get_bootstrap() {static BootStrapClassLoader bootstrap;return bootstrap;} // singletonKlass *loadClass(const wstring & classname, ByteStream * = nullptr, MirrorOop * = nullptr,bool = false, InstanceKlass * = nullptr, ObjArrayOop * = nullptr) override;void print() override;void cleanup() override; };

    從接口中,我們能夠判斷兩條消息:

    get_bootstrap調(diào)用會(huì)得到一個(gè)單例對(duì)象;
    BootstrapClassLoader有一個(gè)成員變量JarLister,首次調(diào)用時(shí),會(huì)觸發(fā)它的構(gòu)造方法,我們?nèi)タ纯此臉?gòu)造方法:

    2.初始化BootstrapClassloader以及加載Class:

    //todo: 修改 rjd 為windows 的路徑 JarLister::JarLister() : rjd(L"") {pwd = utf8_to_wstring(getProgramDir());rjd = RtJarDirectory(pwd);wstring rtjar_folder; #if (defined (__APPLE__))rtjar_folder = utf8_to_wstring(pt.get<std::string>("path.mac")); #elif (defined (__linux__))rtjar_folder = utf8_to_wstring(pt.get<std::string>("path.linux")); #else//todo: 這里配置 windows的 rt路徑rtjar_folder = utf8_to_wstring("C:\\Program Files\\Java\\jdk1.8.0_161\\jre\\lib\\"); #endifrtjar_pos =L"\""+ rtjar_folder + L"rt.jar"+L"\"";// copy lib/currency.data to ./lib/currency.data ......wstringstream ss;int status = system(wstring_to_utf8(ss.str()).c_str());if (status == -1) { // http://blog.csdn.net/cheyo/article/details/6595955 [shell 命令是否執(zhí)行成功的判定]std::cerr << "system error!" << endl;}bool success = this->getjarlist(rtjar_pos);if (!success) exit(-1);ifstream f(wstring_to_utf8(this->rtlist), std::ios_base::in);std::string s;while(!f.eof()) {f >> s; // 這里有一個(gè)細(xì)節(jié)。因?yàn)樽詈笠恍袃H僅有個(gè)回車(chē),所以會(huì)讀入空,也就是 s 還是原來(lái)的 s,即最后一個(gè)名字被讀入了兩遍。使用其他的方法對(duì)效率不好,因此在 add_file 中解決了。如果檢測(cè)到有,忽略。if (!Filter::filt(utf8_to_wstring(s))) {this->rjd.add_file(StringSplitter(utf8_to_wstring(s)));}} }

    通過(guò)代碼可以分析,它做了這樣的事情:

  • 或許到當(dāng)前環(huán)境的 rt.jar,這個(gè)文件時(shí)jvm的核心jar包,我配置的是我本機(jī)環(huán)境的rt.jar,它的版本號(hào)是: jdk_1.8_161。同時(shí),因?yàn)樵瓉?lái)這里使用了配置的方式,但是需要以來(lái)boost,我就給替換了,直接手寫(xiě)死的。

  • 調(diào)用 getjartlist方法,該方法馬上詳述。

  • 調(diào)用rjd的add_file方法。 也將會(huì)詳述。

    下面是getjarlist方法:

  • /*===---------------- JarLister --------------------*/ bool JarLister::getjarlist(const wstring & rtjar_pos) const {wstringstream cmd;cmd << L"jar tf " << rtjar_pos << L" > " << this->rtlist;int status = system(wstring_to_utf8(cmd.str()).c_str());if (status == -1) {exit(-1);}// TODO: judge whether mkdir is exist?if (0==access(wstring_to_utf8(uncompressed_dir).c_str(),F_OK)) { // 如果存在return true;}cmd.str(L"");cmd << L"mkdir " << uncompressed_dir;status = system(wstring_to_utf8(cmd.str()).c_str());if (status == -1) {exit(-1);}cmd.str(L"");std::wcout << "unzipping rt.jar from: [" << rtjar_pos << "] ... please wait.\n";cmd << L"unzip " << rtjar_pos << L" -d " << uncompressed_dir ;status = system(wstring_to_utf8(cmd.str()).c_str());if (status == -1) { // http://blog.csdn.net/cheyo/article/details/6595955 [shell 命令是否執(zhí)行成功的判定]std::cerr << "system error!" << endl;exit(-1);} else {if (status) {if (0 ==status) {std::wcout << "unzipping succeed.\n";return true;}else {std::cerr << "Your rt.jar file is not right!" << endl;}} else {std::cerr << "other fault reasons!" << endl;}}return false; }

    它做了這樣的事情:

    1.通過(guò)jar tf 將rt.jar保存的所有類(lèi) 保存至某一特定文件中;

    2.將rt.jar解壓至某一個(gè)特定文件夾中;(注意,這個(gè)文件夾將會(huì)作為是否解壓的標(biāo)準(zhǔn),在同一進(jìn)程中,最多只可能被加壓一次。 我當(dāng)前版本加壓出來(lái)有 2999個(gè)類(lèi),如果解壓信息輸出到控制臺(tái)的話,還是要費(fèi)點(diǎn)時(shí)間。但是我想在發(fā)行版中,一個(gè)環(huán)境下的jvm,應(yīng)該只被解壓一次)。

    接著是rtjarDirectory的addfile()方法:

    void RtJarDirectory::add_file(StringSplitter && ss) {if (ss.counter() == 0) { // 僅僅在第一次的時(shí)候做檢查,看文件到底存不存在if (this->find_file(std::move(ss)) == true) return;else ss.counter() = 0;}const wstring& target = ss.result()[ss.counter()];if (ss.counter() == ss.result().size() - 1) { // next will be the target, add.subdir->insert(make_shared<RtJarDirectory>(target));} else { // dir.auto next_dir = findFolderInThis(target);ss.counter() += 1;if (next_dir != nullptr) {(*next_dir).add_file(std::move(ss)); // delegate to the next level dir.} else { // no next_dir, we should create.// this level's `subdir` can't be nullptr :)subdir->insert(make_shared<RtJarDirectory>(target));next_dir = findFolderInThis(target);assert(next_dir != nullptr);(*next_dir).add_file(std::move(ss));}} }

    它會(huì)將 保存的所有的類(lèi),通過(guò)根據(jù)全限定名稱(chēng)(包名+類(lèi)名)的形式,進(jìn)行分割,最終將 類(lèi)名(去除了包名)的名稱(chēng) 保存進(jìn)一個(gè)智能指針。 這個(gè)結(jié)構(gòu)頗為復(fù)雜,我沒(méi)太看懂,它的定義是這樣的:

    shared_ptr<set<shared_ptr<RtJarDirectory>,shared_RtJarDirectory_compare>> subdir; //sub directory

    我暫且先理解為它保存了所有的類(lèi)名稱(chēng)在內(nèi)存中吧,注意到我獲取的類(lèi)的條目有一萬(wàn)多:

    BootstrapClassLoader初始化完成后,就該去loadClass了,以加載Class為例: // add lock simplyLockGuard lg(system_classmap_lock);assert(jl.find_file(L"java/lang/Object.class")==1);wstring target = classname + L".class";if (jl.find_file(target)) {if (system_classmap.find(target) != system_classmap.end()) { // has been loadedreturn system_classmap[target];} else { // load// parse a ClassFile (load)ifstream f(wstring_to_utf8(jl.get_sun_dir() + L"/" + target).c_str(), std::ios::binary);if(!f.is_open()) {std::wcerr << "wrong! --- at BootStrapClassLoader::loadClass" << std::endl;exit(-1);} #ifdef DEBUGsync_wcout{} << "===----------------- begin parsing (" << target << ") 's ClassFile in BootstrapClassLoader..." << std::endl; #endifClassFile *cf = new ClassFile;ClassFile_Pool::put(cf);f >> *cf; #ifdef DEBUGsync_wcout{} << "===----------------- parsing (" << target << ") 's ClassFile end." << std::endl; #endif// convert to a MetaClass (link)InstanceKlass *newklass = new InstanceKlass(cf, nullptr);system_classmap.insert(make_pair(target, newklass)); #ifdef KLASS_DEBUGBootStrapClassLoader::get_bootstrap().print();MyClassLoader::get_loader().print(); #endifreturn newklass;}//todo:equals to starts with} .........

    上面為loadClass代碼片段,可以看到第二行,它首先判斷了java.lang.Object.class,通過(guò)前面的那個(gè)智能指針,顯然Object是在里面的。(但是,此時(shí)Object并未加載。)這也印證了我前天文章中所說(shuō)的,Object的唯一性是必須要首先保證的。 同時(shí),加載成功時(shí),會(huì)首先 實(shí)例一個(gè)ClassFile放入 類(lèi)池,這個(gè)類(lèi)對(duì)象保存的是 字節(jié)碼二進(jìn)制流!!! 接著,實(shí)例化一個(gè) 實(shí)例類(lèi)對(duì)象,將該類(lèi)對(duì)象保存進(jìn)入 system_classmap。

    3.設(shè)置Object,以及基本類(lèi)型的單例映像:
    該步驟是通過(guò) Class完成的。

    java_lang_class::fixup_mirrors(); // only [basic types] + java.lang.Class + java.lang.Object

    該方法將 8個(gè)基本類(lèi)型,和void 以Mirror實(shí)例的形式放入了一個(gè)緩存。

    ...... switch (name[0]) {case L'I':case L'Z':case L'B':case L'C':case L'S':case L'F':case L'J':case L'D':case L'V':{ // include `void`.// insert into.MirrorOop *basic_type_mirror = ((MirrorKlass *)klass)->new_mirror(nullptr, nullptr);basic_type_mirror->set_extra(name); // set the name `I`, `J` if it's a primitve type.get_single_basic_type_mirrors().insert(make_pair(name, basic_type_mirror));break;}default:{assert(false);}} ......

    4.加載String及Thread:

    // load String.classauto string_klass = ((InstanceKlass *)BootStrapClassLoader::get_bootstrap().loadClass(L"java/lang/String"));// 1. create a [half-completed] Thread obj, using the ThreadGroup obj.(for currentThread(), this must be create first!!)auto thread_klass = ((InstanceKlass *)BootStrapClassLoader::get_bootstrap().loadClass(L"java/lang/Thread")); InstanceOop *init_thread = thread_klass->new_instance();BytecodeEngine::initial_client(thread_klass, *this); // first <clinit>!// inject!!//todo: 注意這里的 threadid 的來(lái)源,可能要修改init_thread->set_field_value(THREAD L":eetop:J", new LongOop((uint64_t)GetCurrentThreadId()));//todo: 這里的線程優(yōu)先級(jí)還沒(méi)有綁定到 thread句柄上, 通過(guò) setThreadPriorityinit_thread->set_field_value(THREAD L":priority:I", new IntOop(5));//todo: 這里通過(guò) openthread 根據(jù)當(dāng)前線程的id 獲取到線程句柄 注意,當(dāng)前線程的句柄不能關(guān)閉ThreadTable::add_a_thread(GetCurrentThreadId(), init_thread, this);

    加載完Thread之后,會(huì)生成一個(gè)Thread的實(shí)例對(duì)象。之后會(huì)進(jìn)行類(lèi)的初始化,注意這是jvm中第一次類(lèi)的初始化,它會(huì)一直向上初始化直到Object。

    設(shè)置相關(guān)屬性后,放入jvm的線程表中。 注意了,此時(shí)有在線程表中,就有了兩個(gè)個(gè)線程了。 但是注意這個(gè)線程跟第二個(gè)線程的id號(hào)是一致的,同時(shí),它并不是真正意義上的線程,只是一個(gè)抽象。 在線程表的插入中有如下代碼:

    if (get_thread_table().insert(make_pair(tid, make_tuple(get_thread_table().size(), _thread, t))).second == false) { // 如果原先已經(jīng)插入了的話,那么就復(fù)用原先的 thread_no.number = std::get<0>(get_thread_table()[tid]);}

    也就是說(shuō),the_whole_world的線程表中的線程數(shù)仍然是兩個(gè)。

    5.加載并實(shí)例化ThreadGroup:

    // 2. create a [System] ThreadGroup obj.auto threadgroup_klass = ((InstanceKlass *)BootStrapClassLoader::get_bootstrap().loadClass(L"java/lang/ThreadGroup"));InstanceOop *init_threadgroup = threadgroup_klass->new_instance();BytecodeEngine::initial_client(threadgroup_klass, *this); // first <clinit>!{std::list<Oop *> list;list.push_back(init_threadgroup); // $0 = this// execute method: java/lang/ThreadGroup.<init>:()V --> private Method!!Method *target_method = threadgroup_klass->get_this_class_method(L"<init>:()V");assert(target_method != nullptr);this->add_frame_and_execute(target_method, list);} // 3. INCOMPLETELY create a [Main] ThreadGroup obj.InstanceOop *main_threadgroup = threadgroup_klass->new_instance();{init_thread->set_field_value(THREAD L":group:Ljava/lang/ThreadGroup;", main_threadgroup);}assert(this->vm_stack.size() == 0);BytecodeEngine::initial_client(((InstanceKlass *)class_klass), *this);((InstanceKlass *)class_klass)->set_static_field_value(L"useCaches:Z", new IntOop(false));

    注意,這里除了 類(lèi)初始化之外,還初始化了一個(gè) ThreadGroup對(duì)象。 實(shí)例化的threadGroup為主線程組。

    6.加載并初始化System:

    // 3. load System classauto system_klass = ((InstanceKlass *)BootStrapClassLoader::get_bootstrap().loadClass(L"java/lang/System"));system_klass->set_state(Klass::KlassState::Initializing); // BytecodeEngine::initial_clinit(system_klass, *this);auto InputStream_klass = ((InstanceKlass *)BootStrapClassLoader::get_bootstrap().loadClass(L"java/io/InputStream"));BytecodeEngine::initial_client(InputStream_klass, *this);auto PrintStream_klass = ((InstanceKlass *)BootStrapClassLoader::get_bootstrap().loadClass(L"java/io/PrintStream"));BytecodeEngine::initial_client(PrintStream_klass, *this);auto SecurityManager_klass = ((InstanceKlass *)BootStrapClassLoader::get_bootstrap().loadClass(L"java/lang/SecurityManager"));BytecodeEngine::initial_client(SecurityManager_klass, *this);

    System用于設(shè)置相關(guān)的屬性,并且完成 當(dāng)前程序的標(biāo)準(zhǔn)輸入流,輸出流,錯(cuò)誤流的綁定。 windows上,每個(gè)程序的標(biāo)準(zhǔn)輸入輸出和錯(cuò)誤流就是控制臺(tái)。

    7.加載并實(shí)例化Perf 和 LauncherHelper:

    auto Perf_klass = ((InstanceKlass *)BootStrapClassLoader::get_bootstrap().loadClass(L"sun/misc/Perf"));Perf_klass->set_state(Klass::KlassState::Initializing); // ban Perf.auto PerfCounter_klass = ((InstanceKlass *)BootStrapClassLoader::get_bootstrap().loadClass(L"sun/misc/PerfCounter"));PerfCounter_klass->set_state(Klass::KlassState::Initializing); // ban PerfCounter.auto launcher_helper_klass = ((InstanceKlass *)BootStrapClassLoader::get_bootstrap().loadClass(L"sun/launcher/LauncherHelper"));BytecodeEngine::initial_client(launcher_helper_klass, *this);Method *load_main_method = launcher_helper_klass->get_this_class_method(L"checkAndLoadMain:(ZILjava/lang/String;)Ljava/lang/Class;");

    Perf作用暫時(shí)不清楚,LauncherHelper會(huì)用于引導(dǎo) Launcher然后使用 AppClassLoader去加載用戶類(lèi)。

    8.加載動(dòng)態(tài)調(diào)用的類(lèi):

    // load some useful klass...{auto methodtype_klass = ((InstanceKlass *)BootStrapClassLoader::get_bootstrap().loadClass(L"java/lang/invoke/MethodType"));BytecodeEngine::initial_client(methodtype_klass, *this);auto methodhandle_klass = ((InstanceKlass *)BootStrapClassLoader::get_bootstrap().loadClass(L"java/lang/invoke/MethodHandle"));BytecodeEngine::initial_client(methodhandle_klass, *this);}

    9.執(zhí)行main:
    launch流程結(jié)束。

    jvm的啟動(dòng)細(xì)節(jié)2—classloader

    說(shuō)到這個(gè)古老的話題,那可得追溯到我寫(xiě)文章開(kāi)始。 那一年春節(jié),我決定看看源碼,一上來(lái)就猛的 想把那個(gè)雙親加載機(jī)制給搞明白。 事實(shí)上,一直沒(méi)怎么搞明白,唯一的作用是給了自己學(xué)習(xí)的動(dòng)力。 但是今天我想借著這個(gè)機(jī)會(huì),是可以完全搞懂的。

    上午說(shuō)到,jvm在加載客戶類(lèi)之前,會(huì)啟動(dòng)一個(gè)LauncherHelper類(lèi),代碼如下:

    BytecodeEngine::initial_client(launcher_helper_klass, *this);Method *load_main_method = launcher_helper_klass->get_this_class_method(L"checkAndLoadMain:(ZILjava/lang/String;)Ljava/lang/Class;");// new a String.wstring ss = automan_jvm::main_class_name();InstanceOop *main_klass = (InstanceOop *)java_lang_string::intern(automan_jvm::main_class_name());this->vm_stack.push_back(StackFrame(load_main_method, nullptr, nullptr, {new IntOop(true), new IntOop(1), main_klass}, this)); //todo: 到這里應(yīng)該是java層面的類(lèi)加載器開(kāi)始生效!!! MirrorOop *main_class_mirror = (MirrorOop *)this->execute(); 接著去看看 checkAndLoadMain方法:

    之后通過(guò)ClassLoader的loadClass方法,通過(guò)查找虛擬表,調(diào)用Launcher的AppClassLoader的loadClass方法,再調(diào)用之前,將會(huì)首先進(jìn)行AppClassClassloader的初始化(這個(gè)初始化過(guò)程蠻復(fù)雜的):




    花了較多的精力去看這塊的源碼,主要原因基于以下幾點(diǎn):

    1.windows中由于文件系統(tǒng)路徑分隔符的原因,我在調(diào)試時(shí)就遇到了一個(gè)坑,即我明明需要使用 文件系統(tǒng)去加載,但是它卻使用了JarLoader去加載。 現(xiàn)在回過(guò)頭來(lái),知道了其原因: 首先在LauncherHelper中會(huì)根據(jù)模式選擇加載器,其次會(huì)判斷java.class.path下面的所有配置路徑,如果為文件夾,則會(huì)匹配為 fileLoader,如果為文件,則會(huì)使用默認(rèn)的loader,而實(shí)際上默認(rèn)的loader,其最終采用的還是Jarloader的方式加載的。(我的問(wèn)題就出在這!)。

    2.AppClassLoader與ExtClassLoader都繼承自URLClasspath,因此必須弄明白URLClasspath是在什么時(shí)機(jī)初始化的,以及相應(yīng)的參數(shù)都是什么。 關(guān)于URLClasspath的作用,網(wǎng)上帖子挺多。 它的幾個(gè)關(guān)鍵方法: loadClass,findClass,defineClass 可以用于驗(yàn)證雙親委派機(jī)制的運(yùn)行流程。

    我在調(diào)試時(shí),分別給loadClass 和 defineClass添加了錨點(diǎn), 最終實(shí)際上是可以印證雙親委派模型的。 由于當(dāng)時(shí)未截圖,因此這里就不再繼續(xù)操作了。(因?yàn)檫@個(gè)過(guò)程實(shí)在是有些痛苦~,感興趣的小伙伴可以親自調(diào)試一下)。

    另外強(qiáng)調(diào)一點(diǎn)就是,以前沒(méi)有認(rèn)識(shí)到URLClassLoader在java中的重要性,以及URLClassLoader與URLClasspath的關(guān)系,這是一個(gè)十分有趣的問(wèn)題。

    此外,在AppclassLoader加載類(lèi)的過(guò)程中,它的流將會(huì)以匿名內(nèi)部類(lèi)的形式給出:

    就到這吧,原計(jì)劃寫(xiě)的很詳細(xì)的,但是真寫(xiě)了太細(xì)了吧,速度太慢,自己又是個(gè)急性子。 后續(xù)再補(bǔ)充細(xì)節(jié),還需要進(jìn)一步的學(xué)習(xí)補(bǔ)充。。。

    總結(jié)

    以上是生活随笔為你收集整理的main函数初探的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

    亚洲人成无码网www | 国产激情无码一区二区 | 婷婷五月综合激情中文字幕 | 日本一卡二卡不卡视频查询 | 天下第一社区视频www日本 | 久久精品国产99精品亚洲 | 色诱久久久久综合网ywww | 久久综合九色综合欧美狠狠 | 鲁鲁鲁爽爽爽在线视频观看 | 国产成人无码午夜视频在线观看 | 伦伦影院午夜理论片 | 女高中生第一次破苞av | 又大又紧又粉嫩18p少妇 | 欧美日韩色另类综合 | 国产人妻人伦精品 | 一个人免费观看的www视频 | 狠狠亚洲超碰狼人久久 | 四十如虎的丰满熟妇啪啪 | 国产精品无码一区二区桃花视频 | 网友自拍区视频精品 | 欧美丰满少妇xxxx性 | 狠狠噜狠狠狠狠丁香五月 | 国内精品一区二区三区不卡 | 无码人妻丰满熟妇区五十路百度 | a在线亚洲男人的天堂 | 风流少妇按摩来高潮 | 丰腴饱满的极品熟妇 | 2019nv天堂香蕉在线观看 | 精品国产aⅴ无码一区二区 | 国精产品一区二区三区 | 捆绑白丝粉色jk震动捧喷白浆 | 中文字幕无码乱人伦 | 国产av剧情md精品麻豆 | 中文字幕乱妇无码av在线 | 精品夜夜澡人妻无码av蜜桃 | 少妇性俱乐部纵欲狂欢电影 | 国产精品视频免费播放 | 成人av无码一区二区三区 | av香港经典三级级 在线 | 人人妻人人澡人人爽精品欧美 | 国产人妻人伦精品1国产丝袜 | 一个人看的www免费视频在线观看 | 国产午夜精品一区二区三区嫩草 | 国产av一区二区精品久久凹凸 | 免费无码的av片在线观看 | 精品欧美一区二区三区久久久 | 99视频精品全部免费免费观看 | 日本免费一区二区三区最新 | 国产福利视频一区二区 | 人妻有码中文字幕在线 | 麻豆国产人妻欲求不满谁演的 | 国产高清不卡无码视频 | 中文字幕乱妇无码av在线 | 精品偷拍一区二区三区在线看 | 国产深夜福利视频在线 | 精品无码av一区二区三区 | 无码一区二区三区在线观看 | 狠狠色噜噜狠狠狠7777奇米 | 成人免费视频在线观看 | 久久亚洲中文字幕精品一区 | 国产精品无码mv在线观看 | 无码国模国产在线观看 | 亚洲欧美国产精品专区久久 | 国产精品久久久久影院嫩草 | 老太婆性杂交欧美肥老太 | 高潮毛片无遮挡高清免费视频 | 狠狠色噜噜狠狠狠7777奇米 | 久久久国产一区二区三区 | 久久久精品成人免费观看 | 国内精品久久毛片一区二区 | 国产尤物精品视频 | 水蜜桃亚洲一二三四在线 | 成人一区二区免费视频 | 久久久久成人精品免费播放动漫 | 中文字幕av日韩精品一区二区 | 欧美一区二区三区 | 99久久精品日本一区二区免费 | 国产成人精品无码播放 | 日日摸日日碰夜夜爽av | 欧美激情一区二区三区成人 | 国产成人无码午夜视频在线观看 | 欧美放荡的少妇 | 男女超爽视频免费播放 | 婷婷丁香五月天综合东京热 | 亚洲熟妇色xxxxx欧美老妇y | 久久国产精品_国产精品 | 狂野欧美性猛xxxx乱大交 | 婷婷综合久久中文字幕蜜桃三电影 | 人人妻人人澡人人爽欧美一区九九 | 久久五月精品中文字幕 | 久久99精品国产麻豆蜜芽 | 粗大的内捧猛烈进出视频 | 成人欧美一区二区三区黑人免费 | 成人无码视频免费播放 | 色 综合 欧美 亚洲 国产 | 国产性生大片免费观看性 | 波多野42部无码喷潮在线 | 亚洲熟妇自偷自拍另类 | 国产婷婷色一区二区三区在线 | 亚洲va中文字幕无码久久不卡 | 国产精品久久久av久久久 | 欧美人与禽猛交狂配 | 欧美性生交活xxxxxdddd | 未满成年国产在线观看 | 伊人久久大香线蕉亚洲 | 欧美xxxxx精品 | 国产精品久久国产三级国 | 国产精品丝袜黑色高跟鞋 | 久久久久亚洲精品中文字幕 | 国精产品一区二区三区 | 国产超碰人人爽人人做人人添 | 成在人线av无码免费 | 国产精品久久久av久久久 | 国产又爽又猛又粗的视频a片 | 丰满少妇高潮惨叫视频 | 无码中文字幕色专区 | 女人和拘做爰正片视频 | 欧美日韩一区二区三区自拍 | 97人妻精品一区二区三区 | 秋霞特色aa大片 | 中文字幕乱码中文乱码51精品 | 波多野结衣乳巨码无在线观看 | 131美女爱做视频 | 日韩人妻无码一区二区三区久久99 | 精品偷自拍另类在线观看 | 国产电影无码午夜在线播放 | 国产精品99久久精品爆乳 | 狠狠cao日日穞夜夜穞av | 人人爽人人澡人人高潮 | 无码人妻丰满熟妇区毛片18 | 亚洲精品一区二区三区四区五区 | 乱码av麻豆丝袜熟女系列 | 少妇性俱乐部纵欲狂欢电影 | av人摸人人人澡人人超碰下载 | 久久午夜夜伦鲁鲁片无码免费 | a片免费视频在线观看 | 国产高清不卡无码视频 | 欧美精品国产综合久久 | 久久精品中文字幕大胸 | a片免费视频在线观看 | 在线亚洲高清揄拍自拍一品区 | 国产电影无码午夜在线播放 | 国产成人精品优优av | 久久99精品国产.久久久久 | 久久久久久亚洲精品a片成人 | 人妻少妇精品无码专区动漫 | 国产av剧情md精品麻豆 | √天堂中文官网8在线 | 亚洲爆乳无码专区 | 亚洲成av人综合在线观看 | 久久人人97超碰a片精品 | 撕开奶罩揉吮奶头视频 | 欧美老妇与禽交 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 曰韩无码二三区中文字幕 | 婷婷色婷婷开心五月四房播播 | 国产极品视觉盛宴 | 97人妻精品一区二区三区 | 精品久久久无码中文字幕 | 精品国偷自产在线视频 | 久久久久亚洲精品中文字幕 | 无码精品人妻一区二区三区av | 99er热精品视频 | 久久久久人妻一区精品色欧美 | 久久久久久av无码免费看大片 | 国产精品人人爽人人做我的可爱 | 少妇无码吹潮 | 亚洲欧美日韩综合久久久 | 亚洲 高清 成人 动漫 | 精品国产av色一区二区深夜久久 | 麻豆av传媒蜜桃天美传媒 | 久久亚洲精品中文字幕无男同 | 女人和拘做爰正片视频 | 草草网站影院白丝内射 | 亚洲天堂2017无码中文 | 日本一区二区三区免费高清 | 亚洲综合久久一区二区 | 国产热a欧美热a在线视频 | 中文字幕无码免费久久9一区9 | 欧美日韩一区二区三区自拍 | 好男人社区资源 | 少妇性俱乐部纵欲狂欢电影 | 亚洲日韩av一区二区三区中文 | 免费观看的无遮挡av | 国产成人无码区免费内射一片色欲 | 婷婷丁香五月天综合东京热 | 国产热a欧美热a在线视频 | 国产av剧情md精品麻豆 | 男女超爽视频免费播放 | 欧美老人巨大xxxx做受 | 国产免费久久久久久无码 | 亚洲爆乳精品无码一区二区三区 | 丰满人妻精品国产99aⅴ | av无码久久久久不卡免费网站 | 无码人妻黑人中文字幕 | 亚洲中文字幕无码中文字在线 | 免费观看又污又黄的网站 | 国产精品多人p群无码 | 亚洲一区二区三区偷拍女厕 | 97夜夜澡人人爽人人喊中国片 | 久青草影院在线观看国产 | 少妇人妻大乳在线视频 | 免费看男女做好爽好硬视频 | 久久精品一区二区三区四区 | 中文久久乱码一区二区 | 亚洲欧洲日本无在线码 | 荫蒂添的好舒服视频囗交 | 精品国产一区二区三区四区 | 日本一区二区更新不卡 | 一本色道婷婷久久欧美 | 日韩在线不卡免费视频一区 | 曰本女人与公拘交酡免费视频 | 久久精品国产一区二区三区肥胖 | 国产在线精品一区二区高清不卡 | 日日鲁鲁鲁夜夜爽爽狠狠 | 亚洲中文字幕在线无码一区二区 | 丝袜足控一区二区三区 | 少妇性l交大片 | 亚洲精品国偷拍自产在线观看蜜桃 | 97色伦图片97综合影院 | 亚洲精品欧美二区三区中文字幕 | 国产无遮挡吃胸膜奶免费看 | 丰满少妇人妻久久久久久 | 人妻少妇精品视频专区 | 精品国产av色一区二区深夜久久 | 欧美丰满熟妇xxxx | 妺妺窝人体色www婷婷 | 鲁一鲁av2019在线 | 国产精品人人妻人人爽 | 亚洲乱码日产精品bd | 狠狠色丁香久久婷婷综合五月 | 精品欧美一区二区三区久久久 | 熟妇激情内射com | 少妇被黑人到高潮喷出白浆 | 国产精品理论片在线观看 | 一本久久a久久精品亚洲 | 俺去俺来也www色官网 | 亚洲 激情 小说 另类 欧美 | 欧洲vodafone精品性 | 国产精品无码成人午夜电影 | 久久久久久a亚洲欧洲av冫 | 国产人妻精品一区二区三区 | 欧美日本精品一区二区三区 | 国产精品无码久久av | 久久久国产精品无码免费专区 | 国产农村乱对白刺激视频 | 内射巨臀欧美在线视频 | 国产亚洲人成在线播放 | 欧美老妇交乱视频在线观看 | 国产精品久久久av久久久 | 老司机亚洲精品影院 | 日日天日日夜日日摸 | 久久久久免费看成人影片 | 亚洲欧洲中文日韩av乱码 | 亚洲成av人影院在线观看 | 精品乱子伦一区二区三区 | 国产97色在线 | 免 | 亚洲成av人综合在线观看 | 窝窝午夜理论片影院 | 婷婷丁香五月天综合东京热 | 日本一卡二卡不卡视频查询 | 无码人妻久久一区二区三区不卡 | 九九久久精品国产免费看小说 | 亚洲第一无码av无码专区 | 日日摸天天摸爽爽狠狠97 | 久精品国产欧美亚洲色aⅴ大片 | 欧洲美熟女乱又伦 | 欧美日韩亚洲国产精品 | 国产成人精品必看 | 免费看少妇作爱视频 | 久久99精品久久久久婷婷 | 国产精品亚洲综合色区韩国 | 亚洲 a v无 码免 费 成 人 a v | 国产在热线精品视频 | 免费无码肉片在线观看 | 欧美色就是色 | 波多野结衣aⅴ在线 | 无码av免费一区二区三区试看 | 国产超碰人人爽人人做人人添 | 欧美日韩一区二区三区自拍 | 丰满岳乱妇在线观看中字无码 | 疯狂三人交性欧美 | 初尝人妻少妇中文字幕 | 亚洲a无码综合a国产av中文 | 精品熟女少妇av免费观看 | 国产人妻大战黑人第1集 | 色爱情人网站 | 亚洲成a人片在线观看日本 | 亚洲成av人影院在线观看 | 欧美日韩一区二区三区自拍 | 国产精品理论片在线观看 | 国产成人人人97超碰超爽8 | 97se亚洲精品一区 | 国产熟女一区二区三区四区五区 | 欧美精品免费观看二区 | 成年美女黄网站色大免费视频 | 狠狠色丁香久久婷婷综合五月 | 国产绳艺sm调教室论坛 | 成人试看120秒体验区 | 成 人 网 站国产免费观看 | 亚洲午夜无码久久 | 美女黄网站人色视频免费国产 | 国产两女互慰高潮视频在线观看 | а√天堂www在线天堂小说 | 中文无码成人免费视频在线观看 | 亚洲天堂2017无码 | 天天拍夜夜添久久精品 | 国产福利视频一区二区 | 成年美女黄网站色大免费视频 | 欧美丰满熟妇xxxx | 色婷婷综合中文久久一本 | 亚洲小说春色综合另类 | 亚洲色大成网站www | 大胆欧美熟妇xx | 国产成人精品一区二区在线小狼 | 天天爽夜夜爽夜夜爽 | 人人妻人人澡人人爽欧美精品 | 十八禁真人啪啪免费网站 | 国产精品理论片在线观看 | 亚洲国产欧美在线成人 | 人妻无码久久精品人妻 | 18禁黄网站男男禁片免费观看 | 一本无码人妻在中文字幕免费 | 少女韩国电视剧在线观看完整 | 久久久久久久女国产乱让韩 | 日本成熟视频免费视频 | 中文亚洲成a人片在线观看 | 国产精品va在线播放 | 欧美老熟妇乱xxxxx | 精品国产一区二区三区av 性色 | 国内精品九九久久久精品 | 扒开双腿吃奶呻吟做受视频 | 欧美真人作爱免费视频 | 我要看www免费看插插视频 | 西西人体www44rt大胆高清 | 我要看www免费看插插视频 | 欧美激情一区二区三区成人 | 又紧又大又爽精品一区二区 | 久久午夜无码鲁丝片午夜精品 | 国内揄拍国内精品少妇国语 | 内射爽无广熟女亚洲 | 最近中文2019字幕第二页 | 成人无码精品一区二区三区 | 少妇人妻大乳在线视频 | 成人毛片一区二区 | 日韩人妻无码一区二区三区久久99 | 国产综合在线观看 | 久久午夜无码鲁丝片午夜精品 | 在线观看国产午夜福利片 | 在线播放亚洲第一字幕 | 亚洲大尺度无码无码专区 | 午夜丰满少妇性开放视频 | 图片区 小说区 区 亚洲五月 | 亚洲中文字幕av在天堂 | 日本精品高清一区二区 | www成人国产高清内射 | 国产又爽又猛又粗的视频a片 | 国产成人精品优优av | 国产亚洲欧美日韩亚洲中文色 | 一本无码人妻在中文字幕免费 | 中文字幕日韩精品一区二区三区 | 强奷人妻日本中文字幕 | 亚洲大尺度无码无码专区 | 99国产精品白浆在线观看免费 | 中文字幕乱码中文乱码51精品 | 久久久久久a亚洲欧洲av冫 | 国产真人无遮挡作爱免费视频 | 精品国产一区二区三区四区 | 无码人妻久久一区二区三区不卡 | 国产精品爱久久久久久久 | 亚洲日本va午夜在线电影 | 天堂久久天堂av色综合 | 香蕉久久久久久av成人 | 色五月五月丁香亚洲综合网 | 国产内射老熟女aaaa | 国产亚洲日韩欧美另类第八页 | 国产成人av免费观看 | 精品无码国产自产拍在线观看蜜 | 国产色精品久久人妻 | 永久黄网站色视频免费直播 | 亚洲精品一区二区三区大桥未久 | 久久人人97超碰a片精品 | 亚洲国产av美女网站 | 综合激情五月综合激情五月激情1 | av无码久久久久不卡免费网站 | 免费观看又污又黄的网站 | 国产亚洲精品久久久久久大师 | 熟妇女人妻丰满少妇中文字幕 | 色情久久久av熟女人妻网站 | 内射老妇bbwx0c0ck | 精品国精品国产自在久国产87 | 国产一精品一av一免费 | 老司机亚洲精品影院 | 欧洲vodafone精品性 | 精品国精品国产自在久国产87 | 国产av久久久久精东av | 中文字幕av无码一区二区三区电影 | 午夜福利不卡在线视频 | 中文字幕人妻无码一区二区三区 | 精品午夜福利在线观看 | 欧美黑人乱大交 | 天堂无码人妻精品一区二区三区 | 在教室伦流澡到高潮hnp视频 | 色综合久久久无码网中文 | 亚洲成av人在线观看网址 | 又色又爽又黄的美女裸体网站 | 久久国产精品偷任你爽任你 | 日本一本二本三区免费 | 色情久久久av熟女人妻网站 | 97精品人妻一区二区三区香蕉 | 免费无码午夜福利片69 | 午夜熟女插插xx免费视频 | 巨爆乳无码视频在线观看 | 亚洲日韩av一区二区三区四区 | 四虎影视成人永久免费观看视频 | 99久久精品日本一区二区免费 | 国产综合色产在线精品 | 久久97精品久久久久久久不卡 | 亚洲国产精品成人久久蜜臀 | 国产av人人夜夜澡人人爽麻豆 | 精品久久久中文字幕人妻 | 日本一本二本三区免费 | 精品国偷自产在线视频 | 亚洲日本一区二区三区在线 | 国产精品丝袜黑色高跟鞋 | 国产精品久免费的黄网站 | 国产超级va在线观看视频 | 男女爱爱好爽视频免费看 | 国内少妇偷人精品视频免费 | 国内揄拍国内精品少妇国语 | 婷婷综合久久中文字幕蜜桃三电影 | v一区无码内射国产 | 成人动漫在线观看 | 中文字幕无码乱人伦 | 国色天香社区在线视频 | a国产一区二区免费入口 | 97无码免费人妻超级碰碰夜夜 | 久久精品一区二区三区四区 | 精品 日韩 国产 欧美 视频 | 欧美真人作爱免费视频 | 少妇被粗大的猛进出69影院 | 久久久精品人妻久久影视 | 1000部夫妻午夜免费 | 日本饥渴人妻欲求不满 | 图片区 小说区 区 亚洲五月 | 国产午夜无码精品免费看 | 波多野结衣一区二区三区av免费 | 图片区 小说区 区 亚洲五月 | 成人免费视频视频在线观看 免费 | 亚洲区小说区激情区图片区 | 最新版天堂资源中文官网 | 丝袜 中出 制服 人妻 美腿 | 成人精品视频一区二区三区尤物 | 亚洲国产欧美日韩精品一区二区三区 | 欧美丰满熟妇xxxx | 久久久久久亚洲精品a片成人 | 人妻互换免费中文字幕 | 国产热a欧美热a在线视频 | 又粗又大又硬毛片免费看 | 国产成人一区二区三区在线观看 | 成人无码视频在线观看网站 | 大地资源中文第3页 | 影音先锋中文字幕无码 | 国产成人人人97超碰超爽8 | 国产在线精品一区二区高清不卡 | 国产免费久久久久久无码 | 全球成人中文在线 | 国精品人妻无码一区二区三区蜜柚 | av人摸人人人澡人人超碰下载 | 国产精品-区区久久久狼 | 国产亲子乱弄免费视频 | 国产精品无码一区二区三区不卡 | 国产内射爽爽大片视频社区在线 | 色婷婷久久一区二区三区麻豆 | 亚洲 欧美 激情 小说 另类 | 麻豆国产人妻欲求不满 | 久久久精品国产sm最大网站 | 天堂а√在线地址中文在线 | 欧美熟妇另类久久久久久多毛 | 久久国内精品自在自线 | 色欲av亚洲一区无码少妇 | 日本成熟视频免费视频 | 领导边摸边吃奶边做爽在线观看 | 国产精品亚洲综合色区韩国 | 国产熟女一区二区三区四区五区 | 亚洲精品午夜无码电影网 | 精品国产aⅴ无码一区二区 | 国产艳妇av在线观看果冻传媒 | 青春草在线视频免费观看 | 色综合久久中文娱乐网 | 呦交小u女精品视频 | 97夜夜澡人人双人人人喊 | 亚洲中文字幕乱码av波多ji | 日本成熟视频免费视频 | 久久亚洲日韩精品一区二区三区 | 我要看www免费看插插视频 | 四虎永久在线精品免费网址 | 麻豆国产人妻欲求不满 | 正在播放老肥熟妇露脸 | 鲁大师影院在线观看 | 女人和拘做爰正片视频 | 国产人妻人伦精品1国产丝袜 | 国产特级毛片aaaaaa高潮流水 | 久久精品人妻少妇一区二区三区 | 国产精品丝袜黑色高跟鞋 | 18禁黄网站男男禁片免费观看 | 丰满人妻一区二区三区免费视频 | 狠狠躁日日躁夜夜躁2020 | 亚洲色欲色欲欲www在线 | 午夜男女很黄的视频 | 国产人妻精品一区二区三区不卡 | 成人精品视频一区二区三区尤物 | 偷窥村妇洗澡毛毛多 | 国产av剧情md精品麻豆 | 99久久婷婷国产综合精品青草免费 | 国产av人人夜夜澡人人爽麻豆 | 国产午夜无码视频在线观看 | 国产精品美女久久久 | 国产精品福利视频导航 | 激情爆乳一区二区三区 | 亚洲爆乳无码专区 | 亚洲综合伊人久久大杳蕉 | 婷婷五月综合激情中文字幕 | 蜜桃臀无码内射一区二区三区 | 少妇无码一区二区二三区 | 欧美熟妇另类久久久久久不卡 | 国产偷抇久久精品a片69 | 国产精品久久国产三级国 | 免费网站看v片在线18禁无码 | 婷婷色婷婷开心五月四房播播 | 久久熟妇人妻午夜寂寞影院 | 久久午夜无码鲁丝片秋霞 | 人妻无码αv中文字幕久久琪琪布 | 性欧美videos高清精品 | 性史性农村dvd毛片 | 免费看男女做好爽好硬视频 | 久久精品国产大片免费观看 | 青青久在线视频免费观看 | 国内综合精品午夜久久资源 | а天堂中文在线官网 | 亚洲色在线无码国产精品不卡 | 99久久精品日本一区二区免费 | 国产精品办公室沙发 | 亚洲精品一区二区三区婷婷月 | 亚洲精品一区二区三区大桥未久 | 给我免费的视频在线观看 | 婷婷六月久久综合丁香 | 亚洲精品午夜无码电影网 | 色综合久久网 | 老熟妇乱子伦牲交视频 | 国产精品美女久久久久av爽李琼 | 国产精品igao视频网 | 亚洲色偷偷偷综合网 | 国产精品久久久久久久影院 | 一本加勒比波多野结衣 | 亚洲人成影院在线观看 | 中文字幕中文有码在线 | 久久人人爽人人人人片 | 亚洲一区二区三区无码久久 | 麻花豆传媒剧国产免费mv在线 | 精品少妇爆乳无码av无码专区 | 国语精品一区二区三区 | 亚洲大尺度无码无码专区 | 99精品视频在线观看免费 | 中国女人内谢69xxxx | 亚洲中文字幕va福利 | 亚洲码国产精品高潮在线 | 国产香蕉尹人视频在线 | 搡女人真爽免费视频大全 | 国产精品久久久久久亚洲毛片 | 自拍偷自拍亚洲精品被多人伦好爽 | 丰满妇女强制高潮18xxxx | 黑人大群体交免费视频 | 日本在线高清不卡免费播放 | 一本大道久久东京热无码av | 国产精品久久久久久亚洲影视内衣 | 成人精品视频一区二区 | 日本精品人妻无码免费大全 | 欧美怡红院免费全部视频 | 久久天天躁狠狠躁夜夜免费观看 | 国产乱人偷精品人妻a片 | 清纯唯美经典一区二区 | 国产亚洲精品精品国产亚洲综合 | 一本久久伊人热热精品中文字幕 | 麻豆人妻少妇精品无码专区 | 少妇厨房愉情理9仑片视频 | 午夜成人1000部免费视频 | 黑人巨大精品欧美一区二区 | 少妇性荡欲午夜性开放视频剧场 | 国产片av国语在线观看 | 日日躁夜夜躁狠狠躁 | 国产真人无遮挡作爱免费视频 | av在线亚洲欧洲日产一区二区 | 图片区 小说区 区 亚洲五月 | 日本精品人妻无码77777 天堂一区人妻无码 | 牲欲强的熟妇农村老妇女视频 | 日韩av无码一区二区三区不卡 | 欧美黑人性暴力猛交喷水 | 无套内谢老熟女 | 亚洲中文字幕久久无码 | 精品无码一区二区三区的天堂 | 亚洲中文字幕va福利 | 亚洲国产精品无码久久久久高潮 | 精品水蜜桃久久久久久久 | 午夜熟女插插xx免费视频 | 国产真人无遮挡作爱免费视频 | 欧美xxxx黑人又粗又长 | 真人与拘做受免费视频 | 狠狠cao日日穞夜夜穞av | 亚洲七七久久桃花影院 | 亚洲色欲久久久综合网东京热 | 中文字幕日韩精品一区二区三区 | 国产熟女一区二区三区四区五区 | 一个人看的www免费视频在线观看 | 无遮挡啪啪摇乳动态图 | 狠狠色噜噜狠狠狠7777奇米 | www一区二区www免费 | 日本www一道久久久免费榴莲 | 国产精品办公室沙发 | 久久久精品人妻久久影视 | 亚洲色大成网站www | 人妻aⅴ无码一区二区三区 | 又大又硬又爽免费视频 | 九九热爱视频精品 | 亚洲国产精品久久久天堂 | 欧美日韩亚洲国产精品 | 一二三四在线观看免费视频 | 国产精品a成v人在线播放 | 无套内谢的新婚少妇国语播放 | 亚洲精品国产品国语在线观看 | 欧美日韩一区二区免费视频 | 国产综合久久久久鬼色 | 成熟人妻av无码专区 | 亚洲人成网站在线播放942 | 麻豆人妻少妇精品无码专区 | 丰满少妇人妻久久久久久 | 国产午夜亚洲精品不卡 | 久久午夜无码鲁丝片秋霞 | 日日摸夜夜摸狠狠摸婷婷 | 丁香啪啪综合成人亚洲 | 国产真人无遮挡作爱免费视频 | 色五月丁香五月综合五月 | 国内精品久久久久久中文字幕 | 国产精品爱久久久久久久 | 国产乱子伦视频在线播放 | 人妻少妇精品视频专区 | 狂野欧美性猛交免费视频 | 亚洲人亚洲人成电影网站色 | 国产女主播喷水视频在线观看 | 欧美色就是色 | 无码吃奶揉捏奶头高潮视频 | 少妇性l交大片欧洲热妇乱xxx | 粉嫩少妇内射浓精videos | 国产网红无码精品视频 | 鲁一鲁av2019在线 | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 欧美成人免费全部网站 | 在线 国产 欧美 亚洲 天堂 | 2019午夜福利不卡片在线 | 亚洲娇小与黑人巨大交 | 东京无码熟妇人妻av在线网址 | 午夜精品久久久久久久 | 又湿又紧又大又爽a视频国产 | 成人综合网亚洲伊人 | v一区无码内射国产 | 国产成人av免费观看 | 国产精品福利视频导航 | 99久久人妻精品免费一区 | 国产超碰人人爽人人做人人添 | 思思久久99热只有频精品66 | 日日碰狠狠躁久久躁蜜桃 | 亚洲中文字幕久久无码 | 两性色午夜免费视频 | 国产精品亚洲五月天高清 | 97精品人妻一区二区三区香蕉 | 欧美人与禽zoz0性伦交 | 国产亚洲精品久久久闺蜜 | 熟妇女人妻丰满少妇中文字幕 | 东京热一精品无码av | 亚洲色www成人永久网址 | 国产人妻大战黑人第1集 | 领导边摸边吃奶边做爽在线观看 | 人人妻人人澡人人爽精品欧美 | 成人欧美一区二区三区黑人免费 | 亚洲欧洲日本综合aⅴ在线 | 日本精品少妇一区二区三区 | 亚洲一区二区三区国产精华液 | 曰本女人与公拘交酡免费视频 | 亚洲日韩av一区二区三区四区 | 亚洲狠狠婷婷综合久久 | 成人一在线视频日韩国产 | 双乳奶水饱满少妇呻吟 | 免费网站看v片在线18禁无码 | 精品欧洲av无码一区二区三区 | 无人区乱码一区二区三区 | 中文字幕色婷婷在线视频 | 高清国产亚洲精品自在久久 | 免费无码av一区二区 | 精品久久8x国产免费观看 | 成人三级无码视频在线观看 | 国产麻豆精品一区二区三区v视界 | 色欲人妻aaaaaaa无码 | 国产精品a成v人在线播放 | 久久综合狠狠综合久久综合88 | 久久97精品久久久久久久不卡 | 国产精品久久久午夜夜伦鲁鲁 | 女人被男人爽到呻吟的视频 | 国产在线aaa片一区二区99 | 久久99国产综合精品 | 亚洲午夜福利在线观看 | 亚洲欧美日韩国产精品一区二区 | 欧美猛少妇色xxxxx | 夜夜高潮次次欢爽av女 | 国产精品毛多多水多 | 丰满人妻被黑人猛烈进入 | 久在线观看福利视频 | 久久亚洲中文字幕精品一区 | 欧美亚洲日韩国产人成在线播放 | 丰满少妇高潮惨叫视频 | 精品国产成人一区二区三区 | 亚洲精品国偷拍自产在线观看蜜桃 | 欧美激情内射喷水高潮 | 欧美人与物videos另类 | 中文字幕乱码人妻二区三区 | 一本久道久久综合狠狠爱 | 日韩亚洲欧美精品综合 | 中文精品无码中文字幕无码专区 | 国产精品亚洲综合色区韩国 | 午夜理论片yy44880影院 | 又大又硬又爽免费视频 | aa片在线观看视频在线播放 | 亚洲乱码国产乱码精品精 | 少妇久久久久久人妻无码 | 亚洲欧美精品aaaaaa片 | 亚洲欧洲无卡二区视頻 | 国产三级久久久精品麻豆三级 | 色欲人妻aaaaaaa无码 | 欧美乱妇无乱码大黄a片 | 国产农村乱对白刺激视频 | 人人妻人人澡人人爽欧美一区 | 久久综合香蕉国产蜜臀av | 国产av久久久久精东av | 成人欧美一区二区三区黑人免费 | 日韩精品一区二区av在线 | 在线a亚洲视频播放在线观看 | 水蜜桃色314在线观看 | 撕开奶罩揉吮奶头视频 | 日本欧美一区二区三区乱码 | 天干天干啦夜天干天2017 | 十八禁视频网站在线观看 | 中文字幕无码人妻少妇免费 | 免费无码肉片在线观看 | 伦伦影院午夜理论片 | 久久久久se色偷偷亚洲精品av | 国产精品鲁鲁鲁 | 国产成人无码午夜视频在线观看 | av在线亚洲欧洲日产一区二区 | 欧美午夜特黄aaaaaa片 | 国产激情无码一区二区app | 成人性做爰aaa片免费看不忠 | 亚洲男人av香蕉爽爽爽爽 | 国产人妻人伦精品 | 乌克兰少妇性做爰 | 亚洲乱码中文字幕在线 | √天堂资源地址中文在线 | 国产精品久久久久无码av色戒 | 麻豆md0077饥渴少妇 | а√资源新版在线天堂 | 超碰97人人做人人爱少妇 | 狠狠躁日日躁夜夜躁2020 | 亚洲男女内射在线播放 | 午夜时刻免费入口 | 国产乱人伦av在线无码 | 午夜成人1000部免费视频 | 成熟人妻av无码专区 | 国产亚洲精品精品国产亚洲综合 | 扒开双腿疯狂进出爽爽爽视频 | 大肉大捧一进一出好爽视频 | 无码人妻出轨黑人中文字幕 | 精品国产青草久久久久福利 | 国产成人av免费观看 | 国内精品久久毛片一区二区 | 色综合久久久久综合一本到桃花网 | 国产超级va在线观看视频 | 又色又爽又黄的美女裸体网站 | 久久精品国产一区二区三区肥胖 | 无码人妻丰满熟妇区毛片18 | 真人与拘做受免费视频一 | 久在线观看福利视频 | 亚洲毛片av日韩av无码 | 亚洲 激情 小说 另类 欧美 | 永久黄网站色视频免费直播 | 大地资源中文第3页 | 日韩av无码一区二区三区 | 亚洲精品国产精品乱码视色 | 亚洲国产精品毛片av不卡在线 | 久久久久成人片免费观看蜜芽 | 乱码av麻豆丝袜熟女系列 | 午夜福利试看120秒体验区 | аⅴ资源天堂资源库在线 | 国产午夜亚洲精品不卡 | 乌克兰少妇性做爰 | 午夜福利电影 | 亚洲中文字幕无码一久久区 | 男女爱爱好爽视频免费看 | 免费中文字幕日韩欧美 | 99久久人妻精品免费一区 | 精品亚洲韩国一区二区三区 | 中文毛片无遮挡高清免费 | 亚洲精品国偷拍自产在线麻豆 | 黑人大群体交免费视频 | 丰满人妻一区二区三区免费视频 | 99久久精品日本一区二区免费 | 无码中文字幕色专区 | 一本久道久久综合狠狠爱 | 欧美丰满老熟妇xxxxx性 | 精品人妻人人做人人爽夜夜爽 | 人妻少妇被猛烈进入中文字幕 | 精品欧美一区二区三区久久久 | 2020最新国产自产精品 | 久久精品国产一区二区三区 | 国产成人精品一区二区在线小狼 | 国产美女极度色诱视频www | 精品国产麻豆免费人成网站 | 欧美黑人性暴力猛交喷水 | 99精品无人区乱码1区2区3区 | 少妇人妻av毛片在线看 | 久精品国产欧美亚洲色aⅴ大片 | 中文字幕无码av激情不卡 | 国产熟妇高潮叫床视频播放 | 成人精品视频一区二区三区尤物 | 国产人妻人伦精品1国产丝袜 | 日韩欧美成人免费观看 | 最近的中文字幕在线看视频 | 成人三级无码视频在线观看 | 久久久无码中文字幕久... | 黑森林福利视频导航 | 波多野结衣av一区二区全免费观看 | 亚洲欧洲中文日韩av乱码 | 99视频精品全部免费免费观看 | 国产精品99爱免费视频 | 欧洲精品码一区二区三区免费看 | 人妻少妇精品久久 | 久久无码中文字幕免费影院蜜桃 | 久久久久av无码免费网 | 妺妺窝人体色www在线小说 | 131美女爱做视频 | 午夜嘿嘿嘿影院 | 小sao货水好多真紧h无码视频 | 夜夜影院未满十八勿进 | 青春草在线视频免费观看 | 丰满少妇女裸体bbw | 装睡被陌生人摸出水好爽 | 伊人久久大香线焦av综合影院 | 亚洲精品一区三区三区在线观看 | 国产成人人人97超碰超爽8 | 亚洲gv猛男gv无码男同 | 欧美性猛交xxxx富婆 | 蜜臀aⅴ国产精品久久久国产老师 | 久久五月精品中文字幕 | 国产麻豆精品一区二区三区v视界 | 99久久精品日本一区二区免费 | 国产成人精品视频ⅴa片软件竹菊 | 美女极度色诱视频国产 | 99久久无码一区人妻 | 亚洲精品国产精品乱码不卡 | 亚洲精品国产精品乱码不卡 | 在教室伦流澡到高潮hnp视频 | 国产午夜亚洲精品不卡下载 | 老熟女重囗味hdxx69 | 欧美精品国产综合久久 | 亚洲精品成人av在线 | 国产乱人伦app精品久久 国产在线无码精品电影网 国产国产精品人在线视 | 波多野结衣av在线观看 | 国产成人无码av一区二区 | 国产九九九九九九九a片 | 国产在热线精品视频 | 国产高清不卡无码视频 | 日韩人妻无码中文字幕视频 | 久久99国产综合精品 | 国产麻豆精品精东影业av网站 | 国产精品.xx视频.xxtv | 亚洲中文字幕在线无码一区二区 | 欧美色就是色 | 亚洲精品综合一区二区三区在线 | 中文字幕人妻无码一夲道 | 国产无遮挡又黄又爽又色 | 一本色道久久综合狠狠躁 | 美女毛片一区二区三区四区 | 欧美日韩综合一区二区三区 | 精品国产一区二区三区四区在线看 | 中文字幕日韩精品一区二区三区 | 天天拍夜夜添久久精品 | 国产精品久久福利网站 | 久久人人爽人人爽人人片av高清 | 国产成人综合美国十次 | 人人爽人人澡人人高潮 | 好屌草这里只有精品 | 国产9 9在线 | 中文 | 国产亚洲人成a在线v网站 | 国产深夜福利视频在线 | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 亚洲国产午夜精品理论片 | 精品厕所偷拍各类美女tp嘘嘘 | 午夜男女很黄的视频 | 日韩人妻无码中文字幕视频 | 中文字幕日韩精品一区二区三区 | 成人性做爰aaa片免费看 | 亚洲精品一区二区三区四区五区 | 午夜福利电影 | 成人无码精品一区二区三区 | 少妇性l交大片欧洲热妇乱xxx | 亚洲区小说区激情区图片区 | 国产精品理论片在线观看 | 成人三级无码视频在线观看 | 国产成人无码区免费内射一片色欲 | 黑人玩弄人妻中文在线 | 300部国产真实乱 | 天下第一社区视频www日本 | 亚洲国产精品毛片av不卡在线 | 久久久中文久久久无码 | 日韩人妻无码一区二区三区久久99 | 国产精品久久久av久久久 | 在线观看国产午夜福利片 | 久久人人爽人人人人片 | 天下第一社区视频www日本 | 亚洲一区二区三区 | 午夜丰满少妇性开放视频 | av人摸人人人澡人人超碰下载 | 成人综合网亚洲伊人 | 3d动漫精品啪啪一区二区中 | 亚洲欧美色中文字幕在线 | 亚洲精品久久久久中文第一幕 | 性做久久久久久久免费看 | 亚洲一区二区三区播放 | 色综合久久久久综合一本到桃花网 | 在线亚洲高清揄拍自拍一品区 | 亚洲 日韩 欧美 成人 在线观看 | 少妇人妻偷人精品无码视频 | 欧美精品免费观看二区 | 亚洲爆乳精品无码一区二区三区 | 午夜男女很黄的视频 | 久久精品国产精品国产精品污 | 久久久久99精品成人片 | 久久精品国产一区二区三区 | 国产色xx群视频射精 | 国产特级毛片aaaaaa高潮流水 | 日本va欧美va欧美va精品 | 久久视频在线观看精品 | 亚洲精品美女久久久久久久 | 国产人妻人伦精品1国产丝袜 | 国产小呦泬泬99精品 | 麻豆蜜桃av蜜臀av色欲av | 亚洲熟女一区二区三区 | 中文毛片无遮挡高清免费 | 亚洲人成人无码网www国产 | 亚洲色大成网站www国产 | 欧美日韩人成综合在线播放 | 欧美三级a做爰在线观看 | 377p欧洲日本亚洲大胆 | 疯狂三人交性欧美 | 国产三级久久久精品麻豆三级 | 国产色在线 | 国产 | 日韩少妇白浆无码系列 | 无码人妻出轨黑人中文字幕 | 沈阳熟女露脸对白视频 | 色噜噜亚洲男人的天堂 | 精品无人区无码乱码毛片国产 | 中文字幕人妻无码一区二区三区 | 国产黄在线观看免费观看不卡 | 国产人妻人伦精品1国产丝袜 | 日韩精品无码一本二本三本色 | 美女极度色诱视频国产 | 夜夜高潮次次欢爽av女 | 日本护士毛茸茸高潮 | 青草青草久热国产精品 | 国产精品内射视频免费 | 中文字幕人妻丝袜二区 | 欧美日韩一区二区免费视频 | 欧美兽交xxxx×视频 | 国产成人无码av在线影院 | 国内精品人妻无码久久久影院 | 国产一区二区三区日韩精品 | 中文字幕+乱码+中文字幕一区 | 男人扒开女人内裤强吻桶进去 | www一区二区www免费 | 漂亮人妻洗澡被公强 日日躁 | 人妻少妇被猛烈进入中文字幕 | 男人扒开女人内裤强吻桶进去 | 久久久国产一区二区三区 | 色一情一乱一伦一区二区三欧美 | 久久国产36精品色熟妇 | 免费网站看v片在线18禁无码 | 男人和女人高潮免费网站 | 亚洲欧美日韩国产精品一区二区 | 好屌草这里只有精品 | 狠狠亚洲超碰狼人久久 | 日韩视频 中文字幕 视频一区 | 色综合久久88色综合天天 | 国产成人精品无码播放 | 亚洲精品无码人妻无码 | 在线观看免费人成视频 | 欧美国产日韩久久mv | 亚洲国产精品美女久久久久 | а√天堂www在线天堂小说 | 国产激情无码一区二区app | 亚洲精品成人福利网站 | 啦啦啦www在线观看免费视频 | 大乳丰满人妻中文字幕日本 | 水蜜桃色314在线观看 | 国产成人无码av片在线观看不卡 | 国产精品人人妻人人爽 | 内射后入在线观看一区 | 婷婷综合久久中文字幕蜜桃三电影 | 久久午夜无码鲁丝片午夜精品 | 亚洲成av人综合在线观看 | 精品乱码久久久久久久 | 亚洲一区二区三区国产精华液 | 久久国内精品自在自线 | 野外少妇愉情中文字幕 | 亚洲国产欧美日韩精品一区二区三区 | 久久久中文久久久无码 | 日韩精品a片一区二区三区妖精 | 国产精品美女久久久 | 国产亚洲人成a在线v网站 | 日日摸日日碰夜夜爽av | 亚洲欧美国产精品专区久久 | 色 综合 欧美 亚洲 国产 | 国产人妻人伦精品 | 伊人久久大香线蕉av一区二区 | 欧美阿v高清资源不卡在线播放 | 国产人妻久久精品二区三区老狼 | 午夜丰满少妇性开放视频 | 精品成人av一区二区三区 | 荡女精品导航 | 亚洲国产精品久久久天堂 | 2019午夜福利不卡片在线 | 桃花色综合影院 | 欧美真人作爱免费视频 | 欧美国产亚洲日韩在线二区 | 亚洲国产高清在线观看视频 | 理论片87福利理论电影 | 久久久久成人片免费观看蜜芽 | 男人和女人高潮免费网站 | aⅴ亚洲 日韩 色 图网站 播放 | 国产av剧情md精品麻豆 | 黑人玩弄人妻中文在线 | 少妇无码av无码专区在线观看 | 国产热a欧美热a在线视频 | 欧美激情内射喷水高潮 | 精品久久久无码人妻字幂 | 精品国产av色一区二区深夜久久 | 真人与拘做受免费视频 | 成人一在线视频日韩国产 | 天堂无码人妻精品一区二区三区 | 老司机亚洲精品影院无码 | 大乳丰满人妻中文字幕日本 | 久久国产自偷自偷免费一区调 | 99久久精品国产一区二区蜜芽 | 大胆欧美熟妇xx | 日日碰狠狠躁久久躁蜜桃 | 青青久在线视频免费观看 | aa片在线观看视频在线播放 | 99久久久无码国产aaa精品 | 精品国产aⅴ无码一区二区 | 黑人巨大精品欧美一区二区 | 久久久久人妻一区精品色欧美 | 蜜桃视频插满18在线观看 | 国产黄在线观看免费观看不卡 | 中文无码精品a∨在线观看不卡 | 少妇无套内谢久久久久 | 国产农村乱对白刺激视频 | 欧美精品一区二区精品久久 | 免费人成在线视频无码 | 日韩精品成人一区二区三区 | 欧美肥老太牲交大战 | 国产av剧情md精品麻豆 | 亚洲日本va午夜在线电影 | 成人亚洲精品久久久久软件 | 国产精品久久久午夜夜伦鲁鲁 | 久久综合给合久久狠狠狠97色 | 亚洲熟妇色xxxxx欧美老妇y | 亚洲啪av永久无码精品放毛片 | 国产成人无码av片在线观看不卡 | 人人妻人人澡人人爽人人精品 | 熟妇人妻激情偷爽文 | 亚洲精品国产第一综合99久久 | 一本加勒比波多野结衣 | 51国偷自产一区二区三区 | 国产人妻久久精品二区三区老狼 | 久久国产精品二国产精品 | 国产真实乱对白精彩久久 | 67194成是人免费无码 | 日韩欧美群交p片內射中文 | 精品久久久久久亚洲精品 | 中文字幕日韩精品一区二区三区 | 骚片av蜜桃精品一区 | 久久久精品国产sm最大网站 | 色偷偷av老熟女 久久精品人妻少妇一区二区三区 | 强辱丰满人妻hd中文字幕 | 久久人人爽人人爽人人片ⅴ | 亚洲爆乳精品无码一区二区三区 | 18无码粉嫩小泬无套在线观看 | 成人一在线视频日韩国产 | 红桃av一区二区三区在线无码av | 亚洲欧美国产精品久久 | 久久久久久久人妻无码中文字幕爆 | 大肉大捧一进一出视频出来呀 | 亚洲成熟女人毛毛耸耸多 | 无码av岛国片在线播放 | 天堂а√在线中文在线 | 最近免费中文字幕中文高清百度 | 色妞www精品免费视频 | 在线视频网站www色 | 亚洲热妇无码av在线播放 | 欧美性生交xxxxx久久久 | 国产乱人伦av在线无码 | 精品无码av一区二区三区 | 亚洲 日韩 欧美 成人 在线观看 | 久久99精品国产麻豆蜜芽 | 亚洲欧美国产精品专区久久 | 亚洲精品一区二区三区在线观看 | 色一情一乱一伦一区二区三欧美 | 久久久久99精品国产片 | 国产精品久久久午夜夜伦鲁鲁 | 樱花草在线社区www | 国产激情综合五月久久 | 无码人妻精品一区二区三区下载 | 国产在线aaa片一区二区99 | 国产99久久精品一区二区 | 高中生自慰www网站 | 免费乱码人妻系列无码专区 | 天天拍夜夜添久久精品 | 熟女少妇人妻中文字幕 | 欧美亚洲国产一区二区三区 | 天堂亚洲免费视频 | 狠狠色欧美亚洲狠狠色www | 中文字幕+乱码+中文字幕一区 | 无遮无挡爽爽免费视频 | 思思久久99热只有频精品66 | 老熟女重囗味hdxx69 | 久久99精品国产麻豆蜜芽 | 伊人久久大香线蕉av一区二区 | 无码人妻出轨黑人中文字幕 | 欧美35页视频在线观看 | 亚洲人成影院在线观看 | 无码人妻出轨黑人中文字幕 | 久久国产36精品色熟妇 | 麻豆国产人妻欲求不满 | 国产亚洲美女精品久久久2020 | 男人扒开女人内裤强吻桶进去 | 国产尤物精品视频 | 国色天香社区在线视频 | 风流少妇按摩来高潮 | 国产乱人伦av在线无码 | 乱人伦人妻中文字幕无码 | 少妇无码吹潮 | 性做久久久久久久久 | 国产卡一卡二卡三 | 精品偷拍一区二区三区在线看 | 99久久精品无码一区二区毛片 | 大屁股大乳丰满人妻 | 久久国产36精品色熟妇 | 日韩人妻无码中文字幕视频 | 一本精品99久久精品77 | 国产午夜亚洲精品不卡下载 | 丰满少妇弄高潮了www | 国产熟妇高潮叫床视频播放 | 熟妇人妻激情偷爽文 | 国内精品九九久久久精品 | 亚洲一区二区三区四区 | 久久亚洲中文字幕无码 | 日韩精品a片一区二区三区妖精 | 国产精品99爱免费视频 | 三上悠亚人妻中文字幕在线 | 国产精品资源一区二区 | 久久久精品欧美一区二区免费 | 青草青草久热国产精品 | 色一情一乱一伦一视频免费看 | 欧美zoozzooz性欧美 | 国精产品一区二区三区 | 亚洲日韩av一区二区三区中文 | 最近的中文字幕在线看视频 | 国产无遮挡又黄又爽又色 | 国产福利视频一区二区 | 国产无遮挡又黄又爽又色 | 婷婷丁香六月激情综合啪 | 51国偷自产一区二区三区 | 精品熟女少妇av免费观看 | 国产情侣作爱视频免费观看 | 日韩精品无码一区二区中文字幕 | 亚洲成a人片在线观看日本 | 国产极品美女高潮无套在线观看 | 亚洲国产精华液网站w | 久久精品视频在线看15 | 亚洲天堂2017无码中文 | 欧美阿v高清资源不卡在线播放 | 在线播放免费人成毛片乱码 | 无码帝国www无码专区色综合 | 国产一区二区三区四区五区加勒比 | 人妻aⅴ无码一区二区三区 | 亚洲中文字幕无码一久久区 | 免费国产黄网站在线观看 | 欧美国产亚洲日韩在线二区 | 久久精品中文闷骚内射 | 夫妻免费无码v看片 | 乱人伦中文视频在线观看 | 午夜时刻免费入口 | 国产香蕉97碰碰久久人人 | 欧美三级a做爰在线观看 | 激情五月综合色婷婷一区二区 | 亚洲人成影院在线观看 | 麻花豆传媒剧国产免费mv在线 | 国产电影无码午夜在线播放 | 久久久久人妻一区精品色欧美 | 国产性生大片免费观看性 | 久久精品国产日本波多野结衣 | 国产激情一区二区三区 | 精品国产乱码久久久久乱码 | 欧美人妻一区二区三区 | 无码av中文字幕免费放 | 中文字幕av伊人av无码av | 亚洲国产精品无码一区二区三区 | 未满小14洗澡无码视频网站 | 亚洲人成影院在线无码按摩店 | 性欧美牲交xxxxx视频 | 强辱丰满人妻hd中文字幕 | 国产精品久久国产精品99 | 精品一区二区三区无码免费视频 | 国产成人精品视频ⅴa片软件竹菊 | 欧美日本日韩 | 午夜性刺激在线视频免费 | 性生交大片免费看l | а√天堂www在线天堂小说 | 性欧美牲交在线视频 | 色妞www精品免费视频 | 在线亚洲高清揄拍自拍一品区 | 欧美兽交xxxx×视频 | 亚洲色大成网站www国产 | 亚洲色偷偷男人的天堂 | 免费乱码人妻系列无码专区 | 精品夜夜澡人妻无码av蜜桃 | 亚洲欧美日韩国产精品一区二区 | 无码免费一区二区三区 | 成人欧美一区二区三区黑人免费 | 国模大胆一区二区三区 | 中文字幕无码免费久久99 | 国产精品人人妻人人爽 | 免费看男女做好爽好硬视频 | 久久精品中文闷骚内射 | 成人av无码一区二区三区 | 国产成人av免费观看 | 国产色视频一区二区三区 | 国模大胆一区二区三区 | 久久亚洲国产成人精品性色 | 影音先锋中文字幕无码 | 无码人妻黑人中文字幕 | 无码人妻少妇伦在线电影 | 熟妇激情内射com | 国产乱人偷精品人妻a片 | 午夜精品久久久内射近拍高清 | 亚洲欧美精品伊人久久 | 欧洲vodafone精品性 | 亚洲精品国产第一综合99久久 | 欧美日韩在线亚洲综合国产人 | 欧美人与物videos另类 | 7777奇米四色成人眼影 | 樱花草在线播放免费中文 | 97人妻精品一区二区三区 | 精品午夜福利在线观看 | 国产在线无码精品电影网 | 亚洲一区二区三区无码久久 | 国产农村乱对白刺激视频 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 久久人人爽人人爽人人片ⅴ | 国内精品九九久久久精品 | 国产麻豆精品一区二区三区v视界 | 99er热精品视频 | 娇妻被黑人粗大高潮白浆 | 亚洲精品欧美二区三区中文字幕 | 国产精品美女久久久 | 亚洲经典千人经典日产 | 亚洲无人区一区二区三区 | 中文字幕色婷婷在线视频 | 久久人人爽人人人人片 | 亚洲第一网站男人都懂 | 97久久超碰中文字幕 | 国产超碰人人爽人人做人人添 | 午夜成人1000部免费视频 | 一区二区三区乱码在线 | 欧洲 | 老熟女乱子伦 | 亚洲自偷精品视频自拍 | 伊人久久婷婷五月综合97色 | 色噜噜亚洲男人的天堂 | 精品国偷自产在线视频 | 丰满少妇弄高潮了www | 国产精品美女久久久网av | 久久久久人妻一区精品色欧美 | 欧美国产日产一区二区 | 无码午夜成人1000部免费视频 | 国产农村乱对白刺激视频 | 最近免费中文字幕中文高清百度 | 国产精品亚洲五月天高清 | 欧美熟妇另类久久久久久多毛 | 亚洲成a人片在线观看无码3d | 国产成人精品视频ⅴa片软件竹菊 | 国产尤物精品视频 | www成人国产高清内射 | 18无码粉嫩小泬无套在线观看 | 成年女人永久免费看片 | 亚洲精品午夜国产va久久成人 | 人人澡人人妻人人爽人人蜜桃 | 欧美精品在线观看 | 亚洲精品美女久久久久久久 | 丰满护士巨好爽好大乳 | 久久99精品久久久久久 | 高清不卡一区二区三区 | 97人妻精品一区二区三区 | 中文无码伦av中文字幕 | 粉嫩少妇内射浓精videos | 精品偷自拍另类在线观看 | 日日天干夜夜狠狠爱 | 精品乱码久久久久久久 | 好屌草这里只有精品 | 色爱情人网站 | 六十路熟妇乱子伦 | 无套内谢的新婚少妇国语播放 | 全球成人中文在线 | 国产真人无遮挡作爱免费视频 | 波多野结衣av一区二区全免费观看 | 亚洲国产精品无码久久久久高潮 | 夜精品a片一区二区三区无码白浆 | 久久www免费人成人片 | 亚洲一区av无码专区在线观看 | 中文字幕无线码 | 久久精品国产日本波多野结衣 | 久久国产自偷自偷免费一区调 | 丰满岳乱妇在线观看中字无码 | 亚洲欧洲中文日韩av乱码 | 欧美成人高清在线播放 | 乱人伦中文视频在线观看 | 亚洲の无码国产の无码影院 | 亚洲无人区午夜福利码高清完整版 | 中文字幕 亚洲精品 第1页 | 伊人久久大香线蕉亚洲 | 76少妇精品导航 | 好男人www社区 | 国产无遮挡吃胸膜奶免费看 | 伊人色综合久久天天小片 | 无遮无挡爽爽免费视频 | 午夜福利不卡在线视频 | 国产成人一区二区三区别 | 欧美国产日韩亚洲中文 | 国产乡下妇女做爰 | 欧洲欧美人成视频在线 | 亚洲中文无码av永久不收费 | 欧美日本日韩 | 99精品国产综合久久久久五月天 | 久9re热视频这里只有精品 | 国产精品久久国产精品99 | 欧美精品在线观看 | 丰满少妇高潮惨叫视频 | 色 综合 欧美 亚洲 国产 | 精品无码一区二区三区的天堂 | 窝窝午夜理论片影院 | 精品久久久无码人妻字幂 | 在线 国产 欧美 亚洲 天堂 | 欧美日韩一区二区免费视频 | 国产激情精品一区二区三区 | 性生交大片免费看l | 成人亚洲精品久久久久 | 无码精品国产va在线观看dvd | 亚洲人亚洲人成电影网站色 | 国产xxx69麻豆国语对白 | 日韩精品久久久肉伦网站 | 国产亚洲精品精品国产亚洲综合 | 免费乱码人妻系列无码专区 | 久久久久99精品国产片 | 成人三级无码视频在线观看 | 女人被男人躁得好爽免费视频 | 色欲综合久久中文字幕网 | 无码精品国产va在线观看dvd | 成人女人看片免费视频放人 | 天天拍夜夜添久久精品 | 久久精品人妻少妇一区二区三区 | 高潮喷水的毛片 | 亚洲欧美中文字幕5发布 | 乱码午夜-极国产极内射 | 无码人妻丰满熟妇区五十路百度 | 又大又硬又黄的免费视频 | 中文字幕无码av激情不卡 | 亚洲人成网站在线播放942 | 成人无码精品1区2区3区免费看 | 奇米综合四色77777久久 东京无码熟妇人妻av在线网址 | 欧美刺激性大交 | 久久久久久av无码免费看大片 | 亚洲日韩精品欧美一区二区 | 久久国产精品二国产精品 | 久久久久国色av免费观看性色 | 国产另类ts人妖一区二区 | 国内精品人妻无码久久久影院蜜桃 | 少妇被粗大的猛进出69影院 | 国产 浪潮av性色四虎 | 国产电影无码午夜在线播放 | 色综合久久久无码中文字幕 | 98国产精品综合一区二区三区 | 精品国产一区二区三区四区在线看 | 国产国产精品人在线视 | 精品偷自拍另类在线观看 | 国産精品久久久久久久 | 日本丰满熟妇videos | www国产亚洲精品久久久日本 | av在线亚洲欧洲日产一区二区 | 国产精品视频免费播放 | 双乳奶水饱满少妇呻吟 | 在线亚洲高清揄拍自拍一品区 | 亚洲熟妇色xxxxx欧美老妇 | 亚洲日韩乱码中文无码蜜桃臀网站 | 最近中文2019字幕第二页 | 日本丰满护士爆乳xxxx | 激情五月综合色婷婷一区二区 | 欧美人妻一区二区三区 | 爆乳一区二区三区无码 | 国产精品久久久av久久久 | 亚洲精品一区二区三区大桥未久 | 亚洲国产高清在线观看视频 | 色婷婷综合中文久久一本 | 国产精品自产拍在线观看 | 亚洲色www成人永久网址 | 国产卡一卡二卡三 | 日本饥渴人妻欲求不满 | 中文精品无码中文字幕无码专区 | 国产人妻大战黑人第1集 | 少妇高潮喷潮久久久影院 | 亚洲综合伊人久久大杳蕉 | 少妇无套内谢久久久久 | 久久精品一区二区三区四区 | av香港经典三级级 在线 | 国内精品久久毛片一区二区 | 18无码粉嫩小泬无套在线观看 | 98国产精品综合一区二区三区 | 熟妇人妻无乱码中文字幕 | 5858s亚洲色大成网站www | 国产午夜福利100集发布 | 日欧一片内射va在线影院 | 亚洲国产精品美女久久久久 | 日日碰狠狠躁久久躁蜜桃 | 18黄暴禁片在线观看 | 宝宝好涨水快流出来免费视频 | 狠狠色欧美亚洲狠狠色www | 国产人妻久久精品二区三区老狼 | 久久国产精品偷任你爽任你 | 亚洲国产精品久久久久久 | 亚洲一区二区三区播放 | 人人澡人人妻人人爽人人蜜桃 | 中文毛片无遮挡高清免费 | 国产午夜精品一区二区三区嫩草 | 亚洲一区二区三区含羞草 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 18禁黄网站男男禁片免费观看 | ass日本丰满熟妇pics | 国产精品亚洲专区无码不卡 | 婷婷丁香五月天综合东京热 | 无码精品国产va在线观看dvd | 国产sm调教视频在线观看 | 99精品视频在线观看免费 | 国产成人无码av一区二区 | 激情内射亚州一区二区三区爱妻 | 亚洲一区二区三区在线观看网站 | 六月丁香婷婷色狠狠久久 | 一本色道久久综合狠狠躁 | 日本精品人妻无码77777 天堂一区人妻无码 | 午夜福利一区二区三区在线观看 | 国产国语老龄妇女a片 | 少妇性l交大片欧洲热妇乱xxx | 亚洲午夜福利在线观看 | 国产精品久久久久久久影院 | 国产婷婷色一区二区三区在线 | 国产精品美女久久久 | 撕开奶罩揉吮奶头视频 | 日产国产精品亚洲系列 | 久久综合给久久狠狠97色 | 熟妇女人妻丰满少妇中文字幕 | 国产高清av在线播放 | 国产综合久久久久鬼色 | 人妻中文无码久热丝袜 | 熟妇人妻激情偷爽文 | 精品 日韩 国产 欧美 视频 | 亚洲中文字幕av在天堂 | 国产农村妇女高潮大叫 | 蜜臀av在线观看 在线欧美精品一区二区三区 | 国产亚洲美女精品久久久2020 | 激情内射日本一区二区三区 | 最近免费中文字幕中文高清百度 | 熟女体下毛毛黑森林 | 无码一区二区三区在线观看 | 国产精品欧美成人 | 国产两女互慰高潮视频在线观看 | 欧美丰满熟妇xxxx | 久久综合九色综合欧美狠狠 | 国内精品久久久久久中文字幕 | 久久精品国产日本波多野结衣 | 亚洲欧美精品伊人久久 | 国产色在线 | 国产 | 国产成人无码一二三区视频 | 无码任你躁久久久久久久 | 噜噜噜亚洲色成人网站 | 波多野结衣高清一区二区三区 | 国产一区二区三区精品视频 | 中文无码伦av中文字幕 | 亚洲精品午夜无码电影网 | 夜精品a片一区二区三区无码白浆 | 久久精品国产99精品亚洲 | 久久亚洲a片com人成 | 妺妺窝人体色www婷婷 | 久久久久免费看成人影片 | 77777熟女视频在线观看 а天堂中文在线官网 | 正在播放老肥熟妇露脸 | 人妻少妇精品无码专区动漫 | 亚洲成av人片天堂网无码】 | 18黄暴禁片在线观看 | 亚洲 a v无 码免 费 成 人 a v | 国产凸凹视频一区二区 | 亚洲国产精品美女久久久久 | 99国产精品白浆在线观看免费 | 亚洲狠狠色丁香婷婷综合 | 日本爽爽爽爽爽爽在线观看免 | 亚洲国产精品一区二区第一页 | 日韩精品无码一区二区中文字幕 | 露脸叫床粗话东北少妇 | 国产精华av午夜在线观看 | 亚洲国产午夜精品理论片 | 综合激情五月综合激情五月激情1 | 国产午夜无码精品免费看 | 久久99精品国产麻豆 | 一本色道婷婷久久欧美 | 欧美日韩一区二区三区自拍 | 永久黄网站色视频免费直播 | 丰满少妇熟乱xxxxx视频 | 中文无码成人免费视频在线观看 | 天堂а√在线地址中文在线 | 国产精品人妻一区二区三区四 | 欧洲vodafone精品性 | 成人无码视频在线观看网站 | 成年美女黄网站色大免费视频 | 中文字幕无码av波多野吉衣 | 未满小14洗澡无码视频网站 | 人妻少妇精品无码专区二区 | 成年美女黄网站色大免费全看 | 国产精品久久久久久亚洲毛片 | 亚洲精品一区三区三区在线观看 | 亚洲综合无码一区二区三区 | 任你躁国产自任一区二区三区 | 水蜜桃亚洲一二三四在线 | 中文字幕av无码一区二区三区电影 | 樱花草在线播放免费中文 | 青草青草久热国产精品 | 亚洲va中文字幕无码久久不卡 | 久久人人爽人人爽人人片av高清 | 久久无码人妻影院 | 97夜夜澡人人爽人人喊中国片 | 在线亚洲高清揄拍自拍一品区 | 久久午夜无码鲁丝片秋霞 | 亚洲国产精品一区二区美利坚 | 国产成人无码a区在线观看视频app | 久久久久久亚洲精品a片成人 | 丰满诱人的人妻3 | 久久www免费人成人片 | 日本精品人妻无码免费大全 | 国产精品久久国产精品99 | 欧洲极品少妇 | 日本免费一区二区三区最新 | 少妇高潮喷潮久久久影院 | 国产亚洲视频中文字幕97精品 | 日韩av无码中文无码电影 | 一本色道久久综合亚洲精品不卡 | 激情爆乳一区二区三区 | 亚洲 欧美 激情 小说 另类 | 国产超碰人人爽人人做人人添 | 偷窥村妇洗澡毛毛多 | 亚洲成在人网站无码天堂 | 午夜不卡av免费 一本久久a久久精品vr综合 | 精品国产一区av天美传媒 | 欧美怡红院免费全部视频 | 亚洲人亚洲人成电影网站色 | 天天躁夜夜躁狠狠是什么心态 | 丰满少妇人妻久久久久久 | 国产麻豆精品一区二区三区v视界 | 草草网站影院白丝内射 | 国产内射老熟女aaaa | 一区二区三区高清视频一 | 草草网站影院白丝内射 | 高潮喷水的毛片 | 亚洲国产午夜精品理论片 | 曰韩少妇内射免费播放 | 激情亚洲一区国产精品 | 久久精品中文闷骚内射 | 亚洲精品一区二区三区在线 | 精品偷自拍另类在线观看 | 欧美日韩一区二区综合 | 国产精品人人妻人人爽 | 亚洲狠狠色丁香婷婷综合 | 欧美性猛交xxxx富婆 | 精品无码一区二区三区的天堂 | 无码播放一区二区三区 | 亚洲国产成人av在线观看 | 激情综合激情五月俺也去 | 纯爱无遮挡h肉动漫在线播放 | 三上悠亚人妻中文字幕在线 | 熟妇人妻中文av无码 | 无码一区二区三区在线观看 | 在线天堂新版最新版在线8 | 国产麻豆精品精东影业av网站 | 荫蒂被男人添的好舒服爽免费视频 | 麻豆国产丝袜白领秘书在线观看 | 人妻插b视频一区二区三区 | 奇米影视888欧美在线观看 | 国产精品香蕉在线观看 | 国产精品久久久久7777 | 久久精品99久久香蕉国产色戒 | 日本熟妇大屁股人妻 | 中文字幕乱码人妻无码久久 | 国产av久久久久精东av | 婷婷五月综合激情中文字幕 | 国产成人亚洲综合无码 | 国产人妻人伦精品 | 丁香花在线影院观看在线播放 | 亲嘴扒胸摸屁股激烈网站 | 捆绑白丝粉色jk震动捧喷白浆 | 国产精品久久久一区二区三区 | 久久zyz资源站无码中文动漫 | 亚洲熟悉妇女xxx妇女av | 男女猛烈xx00免费视频试看 | 在线视频网站www色 | 青青草原综合久久大伊人精品 | 九九久久精品国产免费看小说 | 丰满妇女强制高潮18xxxx | 免费国产成人高清在线观看网站 | 日韩少妇白浆无码系列 | 国产精品久久久久久久9999 | 天堂а√在线地址中文在线 | 大地资源中文第3页 | 久久国产精品二国产精品 | 欧美成人高清在线播放 | 国产亚洲精品久久久久久国模美 | 妺妺窝人体色www婷婷 | 99精品国产综合久久久久五月天 | 色综合久久久无码中文字幕 | 丰满人妻一区二区三区免费视频 | √天堂资源地址中文在线 | 国产精品无码永久免费888 | 亚洲精品国产精品乱码视色 | 国产在线aaa片一区二区99 | 亚洲娇小与黑人巨大交 | 日本va欧美va欧美va精品 | 国内精品人妻无码久久久影院 | 日本成熟视频免费视频 | 偷窥村妇洗澡毛毛多 | 秋霞成人午夜鲁丝一区二区三区 | 人人妻人人澡人人爽人人精品浪潮 | 久久久无码中文字幕久... | 色欲综合久久中文字幕网 | 精品乱子伦一区二区三区 | 国产精品人人爽人人做我的可爱 | 亚洲精品一区二区三区四区五区 | 成人欧美一区二区三区 | 欧美丰满熟妇xxxx性ppx人交 | 牛和人交xxxx欧美 | 欧美成人免费全部网站 | 一本久久a久久精品亚洲 | 免费观看激色视频网站 | 久久精品丝袜高跟鞋 | 亚洲gv猛男gv无码男同 | 成人av无码一区二区三区 | 粉嫩少妇内射浓精videos | 亚洲乱码日产精品bd |