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

文本分析了4000萬條Stack Overflow討論帖,這些是程序員最推薦的編程書(附代碼)

大數據 數據分析 前端
程序員們都看什么書?他們會向別人推薦哪些書?本文作者分析了Stack Overflow上的4000萬條問答,找出了程序員們最常討論的書,同時非常慷慨地公開了數據分析代碼。讓我們來看看作者是怎么說的吧。

程序員們都看什么書?他們會向別人推薦哪些書?

本文作者分析了Stack Overflow上的4000萬條問答,找出了程序員們最常討論的書,同時非常慷慨地公開了數據分析代碼。讓我們來看看作者是怎么說的吧。

尋找下一本值得讀的編程書是一件很難,而且有風險的事情。

作為一個開發者,你的時間是很寶貴的,而看書會花費大量的時間。這時間其實你本可以用來去編程,或者是去休息,但你卻決定將其用來讀書以提高自己的能力。

所以,你應該選擇讀哪本書呢?我和同事們經常討論看書的問題,我發現我們對于書的看法相差很遠。

幸運的是,Stack Exchange(程序員最常用的IT技術問答網站Stack Overflow的母公司)發布了他們的問答數據。用這些數據,我找出了Stack Overflow上4000萬條問答里,被討論最多的編程書籍,一共5720本。

在這篇文章里,我將詳細介紹數據獲取及分析過程,附有代碼。

文本分析了4000萬條Stack Overflow討論帖,這些是程序員最推薦的編程書(附代碼)

我開發了dev-books.com來展示書籍推薦排序

文本分析了4000萬條Stack Overflow討論帖,這些是程序員最推薦的編程書(附代碼)

讓我們放大看看這些最受歡迎的書

 

  • “被推薦次數最多的書是Working Effectively with Legacy Code《修改代碼的藝術》,其次是Design Pattern: Elements of Reusable Object-Oriented Software《設計模式:可復用面向對象軟件的基礎》。
  • 雖然它們的名字聽起來枯燥無味,但內容的質量還是很高的。你可以在每種標簽下將這些書依據推薦量排序,如JavaScript, C, Graphics等等。這顯然不是書籍推薦的終極方案,但是如果你準備開始編程或者提升你的知識,這是一個很好的開端。”

——來自Lifehacker.com的評論

獲取和輸入數據

我從archive.org抓取了Stack Exchange的數據。(https://archive.org/details/stackexchange)

從最開始我就意識到用最常用的方式(如 myxml := pg_read_file(‘path/to/my_file.xml’))輸入48GB的XML文件到一個新建立的數據庫(PostgreSQL)是不可能的,因為我沒有48GB的RAM在我的服務器上,所以我決定用SAX程序。

所有的值都被儲存在這個標簽之間,我用Python來提取這些值:

  1. def startElement(self, name, attributes):  
  2.  if name == ‘row’:  
  3.  self.cur.execute(“INSERT INTO posts (Id, Post_Type_Id, Parent_Id, Accepted_Answer_Id, Creation_Date, Score, View_Count, Body, Owner_User_Id, Last_Editor_User_Id, Last_Editor_Display_Name, Last_Edit_Date, Last_Activity_Date, Community_Owned_Date, Closed_Date, Title, Tags, Answer_Count, Comment_Count, Favorite_Count) VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)”,  
  4.  (  
  5.  (attributes[‘Id’] if ‘Id’ in attributes else None),  
  6.  (attributes[‘PostTypeId’] if ‘PostTypeId’ in attributes else None),  
  7.  (attributes[‘ParentID’] if ‘ParentID’ in attributes else None),  
  8.  (attributes[‘AcceptedAnswerId’] if ‘AcceptedAnswerId’ in attributes else None),  
  9.  (attributes[‘CreationDate’] if ‘CreationDate’ in attributes else None),  
  10.  (attributes[‘Score’] if ‘Score’ in attributes else None),  
  11.  (attributes[‘ViewCount’] if ‘ViewCount’ in attributes else None),  
  12.  (attributes[‘Body’] if ‘Body’ in attributes else None),  
  13.  (attributes[‘OwnerUserId’] if ‘OwnerUserId’ in attributes else None),  
  14.  (attributes[‘LastEditorUserId’] if ‘LastEditorUserId’ in attributes else None),  
  15.  (attributes[‘LastEditorDisplayName’] if ‘LastEditorDisplayName’ in attributes else None),  
  16.  (attributes[‘LastEditDate’] if ‘LastEditDate’ in attributes else None),  
  17.  (attributes[‘LastActivityDate’] if ‘LastActivityDate’ in attributes else None),  
  18.  (attributes[‘CommunityOwnedDate’] if ‘CommunityOwnedDate’ in attributes else None),  
  19.  (attributes[‘ClosedDate’] if ‘ClosedDate’ in attributes else None),  
  20.  (attributes[‘Title’] if ‘Title’ in attributes else None),  
  21.  (attributes[‘Tags’] if ‘Tags’ in attributes else None),  
  22.  (attributes[‘AnswerCount’] if ‘AnswerCount’ in attributes else None),  
  23.  (attributes[‘CommentCount’] if ‘CommentCount’ in attributes else None),  
  24.  (attributes[‘FavoriteCount’] if ‘FavoriteCount’ in attributes else None)  
  25.  )  
  26.  ); 

在數據輸入進行了三天之后(有將近一半的XML在這段時間內已經被導入了),我發現我犯了一個錯誤:我把“ParentId”寫成了“ParentID”。

但這個時候,我不想再多等一周,所以把處理器從AMD E-350 (2 x 1.35GHz)換成了Intel G2020 (2 x 2.90GHz),但這并沒能加速進度。

下一個決定——批量輸入:

  1. class docHandler(xml.sax.ContentHandler):  
  2.  def __init__(self, cusor):  
  3.  self.cusor = cusor;  
  4.  self.queue = 0;  
  5.  self.output = StringIO();  
  6.    def startElement(self, name, attributes):  
  7.  if name == ‘row’:  
  8.  self.output.write(  
  9.  attributes[‘Id’] + '\t` +   
  10.  (attributes[‘PostTypeId’] if ‘PostTypeId’ in attributes else '\\N') + '\t' +   
  11.  (attributes[‘ParentId’] if ‘ParentId’ in attributes else '\\N') + '\t' +   
  12.  (attributes[‘AcceptedAnswerId’] if ‘AcceptedAnswerId’ in attributes else '\\N') + '\t' +   
  13.  (attributes[‘CreationDate’] if ‘CreationDate’ in attributes else '\\N') + '\t' +   
  14.  (attributes[‘Score’] if ‘Score’ in attributes else '\\N') + '\t' +   
  15.  (attributes[‘ViewCount’] if ‘ViewCount’ in attributes else '\\N') + '\t' +   
  16.  (attributes[‘Body’].replace('\\', '\\\\').replace('\n', '\\\n').replace('\r', '\\\r').replace('\t', '\\\t') if ‘Body’ in attributes else '\\N') + '\t' +   
  17.  (attributes[‘OwnerUserId’] if ‘OwnerUserId’ in attributes else '\\N') + '\t' +   
  18.  (attributes[‘LastEditorUserId’] if ‘LastEditorUserId’ in attributes else '\\N') + '\t' +   
  19.  (attributes[‘LastEditorDisplayName’].replace('\n''\\n') if ‘LastEditorDisplayName’ in attributes else '\\N') + '\t' +   
  20.  (attributes[‘LastEditDate’] if ‘LastEditDate’ in attributes else '\\N') + '\t' +   
  21.  (attributes[‘LastActivityDate’] if ‘LastActivityDate’ in attributes else '\\N') + '\t' +   
  22.  (attributes[‘CommunityOwnedDate’] if ‘CommunityOwnedDate’ in attributes else '\\N') + '\t' +   
  23.  (attributes[‘ClosedDate’] if ‘ClosedDate’ in attributes else '\\N') + '\t' +   
  24.  (attributes[‘Title’].replace('\\', '\\\\').replace('\n', '\\\n').replace('\r', '\\\r').replace('\t', '\\\t') if ‘Title’ in attributes else '\\N') + '\t' +   
  25.  (attributes[‘Tags’].replace('\n''\\n') if ‘Tags’ in attributes else '\\N') + '\t' +   
  26.  (attributes[‘AnswerCount’] if ‘AnswerCount’ in attributes else '\\N') + '\t' +   
  27.  (attributes[‘CommentCount’] if ‘CommentCount’ in attributes else '\\N') + '\t' +   
  28.  (attributes[‘FavoriteCount’] if ‘FavoriteCount’ in attributes else '\\N') + '\n'  
  29.  );  
  30.  self. 

StringIO讓你可以用一個文件作為變量來執行copy_from這個函數,這個函數可以執行COPY(復制)命令。用這個方法,執行所有的輸入過程只需要一個晚上。

好,是時候創建索引了。理論上,GiST Indexes會比GIN慢,但它占用更少的空間,所以我決定用GiST。又過了一天,我得到了70GB的加了索引的數據。

在試了一些測試語句后,我發現處理它們會花費大量的時間。至于原因,是因為Disk IO需要等待。使用SSD GOODRAM C40 120Gb會有很大提升,盡管它并不是目前最快的SSD。

我創建了一組新的PostgreSQL族群:

  1. initdb -D /media/ssd/postgresq/data 

然后確認改變路徑到我的config服務器(我之前用Manjaro OS):

  1. vim /usr/lib/systemd/system/postgresql.service  
  2. Environment=PGROOT=/media/ssd/postgres 
  3. PIDFile=/media/ssd/postgres/data/postmaster.pid 

重新加載config并且啟動postgreSQL:

  1. systemctl daemon-reload postgresql systemctl start 
  2. postgresql 

這次輸入數據用了幾個小時,但我用了GIN(來添加索引)。索引在SSD上占用了20GB的空間,但是簡單的查詢僅花費不到一分鐘的時間。

從數據庫提取書籍

數據全部輸入之后,我開始查找提到這些書的帖子,然后通過SQL把它們復制到另一張表:

  1. CREATE TABLE books_posts AS SELECT * FROM posts WHERE body LIKE ‘%book%’”; 

下一步是找的對應帖子的連接:

  1. CREATE TABLE http_books AS SELECT * posts WHERE body LIKE ‘%http%’”; 

但這時候我發現StakOverflow代理的所有鏈接都如下所示:

  1. rads.stackowerflow.com/[$isbn]/ 

于是,我建立了另一個表來保存這些連接和帖子:

  1. CREATE TABLE rads_posts AS SELECT * FROM posts WHERE body LIKE ‘%http://rads.stackowerflow.com%'"; 

我使用常用的方式來提取所有的ISBN(國際標準書號),并通過下圖方式提取StackOverflow的標簽到另外一個表:

  1. regexp_split_to_table 

當我有了最受歡迎的標簽并且做了統計后,我發現不同標簽的前20本提及次數最多的書都比較相似。

我的下一步:改善標簽。

方法是:在找到每個標簽對應的前20本提及次數最多的書之后,排除掉之前已經處理過的書。因為這是一次性工作,我決定用PostgreSQL數組,編程語言如下:

  1. SELECT *  
  2.  , ARRAY(SELECT UNNEST(isbns) EXCEPT SELECT UNNEST(to_exclude ))  
  3.  , ARRAY_UPPER(ARRAY(SELECT UNNEST(isbns) EXCEPT SELECT UNNEST(to_exclude )), 1)   
  4.  FROM (  
  5.  SELECT *  
  6.  , ARRAY[‘isbn1’, ‘isbn2’, ‘isbn3’] AS to_exclude   
  7.  FROM (  
  8.  SELECT   
  9.  tag  
  10.  , ARRAY_AGG(DISTINCT isbn) AS isbns  
  11.  , COUNT(DISTINCT isbn)   
  12.  FROM (  
  13.  SELECT *   
  14.  FROM (  
  15.  SELECT   
  16.  it.*  
  17.  , t.popularity   
  18.  FROM isbn_tags AS it   
  19.  LEFT OUTER JOIN isbns AS i on i.isbn = it.isbn   
  20.  LEFT OUTER JOIN tags AS t on t.tag = it.tag   
  21.  WHERE it.tag in (  
  22.  SELECT tag   
  23.  FROM tags   
  24.  ORDER BY popularity DESC   
  25.  LIMIT 1 OFFSET 0  
  26.  )   
  27.  ORDER BY post_count DESC LIMIT 20  
  28.  ) AS t1   
  29.  UNION ALL  
  30.  SELECT *   
  31.  FROM (  
  32.  SELECT   
  33.  it.*  
  34.  , t.popularity   
  35.  FROM isbn_tags AS it   
  36.  LEFT OUTER JOIN isbns AS i on i.isbn = it.isbn   
  37.  LEFT OUTER JOIN tags AS t on t.tag = it.tag   
  38.  WHERE it.tag in (  
  39.  SELECT tag   
  40.  FROM tags   
  41.  ORDER BY popularity DESC   
  42.  LIMIT 1 OFFSET 1  
  43.  )   
  44.  ORDER BY post_count   
  45.  DESC LIMIT 20  
  46.  ) AS t2   
  47.  UNION ALL  
  48.  SELECT *   
  49.  FROM (  
  50.  SELECT   
  51.  it.*  
  52.  , t.popularity   
  53.  FROM isbn_tags AS it   
  54.  LEFT OUTER JOIN isbns AS i on i.isbn = it.isbn   
  55.  LEFT OUTER JOIN tags AS t on t.tag = it.tag   
  56.  WHERE it.tag in (  
  57.  SELECT tag   
  58.  FROM tags   
  59.  ORDER BY popularity DESC   
  60.  LIMIT 1 OFFSET 2  
  61.  )   
  62.  ORDER BY post_count DESC   
  63.  LIMIT 20  
  64.  ) AS t3   
  65.  ...  
  66.  UNION ALL  
  67.    SELECT *   
  68.  FROM (  
  69.  SELECT   
  70.  it.*  
  71.  , t.popularity   
  72.  FROM isbn_tags AS it   
  73.  LEFT OUTER JOIN isbns AS i on i.isbn = it.isbn   
  74.  LEFT OUTER JOIN tags AS t on t.tag = it.tag   
  75.  WHERE it.tag in (  
  76.  SELECT tag   
  77.  FROM tags   
  78.  ORDER BY popularity DESC   
  79.  LIMIT 1 OFFSET 78  
  80.  )   
  81.  ORDER BY post_count DESC   
  82.  LIMIT 20  
  83.  ) AS t79  
  84.  ) AS tt   
  85.  GROUP BY tag   
  86.  ORDER BY max(popularity) DESC   
  87.  ) AS ttt  
  88.  ) AS tttt   
  89.  ORDER BY ARRAY_upper(ARRAY(SELECT UNNEST(arr) EXCEPT SELECT UNNEST(la)), 1) DESC

既然已經有了所需要的數據,我開始著手建立網站。

建立網站

因為我不是一個網頁開發人員,更不是一個網絡用戶界面專家,所以我決定創建一個基于默認主題的十分簡單的單頁面app。

我創建了“標簽查找”的選項,然后提取最受歡迎的標簽,使每次查找都可以點擊相應選項來搜索。

我用長條圖來可視化搜索結果。嘗試了Hightcharts和D3(分別為兩個JavaScript數據可視化圖表庫),但是他們只能起到展示作用,在用戶響應方面還存在一些問題,而且配置起來很復雜。所以我決定用SVG創建自己的響應式圖表,為了使圖表可響應,必須針對不同的屏幕旋轉方向對其進行重繪。

 

  1. var w = $('#plot').width();  
  2.  var bars = "";var imgs = "";  
  3.  var texts = "";  
  4.  var rx = 10;  
  5.  var tx = 25;  
  6.  var max = Math.floor(w / 60);  
  7.  var maxPop = 0;  
  8.  for(var i =0; i < max; i ++){  
  9.  if(i > books.length - 1 ){  
  10.  break;  
  11.  }  
  12.  obj = books[i];  
  13.  if(maxPop < Number(obj.pop)) {  
  14.  maxPop = Number(obj.pop);  
  15.  }  
  16.  }  
  17.    for(var i =0; i < max; i ++){  
  18.  if(i > books.length - 1){  
  19.  break;  
  20.  }  
  21.  obj = books[i];  
  22.  h = Math.floor((180 / maxPop ) * obj.pop);  
  23.  dt = 0;  
  24.    if(('' + obj.pop + '').length == 1){  
  25.  dt = 5;  
  26.  }  
  27.    if(('' + obj.pop + '').length == 3){  
  28.  dt = -3;  
  29.  }  
  30.    var scrollTo = 'onclick="scrollTo(\''+ obj.id +'\'); return false;" "';  
  31.  bars += '<rect id="rect'+ obj.id +'" class="cla" x="'+ rx +'" y="' + (180 - h + 30) + '" width="50" height="' + h + '" ' + scrollTo + '>';  
  32.    bars += '<title>' + obj.name'</title>';  
  33.  bars += '</rect>';  
  34.    imgs += '<image height="70" x="'+ rx +'" y="220" href="img/ol/jpeg/' + obj.id + '.jpeg" onmouseout="unhoverbar('+ obj.id +');" onmouseover="hoverbar('+ obj.id +');" width="50" ' + scrollTo + '>';  
  35.  imgs += '<title>' + obj.name'</title>';  
  36.  imgs += '</image>';  
  37.    texts += '<text x="'+ (tx + dt) +'" y="'+ (180 - h + 20) +'" class="bar-label" style="font-size: 16px;" ' + scrollTo + '>' + obj.pop + '</text>';  
  38.  rx += 60;  
  39.  tx += 60;  
  40.  }  
  41.    $('#plot').html(  
  42.  ' <svg width="100%" height="300" aria-labelledby="title desc" role="img">'  
  43.  + ' <defs> '  
  44.  + ' <style type="text/css"><![CDATA['  
  45.  + ' .cla {'  
  46.  + ' fill: #337ab7;'  
  47.  + ' }'  
  48.  + ' .cla:hover {'  
  49.  + ' fill: #5bc0de;'  
  50.  + ' }'  
  51.  + ' ]]></style>'  
  52.  + ' </defs>'  
  53.  + ' <g class="bar">'  
  54.  + bars  
  55.  + ' </g>'  
  56.  + ' <g class="bar-images">'  
  57.  + imgs  
  58.  + ' </g>'  
  59.  + ' <g class="bar-text">'  
  60.  + texts  
  61.  + ' </g>'  
  62.  + '</svg>'); 

網頁服務失敗

 

文本分析了4000萬條Stack Overflow討論帖,這些是程序員最推薦的編程書(附代碼)

Nginx 還是 Apache?

 

當我發布了 dev-books.com這個網站之后,它有了大量的點擊。而Apache卻不能讓超過500個訪問者同時訪問網站,于是我迅速部署并將網站服務器調整為Nginx。說實在的,我對于能有800個訪問者同時訪問這個網站感到非常驚喜!

責任編輯:未麗燕 來源: 大數據文摘
相關推薦

2020-08-28 09:50:12

Java程序員語言

2014-07-16 09:34:44

2019-11-07 13:48:02

程序員技能開發者

2015-07-07 10:55:05

個人信息個人信息安全信息安全

2018-11-15 16:11:10

2015-04-13 14:14:18

程序員開發語言調查

2019-03-25 07:14:57

程序員工程師職業

2020-08-04 08:48:34

數據彈屏技術

2012-07-18 10:35:22

GitHub程序員代碼

2015-04-16 13:02:50

程序員編程選擇編程技術書

2014-11-18 15:27:17

編程

2022-07-05 12:00:18

編程語言JavascriptPython

2015-02-03 02:40:33

程序員盲人程序員

2015-11-12 10:23:26

老程序員編程策略

2017-12-04 23:25:24

2019-12-03 10:04:18

程序員招聘開發

2020-10-27 11:43:29

低代碼開發工具開發

2015-07-01 09:10:20

2020-05-06 08:21:37

程序員年薪能力

2020-11-19 15:12:56

程序員技能開發者
點贊
收藏

51CTO技術棧公眾號

久热精品在线| 外国成人直播| aaa亚洲精品一二三区| 奇门遁甲1982国语版免费观看高清| 亚洲一区二区观看| 欧美91在线|欧美| 亚洲高清在线精品| 亚洲v欧美v另类v综合v日韩v| 国产99视频在线| 先锋亚洲精品| 欧美激情精品久久久久久大尺度| 六月婷婷七月丁香| 国产一区二区三区免费观看在线 | 91精品视频免费在线观看| 欧美成人高清| 中文字幕9999| av无码一区二区三区| 成人在线视频www| 色久优优欧美色久优优| 91精品国产乱码久久久久久蜜臀| 九色porny自拍视频| 亚洲一区二区三区免费| 欧美主播一区二区三区| 欧美午夜性视频| 日本在线免费看| 9久草视频在线视频精品| 成人免费看吃奶视频网站| 男人天堂av在线播放| 国产精品99一区二区| 综合久久五月天| 亚洲av无码一区二区二三区| 国产精品xxxav免费视频| 欧美日韩亚洲丝袜制服| 99久久激情视频| 福利小视频在线| 亚洲精品免费在线播放| 亚洲蜜桃av| 国产精品秘入口| 26uuu亚洲综合色欧美 | 九九综合九九| 亚洲国产精品大全| 丰满人妻一区二区三区大胸 | 高清国语自产拍免费一区二区三区| 中文字幕视频二区| 日本午夜一本久久久综合| 18一19gay欧美视频网站| 国产乡下妇女做爰毛片| 欧美色图首页| 欧美黑人巨大xxx极品| 国产黄色的视频| 久久精品久久久| 中文字幕不卡在线视频极品| 国产美女免费网站| 精品黄色一级片| 一区二区三区视频免费在线观看| 欧洲av一区二区三区| 亚洲欧洲色图| 国产亚洲福利一区| 四虎成人免费影院| 欧美电影免费播放| 久久婷婷国产麻豆91天堂| 久久久久人妻一区精品色| 久久免费精品视频在这里| 日韩亚洲欧美中文在线| 亚洲第一综合网| 日韩电影免费在线观看| 三级精品视频久久久久| 女人18毛片毛片毛片毛片区二| 久久电影院7| 久久国产精品电影| 日本熟妇色xxxxx日本免费看| 日韩午夜av| 国产成人97精品免费看片| 最近中文字幕av| 精品综合久久久久久8888| 91精品国自产在线观看| 四虎影视在线观看2413| 国产女人18毛片水真多成人如厕| 台湾成人av| 亚洲精品白浆| 欧美性生交xxxxx久久久| 国产精品人人爽人人爽| 国产一区 二区| 日韩精品一区二区三区第95| 人妻aⅴ无码一区二区三区| 国产精品成人av| 久久久亚洲福利精品午夜| 亚洲婷婷综合网| 精品一区二区在线观看| 国产69精品久久久久9999apgf| 色在线免费视频| 亚洲天堂成人网| 青青草视频在线视频| 天堂√8在线中文| 欧美日韩一区二区三区四区五区 | 亚洲精品一区二区二区| 国产精品综合网| 欧美男人的天堂| 顶级网黄在线播放| 色综合久久久久综合体桃花网| 亚洲一区二区福利视频| 日韩高清成人在线| 欧美成人免费一级人片100| 国产成人精品片| 激情成人午夜视频| 蜜桃久久影院| 黄网在线免费看| 欧美日韩精品系列| 熟妇人妻久久中文字幕| 香港欧美日韩三级黄色一级电影网站| 91sa在线看| 精品人妻一区二区三区麻豆91 | 亚洲国产99精品国自产| 男人天堂资源网| 欧美亚洲三级| 国产麻豆日韩| 97超碰资源站在线观看| 欧美亚洲综合一区| 无码人妻aⅴ一区二区三区| 中国成人一区| 成人精品久久av网站| 国产美女性感在线观看懂色av| 性欧美疯狂xxxxbbbb| 欧美又黄又嫩大片a级| 日韩在线观看电影完整版高清免费悬疑悬疑| 午夜精品久久久久久久99黑人 | 欧美性猛交内射兽交老熟妇| 日本成人福利| 亚洲色图25p| 一级黄色免费网站| av电影在线观看一区| 99久热在线精品视频| 亚洲成人a级片| 中文字幕欧美国内| 亚洲成人av网址| 久久久久国色av免费看影院| av黄色在线网站| 极品束缚调教一区二区网站| 欧美成人免费大片| 国产精品爽爽久久| 亚洲伦理在线精品| 在线视频观看一区二区| 久久精品久久久| 亚洲一区二区久久久久久久| 一区二区三区视频在线观看视频| 91久久精品网| 国产免费一区二区三区网站免费| 新狼窝色av性久久久久久| 久久精品美女| 精品国产第一福利网站| 亚洲欧美国产制服动漫| 日韩欧美在线观看免费| 久久精品综合网| 激情五月亚洲色图| 日韩精品一卡| 91久久久精品| 在线观看av免费| 精品国产网站在线观看| 亚洲精品视频在线观看免费视频| av电影天堂一区二区在线观看| 国产乱子伦农村叉叉叉| 丝袜连裤袜欧美激情日韩| 青青a在线精品免费观看| 黄色av网址在线免费观看| 欧洲一区二区三区免费视频| 欧美另类69xxxx| 国产一区二区三区综合| 久久久久久久9| 亚洲人成亚洲精品| 国产精品视频自在线| 国产激情在线| 亚洲国产精品热久久| 中文字幕高清在线免费播放| 国产精品久久毛片| 农村末发育av片一区二区| 99精品视频免费| 丝袜足脚交91精品| 一区二区三区欧洲区| 欧美最猛性xxxxx亚洲精品| 爱久久·www| 欧美成人伊人久久综合网| 日本一级一片免费视频| 欧美高清在线一区二区| 师生出轨h灌满了1v1| 久久动漫亚洲| 成人性做爰片免费视频| 欧美一级全黄| 国产自产女人91一区在线观看| 欧美性猛片xxxxx免费中国 | 国产在线精品一区| 中文字幕日本一区二区| 欧美日韩国产123| 黄色av免费在线观看| 日韩一级成人av| 欧美精品一二三四区| 亚洲色图.com| 日韩av在线看免费观看| 国内国产精品久久| 超碰网在线观看| 欧美日韩亚洲一区| 亚洲欧美日韩国产yyy| 国产成人精品福利| 成人乱色短篇合集| 三级成人在线| 国模精品一区二区三区色天香| 137大胆人体在线观看| 亚洲国产精品99| 国产美女免费视频| 一本到不卡免费一区二区| 少妇久久久久久被弄高潮| 国产三级精品视频| www.17c.com喷水少妇| 黄页网站大全一区二区| 免费看黄色一级大片| 国产精品婷婷| 欧美狂野激情性xxxx在线观| 久久在线视频| 欧美日韩精品免费观看| 荡女精品导航| 亚洲自拍小视频免费观看| 欧美色片在线观看| 日本国产精品视频| 欧美aa免费在线| 欧美精品久久久久久久久久| 国产在线1区| 日韩视频―中文字幕| 国产精品99999| 日韩毛片在线看| 色欲久久久天天天综合网| 日韩色视频在线观看| 国产精品久久久久久久免费看| 色av综合在线| 在线天堂中文字幕| 欧美日韩国产色| 日韩三级视频在线播放| 亚洲第一主播视频| 久久久美女视频| 一区二区三区成人| 亚洲av鲁丝一区二区三区| 亚洲视频一区在线观看| 黑人狂躁日本娇小| 欧美激情一二三区| 极品人妻videosss人妻| 久久精品一区二区三区av| 国精产品一区一区三区免费视频 | 黄色一级视频在线观看| 亚洲三级视频在线观看| 51精品免费网站| 亚洲欧美自拍偷拍色图| 永久免费看片直接| 亚洲精品一二三| 青青操视频在线播放| 亚洲国产视频网站| 日韩少妇高潮抽搐| 色婷婷久久久亚洲一区二区三区| 天天综合天天干| 欧美在线一区二区| 一级片免费观看视频| 欧美一区二区在线播放| 国产激情无套内精对白视频| 精品免费国产二区三区| 香蕉视频成人在线| 亚洲欧美日韩天堂一区二区| 爱久久·www| 久久最新资源网| 福利网站在线观看| 国产91在线视频| 久久免费影院| 91传媒免费看| 色愁久久久久久| 日韩少妇中文字幕| 亚洲精品成人无限看| h无码动漫在线观看| 国产欧美69| 国产精品嫩草影院8vv8| 成人综合在线网站| a天堂中文字幕| 一区二区三区在线看| www成人在线| 5566中文字幕一区二区电影 | 日韩激情精品| 久草精品电影| 99久久亚洲精品蜜臀| 精品国偷自产一区二区三区| 久久精品人人| 手机av在线网站| 99riav久久精品riav| 农村老熟妇乱子伦视频| 亚洲一区二区不卡免费| 好吊色在线视频| 精品日产卡一卡二卡麻豆| 可以直接在线观看的av| 久久国产精品久久国产精品| 亚洲天堂资源| 91久久精品国产91久久性色tv| 亚洲欧洲美洲国产香蕉| 999久久欧美人妻一区二区| 久久精品官网| 亚洲av永久无码精品| 国产精品美女一区二区三区| 日韩精品――中文字幕| 欧美精品vⅰdeose4hd| 亚洲国产综合一区| 色黄久久久久久| 伊人久久视频| 成人资源视频网站免费| 久久美女精品| www.xxx亚洲| 北条麻妃国产九九精品视频| 国产又粗又长免费视频| 欧美性猛xxx| 人妻精品一区二区三区| 久久精品国产69国产精品亚洲 | 欧美亚洲国产bt| 色一情一乱一区二区三区| 欧美成人久久久| 一区在线不卡| 亚洲春色综合另类校园电影| 国产亚洲精品v| 男人网站在线观看| 亚洲精品免费在线播放| 一级片aaaa| 日韩在线精品一区| 亚洲精品国产嫩草在线观看| 久久久精品国产一区二区三区| 国产精品va| 无套内谢丰满少妇中文字幕 | 成人美女视频在线观看| 精品无码久久久久成人漫画| 欧美日韩精品一二三区| 2019中文字幕在线视频| 国产精品成人观看视频国产奇米| 久久婷婷国产| 国产精品裸体瑜伽视频| 成人一区二区三区视频在线观看| 91杏吧porn蝌蚪| 8x8x8国产精品| 黄色成人影院| 91亚洲精华国产精华| 99久久久久| 三级黄色片免费观看| 亚洲欧洲av色图| 国产乱色精品成人免费视频| 日韩在线免费高清视频| 久久福利在线| 在线一区高清| 国产一区二区福利| 欧美国产日韩综合| 精品三级在线观看| www.8ⅹ8ⅹ羞羞漫画在线看| 精品视频一区二区| 美女黄网久久| 夜夜春很很躁夜夜躁| 欧美日本国产视频| 黄色在线免费看| 成人欧美一区二区三区视频 | 国产精品久久久久久中文字| 欧美先锋资源| 午夜精品中文字幕| 亚洲人成网站在线| 亚洲精品人妻无码| 66m—66摸成人免费视频| 九九精品在线| 日本中文字幕观看| 亚洲综合在线视频| 东京干手机福利视频| 国产91精品青草社区| 精品产国自在拍| 久久久久久久久久久久久久久国产| 自拍偷拍亚洲综合| 女人18毛片水真多18精品| 欧美在线一级视频| 久久精品国产68国产精品亚洲| www.欧美激情.com| 亚洲成av人影院| 国产乱视频在线观看| 91日韩在线播放| 亚洲高清二区| 正在播放国产对白害羞| 欧美一区二区黄色| 在线看片福利| 欧美性受xxxx黑人猛交88| www.日本不卡| 亚洲视频在线免费播放| 欧美激情a∨在线视频播放| 在线成人动漫av| 精品国产午夜福利在线观看| 欧美视频中文字幕在线| 日本www在线观看| 精品无人乱码一区二区三区的优势| 奇米色一区二区三区四区| 久久久久亚洲天堂| 在线播放日韩精品| 国产精品美女在线观看直播| www.涩涩涩| 午夜影院在线观看欧美| 麻豆免费在线视频| 麻豆蜜桃91| 国产黄色成人av| 亚洲av无码乱码国产精品fc2|