Time of Update: 2018-12-05
fileno()函數功 能:把檔案流指標轉換成檔案描述符相關函數:open, fopen表標頭檔:#include <stdio.h>定義函數:int fileno(FILE *stream)函數說明:fileno()用來取得參數stream指定的檔案流所使用的檔案描述詞傳回值 :返回和stream檔案流對應的檔案描述符。如果失敗,返回-1。範例:#include <stdio.h>main(){ FILE *fp; int fd;
Time of Update: 2018-12-05
殭屍進程的產生和避免,以及wait,waitpid的使用2009-03-05 23:32 在fork()/execve()過程中,假設子進程結束時父進程仍存在,而父進程fork()之前既沒安裝SIGCHLD訊號處理函數調用waitpid()等待子進程結束,又沒有顯式忽略該訊號,則子進程成為殭屍進程,無法正常結束,此時即使是root身份kill
Time of Update: 2018-12-05
madvise() 函數madvise(addr_orig, bytes, MADV_NOSYNC);有關 madvise() 函數的詳細資料,請參見 madvise(3C) 手冊頁。問題原因: 調用mmap()時核心只是建立了邏輯地址到物理地址的映射表,並沒有映射任何資料到記憶體。 在你要訪問資料時核心會檢查資料所在分頁是否在記憶體,如果不在,則發出一次缺頁中斷,linux預設分頁為4K,可以想象讀一個將近2G的電影檔案要發生多少次中斷。解決辦法:將madvise()和mmap()
Time of Update: 2018-12-05
枚舉常量是枚舉類型中的值,即枚舉值。枚舉類型是一種使用者定義的類型,只有使用者在程式中定義它後才能被使用。使用者通常利用枚舉類型定義程式中需要使用的一組相關的符號常量。枚舉類型的定義格式為: enum <枚舉類型名> {<枚舉表>};
Time of Update: 2018-12-05
void QXmlQuery::setFocus ( const QXmlItem & item )Sets the focus to item. The focus is the set of items that the context item expression and path expressions navigate from. For example, in the expression p/span, the element that p evaluates to
Time of Update: 2018-12-05
gethostbyname和gethostbyaddr這兩個函數僅僅支援 IPv4,getaddrinfo函數能夠處理名字到地址以及服務到連接埠這兩種轉換,返回的是一個sockaddr結構的鏈表而不是一個地址清單。這些 sockaddr結構隨後可由套介面函數直接使用。如此以來,getaddrinfo函數把協議相關性安全隱藏在這個庫函數內部。應用程式只要處理由getaddrinfo函數填寫的套介面地址結構。該函數在 POSIX規範中定義了。#include <sys/types.h>#
Time of Update: 2018-12-05
void QObject::installEventFilter ( QObject * filterObj )Installs an event filter filterObj on this object. For example: monitoredObj->installEventFilter(filterObj);An event filter is an object that receives all events that are sent to this object.
Time of Update: 2018-12-05
檔案控制函數功能描述:根據檔案描述詞來操作檔案的特性。#include <fcntl.h>; int fcntl(int fd, int cmd); int fcntl(int fd, int cmd, long arg); int fcntl(int fd, int cmd, struct flock *lock); [描述]Fcntl()針對(檔案)描述符提供控制.參數fd 是被參數cmd操作的描述符.針對cmd的值,fcntl能夠接受第三個參數int arg。fcntl函數有5
Time of Update: 2018-12-05
1:資料管理技術的發展階段;1.1:人工管理階段;特點:1.1.1:資料不儲存在電腦內; 1.1.2:沒有專用的軟體對資料進行管理; 1.1.3:只有程式的概念,沒有檔案的概念; 1.1.4:資料面向程式; 1.2:檔案系統階段;特點:1.2.1:資料以檔案形式可長期儲存在外部儲存空間的磁碟上; 1.2.2:資料的邏輯結構和物理結構有了區別; 1.2.3:檔案組織已多樣化; 1.2.4:資料不再屬於特定的某一個程式;
Time of Update: 2018-12-05
vfork用於建立一個新進程,而該新進程的目的是exec一個新進程,vfork和fork一樣都建立一個子進程,但是它並不將父進程的地址空間完全複製到子進程中,因為子進程會立即調用exec,於是也就不會存放該地址空間。。不過在子進程中調用exec或exit之前,他在父進程的空間中運行。vfork和fork之間的另一個區別是:vfork保證子進程先運行,在她調用exec或exit之後父進程才可能被調度運行。如果在調用這兩個函數之前子進程依賴於父進程的進一步動作,則會導致死結。
Time of Update: 2018-12-05
一、位元組序定義位元組序,顧名思義位元組的順序,再多說兩句就是大於一個位元組類型的資料在記憶體中的存放順序(一個位元組的資料當然就無需談順序的問題了)。其實大部分人在實際的開發中都很少會直接和位元組序打交道。唯有在跨平台以及網路程式中位元組序才是一個應該被考慮的問題。在所有的介紹位元組序的文章中都會提到位元組序分為兩類:Big-Endian和Little-Endian。引用標準的Big-Endian和Little-Endian的定義如下:a)
Time of Update: 2018-12-05
AMF協議的最基本概念則是在XML的文本資料中瞭解到的。隨著對這個協議的學習,發現它的使用已經不再僅僅局限在一種方式中。在很多其他領域也有了它的展現。現在我們就來認識一下這個協議吧。AMF協議的曆史ActionMessage
Time of Update: 2018-12-05
1:前置處理器不允許訪問類的成員資料,這意味著前置處理器宏不能用作類的成員函數; 2:任何在類中定義的函數自動地成為內嵌函式,但也可以在非類的函數前面加上inline關鍵字使之成為內嵌函式。但為了使之有效,必須使函數體和聲明結合在一起,否則,編譯器將它作為普通函數對待; 3:一般應該把內聯定義在標頭檔裡,當編譯器看到這個定義時,它把函數類型(函數名加傳回值)和函數體放到符號表裡。 4:有時建立的類都是內聯成員函數時,可以把整個類放在標頭檔中;
Time of Update: 2018-12-05
1:任何類只有一個解構函式,且沒有任何參數;2:建構函式,解構函式和賦值運算子都不能被繼承;3:對於成員對象,建構函式調用的次序完全不受建構函式的初始設定式表中的次序影響,該次序是由成員對象在類中聲明的次序所決定的;4:對於在建構函式中調用一個虛函數的情況,被調用的只是這個函數的本地版本,也就是說虛機制在建構函式中不工作;5:純虛解構函式在標準C++中是合法的,但在使用時有一個額外的限制,必須為純虛解構函式提供一個函數體;6:在一個普通的成員函數中調用一個虛函數,則會使用晚捆綁機制來調用這個函數
Time of Update: 2018-12-05
將記憶體資料區塊寫入資料檔案實在是一個相當複雜的過程,在這個過程中,首先要保證安全。所謂安全,就是在寫的過程中,一旦發生執行個體崩潰,要有一套完整的機制能夠保證使用者已經提交的資料不會丟失;其次,在保證安全的基礎上,要儘可能地提高效率。眾所周知,I/O操作是最昂貴的操作,所以應該儘可能地將髒資料區塊收集到一定程度以後,再批量寫入磁碟中。直觀上最簡單的解決方案就是,每當使用者提交的時候就將所改變的記憶體資料區塊交給DBWn,由其寫入資料檔案。這樣的話,一定能夠保證提交的資料不會丟失。但是這種方式效
Time of Update: 2018-12-05
預設參數:1:在參數列表中,只有列表的後部參數才是可預設的,也就是說不能在一個預設參數後面又跟一個非預設的參數;2:一旦在一個函數調用中開始使用預設參數,那麼這個參數後面的所有參數都必須是預設的;3:預設參數只能放在函式宣告中,通常在一個標頭檔中。編譯器必須在使用該函數之前知道預設值。為了人們閱讀方便可以在函數定義處放上一些預設的注釋值。Void fn( int x /* = 0 */){} 佔位參數:預留位置參數在函式宣告中可以這樣運用:Void f(int x, int = 0 ,
Time of Update: 2018-12-05
實驗環境:1)基於vmwere虛擬機器實現2)本配置共有兩個測試節點,分別node1.a.com和node2.a.com,相的IP地址分別為172.16.4.11和172.16.4.22;3)類比實現的叢集服務是web服務;4)提供web服務的地址為172.16.4.1實驗拓撲圖:1,基礎環境設定:首先配置一台HA主機需要做的準備工作:1)因為叢集節點的工作的重要性,而且需要提供穩定的網路環境,這裡我們需要給節點配置固定的IP地址,編輯/etc/sysconfig/network-scripts
Time of Update: 2018-12-05
1. 定義簡單的常數:定義常量,便於修改(切不可在後面加上分號!) #define N 1000 等效於 const int N = 1000; 但略有不同,define只是簡單替換,而不是作為一個量來使用. 2. 定義簡單的函數:注意多使用括弧 #define MAX(x, y) ((x) > (y)) ? (x) : (y) 3. 定義單行宏:主要有以下三種用法.1) 前加##或後加##,將標記作為一個合法的標識符的一部分.注意,不是字串.多用於多行的宏定義中.例如: #define
Time of Update: 2018-12-05
assert宏的原型定義在<assert.h>中,其作用是如果它的條件為假,則終止程式執行,原型定義,ASSERT ()是一個偵錯工具時經常使用的宏,在程式運行時它計算括弧內的運算式,如果運算式為FALSE (0), 程式將報告錯誤,並終止執行。如果運算式不為0,則繼續執行後面的語句。這個宏通常原來判斷程式中是否出現了明顯非法的資料,如果出現了終止程式以免導致嚴重後果,同時也便於尋找錯誤:#include <assert.h>void assert( int
Time of Update: 2018-12-05
1:當一個類包含有純虛函數式,它便是個抽象類別;2:當繼承一個抽象類別時,必須實現所有的純虛函數,否則繼承的類也是一個抽象類別,建立一個純虛函數允許在介面中放置成員函數,而不一定要提供一段可能對這個函數毫無意義的代碼。同時,純虛函數要求繼承出的類對它提供一個定義; 3:純虛函數禁止對抽象的函數以傳值方式調用,這時為了防止對象切片。通過抽象類別,可以保證在向上類型轉換期間總是使用指標和引用。 4:可以對純虛函數提供定義;