Time of Update: 2018-12-04
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"><struts> <!-- 上傳檔案大小限制 --> <constant
Time of Update: 2018-12-04
在預設的方式下,也就是我們只輸入make命令。那麼,1、make會在目前的目錄下找名字叫“Makefile”或“makefile”的檔案。2、如果找到,它會找檔案中的第一個目標檔案(target),在上面的例子中,他會找到“edit”這個檔案,並把這個檔案作為最終的目標檔案。3、如果edit檔案不存在,或是edit所依賴的後面的.o檔案的檔案修改時間要比edit這個檔案新,那麼,他就會執行後面所定義的命令來產生edit這個檔案。4、如果edit所依賴的.o檔案也存在,那麼make會在當前檔案中找
Time of Update: 2018-12-04
當遊戲服務端啟動時,服務端會根據設定檔中的資訊,載入各個遊戲邏輯處理模組的動態連結程式庫,然後調用模組的DllCreate函數對模組進行初始化。 設定檔可以像下面這樣:ModuleCount = 30Module1 = battlesys Module2 = equipsysModule3 = friendsysModule4 = shopsysModule5 = skilllsys……
Time of Update: 2018-12-04
其實是傳統二分尋找的一點變形:需要找到數組中出現的第一個元素。比如數組元素是 1 2 2 2 3 4 5尋找2的話,返回數組下標為1,而不是2或者3 # include <stdio.h>int FirstBinSearch(int a[], int n, int key){int l = 0, r = n-1;int ret = -1;while( l <= r ){int m = ( l + r ) / 2;if( a[m] > key)r = m -
Time of Update: 2018-12-04
使用記憶體對應檔讀檔案的過程如下: (1)調用CreateFile函數開啟想要映射的檔案,得到檔案控制代碼hFile。 (2)調用CreateFileMapping函數,並傳入檔案控制代碼hFile,為該檔案建立一個記憶體映射核心對象,得到記憶體對應檔控制代碼hMap。 (3)調用MapViewOfFile函數映射整個檔案到記憶體。該函數返迴文件建立映射到記憶體後的記憶體位址。使用這個指向這個地址的指標就可以讀取檔案中的內容了。
Time of Update: 2018-12-04
物件導向多是一些低層次的抽象。比起人類發展了數萬年的數學、演算法,低級的多。以至於,號稱“可重用、可擴充、可維護、靈活性好”的物件導向編程多是寫一些網站、應用開發等早有人寫過無數遍的代碼。充滿創新的核心技術、即時技術、生物工程、人工智慧等,卻還是以面向過程話編程為主。
Time of Update: 2018-12-04
由於LUA中有 閉包 這個概念, 嵌套函數可以訪問外圍函數的變數(非局部變數);LUA中的數組迭代器於是可以這樣實現: local array = { "one", "two", "three"}function ipair( tbl ) local i = 0 return function() i = i + 1 if i > #tbl then return end return i, tbl[i]
Time of Update: 2018-12-04
TCP終止串連需要4個分節,簡稱四次握手。 首先要明確的概念是:當一對TCP sockets建立了串連,客戶和伺服器是對等的,沒有區別;TCP串連是雙工的,所以一條串連其實是“兩條單向的串連” 串連的終止:1. 主動方發出設定了FIN位的報文,表示主動終止從本地到遠端的單向串連;此時,主動方進入FIN_WAIT1狀態,意思就是它在等待遠端的FIN報文; 2. 遠端收到FIN後,會立即發送ACK;主動方收到ACK後,進入FIN
Time of Update: 2018-12-04
HKEY hKey;TCHAR szOriginalWallpaper[MAX_PATH] = {0};TCHAR szWallpaper[MAX_PATH] = {0};DWORD dwBufLen = MAX_PATH;RegOpenKeyEx(HKEY_CURRENT_USER,__TEXT("Control Panel/Desktop"),0,KEY_QUERY_VALUE,&hKey );RegQueryValueEx( hKey,__TEXT("OriginalWallpap
Time of Update: 2018-12-04
LUA的table結構是很強大的,能實現很多複雜的資料結構;這裡給出一個簡單的鏈表實現;我在學LUA程式設計第二版時寫的。1.建立順序單鏈表head = nillocal last = headfor i=1, 10 do local val = io.read() if not head then head = { next = nil, data = val } last = head else last.next = { next =
Time of Update: 2018-12-04
C/C++中記憶體泄露常見的有3種:1、malloc、realloc後忘記了free;new後忘記了delete;new []後忘記了delete[]。2、採用使用計數的方式管理記憶體,兩個使用計數指標相互指向,導致記憶體泄露。3、將分配且使用完的記憶體的放到了容器裡。其中,第3中記憶體泄露方式在Java、C#等自動釋放記憶體的語言中也存在。下面是第2種情況導致記憶體泄露的例子:ValgrindMemcheck.cpp#include <iostream>class A;class
Time of Update: 2018-12-04
今天無聊,想找下設計模式例子來看看,想起之前陳碩的一邊文章《學之者生,用之者死》,於是想起了ACE,網上下載很多資料,開始了ACE設計模式學習。今天就學一個最基礎的reactor模式。Bridge模式reactor模式使用了GOF的bridge橋接模式,關於bridge模式,簡短介紹如下:主要有四部分組成,Abstrator、RefinedAbstractor、Impletementor和ConcreteImpletementor四個類組成REACTOR架構
Time of Update: 2018-12-04
TCMalloc(Thread-Caching
Time of Update: 2018-12-04
近排玩起了protobuf,看了陳碩protobuf rpc和eventrpc rpc,寫點什麼下來,方便以後查看。google官方共用的一個協議編碼器。可以使用它來產生rpc協議。定義例子:package sudoku;message SudokuRequest { required string checkerboard = 1;}//請求包格式message SudokuResponse { optional bool solved = 1 [default=false];
Time of Update: 2018-12-04
本文是解讀ASIO之前的一碟小菜。。。ascent
Time of Update: 2018-12-04
#include <stdio.h>#include <stdlib.h>#include <time.h>#define N 100void Swap( int * a, int * b){int tmp = *a;*a = *b;*b = tmp;}void Input(int a[] , int k){srand(time(0));int i;for ( i = 0; i < N; ++i )a[i] = i;for ( i = 0; i
Time of Update: 2018-12-04
使用Struts2,很多人都知道怎麼用設定檔的形式實現檔案下載,但是這樣做,要寫設定檔確實麻煩,那有沒有更方便點的方法呢,有!使用註解@Annotation的方式就可以省去寫設定檔的步驟,在java代碼中的Action上加上“檔案下載”的註解即可,具體怎麼加呢!?我們來看一個例子吧,用例子說話勝過千言萬語。 @Results( { @Result(name = "download", type = "stream", params = { "contentType", "application/
Time of Update: 2018-12-04
請問這個程式的輸出:int func(int i,int n){ return (i<n && printf("%d/n",i)) && !func(i+1,n) || printf("%d/n",i);} 感覺就是考短路、遞迴;要知道||低於&&簡單分析:1.當i>=n, 列印i,函數退出;2.否則,列印i,遞迴調用;
Time of Update: 2018-12-04
由於資料結構和演算法 的重要性,筆者會在今後不定期推出資料結構和演算法的文章,以期讓更多的編程愛好者掌握資料結構和演算法,為自己的編程打好堅實的基礎! 這次推出的是演算法裡的經典題目——漢諾塔(也稱為河內塔)! 河內之塔(Towers
Time of Update: 2018-12-04
代碼閱讀——搜尋的魅力 聲明:此篇文章僅紀錄個人心得,這文章主要是針對剛剛拿到一份源碼時,對源碼完全不熟悉的情況下比較有用。 1.項目文檔拿到一份源碼時,趕緊看看相關目錄裡有沒有文檔,如果有全面的相關文檔介紹這個項目的話,看起代碼會輕鬆很多。即使只有少部分的文檔介紹這份也是有很大協助的。 2.Google&Baidu如果要閱讀的是一份開源的或者有很多人研究過的代碼,可以去搜尋相關的材料,或許會有預想不到的收穫,可能別人已經有過相關的分析了,如果能夠找到一些從系統的整體,系統的架構進行分析