Time of Update: 2017-01-19
前天沒事寫了一個防CC攻擊的Shell指令碼,沒想到這麼快就要用上了,原因是因為360網站衛士的緩衝黑名單突然無法過濾後台,導致WordPress無法登入!雖然,可以通過修改本地hosts檔案來解決這個問題,但是還是想暫時取消CDN加速和防護來測試下伺服器的效能最佳化及安全防護。前天寫的Shell指令碼是加入到crontab計劃任務執行的,每5分鐘執行一次,今天實際測試了下,可還是可以用的,但是感覺5分鐘時間有點過長,無法做到嚴密防護。於是稍微改進了下代碼,現在簡單的分享下!一、Shell代碼#
Time of Update: 2017-01-19
1 . 用同一個類的來源物件構造一個目標對象時,會調用拷貝建構函式來構造目標對象,如果沒有定義拷貝建構函式,將調用類的預設拷貝函數來構造目標對象。2 . 當一個函數的傳回值為一個類的對象時,如果在調用函數中,沒有定義一個對象來接收這個返回對象值,會用返回一個臨時對象儲存返回對象的值。在被調用函數結束時,這個臨時對象被銷毀。而當調用函數中有一個接受對象時,就將返回對象賦值給接收對象,這個返回對象在調用函數結束時調用解構函式。3.
Time of Update: 2017-01-19
函數對象與Lambdas你編寫代碼時,尤其是使用 STL 演算法時,可能會使用函數指標和函數對象來解決問題和執行計算。函數指標和函數對象各有利弊。例如,函數指標具有最低的文法開銷,但不保持範圍內的狀態,函數對象可保持狀態,但需要類定義的文法開銷。lambda 結合了函數指標和函數對象的優點並避免其缺點。lambda 與函數對象相似的是靈活並且可以保持狀態,但不同的是其簡潔的文法不需要顯式類定義。
Time of Update: 2017-01-19
bitmap是一個十分有用的結構。所謂的Bit-map就是用一個bit位來標記某個元素對應的Value, 而Key即是該元素。由於採用了Bit為單位來儲存資料,因此在儲存空間方面,可以大大節省。 適用範圍:可進行資料的快速尋找,判重,刪除,一般來說資料範圍是int的10倍以下基本原理及要點:使用bit數組來表示某些元素是否存在,比如8位電話號碼擴充:bloom filter可以看做是對bit-map的擴充問題執行個體:1)已知某個檔案內包含一些電話號碼,每個號碼為8位元字,統計不同號碼的個數。8
Time of Update: 2017-01-19
原型 extern char *strcat(char *dest,char *src); 用法 #include <string.h> 功能 把src所指字串添加到dest結尾處(覆蓋dest結尾處的'\0')並添加'\0'。 說明 src和dest所指記憶體地區不可以重疊且dest必須有足夠的空間來容納src的字串。 返回指向dest的指標。 舉例 char str4[] = "Hello world"; char str5[] = "
Time of Update: 2017-01-19
二元運算子下表顯示可重載的運算子的列表。可重新定義的二進位運算子 運算子 名稱 , 逗號 != 不相等 % 模數 %= 模數/賦值 & 按位“與” && 邏輯“與” &= 按位“與”/賦值
Time of Update: 2017-01-19
return 語句終止函數的執行並返回對調用函數的控制(或對作業系統的控制,如果您從 main 函數轉移控制)。緊接在調用之後在調用函數中恢複執行。文法return [expression];備忘expression 子句(如果存在)將轉換為函式宣告中指定的類型,就像正在執行初始化一樣。從該類型的運算式到 return 類型的函數的轉換會建立臨時對象。expression 子句的值將返回調用函數。如果省略該運算式,則函數的傳回值是不確定的。建構函式和解構函式以及類型為 void的函數無法在
Time of Update: 2017-01-19
1 什麼是C語言的隱式函式宣告在C語言中,函數在調用前不一定非要聲明。如果沒有聲明,那麼編譯器會自動按照一種隱式聲明的規則,為調用函數的C代碼產生彙編代碼。下面是一個例子:int main(int argc, char** argv){ double x = any_name_function(); return 0;}單純的編譯上述原始碼,並沒有任何報錯,只是在連結階段因為找不到名為any_name_function的函數體而報錯。[smstong@centos192 test]$
Time of Update: 2017-01-19
WNDCLASS是一個由系統支援的結構,用來儲存某一類視窗的資訊,如ClassStyle,訊息處理函數,Icon,Cursor,背景Brush等。也就是說,CreateWindow只是將某個WNDCLASS定義的表單變成執行個體。要得到某一視窗的WNDCLASS資料,可以用GetClassLong(); RegisterClass()就是在系統註冊某一類型的表單。也就是將你提供的WNDCLASS資料註冊為一個視窗類別,在WNDCLASS.lpszClassName中定義該WNDCLASS的標識
Time of Update: 2017-01-19
for迴圈語句重複執行語句,直到條件變為 false。文法for ( init-expression ; cond-expression ; loop-expression ) statement;備忘使用 for 語句可構建必須執行指定次數的迴圈。for 語句包括三個可選部分,如下表所示。for 迴圈元素下面的樣本將顯示使用 for 語句的不同方法。#include <iostream>using namespace std;int main() { // The
Time of Update: 2017-01-19
delete刪除運算子釋放記憶體塊。文法[::] delete cast-expression[::] delete [ ] cast-expression備忘cast-expression 參數必須是指向以前分配給使用 new 運算子建立的對象的記憶體塊的指標。 delete 運算子的結果類型為 void,因此它不傳回值。例如:CDialog* MyDialog = new CDialog;// use MyDialogdelete MyDialog;對指向不使用 new 分配的指標使用
Time of Update: 2017-01-19
逗號運算子:,允許對兩個語句進行分組,其中有一個是預期的。expression , expression備忘逗號運算子具有從左向右的關聯性。 由逗號分隔的兩個運算式將從左向右進行計算。 始終計算左運算元,並且在計算右運算元之前將完成所有副作用。在某些上下文(如函數參數列表)中,逗號可用作分隔字元。 不要將該逗號用作分隔字元與將其用作運算子的情況混淆;這兩種用法完全不同。考慮運算式e1 , e2該運算式的類型和值是 e2 的類型和值;e1 的計算結果將被丟棄。
Time of Update: 2017-01-19
new運算子用作從自由儲存為 type-name 的對象或對象數組分配記憶體,並將已適當分類的非零指標返回到對象。[::] new [placement] new-type-name [new-initializer][::] new [placement] ( type-name ) [new-initializer]備忘如果不成功,則 new 將返回零或引發異常;有關詳細資料,請參閱 new 和 delete 運算子。 通過編寫自訂異常處理常式並調用 _set_new_handler
Time of Update: 2017-01-19
最近一致致力於linux下的C開發,因為老大是某訊出來的。因此,使用的主要技術都是某訊的基本的後台架構思想。在這段時間,學習到了很多,然後佩服某訊的技術果然很厲害。因此,自我感覺,從頭開發我們這個項目,到現在,跟著我這個大牛級的老大學到了不少東西。目前在遊戲裡的公會系統,任務系統,郵件系統,地圖,商城,等等很多大大小小的系統,都是由我來負責了。下面是我最近總結的一點點東西而已,以後還會更多1、時間linux系統在時間上有比較多的東西。在遊戲裡,時間是一個非常重要的一個變數,涉及到前後端時間同步,
Time of Update: 2017-01-19
退出線程可以有四種方法:1.線程函數的return返回(最好這樣):其中用線程函數的return返回, 而終止線程是最安全的, 線上程函數return返回後, 會清理函數內申請的類對象, 即調用這些對象的解構函式. 然後會自動調用 _endthreadex()函數來清理 _beginthreadex(...)函數申請的資源(主要是建立的tiddata對象).2.調用 _endthreadex()函數 或 ExitThread()函數(最好不要):如果使用這兩種方法退出線程,
Time of Update: 2017-01-19
C++ 支援使用 new 和 delete 運算子動態分配和釋放對象。這些運算子為來自稱為“自由儲存”的池中的對象分配記憶體。 new 運算子調用特殊函數 operator new,delete 運算子調用特殊函數 operator delete。在 Visual C++ .NET 2002 中,標準 C++ 庫中的 new 功能將支援 C++ 標準中指定的行為,如果記憶體配置失敗,則會引發 std::bad_alloc 異常。如果記憶體配置失敗,C 運行庫的 new 函數也將引發
Time of Update: 2017-01-19
使用以下序列聲明指標。[storage-class-specifiers] [cv-qualifiers] type-specifiers [ms-modifier] declarator ;其中,任何有效指標聲明符均可用於 declarator。簡單指標聲明符的文法如下所示:* [cv-qualifiers] identifier [= expression]1.聲明說明符:可選儲存類說明符。 應用於要指向的對象的類型的可選 const 或 volatile
Time of Update: 2017-01-19
可以使用數組下標操作符 ([ ]) 訪問數組的各個元素。 如果在無下標運算式中使用一維數組,組名計算為指向該數組中的第一個元素的指標。// using_arrays.cppint main() { char chArray[10]; char *pch = chArray; // Evaluates to a pointer to the first element. char ch = chArray[0]; // Evaluates to the value of the first
Time of Update: 2017-01-19
C/C++對時間的操作也有許多值得大家注意的地方。最近,在技術群中有很多網友也多次問到過C++語言中對時間的操作、擷取和顯示等等的問題。下面,在這篇文章中,筆者將主要介紹在C/C++中時間和日期的使用方法.通過學習許多C/C++庫,你可以有很多操作、使用時間的方法。但在這之前你需要瞭解一些“時間”和“日期”的概念,主要有以下幾個:Coordinated Universal Time(UTC):國際標準時間,又稱為世界標準時間,也就是大家所熟知的格林威治標準時間(Greenwich Mean
Time of Update: 2017-01-19
C++怎樣產生隨機數:這裡要用到的是rand()函數, srand()函數,C++裡沒有內建的random(int number)函數。 (1) 如果你只要產生隨機數而不需要定義範圍的話,你只要用rand()就可以了:rand()會返回一隨機數值, 範圍在0至RAND_MAX 間。RAND_MAX值至少為32767。例如:複製代碼 代碼如下:#include<stdio.h>#include <iostream>複製代碼 代碼如下:int _tmain(int argc,