nosmatch的专栏

好脑袋比不上烂键盘

探索推荐引擎内部的秘密,第 1 部分: 推荐引擎初探

简介: 随着 Web 技术的发展,使得内容的创建和分享变得越来越容易。每天都有大量的图片、博客、视频发布到网上。信息 的极度爆炸使得人们找到他们需要的信息将变得越来越难。传统的搜索技术是一个相对简单的帮助人们找到信息的工具,也广泛的 被人们所使用,但搜索引擎并不能完全满足用户对信息发现的需求,原...

2013-07-24 14:29:19

阅读数:716

评论数:0

Effective C++ 读书笔记(36)

条款36:绝不重新定义继承而来的non-virtual函数 class B{ public: void func(); ... }; class D:public B{ public: ... }; 在上面的简单例子中,如果有下面的调用: D x; B* p = new D(); ...

2013-07-21 17:44:00

阅读数:621

评论数:0

Effective C++ 读书笔记(35)

条款35:考虑virtual函数意外的其他选择

2013-07-21 17:24:10

阅读数:515

评论数:0

Effective C++读书笔记(34)

条款34:区分接口继承和实现继承 在对Base class 进行public继承的时候,根据Base class中成员函数的类型我们能够得到不同的继承方式:如下: class Shape{ public: virtual void draw() const = 0; virtual v...

2013-07-21 16:41:08

阅读数:700

评论数:0

Effective C++读书笔记(33)

条款33:避免遮掩继承而来的名称 对于继承的父类中的函数,如果在子类中有同名的函数,则父类中的同名函数都将被隐藏,例如: class Base{ private: int x; public: virtual void mf1() = 0; virtual void mf1(int ...

2013-07-21 15:11:28

阅读数:577

评论数:0

Effective C++读书笔记(32)

条款32:确定你的public继承塑模出is-a关系 以public继承的类,其父类的所有的性质都应该使用与子类,任何需要父类的地方都应该能用子类来代替,任何子类类型 的对象也同时是父类的: class Person{...}; class Student : public Pe...

2013-07-21 12:16:21

阅读数:639

评论数:0

Effective C++读书笔记(31)

条款31:将文件间的编译依赖关系降到最低 在C++中我们要将接口与实现分离开来,这样只要接口没有改变,对接口应用的客户就可以保持不变,例如: class Person{ public: Person(const std::string& name, const Date& bi...

2013-07-21 11:19:04

阅读数:565

评论数:0

Effective C++ 读书笔记(30)

条款30:透彻了解inline函数的里里外外 inline函数是直接将函数调用用函数的本体来替换,这样就免去了函数调用时候的消耗,但是由于每次对于函数的调用都 会用函数的本体来替换,因此过度的应用inline函数会对程序的代码造成膨胀,会造成指令缓冲的命中率,因此我们在应用inline...

2013-07-20 14:53:29

阅读数:660

评论数:0

Effective C++ 读书笔记(29)

条款29:为“异常安全”而努力是值得的 在程序中抛出异常的时候,带有异常安全的函数会保证: 1.不泄露任何的资源 2.不允许数据被破坏 对于第一种情况可以采用资源管理类的方法来保证资源的释放,我们的函数都要保证异常发生时函数的保证: 1.基本承诺,函数发生异常时,对象还能保持正常的状...

2013-07-20 12:26:29

阅读数:482

评论数:0

Effective C++ 读书笔记(28)

条款28:避免返回handle指向对象内部成分 首先handle是指reference、指针和迭代器等都可以称之为handle,因为她们都是用来取得一个对象的,返回一个handle指 向对象的内部成分主要会造成下面的两种情况: 1.增大了成员的访问权限,如下例子: class Point{ ...

2013-07-20 11:49:37

阅读数:769

评论数:0

算法:判断两个字符串是否是变位词

题目:判断两个字符串是否是变位词 分析:所谓变位词是指的连个字符串组成的字符是相同的,但是字符的位置是可以不同的,例如:qwerte和eetrwq这两个字符串就是 变位词,如果对空间的要求不高则可以建立一个256大小的数组分别映射到ASCII的每一个字符,对前一个字符串遍历在每个字符出 现加...

2013-07-17 23:22:36

阅读数:911

评论数:0

Effective C++读书笔记(27)

条款27:尽量少做转型动作 在C++中尽量的少用类型的转化,只要有类型转化的地方就是有可能会出现问题的地方,在C++中有四种强制类型转化, 如下: 1、static_cast 用法:static_cast(expression) 该运算符把expression转换为type-id类型,但没有...

2013-07-16 23:34:54

阅读数:571

评论数:0

算法:编写算法移除一个字符串中重复的字符

题目:设计算法并写出代码移除字符串中重复的字符,不能使用额外的缓存空间。注意:可以使用额外的一个或两个变量,但不允许 额外再开一个数组拷贝。 分析:方法有很多种,这里主要是对字符串中的每个字符与它前面出现过的所有字符进行比较,如果前面出现过就把这个字符删除掉 代码如下: 从上面的代码可以...

2013-07-16 23:06:12

阅读数:1321

评论数:0

Effective C++读书笔记(26)

条款26:尽可能延后变量定义式的出现时间 当你定义一个变量的时候就要保证这个变量能够在程序中使用到,不要定义无意义的变量,这样就要求我们最好是在变量使用 到的时候才做定义,因为如果一个变量定义了却乜有使用可能会造成效率上的降低,毕竟很多变量的构建是要调用对应的构造函数 和析构函数的,...

2013-07-16 08:20:45

阅读数:586

评论数:0

Effective C++ 读书笔记(25)

条款25:考虑写出一个不抛出任何异常的swap函数

2013-07-16 07:53:11

阅读数:446

评论数:0

算法:反转一个C风格的字符串

分析:C风格的字符串是以'\0'结尾的字符串,例如"abcdefg"的长度是其实为"abcdefg\0",长度为8;

2013-07-15 22:58:20

阅读数:704

评论数:0

Effective C++ 读书笔记(24)

条款24:若所有参数皆需要类型转换,请为此采用non-member函数 考虑一个有理数的类: class Ration{ public: Ration(int numerator = 0, int denominator = 1); int numerator() const; int d...

2013-07-14 22:01:09

阅读数:590

评论数:0

Effective C++ 读书笔记(23)

条款23:宁以non-member、non-friend替代member函数

2013-07-14 15:59:04

阅读数:500

评论数:0

Effective C++ 读书笔记(22)

条款22:将成员变量声明为private 对于C++而已,封装型是其三大特征之一,之所以封装型是如此的重要,是因为封装型能为接口的使用者提供透明的服务, 内部的任何改变对其客户使用者来说都是透明的,都不需要做任何的改变,将class中的成员变量设为private的并且为成员变量设定 对应的接口...

2013-07-14 12:33:36

阅读数:530

评论数:0

Effective C++ 读书笔记(21)

条款21:必须返回对象时别妄想返回reference 上一个条款讲解了以pass-by-reference来替代pass-by-value可以很好的增加效率,但是pass-by-reference也是不能乱用的 本条款主要讲在函数返回对象的时候不应该让他返回一个reference!上例子: ...

2013-07-14 11:42:45

阅读数:612

评论数:0

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