自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(29)
  • 资源 (10)
  • 收藏
  • 关注

转载 ACE反应器模式:ACE_Reactor

在服务器编程中,用来处理客户端的

2014-04-13 20:54:08 786

转载 在链表中删除指定值的元素

在网上看到很多删除链表中的元素都是指定了位置的,如何删除所有值为x的节点呢,下面以int节点的单链表为例说明: 这是C++类中的实现 void List::removeData(int data) { for(Node** cur = &m_head;*cur;) { Node* entry = *cur; if(entry->data == data) {

2013-11-19 20:37:32 2666 1

转载 IOS-表视图中添加搜索功能

在移动应用程序的世界里,用户对信息获取的速度要求非常高! iOS用户希望他们需要的信息能够迅速地,直观地展现在他们面前。 因为UITableView的上下滚动能让用户迅速,自然地浏览大量信息,许多基于UIKit的应用都使用了UITableView来组织信息。但如果信息量非常非常大,让用户上下滚动如此长的列表是非常没有效率的。所以一个搜索的功能就是必须的了。 幸运的是,UIKit里

2013-10-23 01:04:38 16639

原创 IOS学习-导航

1.使用Xcode4.2创建导航使用Single View application模板程序 需要选中Storyboard选项 2.创建成功后会看到一个Navigation Controller这就是一个导航控制器,负责控制画面导航。 选择Editor中的Embed in 菜单在导航控制器中嵌入视图控制器

2013-10-22 11:17:07 695

原创 面试题:输入一个正整数n,输出所有的连续正整数之和等于n的序列

先说下题目: 如果你输入的数字是15 那么输出为1 2 3 4 5 、4 5 6  、 7  8 这个题目在剑指offer中有一个做法,但是不是最好的做法,面试官说复杂度过高: 剑指offer上面的解法是首先设置两个值i=1和j=2,一个表示开头的正整数,一个表示结尾的正整数。当正整数的和大于15的时候i向后移动,当和15的时候j向后移动。等的时候输出一个,到后继续找。 仔细琢磨结合网上的代

2012-09-29 16:56:59 6459

原创 条款3-4:绝对不要以多态的方式处理数组与default constructor

条款3:绝对不要以多态的方式处理数组 class BST{ ...... }; class BalancedBST:public BST{.......}; void printBST(ostream& s,const BST array[ ],int num) {    for(int i = 0;i      s } 当你传入BST的数组是没有什么问题的。 现在传入B

2012-07-15 16:55:44 584

原创 条款2:最好使用C++转型操作符

C++提供4种转型 1.static_cast    他基本上具有和旧式c语言一样的功能,一样的限制,如不可以将struct转换为int,不可以将int转换为pointer等。     使用方法: static_cast(expression) 2.const_cast    除去常量性质 3.dynamic_cast    用于继承体系的转型,不是继承体系则出现错误。主要是用于将指

2012-07-15 16:29:21 375

原创 基础议题 条款1:仔细区别pointer和reference

1.首先我们需要认识到没有所谓的null reference。所以如果你有一个变量,其目的用来指向一个对象,但是也有可能不指向任何对象,那么你应该用pointer,因为你可以将pointer设置为null。换句话说,如果你不允许变量为null,那么使用reference。 具有以下行为的程序员应该隔离:   char *pc = 0;   char& rc = pc; 这样编译器可能会产生

2012-07-15 16:19:50 521

原创 条款38-40:通过复合塑模出has-a或"根据某物实现出"与private继承、多继承

条款38:通过复合塑模出has-a或"根据某物实现出" 复合是类型之间的一种关系,当某种类型的对象内包含其他类型的对象,我们说这是一种复合。 public继承是is-a关系,表示是一种的意思。复合意味着has-a关系,表示有一个或者is-implemented-in-terms-of(根据某物实现出)。 现在假设你需要一个template制造出一组classes表示不重复的对象组成的sets

2012-07-11 16:47:36 521

原创 条款36-37绝不重新定义继承而来的non-virtual函数与缺省参数

条款36:绝对重新定义继承而来的non-virtual函数 条款37:绝不重新定义继承而来的缺省参数 这两个条款说的绝不没有说不可以,意思是最好是这么做。个人觉得这两个条款没有太多可说的。 这里讲下缺省参数的问题。 在C++面向对象的技术中,virtual函数的类型是动态的,但是参数是静态的。具体可以参考《C++ primer》 以下的代码是糟糕的: class Sharp {

2012-07-11 16:01:23 559

原创 条款35:考虑virtual函数以外的其他选择

假如你正在写一个视频游戏软件,你想计算不同人物的健康指数,那么平常的方法肯定是这样实现: class GameCharacter {    public:     virtual int healthValue() const;    ........ }; healthValue被声明为virtual,说明会提供缺省方法。但是从某个角度来讲这里存在弱点。这里考虑一些其他替代方法:

2012-07-11 10:23:50 1219 1

原创 STL空间配置器

关于STL空间配置器源码有关的文件为:  他包括 负责对象的构造与析构 负责内存空间的配置与释放 空间配置器分为一级和二级 一级主要是针对内存较大的分配,二级配置器则是针对较小的内存。 二级配置器的解析:以链表的形式分成断 首先看表中对应的空间是否有剩余,如果没有在内存池中查看,内存池中没有向堆内存中请求。还是没有,再看表中较大的地方有没有剩余,比

2012-07-10 22:48:41 316

原创 条款34:区分接口继承与实现继承

public继承经过仔细的检查后发现主要有两部分组成:函数接口继承和函数实现继承,他们的区别就相当于声明与定义的区别。作为类的设计者你有可能希望继承接口,有可能继承实现或者两者都需要。、  class Sharp {    public:    virtual void draw() cosnt = 0;    virtual void error(const std::string&

2012-07-10 13:25:46 297

原创 条款33:避免遮掩继承而来的名称

这里主要说的是继承体系中的作用域 class B{  private:   int x; public:   virtual void mf1()=0;   virtual void mf2();   void mf3(); ... }; class D:public B {   public:    virtual void mf1();   void mf4();

2012-07-10 10:39:19 481

原创 第六部分 继承与面向对象设计 条款32:确定你的public继承是is-a关系

以C++进行面向对象编程,有一个重要的规则,public继承意味着是is-a关系,所谓is-a就是一种 的意思。比如我们用Person为基类,Student为派生类实现public继承。每个Student都是Person,但是每个Person不一定都是Student。在继承体系中,任何函数如果愿意接受一个Person的实参,那么也愿意接受一个Student的对象。 如:void eat(cons

2012-07-10 09:43:39 526

原创 条款31:将文件间的编译依存关系降至最低

我们还是从一个例子开始出发: class Person {    public:     Person(const std::string& name,const Date& birthday,const Address& addr);     std::string name() const;     std::string birthDate() const

2012-07-09 15:32:06 431

原创 条款29-30:为“异常安全”而努力是值得的与inlining的里里外外

条款29:异常安全     假设有个class用来表现夹带背景图案的GUI菜单。这个class希望用于多线程环境,所以它有个互斥器作为并发控制用: class PrettyMenu{  public:   ...   void changeBackgroud(std::istream& imgSrc);   ...  private:   Mutex

2012-07-09 15:31:22 342

原创 条款28:避免使用handles指向对象内部成分

看下面的问题: class Point{   public:   Point(int x,int y);   ...   void SetX(int newVal);   void SetY(int newVal);   ... }; struct RectData{   Point ulhc;   Point lrhc; }

2012-07-09 15:30:10 8839

原创 条款27:尽量少做转型动作

与C语言比,C++提供四种新式转型动作: 1.const_cast (expression)  除去对象的常量性 2.dynamic_cast (expression)  主要执行“安全向下转型”。这种无法由旧式语言执行。成本耗费最大。  成本花费高,为什么还需要这种转型?通常是因为你想在一个你认定的derived class对象身上执行derived class

2012-07-09 15:28:45 361

原创 第五部分 实现之条款26:尽可能延后变量定义式的出现时间

条款26:尽可能延后变量定义式的出现时间 在C++中只要你定义了一个类型且带有构造函数和析构函数,那么他就有成本开销。所以变量不应该过早地定义,看下面的case:   std::string encryptyPassword(const std::string& password)  {     using namespace std;     string en

2012-07-09 15:27:38 325

原创 第四部分(4)(条款25:考虑写出一个不抛出异常的swap函数)

条款25:考虑写出一个不抛出异常的swap函数 所谓swap两个对象,就是将两个对象的值彼此赋予对方。标准库可能是这样实现的: namespace std{   template   void swap(T& a,T&b)   {      T temp(a);      a = b;      b = temp;   } }

2012-07-09 15:19:23 417

原创 第四部分(3)(条款24:若所有参数皆需要数据转型,请为此采用non-member函数)

条款24:若所有参数皆需要数据转型,请为此采用non-member函数 假设有以下类(有理数类):   class Rational{    public:    Rational(int numerator=0,     //  constructor刻意不为explicit,允许int-to-Rational            int denominator=1)

2012-07-09 15:18:18 293

原创 第四部分 设计与声明(1)(条款18-22)

条款18:让接口容易被正确使用,不易被误用 我们以日期函数为例来讨论 class Date {    public:   Date(int month,int day,int year);   ..... }; 这个类客户容易犯错:  Date d(30,3,1995); //应该是Date d(3,30,1995); Date(2,30,1995)  //2月没有30 为了

2012-07-09 15:01:35 332

原创 第四部分 设计与声明(2)(条款23:宁以non-member、non-friend替代member函数)

条款23: 宁以non-member、non-friend替代member函数 思考下面的问题: 一个网页浏览器类 class WebBrowser{   public:     ...    void clearCache();//清除Cache    void clearHistory();//清除History    void removeCo

2012-07-09 14:43:34 310

原创 第四部分 设计与声明(1)(条款19-22)

条款18:让接口容易被正确使用,不易被误用 我们以日期函数为例来讨论 class Date {    public:   Date(int month,int day,int year);   ..... }; 这个类客户容易犯错:  Date d(30,3,1995); //应该是Date d(3,30,1995); Date(2,30,1995)  //2月没有30 为了

2012-07-09 10:04:13 88

原创 第三部分 资源管理(条款13-17)

条款13 以对象管理资源 class Investment{.........}; 假设有个工产函数: Investment* createInvestment(); 现在: void f() {   Investment* pInv = createInvestment();   ....   delete pInv; } 这个函数看起来是没有什么问题的,但是如果在...部分

2012-07-08 13:17:04 362

原创 第三部分 资源管理(条款13-17)

条款13 以对象管理资源 class Investment{.........}; 假设有个工产函数: Investment* createInvestment(); 现在: void f() {   Investment* pInv = createInvestment();   ....   delete pInv; } 这个函数看起来是没有什么问题的,但是如果在...部分

2012-07-08 12:59:30 68

原创 第二部分 构造、析构与赋值运算(条款5-12)

这里是第二部分  条款 5:C++默默编写并调用哪些函数    如果你没有写构造函数、析构函数、copy构造函数和赋值操作符,C++会自己为你编写默认的函数。如果你自己编写了,C++不再合成    如果你打算在一个内含 reference成员的class内支持赋值操作,你必须自己定义赋值操作符,面对const成员,编译器的反应也是一样的。如果某个基类的copy 操作符是一个private,那

2012-07-08 10:41:18 1416

原创 第一部分:习惯C++(条款1-4)

这里是effective C++第一部分 条款1:对C++的整体认识。它包括 1. C部分。C++以C语言为基础发展而来。2.面向对象部分。3.C++泛型编程部分也叫template C++. 4.STL 条款2:用const,enum,inline对define替换               1.#define RATIO 3.14  改为const double Ratio =

2012-07-07 22:29:22 1035

VMTools darwin5.iso

用VM9 装黑苹果MAC OS 10.8 的VM Tools , 亲测可用

2013-12-07

Linux程序设计中文第四版(第三部分)

Linux程序设计第四版 中文版(第三部分) 三个文件放在一个文件夹解压就可以了

2012-11-14

Linux程序设计中文第四版第二部分

Linux程序设第四版中文版(第二部分),需要同时下载3部分才能够完成解压

2012-11-14

Linux程序设计第四版中文版

Linux程序设计 第四版中文版(第一部分) 看到CSDN上都是英文的上传一个,由于要求小于60MB,所以分开传了

2012-11-14

C++对XML解析

使用开源代码对xml文件的解析,使用微软的Cmarkup类实现

2011-10-10

深入浅出MFC

深入浅出MFC,全面深入的分析了MFC框架

2011-10-10

oracel表空间的使用情况

oracle 表空间的使用情况,表空间是否正常

2011-09-02

weblogic8 API

提供weblogic8中主要的包,包中类或者接口的详细说明

2011-09-02

weblogic的MX程序设计

JMX监控weblogic入门教程,基于weblogic自带的JMX,环境:weblogic8,jmx1.0,jdk1.4

2011-08-09

空空如也

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

TA关注的人

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