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

加速程序開發 Python整合C語言模塊

開發 后端 前端
本文通過實例研究如何在Python程序中整合既有的C語言模塊,包括用C語言編寫的源程序和動態鏈接庫等,從而充分發揮Python語言和C語言各自的優勢。

Python是一種用于快速開發軟件的編程語言,它的語法比較簡單,易于掌握,但存在執行速度慢的問題,并且在處理某些問題時存在不足,如對計算機硬件系統的訪問,對媒體文件的訪問等。而作為軟件開發的傳統編程語言C語言,卻能在這些問題上很好地彌補Python語言的不足。

51CTO推薦閱讀:專訪豆瓣網***架構師洪強寧:Python,簡單的力量

概覽

Python是一種用于快速開發軟件的編程語言,它的語法比較簡單,易于掌握,但存在執行速度慢的問題,并且在處理某些問題時存在不足,如對計算機硬件系統的訪問,對媒體文件的訪問等。而作為軟件開發的傳統編程語言——C語言,卻能在這些問題上很好地彌補Python語言的不足。因此,本文通過實例研究如何在Python程序中整合既有的C語言模塊,包括用C語言編寫的源程序和動態鏈接庫等,從而充分發揮Python語言和C語言各自的優勢。

Python語言的特點

Python作為一門程序開發語言,被越來越多地運用到快速程序開發。Python是一種解釋型的,互動的,面向對象的編程語言,它包含了模塊化的操作,異常處理,動態資料形態,以及類型的使用。它的語法表達優美易讀,具有很多優秀的腳本語言的特點:解釋的,面向對象的,內建的高級數據結構,支持模塊和包,支持多種平臺,可擴展。而且它還支持交互式方式運行,圖形方式運行。它擁有眾多的編程界面支持各種操作系統平臺以及眾多的各類函數庫,利用C和C++可以對它進行擴充。

C語言的特點

C語言作為最受人們歡迎的語言之一,有廣泛的發展基礎。簡潔緊湊、靈活方便,功能強大是其特點。另外,C語言是一門中級語言。它把高級語言的基本結構和語句與低級語言的實用性結合起來。由于可以直接訪問物理地址,可以方便的對硬件進行操作。因此,很多的系統軟件都是由C語言編寫。

Python語言與C語言的交互

為了節省軟件開發成本,軟件開發人員希望能夠縮短的軟件的開發時間,希望能夠在短時間內開發出穩定的產品。Python功能強大,簡單易用,能夠快速開發應用軟件。但是由于Python自身執行速度的局限性,對性能要求比較高的模塊需要使用效率更高的程序語言進行開發。

例如C語言,系統的其他模塊運用Python進行快速開發,***將C語言開發的模塊與Python開發的模塊進行整合。在此背景下,基于Python語言與C語言的各自特點,用C語言來擴展現有的Python程序,顯得很有意義。本文首先介紹幾種常用的整合Python程序與C語言程序的方法,***給出相應的實例。

利用ctypes模塊整合Python程序和C程序

ctypes模塊

ctypes是Python的一個標準模塊,它包含在Python2.3及以上的版本里。ctypes是一個Python的高級外部函數接口,它使得Python程序可以調用C語言編譯的靜態鏈接庫和動態鏈接庫。運用ctypes模塊,能夠在Python源程序中創建,訪問和操作簡單的或復雜的C語言數據類型。

最為重要的是ctypes模塊能夠在多個平臺上工作,包括Windows,WindowsCE,MacOSX,Linux,Solaris,FreeBSD,OpenBSD。接下來通過幾個簡單的例子來看一下ctypes模塊如何整合Python程序和C程序。

#p#

源代碼層面上的整合

利用Python本身提供的ctypes模塊可以使Python語言和C語言在源代碼層面上進行整合。本節介紹了如何通過使用ctypes庫,在Python程序中可以定義類似C語言的變量。下表列出了ctypes變量類型,C語言變量類型和Python語言變量類型之間的關系:

表1.ctypes,c語言和Python語言變量類型關系 
表1.ctypes,c語言和Python語言變量類型關系

表1中的***列是在ctypes庫中定義的變量類型,第二列是C語言定義的變量類型,第三列是Python語言在不使用ctypes時定義的變量類型。舉例:

  1. 清單1.ctypes簡單使用  
  2. >>>fromctypesimport*#導入ctypes庫中所有模塊  
  3. >>>i=c_int(45)#定義一個int型變量,值為45  
  4. >>>i.value#打印變量的值  
  5. 45  
  6. >>>i.value=56#改變該變量的值為56  
  7. >>>i.value#打印變量的新值  
  8. 56 

從下面的例子可以更明顯地看出ctypes里的變量類型和C語言變量類型的相似性:

  1. 清單2.ctypes使用C語言變量  
  2. >>>p=create_string_buffer(10)#定義一個可變字符串變量,長度為10  
  3. >>>p.raw#初始值是全0,即C語言中的字符串結束符’\0’  
  4. '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'  
  5. >>>p.value="Student"#字符串賦值  
  6. >>>p.raw#后三個字符仍是’\0’  
  7. 'Student\x00\x00\x00'  
  8. >>>p.value="Big"#再次賦值  
  9. >>>p.raw#只有前三個字符被修改,第四個字符被修改為’\0’  
  10. 'Big\x00ent\x00\x00\x00' 

下面例子說明了指針操作:

  1. 清單3.ctypes使用C語言指針  
  2. >>>i=c_int(999)#定義int類型變量i,值為999  
  3. >>>pi=pointer(i)#定義指針,指向變量i  
  4. >>>pi.contents#打印指針所指的內容  
  5. c_long(999)  
  6. >>>pi.contents=c_long(1000)#通過指針改變變量i的值  
  7. >>>pi.contents#打印指針所指的內容  
  8. c_long(1000) 

下面例子說明了結構和數組的操作:

  1. 清單4.ctypes使用C語言數組和結構體  
  2. >>>classPOINT(Structure):#定義一個結構,內含兩個成員變量x,y,均為int型  
  3. ..._fields_=[("x",c_int),  
  4. ...("y",c_int)]  
  5. ...  
  6. >>>point=POINT(2,5)#定義一個POINT類型的變量,初始值為x=2,y=5 
  7. >>>printpoint.x,point.y#打印變量  
  8. 25  
  9. >>>point=POINT(y=5)#重新定義一個POINT類型變量,x取默認值  
  10. >>>printpoint.x,point.y#打印變量  
  11. 05  
  12. >>>POINTPOINT_ARRAY=POINT*3#定義POINT_ARRAY為POINT的數組類型  
  13. #定義一個POINT數組,內含三個POINT變量  
  14. >>>pa=POINT_ARRAY(POINT(7,7),POINT(8,8),POINT(9,9))  
  15. >>>forpinpa:printp.x,p.y#打印POINT數組中每個成員的值  
  16. ...  
  17. 77  
  18. 88  
  19. 99 

#p#

Python訪問C語言dll

通過ctypes模塊,Python程序可以訪問C語言編譯的dll,本節通過一個簡單的例子,Python程序helloworld.py中調用some.dll中的helloworld函數,來介紹Python程序如何調用windows平臺上的dll。

導入動態鏈接庫

  1. 清單5.ctypes導入dll  
  2. fromctypesimportwindll#首先導入ctypes模塊的windll子模塊  
  3. somelibc=windll.LoadLibrary(some.dll)#使用windll模塊的LoadLibrary導入動態鏈接庫 

訪問動態鏈接庫中的函數

  1. 清單6.ctypes使用dll中的函數  
  2. somelibc.helloworld()#這樣就可以得到some.dll的helloworld的返回值 

整個helloworld.py是這樣的:

  1. 清單7.Pythonhellpworld代碼  
  2. fromctypesimportwindll  
  3. defcallc():  
  4. #loadthesome.dll  
  5. somelibc=windll.LoadLibrary(some.dll)  
  6. printsomelibc.helloworld()  
  7. if__name__==“__main__”:  
  8. callc() 

在命令行運行helloworld.py,在console上可以看到some.dll中helloworld的輸出。

  1. 清單8.PythonhellpworldWindowscommandconsole運行輸出  
  2. C:\>pythonC:\python\test\helloworld.py  
  3. HelloWorld!Justasimpletest. 

Python調用C語言so

通過ctypes模塊,Python程序也可以訪問C語言編譯的so文件。與Python調用C的dll的方法基本相同,本節通過一個簡單的例子,Python程序helloworld.py中調用some.so中的helloworld函數,來介紹Python程序如何調用linux平臺上的so。

導入動態鏈接庫

  1. 清單9.ctypes導入so  
  2. fromctypesimportcdll  
  3. #首先導入ctypes模塊的cdll子模塊,注意linux平臺上使用cdll的,而不是windll。  
  4. somelibc=cdll.LoadLibrary(“./some.so”)  
  5. #使用cdll模塊的LoadLibrary導入動態鏈接庫 

訪問動態鏈接庫中的函數

  1. 清單10.ctypes使用so中的函數  
  2. somelibc.helloworld()#使用方法與windows平臺上是一樣的 

整個helloworld.py是這樣的:

  1. 清單11.Pythonhelloworld代碼  
  2. fromctypesimportcdll  
  3. defcallc():  
  4. #loadthesome.so  
  5. somelibc=cdll.LoadLibrary(some.so)  
  6. printsomelibc.helloworld()  
  7. if__name__==“__main__”:  
  8. callc() 

在命令行運行helloworld.py,在linux標準輸出上可以看到some.so中helloworld的輸出。

  1. 清單12.PythonhellpworldLinuxshell運行輸出  
  2. [root@linux-790t]python./helloworld.py  
  3. HelloWorld!Justasimpletest. 

#p#

Python程序和C程序整合實例

以下我們舉例用Python來實現一個小工具,用來實現hash算法,查看文件的校驗和(MD5,CRC,SHA1等等)。通過查看文件的校驗和,可以知道文件在傳輸過程中是否被破壞或篡改。

Hash,一般翻譯做“散列”,也有直接音譯為"哈希"的,就是把任意長度的輸入(又叫做預映射,pre-image),通過散列算法,變換成固定長度的輸出,該輸出就是散列值。這種轉換是一種壓縮映射,也就是,散列值的空間通常遠小于輸入的空間,不同的輸入可能會散列成相同的輸出,而不可能從散列值來唯一的確定輸入值。簡單的說就是一種將任意長度的消息壓縮到某一固定長度的消息摘要的函數。

由于相對C語言來說,Python的運行效率較低,因此我們的Python小工具利用一個已有的C語言的動態鏈接庫(hashtcalc.dll)來實現我們的程序。本例中,我們運用wxPython編寫簡單的GUI界面,通過python調用hashtcalc.dll的接口計算文件的校驗和,然后輸出在界面上。

架構圖

圖1.工具的架構圖 
圖1.工具的架構圖

hashcalc.dll接口描述

函數名:calc_CRC32

函數:char*calc_CRC32(char*filename);

參數:文件名

返回值:字符串

說明:該函數對輸入的文件內容進行計算,并且返回它的CRC32

函數名:calc_MD5

函數:char*calc_MD5(char*filename);

參數:文件名

返回值:字符串

說明:該函數對輸入的文件內容進行計算,并且返回它的MD5

函數名:calc_SHA1

函數:char*calc_SHA1(char*filename);

參數:文件名

返回值:字符串

說明:該函數對輸入的文件內容進行計算,并且返回它的SHA1

HashcalcAdapter代碼

HashcalcAdapter.py實現了一個python的classHashcalcAdapter,HashcalcAdapter對hashtcalc.dl的C語言接口進行了封裝,使得其他python模塊可以直接通過HashcalcAdapter使用hashtcalc.dll中實現的hash算法。具體的代碼如下:

  1. 清單13.HashcalcAdapter.py代碼  
  2. fromctypesimportwindll  
  3. fromctypesimport*  
  4. classHashcalcAdapter(object):  
  5. def__init__(self,dllpath):  
  6. self._dllpath=dllpath  
  7. self._libc=windll.LoadLibrary(self._dllpath)  
  8.  
  9. defcalc_CRC32(self,filename):  
  10. new_filename=c_char_p(filename)  
  11. returnself._libc.calc_CRC32(new_filename)  
  12.  
  13. defcalc_MD5(self,filename):  
  14. new_filename=c_char_p(filename)  
  15. returnself._libc.calc_MD5(new_filename)  
  16.  
  17. defcalc_SHA1(self,filename):  
  18. new_filename=c_char_p(filename)  
  19. returnself._libc.calc_SHA1(new_filename) 

運行界面

圖2.工具的運行界面 
圖2.工具的運行界面

總結

在軟件開發過程中同時運用Python語言和C語言,既能夠在加快開發速度的同時,也能夠保證軟件的運行性能。

【編輯推薦】

  1. 專訪豆瓣網***架構師洪強寧:Python,簡單的力量
  2. Python作用域的實際操作步驟的相關介紹
  3. 對Python特色的詳細介紹
  4. Python嵌入C實例的相關具體解析 
責任編輯:王曉東 來源: IBM
相關推薦

2012-06-08 17:58:48

安全加速Check Point

2012-02-08 15:06:31

ibmdw

2009-09-24 17:21:17

加速Hibernate

2023-08-17 20:13:42

2019-05-24 16:20:11

Python 開發編程語言

2009-08-13 17:04:09

C#語言C#程序

2009-01-16 08:57:58

GCCC編譯

2011-05-13 15:54:50

C模塊化

2009-06-15 11:03:10

Java語言C#語言

2010-03-25 18:13:06

Python編程語言

2010-01-22 11:23:06

C++程序

2010-02-24 14:27:25

Python模塊語言

2011-05-17 14:53:35

C

2010-01-20 09:14:49

C語言模塊化

2011-05-13 15:46:49

C模塊化

2010-08-02 09:10:36

Flex模塊化

2009-09-03 17:42:07

C#開發CF藍牙模塊

2013-07-04 13:19:24

Java開發速度

2021-05-27 08:47:16

C語言C語言程序開發

2009-09-02 17:08:30

C#語言開發Windo
點贊
收藏

51CTO技術棧公眾號

欧美日韩综合在线| 久久久国产精华| 欧美日本亚洲视频| 在线黄色免费网站| 欧美日韩不卡| 一区二区在线电影| 精品视频一区二区| 中文字幕av久久爽| 国模大胆一区二区三区| 亚洲美女动态图120秒| 天天干天天爽天天射| 久久电影网站| 中文字幕欧美日韩一区| 91亚洲国产成人久久精品网站| 久久久久久久极品内射| 色棕色天天综合网| 日韩欧美的一区二区| 成人久久久久久久久| 九色porny在线| 91美女片黄在线观看| 成人a在线视频| 国产性猛交╳xxx乱大交| 99视频精品全部免费在线视频| 亚洲国产精品免费| 亚洲18在线看污www麻豆 | 国产欧美视频在线| 色综合色狠狠天天综合色| 日本一二三区视频在线| 国产经典自拍视频在线观看| 国产不卡在线视频| 国产精品视频久久久久| 制服.丝袜.亚洲.中文.综合懂色| 婷婷综合视频| 亚洲色图美腿丝袜| yjizz视频| 国产一区二区三区精品在线观看| 在线观看网站黄不卡| www.国产在线播放| av中文字幕在线播放| 国产偷国产偷精品高清尤物 | 久久久久久久一区二区| 神马午夜精品91| 国产亚洲一区| 亚洲精品电影久久久| 第一页在线视频| 国产精品国产三级在线观看| 欧美日韩一区二区三区不卡| 农村妇女精品一二区| 僵尸再翻生在线观看免费国语| 一区二区三区四区五区视频在线观看| 亚洲午夜在线观看| 成年人在线视频| 国产欧美一区二区精品性色超碰| 欧美成人在线免费观看| 欧美性猛交 xxxx| 成人手机在线视频| 91在线观看网站| www.xxx国产| 国产精品自拍av| 97久久精品午夜一区二区| 一级片免费网站| 国产做a爰片久久毛片| 国产日韩欧美中文| 一级特黄aaa大片| 韩国三级电影一区二区| 91老司机在线| 亚洲av无码国产综合专区 | 国产精品无码毛片| 全球av集中精品导航福利| 亚洲精品久久在线| 中文字幕一区二区三区人妻| 国产一区二区三区四区五区传媒 | 亚洲va男人天堂| 国产免费黄色大片| 国产成人综合网站| 精品国产福利| 国产亚洲依依| 国产精品高潮呻吟| 日日噜噜夜夜狠狠久久丁香五月| 午夜影院免费在线| 同产精品九九九| 国产精品少妇在线视频| 亚洲一区二区三区四区| 欧美日韩另类国产亚洲欧美一级| 天天摸天天舔天天操| 狂野欧美xxxx韩国少妇| 亚洲аv电影天堂网| 无码熟妇人妻av| 波多野结衣的一区二区三区| 欧美另类99xxxxx| 日产精品久久久久| 久久午夜av| 91丝袜美腿美女视频网站| 亚洲欧美激情在线观看| 久久九九久久九九| 99亚洲精品视频| 女海盗2成人h版中文字幕| 在线观看网站黄不卡| 韩国三级在线播放| 欧美xxxx在线| 最新中文字幕亚洲| 国产在线视频卡一卡二| 日本不卡123| 国产成人av一区二区三区| 日本福利片高清在线观看| 欧美国产乱子伦| 无码粉嫩虎白一线天在线观看 | 国产一区香蕉久久| 欧美 日韩 综合| 中文字幕亚洲欧美在线不卡| 欧美久久久久久久久久久久久| 成人亚洲综合| 亚洲精品久久久久中文字幕欢迎你 | 国产一级做a爱片久久毛片a| 久久66热偷产精品| 久久亚洲高清| 亚洲制服国产| 欧美三级视频在线播放| 波多野结衣一二三区| 欧美激情电影| 国产成人精品在线| 黄色美女一级片| 亚洲欧美视频在线观看视频| 成人一区二区三| 国产ts一区| 久久夜精品va视频免费观看| 成年人视频免费| 99热在这里有精品免费| 亚洲一区 在线播放| 成人在线视频免费看| 国产偷亚洲偷欧美偷精品| 久久久久久久久艹| 精品中文字幕一区二区| 色噜噜色狠狠狠狠狠综合色一| www.综合| 亚洲国产成人91精品| 久操免费在线视频| 精品亚洲porn| 亚洲人成网站在线播放2019| 午夜精品成人av| 亚洲美女在线观看| 国产成人无码精品亚洲| 成人av网站在线观看| a级片一区二区| 精品国产鲁一鲁****| 操日韩av在线电影| 97人妻精品一区二区三区视频| 日本一区二区三区在线不卡| 国产精品拍拍拍| 国产探花一区| 国产精品三级在线| 国产福利在线视频| 欧美亚洲图片小说| 少妇无套高潮一二三区| 日韩中文字幕不卡| 日本免费高清一区二区| 欧美黄色网页| 在线视频欧美日韩| 青青艹在线观看| 日本一区二区三区dvd视频在线| 熟女少妇精品一区二区| 欧美日韩在线二区| 国产在线视频2019最新视频| 免费av在线网站| 日韩三级视频在线观看| 久久亚洲AV无码| 99视频有精品| mm1313亚洲国产精品无码试看| 国产videos久久| 国产精品免费在线免费| 欧美成年黄网站色视频| 8x8x8国产精品| 免费毛片在线播放免费 | 97视频中文字幕| h片视频在线观看| 亚洲男人天堂手机在线| 国产一级片一区二区| 亚洲欧洲成人精品av97| 无套白嫩进入乌克兰美女| 欧美日本一区二区视频在线观看 | 亚洲天堂免费在线观看视频| 最近中文字幕一区二区| 99成人超碰| 国产高清一区视频| 澳门成人av网| 日韩一二三在线视频播| 亚洲精品国产精品乱码不卡| 欧美性开放视频| 免费精品在线视频| 懂色av一区二区三区蜜臀| 欧美aⅴ在线观看| 日韩欧美一区二区三区免费看| 91影院未满十八岁禁止入内| 午夜精品成人av| 久久最新资源网| 四虎在线免费看| 在线不卡免费欧美| 日韩精品视频免费播放| 国产精品国产自产拍在线| 成人做爰69片免费| 日本不卡视频一二三区| 妺妺窝人体色777777| 欧美三级伦理在线| 成人午夜电影在线播放| 欧美精品高清| 性欧美xxxx交| 日韩在线资源| 亚洲精品永久免费| 国产高清免费观看| 91福利在线观看| 日本一二三区不卡| 中文字幕一区二区不卡| 一区二区三区免费在线观看视频 | 成全电影播放在线观看国语| 精品久久久久久久久久久久久久久 | 95av在线视频| 最新日韩三级| 午夜精品久久久久久久99热浪潮 | 亚洲欧美激情网| 99综合在线| 欧美一级特黄aaaaaa在线看片| 精品高清久久| 乱一区二区三区在线播放| 日本一区二区三区电影免费观看| 国产精品v日韩精品| 日韩欧美一中文字暮专区| 久久69精品久久久久久久电影好| av资源种子在线观看| 日韩精品极品视频| 亚洲黄色在线播放| 欧美剧在线免费观看网站| 日韩一级在线视频| 精品av在线播放| 青娱乐国产在线| 亚洲精品欧美二区三区中文字幕| 国产高潮呻吟久久| 久久众筹精品私拍模特| 国产麻豆剧传媒精品国产av| 国产成人精品网址| www.亚洲自拍| 激情综合一区二区三区| 天天综合网久久| 日韩精品一区第一页| 日本三区在线观看| 亚洲影视在线| 99999精品视频| 国产毛片一区| www黄色av| 久久午夜精品| 黄色三级视频在线| 日本不卡高清视频| jizzzz日本| 国内精品伊人久久久久影院对白| 色www免费视频| 韩国成人福利片在线播放| aaa一级黄色片| 国产一区在线精品| 一起草最新网址| 国产成人aaa| 性欧美18—19sex性高清| 成年人网站91| 人人妻人人澡人人爽人人精品| wwwwww.欧美系列| 国产人妻大战黑人20p| 精品肉辣文txt下载| 国产精品久久久久久一区二区| 日韩经典一区| 91免费看片在线| 日本中文字幕伦在线观看| 精品捆绑美女sm三区| 日本黄色不卡视频| 欧美日韩国产综合视频在线观看| 无码人妻精品一区二区三应用大全| 国产成人aaaa| 一区二区视频观看| 欧美国产精品专区| 日韩大片一区二区| 在线一区免费观看| 亚洲一区二区av电影| 色一情一交一乱一区二区三区 | 欧美日韩人妻精品一区二区三区| 亚洲精品视频在线观看网站| 日本三级中文字幕| 国产成人综合在线| 两性午夜免费视频| 综合天堂av久久久久久久| 中文字幕免费高| 国产后进白嫩翘臀在线观看视频| 日韩欧美国产一区在线观看| 一二三四国产精品| 免费日韩视频| 在线视频一二三区| 97青娱国产盛宴精品视频| 在线免费观看羞羞视频一区二区| 日韩xxxx视频| 韩国av永久免费| 亚洲在线观看免费视频| 久久午夜鲁丝片午夜精品| 色嗨嗨av一区二区三区| 天天操中文字幕| 欧美日韩国产片| 国产91绿帽单男绿奴| 中文字幕久久久av一区| xxxx成人| 91av在线播放| 韩国三级成人在线| 日本高清不卡三区| 合欧美一区二区三区| 亚洲三级视频网站| 成人国产精品视频| 欧美色视频一区二区三区在线观看 | 欧美一级二级三级| 欧美精品三区| 超碰在线播放91| 91亚洲精华国产精华精华液| 在线免费看av网站| 色综合天天性综合| 日批视频在线播放| 欧美成人免费视频| jvid一区二区三区| 蜜桃传媒视频第一区入口在线看| 黑人一区二区三区四区五区| 日本黄色的视频| 国产日韩欧美激情| 国产精品自拍99| 精品久久久久久无| 婷婷丁香在线| 91免费综合在线| 第一社区sis001原创亚洲| av免费播放网址| 99在线视频精品| 国产在线欧美在线| 日韩一级片在线观看| 欧美另类极品| 国产精品欧美激情| 国产一区二区欧美| 国产欧美在线一区| 99国产精品一区| 国产无套粉嫩白浆内谢| 欧美大片一区二区| 影院在线观看全集免费观看| 成人免费网站在线观看| 999国产精品| 午夜免费福利视频在线观看| 欧美激情一区二区三区在线| 天天爱天天做天天爽| 亚洲欧美中文日韩v在线观看| 国产在线观看www| 精品国产一区二区三区麻豆免费观看完整版 | 亚洲精品9999| 蜜桃视频一区二区三区在线观看| 精品欧美一区二区久久久| 色综合久久久久| 国产在线资源| 国产精品久久久久久网站| 欧美另类69xxxxx| 污色网站在线观看| 国产精品的网站| 国产视频一区二区三| 久久视频在线看| 麻豆一二三区精品蜜桃| 日本黄网站色大片免费观看| 国产成人亚洲综合a∨猫咪| 久久网一区二区| 亚洲精品国产综合久久| 日韩精品影片| 一区二区三区国| 国产精品一级黄| 日本熟妇色xxxxx日本免费看| 亚洲高清av在线| 超碰aⅴ人人做人人爽欧美| 青娱乐一区二区| 久久精品国产秦先生| 亚洲国产精品久| 日韩av在线免播放器| 成人网ww555视频免费看| 在线免费观看成人| 国产成人精品一区二| 国产一级精品视频| 伊人精品在线观看| 精品视频一二| 一区二区传媒有限公司| 中文文精品字幕一区二区| 99国产精品99| 欧美一区二区三区图| 日韩精品免费| 99久久久无码国产精品性波多| 欧美性69xxxx肥| 免费av网站在线观看| 国产伦精品一区二区三毛| 日韩精品91亚洲二区在线观看| 国产免费久久久久| 日韩av在线网| 欧美成人一二区| 成人午夜视频在线观看免费| 国产日韩欧美精品综合| 丰满肉肉bbwwbbww| 国产精品色午夜在线观看| 国产精品成人一区二区网站软件| 亚洲码无人客一区二区三区|