對(duì)CGI不甚了解,看完后有些概念,謝謝!
呵,客氣!
輸入中文亂碼的問(wèn)題,有可能是和字符集設(shè)置有關(guān),具體原因我也沒(méi)碰見(jiàn)過(guò)。
我試了,我這是可以輸入中文,而且顯示也不是亂碼的。
現(xiàn)在qq版本對(duì)鍵盤(pán)輸入加鎖了,有兩個(gè)dll插件,防止輸入密碼時(shí)被截獲,這個(gè)方式已經(jīng)不能傳輸密碼進(jìn)去了
誰(shuí)平時(shí)都關(guān)注這些資訊!?cnBeta?USENIX Security 2008?
re: Base64編碼解碼 浪跡天涯 2008-07-02 09:14
mark 謝謝樓主整理出來(lái)!
re: libcurl使用心得 浪跡天涯 2008-06-28 16:00
有用這個(gè)寫(xiě)爬蟲(chóng)的
re: 做了一個(gè)XML解釋器 浪跡天涯 2008-06-20 09:12
mark 學(xué)習(xí)學(xué)習(xí)
變量的初始化是一個(gè)很容易疏忽的問(wèn)題
re: C/C++工程師 浪跡天涯 2008-03-11 14:05
你好 請(qǐng)問(wèn)公司具體地址在哪?薪資待遇?
Fox兄,請(qǐng)問(wèn)貴公司是在北京嗎?是做游戲開(kāi)發(fā)的吧?
re: 再談sizeof()的問(wèn)題 浪跡天涯 2008-03-05 08:30
@瞇著眼的貓
很感謝瞇著眼的貓 解釋的很詳細(xì)!
我先前以為對(duì)sizeof()理解的很透徹,但遇到這個(gè)union一開(kāi)始沒(méi)有理解透徹,直到在機(jī)器上跑一遍以后,才理解清楚。
re: 再談sizeof()的問(wèn)題 浪跡天涯 2008-03-03 08:44
空間還有毒嗎?我什么東西都沒(méi)放啊!
re: 再談sizeof()的問(wèn)題 浪跡天涯 2008-03-01 08:52
沒(méi)有掛木馬,是計(jì)數(shù)器卡著了@a
re: 再談sizeof()的問(wèn)題 浪跡天涯 2008-03-01 08:42
我的意思不是說(shuō)sizeof()函數(shù)的問(wèn)題。
我本意也并不是討論各個(gè)編譯器的規(guī)則。
我是想探討sizeof()求結(jié)構(gòu)struct,union時(shí)的規(guī)則。
很不厚道,有人在機(jī)器上跑了一趟,不過(guò)依然謝謝。
union A:
{
int a[5]; //20
char b; //1
double c; //8
}我想的是union中變量共用內(nèi)存,應(yīng)以最長(zhǎng)的為準(zhǔn),那就是20。可實(shí)際不然,sizeof(A)=24,后來(lái)一想應(yīng)該是必須考慮A中各變量的默認(rèn)內(nèi)存對(duì)齊方式,必須以最長(zhǎng)的double 8字節(jié)對(duì)齊,故應(yīng)該是sizeof(A)=24。
關(guān)于sizeof(B)下篇再續(xù),也希望大家多探討探討,寫(xiě)下你的想法!
re: 單鏈表逆序輸出 浪跡天涯 2008-02-29 17:08
面試時(shí) 切記使用傻傻的方法
我覺(jué)得遞歸 可能是最先想到的
第一張方法也很巧妙 已經(jīng)回答的很好了
re: 這樣的辭職報(bào)告感人嗎? 浪跡天涯 2008-02-01 15:17
至今無(wú)房無(wú)車(chē)...居無(wú)定所
網(wǎng)上不是說(shuō)在已安裝vc的機(jī)器上不會(huì)出問(wèn)題,只在沒(méi)有安裝過(guò)vc的機(jī)器上才會(huì)出問(wèn)題。如果是這樣,我的理解是CFileDialog在這兩種環(huán)境下的處理不同,一種直接調(diào)用,一種基于COM組件
斷點(diǎn)無(wú)法跟進(jìn),彈出“沒(méi)有可用于當(dāng)前位置的源代碼”時(shí),有時(shí)候把這個(gè)函數(shù)刪除了,然后重新添加一次就可以解決。
re: 關(guān)于Fedora二三事 浪跡天涯 2008-01-29 09:07
Fedora6 Fedora8 Ubuntu7.04 RedHat AS4都用過(guò),感覺(jué)Fedora8界面做到很漂亮,但更新源少;Ubuntu更新安裝軟件很方便。都只是用用,沒(méi)有太多的其它經(jīng)驗(yàn)。
思想禁錮了,要想有什麼創(chuàng)造那是很難的,這就是我們國(guó)家的教育現(xiàn)實(shí)。
你的#define 和我們的沒(méi)有什么區(qū)別,我們的也是這么實(shí)現(xiàn)的,你可以看我們的大端小端交換代碼。
re: msdn也有錯(cuò)? 浪跡天涯 2008-01-28 17:31
可以參考《Effective STL》
條款3:使容器里對(duì)象的拷貝操作輕量而正確
容器容納了對(duì)象,但不是你給它們的那個(gè)對(duì)象。此外,當(dāng)你從容器中獲取一個(gè)對(duì)象時(shí),你所得到的對(duì)象不是容器里的那個(gè)對(duì)象。取而代之的是,當(dāng)你向容器中添加一個(gè)對(duì)象(比如通過(guò)insert或push_back等),進(jìn)入容器的是你指定的對(duì)象的拷貝。拷進(jìn)去,拷出來(lái)。這就是STL的方式。
.........
公司比較小氣,我們項(xiàng)目組聯(lián)系過(guò)一二手IBM RS/6000機(jī)器,好像也就一兩萬(wàn)塊錢(qián),但是由于公司覺(jué)得這只是臨時(shí)的一個(gè)項(xiàng)目,今后沒(méi)有這方面的需求,所以不肯出手。所以當(dāng)時(shí)的計(jì)劃就是首先把Unix系統(tǒng)完善后,然后集中對(duì)網(wǎng)絡(luò)通信模塊的數(shù)據(jù)進(jìn)行大小端調(diào)整。整個(gè)實(shí)施過(guò)程,遇到的問(wèn)題倒是不大,項(xiàng)目進(jìn)展的還算順利。
re: 這樣的辭職報(bào)告感人嗎? 浪跡天涯 2008-01-25 12:02
新勞動(dòng)法也是今年剛實(shí)行的,而且具體會(huì)產(chǎn)生什么影響還不得而知。先前也查過(guò)是否提前一個(gè)月告知公司,就不算違約,無(wú)需繳納任何違約金的問(wèn)題,但是網(wǎng)上也沒(méi)有哪位能給出十分準(zhǔn)確的答案,哪位法律大人來(lái)解釋解釋?
我的理解是,只要公司無(wú)法出具對(duì)你進(jìn)行過(guò)任何的培訓(xùn)記錄,沒(méi)有享受公司的額外出資培訓(xùn)等情況,提前一個(gè)月打報(bào)告,那么一個(gè)月后如果公司還不放你,完全可以向勞動(dòng)保障部門(mén)申請(qǐng)仲裁。
我發(fā)這篇文章的本意并不是討論勞動(dòng)法等問(wèn)題,其實(shí)只是到年末了,感嘆為了一張火車(chē)票發(fā)愁的無(wú)奈...游子苦 游子愁啊!
re: 這樣的辭職報(bào)告感人嗎? 浪跡天涯 2008-01-25 10:39
說(shuō)的輕巧!合同未到期,手頭又有沒(méi)完沒(méi)了的項(xiàng)目,我看你怎么走?
呵,好久以前就遇到過(guò)這個(gè)問(wèn)題,將解決方法發(fā)到MSN Space上了。MSN Space速度太慢,但是每天搜索這個(gè)問(wèn)題的人還很多,所以就發(fā)到這個(gè)CPP Blog上來(lái)了,希望能給大家一個(gè)參考!
re: CMap詳解 浪跡天涯 2008-01-24 15:47
以下是實(shí)現(xiàn)忽略大小寫(xiě)的HashKey函數(shù)以及KeyCompare函數(shù):
// 實(shí)現(xiàn)忽略大小寫(xiě)的
template<>
inline bool HS_HashKey<char*>::KeyCompare( char* const&key1, char* const&key2)
{
return stricmp(key1, key2) == 0;
}
template<>
inline unsigned int HS_HashKey<char*>::KeyHash( char* const&lkey)
{
unsigned int nHash = 0;
const char* key = lkey;
while (*key)
{
if(*key >= 'A' && *key <= 'Z')
{
nHash = (nHash<<5) + nHash + *key++;
nHash += ('a' - 'A');
}
else
nHash = (nHash<<5) + nHash + *key++;
}
return nHash;
}
re: C++嵌套類 浪跡天涯 2008-01-24 12:38
什么也看不見(jiàn)啊!
經(jīng)過(guò)仔細(xì)分析,發(fā)現(xiàn)CListCtrl處理過(guò)程是正確的,之所以造成size()不正確的原因,是因?yàn)?m_buffer 相鄰近的變量數(shù)組越界破壞了這塊內(nèi)存區(qū)域,因此造成size()不正確,數(shù)據(jù)錯(cuò)誤的情況。經(jīng)過(guò)修正,問(wèn)題已然解決!
那么既然統(tǒng)一了編碼,如何兼容原先各國(guó)的文字編碼呢?
這個(gè)時(shí)候就需要codepage了。
什么是codepage?codepage就是各國(guó)的文字編碼和Unicode之間的映射表。
比如簡(jiǎn)體中文和Unicode的映射表就是CP936,點(diǎn)這里查看官方的映射表。
以下是幾個(gè)常用的codepage,相應(yīng)的修改上面的地址的數(shù)字即可。
codepage=936 簡(jiǎn)體中文GBK
codepage=950 繁體中文BIG5
codepage=437 美國(guó)/加拿大英語(yǔ)
codepage=932 日文
codepage=949 韓文
codepage=866 俄文
codepage=65001 Unicode UFT-8
最后一個(gè)65001,據(jù)個(gè)人理解,應(yīng)該只是一個(gè)虛擬的映射表,實(shí)際只是一個(gè)算法而已。
從936中隨意取一行,例如:
0x9993 0x6ABD #CJK UNIFIED IDEOGRAPH
前面的編碼是GBK的編碼,后面的是Unicode。
va_start() va_end()函數(shù)應(yīng)用
1:當(dāng)無(wú)法列出傳遞函數(shù)的所有實(shí)參的類型和數(shù)目時(shí),可用省略號(hào)指定參數(shù)表
void foo(...);
void foo(parm_list,...);
2:函數(shù)參數(shù)的傳遞原理
函數(shù)參數(shù)是以數(shù)據(jù)結(jié)構(gòu):棧的形式存取,從右至左入棧.eg:
#include <iostream>
void fun(int a, ...)
{
int *temp = &a;
temp++;
for (int i = 0; i < a; ++i)
{
cout << *temp << endl;
temp++;
}
}
int main()
{
int a = 1;
int b = 2;
int c = 3;
int d = 4;
fun(4, a, b, c, d);
system("pause");
return 0;
}
Output::
1
2
3
4
3:獲取省略號(hào)指定的參數(shù)
在函數(shù)體中聲明一個(gè)va_list,然后用va_start函數(shù)來(lái)獲取參數(shù)列表中的參數(shù),使用完畢后調(diào)用va_end()結(jié)束。像這段代碼:
void TestFun(char* pszDest, int DestLen, const char* pszFormat, ...)
{
va_list args;
va_start(args, pszFormat);
_vsnprintf(pszDest, DestLen, pszFormat, args);
va_end(args);
}
4.va_start使argp指向第一個(gè)可選參數(shù)。va_arg返回參數(shù)列表中的當(dāng)前參數(shù)并使argp指向參數(shù)列表中的下一個(gè)參數(shù)。va_end把a(bǔ)rgp指針清為NULL。函數(shù)體內(nèi)可以多次遍歷這些參數(shù),但是都必須以va_start開(kāi)始,并以va_end結(jié)尾。
1).演示如何使用參數(shù)個(gè)數(shù)可變的函數(shù),采用ANSI標(biāo)準(zhǔn)形式
#include 〈stdio.h〉
#include 〈string.h〉
#include 〈stdarg.h〉
/*函數(shù)原型聲明,至少需要一個(gè)確定的參數(shù),注意括號(hào)內(nèi)的省略號(hào)*/
int demo( char, ... );
void main( void )
{
demo("DEMO", "This", "is", "a", "demo!", "");
}
/*ANSI標(biāo)準(zhǔn)形式的聲明方式,括號(hào)內(nèi)的省略號(hào)表示可選參數(shù)*/
int demo( char msg, ... )
{
/*定義保存函數(shù)參數(shù)的結(jié)構(gòu)*/
va_list argp;
int argno = 0;
char para;
/*argp指向傳入的第一個(gè)可選參數(shù),msg是最后一個(gè)確定的參數(shù)*/
va_start( argp, msg );
while (1)
{
para = va_arg( argp, char);
if ( strcmp( para, "") == 0 )
break;
printf("Parameter #%d is: %s\n", argno, para);
argno++;
}
va_end( argp );
/*將argp置為NULL*/
return 0;
}
2)//示例代碼1:可變參數(shù)函數(shù)的使用
#include "stdio.h"
#include "stdarg.h"
void simple_va_fun(int start, ...)
{
va_list arg_ptr;
int nArgValue =start;
int nArgCout=0; //可變參數(shù)的數(shù)目
va_start(arg_ptr,start); //以固定參數(shù)的地址為起點(diǎn)確定變參的內(nèi)存起始地址。
do
{
++nArgCout;
printf("the %d th arg: %d\n",nArgCout,nArgValue); //輸出各參數(shù)的值
nArgValue = va_arg(arg_ptr,int); //得到下一個(gè)可變參數(shù)的值
} while(nArgValue != -1);
return;
}
int main(int argc, char* argv[])
{
simple_va_fun(100,-1);
simple_va_fun(100,200,-1);
return 0;
}
3)//示例代碼2:擴(kuò)展——自己實(shí)現(xiàn)簡(jiǎn)單的可變參數(shù)的函數(shù)。
下面是一個(gè)簡(jiǎn)單的printf函數(shù)的實(shí)現(xiàn),參考了<The C Programming Language>中的例子
#include "stdio.h"
#include "stdlib.h"
void myprintf(char* fmt, ...) //一個(gè)簡(jiǎn)單的類似于printf的實(shí)現(xiàn),//參數(shù)必須都是int 類型
{
char* pArg=NULL; //等價(jià)于原來(lái)的va_list
char c;
pArg = (char*) &fmt; //注意不要寫(xiě)成p = fmt !!因?yàn)檫@里要對(duì)//參數(shù)取址,而不是取值
pArg += sizeof(fmt); //等價(jià)于原來(lái)的va_start
do
{
c =*fmt;
if (c != '%')
{
putchar(c); //照原樣輸出字符
}
else
{
//按格式字符輸出數(shù)據(jù)
switch(*++fmt)
{
case'd':
printf("%d",*((int*)pArg));
break;
case'x':
printf("%#x",*((int*)pArg));
break;
default:
break;
}
pArg += sizeof(int); //等價(jià)于原來(lái)的va_arg
}
++fmt;
}while (*fmt != '\0');
pArg = NULL; //等價(jià)于va_end
return;
}
int main(int argc, char* argv[])
{
int i = 1234;
int j = 5678;
myprintf("the first test:i=%d\n",i,j);
myprintf("the secend test:i=%d; %x;j=%d;\n",i,0xabcd,j);
system("pause");
return 0;
}
re: 我的電腦配置 浪跡天涯 2007-05-06 19:32
好