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

隨筆-162  評論-223  文章-30  trackbacks-0
 
   本文以統計磁盤文件系統已用空間為例說明awk的用法,使用命令df可獲得磁盤文件系統的相關信息,如下圖所示
      
   第3列Used便是已用空間的數據,這是正常的情形。當第1列Filesystem文本過長時,就有可能換行輸出,這是特殊的情形,如下圖所示
      
   針對這兩種情形,如何寫出有效的命令腳本來統計Used列的數據和呢?從上面兩圖觀察對比顯然可得,以空白符開頭的文本行便是特殊情形,需要計算的是第2列;而正常情形的文本行,便是第3列。因此可得出awk腳本:   awk '{ if($0~/^ /) s+=$2; else s+=$3;} END{ print "Used total is: "s }'

   用于正常情形,輸出如下
         
   而特殊情形,則輸出如下
      
posted @ 2012-11-01 17:47 春秋十二月 閱讀(1713) | 評論 (1)編輯 收藏
     摘要: 引言    在面向對象類的設計中,有時為了強化效能,特別是當構造大量小對象時,為了改善內存碎片,就需要自己實現對象的內存管理,以替換系統缺省的分配和釋放行為,即全局的new和delete。按照c++標準,在定制類專屬的new和delete時,為了減免客戶代碼使用時的麻煩和問題,需要考慮同時定制簡單(normal new)、定位(placement new)和無異常(...  閱讀全文
posted @ 2012-09-27 17:37 春秋十二月 閱讀(2093) | 評論 (2)編輯 收藏
     摘要: 情景分析    在網絡編程中,通常異步比同步處理更為復雜,但由于異步的事件通知機制,避免了同步方式中的忙等待,提高了吞吐量,因此效率較高,在高性能應用開發中,經常被用到。而在處理異步相關的問題時,狀態機模式是一種典型的有效方法,這在libevent、memcached、nginx等開源軟件(庫)中多次被使用而得到見證。據此,為拋磚引玉,本文展示了使用此方法異步接收變...  閱讀全文
posted @ 2012-09-20 15:48 春秋十二月 閱讀(2839) | 評論 (2)編輯 收藏
   為方便查看特定TCP服務器進程的CPU、內存和網絡連接情況,編寫了一個簡單的腳本perf.sh,其原理是指定--tcp或-t選項來調用netstat命令,指定aux -T選項參數調用ps命令,對輸出結果根據進程名稱或PID調用grep過濾;為了輸出結果的可讀性,先調用ps和netstat,用head取出保存大多是說明描述性的頭幾行。這里的實現具有如下特點:
    支持單獨查看CPU和內存利用率,或網絡連接情況,或兩者皆可,name表示進程名,address表示網絡地址
    支持輸出重定向,使用exec實現將標準輸出重定向到file文件,當沒指定-o file選項參數時,則為標準輸出
    支持設置刷新時間,當沒指定-t seconds選項參數時,則默認為3秒 
    支持顯示多線程,當指定-m選項時,則顯示多個線程的情況,默認不顯示
  1#! /bin/bash
  2#perf.sh
  3
  4name=
  5address=
  6file=
  7seconds=
  8show_mthread=0
  9is_count=0
 10
 11while getopts :p:n:o:t:mv opt
 12do
 13    case $opt in
 14    p)  name=$OPTARG
 15        ;;
 16    n)  address=$OPTARG
 17        ;;
 18    o)  file=$OPTARG
 19        ;;
 20    t)  seconds=$OPTARG
 21        ;;
 22    m)  show_mthread=1
 23        ;;
 24    v)  is_count=1
 25        ;;
 26    '?')    echo "$0: invalid option -$OPTARG" >&2
 27            echo "Usage: $0 [-p name] [-n address] [-o file] [-t seconds] [-m]" >&2
 28            exit 1
 29            ;;
 30    esac
 31done
 32
 33shift $((OPTIND-1))
 34
 35if [ -"$name" --"$address" ]; then
 36    print"Usage $(basename "$0") [-p name] [-n address] [-o file] [-t seconds] [-m]\nname or address must not be null\n"
 37    exit 1
 38fi
 39
 40if [ -"$seconds" ]; then
 41    seconds=3
 42fi
 43
 44psflag="aux"
 45if [ "$show_mthread" = 1 ]; then
 46    psflag="$psflag -T"
 47fi
 48
 49psheader="`ps $psflag | head -n 1`"
 50sortflag="-k3nr -k4nr" #sort by descend order according to cpu and mem 
 51
 52netflag="-an --tcp --inet"
 53netheader="`netstat $netflag | head -n 2`"
 54is_exist=
 55
 56show_process_info()
 57{
 58    if [ -"$1" ]; then
 59        return 255
 60    fi
 61
 62    result=`ps $psflag | grep -"$1" | grep --"gdb|grep|$0" | sort $sortflag`
 63    if [ -"$result" ]; then
 64        is_exist=0    
 65    else
 66        is_exist=1
 67        uptime 
 68        echo "$psheader" 
 69        echo "$result"
 70    fi
 71    echo ""
 72}

 73
 74show_net_connection()
 75{
 76    if [ -"$1" ]; then
 77        return 255
 78    fi
 79
 80    result=`netstat  $netflag | grep -E $1
 81    if [ -"$result" ]; then
 82        echo "$netheader" 
 83        if [ "$is_count" = 1 ]; then
 84            echo "$result" | awk '/^tcp/ ++S[$NF] } ENDfor(a in S) print a, S[a] }'
 85        fi
 86    fi
 87    echo ""
 88}

 89
 90tmpfile=`mktemp /tmp/per.XXXXXXXXXXXX`
 91
 92while true
 93do
 94    if [ -"$file" ]; then
 95        exec 1> $tmpfile
 96    fi
 97
 98    show_process_info $name
 99    show_net_connection $address
100    echo ""
101
102    sleep $seconds
103
104    if [ -"$file" ]; then 
105        exec 1>&-
106
107        if [ "$is_exist" = 1 ]; then
108            cat $tmpfile >> $file
109        fi
110
111        size=`ls -l $file | awk '{print $5}'`
112        if [ $size -ge $(expr 1024 \* 1024 \* 1) ]; then
113            cat  /dev/null > $file    
114        fi
115    else
116        clear
117    fi
118done
   最后順便提下,上面是查看某單個服務器進程的性能,若要查看整體服務器系統的性能,可以運用vmstat、iostat和free等命令。
posted @ 2012-09-04 16:35 春秋十二月 閱讀(1724) | 評論 (1)編輯 收藏
原理
   在linux平臺下編譯由多個源碼文件或目錄組成的項目工程時,需要編寫make腳本即Makefile文件來編譯,當項目工程寵大時,這種方式比單純地使用gcc命令行方便快捷,且易于維護。由于具體工程的源碼文件數量的多少及名稱的不同,因此編寫一個較為通用的Makefile文件,來實現編譯各種不同的工程,具有重要的參考意義和價值。本文展示了通用Makefile.in文件及其應用示例。Makefile.in文件,顧名思義,內部實現用的,應由外部具體的Makefile文件提供具體的命令行參數來調用,它包括exe,static,share三個規則目標,因此支持可執行文件、動態庫和靜態庫三種工程的編譯,而每種工程又支持debug和release兩種版本,默認為release版本,在編譯時會自動創建debug或release目錄來存放所有中間文件*.o和*.d。在其腳本源碼中,詳見下面實現,小寫變量為內部所有,大寫變量為make命令行提供的參數,目前支持以下幾種命令行參數:
     1)輸出名稱:OUT_NAME,對于庫工程,內部自動添加lib前綴
     2)輸出路徑:OUT_PATH,
末尾反斜杠/可有可無
     3)源碼路徑:SRC_PATH, 末尾反斜杠/可有可無
     4)依賴動態庫路徑:SHARE_PATH,不帶庫名稱的路徑, 末尾反斜杠/可有可無 
     5)依賴動態庫名稱:SHARE_LIB,不帶庫路徑的名稱,內部自動添加-l前綴
     6)依賴靜態庫路徑:STATIC_PATH,不帶庫名稱的路徑,
尾反斜杠/可有可無
     7)依賴靜態庫路徑:STATIC_LIB,不帶庫路徑的名稱
     8)預定義宏:MACROS,內部自動添加-D前綴
     9)編譯模式:MODE,表示編譯成debug或release版本
     關于頭文件包含的支持,這里沒有提供命令行參數,在內部它固定為SRC_PATH、/usr/include和/usr/local/include三個路徑,對于大多數的工程,應該夠用了。

實現
 1#Makefile.in
 2
 3inc_path := $(SRC_PATH) /usr/include /usr/local/include
 4inc_path := $(addprefix -I,$(inc_path))
 5override SHARE_PATH += /usr/lib /usr/local/lib
 6override SHARE_PATH  := $(addprefix -L,$(SHARE_PATH))
 7override SHARE_LIB  := $(if $(SHARE_LIB),$(addprefix -l,$(SHARE_LIB)))
 8override STATIC_PATH := $(patsubst %/,%,$(STATIC_PATH)) 
 9override STATIC_LIB := $(if $(STATIC_PATH),$(if $(STATIC_LIB),$(addprefix $(STATIC_PATH)/,$(STATIC_LIB))))
10override SRC_PATH := $(patsubst %/,%,$(SRC_PATH))
11override MACROS := $(addprefix -D,$(MACROS))
12
13cxxflags := -Wall $(MACROS)
14
15ifeq ($(MODE),debug)
16  cxxflags += -
17  tmp_path := $(SRC_PATH)/debug
18else
19  cxxflags += -O2 -DNDEBUG 
20  tmp_path := $(SRC_PATH)/release
21endif
22
23lib_name := $(addprefix lib,$(OUT_NAME))
24
25srcs := $(wildcard $(SRC_PATH)/*.c) $(wildcard $(SRC_PATH)/*.cpp)
26deps := $(patsubst %.c,%.d,$(patsubst %.cpp,%.d,$(srcs)))
27deps := $(foreach dep,$(deps),$(notdir $(dep)))
28deps := $(addprefix $(tmp_path)/,$(deps))
29
30objs := $(patsubst %.c,%.o,$(patsubst %.cpp,%.o,$(srcs)))
31objs := $(foreach obj,$(objs),$(notdir $(obj)))
32objs := $(addprefix $(tmp_path)/,$(objs))
33
34share_name  := $(tmp_path)/$(lib_name).so
35static_name := $(tmp_path)/$(lib_name).a
36exe_name    := $(tmp_path)/$(OUT_NAME)
37    
38override MACROS := $(if $(MACROS),$(addprefix -D,$(MACROS)))
39
40.PHONY: exe lib static share clean config
41
42arflags    := -rc
43
44definMKDIR
45if [ ! -d $(tmp_path) ]; then \
46mkdir $(tmp_path);\
47fi 
48endef
49
50config:
51    @$(MKDIR)
52
53exe: config $(exe_name)
54
55lib: config static share
56
57static: $(static_name)
58    
59share: $(share_name)
60
61$(exe_name): $(objs) 
62    @echo "Linking to execute ($@ : $(objs))."
63    $(CXX) -o $@ $(objs) $(SHARE_PATH) $(SHARE_LIB) $(STATIC_LIB)
64    @cp $(exe_name) $(OUT_PATH) 
65        
66$(static_name): $(objs)
67    @echo "Archive to static library ($@ [$(objs)])."
68    $(AR) $(arflags) $@ $(objs)
69    @cp $(static_name) $(OUT_PATH) 
70    
71$(share_name): $(objs)
72    @echo "Linking to shared library ($@ [$(objs)])."
73    $(CXX) $(cxxflags) -o $@ $(objs) -fPIC -shared
74    @cp $(share_name) $(OUT_PATH) 
75    
76$(tmp_path)/%.o: $(SRC_PATH)/%.cpp $(tmp_path)/%.d
77    @echo "Compile $@ ($<)."
78    $(CXX) $(cxxflags) $(inc_path) -c $< -o $@
79
80$(tmp_path)/%.d: $(SRC_PATH)/%.cpp 
81    @echo "Compile $@ ($<)."
82    $(CXX) $(cxxflags) -MM $< -o $@.$$$$; \
83    sed 's,\($*\)\.o[ :]*,\1.o $@:, g' < $@.$$$$ > $@; \
84    rm -f $@.$$$$
85
86-include $(deps)
87
88clean:
89    $(RM) $(objs) $(deps) $(share_name) $(static_name) $(exe_name)

應用
   這里假設有兩個源碼子目錄netcomm和server,前者為動態庫netcomm工程,后者為主程序server工程,它依賴netcomm庫,每個目錄下都有其自己的Makefile,這個用于編譯單個模塊或主程序,它們的父目錄為src,在這個目錄下有兩個Makefile文件,一個是Makefile.in,這個就是上面講到的通用內部Makefile;另一個是Makefile,這個用來聯編所有的模塊和主程序。
   先來看下netcomm的Makefile文件內容,如下所示
 1path := SRC_PATH=. OUT_PATH=../../output
 2
 3.PHONY: all debug release clean
 4
 5all: debug release 
 6    
 7debug:
 8    $(MAKE) -../Makefile.in lib MODE=debug OUT_NAME=netcommd $(path)
 9
10release:
11    $(MAKE) -../Makefile.in lib MODE=release OUT_NAME=netcomm $(path)
12
13clean:
14    $(MAKE) -../Makefile.in clean MODE=debug OUT_NAME=netcommd $(path)
15    $(MAKE) -../Makefile.in clean MODE=release OUT_NAME=netcomm $(path)
     
   再看下server的Makefile文件內容,如下所示   
 1macros := MACROS="_USE_MEM_POOL=1"
 2
 3path := SRC_PATH=. OUT_PATH=../../output SHARE_PATH=../../output
 4
 5.PHONY: all debug release clean 
 6
 7all: debug release 
 8
 9debug:
10    $(MAKE) -../Makefile.in exe MODE=debug OUT_NAME=serverd SHARE_LIB="netcommd" $(macros) $(path)
11
12release:
13    $(MAKE) -../Makefile.in exe MODE=release OUT_NAME=server SHARE_LIB="netcomm" $(macros) $(path)
14
15clean:
16    $(MAKE) -../Makefile.in clean MODE=debug OUT_NAME=serverd $(path)
17    $(MAKE) -../Makefile.in clean MODE=release OUT_NAME=server $(path)
    
   最后看下src的Makefile文件內容,如下所示
 1.PHONY: all release debug clean
 2
 3all: debug release
 4
 5debug:
 6    $(MAKE) debug -C netcomm 
 7    $(MAKE) debug -C server
 8
 9release:
10    $(MAKE) release -C netcomm
11    $(MAKE) release -C server
12
13clean:
14    $(MAKE) clean -C netcomm
15    $(MAKE) clean -C server
   以上所有腳本代碼,在make 3.81下測試通過。
posted @ 2012-08-16 19:29 春秋十二月 閱讀(3528) | 評論 (3)編輯 收藏
     摘要:    信號量是一種用于并發環境同步手段的原語,分為無名信號量和有名信號量兩種,前者只能用于線程間同步,而后者還可用于進程間同步。它包括創建、等待、掛出、取值和銷毀5種基本操作。與互斥鎖不同的是:    ● 信號量擁有一個計數值,表示可用的資源數量,僅當該值為0或1時,則相當于互斥鎖。    &...  閱讀全文
posted @ 2012-07-20 10:52 春秋十二月 閱讀(2202) | 評論 (0)編輯 收藏
     摘要:    互斥鎖,用來保證任一時刻只有單個線程或進程擁有對共享資源的互斥訪問權,在這里將posix thread中的互斥體、win32中的互斥體和臨界區,統稱為互斥鎖,其特點如下:   ● 范圍:線程鎖和進程鎖,前者僅用于同一進程內多線程間,而后者用于進程間,顯然,它也能用于同一進程內多線程間,但效率較低。posix的互斥體既可以是線程鎖,...  閱讀全文
posted @ 2012-06-23 00:08 春秋十二月 閱讀(3598) | 評論 (2)編輯 收藏
     摘要:     socket pair,也稱套接字管道,主要用來實現進程內或進程間的一對一的全雙工或半雙工通信,在IO復用模型(如select,poll,epoll等)中起到通知中斷退出循環的作用,在類UNIX系統中已經有現成的實現,API為socketpair,但在Windows系統中沒有,因此本文主要講述Windows平臺下soketpair的實現及應用,支持IPv4和I...  閱讀全文
posted @ 2012-06-17 03:02 春秋十二月 閱讀(3090) | 評論 (3)編輯 收藏
   自旋鎖作為一種并發同步的手段,特別適用于競爭少和鎖時間短的情況,在驅動及內核代碼中經常被用到,本文講述一種適合用戶態程序的自旋鎖,支持Windows和Linux(GCC>=4.1.2)平臺,并提供了C語言的接口和實現。

接口
   spin_trylock如果獲取成功返回1,否則返回0;spin_is_lock如果已加鎖,返回1,否則返回0。
 1typedef struct 
 2{
 3 volatile long  flag_;
 4 volatile long* spin_;
 5}
spin_lock_t;
 6
 7void spin_init(spin_lock_t* lock,long* flag);
 8
 9void spin_lock(spin_lock_t* lock);
10
11int spin_trylock(spin_lock_t* lock);
12
13void spin_unlock(spin_lock_t* lock);
14
15int spin_is_lock(spin_lock_t* lock);

實現
 1#ifdef _MSC_VER
 2#include <windows.h>
 3#elif defined(__GNUC__)
 4#if __GNUC__<4 || (__GNUC__==4 && __GNUC_MINOR__<1)
 5#error GCC version must be greater or equal than 4.1.2
 6#endif
 7#include <sched.h>
 8#else
 9#error Currently only windows and linux os are supported
10#endif
11
12void spin_init(spin_lock_t* lock,long* flag)
13{
14#ifdef _MSC_VER
15    InterlockedExchange((volatile long*)&lock->flag_,0);
16    InterlockedExchange((volatile long*)&lock->spin_,flag?(long)flag:(long)&lock->flag_);
17#elif defined(__GNUC__)
18    __sync_and_and_fetch((long*)&lock->flag_,0);
19    __sync_lock_test_and_set((long*)&lock->spin_,flag?(long)flag:(long)&lock->flag_);
20#endif
21}

22
23void spin_lock(spin_lock_t* lock)
24{
25#ifdef _MSC_VER
26    for (;0!=InterlockedExchange((volatile long*)lock->spin_,1);)
27    {
28        Sleep(1);
29    }

30#elif defined(__GNUC__)
31    for (;0!=__sync_fetch_and_or(lock->spin_,1);)
32    {
33        sched_yield();
34    }

35#endif
36}

37
38int spin_trylock(spin_lock_t* lock)
39{
40#ifdef _MSC_VER
41    return !InterlockedExchange((volatile long*)lock->spin_,1);
42#elif defined(__GNUC__)
43    return !__sync_fetch_and_or(lock->spin_,1);
44#endif
45}

46
47void spin_unlock(spin_lock_t* lock)
48{
49#ifdef _MSC_VER
50    InterlockedExchange((volatile long*)lock->spin_,0);
51#elif defined(__GNUC__)
52    __sync_and_and_fetch(lock->spin_,0);
53#endif
54}

55
56int spin_is_lock(spin_lock_t* lock)
57{
58#ifdef _MSC_VER
59    return InterlockedExchangeAdd((volatile long*)lock->spin_,0);
60#elif defined(__GNUC__)
61    return __sync_add_and_fetch(lock->spin_,0);
62#endif
63}
posted @ 2012-06-13 21:02 春秋十二月 閱讀(3078) | 評論 (3)編輯 收藏
     摘要: 主類模板    gcc從4.1.2版本開始提供了__sync_*系列的內置API,用于加減和邏輯運算,可以對1,2,4,8字節長度的數值或指針類型進行原子操作,為方便使用,筆者對這些API作了簡單的封裝。 Code highlighting produced by Actipro CodeHighlighter (freeware) http://...  閱讀全文
posted @ 2012-06-08 00:19 春秋十二月 閱讀(4586) | 評論 (1)編輯 收藏
僅列出標題
共17頁: First 8 9 10 11 12 13 14 15 16 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>
            男女激情视频一区| 亚洲七七久久综合桃花剧情介绍| 在线亚洲欧美| 91久久黄色| 欧美激情一区二区三区在线 | 国产一区二区在线免费观看 | 欧美主播一区二区三区| 久久精品99国产精品日本| 久久aⅴ国产欧美74aaa| 久久婷婷影院| 欧美日韩精品一区视频| 国产日本欧美视频| 亚洲第一中文字幕| 性一交一乱一区二区洋洋av| 亚洲欧美日韩精品久久亚洲区 | 欧美激情国产精品| 欧美三区美女| 黄色综合网站| 日韩亚洲欧美在线观看| 亚洲欧美999| 免费成人在线视频网站| 91久久国产精品91久久性色| 亚洲一区二区在线观看视频| 久久久久国产精品www| 欧美激情一区二区三区四区| 国产精品在线看| 亚洲美女区一区| 久久久精品欧美丰满| 亚洲国产精品激情在线观看| 亚洲欧美国产精品专区久久| 欧美国产成人精品| 国产综合第一页| 亚洲综合另类| 亚洲激情中文1区| 久久黄色影院| 国产精品日韩在线播放| 91久久久精品| 久久午夜精品一区二区| 亚洲网站在线播放| 欧美理论在线播放| 亚洲人成人99网站| 久久综合色一综合色88| 亚洲宅男天堂在线观看无病毒| 欧美激情视频给我| 亚洲成人资源网| 久久精品视频在线播放| 在线亚洲一区观看| 欧美另类在线播放| 亚洲乱码国产乱码精品精| 久久久久天天天天| 性久久久久久久| 国产欧美一区二区三区国产幕精品 | 欧美一区二区三区免费观看| 欧美日韩国产成人在线91| 亚洲激情在线激情| 欧美激情片在线观看| 久久人体大胆视频| 激情伊人五月天久久综合| 久久三级视频| 久久精品视频免费| 国内精品视频久久| 牛牛国产精品| 蜜桃久久精品乱码一区二区| 一区在线观看| 欧美国产大片| 欧美极品欧美精品欧美视频| 美女精品在线观看| 久久久久青草大香线综合精品| 国产日韩高清一区二区三区在线| 欧美一区三区三区高中清蜜桃| 亚洲在线成人| 国产亚洲欧美日韩美女| 美女精品一区| 欧美人与禽性xxxxx杂性| 亚洲午夜精品久久久久久浪潮| 一个色综合av| 国产视频精品va久久久久久| 久久午夜国产精品| 欧美xx69| 亚洲欧美日韩综合| 久久精品理论片| 亚洲三级免费观看| 亚洲一二三四区| 狠狠色综合一区二区| 欧美激情黄色片| 国产精品久久久久9999吃药| 久久精品综合一区| 欧美国产日本高清在线| 午夜精品一区二区三区在线视| 久久精品在线| 亚洲香蕉网站| 久久人人看视频| 亚洲在线不卡| 久久综合一区二区| 亚洲综合电影| 免播放器亚洲一区| 欧美一区二区| 欧美韩日精品| 另类专区欧美制服同性| 欧美视频一区二区三区四区| 欧美成人三级在线| 国产情人节一区| 亚洲国产欧美日韩| 国产色综合网| 一本色道久久综合亚洲精品按摩| 国产真实乱子伦精品视频| 亚洲日韩视频| 亚洲国产欧洲综合997久久| 亚洲欧美影音先锋| 亚洲视频在线一区| 美女黄毛**国产精品啪啪| 欧美中在线观看| 国产精品v欧美精品∨日韩| 欧美国产在线电影| 一区二区三区亚洲| 午夜在线电影亚洲一区| 99精品视频一区| 久久午夜视频| 久久这里只有精品视频首页| 国产精品入口福利| 日韩一区二区免费看| 最新中文字幕亚洲| 久久精品综合| 久久青草久久| 国产一区清纯| 欧美在线观看视频一区二区三区| 亚洲一区在线观看免费观看电影高清| 欧美fxxxxxx另类| 欧美国内亚洲| 亚洲破处大片| 国产日韩欧美一二三区| 欧美在线精品一区| 欧美一区二区三区日韩| 欧美新色视频| 中文日韩在线| 午夜精品久久久久久久99热浪潮| 欧美日韩国产首页在线观看| 亚洲激情一区二区三区| 亚洲毛片一区二区| 欧美国产三级| 99精品99| 亚洲欧美日韩国产综合| 国产精品免费久久久久久| 亚洲一区二区三区在线播放| 亚洲欧美在线aaa| 国产日韩在线亚洲字幕中文| 欧美一区二区三区免费大片| 久久免费视频这里只有精品| 永久久久久久| 欧美国产专区| 亚洲天堂网站在线观看视频| 久久福利毛片| 亚洲黄色在线| 国产精品swag| 久久精品视频在线播放| 亚洲电影免费观看高清完整版在线 | 国产麻豆视频精品| 欧美在线一区二区| 欧美黄色一区| 亚洲伊人第一页| 黄色成人在线免费| 欧美1级日本1级| 中日韩男男gay无套| 久久亚洲精品一区| 一区二区免费看| 国内精品久久久| 欧美激情中文字幕一区二区| 亚洲已满18点击进入久久| 麻豆国产va免费精品高清在线| 亚洲美女网站| 国产香蕉97碰碰久久人人| 欧美大片91| 性伦欧美刺激片在线观看| 欧美激情中文字幕在线| 亚洲淫片在线视频| 91久久精品日日躁夜夜躁国产| 国产精品theporn| 久久香蕉精品| 亚洲欧美精品在线| 欧美二区视频| 久久精品免费看| 亚洲网友自拍| 亚洲经典自拍| 国内精品一区二区| 欧美午夜剧场| 欧美激情亚洲精品| 久久精品2019中文字幕| 在线亚洲欧美视频| 亚洲人成在线观看一区二区| 久久精品人人做人人爽电影蜜月 | 狠狠色狠狠色综合| 国产精品萝li| 欧美精品一二三| 老司机免费视频一区二区| 欧美网站大全在线观看| 亚洲国产日韩欧美在线动漫| 性做久久久久久久免费看| 日韩亚洲视频在线| 亚洲激情专区| 永久91嫩草亚洲精品人人|