gaoqing000

欢迎您的到来。哈哈(welcome!)
随笔 - 28, 文章 - 0, 评论 - 108, 引用 - 0

导航

<2010年3月>
28123456
78910111213
14151617181920
21222324252627
28293031123
45678910

留言簿(0)

随笔分类

随笔档案

文章档案

链接

搜索

最新评论

阅读排行榜

评论排行榜

2010年3月19日

大家看看我写的代码质量如何?

实现密钥与明文的异或运算,长度以明文为准,即若明文比密钥短,则只比较明文的长度,
若明文长,则让明文循环从头开始与密钥比较

我的代码为:
bool  Encrypt(char *pKey, DWORD dwKeyLen, char *pData, DWORD dwDataLen, char *pEncryData, DWORD dwEncryLen)
{
   
for(int i=0; i<dwDataLen; i++)
       pEncryData[i] 
= pData[i] ^pKey[i % (dwKeyLen)-1)];
    
return true;
}


不知道大家觉得如何?

发表于 2010-03-19 14:08 gaoqing000 阅读(30) | 评论 (1)编辑 收藏

2010年3月17日

论坛进入不了, 难道我被屏蔽了吗?

论坛进入不了, 我被屏蔽了吗?

发表于 2010-03-17 13:39 gaoqing000 阅读(110) | 评论 (3)编辑 收藏

2009年9月29日

经典C++面试题

经典C++面试题

1.介绍一下STL,详细说明STL如何实现vector。
Answer:
STL (标准模版库,Standard Template Library.它由容器算法迭代器组成。
STL有以下的一些优点:
可以方便容易地实现搜索数据或对数据排序等一系列的算法;
调试程序时更加安全和方便;
即使是人们用STL在UNIX平台下写的代码你也可以很容易地理解(因为STL是跨平台的)。
vector实质上就是一个动态数组,会根据数据的增加,动态的增加数组空间。
2.如果用VC开发程序,常见这么几个错误,C2001,c2005,c2011,这些错误的原因是什么。
Answer:
  在学习VC++的过程中,遇到的LNK2001错误的错误消息主要为:
  unresolved external symbol “symbol”(不确定的外部“符号”)。
  如果连接程序不能在所有的库和目标文件内找到所引用的函数、变量或标签,将产生此错误消息。
一般来说,发生错误的原因有两个:一是所引用的函数、变量不存在、拼写不正确或者使用错误;其次可能使用了不同版本的连接库。

编程中经常能遇到LNK2005错误——重复定义错误,其实LNK2005错误并不是一个很难解决的错误.
3.继承和委派有什么分别,在决定使用继承或者委派的时候需要考虑什么。
在OOD,OOP中,组合优于继承.
当然多态的基础是继承,没有继承多态无从谈起。
当对象的类型不影响类中函数的行为时,就要使用模板来生成这样一组类。
当对象的类型影响类中函数的行为时,就要使用继承来得到这样一组类.
4.指针和引用有什么分别;如果传引用比传指针安全,为什么?如果我使用常量指针难道不行吗?
(1) 引用在创建的同时必须初始化,即引用到一个有效的对象;而指针在定义的时候不必初始化,可以在定义后面的任何地方重新赋值.
(2) 不存在NULL引用,引用必须与合法的存储单元关联;而指针则可以是NULL.
(3) 引用一旦被初始化为指向一个对象,它就不能被改变为另一个对象的引用;而指针在任何时候都可以改变为指向另一个对象.给引用赋值并不是改变它和原始对象的绑定关系.
(4) 引用的创建和销毁并不会调用类的拷贝构造函数
(5) 语言层面,引用的用法和对象一样;在二进制层面,引用一般都是通过指针来实现的,只不过编译器帮我们完成了转换.
不存在空引用,并且引用一旦被初始化为指向一个对象,它就不能被改变为另一个对象的引用,显得很安全。
const 指针仍然存在空指针,并且有可能产生野指针.
总的来说:引用既具有指针的效率,又具有变量使用的方便性和直观性.
5.参数传递有几种方式;实现多态参数传递采用什么方式,如果没有使用某种方式原因是什么;
传值,传指针或者引用
6.结合一个项目说明你怎样应用设计模式的理念。
设计模式更多考虑是扩展和重用,而这两方面很多情况下,往往会被忽略。
不过,我不建议滥用设计模式,以为它有可能使得简单问题复杂化.
7.介绍一下你对设计模式的理解。(这个过程中有很多很细节的问题随机问的)
设计模式概念是由建筑设计师Christopher Alexander提出:"每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心.这样,你就能一次又一次地使用该方案而不必做重复劳动."上述定义是对设计模式的广义定义.将其应用到面向对象软件的领域内,就形成了对设计模式的狭义定义.
可以简单的认为:设计模式就是解决某个特定的面向对象软件问题的特定方法, 并且已经上升到理论程度。
框架与设计模式的区别:
1,设计模式和框架针对的问题域不同.设计模式针对面向对象的问题域;框架针对特定业务的问题域
2,设计模式比框架更为抽象.设计模式在碰到具体问题后,才能产生代码;框架已经可以用代码表示
3,设计模式是比框架更小的体系结构元素.框架中可以包括多个设计模式
设计模式就像武术中基本的招式.将这些招式合理地纵组合起来,就形成套路(框架),框架是一种半成品.
8.C++和C定义结构的分别是什么。
C language 的结构仅仅是数据的结合
C plus plus的struct 和 class 其实具备几乎一样的功能,只是默认的访问属性不一样而已。
9.构造函数可否是虚汗数,为什么?析构函数呢,可否是纯虚的呢?
构造函数不能为虚函数,要构造一个对象,必须清楚地知道要构造什么,否则无法构造一个对象。
析构函数可以为纯虚函数。
10,拷贝构造函数相关问题,深拷贝,浅拷贝,临时对象等。
深拷贝意味着拷贝了资源和指针,而浅拷贝只是拷贝了指针,没有拷贝资源
这样使得两个指针指向同一份资源,造成对同一份析构两次,程序崩溃。
临时对象的开销比局部对象小些。
11.结合1个你认为比较能体现OOP思想的项目,用UML来描述。(最好这个项目继承,多态,虚函数都有体现)这个问题大概会占面试时间的一半,并且会问很多问题,一不小心可能会被问住)。
。。。
12。基类的有1个虚函数,子类还需要申明为virtual吗?为什么。
不申明没有关系的。
不过,我总是喜欢显式申明,使得代码更加清晰。
13.C也可以通过精心封装某些函数功能实现重用,那C++的类有什么优点吗,难道仅仅是为实现重用。
并不仅仅是这样的。
OOD,OOP从根本上改变了程序设计模式和设计思想,具备重大和深远的意义。
类的三大最基本的特征:封装,继承,多态.
14.C++特点是什么,如何实现多态?画出基类和子类在内存中的相互关系。
多态的基础是继承,需要虚函数的支持,简单的多态是很简单的。
子类继承父类大部分的资源,不能继承的有构造函数,析构函数,拷贝构造函数,operator=函数,友元函数等等
15.为什么要引入抽象基类和纯虚函数?
主要目的是为了实现一种接口的效果。
16.介绍一下模板和容器。如何实现?(也许会让你当场举例实现)
模板可以说比较古老了,但是当前的泛型编程实质上就是模板编程。
它体现了一种通用和泛化的思想。
STL有7种主要容器:vector,list,deque,map,multimap,set,multiset.
17.你如何理解MVC。简单举例来说明其应用。
MVC模式是observer 模式的一个特例,典型的有MFC里面的文档视图架构。
18,多重继承如何消除向上继承的二义性。
使用虚拟继承即可.

发表于 2009-09-29 13:05 gaoqing000 阅读(1916) | 评论 (4)编辑 收藏

2009年3月30日

我晕,我被锁定了。怎么办?

我晕,我被锁定了。怎么办?
已有四天了

发表于 2009-03-30 14:10 gaoqing000 阅读(1924) | 评论 (3)编辑 收藏

2009年3月29日

DebugView的使用

DebugView可以显示计算机上的字符信息。
如printf, cout , TRACE, OutputDebugString等都能在
其中打印出来。
比VC的Debug效果更好。可能在运行时打印。
用来调试较为方便.

发表于 2009-03-29 17:10 gaoqing000 阅读(2508) | 评论 (2)编辑 收藏

2009年3月18日

挪威浏览器开发商Opera Software ASA 的opera浏览器----Opera执行官Jon von Tetzchner接受eWEEK.com专访

对挪威浏览器开发商Opera Software ASA公司来说,2004可谓值得大书特书的一年。今年Opera终于实现了在奥斯陆上市的夙愿、发布了Version

 
  7.50 网络浏览器、并首次闯入移动设备浏览器领域......

  而真正的挑战似乎还没有真正到来,要从微软占垄断地位的浏览器市场拼得一块属于自己的领土并不是一场轻松的战斗。但首席执行官Jon von Tetzchner对此却充满了信心,最使他感到欣慰的是移动设备已逐渐成为人们接入互联网的首选途径。

  Von Tetzchner最近访问洛杉矶期间,eWEEK.com资深记者Matt Hicks对他进行了专访,宾主就Opera的宏伟计划和网络浏览器的未来发展前景展开了交流。以下是采访实录:

  记者:Opera最近在奥斯陆上市之后,是否意味着从此就可以涉足任何一个感兴趣的领域?

  Von :从各方面来说Opera正在不断扩张,但并没有迷失方向,公司的主要目标和核心依然很清楚。当然,我们的重心仍然是客户互联网软件。这并不是说Opera在服务器领域无所事事,只是一个侧重点的问题。

  记者:Opera至今还没有服务器方面的产品,对不对?

  Von :没有。

  记者:有没有这方面的计划呢?

  Von :或许将来会开发出一些产品,但主要还是为浏览器服务的,着眼于提高浏览器的功能。我们的重心仍然是用户。我们不急于进入服务器或服务行业,尽管Opera对这一领域也非常感兴趣。客户看到我们在用户产品方面取得的成就后也希望我们进一步扩展产品,但我们仍然选择与伙伴进行合作。当然,有必要的话我们自己也会开发出一些服务器方面的产品来。

  记者:过去你常说用户希望得到服务器方面的软件给你造成了很大的压力,为什么?他们需要什么呢?是不是需要目前邮件服务器的替代品?

  Von :不,不是。这更多是有关进入电信业领域的问题。电信运营商希望得到Opera平台的解决方案,不知道你是否对此有所了解。事实上这是移动电话最前沿的一个终端。用户得到的大多服务都是服务器和Opera平台技术共同提供的。因此,从某种意义上来说,Opera是从用户端出发来推动这项技术。通常用户都希望得到一站式的服务,尽管这不是我们目前的战略重点,或许我们也会有所作为的。

  记者:谈到电信运营商,今天已在移动电话上装置了Opera平台,但是在相关的配套服务及服务器端却使用其它公司的产品,是不是这种情形?Opera都有哪些伙伴?

  Von :运营商们可以使用任何解决方案。比如目前的一些多任务解决方案等等。我们对此持灵活态度,我们倾听用户的意见,提供他们需要的服务。

  桌面浏览器 Vs 移动电话浏览器

  记者:大家知道,Opera过去几年里在进入移动设备浏览器领域方面费了很大的周折。进一步讲,在桌面和移动浏览器两方面,你在哪方面花费的时间最多?你如何看待这两种浏览器分开的这一现状?

  Von :这两者是统一的,是一个完美的结合。事实上产品只有一个,只是用在不同的领域而已。因此,不论是桌面还是移动浏览器,源代码是相同的。当然针对不同的用户,我们要对界面进行特别设计,因此也就需要桌面和移动两个团队。但是这两种产品的核心是一致的。

  记者:作为一个公司来讲,以上划分是否会削弱研发能力,或者有助于你更好地利用开发资源?

  Von :我们不需要另起炉灶,使用的仍然是10年前的源码,今年4月份已整整10年。

  记者:就桌面浏览器来说,此前我们讨论过Opera 7.50及同步平台。Opera另外还加强了一些附加功能-电子邮件和聊天。而我们发现其它一些浏览器,比如Mozilla浏览器与附加功能是截然分开是,它只是一个单一的浏览器。为什么Opera要把所有的功能都加入浏览器呢?这是否是Opera产品将来的方向?

  Von :作为一个公司我们是唯一的,也是靠这种方式赢利。也就是说我们必须听取用户的意见,提供他们想要的服务。我们的产品必须有自己的特点,相信用户了有理由选择Opera。

  速率是其中的一个重要因素,许多用户选择Opera就是因为她的速度快。但速度并不是Opera唯一固守的卖点,我们还要不断创新并推出新的特色服务。

  从某种意义上来说,增加功能是“最基本的发展规律”。最早的Mosaic浏览器相当简单,后来有稍复杂一些的Netscape,再后来是IE...。Opera也许过于投入了,但这就是我们的观点。这方面不存在所谓的创新问题。

  记者:我猜想分类浏览应该是最显著的一个特征?

  Von :从一开始我们开发的产品就是分页浏览。当然Opera并不是第一个采用这项技术,或许这也是可有可无的。我们有许多重要的事要做,"Sessions"是当前最首要的一项任务,当然并不仅仅限于此。

  记者:"Sessions"是什么?

  Von :这样给你说吧,现在你打开了多个浏览窗口,然后你退出了程序,当你再次打开时程序仍然默认上次的浏览窗口。显然,也就是说在窗口里还存在窗口。我猜想苹果的Safari也借助了这一想法,另外Mozilla也复制了这一做法。因此,减少功能肯定不会是浏览器发展的方向,但Opera将来可能会推出界面更简洁的浏览器。同时,我想我们所要做的并不提供浏览以外的系列功能,因为在浏览方面仍然需要很多创新,这就是我们研究的方向。另外,还有你提到的弹出式页面拦截、鼠标手势、浏览捷径、默认恢复等等......我们所要做的事情非常多,其中有些也是迫于竞争。

   语音识别浏览

  记者:我在Opera7.50版本浏览器里发现了一个其它浏览器都没有的功能,即嵌入的RSS识别功能。能不能请你介绍一个该功能的细节,或许大多用户仍然没有发现这一功能。

  Von :我们不想谈将来有可能出现的事物,我只想提到一个功能,也就是语音识别功能。这是我们同IBM进行合作的一个关键项目。同样,这也是Opera与IBM、摩托罗拉和其它厂商推动的标准之一。

  记者:Opera目前开发的语音识别浏览是否主要用于移动设备?

  Von :目前我们还在同IBM合作开发系列工具。我们的目的是要把它推向主流技术的范畴。这是一项非常有趣的技术,相信也是未来非常重要的一项技术,当然不仅仅是面向桌面系统。如果推广到移动电话、汽车及其它方面的应用将会有更大的意义。

  我们很早就注意到了语音识别功能,任何时候我们都希望拥有最领先的技术。

  记者:你们对语音方面的研究现在处于什么样的程度?这不仅仅包含语音浏览,还包括语音识别和指令的双向技术。

  Von :语音识别和指令是在网页中进行的,使用的是X+V

  技术。首先要把网页内容转化成语音信息,然后浏览器才可能要求指令并对网页进行阅读。

  记者:为什么Opera非常看重用户与浏览器之间交流的领先技术?

  Von:该项技术的市场非常广阔,比如,手机越做越小,但人们还是希望一个大的显示屏;在汽车方面,驾驶过程中不便于、也不允许看显示屏,因此就需要一项技术来解决这一问题,而语音浏览便应运而生。当然,语音浏览还有其它方式无法比拟的便利。

  记者:综观浏览器技术的发展走向,你认为今天阻碍人们使用Opera浏览器的主要障碍是什么?特别在桌面浏览器方面。

  Von :首先要认人们了解Opera浏览器,通常人们都习惯于使用IE浏览器,但现在我们要让他们知道还存在其它的选择。我们相信,一旦他们使用了Opera浏览器之后,一定会认为这是一个更好的工具。对有些人来说,认识Opera是很容易的,但有些人可能就需要一些精力。Opera有自己的特色,是一款完全不同的浏览器,许多功能比如快退和重复都是其它浏览器所不具备的。

  记者:但是我发现当有些用户在尝试使用Opera浏览器时,许多网络应用软件又迫使他们重新捡起IE。这是不是一个很严重的障碍呢?网络应用软件是不是都是专为IE研制的?

  Von :大多数专业公司都不这样做,当然和你说的情况一样,有一些应用软件可能会走捷径,使用ActiveX。我的影响是ActiveX的使用并不是很广泛。事实,还有其它更加容易的办法,我们现在也正在致力于让用户找到更加容易的办法。

  其次,情况正在发生变化,连比尔·盖茨也承认。盖茨在2000年说,2002年除了个人电脑之外将有更多的设备连入互联网。他的预言是正确的,除了时间有误以外。事实上,这些设备将来使用什么操作系统也还是一个未知数。很有可能将不再是Windows操作系统,即便仍然使用微软的操作系统,也将会是跟桌面系统全面不同的IE版本。

  记者:那么,你是如何说服用户的呢?

  Von :我们主要通过积极的方式,同时也告诉用户他们本可以节约大量的时间和精力的。目前几乎所有的主流浏览器多多少少都需要CSS的支持,而IE得到的类似支持或许是最小的。

  记者:现在Opera对移动市场的期望有多大?

  Von :这主要取决于如何对整个市场进行定义。可以对浏览器分为三类:WAP浏览器;日本广泛使用的iMode浏览器和综合浏览器。当然,如果单纯看移动综合浏览器的话,Opera目前所占的市场份额最大。当然,从整个市场来看的话,我们只占了一小部分。随着互联网的进一步普及,我们有理由相信我们将赢得领先地位,我们将提供最先进的技术。

  记者:你对Opera将来如何加快发展有什么看法?

  Von :我们将加倍努力,吸纳更多的人才,有50%的员工将来自本土以外,你要相信他们并不仅仅是看重这里的天气才来的;将有更多的设备使用Opera浏览器,特别是桌面系统。

  记者:Opera至今在美国还没有设办公地点?

  Von :Opera在美国有一些销售代表,但仍然没有一个比较正式的办公场所。

  记者:将来会不会设呢?

  Von :我们在不断地扩张,将来要进入美国市场,另外还有日本、中国。美国是一个巨大的市场,离开了这个市场我们很难取得成功,这也是我们市场策略的一个部分。

发表于 2009-03-18 13:46 gaoqing000 阅读(1009) | 评论 (0)编辑 收藏

2009年3月11日

VS2005的使用方法

1. 在VS2005中, 在"项目"中, 点击最下面的NetSoftCenter属性页
   可以看见左边有两个属性页即通用属性及配置属性, 而通用属性
 没有什么东西 ,但配置属性有很多的分项11项
>0. 常规
>1. 调试项
>2. C/C++
>3. 链接器。此项中有几个,但其中"输入"的将模块添加到程序集非常重要
>4. 清单工具
>5. 资源
>6. XML文档生成器
>7. 浏览信息
>8. 生成事件
>9. 自定义生成频骤
>10. Web部署
2. 在"工具"中有9项,分别如下
>11. 环境,
>12. 项目和解决方案, 头文件与库路径设置都在这里
>13. 源代码管理
>14. 文本编辑器
>15. HTML设计嚣
>16. Windows窗体设计器
>17. 调试
>18. 设备工具
>19. 数据库工具

发表于 2009-03-11 11:02 gaoqing000 阅读(1297) | 评论 (0)编辑 收藏

2009年3月10日

VS2005的用法

  2005年Microsoft公司推出了新的开发平台VS2005, 这个开发平台与VC6.0, VS2003有很
大差别,无论是外观上还是操作方式上,差别较大。
   对地我们开发来说,我觉得差别在于class wizard的使用方法上
VC6.0有专门的class wizard,但VS2005没有,但它的
功能在类视图的属性中全都可以找到





此处有6个图标
第一个是  按分类顺序排列图标
  它的作用是使下面的内容按顺序排列
第二个是 按字母顺序排列图标
 它的作用是使各属性按字母顺序排列
第三个是 属性图标,
 它的作用是列出项目的各个属性
第四个是 事件图标
  它的作用是列出项目的各个事件, 它与窗口中的各件控件有关
第五个是 消息图标,
  与该项目相关的各个消息均在此有所显示
第六个是 重写图标
     与该项目相关的重写函数均在此有所显示

发表于 2009-03-10 10:57 gaoqing000 阅读(1682) | 评论 (1)编辑 收藏

2008年7月29日

ADAPTER(适配器)----类对象结构模式

1.意图
   将一个类的接口转换成客户希望的另外一个接口.Adapter模式使得原本由于接口不兼容
而不能一起工作的那些类可以一起工作.
2.别名
  包装器Wrapper.
3.动机
  有时,为复用而设计的工具箱类不能够被复用的原因仅仅是因为它的接口与专业应用领域
份代码民需要的接中不匹配

发表于 2008-07-29 08:55 gaoqing000 阅读(1406) | 评论 (0)编辑 收藏

2008年6月11日

ABSTRACT FACTORY

用这样模式可以增加程序的灵活性

使用在以下几种情况
1.一个系统要独立于它的产品的创建,组合和表示时.
2.一个系统要由多个产品系列中的一个来配置时。
3.当你要强调一系列相关的产品对象的设计以便进行联合使用时.
4.当你提供一个产品类库,而只想显示它们的接口而不是实现时

发表于 2008-06-11 19:32 gaoqing000 阅读(1838) | 评论 (1)编辑 收藏