Time of Update: 2018-12-05
<Uinx 環境進階編程筆記> 以前經常遇到兩種I/O操作一類是f打頭的fopen, fread, fwrite一類是沒有f打頭的open, read, fwrite原來一個是UNIX I/O(在類Unix系統上實現),另一類是標準I/O(在很多系統上都有實現,包括windows) 使用標準I/O的好處因為在出UNIX的很多作業系統(包括Windows, linux)上都實現了此庫,所有有利於軟體的移植。 與UnixI/O的主要區別UNIX
Time of Update: 2018-12-05
#define N 10int lis[N+1][N+1];int *LIS(int *a){ for (int i=1; i<=N; i++) { lis[i][0]=1; lis[i][1]=a[i]; for (int j=1;j<i; j++) { if (a[i]>lis[j][lis[j][0]]) { lis[j][0]++
Time of Update: 2018-12-05
<Uinx 環境進階編程筆記>當執行程式時,main函數時如何被調用的?C程式總是從main函數開始執行。當核心在啟動C程式時,在調用main之前先調用一個特殊的啟動常式。可執行程式將次啟動常式指定為程式的起始地址 -- 這是由串連編輯程式設定的,而串連編輯程式則由C編譯器調用。啟動常式從核心取得命令列參數和環境變數,然後為調用main函數做好安排。 進程的終止1 正常終止 a) 從main返回 b)調用exit c)調用_exit exit先執行一些清理再進入核心。2
Time of Update: 2018-12-05
給定一個字串X,求它最長字串S,使得S=SR,SR為S的反序,即如果S=abc,則SR=cba例子:X=abccba,則輸出S=abccba遍曆X的子串,從最長子串開始,對每一個子串判斷其是否為反身字串,是則找到所需字串bool IsReverseString(const char *str, int s, int len){const char *start = str+s, *end=str+s+len-1;while ( start <= end) {if (*start==
Time of Update: 2018-12-05
最大堆即大根堆 -- 求前n小最小堆即小根堆 -- 求前n大比如求前n小,對於當前元素,和最大堆的堆頂元素(即堆最大值)比較,如果小於堆頂元素,則替換堆頂元素,並調整堆。這樣掃描一遍就可以得到最小的n個元素,效率非常高。 問題執行個體:100w個數中找最大的前100個數 1 INT_MIN初始化最小堆2 讀入一個數,如果大於堆頂元素,則替換堆頂元素,並調整堆 //base index 1#define LCHILD(i) (2*(i))#define RCHILD(i)
Time of Update: 2018-12-05
const對象並不是什麼都不可改變的class A {public: int x, y;};class B {public: A *t; int *c, d;};void foo(const B& ob){ //ob.t++; //不合法 //ob.d++; //不合法 ob.t->x++; //合法 *(ob.c) = 3; //合法}在如上代碼中const修飾的寓意相當於:A *t 轉變成 A* const t;int *c 轉變成
Time of Update: 2018-12-05
功能:1.鎖定螢幕,禁止其他人操作。2.添加了顯示圖片透明度,方便遊戲者掛機(設定透明度為0即顯示全部螢幕,但無法對電腦進行操作)3.添加了播放MP3的功能,這樣方便掛機後不用開啟其他播放器即可聽音樂。(待修改的地方:圖片不可變,有時間添加一個可載入圖片功能,這樣就可以讓使用者自己設定掛機圖片了。禁止使用Ctrl+Alt+Del功能使用的是修改註冊表,懶。。有時間研究一下其它方法).386 .model flat, stdcall option casemap
Time of Update: 2018-12-05
x64 Vista SSDT AddressXuefeng Chang(welfear@gmail.com)2009 Windows Vista x64版本相比於以前版本使用了不同的資料結構和不同的地址。 根據在ReactOS中找到的KTHREAD資訊中,包含了SSDT表的資訊。 SSDT in KTHREADtypedef struct _KTHREAD { DISPATCHER_HEADER Header; LIST_ENTRY MutantListHead; PVOID
Time of Update: 2018-12-05
<Uinx 環境進階編程筆記>1 常用的I/O開啟檔案int open( const char * pathname, int flags); int open( const char * pathname,int flags, mode_t mode);傳回值:檔案描述符,一個整數。標頭檔:#include<sys/types.h> #include<sys/stat.h> #include<fcntl.h>第一個參數:
Time of Update: 2018-12-05
相關的配置項是:選擇左下角的“編輯屬性”再選擇系統屬性xmpp.proxy.externalip這個屬性就是指定檔案代理的地址如果沒有這個屬性,則手動添加正確的設定是:設定為公用ip或一個公用網域名稱(公用:就是整個網際網路可見的,
Time of Update: 2018-12-05
題目:給定n個整數,求對應的哈夫曼樹的高度考慮建立哈弗曼樹的過程:每次從所有節點中選擇最小的兩個節點群組成新的節點,新節點的權值是兩個節點權值之和,並刪除這兩個節點。因此我們可以用一個數組來實現。1 將數組降序排序 (最小的兩個在末尾)2 將數組最後兩個元素合并為一個,其層數為原來兩個元素的最大層數加13 數組長度減一4 新數組再排序 -->第一步迴圈直到數組長度為1 struct Node {int value;int layer;};//降序排列int cmp(const void *
Time of Update: 2018-12-05
● 位元組序的定義位元組序,顧名思義位元組的順序,再多說兩句就是大於一個位元組的資料在記憶體中的存放順序(一個位元組的資料當然就無需談順序的問題)。在大部分的開發中我們不需要考慮位元組序的問題。唯有在跨平台以及網路程式應用中位元組序才是一個應該被考慮的問題。● 網路應用的位元組序網路位元組序是TCP/IP規定好的一種資料表示格式,它與具體的CPU類型、作業系統無關,從而可以保證資料在不同主機之間傳輸時能被正確解釋。網路位元組順序採用big
Time of Update: 2018-12-05
題目:1 列印如下形式的矩陣;n=5:1 2 9 10 254 3 8 11 245 6 7 12 2316 15 14 13 2217 18 19 20 21n=6:1 2 9 10 25 264 3 8 11 24 275 6 7 12 23 2816 15 14 13 22 2917 18 19 20 21 3036 35 34 33 32 31分析:可以看出有這樣的規律 --- 按right, down, left, down,
Time of Update: 2018-12-05
C=A*B以C來劃分,假設線程數為m,矩陣維度為n*n。那麼每個線程計算C的元素個數為n*n/m;/*矩陣並行計算C=A*B --- C(i,j)等於A的第i行乘以第j列*/#include <stdio.h>#include <time.h>#include <stdlib.h>#include <math.h>#include <windows.h>/* 產生n*n矩陣*/void GenerateMatrix(float
Time of Update: 2018-12-05
題目:知道一棵二叉樹的前序序列、中序系列,列印出它的後序系列下面演算法的時間複雜度:O(n^2) -- 最壞情況就是左單支樹/* Kown the preorder listing and the inorder listing of a tree, print it's postorder listing*/void PrintPostOrder(const char *pre, int s1, int e1, const char *in,
Time of Update: 2018-12-05
☛廣播包的概念廣播包通常為了如下兩個原因使用:1 一個應用程式希望在本網中找到一個資源,而應用程式對於該資源的地址又沒有任何先驗的知識。 2
Time of Update: 2018-12-05
《轉》以文檔的觀點來看,用戶端或伺服器發送的所有XML文本連綴在一起,從<stream>到</stream>構成了一個完整的XML文檔。其中的stream標籤就是所謂的XML Stream。在<stream>與</stream>中間的那些<message>...</message>這樣的XML元素就是所謂的XML Stanza(XML節)。XMPP核心協議通訊的基本模式就是先建立一個stream,然後協商一堆安全之類的東西,
Time of Update: 2018-12-05
xmppframework是XMPP協議的一個objective-c實現.要瞭解xmppframework,
Time of Update: 2018-12-05
1 項目成功的關鍵是在投資最少的時候找出錯誤。2 如果在給一個程式找個好名字時感到困難,往往是對這一子程式的功能還不夠清楚。3 編寫工作應該從抽象到具體。4 在確定程式是正確的之前,不要急於編譯。5 消除所有的編譯器指出的錯誤和提出警告的原因。6 應該在工作的每一個步驟檢查子程式。7 最可能被改動的部分:硬體依賴部分、輸入輸出部分、複雜的資料結構和商務規則部分。8 總有事情可做,在深入研究和理解之後,能夠改進任何解決方案,並且,在任何一種情況下,都能夠進一步理解解決方案。9
Time of Update: 2018-12-05
標頭檔: 調試開關在標頭檔中#ifndef __DEBUG_ZWY_H__#define __DEBUG_ZWY_H__#include <stdio.h>#include <stdarg.h>#define _DBG_#define _DBG_LEVEL_INFO_//define _DBG_ to open debug#ifdef _DBG_ #ifdef _DBG_LEVEL_INFO_ /* 如果定義了調試層級為INFO, 那麼同時開啟WARN,