2011年5月19日 星期四

Ubuntu忘記登入密碼的解決方法

1. 重新啟動,按ESC鍵進入Boot Menu,選擇recovery mode(一般是第二個選項)
2. 在#號提示符下用cat /etc/shadow,看看用戶名
(用以上的方法,列了一大堆,但我知道自己的帳號,就不去看了)
3. 輸入passwd "用戶名"(引號要有的哦)
4. 輸入新的密碼(需再確認一次)
5. 重新啟動,用新密碼登錄,OK

****************************************
1. 重新啟動
2. 在grub prompt時按ESC鍵
3. 按e進入修改模式
4. 選取起始kernel的一行, 按e
5. 到最後一行, 輸入 rw init=/bin/bash
6. 按enter,再按 b 重新啟動電腦
7. 此時電腦會在不需密碼的狀態下住入root shell
8. 輸入passwd , 輸入新密碼
9. 輸入reboot, 重新啟動

function pointer

一層一層解開...
原式子表示 pf 是一個變數, 型態是一種function, 這個pf function接受的參數是一個int, 回傳的型態是一個function pointer, 這個回傳的functioni pointer接受的參數有二, int* 和 int, 其回傳型別則是int. 或者可以寫成 int (*)(int*, int) (*pf) (int).

例子:
// 定義回傳型別
typedef int (*returnFuntionType) (int*, int);

// 任意舉一個型別為 returnFuntionType 的 fun1為例
int fun1(int* a, int b) {
return a==0 ? b:b+(*a);
}

// 再舉一個跟 pf 同型別的 fun2(忽略參數)當例子
returnFuntionType fun2(int) {
return fun1;
}

// 測試的涵式(注意參數型別就是pf)
int fun3(int (*pf(int)) (int*,int))
{
int a(3), b(4);
returnFuntionType pfn = pf(0);
return pfn(&a, b);
}

int main()
{
int result = fun3(fun2); // 也就是說 fun2的確是跟 pf 同型

return result - 7; // OK! return 0
}

Netstat命令用法

Netstat命令用法:

  命令格式:Netstat -a -e -n -o -s

  -a 表示顯示所有活動的TCP連接以及PC監聽的TCP和UDPPort。

  -e 表示顯示乙太網發送和接收的位元組數、資料包數等。

  -n 表示只以數位形式顯示所有活動的TCP連接的位址和Port號。

  -o 表示顯示活動的TCP連接并包括每個連接的進程ID(PID)。

  -s 表示按協定顯示各種連接的統計資訊,包括Port號。

16進制轉ASCII 和 ASCII 轉16進制

int Ascii2Hex(const char hex,char ascii) 16進制轉ASCII

{
int len = strlen(hex), tlen, i, cnt;

for (i = 0, cnt = 0, tlen = 0; ilen; i++)
{
char c = toupper(hex[i]);

if ((c='0'&& c='9') (c='A'&& c='F'))
{
BYTE t = (c = 'A') c - 'A' + 10 c - '0';

if (cnt)
ascii[tlen++] += t, cnt = 0;
else
ascii[tlen] = t 4, cnt = 1;
}
}

return tlen;
}

int Ascii2Hex(char ascii, char hex) ASCII 轉16進制

{
int i, len = strlen(ascii);
char chHex[] = 0123456789ABCDEF;

for (i = 0; ilen; i++)
{
hex[i3] = chHex[((BYTE)ascii[i]) 4];
hex[i3 +1] = chHex[((BYTE)ascii[i]) & 0xf];
hex[i3 +2] = ' ';
}

hex[len 3] = '0';

return len 3;
}