自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 资源 (4)
  • 收藏
  • 关注

原创 好久没来啦

好久没来啦,没来写过东西,有一年半了。这一年半都在和网络服务器打交道,怎么说呢,刚刚入门吧。做的事情比较杂,写代码,申请资源,跨部门合作,部署日常、预发、线上环境...,大公司流程很规范,也让人蛋疼。一直想离开这里,因为在这里我找不到家的感觉。一个月前,收到两家北京公司的offer,走还是不走,着实让我纠结了好长时间,到今天我决定不去北京了,但说实话

2012-02-11 16:29:09 567

原创 libcurl的使用

libcurl是一个开源的网络传输库,客观的来讲在很多项目中,它被使用的频率是相当高的,但是libcurl的官网上关于如何使用它的文档却写的不是很清楚地。最近,由于公司项目的需要,研究了一下libcurl,遇到了许多困难,记了下来。 我使用libcurl主要是实现http服务,那下面的记录也主要是实现http服务过程中遇到的一些问题。 libcurl主要提供了两种接口:easy i

2010-09-18 15:56:00 2567 2

原创 Linux epoll 笔记

这两天将重写服务器底层的东西,专门记录了下。 epoll_create(int size)的参数size要求调用者提供一个监听套接字数目,注意这里的size并不是指“设置了size等于n,就只能监视n个套接字”,这个size只是告诉内核根据提供的大小来设置内部的数据结构,实际上加入epoll中的套接字数目超过n也是没有问题的。但是,一般来讲将这个size设置为“需要监视的套接字数目

2010-09-14 17:03:00 760

原创 STL源码剖析笔记六--适配器

适配器在软件设计中是一种设计模式,stl里也有一种叫做适配器的元素,比如mem_fun。mem_fun的作用就是可以让成员函数称为仿函数,那我们知道成员函数是函数,而仿函数是对象,怎么实现由函数到对象的转换呢?这就是mem_fun适配器的作用。本质上mem_fun所做的事情就是生成一个仿函数,这个仿函数会调用成员函数。 而binder也是属于适配器范畴,它也是使用了上面所说的原

2010-09-14 17:01:00 358

原创 还是要读英文原著

前几天偶然的机会访问了www.sgi.com,无聊的看了看SGI STL的文档,当我把introduction page看完时,我发现其中有许多思想过去我一直都不知道,尽管我还是看过一些STL的书的。天啊,要想真真学到计算机方面的东西,还得读英文啊。中文的书以及那些个“专家”,真的没法说,自己整不出新鲜的东西,还把别人的东西弄臭了!

2010-04-17 23:29:00 479

原创 服务器开发要点

1、仔细阅读《Unix网络编程》中的相关章节,充分掌握套接字编程的原理2、找一份产品级的服务器代码,学习学习3、学习ACE、Libevent等网络中间件,主要是学习别人的网络底层框架实现方式4、熟悉openssl、zlib及加密等开源库的使用5、最后,还是要多做项目

2010-04-17 23:21:00 421

原创 Singleton单件模式的思考(续)

前面关于单件模式的分析,主要说明了单件的实现需要考虑的一些主要的问题,并且我们发现要想实现可复用的单件,不是那么的容易,可能涉及到一些高级c++的知识。在深层次的分析可复用的单件的设计之前,还有几个问题需要顾及。1、dead_reference问题2、dead_reference产生的原因

2009-07-23 21:45:00 415

原创 STL源码剖析笔记五--仿函数

说实话,我现在真不知道仿函数存在的必要性,因为函数指针完全可以代替它。仿函数又称为函数对象,也就是说它起着函数的作用,但它是一个对象。 class ISPOSITIVE{ public:    bool operator()(int x){return x > 0 ? true : false;} };  std::cout ISPOSITIVE()(-

2009-07-22 23:20:00 442

原创 STL源码剖析笔记四--迭代器与traits技法

迭代器就是起着如指针作用般的类迭代器与容器、算法、配置器之间的关系模板偏特化与traits技法模板偏特化与traits技法的使用案例 迭代器: 迭代器是一个concept,它类似于c++的原生指针,可以遍历结构或容器中的元素。迭代器也是一种设计模式的体现,使用迭代器可以按一定的顺序访问容器的元素,而又不暴露容器的实现细节。既然迭代器的概念类似于原生指针,那么迭代器必

2009-07-22 23:16:00 670 1

原创 UI与逻辑的关系、主线程与工作线程的通讯及对观察者模式、消息总线机制的思考

1、UI与逻辑的关系 2、主线程与工作线程的通讯 3、观察者模式 4、消息总线机制

2009-07-22 23:12:00 502

原创 auto_ptr、auto_ptr_ref及它们存在的问题

1、我们需要智能指针编程习惯导致内存泄露、野指针;异常产生时内存泄露2、解决问题的办法,智能指针的产生3、设计智能指针时,需考虑的问题不同类型的智能指针的赋值或拷贝操作、所有权转移、多线程安全4、STL中智能指针auto_ptr5、auto_ptr_ref存在的原因6、auto_ptr存在的一些问题(比如,赋值运算符遇到右操作数为NULL的情况,可能本身就是目前C++语

2009-07-22 22:59:00 735

原创 Singleton单件模式的思考

这两天项目终于结束了,有了些空闲时间来看些书并修改修改自己编写的垃圾代码。想到自己为实现全局唯一实例而写的一个类,仔细的看了看,并对照C++设计新思维上对于Singleton的分析,发现自己的设计果然够有缺陷,呵呵!这个缺陷曾经在调试时出现过,当时还不能理解,今天读到大师的佳作,豁然开朗!      Singleton单件模式可以说是GoF书中最简单的最容易理解的模式了,但是却又是最难以实现的

2009-07-21 00:25:00 783

原创 STL源码剖析笔记三

二、内存空间的构造与初始化       Allocator除了完成内存请求的分配之外,还在空间的构造与初始化方面做了一些重要的工作。C++中的类型有两类:内建类型(如int、char)和用户自定义类型。对内建类型的构造或初始化比较简单,只是一些简单的赋值操作,主要是诸如memset或memmove之类的操作。但是对于自定义类型就没有那么简单了,比如对一个类的实例进行构造并初始化,需要调用类的构

2009-07-19 16:36:00 1230

原创 STL源码剖析笔记二

在学习STL时,第一个需要知道的东西就是Allocator了,但是我们发现在使用STL时,几乎又用不着与Allocator相关的任何知识,这是因为STL将各个Container的实现中默认了所使用的Allocator,比如std::vector,这里顺便提一下,在设计类模板的时候,可以给类型参数赋予默认值,当用户没有特别的设置那个类型参数时,模板就使用默认的类型。      Alloc

2009-07-19 13:19:00 695

原创 读STL源码剖析笔记(一)

在读源码剖析之前,有几点知识是必不可少的。一是模板特化与部分特化、二是operator new、三是基本的数据结构知识,对于我来说主要是红黑树和hash。一、模板特化与部分特化:templateclass Ordinary{    public:        T* Func(U&);    private:        T m_Var;}; //特化

2009-07-02 00:46:00 525

原创 Virtual PC下安装MS-Dos及Linux总结

总算是成功的实现了我的愿望,花了整整一天的时间。我的希望就是能够在虚拟机上装上Dos和Linux,并且能够实现虚拟机与宿主机之间的文件共享。我总结了一下之所以办这件事情花了这么久,主要是获得的信息有限或有误。我发现,在网上找解决难题的方法确实很困难,很多人包括我在内都是入门级选手,我们一遇到问题自然就去网上寻找答案,巧的是网上很多人都爱发一些错误的东西,或者他们根本不懂还乱说。比如,Virtu

2009-05-21 20:31:00 1139 1

原创 汇编程序基础知识要点

汇编程序基础知识要点:汇编程序由汇编指令、伪指令、标号组成汇编指令是cpu真正要执行的代码伪指令不是用于被cpu执行的代码,而是用于被编译器识别的特殊指令,比如end告诉编译器汇编程序到此为止,start告诉编译器程序的第一条指令从这里开始标号实际上是地址的一种表示,表明了某一个段的起始地址80x86cpu通用寄存器:ax,bx,cx,dx段寄存器:ds,cs,ss,e

2009-05-16 19:59:00 903

原创 结构化存储-复合文档-永久对象

这几天又复习了一下去年学习的COM知识,总算是稍许理解了COM扩展中的结构化存储、复合文档和永久对象机制。一、结构化存储的核心概念        结构化存储在文件系统基础之上,又建立了一个存储系统,具体来说,是在普通文件内建立了一套存储系统(结构)。文件系统可以看成是一棵树,树上有子结点,子结点可以使文件或目录,而每个目录又是棵子树,子树下面也有文件或目录。结构化存储系统与文件系统极其相似,只不过

2008-05-23 16:55:00 2117 2

原创 对话框的使用

        MFC中的对话框包括模态对话框和非模态对话框,我们平时用的最多的就是模态对话框。模态与非模态对话框之间的最明显的区别(对用户来说)就是,不关闭模态对话框不能对所属程序的其他窗口进行操作,而非模态对话框显示时还可以操作其他窗口。         和对话框相关的两个东西就是“对话框模板”和“对话框类”,什么是对话框模板呢?其实当你在资源编辑窗口中“搭建对话框”时,你“修饰”的可视对

2008-04-27 23:53:00 864

原创 字符串转换总结

    在编程中经常遇到一些有关于字符串转换的问题,如果你不熟悉经常会弄错,下面我就把我在项目开发过程中遇到的有关字符串转换的一些问题进行一下总结。1 char*       wchar_t*多字节字符串到宽字节字符串的转换可以使用函数MultiByteToWideChar,宽字节字符串到多字节字符串可以使用WideCharToMultiBytes。2 char* /wchar_t* 

2008-04-27 23:51:00 905

原创 “程序未响应”的思考总结

      在开发聊天程序客户端的过程中,我碰到了一个问题:当运行客户端成后,打开任务管理器,显示程序未相应。我就想是什么原因导致我的程序未响应呢?是我的程序里面有bug?      我上网查了一下,有人说可能程序本身就有bug,有人说有可能程序里面有while无限循环。我的感觉是可能是第二种情况,因为我的程序里面为了和服务器进行连接,创建了绘画套接字,而因此从服务器recv数据,我们都知道r

2008-04-27 23:02:00 2694 1

原创 聊天工具的开发(1)

这一段时间公司的项目不是特别的紧,无事之余我突然有一种想开发一个聊天工具的想法,于是就一步一步做了起来。         首先是对于目前网络上经常使用到的聊天工具进行了分析,对于我来说最熟悉的就是QQ。我对使用QQ的操作以及QQ的执行过程进行了仔细的观察,当然观察的内容也只是和我想做的部分相关,之余QQ游戏之类没有做详细的调研。我想对于QQ这样一个聊天工具平台而言,主要的架构几

2008-04-27 22:37:00 4500 4

原创 结构体的大小与基本类型的大小(32位)

the size of the basic type in bytes --------------------------------------------------------------------sizeof(bool)     is: 1              sizeof(char)     is: 1              sizeof(int)      is:

2008-04-24 12:55:00 1425

原创 extern "C"与.def文件的作用

首先,我们需要知道C和C++编译器对函数名字的处理方式是不一样的;其次,就是同为C编译器的两个不同产品,在编译时对函数名字的处理方式也是有区别的,比如microsoft vc++与dev c++。所以,extern "C"与.def文件正是为了解决这两种情况而引入的处理方法。第一、extern "C"的作用       比如一个C源程序A.c要使用C++编写的库函数,在A.c中#inclu

2008-03-21 18:27:00 1698

深度探索C++对象模型

深度探索C++对象模型由侯捷翻译,是深入学习C++的绝好材料

2009-05-18

Makefile手册

Makefiel手册对编写Makefile起到指导性作用,文中讲述了Makefile编写的原则。

2009-05-18

STL源码剖析(全)_侯捷

STL源码剖析是对STL的深入探索,文中包含了大部分源代码,学习该书不仅有助于增加对STL的了解,对数据结构及算法也有很大的帮助

2009-05-18

汇编语言_王爽_清华大学

汇编语言_王爽版适合初学者学习,全文简单易懂 可以为深入学习汇编及微机接口打下坚实的基础

2009-05-18

空空如也

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

TA关注的人

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