自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(22)
  • 资源 (7)
  • 收藏
  • 关注

原创 C++变量和对象的区别联系

对象和变量这两个概念莫要搞乱,颈是颈,椎是椎,虽然两者都对应着一块内存,但是从不同的角度去理解内存就会产生不同的意义。变量:所谓变量就是一种定义,通过定义编译器将会开辟一段空间,并将这段内存空间和这个变量的名字捆绑在一起。从这个意思去理解,其实说白了:变量名就是内存在代码中可视化的一个符号。也就是说,如int a,a只是内存中某段地址在代码中可视化的一个符号,a本身作为符号并不占用空间

2012-03-21 13:15:34 8198 1

原创 C++常量折叠

今天回顾了大学这几年学习C++的点点滴滴,在回顾了“常量折叠”这里时,突然困惑了,当时学习这点知识时的理解是:可折叠的常量像宏一样,在预编译阶段对常量的引用一律被替换为常量所对应的值,就和普通的宏替换没什么区别,并且,编译器不会为该常量分配空间。现在回顾起来,当时是多么的天真,被现象迷惑了,常量折叠确实会像宏一样把对常量的引用替换为常量对应的值,但是,并非不给该常量分配空间,如下代码:#d

2012-03-16 03:07:27 12234 21

原创 数组名和指针的区别

近段时间在整理自己大学几年来学习C++的点点滴滴,写这篇文章源于看林锐博士的《高质量C++指南》时,看到文章直接把指针和数组名视为同一东西,原文为“数组名本身就是一个指针,是一个指针常量,即a等价于int * const a,因此你不能试图修改数组名的值”,摘自第三版127页第7.2.1小节。    自己初学C++时也被数组和指针搞得昏头转向过,通过多方求证和对比实验已把指针和数组弄得稍明白,

2012-02-26 01:04:56 38022 31

原创 面向对象的设计原则

在经历了几个项目之后,对设计的重要性体会更加深刻,并且当项目稍大时,面向对象的感觉就越差,在搭建了框架之后,常常不能严格的面向对象,在某个地方需要一些额外的功能时,不是加函数就是加辅助类,设计完全被打破,使得耦合度增加,后期难以理解和维护。面向对象简单的讲就是将数据和行为捆绑在一起。因此,一个对象首先拥有数据(属性),然后才有行为(用来访问活修改对象的属性),因此,编码中常常出现的一个困扰是(

2012-03-21 17:10:00 921

原创 编程规范之--变量

1、现在存在两种比较流行的命名方法,匈牙利命名法或者unix like命名法,选择适合自己的。2、全局变量前加g_,静态变量前加s_,突出,使调用者倍加小心3、使用常量时,尽量使用const变量代替宏定义,“尽量使用编译器而不使用预编译器”,因为宏定义在预编译阶段已经被展开,宏符号无法进入编译阶段,而且宏展开没有类型信息,无法做类型安全检查,一旦出错,难以找到错误的出处,而如果按照常量来定

2012-03-21 14:46:17 875

原创 理解“从规则上实现”和“从技术上实现”的不同

如前面一篇文章中提到的,为了实现模块的私有,私有的东西应当放在源文件中声明定义,这样就不会直接暴露公开给外部,这里有两个说法:1、如果这些定义没有加static限制,则这样的设计只是从规则上实现了变量的私有,因为在源文件中的声明只是表明它的语义,并且设定规则:这些变量是私有的,“不应该在外部模块引用”。但是,实际上并没有阻止别人的访问,因为别的文件内是可以引用得到的,如果某些新来的不熟悉团队规

2012-03-21 14:16:55 1101

原创 编程规范之--头文件

依赖:如果a.h包含了b.h则成a依赖b,当b修改时,直接包含了b或者包含了a(间接包含了b)的源文件都需要重新编译,如果a修改了,则包含了a的源文件要重新编译。1、尽量不要在头文件中包含头文件(库文件另外讨论,因为库文件不会被修改),以减少文件间的依赖关系,使得文件的耦合度降低2、头文件中只适宜放置对外接口或者变量的声明,而不能放置定义或者实现。因为当头文件被多个源文件包含时,会产生多个

2012-03-21 14:07:24 1636

原创 写代码要坚持的总原则

1、清晰      因为代码首先是给人看的,之后才是给编译器看,然后被机器执行,所以,代码第一个原则就是,代码一定要清晰明了,包括语义,目的要清晰。这样便于代码的理解和维护,重构。      虽然,编写代码的第一个目的是能够给出正确的结果,但是,即使代码的运算结果是正确的,但是代码写的一团糟,除了机器外没人能看懂理解,那么这段代码也就没什么意义了,虽然目前代码能运行正确,但是这给后期的维护

2012-03-21 13:49:17 1968

转载 C/C++编译和链接过程详解 (重定向表,导出符号表,未解决符号表)

详解link 有 些人写C/C++(以下假定为C++)程序,对unresolved external link或者duplicated external simbol的错误信息不知所措(因为这样的错误信息不能定位到某一行)。或者对语言的一些部分不知道为什么要(或者不要)这样那样设计。了解本文之后, 或许会有一些答案。     首先看看我们是如何写一个程序的。如果你在使用某种IDE(Visu

2012-03-16 13:06:36 12291 6

原创 C++重载类型转换操作符

在需要做数据类型转换时,一般显式的写法是:type1 i;type2 d;i = (type1)d; //显式的写类型转,把d从type2类型转为type1类型这种写法不能做到无缝转换,也就是直接写 i = d,而不需要显式的写(type1)来向编译器表明类型转换,要做到这点就需要介绍一下“类型转换操作符”,拿最简单的基本类型封包解包来举例:class Integer{publ

2012-03-08 13:40:16 23766 4

转载 myseelite--p2p流媒体

是一个直播(也支持轮播、点播)系统。是国内一家公司(mysee)倡导的开源项目,由于有公司背景,所以也是功能最强大的一个系统。直播源支持从摄像头直接获取,也可以是mms流。文档非常全,还有不少书籍介绍它(《P2P网络技术原理与C++开发案例》专门有一章讲它),学习起来很方便。我个人也非常推崇它。myseelite有myseelite1和myseelite2两个版本,2比1升级许多功能。最新的版本应

2012-03-06 14:37:37 2558

原创 Qt创建新文件

在C/C++语言中,当我们调用fopen("filename","w")时,如果filename这个文件并不存在,则会创建这个文件,并打开。但是在Qt中,如果我们想创建一个新文件,怎么办呢?QFile file("filename");file.open(QIODevice::WriteOnly);这个时候如果filename不存在,Qt会创建这个文件吗?不能,如果要创建这个新文件,

2012-03-06 12:26:33 32117 9

原创 recv和send的真正作用

区分应用层的recv,send和内核中套接字的真正读取数据,要知道,TCP协议层是运行与内核当中,而通信是网卡直接的通信,因此,不要认为,没有调用recv就不会有数据,不管调没调用recv,只要对方send,线路上有数据,那么,协议就会从网卡里面读取该数据进内核的socket缓冲区中,而调用recv的真正作用只是把数据从socket内核缓冲区中把数据拷贝到应用层指定的buffer中,仅此而已,对协

2012-02-27 01:29:22 2048 2

原创 区分 WinSock中,closesocket 和 shutdown的作用

如果是shutdown(SD_SEND)则会发送FIN包,这是对协议层产生的影响,此时,协议层会首先把缓冲区中的数据发送出去,最后再发送FIN包,次称为‘从容关闭’或者‘优雅关闭’。而closesocket虽然也会发送FIN包,但是,此时会丢弃掉缓冲区中的数据,导致数据丢失,此称为‘强制关闭’,并且closesocket会使连接释放,并且,系统会释放与该socket相关的资源

2012-02-27 01:28:28 4855

原创 CLOSE_WAIT的产生以及影响和解决方案

今天,做了CoolDown的测试时才发现,C/S架构中,如果服务器先执行主动关闭,则非常有可能导致客户端的socket一直处于CLOSE_WAIT状态,相应的导致服务器端的socket一直处于FIN_WAIT2状态,愿意是,当服务器端执行主动关闭时,发送FIN包,客户端相应ACK,,这个时候,服务器端进入FIN_WAIT2,而客户端进入CLOSE_WAIT状态,如果这个时候,客户端不执行shutd

2012-02-27 01:27:50 3050

原创 面向对象编程的精髓在于将行为绑定在数据上

"面向对象编程的精髓在于将行为绑定在数据上"这句话是经典的,因为我们都知道,面向对象的思想是从面向过程编程中发展而来的,而在早期的面向过程编程语言中,程序是由一组结构体和操作该结构体对象的函数组成,并且,结构体和函数是分开的,离散的,通过在函数参数列表中声明一个结构体指针来和结构体产生关联,这样的关联关系使得数据和函数之间的的关系不够明显清晰,比如:Structtask_struct{

2012-02-27 01:26:04 1934

原创 纯虚析构函数

纯虚析构函数和普通纯虚函数的区别在于,纯虚析构函数需要提供函数的实现,而一般纯虚函数不能有实现,这样的原因在于,纯虚析构函数最终需要被调用,以析构基类对象,虽然是抽象类没有实体。而如果不提供该析构函数的实现,将使得在析构过程中,析构无法完成而导致析构异常的问题Calss A{   public:   A(){}   virtual ~A()=0;}A::~A(){}

2012-02-26 01:19:38 7435 6

原创 虚析构函数

Class A{}ClassB:public A{}ClassC:public B{} 在一般的使用下,如C c;如果存在继承派生关系,当构造一个子类对象时,会先从最上层先调用基类的构造函数构造基对象,然后逐步往下,最后调用子类的构造函数完成子类对象的构造,而当销毁子类对象时,会按照相反顺序,先调用子类的析构函数,然后调用基类的析构函数,最后完成一个对象的析构。注意,这是正常的

2012-02-26 01:06:17 1440

原创 C/C++ 中的0长数组(柔性数组)

在标准C和C++中0长数组如charArray[0]是不允许使用的,因为这从语义逻辑上看,是完全没有意义的。但是,GUN中却允许使用,而且,很多时候,应用在了变长结构体中,如:StructPacket{Int state;Int len;Char cData[0]; //这里的0长结构体就为变长结构体提供了非常好的支持}; 首先对0长数组做一个解释:

2012-02-26 01:03:34 23042 4

原创 腾讯笔试附加题(Web前台方向)2011-10-10

如下图所示,请编程将红色的方块从左侧移动到右侧,要求方块非匀速运动,并且带缓冲效果,编码不允许依赖已有的javascript框架、控件等                  有一个n*m的表格,每个单元格里面有一个随机的自然数,请写一个javascript函数实现如下功能:        分析整个表格,把其中的质数所在的单元格的背景色修改为红色。

2011-10-20 15:47:10 1304

原创 腾讯笔试附加题(C/C++)2011-10-10

C/C++方向附加题    假设我们有n台手机QQ服务器,在用户登录之后,每台服务器都缓存有用户的在线信息(号码,昵称,好友列表等),在客户端访问这些服务器的时候(假设客户端的请求都含有QQ号字段),我们一般考虑采用ServerIpArray[QQNum%n]的方式来获取服务器的地址。其优点是简单快速,负载均衡,并且同一个QQ号码每次都可以落在同一个服务器上。但是,缺点是,一旦某台服务器当

2011-10-20 13:50:48 1568 2

原创 迅雷2011-10-19日笔试题(重庆站)

一、客观题:/*选择题就不上了,都是些中规中矩的语言基础题,上几道有用处的算法题,以后能用上*/ 6.下面的程序可以从1....n中随机输出m个不重复的数。请填空knuth(int n, int m) //我觉得这个题目有问题,当时卡了一会,还是没做出来,等强人{    srand((unsigned int)time(0));    for (int i=0; i

2011-10-20 12:51:44 3740 20

Computer Organization and Architecture - Designing for Performance

英文版,William Stallings的杰作,非常全面详细的介绍了计算机系统的组织结构与原理,配合各种图、例子,表,非常好的一本书

2012-10-30

基于TCP/IP的Linux文件传输系统

基于Tcp/IP的Linux文件传输系统,分为服务器和客户端模块,共有账号管理,信息管理,资源管理,上传,下载、查找、浏览等基本功能,且支持断点续传,非常棒的一个功能,且,在传输过程中,用OpenSSL对数据进行加密,增加了安全性,系统中涉及到多线程,线程同步,线程池,网络通信,协议设计等知识,是本人和其他极为兄弟一起完成的练习作品,也是一个不错的学习例子,分享给大家一起学习

2011-08-18

C语言常用用Python重写100例

对于常用的C语言函数,如max,sort,prime等常用函数,用Python重写,达到练习的目的,例子非常丰富完整,如果能够从头作完,绝对能成为一个Python高手

2011-08-18

python_3.1官方入门指南中文版

学习python非常棒的一本书,且书的目录有按章节模块制作成树形列表,方便阅读。 本书由浅入深,从语言基础到数据类型数据结构,再到强大的模块,像urllib,zlib等,逐一介绍,可以当做学习资料,也可以当做手册来查阅

2011-08-18

软件需求分析模板 实际例子讲解

用一个例子讲解了软件开发过程中的需求分析,建模和设计,文档清晰

2010-08-22

Inside C++ Object Model

C++ 对象模型,对深入了解C++对象模型有很好的帮助,英文版,对专业英语也有帮助

2010-05-08

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除