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

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 放屁阿狗 閱讀(500) | 評論 (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 放屁阿狗 閱讀(2324) | 評論 (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 放屁阿狗 閱讀(2635) | 評論 (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 放屁阿狗 閱讀(504) | 評論 (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 放屁阿狗 閱讀(357) | 評論 (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 放屁阿狗 閱讀(3545) | 評論 (0)編輯 收藏

     摘要: 弄Rpc有一段時間了,從定義IDL規則,自動生成存根代碼給應用使用,相繼做了c++,java,python,actionscript四個版本,且都都能互相調用,協議是自定義的二進制格式。公司的項目要求我從事android的開發,編寫一些小的應用,要與平臺服務器通信。與服務器的通信采用xml交換,之前做的二進制編碼便不能使用。不想很弱智的去重復的編解碼xml消息格式,去編寫socket通信代碼,工作...  閱讀全文
posted @ 2012-11-22 10:17 放屁阿狗 閱讀(2773) | 評論 (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 放屁阿狗 閱讀(452) | 評論 (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 放屁阿狗 閱讀(430) | 評論 (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 放屁阿狗 閱讀(2087) | 評論 (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>
            亚洲人成网站999久久久综合| 欧美日韩三级视频| 一区二区三区黄色| 久久精品水蜜桃av综合天堂| 亚洲性人人天天夜夜摸| 久热爱精品视频线路一| 欧美自拍偷拍午夜视频| 欧美体内she精视频| 亚洲成色精品| 亚洲电影在线看| 欧美在线播放高清精品| 亚洲一级黄色| 欧美午夜剧场| 亚洲精选一区| 一区二区不卡在线视频 午夜欧美不卡'| 久久精品国产99国产精品| 欧美一区二区视频免费观看| 国产精品久久福利| 一区二区久久久久| 中文欧美日韩| 欧美日韩中文字幕| 99国内精品久久| 亚洲午夜精品国产| 欧美色区777第一页| 一本久久综合亚洲鲁鲁| 亚洲一区二区三区午夜| 欧美日韩一区二区在线观看| 亚洲精品小视频| 亚洲视频1区| 欧美性做爰毛片| 亚洲一区二区三区视频播放| 欧美一区影院| 国产中文一区| 免费观看不卡av| 亚洲免费av网站| 亚洲欧美日本精品| 国产伦一区二区三区色一情| 午夜亚洲影视| 欧美国产日本高清在线| 亚洲欧洲在线免费| 欧美午夜剧场| 久久国产福利| 欧美国产综合| 亚洲视频导航| 国产主播精品在线| 免费看成人av| 亚洲婷婷综合色高清在线| 欧美一区国产在线| 在线日韩欧美| 欧美区二区三区| 亚洲综合精品一区二区| 麻豆成人精品| 中文成人激情娱乐网| 国产麻豆精品视频| 麻豆91精品| 亚洲一级一区| 欧美激情一区二区三区高清视频| 一本色道久久综合狠狠躁的推荐| 国产精品一区视频| 老司机一区二区| 亚洲一区视频在线| 欧美激情精品| 久久福利资源站| 亚洲精选在线观看| 国产午夜精品福利| 欧美人成在线| 久久精品久久综合| 一本色道久久综合亚洲精品不| 久久久五月天| 亚洲中无吗在线| 亚洲国产美女| 国产一区二区三区四区三区四| 欧美黄色一区| 久久伊人一区二区| 亚洲一区二区在| 亚洲精品国产精品乱码不99| 久久久久久久一区二区三区| 99re热这里只有精品免费视频| 国产一区二区三区网站| 欧美日韩国产影院| 久久亚洲午夜电影| 欧美在线观看一区| 亚洲尤物视频网| 亚洲精品一二三| 欧美国产激情| 免播放器亚洲一区| 欧美自拍丝袜亚洲| 亚洲一区二区三区四区在线观看 | 国产精品v欧美精品v日韩| 久久亚洲电影| 久久精品首页| 欧美在线啊v| 午夜精品久久久久久久久久久| 最新亚洲电影| 亚洲国产综合在线看不卡| 美国三级日本三级久久99| 欧美一级黄色网| 亚洲欧美在线磁力| 亚洲一区二区在线免费观看视频| 99re66热这里只有精品3直播| 91久久精品国产91久久| 国产亚洲欧美另类一区二区三区| 国产精品日韩在线一区| 国产精品v欧美精品v日韩| 欧美视频一区二区在线观看 | 欧美电影在线观看完整版| 久久精品亚洲国产奇米99| 先锋影音久久| 性欧美精品高清| 小嫩嫩精品导航| 欧美一级久久久久久久大片| 亚洲欧美日韩国产成人精品影院| 亚洲综合三区| 欧美一级片一区| 久久久久久色| 欧美/亚洲一区| 欧美激情小视频| 亚洲精品一区中文| 亚洲每日在线| 亚洲女人天堂成人av在线| 香蕉久久夜色| 久久综合影音| 欧美日韩亚洲一区二区三区| 欧美调教vk| 国产亚洲女人久久久久毛片| 狠狠干综合网| 亚洲伦理网站| 欧美一区二区三区在线播放| 久久蜜桃资源一区二区老牛| 亚洲第一二三四五区| 亚洲精品日本| 欧美在线视频导航| 免费观看成人| 国产精品爽黄69| 亚洲国产一成人久久精品| 日韩一区二区电影网| 欧美一区二区日韩| 欧美a级一区二区| 亚洲精品在线观看视频| 午夜欧美不卡精品aaaaa| 麻豆成人91精品二区三区| 欧美日韩综合一区| 激情校园亚洲| 亚洲永久在线观看| 久久综合九色综合久99| 亚洲日本无吗高清不卡| 亚洲欧美日韩在线不卡| 欧美a级在线| 国产精品热久久久久夜色精品三区| 好看的日韩视频| 中文在线资源观看视频网站免费不卡| 久久岛国电影| 99精品99久久久久久宅男| 欧美一区激情视频在线观看| 欧美另类高清视频在线| 精东粉嫩av免费一区二区三区| 一本色道久久综合亚洲精品小说| 久久精品亚洲国产奇米99| 亚洲精品美女| 久久人人爽人人爽爽久久| 国产精品成人播放| 亚洲人人精品| 久久一区二区视频| 亚洲永久精品大片| 欧美日韩国产精品专区| 亚洲国产成人在线播放| 午夜久久影院| 一区二区欧美精品| 欧美成人三级在线| 永久免费视频成人| 久久激情五月激情| 亚洲欧美卡通另类91av| 欧美日韩第一区| 亚洲麻豆av| 欧美高清视频www夜色资源网| 欧美一级成年大片在线观看| 国产精品久久毛片a| 一区二区三区视频在线看| 亚洲黄色一区| 欧美成人精品在线观看| 狠狠色丁香婷综合久久| 久久国产精品亚洲va麻豆| 亚洲天堂成人在线观看| 欧美偷拍一区二区| 一区二区高清| 日韩视频在线一区| 欧美日韩国产大片| 一区二区不卡在线视频 午夜欧美不卡在| 久久综合久久久| 久久久亚洲高清| 在线成人激情| 欧美国产激情二区三区| 毛片一区二区三区| 亚洲三级毛片| 亚洲精品久久嫩草网站秘色| 欧美国产欧美综合| 一区二区免费看| 在线一区二区三区四区| 国产精品盗摄久久久| 欧美一级视频免费在线观看|