日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Scalaz(58)- scalaz-stream: fs2-并行运算示范,fs2 parallel processing

發布時間:2025/3/15 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Scalaz(58)- scalaz-stream: fs2-并行运算示范,fs2 parallel processing 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ? 從表面上來看,Stream代表一連串無窮數據元素。一連串的意思是元素有固定的排列順序,所以對元素的運算也必須按照順序來:完成了前面的運算再跟著進行下一個元素的運算。這樣來看,Stream應該不是很好的并行運算工具。但是,fs2所支持的并行運算方式不是以數據元素而是以?Stream為運算單位的:fs2支持多個Stream同時進行運算,如merge函數。所以fs2使Stream的并行運算成為了可能。

一般來說,我們可能在Stream的幾個狀態節點要求并行運算:

1、同時運算多個數據源頭來產生不排序的數據元素

2、同時對獲取的一連串數據元素進行處理,如:map(update),filter等等

3、同時將一連串數據元素無序存入終點(Sink)

我們可以創建一個例子來示范fs2的并行運算:?模擬從3個文件中讀取字串,然后統計在這3個文件中母音出現的次數。假設文件讀取和母音統計是有任意時間延遲的(latency),我們看看如何進行并行運算及并行運算能有多少效率上的提升。我們先設定一些跟蹤和模擬延遲的幫助函數:

1 def log[A](prompt: String): Pipe[Task,A,A] = _.evalMap { a => Task.delay{ println(s"$prompt>"); a }} 2 //> log: [A](prompt: String)fs2.Pipe[fs2.Task,A,A] 3 def randomDelay[A](max: FiniteDuration): Pipe[Task,A,A] = _.evalMap { a => 4 val delay: Task[Int] = Task.delay { scala.util.Random.nextInt(max.toMillis.toInt) } 5 delay.flatMap {d => Task.now(a).schedule(d.millis) } 6 } //> randomDelay: [A](max: scala.concurrent.duration.FiniteDuration)fs2.Pipe[fs2.

log是個跟蹤函數,randomDelay是個延遲模擬函數,模擬在max內的任意時間延遲。

與scalaz-stream-0.8不同,fs2重新實現了文件操作功能:不再依賴java的字串(string)處理功能。也不再依賴scodec的二進制數據轉換功能。下面是fs2的文件讀取方法示范:

1 val s1 = io.file.readAll[Task](java.nio.file.Paths.get("/Users/tiger-macpro/basic/BasicBackend.scala"),1024) 2 //> s1 : fs2.Stream[fs2.Task,Byte] = evalScope(Scope(Bind(Eval(Snapshot),<function1>))).flatMap(<function1>) 3 val s2 = io.file.readAll[Task](java.nio.file.Paths.get("/Users/tiger-macpro/basic/DatabaseConfig.scala"),1024) 4 //> s2 : fs2.Stream[fs2.Task,Byte] = evalScope(Scope(Bind(Eval(Snapshot),<function1>))).flatMap(<function1>) 5 val s3 = io.file.readAll[Task](java.nio.file.Paths.get("/Users/tiger-macpro/basic/BasicProfile.scala"),1024) 6 //> s3 : fs2.Stream[fs2.Task,Byte] = evalScope(Scope(Bind(Eval(Snapshot),<function1>))).flatMap(<function1>)

fs2.io.file.readAll函數的款式如下:

def readAll[F[_]](path: Path, chunkSize: Int)(implicit F: Effect[F]): Stream[F, Byte] ={...}

readAll分批(by chunks)從文件中讀取Byte類型數據(當返回數據量小于chunkSize代表完成讀取),返回結果類型是Stream[F,Byte]。我們需要進行Byte>>>String轉換及分行等處理。fs2在text對象里提供了相關函數:

object text {private val utf8Charset = Charset.forName("UTF-8")/** Converts UTF-8 encoded byte stream to a stream of `String`. */def utf8Decode[F[_]]: Pipe[F, Byte, String] =_.chunks.through(utf8DecodeC)/** Converts UTF-8 encoded `Chunk[Byte]` inputs to `String`. */def utf8DecodeC[F[_]]: Pipe[F, Chunk[Byte], String] = {/*** Returns the number of continuation bytes if `b` is an ASCII byte or a* leading byte of a multi-byte sequence, and -1 otherwise.*/def continuationBytes(b: Byte): Int = {if ((b & 0x80) == 0x00) 0 // ASCII byteelse if ((b & 0xE0) == 0xC0) 1 // leading byte of a 2 byte seqelse if ((b & 0xF0) == 0xE0) 2 // leading byte of a 3 byte seqelse if ((b & 0xF8) == 0xF0) 3 // leading byte of a 4 byte seqelse -1 // continuation byte or garbage } ... /** Encodes a stream of `String` in to a stream of bytes using the UTF-8 charset. */def utf8Encode[F[_]]: Pipe[F, String, Byte] =_.flatMap(s => Stream.chunk(Chunk.bytes(s.getBytes(utf8Charset))))/** Encodes a stream of `String` in to a stream of `Chunk[Byte]` using the UTF-8 charset. */def utf8EncodeC[F[_]]: Pipe[F, String, Chunk[Byte]] =_.map(s => Chunk.bytes(s.getBytes(utf8Charset)))/** Transforms a stream of `String` such that each emitted `String` is a line from the input. */def lines[F[_]]: Pipe[F, String, String] = { ...

utf8Encode,utf8Decode,lines這幾個函數正是我們需要的,它們都是Pipe類型。我們可以把這幾個Pipe直接用through接到Stream上:

1 val startTime = System.currentTimeMillis //> startTime : Long = 1472444756321 2 val s1lines = s1.through(text.utf8Decode).through(text.lines) 3 .through(randomDelay(10 millis)).runFold(0)((b,_) => b + 1).unsafeRun 4 //> s1lines : Int = 479 5 println(s"reading s1 $s1lines lines in ${System.currentTimeMillis - startTime}ms") 6 //> reading s1 479 lines in 5370ms 7 8 val startTime2 = System.currentTimeMillis //> startTime2 : Long = 1472444761691 9 val s2lines = s2.through(text.utf8Decode).through(text.lines) 10 .through(randomDelay(10 millis)).runFold(0)((b,_) => b + 1).unsafeRun 11 //> s2lines : Int = 174 12 println(s"reading s2 $s2lines lines in ${System.currentTimeMillis - startTime2}ms") 13 //> reading s2 174 lines in 1923ms 14 val startTime3 = System.currentTimeMillis //> startTime3 : Long = 1472444763614 15 val s3lines = s3.through(text.utf8Decode).through(text.lines) 16 .through(randomDelay(10 millis)).runFold(0)((b,_) => b + 1).unsafeRun 17 //> s3lines : Int = 174 18 println(s"reading s3 $s3lines lines in ${System.currentTimeMillis - startTime3}ms") 19 //> reading s3 174 lines in 1928ms 20 println(s"reading all three files ${s1lines+s2lines+s3lines} total lines in ${System.currentTimeMillis - startTime}ms") 21 //> reading all three files 827 total lines in 9221ms

在以上的例子里我們用runFold函數統計文件的文字行數并在讀取過程中用randomDelay來制造了隨意長度的拖延。上面3個文件的字串讀取和轉換處理一共877行、9221ms。

我們知道fs2的并行運算函數concurrent.join函數類型款式是這樣的:

def join[F[_],O](maxOpen: Int)(outer: Stream[F,Stream[F,O]])(implicit F: Async[F]): Stream[F,O] = {...}

join運算的對象outer是個兩層Stream(Streams of Stream):Stream[F,Stream[F,P]],我們需要先進行類型款式調整:

1 val lines1 = s1.through(text.utf8Decode).through(text.lines).through(randomDelay(10 millis)) 2 //> lines1 : fs2.Stream[fs2.Task,String] = evalScope(Scope(Bind(Eval(Snapshot),<function1>))).flatMap(<function1>).flatMap(<function1>) 3 val lines2 = s2.through(text.utf8Decode).through(text.lines).through(randomDelay(10 millis)) 4 //> lines2 : fs2.Stream[fs2.Task,String] = evalScope(Scope(Bind(Eval(Snapshot),<function1>))).flatMap(<function1>).flatMap(<function1>) 5 val lines3 = s3.through(text.utf8Decode).through(text.lines).through(randomDelay(10 millis)) 6 //> lines3 : fs2.Stream[fs2.Task,String] = evalScope(Scope(Bind(Eval(Snapshot),<function1>))).flatMap(<function1>).flatMap(<function1>) 7 val ss: Stream[Task,Stream[Task,String]] = Stream(lines1,lines2,lines3) 8 //> ss : fs2.Stream[fs2.Task,fs2.Stream[fs2.Task,String]] = Segment(Emit(Chunk(evalScope(Scope(Bind(Eval(Snapshot),<function1>))).flatMap(<function1>).flatMap(<function1>), evalScope(Scope(Bind(Eval(Snapshot),<function1>))).flatMap(<function1>).flatMap(<function1>), evalScope(Scope(Bind(Eval(Snapshot),<function1>))).flatMap(<function1>).flatMap(<function1>))))

現在這個ss的類型復合我們的要求。我們可以測試一下并行運算的效率:

1 val ss_start = System.currentTimeMillis //> ss_start : Long = 1472449962698 2 val ss_lines = fs2.concurrent.join(3)(ss).runFold(0)((b,_) => b + 1).unsafeRun 3 //> ss_lines : Int = 827 4 println(s"parallel reading all files ${ss_lines} total lines in ${System.currentTimeMillis - ss_start}ms") 5 //> parallel reading all files 827 total lines in 5173ms

讀取同等行數但只用了5173ms,與之前的9221ms相比,大約有成倍的提速。

join(3)(ss)返回了一個合并的Stream,類型是Stream[Task,String]。我們可以運算這個Stream里母音出現的頻率。我們先設計這個統計函數:

1 //c 是個vowl 2 def vowls(c: Char): Boolean = List('A','E','I','O','U').contains(c) 3 //> vowls: (c: Char)Boolean 4 //直接用scala標準庫實現 5 def pipeVowlsCount: Pipe[Task,String,Map[Char,Int]] = 6 _.evalMap (text => Task.delay{ 7 text.toUpperCase.toList.filter(vowls).groupBy(s => s).mapValues(_.size) 8 }.schedule((text.length / 10).millis)) //> pipeVowlsCount: => fs2.Pipe[fs2.Task,String,Map[Char,Int]]

注意我們使用了text => Task.delay{...}.schedule(d),實際上我們完全可以用 text => Thread.sleep(d),但是這樣會造成了不純代碼,所以我們用evalMap來實現純代碼運算。試試統計全部字串內母音出現的總數:

1 import scalaz.{Monoid} 2 //為runFold提供一個Map[Char,Int]Monoid實例 3 implicit object mapMonoid extends Monoid[Map[Char,Int]] { 4 def zero: Map[Char,Int] = Map() 5 def append(m1: Map[Char,Int], m2: => Map[Char,Int]): Map[Char,Int] = { 6 (m1.keySet ++ m2.keySet).map { k => 7 (k, m1.getOrElse(k,0) + m2.getOrElse(k,0)) 8 }.toMap 9 } 10 } 11 val vc_start = System.currentTimeMillis //> vc_start : Long = 1472464772465 12 val vowlsLine = fs2.concurrent.join(3)(ss).through(pipeVowlsCount) 13 .runFold(Map[Char,Int]())(mapMonoid.append(_,_)).unsafeRun 14 ?//> vowlsLine : scala.collection.immutable.Map[Char,Int] = Map(E -> 3381, U - ?838, A -> 2361, I -> 2031, O -> 1824) 15 println(s"parallel reading all files and counted vowls sequencially in ${System.currentTimeMillis - vc_start}ms") 16 //> parallel reading all files and counted vowls sequencially in 10466ms

我們必須為runFold提供一個Monoid[Map[Char,Int]]實例mapMonoid。

那?我們又如何實現統計功能的并行運算呢??fs2.concurrent.join(maxOpen)(...)函數能把一個Stream截成maxOpen數的子Stream,然后對這些子Stream進行并行運算。那么我們又如何轉換Stream[F,Stream[F,O]]類型呢?我們必須把Stream[F,O]的O升格成Stream[F,O]。我們先用一個函數來把O轉換成Map[Char,Int],然后把這個函數升格成Stream[Task,Map[Char,Int],這個可以用Stream.eval實現:

1 def fVowlsCount(text: String): Map[Char,Int] = 2 text.toUpperCase.toList.filter(vowls).groupBy(s => s).mapValues(_.size) 3 //> fVowlsCount: (text: String)Map[Char,Int] 4 val parVowlsLine: Stream[Task,Stream[Task,Map[Char,Int]]] = fs2.concurrent.join(3)(ss) 5 .map {text => Stream.eval(Task {fVowlsCount(text)}.schedule((text.length / 10).millis))} 6 //> parVowlsLine : fs2.Stream[fs2.Task,fs2.Stream[fs2.Task,Map[Char,Int]]] = attemptEval(Task).flatMap(<function1>).flatMap(<function1>).mapChunks(<function1>)

我們來檢查一下運行效率:

1 val parvc_start = System.currentTimeMillis //> parvc_start : Long = 1472465844694 2 fs2.concurrent.join(8)(parVowlsLine) 3 .runFold(Map[Char,Int]())(mapMonoid.append(_,_)).unsafeRun 4 //> res0: scala.collection.immutable.Map[Char,Int] = Map(E -> 3381, U -> 838, A-> 2361, I -> 2031, O -> 1824) 5 println(s"parallel reading all files and counted vowls in ${System.currentTimeMillis - parvc_start}ms") 6 //> parallel reading all files and counted vowls in 4984ms

并行運算只需要4985ms,而流程運算需要10466+(9221-5173)=14xxx,這里有3,4倍的速度提升。

下面是這次討論的示范源代碼:

1 import fs2._ 2 import scala.language.{higherKinds,implicitConversions,postfixOps} 3 import scala.concurrent.duration._ 4 object fs2Merge { 5 implicit val strategy = Strategy.fromFixedDaemonPool(4) 6 implicit val scheduler = Scheduler.fromFixedDaemonPool(2) 7 def log[A](prompt: String): Pipe[Task,A,A] = _.evalMap { a => Task.delay{ println(s"$prompt>"); a }} 8 def randomDelay[A](max: FiniteDuration): Pipe[Task,A,A] = _.evalMap { a => 9 val delay: Task[Int] = Task.delay { scala.util.Random.nextInt(max.toMillis.toInt) } 10 delay.flatMap {d => Task.now(a).schedule(d.millis) } 11 } 12 13 val s1 = io.file.readAll[Task](java.nio.file.Paths.get("/Users/tiger-macpro/basic/BasicBackend.scala"),1024) 14 val s2 = io.file.readAll[Task](java.nio.file.Paths.get("/Users/tiger-macpro/basic/DatabaseConfig.scala"),1024) 15 val s3 = io.file.readAll[Task](java.nio.file.Paths.get("/Users/tiger-macpro/basic/BasicProfile.scala"),1024) 16 17 18 val startTime = System.currentTimeMillis 19 val s1lines = s1.through(text.utf8Decode).through(text.lines) 20 .through(randomDelay(10 millis)).runFold(0)((b,_) => b + 1).unsafeRun 21 println(s"reading s1 $s1lines lines in ${System.currentTimeMillis - startTime}ms") 22 23 val startTime2 = System.currentTimeMillis 24 val s2lines = s2.through(text.utf8Decode).through(text.lines) 25 .through(randomDelay(10 millis)).runFold(0)((b,_) => b + 1).unsafeRun 26 println(s"reading s2 $s2lines lines in ${System.currentTimeMillis - startTime2}ms") 27 val startTime3 = System.currentTimeMillis 28 val s3lines = s3.through(text.utf8Decode).through(text.lines) 29 .through(randomDelay(10 millis)).runFold(0)((b,_) => b + 1).unsafeRun 30 println(s"reading s3 $s3lines lines in ${System.currentTimeMillis - startTime3}ms") 31 println(s"reading all three files ${s1lines+s2lines+s3lines} total lines in ${System.currentTimeMillis - startTime}ms") 32 val lines1 = s1.through(text.utf8Decode).through(text.lines).through(randomDelay(10 millis)) 33 val lines2 = s2.through(text.utf8Decode).through(text.lines).through(randomDelay(10 millis)) 34 val lines3 = s3.through(text.utf8Decode).through(text.lines).through(randomDelay(10 millis)) 35 val ss: Stream[Task,Stream[Task,String]] = Stream(lines1,lines2,lines3) 36 val ss_start = System.currentTimeMillis 37 val ss_lines = fs2.concurrent.join(3)(ss).runFold(0)((b,_) => b + 1).unsafeRun 38 println(s"parallel reading all files ${ss_lines} total lines in ${System.currentTimeMillis - ss_start}ms") 39 40 //c 是個vowl 41 def vowls(c: Char): Boolean = List('A','E','I','O','U').contains(c) 42 //直接用scala標準庫實現 43 def pipeVowlsCount: Pipe[Task,String,Map[Char,Int]] = 44 _.evalMap (text => Task.delay{ 45 text.toUpperCase.toList.filter(vowls).groupBy(s => s).mapValues(_.size) 46 }.schedule((text.length / 10).millis)) 47 48 import scalaz.{Monoid} 49 //為runFold提供一個Map[Char,Int]Monoid實例 50 implicit object mapMonoid extends Monoid[Map[Char,Int]] { 51 def zero: Map[Char,Int] = Map() 52 def append(m1: Map[Char,Int], m2: => Map[Char,Int]): Map[Char,Int] = { 53 (m1.keySet ++ m2.keySet).map { k => 54 (k, m1.getOrElse(k,0) + m2.getOrElse(k,0)) 55 }.toMap 56 } 57 } 58 val vc_start = System.currentTimeMillis 59 val vowlsLine = fs2.concurrent.join(3)(ss).through(pipeVowlsCount) 60 .runFold(Map[Char,Int]())(mapMonoid.append(_,_)).unsafeRun 61 println(s"parallel reading all files and counted vowls sequencially in ${System.currentTimeMillis - vc_start}ms") 62 def fVowlsCount(text: String): Map[Char,Int] = 63 text.toUpperCase.toList.filter(vowls).groupBy(s => s).mapValues(_.size) 64 val parVowlsLine: Stream[Task,Stream[Task,Map[Char,Int]]] = fs2.concurrent.join(3)(ss) 65 .map {text => Stream.eval(Task {fVowlsCount(text)}.schedule((text.length / 10).millis))} 66 val parvc_start = System.currentTimeMillis 67 fs2.concurrent.join(8)(parVowlsLine) 68 .runFold(Map[Char,Int]())(mapMonoid.append(_,_)).unsafeRun 69 println(s"parallel reading all files and counted vowls in ${System.currentTimeMillis - parvc_start}ms") 70 }

?

?

?

?

?

?

?

?

?

?

?

轉載于:https://www.cnblogs.com/tiger-xc/p/5820446.html

總結

以上是生活随笔為你收集整理的Scalaz(58)- scalaz-stream: fs2-并行运算示范,fs2 parallel processing的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

亚洲在线精品 | 国产亚洲精品免费 | av高清一区二区三区 | 日韩精品电影在线播放 | 久草视频免费看 | 又湿又紧又大又爽a视频国产 | 91大神一区二区三区 | 国产精品成人国产乱 | 精品在线视频一区 | av在线播放免费 | 狠狠色丁香婷婷综合基地 | 亚洲资源片 | 国产日韩中文字幕 | 欧亚日韩精品一区二区在线 | 国精产品永久999 | 国产精品热视频 | 五月婷av| 午夜精品久久久久99热app | 亚州成人av在线 | 国产精品扒开做爽爽的视频 | 超碰精品在线观看 | 久久免费视频99 | 美女网站色在线观看 | 国产区高清在线 | 伊人狠狠干 | 免费国产一区二区视频 | 亚洲精品国产成人av在线 | 国产高清网站 | 国产精品乱码一区二区视频 | 玖玖综合网 | 亚洲精品中文在线资源 | 91麻豆精品一区二区三区 | 午夜精品久久久久久 | 国产免费亚洲 | 欧美一区二视频在线免费观看 | 五月婷婷开心 | 国产主播99 | 9999免费视频 | 中文字幕一区二区三区乱码在线 | 久久久久久麻豆 | 在线观看一 | 岛国av在线不卡 | 五月激情姐姐 | 国产精品久久久久四虎 | 国产成人精品一区二区三区在线 | 国际av在线 | 久久久久久久久久久久亚洲 | 久久欧美综合 | 成年人免费观看国产 | 中文字幕色综合网 | 中文字幕之中文字幕 | 果冻av在线 | 97天堂| 日韩欧美电影 | 成人h视频在线播放 | 亚洲黄色成人av | 久久日韩精品 | 亚洲伊人婷婷 | 人人澡人摸人人添学生av | www黄免费| 干天天 | 亚洲性视频 | 亚洲国产中文字幕在线观看 | 手机成人在线电影 | 草免费视频 | 久久久久免费精品国产 | 天天插天天射 | 欧美精品亚洲精品日韩精品 | 久久综合网色—综合色88 | 久久久国产精品人人片99精片欧美一 | 91久久久久久久一区二区 | 狠狠色丁香婷婷综合久小说久 | 99看视频在线观看 | 天天爽天天爽天天爽 | 成年人网站免费在线观看 | 91九色视频 | 黄污视频网站大全 | 亚洲不卡123 | 久久国产手机看片 | 草久视频在线 | 免费看一级黄色 | 麻豆视频免费版 | 国产精品欧美激情在线观看 | 日韩婷婷| 国产一级黄色电影 | 成人av一级片 | 成人小视频在线播放 | 免费下载高清毛片 | 国产亚洲亚洲 | 久久99精品久久久久久秒播蜜臀 | 国产96视频 | 日韩精品一区二区三区视频播放 | 国产精品免费一区二区三区在线观看 | 亚洲一区二区精品3399 | 亚洲精品视频在线免费 | 人人狠狠综合久久亚洲婷 | 国产视频2区 | 五月开心六月婷婷 | 麻豆影视在线免费观看 | 午夜久久久久久久久久影院 | 四虎海外影库www4hu | 国产高清视频免费 | 中文字幕在线观看国产 | 最近中文字幕国语免费av | 日韩在线三区 | 99久久精品国产免费看不卡 | 久久久www成人免费精品 | 中文字幕91视频 | 香蕉久久久久久av成人 | 黄色aa久久| 亚洲精品五月天 | 97在线精品| av免费福利 | 在线免费av电影 | 精品99在线视频 | 国产精品国产精品 | 国产一区二区视频在线 | 午夜精品视频一区 | 久久人人插 | 青草视频在线播放 | 91精品国产99久久久久久久 | 中文字幕日韩无 | 亚洲六月丁香色婷婷综合久久 | 国产精品一区二区三区在线免费观看 | 国产精品毛片久久久久久久 | 午夜久久电影网 | 欧美日韩久久不卡 | 久爱综合 | 日韩最新理论电影 | 国产一区二区手机在线观看 | 国产精品视频久久 | 欧美精品久久久久久久久久 | 久久亚洲美女 | 亚洲不卡123 | 狠狠色综合欧美激情 | 国产精品视频内 | 日韩精品一区二区在线观看 | 中文字幕久久亚洲 | 国内精品在线一区 | 2019天天干夜夜操 | 亚洲 欧美 另类人妖 | 国产第一页在线观看 | 亚洲三级在线播放 | 女人18毛片a级毛片一区二区 | 在线视频久久 | 欧美性天天 | 人人天天夜夜 | 黄色毛片观看 | 亚洲免费视频观看 | 久久久久国产精品一区二区 | 特黄色大片 | 欧美国产日韩一区二区 | 色婷婷免费 | 99爱视频| 亚洲日韩欧美视频 | 91久草视频| 久久久久欧美精品 | 首页国产精品 | 精品一区二区免费在线观看 | 中文乱码视频在线观看 | 国产原创在线 | 四虎在线观看 | 亚洲精品在线视频 | 国产精品成久久久久三级 | www夜夜 | 精品久久久久久久久久久久 | 国产精品视频内 | 国产一区免费在线 | 极品久久久久久久 | 特级xxxxx欧美| av色网站| 97色资源| 在线免费高清视频 | 欧美 激情 国产 91 在线 | 中午字幕在线观看 | 青草视频在线 | 亚洲人成人天堂h久久 | 日韩免费在线播放 | 婷婷综合影院 | 日日噜噜噜噜夜夜爽亚洲精品 | 国产一区二区三区免费在线观看 | 女人18片毛片90分钟 | 玖玖色在线观看 | 综合网久久| 91精品久久久久久粉嫩 | 久久亚洲欧美日韩精品专区 | 三上悠亚在线免费 | 久青草视频在线观看 | 国产精品日韩在线 | www.大网伊人 | 欧美性高跟鞋xxxxhd | 亚洲一区二区视频在线播放 | 91大神精品视频 | 91久久精品日日躁夜夜躁国产 | 久久久香蕉视频 | 午夜影院在线观看18 | 天天干,天天射,天天操,天天摸 | 欧美极品xxxxx | 久久伊99综合婷婷久久伊 | 97成人精品区在线播放 | 国产在线欧美在线 | 中文一区在线观看 | 91久久精 | 精品国产一区二区三区男人吃奶 | 91一区二区三区在线观看 | 九九色网| 91av视频| 韩国av一区二区三区在线观看 | 亚洲精品在线一区二区三区 | 在线观看一区 | 国产精品久久久久久久久久99 | 这里只有精品视频在线观看 | 成人黄色在线 | 欧美精品久久久久久久久久白贞 | 中文字幕 在线看 | 又黄又爽又无遮挡免费的网站 | 高清免费av在线 | 操天天操 | 国产精品 国产精品 | 激情 亚洲 | 日韩一级电影在线观看 | 精品久久国产 | 青青草国产精品 | 五月天久久综合网 | 久久8精品 | 综合网在线视频 | 欧美男男激情videos | 久久精品国产免费看久久精品 | 亚洲视频99 | 日产av在线播放 | 夜夜嗨av色一区二区不卡 | 激情久久影院 | 久久精品视频在线播放 | 永久黄网站色视频免费观看w | 永久免费的啪啪网站免费观看浪潮 | 欧美精品免费在线 | 色婷av | 亚洲人成网站精品片在线观看 | 中文字幕第 | 在线观看日韩视频 | 黄a在线看 | 久久精品视频在线免费观看 | 亚洲最新av在线 | 久久免费黄色 | 免费看污片 | av福利在线| 免费在线观看一区 | 久草视频在线播放 | 精品 一区 在线 | 黄色av电影一级片 | 亚洲视频久久久久 | 久久亚洲综合色 | 69精品| 亚洲午夜精品在线观看 | 国产精品久久久久婷婷二区次 | 国产精品美女免费看 | 成人久久免费视频 | 欧美激情操 | 美女网站色免费 | 亚洲一区二区精品视频 | 在线精品亚洲一区二区 | 成年美女黄网站色大片免费看 | 国产伦理精品一区二区 | 久久久鲁 | 国产精品黄网站在线观看 | 热久久最新地址 | 欧美一级特黄aaaaaa大片在线观看 | 天天天天天天天操 | 超碰在线最新地址 | 国产九九九视频 | 麻豆影视在线免费观看 | 少妇bbb好爽 | 精品久久久久_ | 久久国产精品免费一区 | 成 人 a v天堂 | 久草在线手机视频 | 永久黄网站色视频免费观看w | 在线91色 | 亚洲国产大片 | 国产日本三级 | 精品美女久久 | 成人久久综合 | 色综合久 | 欧美 日韩 国产 中文字幕 | 97视频在线免费观看 | 97高清视频 | 在线激情影院一区 | 成人午夜精品福利免费 | 欧美精品一区二区三区四区在线 | 久久久蜜桃一区二区 | 国产黄色特级片 | 国产成人综合精品 | 色资源二区在线视频 | 日韩电影在线观看一区 | 在线观看911视频 | 日日成人网 | 日韩中文字幕免费视频 | 欧美日韩观看 | 国产99精品在线观看 | 亚洲黄色片| 在线观看视频你懂的 | 亚洲影院一区 | 久在线观看 | 国产麻豆传媒 | 亚洲闷骚少妇在线观看网站 | 亚洲永久在线 | 久久免费在线观看视频 | 色播亚洲婷婷 | 国产精品毛片网 | 亚洲国产日韩欧美在线 | 中文字幕在线看视频 | 在线观看日本韩国电影 | 99成人在线视频 | 国产精品观看在线亚洲人成网 | 色综合在 | 97免费在线观看视频 | www.人人草| 99在线精品免费视频九九视 | 成人在线免费视频 | 狠狠的操狠狠的干 | 亚洲人人网 | 大胆欧美gogo免费视频一二区 | 久久免费国产精品1 | 超碰人人干人人 | 日韩精品视频免费 | 美女一级毛片视频 | 天天爽天天射 | 69国产盗摄一区二区三区五区 | 91在线www | 亚洲精品视频在线观看网站 | 久久久www成人免费毛片麻豆 | 天堂在线一区二区 | 西西www4444大胆在线 | 欧美日韩免费看 | 九月婷婷人人澡人人添人人爽 | 国产精品永久免费 | 久久精品视频国产 | 日韩精品久久久免费观看夜色 | 亚洲欧美精品一区 | 国产在线观看你懂得 | 色婷婷成人网 | 日日干综合 | 欧美夫妻性生活电影 | 成人在线视频观看 | 亚洲视频 在线观看 | 精品国产三级a∨在线欧美 免费一级片在线观看 | 1024手机在线看 | 日韩美女一级片 | 操操操夜夜操 | 俺要去色综合狠狠 | 亚洲精品午夜国产va久久成人 | 国产1区在线 | av一级片在线观看 | 亚洲黄色软件 | 国产精品视频地址 | 日韩视频在线不卡 | 国产精品一区二区美女视频免费看 | 97视频在线观看播放 | www久久| 奇米777777| 超碰97成人 | 青青久视频 | 欧美精品中文在线免费观看 | 最近高清中文在线字幕在线观看 | 天天操欧美| 欧美 日韩 成人 | 91成品人影院 | 国产乱老熟视频网88av | 天天爽天天射 | 日韩影片在线观看 | 久久好看 | 欧美日韩免费观看一区=区三区 | 久久午夜电影网 | 天天操比| 视频精品一区二区三区 | 欧美国产日韩一区 | 日韩在线高清 | 色99在线 | 九九九国产 | 亚洲在线视频网站 | 亚洲黄色三级 | 久久伦理| 亚洲视频999| 人九九精品 | 国产色婷婷精品综合在线手机播放 | 国产精品国产三级国产专区53 | 九九视频在线 | 日韩av不卡在线观看 | 懂色av一区二区三区蜜臀 | 成人综合免费 | 黄色精品在线看 | 久久综合婷婷 | 免费看三级黄色片 | 一区中文字幕电影 | www.伊人网 | 免费看毛片在线 | 日韩av免费一区二区 | 99久久99久国产黄毛片 | 中文字幕一区二区三区乱码不卡 | 国产一区视频免费在线观看 | 天天草网站 | 国产在线观看不卡 | 伊人伊成久久人综合网站 | 精精国产xxxx视频在线播放 | 黄色在线观看免费 | www99精品 | 日批在线观看 | av高清免费在线 | 激情久久网 | 国产一级在线播放 | 免费国产一区二区视频 | 中文字幕免费国产精品 | 欧美不卡在线 | 成人av网站在线观看 | 182午夜在线观看 | 亚洲精品自在在线观看 | 国产在线1区 | 免费观看久久久 | 成人av在线影院 | 久久69av| 在线视频久 | av+在线播放在线播放 | 黄色一级片视频 | 99视屏 | 字幕网资源站中文字幕 | 99国产一区 | 天天射天天色天天干 | 欧美日韩精品电影 | 在线观看 国产 | 夜夜摸夜夜爽 | 欧美91在线| 成人免费视频观看 | 亚洲高清在线观看视频 | 免费99精品国产自在在线 | 国产h在线播放 | 国产麻豆精品一区二区 | 天堂激情网| 午夜黄网 | 色婷婷国产精品一区在线观看 | 久久69精品久久久久久久电影好 | 久草在线资源视频 | 亚洲精品午夜视频 | 久久精品视频在线观看 | 国产精品一区二区62 | 久久天堂精品视频 | 91精品视频在线看 | 婷婷丁香社区 | 国产 精品 资源 | 国产一二三区在线观看 | 激情综合五月 | 综合久久久久 | 国产999精品视频 | 日韩视频中文字幕在线观看 | 97国产大学生情侣酒店的特点 | a级国产乱理论片在线观看 伊人宗合网 | 日韩欧美一区二区三区在线观看 | 在线免费色 | 亚洲精品av中文字幕在线在线 | 国产精品毛片久久久久久久久久99999999 | 91丨九色丨蝌蚪丰满 | 这里有精品在线视频 | 久久国产精品精品国产色婷婷 | 中文永久字幕 | 亚州天堂 | 激情影音先锋 | 欧美一级久久 | 黄色av成人在线 | 伊人狠狠 | 97电影手机 | 黄色一区二区在线观看 | 久久看看 | 日韩高清免费在线 | 五月天电影免费在线观看一区 | 日韩大片在线播放 | 日韩免费电影 | 国产四虎影院 | 久久久久久久福利 | 男女激情网址 | 国产精品18久久久 | 亚洲天天在线日亚洲洲精 | 国产精品久久久久久久久久久久午 | 伊人网av| 久久国产高清 | 国产不卡毛片 | 久草精品视频 | 久久久久色 | 色婷五月天 | 欧美性色xo影院 | 九九免费在线观看视频 | 中文在线a∨在线 | 字幕网av | 91精品国产电影 | 成 人 免费 黄 色 视频 | 国产字幕在线看 | 国产成人99av超碰超爽 | 国内精品视频在线 | 国产一区二区在线免费 | 日韩欧美91 | 日韩91精品 | 免费在线观看成人av | 人人添人人 | 国产区av在线 | 91在线免费视频 | www欧美色 | 免费三级网 | www.久草视频 | 国产成人99av超碰超爽 | 久久精品com| 国产精品久久毛片 | 国产成人在线播放 | 激情久久久 | 字幕网av | 国产成人精品一区二 | 一区二区三区在线观看免费视频 | 国产在线观看一 | 久久精品99国产精品酒店日本 | 中国一级特黄毛片大片久久 | 深爱五月激情五月 | 国产自在线 | 久久av影院 | 在线不卡中文字幕播放 | 精品久久亚洲 | 色黄视频免费观看 | 五月婷婷六月丁香在线观看 | 日韩免费视频在线观看 | 日韩亚洲在线视频 | 国产人成在线观看 | 日韩av成人在线观看 | 99热国产在线 | 天堂av官网| 操一草 | 三级毛片视频 | 亚洲欧美日韩不卡 | 久久国产欧美日韩精品 | 探花视频免费观看高清视频 | 在线一区av | 国内久久久 | 欧美激情第一区 | 国产福利在线免费 | 亚洲欧美婷婷六月色综合 | 日韩电影精品 | 五月婷婷毛片 | 欧美精品v国产精品 | 色香蕉视频 | 黄a在线观看 | 国产高清不卡一区二区三区 | 亚洲黄色免费 | 日韩av一区二区三区在线观看 | 91精品麻豆 | 免费成人在线观看 | 色婷婷播放 | 久草9视频 | 91精品在线看 | 国产精品久久久久久久久久了 | 免费情缘 | 国产一区二区三区视频在线 | 视频在线观看入口黄最新永久免费国产 | 天天综合成人 | 国产婷婷视频在线 | 91免费在线看片 | 国产美女精品视频 | 在线看成人片 | 在线日韩精品视频 | av大全在线观看 | 国产精品亚 | 色综合久久网 | 91亚洲精品久久久蜜桃网站 | 免费人成网 | 国内免费的中文字幕 | 91伊人久久大香线蕉蜜芽人口 | 福利网址在线观看 | 成人黄色电影在线 | 亚洲天天摸日日摸天天欢 | 日本黄色免费在线观看 | 久久精品欧美一区二区三区麻豆 | 国产成人精品一区二区三区网站观看 | 美州a亚洲一视本频v色道 | 日韩丝袜 | 久草在线 | 五月天激情视频在线观看 | 日本精品视频网站 | 国产高清av免费在线观看 | 日韩在线免费视频 | 中文字幕你懂的 | 天天操操操操操 | 日韩a欧美 | 人人插人人爱 | 亚洲精品国产精品国自产在线 | 日韩一二三| 天天婷婷| 91伊人久久大香线蕉蜜芽人口 | 国产精品伦一区二区三区视频 | 亚洲精品免费在线观看 | 人人澡视频 | 丝袜美腿在线播放 | 日韩,中文字幕 | 99视频网站| 国产a网站 | 免费视频久久久久久久 | 精品美女国产在线 | 亚洲成人精品久久 | 久久免费毛片视频 | 欧美韩国日本在线观看 | www色网站| 天天色天天草天天射 | 国产日产精品久久久久快鸭 | 国产黄网站在线观看 | 久久伦理视频 | 久久人人爽视频 | 欧美乱码精品一区二区 | 欧美日韩国产成人 | 久久免费视频在线观看30 | 久久日韩精品 | 中文字幕在线免费97 | 免费成人结看片 | 五月天天av | 国产成人一二片 | 国产成人精品国内自产拍免费看 | 免费av网站观看 | 狠狠色噜噜狠狠 | 久久草在线视频国产 | 天天爱天天色 | 少妇自拍av | 四虎成人精品永久免费av | 99国产精品一区二区 | 国产亚洲日 | 久久伊人精品一区二区三区 | 亚洲欧美日韩精品久久久 | 97超碰在线免费观看 | 成人午夜电影在线 | 国产在线欧美日韩 | 国内揄拍国内精品 | 欧美一级片在线 | 国产亚洲一区二区在线观看 | 91麻豆视频网站 | av在线免费观看网站 | 在线成人看片 | 亚洲好视频 | 国产精品成人自产拍在线观看 | 久久成电影 | 国产精品美女在线观看 | 中文字幕成人av | 日韩国产欧美在线视频 | 国产成人精品一区一区一区 | 天天曰天天干 | 成人av免费在线 | 色婷婷视频在线 | av网站有哪些 | 中文字幕在线网址 | 日产av在线播放 | 国产成人在线观看 | 色偷偷人人澡久久超碰69 | 精品伊人久久久 | 日韩毛片在线播放 | 日韩欧美在线中文字幕 | 精品一区在线 | 中文字幕高清免费日韩视频在线 | 日日干干夜夜 | 亚洲高清在线 | 久久久亚洲国产精品麻豆综合天堂 | 久久99精品久久久久久秒播蜜臀 | 久久久久国产视频 | 国产精品久久久久一区二区 | 亚洲欧美日韩国产一区二区 | 黄网站色视频免费观看 | 夜夜视频 | 黄色视屏在线免费观看 | 天天操天天是 | 91人人澡人人爽人人精品 | 九九热有精品 | 久久久久久毛片 | 国产亚洲视频在线观看 | 国产亚洲欧美精品久久久久久 | 欧美性精品 | 亚洲国产97在线精品一区 | 免费观看www7722午夜电影 | 久久国产精品99国产 | 99精品视频99| 成 人 黄 色 片 在线播放 | 香蕉视频免费在线播放 | 日韩高清一二区 | 亚洲电影久久 | 精品免费久久久久久 | 国产一区二区三区免费观看视频 | 国产一区视频导航 | 黄色日本免费 | 国产黄色av | 91麻豆视频 | 国产日韩欧美自拍 | 欧美久久电影 | 国产免费又粗又猛又爽 | 日韩在线观看一区二区三区 | 天天射网 | 91人人澡 | 精品视频免费播放 | 在线免费视频a | 免费看国产黄色 | 久久精品在线 | 51精品国自产在线 | 人人爽人人澡 | 日本精品久久 | 国产精品久久久久久久久久新婚 | 国产一级高清 | 欧美超碰在线 | 国产精品一区二区免费看 | 最新一区二区三区 | 国产精品免费观看视频 | 91污污视频在线观看 | 亚洲第一中文网 | 亚洲免费av在线播放 | 久青草视频 | 色婷婷视频网 | 国产伦精品一区二区三区无广告 | 久久se视频| 91黄色影视 | 久草色在线观看 | 91久久在线观看 | 五月天色网站 | 亚洲一区av | 开心丁香婷婷深爱五月 | 免费毛片一区二区三区久久久 | 国产精品igao视频网入口 | 日韩电影中文字幕在线观看 | 97精品一区 | 9999国产精品 | 最近中文字幕免费视频 | 成人在线一区二区三区 | 国产精品亚 | 亚洲日本在线一区 | 亚洲精品成人在线 | 激情丁香综合五月 | 香蕉视频啪啪 | 久久人人爽人人爽人人片av软件 | 久久久久婷 | 日韩电影中文字幕在线观看 | 久久久久久久久久伊人 | www视频免费在线观看 | 久久精品免费看 | 国产香蕉在线 | 99精品国产在热久久 | 天天干,夜夜操 | 欧美日韩大片在线观看 | 久草手机视频 | www国产在线| 久久久久久久久久免费视频 | 黄色小说免费观看 | 伊人五月天综合 | 亚洲精品乱码久久久久久蜜桃91 | www.一区二区三区 | 欧美久草视频 | 黄色三级网站在线观看 | 国产人成一区二区三区影院 | 国产一级一片免费播放放a 一区二区三区国产欧美 | 99热精品国产一区二区在线观看 | 丰满少妇久久久 | 日韩精品一卡 | 免费观看性生活大片 | 国产欧美在线一区 | 一级精品视频在线观看宜春院 | 免费网站在线观看人 | 在线 国产 亚洲 欧美 | avwww在线| 超碰资源在线 | 欧美人体xx | 久草成人在线 | 国产精品2020 | 国产高清一 | 99精品国产一区二区三区不卡 | 丁香色婷婷 | 婷五月激情 | 国产无遮挡又黄又爽在线观看 | 91香蕉国产在线观看软件 | 亚洲精品66| 日韩综合一区二区 | 日韩av中文字幕在线免费观看 | 91麻豆精品国产自产 | 在线视频国产区 | 日韩午夜网站 | 午夜精品久久久 | 碰天天操天天 | 欧美小视频在线 | 欧美黑人巨大xxxxx | 国产日产精品久久久久快鸭 | 日日天天狠狠 | 麻豆播放 | 欧美精品久久久久久久久老牛影院 | 久草视频首页 | 亚洲第一中文网 | 玖草影院 | 久久久精品视频成人 | 亚洲精品乱码久久久久久9色 | 成人国产综合 | 欧亚日韩精品一区二区在线 | 波多野结衣视频一区二区三区 | 国产成人黄色在线 | 99精品国产一区二区三区不卡 | 超碰人人乐 | 亚洲国产三级在线观看 | 亚洲春色综合另类校园电影 | 久草五月| 亚洲精品小视频 | 欧美性粗大hdvideo | 香蕉视频国产在线观看 | 日韩欧美视频一区 | 日韩大片在线 | 欧美福利视频一区 | 日韩中文字幕免费视频 | 91手机在线看片 | 亚洲日日日| 91麻豆精品国产91 | 高潮毛片无遮挡高清免费 | 人人要人人澡人人爽人人dvd | 天天插天天干天天操 | 国产网红在线观看 | 亚洲乱码在线 | 欧美一级在线观看视频 | 国产午夜精品一区二区三区欧美 | 久久精品久久精品久久精品 | 国产成人av网站 | 日韩高清免费在线观看 | 日韩精品一区二区三区不卡 | 国产91精品久久久久 | 国产小视频在线观看免费 | 500部大龄熟乱视频使用方法 | 国产激情电影综合在线看 | 色综合天天在线 | 99国产情侣在线播放 | 亚洲专区 国产精品 | 在线小视频你懂得 | 九九热在线观看视频 | 97免费在线观看视频 | 视频二区在线 | 国产成人一级电影 | 亚洲电影av在线 | 嫩草av在线 | 日日干网址 | 天天干天天操天天操 | 天堂在线视频免费观看 | av在线影片 | 久久婷婷视频 | av东方在线 | 精品国产成人av | 国产免费嫩草影院 | 成人毛片a | 久久久免费精品视频 | 黄色小说在线免费观看 | av导航福利 | 久久伦理 | 亚洲码国产日韩欧美高潮在线播放 | 日日日爽爽爽 | 中文字幕成人网 | 国内精品久久久久影院优 | 最近2019中文免费高清视频观看www99 | 偷拍区另类综合在线 | 8x8x在线观看视频 | 日韩电影在线观看中文字幕 | 中文字幕免费国产精品 | 91色网址 | 欧美日韩精品在线观看 | 亚洲日本va中文字幕 | 美州a亚洲一视本频v色道 | 国产黄影院色大全免费 | 天天干天天干天天干天天干天天干天天干 | 好看av在线| 国产破处视频在线播放 | www.夜色321.com| 国产专区欧美专区 | 色偷偷97| 亚洲午夜精品久久久久久久久久久久 | 91视频a | 成人午夜电影在线播放 | 亚洲电影第一页av | 天天操天天操天天操天天 | 天天亚洲综合 | 国产精品初高中精品久久 | 免费大片av | 免费黄色一区 | 色婷婷啪啪免费在线电影观看 | 天天操夜操视频 | 久久 精品一区 | 国内丰满少妇猛烈精品播 | 天天人人综合 | 精品在线观看一区二区 | 日本激情中文字幕 | 男女拍拍免费视频 | 99久久久国产精品 | 国产一级二级三级视频 | 日韩视频区 | 一级淫片a | 天天爱天天操天天爽 | 亚洲国产欧美在线人成大黄瓜 | 亚洲欧美日韩国产一区二区三区 | 国产美女在线免费观看 | 天天综合色天天综合 | 成年人看片网站 | 久久黄色网页 | 美女在线免费观看视频 | 韩国av一区二区三区在线观看 | 久久精品一区二区三区四区 | 午夜色站| 国产精品久久久久一区二区 | 国产在线中文字幕 | 国产精品日韩欧美一区二区 | 亚洲理论视频 | 精品一区二区在线观看 | 欧美日韩国产高清视频 | 久久中文字幕视频 | 欧美最猛性xxx | 久久国产精品网站 | 美女视频永久黄网站免费观看国产 | 人人藻人人澡人人爽 | 亚洲高清视频在线观看免费 | 久久久久久中文字幕 | 国产一级在线观看视频 | 91视频91蝌蚪 | 国产又粗又猛又黄又爽 | 超碰97在线资源站 | 欧美激情视频在线观看免费 | 黄色网址在线播放 | 国内外成人免费在线视频 | 九九久久精品 | 国内外成人在线视频 | 99r精品视频在线观看 | 欧美色就是色 | 欧美另类调教 | 日韩最新在线 | 精品在线观 | 欧美少妇影院 | 在线黄色毛片 | 成人黄色大片在线免费观看 | 久久激情五月丁香伊人 | 九九热视频在线播放 | 波多野结衣在线观看一区二区三区 | 国产91全国探花系列在线播放 | 涩涩成人在线 | 日操操 | 欧美精品中文字幕亚洲专区 | 免费看v片 | 麻豆免费视频网站 | 69精品久久 | 久久在线观看 | 亚洲 成人 欧美 | 免费看污网站 | 午夜美女福利 | 亚洲精品免费看 | 最近日本中文字幕 | 91秒拍国产福利一区 | 欧美午夜理伦三级在线观看 | 99在线精品视频 | 超碰个人在线 | 日日干天天射 | 日韩久久午夜一级啪啪 | 亚洲一区日韩精品 | 国产精品免费大片视频 | 波多野结衣在线中文字幕 | 激情五月综合网 | 97在线观看免费观看高清 | 在线 精品 国产 | 国产午夜三级一二三区 | 婷婷精品国产一区二区三区日韩 | 天堂中文在线视频 | 久久男人视频 | 日韩在线高清免费视频 | 国产精品视频免费观看 | 日本最新高清不卡中文字幕 | 综合激情久久 | 国产九色视频在线观看 | 在线观看av黄色 | 人人要人人澡人人爽人人dvd | 天天色天天骑天天射 | 国产精品成人国产乱一区 | 中文字幕中文字幕在线一区 | 91在线播放国产 | 最新91在线视频 | 日韩福利在线观看 | 精品国产免费一区二区三区五区 | 中文理论片 | 最近中文字幕在线播放 | 亚洲国产成人在线 | 成人高清av在线 | 精品国产综合区久久久久久 | 激情网在线视频 | 亚洲欧美视屏 | 午夜婷婷在线播放 | 午夜天使 | 国产激情电影综合在线看 | 色亚洲网 | 国产精品破处视频 | 天天操天天插 | 91视频在线免费观看 | 青春草免费视频 | 激情综合网五月 | 操碰av| 久久调教视频 | 亚洲理论在线观看 | 最近中文字幕免费av | 久久久久这里只有精品 | 成人午夜电影在线观看 |