<?xml version="1.0" encoding="utf-8"?><rss version="2.0">
<channel>
<title><![CDATA[每天进步一.]]></title>
<link>http://blog.pfan.cn/maliang1225</link>
<description>编程爱好者博客</description>
<language>zh-cn</language>
			<item>
		<title><![CDATA[honkerhero的技术专栏(C#技术-WinForm)]]></title>
		<link>http://blog.pfan.cn/maliang1225/27518.html</link>
		<description><![CDATA[http://blog.csdn.net/honkerhero/]]></description>
		<author><![CDATA[maliang1225]]></author>
		<pubDate>2007-07-13 14:48:00</pubDate>
		</item>
				<item>
		<title><![CDATA[[编程思想]大道至简--流于形式的沟通(强烈推荐)]]></title>
		<link>http://blog.pfan.cn/maliang1225/27517.html</link>
		<description><![CDATA[&nbsp;&nbsp; 第4章&nbsp; 流于形式的沟通 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; “足下求速化之术，不于其人，乃以访愈，是所谓借听于聋，求道于盲。” &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;——唐·韩愈《答陈生书》 
1.&nbsp; 客户不会用 C，难道就会用 UML 吗？ 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 我们总是要先接触客户的，是的，如果不这样，我们将无法确知要做什么。&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;作为开发人员，可能更希望客户能学习或者精通 C语言，这样客户就知道开发人员正在做什么，以及有多么地勤劳。或者，这样的客户还能以 C 语言的方式告诉开发人员他们究竟想要什么。 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 然而要求客户学习 C 语言明显是自杀式的行为。在客户(的代表)学会用 C语言来向开发人员描述他们的需求之前，可能他就已经被老板开掉了。因此没有客户会笨愿意用 C 语言来描述他们的需求。
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C 语言是程序员与计算机交流的语言，而不是他与客户交流的语]]></description>
		<author><![CDATA[maliang1225]]></author>
		<pubDate>2007-07-13 14:20:00</pubDate>
		</item>
				<item>
		<title><![CDATA[C++]用VC++来设置获得注册表的键值（问题解决）]]></title>
		<link>http://blog.pfan.cn/maliang1225/27516.html</link>
		<description><![CDATA[下面这个是基于MFC的基本对话写的。。&nbsp; 演示设置注册表的3中类型的值和获得注册表的3中类型的值。。 分别用RegSetValueEx()来设置，RegQueryValueEx()函数来获得。
&nbsp;
void CUserRegDlg::OnOK() {&nbsp;// TODO: Add extra validation here&nbsp;&nbsp;CString str = "hello reg";&nbsp;DWORD regd = 100;&nbsp;BYTE bValues[] = { 0x11, 0x12, 0x55 };
&nbsp;BYTE Vals[100];&nbsp;DWORD lenIt = 100;&nbsp;HKEY hk;
&nbsp;// 打开注册表如果没有则创建, 返回注册表句柄于hk&nbsp;&nbsp;if ( ::RegCreateKey( HKEY_LOCAL_MACHINE, "SOFTWARE\\Test\\", &amp;hk ) == ERROR_SUCCESS )&nbsp;{&nbsp;&nbsp;AfxMessageBox( "打开注册表" );&nbsp;}
&nbsp;// 保存参数到注册表&nbsp;try&nbsp;{&nbsp;&nbsp;/* &nbsp;&nbsp;RegSetValueEx( 根键句柄, 值项名称, 保留参数补0即可, 数据类型, 所设置的数据, 数据长度 )&nbsp;&nbsp;用来设置注册表键特定的值,如果数据不存在则创建它 &nbsp;&nbsp;&nbsp;*/&nbsp;&nbsp;/* 保存字符值到注册表 */&nbsp;&nbsp;if ( ::RegSetValueEx( hk, "Server", 0, REG_SZ, (LPBYTE)(LPCSTR)str, str.GetLength( ) +1 ) == ERROR_SUCCESS )&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;AfxMessageBox( "字符值参数保存成功" );&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;/* 保存双字节到注册表 */&nbsp;&nbsp;if ( ::RegSetValueEx(]]></description>
		<author><![CDATA[maliang1225]]></author>
		<pubDate>2007-07-13 14:13:00</pubDate>
		</item>
				<item>
		<title><![CDATA[[WIN编程]WINDOWS数据类型的转换大全(转)]]></title>
		<link>http://blog.pfan.cn/maliang1225/27515.html</link>
		<description><![CDATA[WINDOWS数据类型的转换 一、其它数据类型转换为字符串短整型(int)itoa(i,temp,10);//将i转换为字符串放入temp中,最后一个数字表示十进制itoa(i,temp,2); //按二进制方式转换 长整型(long)ltoa(l,temp,10); 浮点数(float,double)用fcvt可以完成转换,这是MSDN中的例子:int decimal, sign; char *buffer; double source = 3.1415926535; buffer = _fcvt( source, 7, &amp;decimal, &amp;sign ); 运行结果:source: 3.1415926535 buffer: '31415927' decimal: 1 sign: 0decimal表示小数点的位置,sign表示符号:0为正数，1为负数 CString变量str = "2008北京奥运";buf = (LPSTR)(LPCTSTR)str; BSTR变量BSTR bstrValue = ::SysAllocString(L"程序员"); char * buf = _com_util::ConvertBSTRToString(bstrValue); SysFreeString(bstrValue); AfxMessageBox(buf); delete(buf); CComBSTR变量CComBSTR bstrVar("test"); char *buf = _com_util::ConvertBSTRToString(bstrVar.m_str); AfxMessageBox(buf); delete(buf); _bstr_t变量_bstr_t类型是对BSTR的封装，因为已经重载了=操作符，所以很容易使用_bstr_t bstrVar("test"); const char *buf = bstrVar;///不要修改buf中的内容 AfxMessageBox(buf); 通用方法(针对非COM数据类型)用sprintf完成转换char buffer[200];char c = '1';int i = 35;long j = 1000;float f = 1.7320534f;sprintf( buffer, "%c",c);spr]]></description>
		<author><![CDATA[maliang1225]]></author>
		<pubDate>2007-07-13 14:11:00</pubDate>
		</item>
				<item>
		<title><![CDATA[[Win编程]pragma指令简介(转)]]></title>
		<link>http://blog.pfan.cn/maliang1225/27514.html</link>
		<description><![CDATA[pragma指令简介在编写程序的时候,我们经常要用到#pragma指令来设定编译器的状态或者是指示编译器完成一些特定的动作.下面介绍了一下该指令的一些常用参数,希望对大家有所帮助!一. message 参数。 message 它能够在编译信息输出窗口中输出相应的信息，这对于源代码信息的控制是非常重要的。其使用方法为： #pragma message(“消息文本”) 当编译器遇到这条指令时就在编译输出窗口中将消息文本打印出来。 当我们在程序中定义了许多宏来控制源代码版本的时候，我们自己有可能都会忘记有没有正确的设置这些宏，此时我们可以用这条指令在编译的时候就进行检查。假设我们希望判断自己有没有在源代码的什么地方定义了_X86这个宏可以用下面的方法 #ifdef _X86 #pragma message(“_X86 macro activated!”) #endif 当我们定义了_X86这个宏以后，应用程序在编译时就会在编译输出窗口里显示“_ X86 macro activated!”。我们就不会因为不记得自己定义的一些特定的宏而抓耳挠腮了 二. 另一个使用得比较多的#pragma参数是code_seg。格式如： #pragma code_seg( [ [ { push | pop}, ] [ identifier, ] ] [ "segment-name" [, "segment-class" ] ) 该指令用来指定函数在.obj文件中存放的节,观察OBJ文件可以使用VC自带的dumpbin命令行程序,函数在.obj文件中默认的存放节为.text节如果code_seg没有带参数的话,则函数存放在.text节中push (可选参数) 将一个记录放到内部编译器的堆栈中,可选参数可以为一个标识符或者节名pop(可选参数) 将一个记录从堆栈顶端弹出,该记录可以为一个标识符或者节名identifier (可选参数) 当使用push指令时,为压入堆栈的记录指派的一个标识符,当该标识符被删除的时候和其相关的堆栈中的记录将被弹出堆栈 "segment-name" (可选参数) 表示函数存放的节名例如://默认情况下,函数被存放在.text节中void func1() { // stored in .text}//将函数存放在.my_data1节中#pragma code_seg(".]]></description>
		<author><![CDATA[maliang1225]]></author>
		<pubDate>2007-07-13 14:08:00</pubDate>
		</item>
				<item>
		<title><![CDATA[[XML]XML中20个热点问题(转)]]></title>
		<link>http://blog.pfan.cn/maliang1225/27513.html</link>
		<description><![CDATA[XML中20个热点问题(转载)


这里的20个有关XML的热门问题能够让你成为一XML“专家”，或至少让你能够在今后看准XML的发展方向。 

1&nbsp;什么是XML?&nbsp;11&nbsp;OSD和CDF与XML的关系如何?2&nbsp;XML何以重要?&nbsp;12&nbsp;电子商务(e-commerce)和XML?3&nbsp;SGML、HTML和XML有什么联系？&nbsp;13&nbsp;XML中的层叠样式?4&nbsp;如何实现XML?&nbsp;14&nbsp;XML如何改进超链接?5&nbsp;什么是文件类型定义(DTD)?&nbsp;15&nbsp;服务器上支持XML吗?6&nbsp;什么是格式完整和有效的文件?&nbsp;16&nbsp;谁应该学习XML?7&nbsp;如何在浏览器中阅读XML?&nbsp;17&nbsp;有哪些编写XML的工具可供我使用?8&nbsp;RDF和XML有何联系?&nbsp;18&nbsp;XML的国际化?9&nbsp;Netscape浏览器中如何实现XML?&nbsp;19&nbsp;XML的未来在哪里?10&nbsp;Microsoft浏览器中如何实现XML?&nbsp;20&nbsp;哪里能学到更多的XML知识?
1.什么是XML?
XML代表扩展标识语言(Extensible&nbsp;Markup&nbsp;Language).&nbsp;由&nbsp;World&nbsp;Wide&nbsp;Web&nbsp;Consortium&nbsp;(W3C)带头,&nbsp;XML在二月中期成为一个正式的规范.
XML开发者会告诉你XML不是一种语言,而是一个定义其他语言的系统.&nbsp;你可能已经听说过,&nbsp;或用过这些语言中的一种,--如Microsoft支持"推技术"的&nbsp;Channel&nbsp;Definition&nbsp;Format&nbsp;(CDF).
正从事于XML相关建议工作的W3C,&nbsp;称XML为"表达数据中结构&nbsp;的共同语法".&nbsp;结构化的数据指的是其内容,意义或应用被标记的数据.&nbsp;例如,&nbsp;HTML中&lt;H1&gt;标记指定文本为某一字体和大小,&nbsp;XML的标记将明确确定信息的种类]]></description>
		<author><![CDATA[maliang1225]]></author>
		<pubDate>2007-07-13 14:04:00</pubDate>
		</item>
				<item>
		<title><![CDATA[[C]C实现定时删除文件]]></title>
		<link>http://blog.pfan.cn/maliang1225/27512.html</link>
		<description><![CDATA[#include "stdio.h"#include "string.h"#include "time.h"#include "stdlib.h"
int main( void ){&nbsp;char *strTime;&nbsp;time_t myTime;&nbsp;// long型时间&nbsp;bool isDel;
&nbsp;time( &amp;myTime );&nbsp;&nbsp;&nbsp;// 取得时间&nbsp;strTime = ctime( &amp;myTime );&nbsp;// 转换为字符串&nbsp;printf( "%s", strTime );&nbsp;// 显示时间&nbsp;isDel = false;
while( !isDel )&nbsp;&nbsp;&nbsp; // 程序一直运行，直到删除了文件才结束次程序。{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* 如果为18:00点则删除文件 */&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;if ( ( strTime[11] == '1' ) &amp;&amp; ( strTime[12] == '8' ) &amp;&amp; ( strTime[14] == '0' ) &amp;&amp; ( strTime[15] == '0' ) )&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;system( "type aaa.txt" );&nbsp;// 显示文件的内容&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;system( "del aaa.txt" );&nbsp;&nbsp;&nbsp;]]></description>
		<author><![CDATA[maliang1225]]></author>
		<pubDate>2007-07-13 13:55:00</pubDate>
		</item>
				<item>
		<title><![CDATA[[VC]VC风险投资家常问的问题]]></title>
		<link>http://blog.pfan.cn/maliang1225/27511.html</link>
		<description><![CDATA[1) &nbsp; 你的眼光是什么？ 　　 &nbsp; * &nbsp; 你的远见是什么？ 　　 &nbsp; * &nbsp; 你要解决什么问题？对象是谁？ 　　 &nbsp; * &nbsp; 你将来想要成为什么样的人？ 2) &nbsp; 你的市场机会是什么？市场有多大？ 　　 &nbsp; * &nbsp; 您目标的市场有多大？发展有多快？ 　　 &nbsp; * &nbsp; 这个市场有多成熟，或多不成熟？ 　　 &nbsp; * &nbsp; 你是否有资本成为这个市场前两三位？ 3) &nbsp; 介绍你的产品和服务 　　 &nbsp; * &nbsp; 你的产品或服务是什么？ 　　 &nbsp; * &nbsp; 解决了用户的什么问题？ 　　 &nbsp; * &nbsp; 你的产品或服务有什么特别之处？ 4) &nbsp; 你的用户是谁？ 　　 &nbsp; * &nbsp; 谁是现在的用户？ 　　 &nbsp; * &nbsp; 谁是目标的用户？ 　　 &nbsp; * &nbsp; 理想的用户是什么样的？ 　　 &nbsp; * &nbsp; 谁会付费？ 　　 &nbsp; * &nbsp; 介绍一下某个具体用户的例子 5) &nbsp; 你的价值主张是什么？ 　　 &nbsp; * &nbsp; 你给用户提供了什么价值？ 　　 &nbsp; * &nbsp; 使用／买你的产品，用户的投资回收率是什么？ 　　 &nbsp; * &nbsp; 你解决了什么问题？ 　　 &nbsp; * &nbsp; 你是销售维他命，阿司匹林，还是消炎药？（奢侈品，有益的东西，还是必需品？） 6) &nbsp; 你如何销售？ 　　 &nbsp; * &nbsp; 销售程序是什么？周期有多长？ 　　 &nbsp; * &nbsp; 你的销售和市场方针是什么？ 　　 &nbsp; * &nbsp; 你当前的销售链是什么？ 7) &nbsp; 你怎么吸引客户？ 　　 &nbsp; * &nbsp; 争取每个用户要花费多少钱？ 　　 &nbsp; * &nbsp; 在不同时期这个费用是否不同？为什么？ 　　 &nbsp; * &nbsp; 用户的永久价值什么？ 8) &nbsp; 你的管理团队有谁？ 　　* &nbsp; 你的管理团队有谁？ 　　 &nbsp; * &nb]]></description>
		<author><![CDATA[maliang1225]]></author>
		<pubDate>2007-07-13 13:52:00</pubDate>
		</item>
				<item>
		<title><![CDATA[[面试题]C/C++应聘常见面试试题深入剖析(转)]]></title>
		<link>http://blog.pfan.cn/maliang1225/27510.html</link>
		<description><![CDATA[试题：编写一个函数，作用是把一个char组成的字符串循环右移n个。比如原来是“abcdefghi”如果n=2，移位后应该是“hiabcdefgh” 　　函数头是这样的：



//pStr是指向以'\0'结尾的字符串的指针//steps是要求移动的nvoid LoopMove ( char * pStr, int steps ){　//请填充...}　　解答：　　正确解答1：



void LoopMove ( char *pStr, int steps ){　int n = strlen( pStr ) - steps;　char tmp[MAX_LEN]; 　strcpy ( tmp, pStr + n ); 　strcpy ( tmp + steps, pStr); 　*( tmp + strlen ( pStr ) ) = '\0';　strcpy( pStr, tmp );}　　正确解答2：



void LoopMove ( char *pStr, int steps ){　int n = strlen( pStr ) - steps;　char tmp[MAX_LEN]; 　memcpy( tmp, pStr + n, steps ); 　memcpy(pStr + steps, pStr, n ); 　memcpy(pStr, tmp, steps ); }　　剖析：　　这个试题主要考查面试者对标准库函数的熟练程度，在需要的时候引用库函数可以很大程度上简化程序编写的工作量。　　最频繁被使用的库函数包括：　　（1） strcpy　　（2） memcpy　　（3） memset　　试题6：已知WAV文件格式如下表，打开一个WAV文件，以适当的数据结构组织WAV文件头并解析WAV格式的各项信息。　　WAVE文件格式说明表





偏移地址
字节数
数据类型
内 容

文件头 

00H
4 
Char
"RIFF"标志

04H
4
int32
文件长度

08H
4
Char
"WAVE"标志

0CH
4
Char
"fmt"标志

10H
4
&nbsp;
过渡字节（不定）

14H
2
int16
格式类别

16H
2
int1]]></description>
		<author><![CDATA[maliang1225]]></author>
		<pubDate>2007-07-13 13:51:00</pubDate>
		</item>
				<item>
		<title><![CDATA[[面试题]C/C++面试题大汇总(转)]]></title>
		<link>http://blog.pfan.cn/maliang1225/27509.html</link>
		<description><![CDATA[最近因为找工作，收集了很多C语言方面方面的面试题以及答案。现在新工作搞定了，决定把这些资料发出来，送给有需要的朋友，免得再象我一样到处搜寻，实在辛苦。
发布之前先申明两点：&nbsp;&nbsp;&nbsp; 1 所有资料来自网络(主要是CSDN)，本人只是收集和转发。&nbsp;&nbsp;&nbsp; 2 所有问题解答(尤其是代码)只是参考，不保证正确。
先发基本问题，再发编程问题..........
想成为嵌入式程序员应知道的0x10个基本问题:预处理器（Preprocessor）
1 . 用预处理指令#define 声明一个常数，用以表明1年中有多少秒（忽略闰年问题）&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL我在这想看到几件事情：1) #define 语法的基本知识（例如：不能以分号结束，括号的使用，等等）2)懂得预处理器将为你计算常数表达式的值，因此，直接写出你是如何计算一年中有多少秒而不是计算出实际的值，是更清晰而没有代价的。3) 意识到这个表达式将使一个16位机的整型数溢出-因此要用到长整型符号L,告诉编译器这个常数是的长整型数。4) 如果你在你的表达式中用到UL（表示无符号长整型），那么你有了一个好的起点。记住，第一印象很重要。
2 . 写一个"标准"宏MIN ，这个宏输入两个参数并返回较小的一个。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #define MIN(A,B) （（A） &lt;= (B) ? (A) : (B)) 这个测试是为下面的目的而设的：1) 标识#define在宏中应用的基本知识。这是很重要的。因为在&nbsp; 嵌入(inline)操作符 变为标准C的一部分之前，宏是方便产生嵌入代码的唯一方法，对于嵌入式系统来说，为了能达到要求的性能，嵌入代码经常是必须的方法。2)三重条件操作符的知识。这个操作符存在C语言中的原因是它使得编译器能产生比if-then-else更优化的代码，了解这个用法是很重要的。3) 懂得在宏中小心地把参数用括号括起来4) 我也用这个问题开始讨论宏的副作用，例如：当你写下面的代码时会发生什么事？&nbsp]]></description>
		<author><![CDATA[maliang1225]]></author>
		<pubDate>2007-07-13 13:50:00</pubDate>
		</item>
				<item>
		<title><![CDATA[[C++]栈和堆原理介绍]]></title>
		<link>http://blog.pfan.cn/maliang1225/27508.html</link>
		<description><![CDATA[&nbsp;C++应用中内存分为2部分，一部分是栈（stack，也称堆栈），另一部分是堆（heap）。
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;栈： 可以把栈看成是一叠卡片，最上面的卡片表示程序的当前作用域，这往往就是当前正在执行的函数。当前函数中声明的所有变量都置于栈顶帧中，即占用栈顶帧的内存，这就相当于一叠卡片中最上面的一张卡片。如果当前函数调用了另一个函数，举例来说，一开始一叠卡片位于最底的卡片是main()函数，main()函数调用了foo()函数，则相当于在这一叠卡片上加了另一张卡片，这样foo()函数就有了自己的栈帧（就是指一块内存空间）以供使用。从main()传递到foo()的所有参数都会从main()栈帧复制到foo()栈帧中。 然后foo()函数又调用了bar()函数，则在这一叠卡片上又加了一张卡片，这样bar()就有了自己的栈帧（stack frame）以供使用，从foo()传递到bar()的参数就会从foo()栈帧复制到bar()栈帧中。 图片如下： foo()函数声明了一个整数值。
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 栈帧很有意义，因为栈帧可以为每个函数提供一个独立的内存工作区。如果一个变量是在foo()栈帧中声明的，那么调用bar()函数不会对它带来改变，除非你专门要求修改这个变量。另外，foo()函数运行结束时，栈帧既消失，该函数中声明的所有变量就不会再占用内存了。。
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;堆：堆是一段完全独立于当前函数或栈帧的内存区。如果一个函数中声明了一些变量，而且希望当这个函数结束时其中声明的变量依然存在，就可以将这些变量置于堆中。堆与栈相比，没有那么清晰的结构性。可以把堆看作是一“堆”小玩艺。程序可以在任何时刻向这个“堆”添加新的东西或者修改“堆”中已经有的东西。
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp]]></description>
		<author><![CDATA[maliang1225]]></author>
		<pubDate>2007-07-13 13:48:00</pubDate>
		</item>
				<item>
		<title><![CDATA[[C/C++]编程入门必做的题(76个&nbsp;转)]]></title>
		<link>http://blog.pfan.cn/maliang1225/27507.html</link>
		<description><![CDATA[编程入门必做的题(76 个)
很久没去论坛逛了，一进去就看到这个了，看题目，本来以为是些简单的题目，本来不想点的，不过后来还是忍不住点了看了，&nbsp; 一看才知道，原来不是些简单的题目，有很多都是些经典的题目。。。&nbsp;&nbsp; 诶，偶好久没有动过C/C++了，现在就来锻炼一下，坚持一天做一个，看会不会做。。。。。 
第一，二题解题思路]]></description>
		<author><![CDATA[maliang1225]]></author>
		<pubDate>2007-07-13 13:47:00</pubDate>
		</item>
				<item>
		<title><![CDATA[[C++]2005“现代C++设计与编程”讲师讲义下载]]></title>
		<link>http://blog.pfan.cn/maliang1225/27506.html</link>
		<description><![CDATA[2005 "现代C++设计与编程" 技术大会 讲师讲义开放下载：



&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Bjarne Stroustrup 
&nbsp;《Direction for C++0x》 

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;云风 
&nbsp;《游戏的优化》 

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;孟岩 
&nbsp;《什么是高级C++》 

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;荣耀 
&nbsp;《C++模板元编程技术与应用》 

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;陈榕 
&nbsp;《面向目标代码编程与C++的未来》 

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;李建忠 
&nbsp;《C++/CLI：建立本地世界与托管世界互通的桥梁》 

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;张银奎 
&nbsp;《C++异常处理得与失》 

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;温昱 
&nbsp;《架构设计：策略与过程》 

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;何宗键 
&nbsp;《C++在嵌入式系统中的运用》 

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;鲍志云 
&nbsp;《用C++开发高性能服务器端网络应用程序》 

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;黄飞龙 
&nbsp;《多核技术与C++并发编程》 

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;王旭 
&nbsp;《基于C++的网游服务器中间件模型》因牵扯到相关公司机密，不便公开。 
有2，3篇讲义是英文的，看来要补下英文了，不然看不懂。。。&nbsp;]]></description>
		<author><![CDATA[maliang1225]]></author>
		<pubDate>2007-07-13 13:46:00</pubDate>
		</item>
				<item>
		<title><![CDATA[[面试题]2005年11月华为在南邮的招聘笔试题(转)]]></title>
		<link>http://blog.pfan.cn/maliang1225/27505.html</link>
		<description><![CDATA[1.写出判断ABCD四个表达式的是否正确, 若正确, 写出经过表达式中 a的值(3分)int a = 4;(A)a += (a++); (B) a += (++a) ;(C) (a++) += a;(D) (++a) += (a++);a = ?答：C错误，左侧不是一个有效变量，不能赋值，可改为(++a) += a;改后答案依次为9,10,10,112.某32位系统下, C++程序，请计算sizeof 的值(5分).char str[] = “www.ibegroup.com”char *p = str ;int n = 10;请计算sizeof (str ) = ？（1）sizeof ( p ) = ？（2）sizeof ( n ) = ？（3）void Foo ( char str[100]){请计算sizeof( str ) = ？（4）}void *p = malloc( 100 );请计算sizeof ( p ) = ？（5）答：（1）17 （2）4 （3） 4 （4）4 （5）43. 回答下面的问题. (4分)(1).头文件中的 ifndef/define/endif 干什么用？预处理答：防止头文件被重复引用(2). ＃i nclude 和 ＃i nclude “filename.h” 有什么区别？答：前者用来包含开发环境提供的库头文件，后者用来包含自己编写的头文件。(3).在C++ 程序中调用被 C 编译器编译后的函数，为什么要加 extern “C”声明？答：函数和变量被C++编译后在符号库中的名字与C语言的不同，被extern "C"修饰的变量和函数是按照C语言方式编译和连接的。由于编译后的名字不同，C++程序不能直接调用C 函数。C++提供了一个C 连接交换指定符号extern“C”来解决这个问题。(4). switch()中不允许的数据类型是?答：实型4. 回答下面的问题(6分)(1).Void GetMemory(char **p, int num){*p = (char *)malloc(num);}void Test(void){char *str = NULL;GetMemory(&amp;str, 100);strcpy(str, "hello");printf(str);}请问运行Test 函数会有什么样的结果？答：输出“hello]]></description>
		<author><![CDATA[maliang1225]]></author>
		<pubDate>2007-07-13 13:45:00</pubDate>
		</item>
				<item>
		<title><![CDATA[[.NET].NET&nbsp;Framework&nbsp;框架概述(转)]]></title>
		<link>http://blog.pfan.cn/maliang1225/27504.html</link>
		<description><![CDATA[.NET Framework
.NET Framework&nbsp;&nbsp;&nbsp;&nbsp;.NET Framework 是微软的几个开发团队一起努力发展的成果，最主要用来产生一个可以用来快速开发、部署网站服务及应用程序的开发平台。这个架构是两个项目的结果：第一个项目的目的是用来改善Windows 作业平台上的程序开发，特别是改善COM（Component Object Model，组件对象模块。一种微软所制定的软件技术；让对象的功能可以被其它软件所叫用，可以让组件重复使用、容易更新及维护）；第二个项目则是制作一个以发展服务（Service）软件为目标的开发平台。这两个项目团队三年多前就已经在一起工作，他们希望可以发展出一种可以快速开发出以因特网为基础，而且易学易用的开发平台。为了要达到这些目标，所以.Net Framework 在设计时加入了下列特色：透过因特网的标准做整合&nbsp;&nbsp;&nbsp;&nbsp;以XML（eXtensible Markup Language，延伸标注语言）及SOAP（Simple Object AccessProtocol，简单对象存取协议）等标准通讯协议，将各种由不同环境所组成的应用程序及组件整合在一起工作。松散的整合组件&nbsp;&nbsp;&nbsp;&nbsp;大多数具延展能力（可扩充功能）的系统，现阶段是以「异步讯息」为架构而建立的。要建立这种多层的架构非常复杂，而且工具很少。.NET Framework 不需要很严谨的定义每个组件的结构即可很轻松的整合，这样可提高程序的延展性。支持多种程序语言&nbsp;&nbsp;&nbsp;&nbsp;许多程序设计师会使用多种语言来开发他们的解决方案，这是因为每种语言都有它的长处。例如某些语言对于数值计算效率较好，某些语言对于数据库的操作较为方便，而某些语言又有大量的链接库可供使用；所以没有办法强迫别人只学一种程序语言。.NET Framework 把这些语言整合起来，可以让开发人员使用不同的程序语言来开发解决方案，让程序设计师可以选择他们专长的程序语言，企业则可省去重新训练员工的成本。提高程序设计师的生产力&nbsp;&nbsp;&nbsp;&nbsp;现今程序设计师人才非常缺乏，程序设计师在人力不足的情形之下就必需提高生产力，因为每个项目的时程很可能很]]></description>
		<author><![CDATA[maliang1225]]></author>
		<pubDate>2007-07-13 13:44:00</pubDate>
		</item>
				<item>
		<title><![CDATA[[.NET]C#学习笔记--System.Collections详解和示例]]></title>
		<link>http://blog.pfan.cn/maliang1225/27503.html</link>
		<description><![CDATA[System.Collections 常用类，结构和结构：
类：ArrayList，Hashtable，SortedList
接口：ICollection，IEnumerator，IList
结构：DictionaryEntry 
类：
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ArrayList： 数组列表，是Array类的优化版本。。
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Hashtable： 一种数据结构，将数据作为一组键（Key）值（Value）来存储，Hash表中数据将会根据Key来建立索引，一般用来存储几万，几十万条数据，数据搜索性能高。
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SortedList： 一种排序的数据列表，也是将数据作为一组键（Key）值（Value）来存储，也会根据Key来建立索引，一般用来存储几百，几千条数据，当存储几万条是数据的搜索性能就会降低，因此超过上万建议使用Hashtable。
接口：
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ICollection：定义了一组管理元素的函数，如添加，删除等等。
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IEnumerator：继承于ICollection，因此具有管理元素的功能，且添加了新的功能，既可以通过他来遍力元素。
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IList：继承于IEnumerator，因此具有管理，遍力且新加了通过索引查找元素。
结构：
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DictionaryEntry：一个结构体，包括了一个键（Key）和值（Value）变量，既键值对。Hashtable和SortedList的变量数据类型为DictionaryEntry。因此可以通过DictionaryEntry来遍力Hashtable和SortedList。
&nbsp;
/*&nbsp;Hashtable示例 */
/*&nbsp;4种遍力Hashtabl]]></description>
		<author><![CDATA[maliang1225]]></author>
		<pubDate>2007-07-13 13:43:00</pubDate>
		</item>
				<item>
		<title><![CDATA[[ASP.NET]ASP.NET程序中常用的三十三种代码(转)]]></title>
		<link>http://blog.pfan.cn/maliang1225/27502.html</link>
		<description><![CDATA[ASP.NET程序中常用的三十三种代码　　 1. 打开新的窗口并传送参数： 　　 传送参数：

CODE:
[Copy to clipboard]
response.write("＜script＞ window .open('* .asp x?id="+this.DropDownList1.SelectIndex+"&amp;id1="+...+"')＜/script＞") 　　 接收参数：

CODE:
[Copy to clipboard]
string a = Request.QueryString("id"); string b = Request.QueryString("id1");　　 2.为按钮添加对话框

CODE:
[Copy to clipboard]
Button1.Attributes.Add("onclick","return confirm('确认?')"); button.attributes.add("onclick","if(confirm('are you sure...?')){return true;}else{return false;}")&nbsp;&nbsp;　　 3.删除表格选定记录

CODE:
[Copy to clipboard]
int intEmpID = (int)MyDataGrid.DataKeys[e.Item.ItemIndex]; string deleteCmd = "DELETE from Employee where emp_id = " + intEmpID.ToString() 　　 4.删除表格记录警告

CODE:
[Copy to clipboard]
private void DataGrid _ItemCreated( Object sender,DataGridItemEventArgs e) { 　 switch(e.Item.ItemType) 　 { 　　 case ListItemType.Item : 　　 case ListItemType.AlternatingItem : 　　 case ListItemType.EditItem: 　　　 TableCell myTableCell; 　　　 myTableCell]]></description>
		<author><![CDATA[maliang1225]]></author>
		<pubDate>2007-07-13 13:41:00</pubDate>
		</item>
				<item>
		<title><![CDATA[[ASP.NET]解析Asp.net木马文件操作(转)]]></title>
		<link>http://blog.pfan.cn/maliang1225/27501.html</link>
		<description><![CDATA[要编写Asp.net木马，首先要导入名称空间System.IO。名称空间System.IO提供了大量文件和文件夹的操作功能，包括读写文件、创建和删除目录以及察看文件和目录的属性。 1. 浅谈取得文件和文件夹的信息 详细说一下attributes集合，它提供了文件和文件夹的额外信息，如是否只读的或隐藏的。 文件和目录的属性 属性 数字值 ReadOnly（只读） 1 Hidden(隐藏) 2 System(系统) 4 Directory（目录） 16 Archive（存档） 32 Encrypted（加密） 64 Normal（普通） 128 Tempory（临时） 256 SparseFile（稀疏文件） 512 Compressed（压缩） 2048 Offline（脱机） 4096 NotContentIndexed（非内容索引） 8192 要改变文件的属性，只需将这些值类加。例如，要将目录设置为隐藏+系统+加密+压缩，可以使用下面的语句： f.attributes=2138 2138即2+4+64+2048 这些值估计新手很难记忆，我们直接用属性名称来设置，只要用或bitor来分割各属性，如： f.attributes=FileAttributes.Hidden BitOr FileAttributes.System BitOr FileAttributes. Encrypted BitOr FileAttributes. Compressed 上述代码相当于f.attributes=2138 要确定文件或者文件夹的某个属性被设置，可使用与操作符bitand这样来检测： if f.attributes bitand fileattributes.hidden &gt;0 then response.write(“属性为隐藏!”) end if 检测函数： sub getfileinfo() dim f as new fileinfo(server.mappath(“test.aspx”)) f =new fileinfo(strf) label1.text="文件信息: 文件名称:"&amp; f.name &amp; " 文件路径:" &amp; f.directoryname &amp; " 创建时间:" &amp; f.CreationTime &amp]]></description>
		<author><![CDATA[maliang1225]]></author>
		<pubDate>2007-07-13 13:40:00</pubDate>
		</item>
				<item>
		<title><![CDATA[[.NET]ADO.NET调用存储过程]]></title>
		<link>http://blog.pfan.cn/maliang1225/27500.html</link>
		<description><![CDATA[一: 执行不带返回参数(Input)的存储过程&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1： 首先在数据库写个存储过程， 如创建个 addUser存储过程。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Create Proc addUser&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @ID int,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@Name varchar(20),&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @Sex varchar(20)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; As&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Insert Into Users Values( @ID, @Name,@Sex )
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2：创建SqlCommand对象，并初始SqlCommand对象 如：&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&]]></description>
		<author><![CDATA[maliang1225]]></author>
		<pubDate>2007-07-13 13:39:00</pubDate>
		</item>
				<item>
		<title><![CDATA[[C#].Net生成静态页面方案汇集(转)]]></title>
		<link>http://blog.pfan.cn/maliang1225/27499.html</link>
		<description><![CDATA[　方案1：/// &lt;summary&gt;/// 传入URL返回网页的html代码/// &lt;/summary&gt;/// &lt;param name="Url"&gt;URL&lt;/param&gt;/// &lt;returns&gt;&lt;/returns&gt;public static string getUrltoHtml(string Url){errorMsg = "";try{System.Net.WebRequest wReq = System.Net.WebRequest.Create(Url);// Get the response instance.System.Net.WebResponse wResp =wReq.GetResponse();// Read an HTTP-specific property//if (wResp.GetType() ==HttpWebResponse)//{//DateTime updated =((System.Net.HttpWebResponse)wResp).LastModified;//}// Get the response stream.System.IO.Stream respStream = wResp.GetResponseStream();// Dim reader As StreamReader = New StreamReader(respStream)System.IO.StreamReader reader = new System.IO.StreamReader(respStream, System.Text.Encoding.GetEncoding("gb2312"));return reader.ReadToEnd();}catch(System.Exception ex){errorMsg = ex.Message ;}return "";}　　你可以用这个函数获取网页的客户端的html代码，然后保存到.html文件里就可以了。　　方案2：　　生成单个的静态页面不是难点，难的是各个静态页面间的关联和链接如何保持完整；特别是在页面频繁更新、修改、或删除的情况下；　　像阿里巴巴的页面也全部是html的，估计用的是地址映射的功能关于地址映射可参考：htt]]></description>
		<author><![CDATA[maliang1225]]></author>
		<pubDate>2007-07-13 13:38:00</pubDate>
		</item>
		</channel>
</rss>