#include <stdio.h>#include <stdlib.h>#include <string.h>#include <semaphore.h>#include "Const.h"#include "UtilityFunc.h"#include "hashtable.h"#include "logmsg.h"#define SYSTEM_PAGE_SIZE 4096 #define DEFAULT_MAX_NUM 1
// 得到fprintf的系統緩衝方法#include <stdio.h>int main (int argc, char **argv){ FILE *fp; fp = fopen ("xxx", "w"); fprintf (fp, "foo"); printf ("%d\n", fp->_IO_buf_end - fp->_IO_buf_base);fclose(fp); return 0;}/////////////////////////
對DNS報文的理解 2009-07-01 18:14:43| 分類:電腦(資訊區) | 標籤:|字型大小大中小 訂閱本人是在windows 上使用nslookup工具來產生的dns通訊,見。-----------------------------dns查詢報文------------------------------------ 首先是一個dns查詢報文抓包: 0000: 00 14 78 b5 da ae 00 0c 6e ec 1e ae 08 00 45 00 ..x.....
struct UserData{ //UserData指標 UserData* pBefore; UserData* pAfter; //該UserData在資料區中的索引 int index; //增加一個標誌,標識該UserData是否被使用 bool used; void freeUserData() { used = false; } UserData(int index) : pBefore(NULL), pAfter(NULL), index(index) {
非root 使用者用root許可權執行程式的設定方法:假設需要執行的程式是 controller_test.用root使用者佈建步驟如下: 1, 設定所屬使用者與屬組為 root [root@localhost ~]# chown root.root controller_test 2, 對controller_test加入user的設定為s ,表示任何調用 controller_test程式的使用者,擁有擁有者的所有許可權。
#include "stdafx.h"#include <iostream>#include <vector>#include <algorithm>using namespace std;class A{public:A(){cout <<"A()"<<endl;}~A(){cout <<"~A()"<<endl;}void operator () (int &k){cout <<k<
struct tm * my_localtime_r(const time_t *srctime,struct tm *tm_time){ long int n32_Pass4year,n32_hpery; // 每個月的天數 非閏年 const static char Days[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; // 一年的小時數 const static int
#########D:\oraclexe\app\oracle\product\10.2.0\server\NETWORK\ADMINXE = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = PC2008072813klv)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = XE) )
# 計算話單中,tcp串連失敗率,及失敗串連的topN# 第29欄位為6時的話單為tcp串連# 第85欄位為1時表示串連失敗 # 第28欄位表示目的ip,即伺服器的ip, 按目的ip計算topN# $0表示整行, FS表示欄位分割符, NF表示目前記錄中的欄位數量,NR表示表示目前記錄的編號,awk將第一個記錄算作記錄號1awk -F '\t' '{ if ($29!=6) { next; } dip = $28; DIP[dip]++; if($8
#include<stdio.h>#define PRINT_DBG(debug, ...)\{\ if(debug) {\ fprintf(stderr, "%s %s [%d]: ", __FILE__, __FUNCTION__, __LINE__);\ fprintf(stderr, __VA_ARGS__);\ }\}#define PRINT_DBG1(tag,fmt,...)\ do {\ if(tag) {\ fprintf(stderr,
/*設定 open 標誌*/void setBlock(int fd, int flags){ int val; if ( (val = fcntl(fd, F_GETFL, 0)) < 0) { perror("fcntli get"); } val |= flags; if (fcntl(fd, F_SETFL, val) < 0) { perror("fcntl set"); }
bool canRead(string _path) { assert (!_path.empty()); struct stat st; if (stat(_path.c_str(), &st) == 0) { if (geteuid() == 0) // 程式的ueid 是 root使用者 ;root使用者,一定對檔案可讀可寫 return true; //*****不是root使用者時 ,與_path這個檔案的 user group other 依次判斷 else
一,cpu使用率計算代碼: #include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <sys/ioctl.h>#include <sys/socket.h>#include <netinet/in.h>#include <net/if.h>#include
首先,先鄙視一下自己,再強烈鄙視一下select 也許大家都知道select有一個FD_SETSIZE 1024的限制,在UNP 第一卷139頁(第二版)有這麼一句話: “標頭檔<sys/select.h>中定義的FD_SETSIZE常值是資料類型fd_set中的描述字總數,其值通常是1024。不過..." 反正我是被這句話給誤導了,單純的以為FD_SETSIZE
struct MessageQueue{ int* m_pArray; //訊息佇列長度 int m_iLength; //訊息佇列的讀下標 int m_iRead; //訊息佇列的寫下標 int m_iWrite; //多個寫操作時的互斥鎖 pthread_mutex_t m_mutex; //該訊息佇列的條件變數 pthread_cond_t m_cond;};MessageQueue* ip_create_messagequeue(int length){ MessageQueue*
定製自己的eversecOS 一:要求:利用CentOS-5.5-i386-bin-DVD.iso定製自己的發行版。 效能要求:安裝過程要求能選擇安裝公司的哪些組件,哪些RPM包,並且安裝過程中,可通過特定的介面來配置公司開發軟體的設定檔。 介面要求: 文字圖片需是公司的內容或logo。 二:完成的工作: 效能部分,配置好ks.cfg後,只能在text方式下可選安裝組件與RPM包。
關鍵在於寫指標不能追上讀指標,讓讀指標和寫指標保留一個位元組的距離來區分2個指標重疊的情況。如何保證安全執行緒的?其實就是某個線程在讀取或者寫入的時候取的某個時間點的指標來判斷時候符合條件,條件只能是越來越好,而不可能是越來越差。比如判斷能夠寫入的時候,空間肯定是越來越多的 //實際的緩衝區大小要多一個位元組struct RingBuffer{ //緩衝區頭指標 char* m_pBuffer; //緩衝區大小 int m_iBufferSize;
(1) 棧上變數必須初始化(2) 從堆上分配的記憶體必須初始化 (3) 棧上局部變數是否有大陣列變數,導致棧超出預設限制溢出 (4) 棧中是否有不合理的遞迴,導致棧超出預設限制溢出 (5) 必須對記憶體耗盡的情況進行處理(6) 釋放某個指標後,必須將該指標變數賦值為NULL, 避免野指標的出現(7) 禁止對同一指標delete或者free兩次或以上(8) 對數組操作,必須強制確保下標不會越界(9) 避免頻繁的不等長小記憶體申請和釋放(10) 記憶體申請和釋放必須配對,防止記憶體流失(11)
shutdown可以半關閉讀和寫端,關閉讀端,告訴核心不再接收資料,統統扔掉關閉寫端,只發送一個關閉握手,即一個FIN。shutdown只能關閉寫,或者讀,fd的關閉還必需要close來完成, 否則fd會一致增長close關閉fd的時候,如果該fd有計數,那麼要等計數為0後才能發送關閉握手包 單進程多執行緒fd的時候,需要自己構造fd計數器來實現fd的關閉
(1) 棧上變數必須初始化(2) 從堆上分配的記憶體必須初始化 (3) 棧上局部變數是否有大陣列變數,導致棧超出預設限制溢出 (4) 棧中是否有不合理的遞迴,導致棧超出預設限制溢出 (5) 必須對記憶體耗盡的情況進行處理. 注意new在記憶體不足時的處理方式(6) 釋放某個指標後,必須將該指標變數賦值為NULL, 避免野指標的出現(7) 禁止對同一指標delete或者free兩次或以上(8) 對數組操作,必須強制確保下標不會越界(9) 避免頻繁的不等長小記憶體申請和釋放(10)