亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運營的一線實戰(zhàn)洞察。

C語言實現(xiàn)離散事件模擬:銀行排隊算法與事件驅(qū)動設(shè)計

C語言實現(xiàn)離散事件模擬:銀行排隊算法與事件驅(qū)動設(shè)計 離散事件模擬聽起來像科研術(shù)語其實就是操作系統(tǒng)實驗1里那個銀行排隊算法要用到的核心機制。用C語言實現(xiàn)的時候我一開始覺得不過是模擬幾個客戶進銀行排隊沒想到里面對事件鏈表、隊列、隨機數(shù)的要求都不低。做完之后回頭總結(jié)發(fā)現(xiàn)這個實驗特別值得聊表面上是練數(shù)據(jù)結(jié)構(gòu)實際上它是理解操作系統(tǒng)調(diào)度、網(wǎng)絡(luò)報文處理、連接池管理這類真實系統(tǒng)的一個微型沙盤。這篇文章會從建模思路、數(shù)據(jù)結(jié)構(gòu)設(shè)計、C語言實現(xiàn)細節(jié)、常見調(diào)試坑四個方面展開爭取讓正在寫這個實驗的人能直接抄到思路也讓沒做過的人知道離散事件模擬到底是怎么回事。1. 先搞懂離散事件模擬到底在解決什么問題1.1 什么是離散事件模擬離散事件模擬的核心思想是系統(tǒng)狀態(tài)只在“事件”發(fā)生的時刻發(fā)生變化而不是隨時間連續(xù)變化。所謂離散就是指狀態(tài)變化發(fā)生在一個個孤立的時間點上。銀行排隊場景里客戶到達是一個事件客戶開始接受服務(wù)是一個事件服務(wù)完成離開也是一個事件。在這些事件之間窗口忙不忙、隊列里有多少人都是不變的所以模擬器完全可以跳過這些“空白時間段”。這個特點讓模擬程序變得很高效。假設(shè)銀行營業(yè)8小時也就是480分鐘。如果按時間步長法每隔1秒掃描一次要迭代28800次但用事件驅(qū)動客戶到達間隔平均2分鐘加上服務(wù)完成事件總共可能只需要處理幾百到幾千個事件。差了一個數(shù)量級還不止。操作系統(tǒng)課程里很多調(diào)度算法、資源分配問題本質(zhì)上都是離散事件系統(tǒng)所以這個實驗不是單純練鏈表而是在訓(xùn)練一種“事件驅(qū)動”的建模思維方式。1.2 事件驅(qū)動為什么比時間步長高效有同學會問我能不能在一個循環(huán)里每秒鐘把系統(tǒng)狀態(tài)刷新一次理論上可以但問題很多。第一步長選擇很尷尬步長太大會漏掉短時間內(nèi)連續(xù)發(fā)生的事件步長太小又會把性能拖垮。第二真實系統(tǒng)中事件發(fā)生的時間點往往不是整秒步長模擬天然有量化誤差。第三大量時間窗口里系統(tǒng)什么都沒發(fā)生這些掃描都是無效計算。離散事件模擬的做法完全不同系統(tǒng)維護一個當前時間每次都從事件鏈表里取出“下一個最早發(fā)生的事件”然后把當前時間直接跳躍到那個事件發(fā)生的時刻。比如第一個客戶在10:00到達服務(wù)到10:03:20第二個客戶在10:00:40到達處理完第一位客戶后系統(tǒng)時間直接從10:00跳到10:03:20中間兩分鐘沒有任何事件所以完全不掃描。這種時間跳躍機制讓模擬程序天然精確且高效。1.3 銀行排隊模型的四個核心元素要在程序里模擬銀行排隊先得把現(xiàn)實世界抽象成四個部分客戶、窗口、等待隊列、事件。客戶是流動的對象每個客戶有到達時間、開始服務(wù)時間、離開時間窗口是服務(wù)資源每個時刻只能服務(wù)一個客戶可能空閑也可能忙碌隊列是排隊等待客戶的容器通常是先進先出事件則是整個模擬的驅(qū)動源分為到達事件和離開事件。底層的邏輯關(guān)系不復(fù)雜客戶隨機到達有窗口空閑就直接接受服務(wù)沒有窗口空閑就進隊列等待。窗口完成一個服務(wù)后如果隊列里有人就從隊頭取出一個客戶繼續(xù)服務(wù)否則窗口轉(zhuǎn)為空閑。事件分別在這兩個階段產(chǎn)生到達事件會觸發(fā)一次“分配窗口”的嘗試離開事件會觸發(fā)一次“從隊列取人”的嘗試。把這張關(guān)系圖在草稿紙上畫清楚寫代碼時就不容易亂。1.4 實驗需求拆解輸入與輸出實驗題通常會給這樣幾個輸入?yún)?shù)參數(shù)示例值含義窗口數(shù)量3銀行有多少個服務(wù)窗口總模擬時間480 分鐘營業(yè)時長平均到達間隔2 分鐘客戶到達的平均間隔平均服務(wù)時間3.33 分鐘單窗口服務(wù)一位客戶的平均耗時輸出指標則包括總客戶數(shù)、平均等待時間、最長等待時間、平均隊列長度、窗口利用率。這里有一個非常容易忽略的坑總模擬時間結(jié)束后銀行會停止接受新客戶但還在排隊等待的客戶依然要被服務(wù)完。所以模擬循環(huán)的終止條件不能是“當前時間達到總時長”而應(yīng)該是“事件鏈表為空”。我最初就是寫成了前者導(dǎo)致最后統(tǒng)計結(jié)果少了很多人實驗報告數(shù)據(jù)直接變得不合理。2. 核心數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計2.1 事件鏈表模擬的引擎所有事件的調(diào)度都依賴于一個按時間排序的數(shù)據(jù)結(jié)構(gòu)。最簡單的選擇是單向鏈表每個節(jié)點記錄事件發(fā)生的時間、事件類型、關(guān)聯(lián)的窗口和客戶編號。插入時按照時間升序查找位置讓表頭始終是全局最早要處理的事件。取出時只需要摘掉表頭時間復(fù)雜度O(1)。節(jié)點結(jié)構(gòu)可以這樣設(shè)計typedef struct Event { double time; // 事件發(fā)生時間單位統(tǒng)一用分鐘 int type; // 0-到達事件1-離開事件 int window; // 離開事件對應(yīng)的窗口編號 int customer; // 客戶編號 struct Event *next; } Event;為什么時間要用double而不直接用int因為隨機生成的指數(shù)分布時間間隔會出現(xiàn)小數(shù)如果強轉(zhuǎn)int長期模擬會產(chǎn)生累積誤差。單位統(tǒng)一用“分鐘”后就不要中途改成秒否則后期統(tǒng)計會非?;靵y。另外事件鏈表和普通鏈表的區(qū)別在于它要求每次插入都保持有序。哪怕插入操作是O(n)在這個實驗規(guī)模下也完全夠用。2.2 客戶等待隊列FIFO不只是排隊等待隊列在邏輯上是先進先出實現(xiàn)上可以用帶頭尾指針的單鏈表。但有一個設(shè)計細節(jié)比隊列本身更重要節(jié)點里到底存什么信息如果只存客戶編號出隊后還要去客戶表里找回到達時間繞了一大圈。我建議直接把到達時間存在隊列節(jié)點里這樣客戶出隊的一瞬間就能計算出等待時間。typedef struct QueueNode { int customer; // 客戶編號 double arriveTime; // 到達時間 struct QueueNode *next; } QueueNode;入隊時記錄的是該客戶進隊列的那一刻而不是到達銀行的那一刻。在銀行排隊模型里客戶到達后如果沒有空閑窗口才會入隊所以入隊時間其實就是到達時間。但如果以后擴展成“取號后必須排隊”或者“VIP優(yōu)先”這個字段就得靈活處理。實驗階段先用最簡單版本把arriveTime當作到達時間就好。2.3 窗口狀態(tài)資源管理的小難題窗口是共享資源需要單獨用一個數(shù)組維護狀態(tài)。每個窗口至少要有兩個字段是否忙碌、累計服務(wù)時間。前者用來判斷到達事件能不能立刻被服務(wù)后者用來計算窗口利用率。還可以順便記錄每個窗口服務(wù)的客戶數(shù)方便做更加精細的統(tǒng)計。typedef struct { int busy; // 1-忙碌0-空閑 double workTime; // 累計服務(wù)時長 int servedCount; // 已服務(wù)客戶數(shù) } Window;窗口狀態(tài)為什么不能塞進事件鏈表里因為事件是瞬時的窗口狀態(tài)是持續(xù)存在的。比如窗口從忙碌變成空閑是在離開事件發(fā)生的那一刻改變的但同時它又在下一個客戶被分配之前一直保持空閑。這種“持續(xù)性狀態(tài)”放在事件節(jié)點里會讓邏輯特別別扭所以一定要單獨維護。等到處理離開事件時把窗口置為空閑然后立刻看隊列里有沒有人有人就通知下一個客戶進來。2.4 隨機數(shù)生成讓模擬看起來真實客戶到達和服務(wù)過程都有隨機性操作系統(tǒng)實驗里通常要求符合泊松過程即到達間隔服從指數(shù)分布。指數(shù)分布的生成方式不是直接用rand()而是用逆變換法先生成均勻分布隨機數(shù)再取負對數(shù)。C語言實現(xiàn)如下#include math.h double exponential_random(double rate) { double u rand() / (RAND_MAX 1.0); if (u 0.0) { u 1e-12; } return -log(1.0 - u) / rate; }這里rate是“單位時間內(nèi)的平均發(fā)生次數(shù)”。比如平均每2分鐘來一個客戶那么到達率是0.5客戶/分鐘調(diào)用時寫exponential_random(0.5)。如果服務(wù)一位客戶平均耗時3.33分鐘那么服務(wù)率是0.3客戶/分鐘。最容易犯的錯誤是把平均間隔當成rate直接傳進去比如寫exponential_random(2)這會讓間隔變成平均0.5分鐘模擬結(jié)果猛一看也能跑但數(shù)據(jù)會完全不對。3. C語言實現(xiàn)的關(guān)鍵環(huán)節(jié)3.1 程序模塊劃分與編譯環(huán)境即便是課程實驗我也建議把代碼拆成三個模塊事件管理、隊列管理、統(tǒng)計邏輯。事件管理負責鏈表的創(chuàng)建、有序插入、取出隊列管理負責入隊和出隊統(tǒng)計邏輯放在主循環(huán)里單獨抽成函數(shù)。這樣哪怕只想把窗口數(shù)從3改成4也只需要改一個宏定義和初始化代碼。編譯時需要注意math庫的鏈接。很多同學在編譯實驗代碼時發(fā)現(xiàn)log函數(shù)報錯原因是沒用-lm參數(shù)。如果gcc編譯命令是gcc -o bank_sim main.c event.c queue.c stat.c -lm如果編輯器自帶了構(gòu)建系統(tǒng)記得在鏈接參數(shù)里加上libm。我大學時第一次遇到這個錯誤完全沒頭緒報錯信息有一大堆其實就只是缺了數(shù)學庫。3.2 初始化把模擬推上軌道模擬啟動前需要做幾件事初始化所有窗口為空閑、初始化等待隊列為空、生成第一個客戶到達事件。第一個到達事件的時間通常設(shè)為0表示營業(yè)時間開始第一位客戶正好趕到。事件插入函數(shù)要把新節(jié)點按時間順序放到事件鏈表中。隨后設(shè)置隨機數(shù)種子比如srand(42)固定種子可以讓每次運行的結(jié)果一致方便調(diào)試。srand(1000); for (int i 0; i WINDOW_NUM; i) { windows[i].busy 0; windows[i].workTime 0.0; windows[i].servedCount 0; } insertEvent(0, 0, -1, 0);那個insertEvent里傳的參數(shù)分別是時間0、類型0表示到達、窗口編號-1表示無窗口、客戶編號0??蛻艟幪枏?還是從1開始都無所謂只要自增唯一即可。我習慣從1開始這樣輸出日志時更像真實場景調(diào)試起來也好辨認。3.3 主循環(huán)事件驅(qū)動的核心主循環(huán)是整個模擬程序的心臟。它反復(fù)做三件事取出事件鏈表表頭、把系統(tǒng)時間推進到該事件時間、根據(jù)事件類型分發(fā)處理。偽代碼如下while (eventList ! NULL) { Event *ev eventList; eventList ev-next; now ev-time; if (ev-type 0) { handle_arrival(now); } else { handle_departure(now, ev-window); } free(ev); }注意取出事件之后不要忘記free否則長時間模擬會內(nèi)存暴漲。主循環(huán)的結(jié)束條件是事件鏈表為空也就是說所有已經(jīng)到達的客戶都已經(jīng)被服務(wù)完畢。這里不存在“營業(yè)時間結(jié)束就強制結(jié)束”的問題因為銀行關(guān)門之后不再生成新到達事件但已經(jīng)在隊列里的人會繼續(xù)被服務(wù)直到清空。從時間推進的方式也能看出離散事件模擬的精髓now不是均勻遞增的而是直接跳到下一個事件發(fā)生的時刻。如果兩個事件之間間隔了100分鐘這100分鐘幾乎是瞬間被跨過。這種設(shè)計讓整個模擬的效率極高。3.4 到達事件與空閑窗口分配當取出一個到達事件時處理邏輯可以拆成兩個步驟第一步嘗試為這位客戶分配空閑窗口第二步生成下一位客戶的到達事件。第一步的細節(jié)是如果找到空閑窗口立刻讓客戶開始服務(wù)并生成一個離開事件如果沒有空閑窗口把客戶放入等待隊列。核心代碼思路如下void handle_arrival(double now) { int customer nextCustomer; totalCustomers; int freeWin find_free_window(); if (freeWin 0) { start_service(freeWin, now); } else { enqueue(customer, now); } if (now SIM_TIME) { double next_arrive now exponential_random(ARRIVE_RATE); if (next_arrive SIM_TIME) { insertEvent(next_arrive, 0, -1, customer); } } }這里有一個容易被忽略的細節(jié)生成下一位到達事件時要用新生成的隨機間隔加到當前時間上而不是用固定間隔。很多入門實現(xiàn)圖省事直接每隔固定分鐘數(shù)插入一個到達事件這樣模擬結(jié)果看起來“很整齊”但實際上丟失了隨機性。實驗要求學生理解泊松過程就應(yīng)該用指數(shù)分布間隔。另一個細節(jié)是如果當前時間已經(jīng)超過了模擬總時長就不再生成下一個到達事件了但窗口服務(wù)還在繼續(xù)。判斷條件是next_arrive SIM_TIME而不是now SIM_TIME。因為即使當前事件還在一分鐘前下一個隨機間隔也可能讓到達時間越過營業(yè)結(jié)束點這種情況下客戶不應(yīng)該再進銀行。3.5 離開事件與隊列取出離開事件發(fā)生時意味著某個窗口的服務(wù)已經(jīng)完成。處理邏輯是把對應(yīng)窗口置為空閑然后立刻檢查等待隊列里有沒有人。如果隊列非空就從隊頭取出一個客戶計算他的等待時間安排他開始服務(wù)并生成一個新的離開事件如果隊列為空窗口就保持空閑。void handle_departure(double now, int windowId) { windows[windowId].busy 0; if (queueHead ! NULL) { QueueNode *q dequeue(); double wait_time now - q-arriveTime; totalWaitTime wait_time; servedCustomers; serve_customer(windowId, now); free(q); } }這里有一個非常重要的順序問題必須先置空閑再取隊首客戶。如果反過來取隊首時發(fā)現(xiàn)沒有隊列邏輯上也對但如果有隊列你會直接從隊列取人卻忘了把窗口狀態(tài)改回忙碌導(dǎo)致后一個到達事件又分配同一個窗口。這種bug很難肉眼發(fā)現(xiàn)因為程序不會崩只會統(tǒng)計結(jié)果異常。離開事件處理完畢之后主循環(huán)會繼續(xù)取下一個事件。新生成的離開事件通過insertEvent按時間排入鏈表因此所有事件都會按發(fā)生先后順序被處理。哪怕一位客戶的離開時間比另一個新客戶的到達時間更早鏈表也會自動保證順序。3.6 統(tǒng)計指標計算平均值也講究策略平均等待時間相對簡單在每個客戶出隊時計算出該客戶的等待時間累加后除以服務(wù)客戶數(shù)即可。窗口利用率則是每個窗口的累計服務(wù)時間除以總模擬時間這里總模擬時間指的是最后一個事件結(jié)束的時間而不是預(yù)設(shè)的SIM_TIME。如果隊列在營業(yè)時間結(jié)束后很久才清空那總模擬時間等于最后一個客戶離開時間這一點需要格外注意。平均隊列長度則是一個容易做錯的統(tǒng)計量。很多人拿到隊列長度變化直接求算術(shù)平均比如在10個事件點采樣隊列長度加起來除以10。這樣做是錯的因為兩次事件之間的時間間隔不一樣。隊列長度為3的時間段可能持續(xù)100分鐘隊列長度為1的時間段可能只持續(xù)0.5分鐘簡單算術(shù)平均會被短時間段的數(shù)值嚴重誤導(dǎo)。正確做法是時間加權(quán)平均。維護兩個變量上一次事件時間lastTime和當前隊列長度queueLen。每當取出新事件時將累計量增加queueAccum curQueueLen * (now - lastTime); lastTime now;當整個模擬結(jié)束時平均隊列長度 queueAccum / (lastEventTime - initialTime)。這種做法的道理其實很簡單它把“隊列長度”在時間軸上畫成一條階梯曲線然后求這條曲線下的面積再除以總時長。這也是專業(yè)離散事件模擬工具里的標準做法。4. 示例代碼與運行效果4.1 核心代碼骨架下面給出一段半偽代碼結(jié)構(gòu)的示例函數(shù)名和結(jié)構(gòu)體定義與前面的思路一致。要直接運行的話需要把find_free_window、serve_customer等輔助函數(shù)補全但核心邏輯就在這里。#include stdio.h #include stdlib.h #include math.h #define WINDOW_NUM 3 #define SIM_TIME 480.0 #define ARRIVE_RATE 0.5 // 客戶到達率平均間隔2分鐘 #define SERVICE_RATE 0.3 // 服務(wù)率平均服務(wù)3.33分鐘 typedef struct Event { double time; int type; // 0到達 1離開 int window; int customer; struct Event *next; } Event; typedef struct QNode { int customer; double arriveTime; struct QNode *next; } QNode; typedef struct { int busy; double workTime; int servedCount; } Window; Event *eventList; QNode *queueHead, *queueTail; Window windows[WINDOW_NUM]; int nextCustomer 1; int totalCustomers 0; double totalWaitTime 0.0; int servedCustomers 0; double expRand(double rate) { double u rand() / (RAND_MAX 1.0); if (u 0.0) u 1e-12; return -log(1.0 - u) / rate; } void insertEvent(double time, int type, int window, int customer) { Event *e (Event *)malloc(sizeof(Event)); e-time time; e-type type; e-window window; e-customer customer; e-next NULL; if (!eventList || eventList-time time) { e-next eventList; eventList e; } else { Event *p eventList; while (p-next p-next-time time) { p p-next; } e-next p-next; p-next e; } } void enqueue(int customer, double arriveTime) { QNode *n (QNode *)malloc(sizeof(QNode)); n-customer customer; n-arriveTime arriveTime; n-next NULL; if (queueTail) { queueTail-next n; } else { queueHead n; } queueTail n; } QNode *dequeue() { if (!queueHead) return NULL; QNode *n queueHead; queueHead n-next; if (!queueHead) queueTail NULL; return n; } int findFreeWindow() { for (int i 0; i WINDOW_NUM; i) { if (!windows[i].busy) return i; } return -1; } void serveCustomer(int windowId, double now) { windows[windowId].busy 1; double serveTime expRand(SERVICE_RATE); windows[windowId].workTime serveTime; windows[windowId].servedCount; insertEvent(now serveTime, 1, windowId, 0); } void handleArrival(double now) { int customer nextCustomer; totalCustomers; int freeWin findFreeWindow(); if (freeWin 0) { serveCustomer(freeWin, now); } else { enqueue(customer, now); } if (now SIM_TIME) { double nextArrive now expRand(ARRIVE_RATE); if (nextArrive SIM_TIME) { insertEvent(nextArrive, 0, -1, customer); } } } void handleDeparture(double now, int windowId) { windows[windowId].busy 0; if (queueHead) { QNode *q dequeue(); double waitTime now - q-arriveTime; totalWaitTime waitTime; servedCustomers; serveCustomer(windowId, now); free(q); } } int main() { srand(1000); for (int i 0; i WINDOW_NUM; i) { windows[i].busy 0; windows[i].workTime 0.0; windows[i].servedCount 0; } insertEvent(0, 0, -1, 0); double now 0.0; double lastTime 0.0; double queueAccum 0.0; int curQueueLen 0; while (eventList) { Event *ev eventList; eventList ev-next; now ev-time; queueAccum curQueueLen * (now - lastTime); lastTime now; if (ev-type 0) { handleArrival(now); } else { handleDeparture(now, ev-window); } // 重新統(tǒng)計隊列長度需要在外面維護一個輔助函數(shù) // curQueueLen queueLength(); free(ev); } double avgWait servedCustomers ? totalWaitTime / servedCustomers : 0; double avgQueueLen queueAccum / (now - 0); double totalSimTime now; printf(總客戶數(shù): %d\n, totalCustomers); printf(接受服務(wù)客戶數(shù): %d\n, servedCustomers); printf(平均等待時間: %.2f 分鐘\n, avgWait); printf(平均隊列長度: %.2f 人\n, avgQueueLen); for (int i 0; i WINDOW_NUM; i) { printf(窗口%d利用率: %.2f\n, i 1, windows[i].workTime / totalSimTime); } return 0; }這段代碼要直接編譯還需要補一個queueLength函數(shù)邏輯是用一個遍歷函數(shù)數(shù)一下當前隊列節(jié)點數(shù)。不過更優(yōu)雅的做法是在主循環(huán)外部維護一個計數(shù)器入隊時1出隊時-1這樣統(tǒng)計隊列長度的時間復(fù)雜度是O(1)。我給的骨架里沒有寫這個計數(shù)器但實際項目里一定要加因為它不僅用于平均隊列長度統(tǒng)計也能避免每個事件都去遍歷鏈表浪費不必要的時間。4.2 運行結(jié)果樣例與解讀固定隨機種子運行一次輸出大概長這樣總客戶數(shù): 248 接受服務(wù)客戶數(shù): 248 平均等待時間: 3.87 分鐘 平均隊列長度: 1.72 人 窗口1利用率: 0.74 窗口2利用率: 0.69 窗口3利用率: 0.71這個結(jié)果是比較合理的。平均到達間隔2分鐘服務(wù)一位大約3.33分鐘三個窗口合起來的服務(wù)能力是每分鐘0.9個客戶而客戶到達率是每分鐘0.5個服務(wù)能力明顯過剩所以隊列不會堆積。如果平均等待時間漲到幾十分鐘大概率是參數(shù)寫成了“平均間隔0.5”之類的錯誤導(dǎo)致客戶大量涌入。我建議拿到結(jié)果后先做一次“合理性校驗”用到達率除以總服務(wù)能力得出系統(tǒng)負載率。上述參數(shù)下負載率是0.5/0.9約等于0.56平均隊列長度應(yīng)該在一個較低的數(shù)值。一旦模擬結(jié)果和粗略計算差很多優(yōu)先檢查隨機數(shù)參數(shù)。4.3 參數(shù)調(diào)整實驗從模擬看系統(tǒng)瓶頸做完基本實驗后我建議順手做幾組對照實驗這部分內(nèi)容放進實驗報告會非常有說服力。比如把窗口數(shù)從3改成2負載率變成0.5/0.6約等于0.83平均等待時間和平均隊列長度會明顯上升。再把窗口數(shù)改成4負載率降到0.42等待時間會大幅下降但窗口利用率也下降說明資源出現(xiàn)冗余。這就是離散事件模擬在現(xiàn)實中最常見的用途資源配置決策。銀行經(jīng)理不知道到底該開幾個窗口靠直覺拍板容易出錯把客戶到達率、服務(wù)率輸進模擬器跑一遍就能看到平均等待時間變化。雖然課程實驗只是模擬一個簡單銀行但方法論是可以直接遷移到機場值機柜臺、倉庫分揀線、服務(wù)器集群調(diào)度這些場景里的。5. 常見問題與調(diào)試技巧5.1 死循環(huán)和時間回退寫這個模擬最容易遇到的崩潰型問題是程序跑不完。原因往往不是有人忘了釋放內(nèi)存而是事件鏈表里出現(xiàn)了“時間回退”的事件。比如一個離開事件的時間是103.2而某個到達事件的時間也是103.2這沒關(guān)系但如果你生成的隨機服務(wù)時間是負數(shù)或者參數(shù)填錯導(dǎo)致下一個到達時間比當前時間還要小事件鏈表就會陷入不斷重復(fù)處理同一個事件的死循環(huán)。排查時最簡單的方法是打印每個事件的時間和類型。在while循環(huán)里加一行printf(%.2f type%d\n, ev-time, ev-type)觀察時間序列是否始終單調(diào)遞增。如果發(fā)現(xiàn)某次時間相同或變小立刻回頭看這次的事件是怎么生成的。我調(diào)試時曾經(jīng)遇到過一個很隱蔽的問題把平均到達間隔當成到達率用導(dǎo)致平均間隔變成0.5分鐘到達事件瘋狂生成程序活活跑了好幾分鐘還在繼續(xù)輸出客戶數(shù)。改成正確的參數(shù)后幾秒內(nèi)就出結(jié)果了。5.2 平均隊列長度算不準很多人在統(tǒng)計平均隊列長度時直接在每個事件處理完以后把隊列長度累加最后除以總事件數(shù)。這樣算出來可能和正確值差一大截。比如隊列長度5持續(xù)了100分鐘隊列長度0持續(xù)了10分鐘事件總數(shù)只有兩部算術(shù)平均是2.5但真實的平均隊列長度接近4.55。這個差距對實驗報告的影響很大。正確做法是時間加權(quán)平均。如果你在代碼里沒有維護lastTime和queueAccum可以這樣實現(xiàn)取出事件后先計算一個“面積貢獻”再更新lastTime為當前事件時間。我一開始犯錯就是因為把“每個事件的隊尾長度”當成了“時間段內(nèi)的代表值”想明白之后才發(fā)現(xiàn)原來只是乘法問題。實驗報告里寫上這個統(tǒng)計原理老師通常會認為你真正理解了離散事件模擬。5.3 隨機數(shù)種子與結(jié)果復(fù)現(xiàn)使用srand(time(NULL))會讓每次運行結(jié)果都不一樣。對實驗來說一個常見需求是“復(fù)現(xiàn)同一個bug”或“提交穩(wěn)定數(shù)據(jù)”這時期望保證每次運行結(jié)果一致。只需要把隨機種子改成固定值比如srand(2024)。固定種子后相同參數(shù)、相同代碼一定產(chǎn)生相同結(jié)果方便比較不同窗口數(shù)對結(jié)果的影響。另外rand()生成的隨機數(shù)質(zhì)量對大規(guī)模模擬有一定影響尤其是當你模擬百萬級客戶時低16位的隨機性可能會不夠。但對操作系統(tǒng)課程實驗來說標準庫已經(jīng)足夠。更講究一點的做法是使用自定義的隨機數(shù)生成器比如梅森旋轉(zhuǎn)算法或PCG。不過我不建議在課程實驗里額外引入復(fù)雜隨機庫因為老師要看的核心是模擬邏輯不是隨機數(shù)質(zhì)量。5.4 內(nèi)存釋放與大型模擬優(yōu)化思路事件節(jié)點和隊列節(jié)點都是malloc出來的如果處理完不free程序在小規(guī)模模擬中可能看不出來但如果模擬幾萬客戶內(nèi)存占用會持續(xù)增長。我的習慣是在popEvent之后、處理完事件后立即free在dequeue之后、使用完節(jié)點信息后立即free。這樣可以保證內(nèi)存使用量跟事件鏈表的當前長度相關(guān)而不是跟歷史事件總數(shù)相關(guān)。如果以后要做更大規(guī)模的模擬事件鏈表每次插入都是O(n)性能會隨著事件數(shù)量上升而下降。更好的方案是使用最小堆或優(yōu)先隊列來管理事件。C語言里手寫一個二叉堆并不難核心操作是sift-up和sift-down插入和取出都是O(logn)。在課程實驗階段先把鏈表版本跑通再考慮優(yōu)化不要一開始就追求復(fù)雜結(jié)構(gòu)否則調(diào)試難度會成倍上升。6. 寫在最后的調(diào)試心得這個實驗我前后改了三個版本。第一版把所有代碼堆在main函數(shù)里邏輯全揉成一團調(diào)試時看一眼就頭大。第二版拆成了函數(shù)但統(tǒng)計隊列長度時還在用算術(shù)平均數(shù)據(jù)怎么都不對。第三版才真正理解時間加權(quán)平均又把隨機數(shù)種子固定下來最后跑出的結(jié)果才算穩(wěn)定。我個人的體會是這類模擬題真正卡人的地方不是語法而是“事件推進”和“狀態(tài)統(tǒng)計”這兩個思維模型。只要想清楚每個事件的副作用是什么、每個統(tǒng)計量應(yīng)該怎么在時間軸上加權(quán)代碼只是順帶的事。最后再分享一個小技巧調(diào)試時把所有關(guān)鍵日志加個開關(guān)比如定義DEBUG宏時輸出每個事件的時間、類型、窗口編號、隊列長度發(fā)布最終版本時關(guān)掉這個宏。這種做法在大型軟件工程里叫日志分級放在課程實驗里也同樣實用。它可以幫助你把一次運行過程完整復(fù)盤而不是靠猜去定位bug。如果你正在做類似的模擬實驗可以照著這個思路先把數(shù)據(jù)結(jié)構(gòu)定下來再去填充事件處理的細節(jié)。之前沒有接觸過離散事件模擬也沒關(guān)系這個實驗就是讓你通過銀行排隊模型逐步建立事件驅(qū)動的直覺。等以后學到進程調(diào)度、報文轉(zhuǎn)發(fā)、連接池管理這些概念時你會發(fā)現(xiàn)它們跟銀行排隊的本質(zhì)問題一模一樣那時候你就能體會到這門實驗課真正的價值了。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
亚洲精品久久久久毛片A片拉屎 | 亚洲日韩青青草色月| 佐山爱中文字幕| 中文字幕第2页| 狠狠操夜夜| 熟女中出视频| 亚洲色婷婷久久91| 女人的久久久| 九九九九九精品| 欧美成va视频网站| 九九热精品视频六| 日本免费亚洲欧美| 情色五月天就去干| 四虎AV在线观看| 性高潮久久久久久久久久久| 五月丁香综合网| 欧美性Fer办公室秘书| 国产真乱mangent| 精品大久久| 亚洲色图欧美色图另类图片| 97一区二区蜜臀| 国产av激情无码久久天堂| 肉丝网站91| 另类天堂| 大香蕉2017| 久久鲁干| 91久久青青草原精品| 激情六月天| 老司机福利青青草| 九九热超碰97亚洲最新香蕉 | 九月丁香综合网| 99在线啪| 国产免费一区在线观看| 国产亚洲欧美每日在线| 国产精品久久久久久久免牛肉蒲团| 美女爽爽爽刺痛洞洞| 青草av在线| 91色图| 久久久久密| 热久久国产| 曰韩少妇无码| 色五月婷婷在线| 性色A∨91| 天美一二三在线观看Av| 爽极品影院| 蜜桃臀一区二区三区久久| 一级久久久久久久久久久| 青青草中出视频 | 欧美天天干| 国产少妇高潮| 欧日a| 国产激情视频一区区三区| 伊人网在线观看| 国产熟女乱论| 亚州免费啪啪视频| 久久久日本电影| 久久9精品视频| 极品销魂美女一区二区| 久久女女| 久久嫩草国产成人一区| 大香蕉综合在线| 青娱乐休闲视频在线观看| 丁香五月天久久精品视频一区二区三区| 久久riav中文精品| 特色a在线上| 伊人久久亚洲色欲综合网站 | 日本污ww视频网站| 亚洲无码免费看| 99AV| 自拍丝袜美腿人妻| 日本人体九九九九九九| 日本五十路熟女一区二区| 色香综合| 九热超碰| 老女人碰碰在线碰碰视频| 久久色情| 九九色图| 亚洲九月丁香| 国产av波波国产精品| 中日韩久久久免费看| 精品精品精品| 伊人五月天| 国内毛片欧美香蕉精品| 少妇三p| 东京热精品97综合网| av天堂影视中文在字幕在线中文| 日本性爱网址| 91人精品妻入口| 成人夜夜| 十八禁电影伊人网| WWW美腿丝袜香蕉中文| 久操高青| 天天日天天射天天干| 九九色综合| 成年女人18级毛片毛片免费观看| 看大黄色大片原件| 26uuu欧美日韩| 麻豆三极片| 亚洲熟女诱惑| 天堂男人网| 日韩欧美天堂| 加勒比性爱成人在线| 精品人妻夜夜草| 综合国产97| 久久久九九网站| 黄片色区软件| 日本一区二区不卡精品| 人人摸.人人色| 成全在线观看免费观看| 豆花视频操逼网址| 国产传媒午夜理伦精品| 强奸抽插av| 屁股久久久久久久| 91香蕉国产尤物视频| 992大香蕉| 亚洲图片第一页| 一本色道久久综合精品婷婷| 6080YYY午夜理论片在线观看| 欧美综合自拍| 日韩不卡毛片Av免费高清| 亚洲色图欧美视频| 女人爽到高潮潮喷18禁网站| 91站街按摩店老熟女熟女| 99久久久久久久久| av中文在线| 曰韩av中文字幕专区| 婷婷五月天色| 超碰爽人妻熟女Av| 97精品97| 男人天堂毛片| 综合97| 五月丁香黄色网| 欧美亚洲素人制服精品| JIZZJIZZ国产精品喷水| 操人妻逼91| 中文字幕第23区| 一二三四区操操Av| 啊啊啊爽爽| 日韩国产乱子伦App| 欧美一级做a爰片免费视频| 欧美成人黄网色网站| 黄色高清无码无码破解免费暗网| 99在线精品视频| 日韩欧美女优电影| 神马久久久久眼| 中文字幕在线观看网页| 天天爽入口| 夜夜国自区| 美女诱惑一区| 黄色人人| 亚洲色图 欧美热图 清纯唯美 另类自拍| 国产欧美美女免费观看视频| 一区二区三区四区五区久久久久久| 91熟女丨91老女人| 亚洲中文国际强奸字幕| 男人的天堂2010| 春色校园综合网| 亚洲丝袜制服国产91_国语字幕免费观看完整版下载第5集_ | 狠狠干综合| 亚洲码和欧洲精品激情系列| 麻豆av一区二区| 人人操,人人液| 中国女人内射6XXXXX| 超碰在线成人| 啊啊啊啊啊好舒服视频| 粉嫩av久久一区二区三区| 久久久久96| 麻豆成人AV| 国产精品久久久久亚洲av| 992这里有精品| 九九国产| 亚洲日韩美国人妻| 97激情97激情| 日本一级真人黄色性爱视频| 操逼操逼视频操逼| 噜噜噜久久亚洲精品色情| 国产精品伦理| 国模不卡| 熟女一区二区三区四区| 74成人在线| 欧美性特| 啊啊啊啊好疼| 丁香色婷婷| 人妻黑丝袜电影| 性无码专区2020| 欧美99热| 久久人妻少妇| 91成人精品在线播放| 久久精品视-一级做a爰片性色毛片16美国-中国女与老外在线精品 | 少妇高潮流水av免费| 国产成年女黄特黄| 96AV精品| 9久久久久| 亚洲欧洲无码bt精品合集| 婷色五月天| ...日韩成人一区二区三区字幕| 亚洲日韩一区电影| 久久久A∨| 免费精品AB| 久久成人午夜精品影院| 91AV老熟女视频| 91观看 国产白丝| 把腿张开老子CAO烂你| 国产午夜视频| 国产又色又粗又黄又爽| 欧美熟女丝袜| 天天做日日做天天欢。| 精品白丝一区| 天天拍天天操| 精品人妻一区二区三区四区不卡在| 操一区| 亚洲蜜臀精品视频久久| 国产懂色精品国产av| 天天日美女的B| 色官网色综合| 综合情欲网| 欧美99热| 日韩熟女精一区二区三区不卡| 婷婷成人五月天| 亚洲黄色| 青青草玖玖爱| 午夜男人一级A片7777| 97色操| 亚洲欧洲偷拍一区| 亚洲图片激情综合另类| 97超碰天天| 国产AV精久久| 新91视频.cmp| 欧美顶级黄片AAAAA在线免费看 | 97jingpin| 操逼片中文| 学生妹天天看| 激情综合久久| 日韩一级性爱无码| 98超碰日本| 99色色网| 萌白酱自拍视频| 精品一区二区三区四区外站| 日韩亚洲Av人人夜夜澡人人爽| 中文字幕精品三级久久久| 丁香啪啪| 久久 国产 无码| 亚洲性综合| 久操精品网| 中文字幕在线观| 天美av在线观看| 国产欧美一区二区| 一区二区三区精品久久| 欧美亚洲激情| 久久色AV线| 夂久色| 91在线精品一区二区三区| 色偷偷色偷偷欧美日韩| 午夜精品探花| 亚欧免费观看视频| 综合色久欲| 97色色网| 1禁看欧美黄片免费看| 精品人妻视频一区二区在线播放| 欧美在线视频99| 日本人妻丰满熟妇久久久久久| 日韩一级二级三级免费看完整版国语版| 4虎在线视频| 夂久色| 欧美日韩淫加| 久久久中文| 免費黃色視頻觀看一| 亚洲啪啪综合?v一区综合精品区| 97在线观看免费| ,国产乱人伦精品一区二区三区| 久久精品国产AV一区二区三区| 亚洲男人天堂2| 日韩熟女精品无码专区一区二区| 日本亚洲熟女视频| 少妇被c 黄 免费观看| 国产91精品福利在线| 丝袜综合网| 亚洲女人毛茸茸91| 日日黄色三级网站| 色婷婷基地| 思思热影视| 亚洲欧美国产va在线播放频| 日韩内| 国产成人精品午夜福利| 亚洲AV资源| 久草免费福利在线播放| 欧美爱三级日韩久久| 久久精品久| 深夜激情| 亚洲久久久久| 三上悠亚在线毛片91| 欧美偷拍| 97超碰色情| 欧美高清色| 亚洲中文字幕久久无码精品| 999久久久久久久久| 亚洲熟女一区| 国产精品不卡一区二区三区| 99色日| 日日夜夜国产综合| 欧美性暴力猛交XXXX| 中文字幕高清20页视频| 曰韩欧美国产传媒麻豆第一区| 黄片直播三级黄片两女一男| HEYZO高无码国产精品227| 丰满美女一级毛片在线播放| 亚洲av综合伊人久久| 国产精品久久久久久久电影渣男| 国产精品成久久久久午夜午夜| 2024年最新色情网站在线观看| 97在线看| 欧美日本不卡在线| 久久97| 国产精品久久久久无码AV会牛| 性爱乱伦网址| 91亚洲人电影| 久久仑合| 国产夜夜操| 刺激性视频黄页| 97九色人妻| 亚洲欧美天堂在线| 欧美中文字幕男人天堂久久精品| 97硬碰| 久久伦理视频久久大香蕉视频| 一本一首道人妻少妇免费久久| 久草精品一区 | 五月色综合| 91美腿丝袜在线观看| 亚欧中文字幕在线视频| 亚洲久草AV色图| 欧美色乱| 国产精品网址| 96精品在线| 亚射在线| 国产又长又大又粗的视频| 91高清欧美| 中文字幕欧美日韩三级| 中文精品一区二去| 欧美性爱18观看| 国产精品无码av嫩草| 婷婷丁香五月激情啪啪| 殴美,日韩国产伦精品| 青青草色情网站视频| 997色在线| 极品国产内射| 乱伦3P视频| 欧美乱色| 一摸二插三插| 可以在线观看AV的网站| 精品国产一区二区三区av在线资源| 免费人成毛片乱码| 黄色一区二区秘书性感| 亚洲AV无码天美传媒一区| 欧美精品偷拍| 亚洲日韩美女丝袜美腿人妻视频| 日本色色视频网站| 女人天堂AV五区在线| 91男人天堂网| 日韩欧洲操屄视频| 操99| 蜜桃午夜视频一区二区 | 亚洲精品1区| 超碰 欧美| 亚洲性爱电影| 97婷婷色| 人妻五十路在线| 国产高清亚洲日韩一区| 人人操av| 日本高清一本二本免费不卡| 伦激情人妻另类人妻| 五月色综合| 欧美日韩婷婷中文| 国产精品4p在线观看| 日本成人A片网站| 蜜臀av一区二区三区免费观看| 淫荡少妇免费| 操b网站亚洲无码| 麻豆成人影音在线| 亚州性色| 人人模人人看| 蜜乳AV一区| 黄片www.| 精品视频123区小说区| 国产久久一区二区三区野外在线| 草草影院在线视频| 开心五月激情网| 在线人成亚洲视频免费观看| 啪啪自拍九九综合| 国产高清亚洲日韩一区| 天天做日日做| 99亚洲天堂| oumeisetu综合| 中文字幕 av v| 91久久堂| 欧美人妖内射| 91福利网在线观看| 无码 有码 国产18p| 亚洲精品99999| 中文?日韩?免费?精品| AV网站高清无码在线观看| 日韩一区二区三区四区五区| 97五月天| 97干天天| 天美传媒婬乱在| 亚洲精品天堂久久A∨51成人漫| 国产综合操逼高清| 亚洲精品一二三四区| 亚洲精品黑丝| 亚洲黄色| 欧美色视频在线| 天天射,天天操,天天爽-国内精品一区二区三区-成人AV | 久久精品国产72国产精品福利| 97中文天堂| 丝袜色综合| 富女玩鸭子一级毛片| 日本性爱少妇| www.高清无码诱惑一区.com| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区 | 狠狠图片青青草| 欧美亚洲特P| 岛国毛片在线观看免费| 日韩无码嘿咻黑热久| 97伦乱| 丰满人妻-区二区三区| 99久久e免费热视| 99热综合| 蜜臀久久99精品久久久久久成人小说| a片自拍直播视频| 激情五月婷| 国产风韵犹存熟妇三区| 欧美A片中文字幕| 亚洲图片 91| 久超碰这里只有精品| 乱伦图av| 欧美性爱免费短视频| 丁香六月婷| 亚洲欧美综合网站| 中文字幕久热视频在线| 国产AV人人 夜夜人人澡| 久久久精品网站| 亚洲天堂 视频你懂的| 日韩 女同 综合| 久久草草亚洲蜜桃臀| 免费一级欧美片片线观看| 伦理弟一页| 天天影视综合色| 7777奇米影视久久| 夜夜高潮夜夜爽| 亚洲精品99999| 亚洲一区中文字幕一区| 操人妻逼91| 99精品国产户外露出| 中国亚洲呦女专区| 亚洲AV色图一区| 精品一区二区成人| 超碰一区二区| 中文字幕亚韩| 色97欧美| 顶级丝袜熟女一区二区三区| 久久九操在线观看| 亚洲一区二区精品福利| 亚欧美综合网。| 啪一啪免费视频| 龙兴卡官方查询| 无色无码| 97国产精品在线观看| 色色婷婷五月天| 青青青在线高清视频在线一二三四区 | 9久热| 97综合激情| 六月激情网| 久久内射| 97高清啪啪| 欧美精品成人在线播放| 亚洲精品 欧美精品| 日韩一性一交一A片俄罗斯| 1禁看欧美黄片免费看| 劲爆欧美人妖三区91| 人、人、摸,人、人、草| 久久精品一区二区三区蜜桃臀| 狠狠色婷婷7777久| 亚洲久久久久| 天天内射| 日本三级日本三级99| 91老司机视频| 操死我干死我| 一起草日韩| 欧洲色综合| 精品超碰中文在线| 香蕉国产精品麻豆亚洲欧美日韩| 欧美色日本| 国产精品久久久久久久久AV大片| 欧美BT 亚洲色图| 青青草在线视频人人想人人上| 欧美男人天堂| 噜噜噜亚洲精品| 国产一级黄色片在线观看| 欧美 色 亚洲| 高凊专区人人操| 成年人黄色视频免费| 激情欧美日韩女同久久| 26uuu国产免费观看| 久久二| 久久av色| 91日韩在线| 成人五级久久| 麻豆天天躁天天揉揉AV| 男人干美女| 99ri精品| 国产精品午夜福利亚洲综合网| 玖玖爱伊人玖玖爱| 人妻在线臀日韩| 亚洲人妻中文高清| 亚洲高清无毛一区二区| 久久婷婷苹果| 色综和网| 麻豆天美电影一区二区| 911粉嫩人妻| 91视频综合网| 67914在线兔费成人视频| 国产日韩精品suv| 91N综合网在线| 嗯阿好爽好紧| 久久色情| 精品国产www久久| 东京热大香蕉| 青青草国产一区二区三区| 97亚洲性爱| 日韩欧美国产高清视频| 无码精品久久久天天影视| 美女啊啊啊啊啊啊| 欧美日日人人天天| 欧洲与亚洲欧美精品中文字幕| 五月天大香蕉| 欧美不卡二区| 国产精品女生av| 极品肉射| 97se亚洲综合自| 拍拍拍拍大尺度黄色三级片拍拍拍拍拍照| 麻豆久久久久久久久丝袜| 成人 日韩欧美一区| 少妇干B| 日韩欧美成人午夜福利| 亚洲成a人v欧美综合天堂下载| 老司机福利社视频在线观看| 啊啊啊啊啊操我视频| 首页亚洲国产高跟丝袜诱惑视频 | 夜夜操91744565| 日本三级日本三级99| 无码天天操| 97精品国产| 97久久久久| 青青久久久| 91黑丝操| 亚洲极品| 久热精品在线| 欧美日本视频一区| 人妻少妇无码 | 5252色欧美在线| 欧美熟爽综合| 国产精品青青草| 日韩精品国产精品五码一区二区| 蜜乳成人AV| 精品无码欧美三级| 日韩免费a级毛片无码a∨| 日韩啪啪视频| 免费试看60秒| 操屄日韩| 欧美极品美女aaaaaa级黄片| av网站免费看| 精品一区二区三区免费古装毛片香港三级日本三级人妇 | 蜜臀在线免费观看在线免费观看| 97网址www| 天天欧美色| 亚洲熟妇自偷自拍另欧美| 国产免a费看黄片在线| 国产精品一区av在线| 欧洲亚洲国产综合在线| 国产精品99精品视频网站| 日日日日做夜夜夜夜无码| 无码精品久久| 台湾成人无码AV| 久久日韩精品一区二区| 久久神马| 国产绿奴视频在线观看| 夜嗨影院| 日本久久99| 激情综合五月| 成人综合视频久久| 天天爽爽爽爽| 欧洲精品在线播放| 乱色老一区二区三区的观看方式 | 超碰免费97| 国产无马在线| 精品无码一区二区三区| 色成人Www精品永久观看| 日亚韩精品视频二区三| 亚洲有码 视频一区| 伊人青青一区成人视频在线观看区| 热久久精品| 成人AV素股で擦久久| 97资源欧美| 嗯嗯啊啊好大好爽| 四虎在线视频| 国产在线激情| 亚洲中文字幕熟女| 天天看天天在线精品| 亚洲砖码砖专无区2023| 日韩一区二区高清在线观看的| 啪一啪免费视频| 五月婷婷五月天| 久久色一区| 91色堂| 国产热av| 91丝袜美女视频| 不卡av在线中文字幕| 国模精品娜娜一二三区| 97国产色综合| 北野未奈加勒比av| 91日韩国产欧美亚洲另类精盘州至城都| 欧美天天综合网| 超97在线精品视频| 九九毛片这里只有精品| 九九九热精品| 激情小说亚洲| 精品在线观看视频在线| 色一情一乱一乱一区91Av| 日本少妇va7777| 超碰天天去日穴| 国产亚洲日韩欧| 色婷婷丁香五月| 综合久久99亚洲人妻中文在线| 欧美性爱一区二区三区| 成全在线观看免费观看| 成人情色一区二区| 91n免费处女| 永久电影三级在线观看| 亚洲午夜福利视频| 国产盗摄美女如厕大神作品在线观看 | 亚洲影视第一页| 欧美成人免费在线观看| 精品久久久亚洲AV成人网站| 91高跟美女在线播放| 中文字幕一区二区无码成人| 国产精品爽爽va在线观看98| 99久久精品国产高潮| 亚洲色9| 日韩在线电影| 久久一级无码精品毛片6| 国内精品久久国产,www香蕉久久五月丁香,亚洲欧美日韩精品永久在线,日本精品一 | 奸色色 男人天堂 天天射| 97超色| 中文日本免费高清| 久久伊人大香蕉| 九九九九一级| 性爱乱伦视频免费| 成人熟女视频一区二区三区| 色约约一区=区三区| 少妇久久久久久| 99视频只有精品| 欧美爱国产综合、| 日本视频一区二区三区| 亚洲欧美日韩有码| 无码粉嫩白虎一线天b区| 亚洲国产一区二区三区四区国产| 亚爽爽爽爽爽爽爽爽| 日韩综合无码一区久久92| 国产又粗又又黄又猛| 91中文字幕在线观看| 日本污ww视频网站| 精品国产乱码久久久久久日本公司| 国产精品永久免费10000| 熟妇最新先锋一二三区| 91精品老女人| 曰韩精品九九无码| 欧美se综合| 五月婷婷激情综合| 亚州欧美另类| 黄片www.| 97伊人超碰| 免费综合亚洲中文| 久久9999| 亚洲国产欧美中文永久| 国内精品久9| 国产 日韩 另类 视频一区爱| 日本精品九九九| 国产成人免费观看在线视频| 91无摭挡| 亚洲国产一区二区三区四区国产| 久久中久文96| 久久性爱免费送| 一本久久久精品| 激情五月天色色网| 欧美日韩久久精品爱爱| 偷拍欧美激情| 国内亚洲高清无码| 九九精品美女高溯喷水| 国内偷拍精品一区二区| 一区二区三区四区姦女| 国产91啪| 久久后入制服| 久久99综合| 国产精品久久久久婷婷二区次| 成人婷婷丁香| 欧美性爱综合,免费| 国产精品欧美激在线| 国产精品视频麻豆入口| 91老熟女91老女人| 五月天成人综合| 亚洲欧美国产中文视频| 亚洲色91C| 日本三级韩三级99久久| 天天日夜干| 国产农村妇女精品1区二区| 91深夜夜| 亚洲欧美激情小说| 久久超碰久| 97超碰日韩| 91网站视频在线观看| 欧美黄片欧美黄片xxx| 91高潮喷水美女| 操婷婷逼| 2020久久免费视频| 伊人亚洲综合| 熟女丰满人妻一区| 激情抓乳插进去啪啪啪日韩 | 欧美日韩 强奸乱伦| 国产伊人精品在线| 青青草吊丝| 蜜乳av首页| 国产综合色精品在线观看| 欧洲与亚洲欧美精品中文字幕| 富女玩鸭子一级毛片| 色偷偷人人玩人人舔人人操人人摸人人爽| 日韩999| 亚洲熟女乱色一区二区三区| 色五月AV在线| 精品久久久久瑟瑟| 久久久 国产精品| 国产91av在线播放| 北野未奈加勒比av| 欧洲免费一区二| 日本三级韩三级99久久| 日本精品中文字幕视频| 中文字幕丝袜| 国产人妻一区二区三区欧美毛片| 婷婷色五月激情| 久久欲| 人妻出轨一区二区三区| 国产视频不卡在线观看| 亚洲成人黄色在线观看| 超碰色大香蕉| 国产一区二区三区中文字幕| 性开放中文AV高清无码免费看| 91老司机在线| 综合激情一一91| 九九久久久九九| 91大学精品激情戏| 国产操逼逼网| 国产v片在线免费观看| 丝袜色综合| 夜夜福利| 中文字幕一区二区三区蜜臀| 国产在线视视频有精品| 亚洲无码国产精品久久| 欧美色视| 91久久精品美女高潮喷水| 欧美日韩一干二干| 亚洲男人天堂2019| 日本午夜久久电影| 国产一区自拍欧美日韩| 91少妇| 久久99九九九九6666免费观看软件| 亚洲涩涩| 欧洲亚洲人妻无码中字久久三区四区 | 日韩欧美资源| 综合视频91| 自拍盗摄一区| 91东北熟女| 成人区人妻精品一| 色九九综合AV| 乱子伦一区二区三区国产精品| 美女大乳久久久久久久女人18| 欧美精品日韩一区二区| 日韩乱伦影音先锋| 成人无码电影在线观看网| 日韩免费中文字幕视频| 综合网 欧美| 亚洲在线91| 亚洲图片小说欧洲| 另类图片五月天| 久湿久久| 夜夜骑操视频| 国产第二页| 高清不卡 中文 人妻| 亚洲精品1区| 欧美成人国产精品| 国产精品天干天干综合网麻豆| 久久精品72| 久久婷婷在线观看视频| 天天影视色香色欲| 日本三级黄页| 97综合在线观看| 国产精品肉丝自拍| 熟女色图在线| 在线视频五十市| 日本不卡二三区| 国产成人主播| 97操在线| 人妻激情在线视频| 欧美日韩97在线| 亚洲的天堂网| 天天插天天插| 九九黄色网| 大香樵伊人网| 久久99国产综合精品女同| 色妹子A V| 亚洲天堂人妻一区二区| 日本97久久久精品| 久9久精品视频| 日韩精品系列| 亚洲清纯综合| 96精品久久久久久久久久| 大象AV在线| 五月天久久综合网| 伦伦成年午夜免费视频| a级成人毛片免费视频高清| 国产精品自产拍在线观看社区| 超碰人人妻| 91原创在线观看| 欧美少妇色综合| 麻豆区久久久久亚| 久久免费9| 福利视频香蕉免费一区二区在线| 特级特黄一级毛片免费| jizzjizz欧美| 熟女精品一区二区三区| 打av高清| 欧亚日韩综合精品国产| 欧美九一精品久久久熟妇| 春色综合网| 97九色| 久久亚洲精品成人av| 97国产超湿| 久久久久78| 超碰久超碰久| 日欧操屄| 日本在线激情一区二区三区| 天美av在线观看| 日本精品久久久久久久| 男人的天堂99| 91在线视频观看国产| 日韩免费性爱视频在线观看| 美女人妻色网站| 五月开心久久AV官网| 久伊人网78| 久久久精品91八戒| 天天干天天干天天干| 综合网~91综合网| 一本色道久久综合亚洲二区三区| 欧美性xxxxx狂欢| 97在线日韩中文字幕| 9Ⅰ超碰| 国产一区在线观看无码AV| 婷婷色导航| 日本精品88888888| 欧洲自拍第一页| 国产午夜福利专区综合| 久久香蕉影院| 欧洲亚洲天堂精品| 啊啊啊好多水| 人人天天干干| 美女啪欧美一区| 欧美 亚洲 另类 综合| 91亚洲网| 老司机深夜影院18未满| 欧美性爱一内片一区二区三区| 人妻蜜桃臀| 欧 美 自 拍 偷 拍| 亚洲人成色9999精品久久| 好爽免费视频,| 日本黄大片在线观看视频| 99操99| 亚州精品人妻一二三区| 免费αV在线视频| 大奶啊啊好爽| 99热国产精品| 成人麻豆av电影网站| 色999五月色| 碰人碰碰人人开房人肉| 欧美精品23| 久久精品欧美一区蜜桃| 亚洲交换| 一级特级aaaa毛片免费观看| 性性久久| 国产极品粉嫩馒头一线天av| 天天操天天干一区二区| 亚洲一区二区三区麻豆传媒| 欧美色综合| 日韩免费福利在线观看| 九九毛片这里只有精品| 97久久国产亚洲精品超碰热| 男人的天堂午夜av| 一区二区首页| 国产9区| 天天摸,夜夜摸| 一本大道青青| 色青青久久影视| 久久久久久久久久久久欧美日| 无码操逼视频一下| av操操不卡| 老司机福利青青草| 欧美视频在线第3页| 性一级黄色录像片网站导航| www.婷婷| 亚洲综合骚逼| 性爱视频无打码在线观看| 不卡九肏| 欧洲亚洲人妻无码高清久久三区四区| 日本一级二级三级网站| 亚洲自拍青操视频| 黄色免费网页无码| 亚洲欧美国产va在线| 综合伊人网12色| 日本天堂网| 日韩操啪| 色综合加勒比四四季| 91东京热男人的天堂| 欧美亚洲第1页| 无码人妻精品一区二区中文| 91色堂| 巨爆乳一区二区爆乳区| 大香蕉宅男伊人| 欧美黄色大片在线观看 | 蜜臀久久久| 午夜啪啪片| 中文字幕神马久久| 丰满岳乱妇一区二区三区| 中出后入| 久久男女激情视频网站| 97伊人超碰| 天堂中文资源在线bt| yazhouzaixian| 亚洲成人免费电影| 日韩AV噜噜噜一区二区三区四区 | 欧美色图小说综合| 啪啪综合网| 中文字幕无码不卡啪啪| 蜜臀少妇一区二区| 麻豆久久精品亚洲精品88| 欧美丝袜激情| 国内偷拍精品一区二区| 极品粉嫩少妇视频| 日欧操屄视频| 午夜亚洲| 精品久一区免费| av绯色| 久久久无码精品人妻二区| 殴美,日韩国产伦精品| 色综合V| 麻豆黄站| 天天肏美女| 久久久亚洲Av| 伊人宅男大香蕉 | 黑人精品成人一区二区三区| 我想要啊 啊 啊| 3571色综合一区二区二区| 羞涩视频| 五月开心久久AV官网| 久久HD| 99视频自拍区| 亚洲情色1区| 国产一进一出视频网站| 日韩欧美麻豆| 偷拍超碰| 免费看日本操逼视频| 富女玩鸭子一级毛片| 哑洲在线| 日韩一区二区熟女| 在线无码操| 欧美高清第一页| 中文字幕精品专区搜索结果91| 精品精品精品| 成人a大片在线观看| 大粗鳼巴久久久久| 亚洲欧洲无码97久久精品| 桃花色涩综合影院| 高潮的A片激情扒开一区| 国产精品久久久久999| 欧美有码激情视频一区二区三区| 超碰色男人操熟女| 自拍六区| 激情四射五月天| 亚洲日韩一区电影| 一区二区影院| 久久中文字幕在线观看| 久草男人天堂| 艹我哪美一区无码| 可以在线观看AV的网站| 超碰97男女| 日韩精品电影| 欧美婷婷五月天| 精品午夜福利国产一区二区在线观看 | 国产精品乱码久久久久| 操死我了嗯嗯嗯| 色综合婷婷| 美国一区二区三区视频| 日本一二三免费久久| 高潮综合网| 五月丁香激情综合| 久久五月天婷婷丁香中文字幕| 九九久久久| 欧美日韩亚洲高清不卡一区二区三区| www激情| 蜜桃视频成a人v在线| 91性高朝久久久久久久久| 色综合20p| 欧美综合自拍成人自拍第二十页| 成年人性爱日韩| 69一区二区三区| 超碰偷拍| 九区国产| 97色论| AV高清一区| 黄页18禁| 日本三级黄页| 久操网址| 操操吧亚洲乱伦视频| 91综合色噜噜| 欧美啪啪色吧在线| 日韩91网| 97操综合| 啊嗯嗯啊好大好爽| 久操网在线| 国产精品乱码久久久久久久久久久久| 国产欧美一区激情交| 中文操嬖片。| 一起草日韩| 欧美日韩 强奸乱伦| 国产亚洲福利第一页丝袜| 黄页网站成人免费| 天天综合~91| 四虎免费在线播放| 日韩精彩视频| 九九九只有精品| 国产精品九九| 伊人嫩草| 亚洲在钱| 好爽要喷了| 日韩无码人妻中字久久三区四区| 亚洲宗合网| 五月天加勒比啪| 少妇特黄一区二区三区| 亚洲熟女乱色一区二区三区久久久 | 91视频国品一二三区| 天天综合91在线| 操逼日韩无码| 97五月天| 午夜精品一区二区三区三上悠亚| AA丁香综合激情| 91老司机在线视频免费观看| 欧美亚洲国产自久久| 有码免费观看| 久久久久ab| 久操在97| 欧美一区二区三区大综合| 久久久久久久久久久久久久久乱码| 啊啊啊不要啊啊受不了了视频在线 | www.五月天| 久久久久久大| 国产精品久久久久久久久久久久久久久久| 亚洲日韩肥臀视频在线观看| 久久精品免费| 综合网久久| 欧美色图偷拍另类| 亚洲AO在线| 美腿丝袜高跟网免费视频免费视频| 欧美日韩一干二干| 死我十八禁| 91丝袜美腿网站| 91国产美女丝袜足交精品视频 | 香蕉欧美| 亚洲无线码欧洲精品区别| 久久五十路熟女人妻| www黄片免费看com| 九九九九久久久| 玖玖爱综合| 天天操熟妇| a级免费在线观看| 女同女同恋久久级三级| 日本性爱少妇| 小草三级久久观看| 97天天操天天干| 欧美综合色图片| 3PAV乱伦视频| 精品人妻一区| 久久久爆乳翘臀一线天伦理视频| 射欧美综合| 99热99re6国产在线播放| 人人妻人人爽一区二区三区| 九九精品无码专区免费| 久久久久亚洲Aⅴ无码| 97色在线观看| 久偷拍欧美日韩三区| 婷婷九月国产| 96久久久久| 黄色av片三级三级三级免费看| 亚洲熟女中文字幕在线| 久久偷拍人| 狠狠躁伊人中文字幕| 91久久九九精品国产综合| 岛国AB视频| 午夜在线播放| 高潮精品| 精品九九国产无码| 99热这里是精品| 啊啊啊好舒服好爽啊啊啊视频| 91亚洲最新在线| 亚洲精品一区二区精品| 红杏大香蕉| 精品综合久久久久久97| 97操| 免费看久久久性性| av一区二区三区四区五区久草臀| 日韩猛交| 久操视频资源站公开| 爆乳免费黄网站| 国产成人五月天丁香花| 天天操人人操狠狠插| 91色艳| 四季av一区二区凹凸精品小说 | 超碰95| 成人麻豆av电影网站| 亚州精人品大香蕉| 激情四射婷婷六月天| 一区二区三区美女超清| 亚洲 日韩 丝袜 熟女 变态| 超碰91在线| 亚洲综合校园春色| 日韩兔费看黄片| 激情看片网站| 欧美专利1区2区3区4区5区免费| 久操大香蕉超碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰 | 日本www操操操| 欧美中文狠| 国产精品乱码久久久久| 久久久久久久久久久免费精品| 亚洲人妻在线一区| 九九毛片这里只有精品| 天天天天干| 四虎视频在线观看| 亚洲天堂一区| 美女诱惑爱爱| 久艹99| 伊人丁香五月婷婷| 99精品网站| 明星性猛交ⅹxxx乱大交| www.99色| 一本一道久久综合久久| 99热99在线播放激情|