April 30, 2004

面试题的答案

第一道,strcpy的实现代码:
char * strcpy(char * strDest,const char * strSrc)
{
if ((strDest==NULL)||(strSrc==NULL)) //检查指针的有效性
throw "Invalid argument(s)"; //

char * strDestCopy=strDest; //保存原始的strDest值
while ((*strDest++=*strSrc++)!='\0'); //循环体结束后,strDest字符串的末尾加上'\0',作为字符串的结尾。

return strDestCopy;
}

hufey、厨子等老师看到了,不知会怎样指正。

Posted by 三更天 at 11:29 AM | Comments (0)

April 27, 2004

摇滚中国乐势力

看了音里面的连接,下载了94年香港红勘摇滚中国乐势力演唱会的现场录像,感觉不错。95年的样子,我在学校里,买了一盒这个带子,一直很喜欢听。当时找了好久看有没有这个发行的的mtv光盘,一直没找到,不明白为什么一直没有光盘发行。现在总算看到了。

Posted by 三更天 at 10:34 PM | Comments (4)

April 26, 2004

面试题

这是出现频率很高的一些面试题,这两天公司也准备拿出去面试,觉得实在很奇怪。


已知strcpy函数的原型是:
char * strcpy(char * strDest,const char * strSrc);

1.不调用库函数,实现strcpy函数。
2.解释为什么要返回char *。

已知类String的原型为:
calss String
{
public:
String(const char *str = NULL); //普通构造函数
String(const String ©); //拷贝构造函数
~String(void); //析构函数
String & operator = (const String ©); //赋值构造函数
private:
char * m_data; //用于保存字符串
};
请编写Sting的上述4个函数:

Posted by 三更天 at 10:59 PM | Comments (0)

April 21, 2004

HA高可用系统

完成了一个比较简单的HA高可用双机容错系统,采用双机使用漂移地址联合提供服务。不知道这种双机容错在防火墙上是怎么实现的。

以前从来没有做过这个东西,只是在运营部门做系统的时候,知道这些大概的情形,这回自己搞定,还真好玩。要是能有机会看看IBM的双机容错系统方案和代码,那就爽了。自己闷着头瞎摸索,真费劲。

Posted by 三更天 at 11:31 PM | Comments (2)

April 19, 2004

哪里有历史的真相?

今天看到一帮人讨论《一寸山河一寸血》,把他抬高到了一个很高高的高度。实在让我觉得奇怪,大家都没有独立思考的能力嘛?还是因为大家因为受够了宣传而心理上产生逆反?

看在我收集了不少时间的份上,我准备找个时间一集一集慢慢看,看看这些所谓的历史真相gmd的老少爷们儿是怎么样强奸法的。

可惜不能在南京呆一段时间,要不我还真想去第二历史档案馆看看当时留下来的那些资料。

Posted by 三更天 at 10:52 PM | Comments (0)

April 15, 2004

共享一点资料

好些人打听程序禁用启用网络的代码。

今天整理了一下,做成一个函数,贴出来算了。

#include
//编译链接的需要setupapi.lib库

//----------------------------------------------------------------
//函数名: DisableNetInterface
//创建人: sam young
//创建时间:2004-4-12
//函数功能:禁用/启用网络
//参数: bool bStatus,true:禁用网络,false:启用网络
//----------------------------------------------------------------
BOOL DisableNetInterface(bool bStatus)
{
IN LPTSTR HardwareId;//硬件ComponentId,注册表地址:system\currentcontrolset\class\{4D36E972-E325-11CE-BFC1-08002BE10318}\0000

HardwareId="PCI\\VEN_10EC&DEV_8139&SUBSYS_813910EC";

DWORD NewState;

if(bStatus)
{
NewState=DICS_DISABLE;//禁用
}
else
{
NewState=DICS_ENABLE;//启用
}

//调用ddk函数,来禁用网卡

DWORD i,err;
BOOL Found=false;

HDEVINFO hDevInfo;
SP_DEVINFO_DATA spDevInfoData;

//访问系统的硬件库
hDevInfo=SetupDiGetClassDevs(NULL,"PCI",NULL,DIGCF_ALLCLASSES | DIGCF_PRESENT);
if (hDevInfo == INVALID_HANDLE_VALUE)
{
gpMainDlg->PrintMsg("访问系统硬件出错!",ERRORMSG);
return false;
}

//枚举硬件,获得需要的接口
spDevInfoData.cbSize = sizeof(SP_DEVINFO_DATA);
for (i=0;SetupDiEnumDeviceInfo(hDevInfo,i,&spDevInfoData);i++)
{
DWORD DataT;
LPTSTR p,buffer = NULL;
DWORD buffersize = 0;

//获得硬件的属性值
while (!SetupDiGetDeviceRegistryProperty(
hDevInfo,
&spDevInfoData,
SPDRP_HARDWAREID,
&DataT,
(PBYTE)buffer,
buffersize,
&buffersize))
{
if (GetLastError() == ERROR_INVALID_DATA)
{
//不存在HardwareID. Continue.
break;
}
else if (GetLastError() == ERROR_INSUFFICIENT_BUFFER)
{
//buffer size不对.
if (buffer)
LocalFree(buffer);
buffer =(char *) LocalAlloc(LPTR,buffersize);
}
else
{
//未知错误
goto cleanup_DeviceInfo;
}
}

if (GetLastError() == ERROR_INVALID_DATA)
continue;

//比较,找到和网卡ID相同的项
for (p=buffer;*p&&(p<&buffer[buffersize]);p+=lstrlen(p)+sizeof(TCHAR))
{

if (!_tcscmp(HardwareId,p))
{
//找到网卡
Found = TRUE;
break;
}
}

if (buffer)
LocalFree(buffer);

//如果相等
if (Found)
{
//禁用该设备

SP_PROPCHANGE_PARAMS spPropChangeParams;

spPropChangeParams.ClassInstallHeader.cbSize=sizeof(SP_CLASSINSTALL_HEADER);
spPropChangeParams.ClassInstallHeader.InstallFunction=DIF_PROPERTYCHANGE;
spPropChangeParams.Scope=DICS_FLAG_GLOBAL;
spPropChangeParams.StateChange=NewState;//禁用:DICS_DISABLE,DICS_ENABLE启用

//
if(!SetupDiSetClassInstallParams(hDevInfo,&spDevInfoData,(SP_CLASSINSTALL_HEADER *)&spPropChangeParams,sizeof(spPropChangeParams)))
{
DWORD errorcode=GetLastError();
}

if(!SetupDiCallClassInstaller(DIF_PROPERTYCHANGE,hDevInfo,&spDevInfoData))
{
DWORD errorcode=GetLastError();
}

switch(NewState)
{
case DICS_DISABLE:
PrintMsg("成功禁用网络!");
break;
case DICS_ENABLE:
PrintMsg("成功启用网络!");
break;
}

break;
}

}

//退出时,清理工作环境
cleanup_DeviceInfo:
err = GetLastError();
SetupDiDestroyDeviceInfoList(hDevInfo);
SetLastError(err);

return true;
}

Posted by 三更天 at 10:52 PM | Comments (6)

April 13, 2004

BLOG就是好

昨天看到一个网友的留言,说为了查找一个东西,找到我的BLOG来了,终于获得了自己找寻了很久的东西,言下的喜悦与满足,让我感觉很舒畅。多不容易啊,自己写的blog还对别人有一点点用处。

巧的是,今天我自己为了找一点技术上的资料,google了一番,没想到最后也找到人家的blog上去了。心怀感激的留了言。想必,这个技术blog的作者,也会象我一样,看到这样的留言,心底里会产生一点点的满足感吧!

Posted by 三更天 at 10:48 PM | Comments (0)

April 12, 2004

今天真生气

准备晚上请人吃饭,nnd,打了几个电话,居然不是有事情,就是电话打不通,到最后也没法子,一气之下,两个人自己跑去腐败了一把,把准备请客的钱买了别的东西了,哈哈。

这年头,请个人吃饭,都这么难啊!

Posted by 三更天 at 12:24 AM | Comments (2)

April 07, 2004

贴一张片片

laura-7-3.jpg


2004.3,亚龙湾,nikon 3100

Posted by 三更天 at 11:36 PM | Comments (4)

April 02, 2004

终于拿到《战天京》

这段时间忙,一直没拿到。昨天从车水马龙那儿拿到它,一路上看回来,虽然很多内容是看第二次,仍然充满了阅读快感。马龙说我是他遇见的第一个真心想看这书的人,哈哈。我估计文盲们看这本书,随身还得带本字典,要不然很多字都不认识,怎么看得下去啊!!

Posted by 三更天 at 11:43 AM | Comments (0)