浪迹天涯

唯有努力...
努力....再努力...

共2页: 1 2 
mark 有时间好好研究!
mark 以后需要的时候看看
界面很漂亮,不知Flash部分制作是否麻烦?
对CGI不甚了解,看完后有些概念,谢谢!
mark一下 谢谢楼主!
mark 最近正在研究lighttpd源码
re: 如何更改属性页向导页的字体 浪迹天涯 2008-08-19 18:26
呵,客气!
输入中文乱码的问题,有可能是和字符集设置有关,具体原因我也没碰见过。
re: 如何更改属性页向导页的字体 浪迹天涯 2008-08-19 16:50
我试了,我这是可以输入中文,而且显示也不是乱码的。
re: 转@QQ自动登录 浪迹天涯 2008-08-14 16:12
现在qq版本对键盘输入加锁了,有两个dll插件,防止输入密码时被截获,这个方式已经不能传输密码进去了
谁平时都关注这些资讯!?cnBeta?USENIX Security 2008?
mark 很有意思
re: Base64编码解码 浪迹天涯 2008-07-02 09:14
mark 谢谢楼主整理出来!
re: libcurl使用心得 浪迹天涯 2008-06-28 16:00
有用这个写爬虫的
re: 做了一个XML解释器 浪迹天涯 2008-06-20 09:12
mark 学习学习
变量的初始化是一个很容易疏忽的问题
re: C/C++工程师 浪迹天涯 2008-03-11 14:05
你好 请问公司具体地址在哪?薪资待遇?
re: 很久没有这种感觉了 浪迹天涯 2008-03-07 16:22
Fox兄,请问贵公司是在北京吗?是做游戏开发的吧?
re: 再谈sizeof()的问题 浪迹天涯 2008-03-05 08:30
@眯着眼的猫
很感谢眯着眼的猫 解释的很详细!
我先前以为对sizeof()理解的很透彻,但遇到这个union一开始没有理解透彻,直到在机器上跑一遍以后,才理解清楚。
re: 再谈sizeof()的问题 浪迹天涯 2008-03-03 08:44
空间还有毒吗?我什么东西都没放啊!
re: 再谈sizeof()的问题 浪迹天涯 2008-03-01 08:52
没有挂木马,是计数器卡着了@a
re: 再谈sizeof()的问题 浪迹天涯 2008-03-01 08:42
我的意思不是说sizeof()函数的问题。
我本意也并不是讨论各个编译器的规则。
我是想探讨sizeof()求结构struct,union时的规则。
很不厚道,有人在机器上跑了一趟,不过依然谢谢。
union A:
{
int a[5]; //20
char b; //1
double c; //8
}我想的是union中变量共用内存,应以最长的为准,那就是20。可实际不然,sizeof(A)=24,后来一想应该是必须考虑A中各变量的默认内存对齐方式,必须以最长的double 8字节对齐,故应该是sizeof(A)=24。
关于sizeof(B)下篇再续,也希望大家多探讨探讨,写下你的想法!
re: 单链表逆序输出 浪迹天涯 2008-02-29 17:08
面试时 切记使用傻傻的方法
我觉得递归 可能是最先想到的
第一张方法也很巧妙 已经回答的很好了
re: 这样的辞职报告感人吗? 浪迹天涯 2008-02-01 15:17
至今无房无车...居无定所
re: 通用对话框会导致程序CRUSH? 浪迹天涯 2008-01-31 08:43
网上不是说在已安装vc的机器上不会出问题,只在没有安装过vc的机器上才会出问题。如果是这样,我的理解是CFileDialog在这两种环境下的处理不同,一种直接调用,一种基于COM组件
re: vs2005奇怪的断点无效问题 浪迹天涯 2008-01-30 09:53
断点无法跟进,弹出“没有可用于当前位置的源代码”时,有时候把这个函数删除了,然后重新添加一次就可以解决。
re: 关于Fedora二三事 浪迹天涯 2008-01-29 09:07
Fedora6 Fedora8 Ubuntu7.04 RedHat AS4都用过,感觉Fedora8界面做到很漂亮,但更新源少;Ubuntu更新安装软件很方便。都只是用用,没有太多的其它经验。
思想禁锢了,要想有什麽创造那是很难的,这就是我们国家的教育现实。
你的#define 和我们的没有什么区别,我们的也是这么实现的,你可以看我们的大端小端交换代码。
re: vector中存放const变量是否有意义 浪迹天涯 2008-01-28 17:33
看看《Effective STL》
re: msdn也有错? 浪迹天涯 2008-01-28 17:31
可以参考《Effective STL》
条款3:使容器里对象的拷贝操作轻量而正确

容器容纳了对象,但不是你给它们的那个对象。此外,当你从容器中获取一个对象时,你所得到的对象不是容器里的那个对象。取而代之的是,当你向容器中添加一个对象(比如通过insert或push_back等),进入容器的是你指定的对象的拷贝。拷进去,拷出来。这就是STL的方式。
.........
公司比较小气,我们项目组联系过一二手IBM RS/6000机器,好像也就一两万块钱,但是由于公司觉得这只是临时的一个项目,今后没有这方面的需求,所以不肯出手。所以当时的计划就是首先把Unix系统完善后,然后集中对网络通信模块的数据进行大小端调整。整个实施过程,遇到的问题倒是不大,项目进展的还算顺利。
re: 这样的辞职报告感人吗? 浪迹天涯 2008-01-25 12:02
新劳动法也是今年刚实行的,而且具体会产生什么影响还不得而知。先前也查过是否提前一个月告知公司,就不算违约,无需缴纳任何违约金的问题,但是网上也没有哪位能给出十分准确的答案,哪位法律大人来解释解释?
我的理解是,只要公司无法出具对你进行过任何的培训记录,没有享受公司的额外出资培训等情况,提前一个月打报告,那么一个月后如果公司还不放你,完全可以向劳动保障部门申请仲裁。
我发这篇文章的本意并不是讨论劳动法等问题,其实只是到年末了,感叹为了一张火车票发愁的无奈...游子苦 游子愁啊!
re: 这样的辞职报告感人吗? 浪迹天涯 2008-01-25 10:39
说的轻巧!合同未到期,手头又有没完没了的项目,我看你怎么走?
re: vs2005奇怪的断点无效问题 浪迹天涯 2008-01-24 16:58
呵,好久以前就遇到过这个问题,将解决方法发到MSN Space上了。MSN Space速度太慢,但是每天搜索这个问题的人还很多,所以就发到这个CPP Blog上来了,希望能给大家一个参考!
re: CMap详解 浪迹天涯 2008-01-24 15:47
以下是实现忽略大小写的HashKey函数以及KeyCompare函数:
// 实现忽略大小写的
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
什么也看不见啊!
re: 大数据量下CListCtrl的问题 浪迹天涯 2008-01-24 11:35
经过仔细分析,发现CListCtrl处理过程是正确的,之所以造成size()不正确的原因,是因为 m_buffer 相邻近的变量数组越界破坏了这块内存区域,因此造成size()不正确,数据错误的情况。经过修正,问题已然解决!
那么既然统一了编码,如何兼容原先各国的文字编码呢?


  这个时候就需要codepage了。


  什么是codepage?codepage就是各国的文字编码和Unicode之间的映射表。


  比如简体中文和Unicode的映射表就是CP936,点这里查看官方的映射表。


  以下是几个常用的codepage,相应的修改上面的地址的数字即可。


  codepage=936 简体中文GBK


  codepage=950 繁体中文BIG5


  codepage=437 美国/加拿大英语


  codepage=932 日文


  codepage=949 韩文


  codepage=866 俄文


  codepage=65001 Unicode UFT-8


  最后一个65001,据个人理解,应该只是一个虚拟的映射表,实际只是一个算法而已。


  从936中随意取一行,例如:


  0x9993 0x6ABD #CJK UNIFIED IDEOGRAPH


  前面的编码是GBK的编码,后面的是Unicode。
va_start() va_end()函数应用

1:当无法列出传递函数的所有实参的类型和数目时,可用省略号指定参数表
void foo(...);
void foo(parm_list,...);

2:函数参数的传递原理
函数参数是以数据结构:栈的形式存取,从右至左入栈.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:获取省略号指定的参数
在函数体中声明一个va_list,然后用va_start函数来获取参数列表中的参数,使用完毕后调用va_end()结束。像这段代码:
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指向第一个可选参数。va_arg返回参数列表中的当前参数并使argp指向参数列表中的下一个参数。va_end把argp指针清为NULL。函数体内可以多次遍历这些参数,但是都必须以va_start开始,并以va_end结尾。

  1).演示如何使用参数个数可变的函数,采用ANSI标准形式
  #include 〈stdio.h〉
  #include 〈string.h〉
  #include 〈stdarg.h〉
  /*函数原型声明,至少需要一个确定的参数,注意括号内的省略号*/
  int demo( char, ... );
  void main( void )
  {
   demo("DEMO", "This", "is", "a", "demo!", "");
  }
  /*ANSI标准形式的声明方式,括号内的省略号表示可选参数*/
  int demo( char msg, ... )
  {
/*定义保存函数参数的结构*/
   va_list argp;
   int argno = 0;
   char para;

   /*argp指向传入的第一个可选参数,msg是最后一个确定的参数*/
   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:可变参数函数的使用
#include "stdio.h"
#include "stdarg.h"
void simple_va_fun(int start, ...)
{
va_list arg_ptr;
int nArgValue =start;
int nArgCout=0; //可变参数的数目
va_start(arg_ptr,start); //以固定参数的地址为起点确定变参的内存起始地址。
do
{
++nArgCout;
printf("the %d th arg: %d\n",nArgCout,nArgValue); //输出各参数的值
nArgValue = va_arg(arg_ptr,int); //得到下一个可变参数的值
} 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:扩展——自己实现简单的可变参数的函数。
下面是一个简单的printf函数的实现,参考了<The C Programming Language>中的例子
#include "stdio.h"
#include "stdlib.h"
void myprintf(char* fmt, ...) //一个简单的类似于printf的实现,//参数必须都是int 类型
{
char* pArg=NULL; //等价于原来的va_list
char c;

pArg = (char*) &fmt; //注意不要写成p = fmt !!因为这里要对//参数取址,而不是取值
pArg += sizeof(fmt); //等价于原来的va_start

do
{
c =*fmt;
if (c != '%')
{
putchar(c); //照原样输出字符
}
else
{
//按格式字符输出数据
switch(*++fmt)
{
case'd':
printf("%d",*((int*)pArg));
break;
case'x':
printf("%#x",*((int*)pArg));
break;
default:
break;
}
pArg += sizeof(int); //等价于原来的va_arg
}
++fmt;
}while (*fmt != '\0');
pArg = NULL; //等价于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
共2页: 1 2 
<2024年4月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

导航

统计

常用链接

留言簿(22)

随笔分类(30)

随笔档案(29)

文章分类

搜索

积分与排名

最新评论

阅读排行榜

评论排行榜