freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于云協(xié)作平臺的客戶端設(shè)計與實現(xiàn)本科畢業(yè)論文(編輯修改稿)

2025-07-27 11:37 本頁面
 

【文章內(nèi)容簡介】 日志槽(LOG SINK):日志寫向的目標(biāo),它要定義日志被寫向什么地方,以及如何寫。 日志源:應(yīng)用程序?qū)懭罩緯r的入口,其實質(zhì)是一個logger對象的實例。 日志過濾器:決定日志記錄是否要被記錄的一組判斷。 日志格式化:決定日志記錄輸出的實際格式。 日志核心:維護者日志源、日志槽、日志過濾器等之間的關(guān)系的一個全局中的實體。主要在初始化logging library時用到。 (2)框架結(jié)構(gòu) Boost : Boost log的框架結(jié)構(gòu)A)應(yīng)用程序在圖的右側(cè),通過一個或多個logger實例發(fā)送日志消息。B)應(yīng)用程序也可以出現(xiàn)在左側(cè),那就是一個日志的顯示實例了。C)一個日志記錄的數(shù)據(jù)中會包括許多屬性。屬性基本上是一個函數(shù),它的返回值就是屬性值。比如時間不僅是一個函數(shù)(也是一個屬性)。D)有三種類型的屬性集:全局的,特定線程的,特定源的。前兩個是由logging core來維護的,所以不用再初始化。全局屬性集中的屬性被連接到所以的日志對象上。線程屬性集中的屬性會連接到把它注冊到屬性集時的那個線程。源屬性集由初始化日志的源來維護的,它會連接到一個特定的源上。當(dāng)一個源初始化日志對象的時候,它會從上述的三個屬性集的所有屬性中得到屬性值。這些值會在將來處理。如果在不同的屬性集中有相同的屬性名字的時候就會造成沖突,解決沖突的方法是全局屬性集的優(yōu)先級最低,源屬性集的優(yōu)先級最高。高優(yōu)先級的屬性會覆蓋低優(yōu)先級的屬性。E)當(dāng)組合屬性值的時候,logging core來決定一個屬性是否要被送到sink中,這就是過濾。有兩層過濾,首先應(yīng)用的是全局中過濾,全局過濾用來快速的過濾掉那些不需要的日志記錄。然后 就是sink指定的過濾了。每個sink都有單獨的過濾器。sink過濾器允許將一個日志記錄定向到一個指定的sink。F)如果一個日志記錄至少通過了一個sink的話,它就可以用了。這時候就是日志消息格式化的時候了。格式化完成的日志消息和屬性值一起被送到接收它們的sink中。G)如上圖所示,sink被分為前端和后端兩個部分。這是為了抽象sink的通用功能,如過濾和線程同步。前端由日志庫提供,用戶不大可能再去實現(xiàn)它。而后端 很可能是在日志庫的外面,它來實現(xiàn)對日志記錄的處理。如寫文件,發(fā)送到網(wǎng)絡(luò)等。日志庫提供了大部分通常用到的后端程序。 QT GUI簡介 QT GUI簡介和功能特點QT提供了設(shè)計師工具,可以很方便的使用鼠標(biāo)拖拽的方式繪制界面。(),其中含有一個自動生成的Ui_MainWindow類,這個類中核心的函數(shù)是setupUi,根據(jù)界面向?qū)У牟煌锩娼邮找粋€QWidget *參數(shù)或者QMainWindow *參數(shù)。這個函數(shù)會自動在傳入的QWidget或QMainWindow上根據(jù)設(shè)計師繪制的界面創(chuàng)建可視化控件。使用這個自動生成的類有兩種方式,一是在定義QWidget或QMainWindow時創(chuàng)建一個Ui_MainWindow類型的成員ui,(this),或使用C++特有的多繼承方式,定義子類的時候同時以Ui_MainWindow作為基類,在構(gòu)造函數(shù)中直接調(diào)用setupUi(this)。這時已經(jīng)可以在自定義部件子類中顯示繪制的界面了。要訪問繪制界面的可視化控件,根據(jù)上述兩種方式使用ui控件名稱或者控件名稱直接進行引用即可。 信號和槽在圖形界面編程中,很多時候我們希望一個可視對象發(fā)生某種變化時通知另一個或幾個對象,再一個地說,我們希望任何一類的對象能和其他對象進行通訊。例如,某 個數(shù)值顯示窗口負(fù)責(zé)顯示某個滾動條對象的當(dāng)前數(shù)值,當(dāng)滾動條對象的值發(fā)生變化時,我們希望數(shù)值顯示窗口能收到來自滾動條對象發(fā)送的“數(shù)值改變”的信號,從而改變自己的顯示數(shù)值。 對于類似以上的問題,較早的工具包使用“回調(diào)”的方式來實現(xiàn)?;卣{(diào)是指一個函數(shù)的指針,如果你希望一個處理函數(shù)同志你一些事件,你可以把另一個函數(shù)的指針傳遞給處理函數(shù)。處理函數(shù)在適當(dāng)?shù)臅r候會調(diào)用回調(diào)函數(shù)。 采用回調(diào)方式實現(xiàn)對象間的通訊有兩個主要缺點,首先回調(diào)函數(shù)不是類型安全的,我們不能確定處理函數(shù)使用了正確的參數(shù)來調(diào)用回調(diào)函數(shù),第二,回調(diào)函數(shù)和處理函數(shù)間的聯(lián)系非常緊密,因為處理函數(shù)必須知道要調(diào)用哪個回調(diào)函數(shù)。在QT開發(fā)環(huán)境中,實現(xiàn)對象間的通訊我們有一種稱為“信號和槽”的機制可以代替回調(diào)函數(shù)。信號和槽機制用于實現(xiàn)對象間的通訊,是QT的一個中心特性,恐怕也是QT與其它工具包最不同的地方了。 信號和槽機制就是:當(dāng)一個特定的事件發(fā)生時,一個或幾個被指定的信號就被發(fā)射,槽就是一個返回值為void的函數(shù),如果存在一個或幾個槽和該信號相連接,那在該信號被發(fā)射后,這個(些)槽(函數(shù))就會立刻被執(zhí)行。 信號和槽機制是類型安全的,一個信號的簽名必須與它的接收槽的簽名相匹配,這樣編譯器就可以幫助我們檢查類型是否匹配。信號和槽是很寬松的聯(lián)系在一起的,一個發(fā)射信號的對象不用考慮哪個槽會接收這個信號,接收信號的槽的所在對象也不知道要連接的信號是哪個對象發(fā)射的。QT的信號和槽機制可以保證如果你把一個信號和一個槽連接起來后,槽會在正確的時間使用信號的參數(shù)而被調(diào)用,信號和槽可以使用任何數(shù)量、類型的參數(shù)。 QT的窗口部件已經(jīng)有很多預(yù)定義的信號,也有很多預(yù)定義的槽,但我們總是通過繼承來加入我們自己的信號和自己的槽,這樣我們就可以處理感興趣的信號 了。凡是從QObject類或者它的某個子類繼承的所有類都可以包含信號和槽。當(dāng)某個事件發(fā)生后,被指定的信號就會被發(fā)射,它不知道也沒有必要知道是否有 槽連接了該信號,這就是信息封裝。 槽是可以用來接收信號的正常的對象的成員函數(shù),一個槽不知道它是否被其它信號連接??梢园岩粋€信號和一個槽進行單獨連接,這時槽會因為該信號被發(fā)射 而被執(zhí)行;也可以把幾個信號連接在同一個槽上,這樣任何一個信號被發(fā)射都會使得該槽被執(zhí)行;也可以把一個信號和多個槽連接在一起,這樣該信號一旦被發(fā)射,與之相連接的槽都會被馬上執(zhí)行,但執(zhí)行的順序不確定,也不可以指定;也可以把一個信號和另一個信號進行連接,這樣,只要第一個信號被發(fā)射,第二個信號立刻就被發(fā)射。 樣式表QT中可以靈活的使用層疊樣式表(CSS),其語法和css很相似。因為HTML CSS的靈活性,可以很方便的為QT界面設(shè)計自己需要的外觀。(1) 各子對象設(shè)置樣式表部件的對象名調(diào)用樣式表,如下:boBoxsetStyleSheet(QComboBox{border:1pxsolidgray。borderradius:3px。padding:1px18px1px3px。})。這樣單獨對該部件設(shè)置樣式表。需要注意的就是,當(dāng)后面再次使用setStyleSheet函數(shù)對boBox設(shè)置樣式表時,之前設(shè)置的樣式表就不起作用了,也即樣式被現(xiàn)在定義效果的取代了。如果想定義所有某一類控件(比如界面上所有的QComboBox)一個樣式,可以使用qApp進行設(shè)置。(2)使用qApp設(shè)置樣式表qApp是一個全局對象,使用其設(shè)置樣式表之后,部件就固定樣式了,當(dāng)然,后面使用某個子對象調(diào)用setStyleSheet函數(shù)時,會只改變函數(shù)中設(shè)置的樣式,其他的樣式不會發(fā)生改變。比如:qAppsetStyleSheet(QPushButton{border:2pxsolidblue。borderradius:6px。backgroundcolor:E3EAA5。minwidth:80px。}QComboBox{border:1pxsolidgray。borderradius:3px。padding:1px18px1px3px。}QLineEdit{border:1pxsolidgray。borderradius:5px。padding:08px。selectionbackgroundcolor:darkgray。})。這句話定義了按鈕、下拉框、行編輯框的樣式,界面中這三種部件都按照里面定義的樣式顯示。如果后面要對其中一個子部件的樣式進行修改,可以直接調(diào)用setStyleSheet,將需要的樣式覆蓋覆蓋掉之前的,其他的保留,例如pushButtonsetStyleSheet(QPushButton{backgroundcolor:red。})。這樣就只改變按鈕的背景色,邊框大小那些qApp定義好的還是不變。注意:當(dāng)很多部件布局在一起時,有時先使用qApp,然后在子部件中設(shè)置會出現(xiàn)意想不到的結(jié)果,這時只有不用qApp,直接對子部件進行樣式表設(shè)置,每次樣式表元素都要設(shè)置全,因為單獨設(shè)置會覆蓋掉之前的樣式表。 QtWebKitQtWebkit模塊提供了一個在QT中使用web browser的engine,這使得我們在QT的應(yīng)用程序中使用萬維網(wǎng)上的內(nèi)容變得很容易,而且對其網(wǎng)頁內(nèi)容的控制也可以通過native controls 實現(xiàn)。QtWebkit具有渲染HTML,XHTML和SVG 文檔,使用CSS排版,運行JavaScript等功能。在JavaScript 運行環(huán)境和Qt object model直接的橋接技術(shù)使得自定義的QObject可以在JavaScript代碼中使用。和Qt network module的整合使得網(wǎng)頁可以通過從服務(wù)器,本地文件系統(tǒng),甚至QT的資源系統(tǒng)中下載。另外為了提供渲染特性,可以使用HTML元素的contenteditable屬性,使HTML文檔可以被用戶編輯。為了使用Qtwebkit模塊中的類,我們需要在相關(guān)頭文件中加入 include QtWebKit,在工程的pro文件中添加 QT += webkit語句。QWebView主要用來查看網(wǎng)頁,一個QWebView的實例中有一個QWebPage。QWebPage可以訪問這個頁面的文檔結(jié)構(gòu),它主要描述如Frames,the navigation history, 和編輯內(nèi)容的the undo/redo stack。HTML文檔可以嵌套到一個frameset中個frame中。HTML一個獨立的 frame是通過QWebFrame類展示的。這個類中包含了到JS window object的bridge和用于刷新的QPainter。每一個QWebPage擁有一個QWebFrame作為其main frame,一個main frame可以包含多個child frame。每一個的Frame都有一個自己的JavaScript Context。QWebFrame::addToJavaScriptWindowObject()可以使Qt C++中的object從JavaScript函數(shù)中訪問。QWebFrame::evaluateJavaScript()可以使用戶在C++代碼中直接運行JavaScript代碼。一個HTML文檔中獨立的元素可以通過在同一個頁面中的DOM JavaScript 接口訪問。對應(yīng)的類是QWebElement??梢允褂肅SS選擇器通過QWebFrame39。sfindAllElements()和findFirstElement()函數(shù)獲取QWebElement對象。QWebSetting提供了對瀏覽器常用的各種屬性,和各種設(shè)置的配置。如:JavaScript enabled,plugin enabled等。通過其默認(rèn)設(shè)置可以顯示所有QWebPage實例的默認(rèn)配置。個別的屬性可以通過這個頁面的setting來設(shè)置。全局的Setting使用QWebSetting::globalSettings(),某個頁面的settings用QWebPage::settings()。QWebHsitory主要是用來存放QWebPage的訪問歷史記錄,并且提供對于導(dǎo)航到相關(guān)頁面的支持。QWebHistoryInterface提供了一個實現(xiàn)訪問歷史連接的接口。自從WebKit支持Netscape Plugin API, Qt的應(yīng)用程序可以顯示當(dāng)前平臺上可用的常見plugin。為了使plugin的支持性可用,用戶必須安裝對應(yīng)的plugin,并且當(dāng)前應(yīng)用程序的QWebSetting::PluginEnabled設(shè)置為可用。QNetworkAccessManager是一個可以發(fā)送和接收數(shù)據(jù)的異步API。它可以看做是post/put/get/head API。它也提供了對cookie和session的支持。3 系統(tǒng)需求分析3 系統(tǒng)需求分析云協(xié)作平臺的客戶端是整個云協(xié)作平臺與用戶交互的工具,是連接前端操作與后端處理的樞紐。由于客戶端是直接接觸用戶,就必須具有友好的操作界面,而且操作不能太復(fù)雜;操作遠端的軟硬件資源,數(shù)據(jù)在遠距離傳輸又必須保證數(shù)據(jù)的安全性;作為客戶端程序也必須保證其一定范圍的可擴展性。 用戶需求分析云協(xié)作平臺是在資源調(diào)度管理系統(tǒng)的基礎(chǔ)上,將加入集群中各個節(jié)點
點擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1