青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

socketref,再見!高德

https://github.com/adoggie

  C++博客 :: 首頁 :: 聯系 :: 聚合  :: 管理
  246 Posts :: 4 Stories :: 312 Comments :: 0 Trackbacks

常用鏈接

留言簿(54)

我參與的團隊

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

#

Queue用于生產者、消費者模型 
gevent提供了'Queue', 'PriorityQueue', 'LifoQueue', 'JoinableQueue' 四種隊列,文檔介紹不全 ,看了代碼方才了解

所有隊列類型都是安全的(synchronized queue) ,數據推入和提取無需訪問保護

LifoQueue - 后進先出隊列,同數據堆棧結構
JoinableQueue -  增加join,所有數據提取完畢join解除阻塞 
PriorityQueue - 優先級隊列,提取根據置入時的優先級別
Queue - 超類消息隊列,提供同步數據置入和提取功能,其他隊列均從Queue派生
posted @ 2013-09-19 14:44 放屁阿狗 閱讀(499) | 評論 (0)編輯 收藏

TCE
項目全稱Tiny Communication Engine,意味著小型的通信引擎




RPC技術:
    RPC是指遠程過程調用(Remote Procedure Call),這種技術被定義出來應該有成長的歷史時間。
    RPC技術意在消除網絡通信的細節,讓開發者只需關心具體的業務而不必考慮由于網絡、硬件、系統的異構復雜環境。相關的RPC有DCOM,java的RMI,CORBA,VISIBROKER,ICE(zeroc.com)等等。
    xmlRPC是基于xml數據格式的RPC封裝,相關的使用項目也不老少,但這東東由于是xml格式,數據流量太大,不建議使用。

使用RPC的原因:
     傳統端到端的通信方式一般都是基于流的數據傳遞,應用消息在發送端編碼并傳送到接收端解碼。 這是一個重復造輪子的過程,不同的應用協議由于規格不同,消息到流的序列化和反序列化過程不可避免。這個過程是個容易出錯的過程,應用協議的改動則必須再次修改編解碼代碼,這不該是提倡的,且顯得異常無奈和低端。
    流式的數據在接收之后必須進行應用類型的消息分揀,以便分派消息到不同的處理函數,這個過程同樣也會被重復的編寫。
    


TCE是RPC的實現:
    因為是輕量級的,所以很容易被修改、擴展或者被重新定義。 
    目前已經支持多種開發語言和通信方式。

TCE的功能特點: 
     1.多通信協議:   rpc的消息可以在多種協議上被交換,協議包括:socket,websocket,MQ,http。 socket應用于最常見的端端通信,c,s兩端直接socket完成通信; websocket支持html5的javascript與服務器的通信; MQ 指集群系統之間消息隊列作為數據傳遞總線時,Rpc消息作為MQ的消息包被傳遞交換。

     2.基于接口級別的調用:  這種模式完全不同與流消息傳遞,用戶無需關心消息如何被序列化和反序列化,并且無需參與消息類型到處理業務函數的分揀,這一切都是自動的,A只需調用B的一個函數接口即可

     3.多語言支持: TCE目前實現的語言有c++,java,javascript,as3,python 支持在這些語言之間互相接口調用。

     4.一致的通信服務:   
           tce內置高性能的通信服務器,c++版本采用boost::asio,python版本采用gevent作為通信引擎

     5. 多種調用模式:
            normal-call (twoway) - client調用server接口,此刻線程被阻塞,直到server處理返回
               oneway-call - client調用server接口之后即刻返回,這種適用于揮發性的調用請求類型,例如:心跳包  
               timeout-call - client調用server接口,此刻線程被阻塞,直到server處理返回,如果超時,線程會被解除阻塞
               async-call - client調用server接口之后即刻返回,server處理返回之后將回調client的異步處理函數
               reversed-call - NAT網絡模式下,client發起RPC調用時將建立與server的socket連接,并請求server端RPC接口;反向調用指server端憑借此連接調用client端的RPC接口

接口定義語言(IDL):
    不同的Rpc的實現都有自己的定義規格,TCE的規格類似與ICE。
    文件命名:<interface>.idl 
    1. 數據類型: 
      --name       size    c++                java             python             as3           javascript 
        byte              1      int8                 byte             int                  byte
        short             2      int16               short            int
        int                 4      int32               int                int
        float              4      float                float              float
        long              8       int64              long              int
        double           8      double             long              float
        string            -       std::string       String           str
        bool              1       bool                boolean         True/False
        sequence                std::vector      Vector           []                 Array               Array
        dictionary                std::map         HashMap       {}                HashMap          Hash
        struct                     struct             class               class           class               function

    1. module:  系統模塊定義,同一個接口文件中可以包含多個module定義
          module first{ ... }
          module second{ ... }

     2. struct :  數據結構定義
               struct Student{
                   int no;
                   string name;
                   int grade;
                };
       
     3. sequence: 數組 
         sequence<int> IdList;
         sequence<string> StrList;

      4. dictionary: 哈希結構
         dictionary<string,Student>   StudentList;

      5. interface :  接口定義
          interface GisServer{
                string Authorize(string user,string passwd);
                GpsData  getGpsData(string device_id);
          };

             
posted @ 2013-09-15 22:25 放屁阿狗 閱讀(2321) | 評論 (0)編輯 收藏

由于最近也是比較有時間,想著將Windows版本的地圖繪制引擎移植到Linux。
地圖Render部分采用的是Qt,所以過程非常順利,用Eclipse+CDT重建工程,略微幾個小改動便完成了移植。
但之后發現了Qt帶來的問題了,地圖繪制引擎支持并發處理多個繪制請求,不同的繪制請求將在不同的線程Thread中被執行,多線程的情況便出現了問題,提示QPixmap不能在非UI線程被構造,如果強行構造,便出現了內存數據訪問違例的異常錯誤,進程直接coredump,這個問題困擾了一些時間;
之后改了改代碼,將數據處理和繪制代碼隔離開,線程thread中進行數據加載、分析、計算,繪制代碼采用Qt的signal/slot機制完成,就是工作線程處理好數據之后通過emit signal將繪制請求發送給ui主線程的slot處理函數。這種實現方法的問題在于繪制工作都將被串行執行,性能下降。
幾年前在移植libsvg到wince時采用過cairo( cairographices.org) ,有點使用經驗,且cairo是gnome的標準圖形庫,性能應該不錯,所以直接改為cairo。
cairomm是cairo的c++包裝,編譯還需sig++,cairo的api還是挺豐富的,字體,反走樣,矩陣... 操作也是相當簡單 
很快移植完成,運行效果還是比較滿意,現在正考慮地圖引擎移植到ios設備,目前需要琢磨cairomm,sig++,pixmap之類的東西如何移植問題(或者直接采用ios的Fundation的繪圖api)

posted @ 2013-08-31 15:39 放屁阿狗 閱讀(2630) | 評論 (1)編輯 收藏

看到 AsyncResult這個類,想到我之前自己寫的處理異步返回值的類 

 1 class MutexObject:
 2     def __init__(self):
 3         self.mtx = threading.Condition()
 4         self.d = None
 5         
 6     def waitObject(self,timeout):
 7         d = None
 8         self.mtx.acquire()
 9         if self.d == None:
10             if timeout:
11                 self.mtx.wait(timeout)
12             else:
13                 self.mtx.wait()
14             d = self.d
15             self.d = None
16         self.mtx.release()
17         return d
18         
19     def notify(self,d):
20         self.mtx.acquire()
21         self.d = d
22         self.mtx.notify()
23         self.mtx.release()
posted @ 2013-05-14 01:04 放屁阿狗 閱讀(503) | 評論 (0)編輯 收藏

 1 class SimpleConfig:
 2     def __init__(self):
 3         self.confile =''
 4         self.props={}
 5 
 6     def load(self,file):
 7         try:
 8             f = open(file,'r')
 9             lines = f.readlines()
10             f.close()
11             self.props={}
12             for line in lines:
13                 line = line.strip()
14                 if not line or line[0]=='#':
15                     continue
16                 line = line.split('#')[0]
17                 pp = line.split('=')
18                 if len(pp)!=2:
19                     continue
20                 k,v = pp[0].strip(),pp[1].strip()
21                 self.props[k] = v
22         except:
23             traceback.print_exc()
24             self.props ={}
25         return True
26 
27     def get(self,key,default=None):
28         return self.props.get(key,default)
posted @ 2013-04-02 13:36 放屁阿狗 閱讀(356) | 評論 (0)編輯 收藏

聊聊草草
實現一套通信框架
A - 移動終端; B - 接入服務器(網關) , C,D,E - 內部服務系統 , M -內部服務系統的消息隊列
B 用于接入成千上萬的A,B不具備業務能力,只有CDE才能與A進行業務交互,M充當消息管道。
一般的做法,各個系統模塊指定標準協議,可以是xml或者二進制的,然后各開發各的,socket或者http等部件,開發語言也是cpp,python,java齊上陣。
這種開發模式過于繁瑣,模塊之間的耦合比較緊密,應該把應用和通信細節剝離出來。
我的做法是所有有系統對象之間的消息傳遞都是基于Rpc接口級的調用,更本不設計通信、協議編碼,只要根據IDL就可以,A請求C的服務,那A只需要調用C的接口函數即可,底部的工作:
A到B的socket通信,B將A的消息轉換到M,M再傳輸到C,這些工作都可以透過Rpc層完成透明,反過來C的調用請求也安原路返回到A。
C要發送消息到A,那調用A的接口,rpc層自動將請求轉化未MQ協議,被路由到B,B找到A的鏈接,并將Mq消息轉化未socket消息傳遞到A,A端接收消息轉換成Rpc函數回調到A的應用代碼。

除了簡單的調用、返回方式還有
單項調用請求、異步調用請求、消息廣播請求

B端可以通過外部配置使得A的請求路由到C,或者D,或者全部接收,取決與應用需求(應用還是集群)
MQ如果系統總線一般,將各個服務子系統鏈接成網絡,是構成整個系統的基礎。Rpc可以解脫程序員,讓其將經歷花在具體業務上,而且基本只要編寫若干的服務接口函數即可。

當然要實現以上功能特點,很多可用的框架,CORBA,DCOM,ICE等等,但這些過于龐大,對環境要求也有限制,如果要更高效、靈活的運用和包裝需要大量修改其底層代碼,與第三方的整合只能工作在他們的上層接口上,這個令人很沮喪,會導致產生更多的依賴和復雜的編程技巧。
這些全都丟棄,還是自己的rpc
posted @ 2012-11-22 10:50 放屁阿狗 閱讀(3543) | 評論 (0)編輯 收藏

     摘要: 弄Rpc有一段時間了,從定義IDL規則,自動生成存根代碼給應用使用,相繼做了c++,java,python,actionscript四個版本,且都都能互相調用,協議是自定義的二進制格式。公司的項目要求我從事android的開發,編寫一些小的應用,要與平臺服務器通信。與服務器的通信采用xml交換,之前做的二進制編碼便不能使用。不想很弱智的去重復的編解碼xml消息格式,去編寫socket通信代碼,工作...  閱讀全文
posted @ 2012-11-22 10:17 放屁阿狗 閱讀(2770) | 評論 (0)編輯 收藏

w3.org定義了websocket的規范,但僅限于草案。
websocket的出現可以提高用戶交互體驗,減少網絡io負荷
當初http的出現,只是那個時代的產物,我覺得現在其已經是一種負擔和糟粕,應該推行出一套全新的符合時代潮流的互聯網協議,但又如何簡單。
看了websocket與node.js的應用demo,由于還是 基于http鏈路的,所以消息的marshall/unmarshall必須是明文編碼,以 00開始ff結束一個封包。這很令我想不明白為何這么定義,也許草案階段的產物。那xml,json是格式化的最終選擇,兩端都是javascript引擎驅動數據轉換,某種應用角度來講不錯,但如果做實時的應用我覺得存在io浪費、時延等諸多問題。
這個問題在于http的規范,且互聯網上充斥著對http支持的設備和系統,路由、網管都能識別http的報文并進行處理、分析。
也許還再等等看看

自己在寫的rpc可以實現python與flex進行rpc通信,等有時間實現一下websocket的rpc
posted @ 2012-09-15 14:15 放屁阿狗 閱讀(449) | 評論 (0)編輯 收藏

提高水平總是靠學習他人代碼來的快

看看這個代碼,摘錄自gameobject
 1   def __init__(self, x=0., y=0.):
 2         """Initialise a vector
 3 
 4         @type x: number
 5         @param x: The x value (defaults to 0.), or a container of 2 values
 6         @type x: number
 7         @param y: The y value (defaults to 0.)
 8 
 9         """
10         if hasattr(x, "__getitem__"):
11             x, y = x
12             self._v = [float(x), float(y)]
13         else:
14             self._v = [float(x), float(y)]
挺好的,參數帶入可以支持 a(1,2)形式,也可支持a( (1,2) )形式 ,非常靈活,自已以前總是想不到用hasattr來判斷


posted @ 2012-07-10 10:04 放屁阿狗 閱讀(428) | 評論 (0)編輯 收藏

應用中會有輸入gps坐標,計算返回所處地理位置文本描述
例如: (x,y) => 虹梅路2007號 宜山路200號 蘇寧電器正南方向300米

當然數據必須要有,包括 poi和道路數據
為了實現快速檢索,將feature數據進行分幅存儲,把全國地圖進行切割成固定網格大小,并將不同層feature存儲這個網格內
切割存儲feature到網格,實現的方法很多:
 postgis , oracle sde ,arcgis sde , osge算法庫,ogr....
我采用postgis將切割的feature放入數據表,建立好相關索引
輸入gps坐標,先轉換成地圖坐標,然后檢索出以地圖坐標為中心的九宮格地理網格,然后在這些網格內計算不同的feature與當前gps坐標的位置描述

例如: 輸入 121.20,31.20
返回 :
上海旺而固實業有限公司    71.6009040754    165.190566006 degree正北方
上海起帆電纜有限公司    77.4887765243    168.290539492 degree正北方
塔星集團新塔星石材    78.9584224298    161.627196901 degree正北方
上海大寶化工制品有限公司    87.7190868822    151.671844699 degree東北方
第二個參數是距離(米) ,第三個為兩點之間的夾角,最后一個表示方位

  1 #計算點a,b,c的夾角
  2 def abc_angle(a,b,c):
  3     ba= Vector2.from_points(b,a)
  4     bc = Vector2.from_points(b,c)
  5     #點乘計算夾角
  6     dot = (ba[0]*bc[0]+ba[1]*bc[1] )
  7     x =  dot/ (ba.get_magnitude()*bc.get_magnitude() )
  8     angle =  (math.acos(x) / math.pi) * 180
  9     return angle
 10 
 11 #print abc_angle(b,a,c)
 12 
 13 
 14 def whereis(p1,p2):
 15     '''
 16         判別p2所處p1的方向位置
 17     '''
 18     txt=''
 19     a,b,c = (p1[0],0),p1,p2
 20     a =  abc_angle(a,b,c)
 21     if a <= 20:
 22         txt=u'正南方'
 23     elif a>=160:
 24         txt = u'正北方'
 25     elif a>20 and a<=70:
 26         if p2[0] <= p1[0]:
 27             txt =u'西南方'
 28         else:
 29             txt = u'東南方'
 30     elif a>=70 and a<=110:
 31         if p2[0] <= p1[0]:
 32             txt = u'正西方'
 33         else:
 34             txt = u'正東方'
 35     else:
 36         if p2[0] <= p1[0]:
 37             txt = u'西北方'
 38         else:
 39             txt = u'東北方'
 40     return a,txt
 41 
 42 '''
 43 設定查找九宮格,xy位置處于MIDDLE_CENTER
 44 select name,st_distance(ST_MAKEPOINT(121.2,31.2),the_geom) as dist , * from data_c31_point order by dist limit 100;
 45 
 46 cast(x'fff' as int)
 47 
 48 select distinct(layerid),count(*) from data_c31_point group by layerid
 49 '''
 50 def searchPoints(xy,layers):
 51     '''
 52         xy - (lon,lat) gps坐標點
 53         layers - ()  查詢的層編號列表
 54     '''
 55     xy = point_g2m(xy[0],xy[1])
 56     bid = breadth.getBreadthId(xy)
 57     x = breadth.getX(bid)
 58     y = breadth.getY(bid)
 59     xx = x-1,x+1
 60     yy = y-1,y+1 #在9個網格內檢索
 61     layers = ','.join(map(str,layers))
 62 
 63     sql ='''
 64         select st_x(the_geom) as x,st_y(the_geom) as y,name,st_distance(ST_MAKEPOINT(%s,%s),the_geom) as dist
 65         from data_c31_point
 66         where
 67         layerid in ( %s )
 68         and
 69         ( (bid>>12) &4095 ) >=%s
 70         and
 71         ( (bid>>12) &4095 ) <=%s
 72         and
 73         ( bid&4095 ) >=%s
 74         and
 75         ( bid&4095 ) <=%s
 76         order by dist
 77         limit 100;
 78         '''%(xy[0],xy[1],layers,xx[0],xx[1],yy[0],yy[1])
 79 
 80     #print sql
 81 
 82     '''
 83     不同層檢索出的poi要選擇性的輸出
 84     計算每個點處于輸入gps坐標的方向: 正南,東南. + 距離
 85     '''
 86     db = getDBConn()
 87     cr = db.cursor()
 88     cr.execute(sql)
 89     rs=[]
 90     while True:
 91         r = dbconn.fetchoneDict(cr)
 92         if not r:
 93             break
 94         a,postxt = whereis((r['x'],r['y']),xy)  #gps坐標處于地理poi的方位
 95         rs.append([r['name'],r['dist'],postxt,a] )
 96     return rs
 97 
 98 if __name__=='__main__':
 99     rs = searchPoints((121.20,31.2),range(17,22))
100     f = open('geotxt.txt','w')
101     for r in rs:
102         f.write(r[0].decode('utf8').encode('gbk'))
103         f.write('    %s    %s degree'%(r[1]*1000*11,r[3]))
104         f.write(r[2].encode('gbk'))
105         f.write('\n')
106         #print r[0].decode('utf8').encode('gbk')
107     f.close()
posted @ 2012-07-07 02:26 放屁阿狗 閱讀(2081) | 評論 (1)編輯 收藏

僅列出標題
共25頁: 1 2 3 4 5 6 7 8 9 Last 
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            可以看av的网站久久看| 99精品福利视频| 亚洲人成久久| 亚洲第一区中文99精品| 国产主播一区| 黄色免费成人| 亚洲人成在线免费观看| 99精品欧美一区二区三区| 99re6热只有精品免费观看| 一区二区三区日韩在线观看| 亚洲午夜久久久| 亚洲欧美国产另类| 久久国产精品亚洲va麻豆| 欧美特黄视频| 国产精品红桃| 国产精品日韩精品| 在线观看日韩专区| 夜夜嗨av一区二区三区网站四季av | 久久亚洲精品一区二区| 快射av在线播放一区| 欧美日本亚洲| 国产日韩欧美在线| 亚洲激情不卡| 午夜精品福利一区二区蜜股av| 久久激情视频久久| 亚洲国产成人久久综合| 一区二区免费在线视频| 久久精品成人欧美大片古装| 欧美电影在线免费观看网站| 国产精品入口66mio| 亚洲精品久久久久久久久久久久 | 久久人人爽国产| 91久久夜色精品国产九色| 亚洲香蕉在线观看| 欧美.www| 国产一区二区三区免费在线观看 | 免费成人网www| 一区二区欧美在线| 欧美成人网在线| 国产一区二区三区久久久久久久久| 亚洲美女91| 蜜臀av性久久久久蜜臀aⅴ| 亚洲综合国产| 欧美日韩二区三区| 亚洲国产成人在线视频| 羞羞答答国产精品www一本| 亚洲国产你懂的| 久久国产精品久久久久久| 国产精品丝袜久久久久久app| 亚洲精品一区二区三区av| 久久一日本道色综合久久| 日韩一级裸体免费视频| 欧美国产日韩一区二区三区| 狠色狠色综合久久| 欧美一级淫片播放口| 一区二区三区国产盗摄| 欧美日韩国产123| 99精品国产福利在线观看免费| 欧美成ee人免费视频| 欧美亚洲网站| 国产日韩精品一区观看| 亚洲欧美日韩中文视频| 亚洲永久在线观看| 亚洲国产综合91精品麻豆| 久久一日本道色综合久久| 韩国三级电影一区二区| 久久久www免费人成黑人精品| 先锋影音国产一区| 国产亚洲二区| 久久免费精品视频| 久久福利一区| 尤物精品国产第一福利三区| 久久免费精品视频| 久久在线免费视频| 亚洲精品美女| 最新国产精品拍自在线播放| 欧美精品网站| 亚洲在线视频网站| 午夜精品区一区二区三| 精品1区2区| 亚洲第一在线视频| 欧美日韩一二三四五区| 亚洲欧美日本国产有色| 香蕉av777xxx色综合一区| 狠狠色伊人亚洲综合成人 | 亚洲先锋成人| 国产在线高清精品| 亚洲二区精品| 国产精品高清在线| 久久久久看片| 欧美aa国产视频| 亚洲视频专区在线| 亚洲女人天堂av| 在线播放亚洲| 亚洲视频导航| 激情综合网址| 一二三四社区欧美黄| 国内一区二区三区| 亚洲人成在线影院| 国产欧美精品在线播放| 亚洲电影毛片| 国产色爱av资源综合区| 欧美高清视频在线播放| 国产麻豆9l精品三级站| 欧美顶级少妇做爰| 国产麻豆午夜三级精品| 麻豆国产精品va在线观看不卡| 欧美剧在线观看| 久久精品女人的天堂av| 欧美理论电影在线观看| 老妇喷水一区二区三区| 欧美午夜在线观看| 亚洲国产另类久久精品| 国产精品永久免费| 亚洲精品视频免费观看| 国精品一区二区| 亚洲视屏在线播放| 99在线精品观看| 久久久久99| 欧美在线一二三区| 欧美日韩中文在线观看| 欧美成人精品一区二区| 国外成人网址| 欧美在线视频一区二区三区| 亚洲影视综合| 亚洲免费大片| 亚洲经典在线看| 久久久久国产精品一区二区| 欧美一区二区视频在线观看| 国产精品igao视频网网址不卡日韩| 亚洲激情网站免费观看| 亚洲国产电影| 久久一二三国产| 久久这里只精品最新地址| 国产精品自拍小视频| 亚洲欧美日韩国产一区二区三区 | 亚洲精品视频一区二区三区| 久久久久久精| 男人的天堂亚洲在线| 狠狠色综合色综合网络| 久久精品亚洲精品| 欧美在线影院在线视频| 国产视频在线观看一区| 亚洲女人天堂成人av在线| 先锋影院在线亚洲| 国产精品一区久久| 亚洲欧美国产不卡| 欧美一区在线看| 国产精品丝袜白浆摸在线| 午夜宅男久久久| 久久在线免费观看视频| 亚洲国产成人久久综合| 欧美激情按摩| 中文一区二区在线观看| 性欧美暴力猛交69hd| 国内免费精品永久在线视频| 久久久久天天天天| 一本久道久久综合中文字幕| 欧美日韩国产精品成人| 亚洲一区二区三区四区在线观看| 欧美综合77777色婷婷| 国产在线高清精品| 欧美高清免费| 一区二区三区久久久| 久久精品国产一区二区三区免费看 | 亚洲欧美视频在线观看视频| 国产精品一香蕉国产线看观看 | 亚洲国产日韩欧美一区二区三区| 蜜臀99久久精品久久久久久软件 | 国产精品一区久久久久| 欧美亚洲专区| 欧美电影打屁股sp| 亚洲一区制服诱惑| 国产亚洲成人一区| 欧美精品成人| 午夜精品视频网站| 亚洲美女中文字幕| 久久在线免费观看视频| 一区二区三区欧美激情| 国产一区亚洲| 欧美日韩一区二区三区四区五区| 亚洲欧美视频在线观看| 亚洲国产精品久久| 精品成人一区二区| 欧美久久电影| 久久久五月天| 亚洲免费视频中文字幕| 亚洲精品欧美极品| 久久亚洲精品中文字幕冲田杏梨 | 国产一区二区三区高清在线观看| 欧美福利视频网站| 午夜精品一区二区三区在线| 亚洲国产天堂久久综合网| 欧美一区二区私人影院日本| 亚洲美女av黄| 亚洲二区免费| 国语精品中文字幕| 国产精品理论片在线观看| 欧美激情综合五月色丁香小说| 欧美在线欧美在线|