C++中的volatile(Primer读书笔记)...
分类:
编程语言 时间:
2014-05-25 13:31:40
阅读次数:
301
继续并发专题~
这次介绍CyclicBarrier:看一眼API的注释:
/**
* A synchronization aid that allows a set of threads to all wait for
* each other to reach a common barrier point. CyclicBarriers are
* useful in program...
分类:
编程语言 时间:
2014-05-25 18:15:06
阅读次数:
316
作用:使设计的容器有能力包含类型不同而彼此相关的对象。
容器通常只能包含一种类型的对象,所以很难再容器中存储对象本身。存储指向对象的指针,虽然允许通过继承来处理类型不同的问题(多态性),但是也增加了内存分配的额外负担。所以我们通过定义名为代理的对象来解决该问题。代理运行起来和它所代表的对象基本相同,但是允许将整个派生层次压缩在一个对象类型中。
假设有一个表示不同种类的交通工具的类派生层次:...
分类:
编程语言 时间:
2014-05-25 10:06:40
阅读次数:
249
在Javascript语言中,constructor属性是专门为function而设计的,它存在于每一个function的prototype属性中。这个constructor保存了指向function的一个引用。在定义一个函数(代码如下所示)时,
function F() {
// some code
}
JavaScript内部会执行如下几个动作:
为该函数添...
分类:
编程语言 时间:
2014-05-25 08:55:34
阅读次数:
199
上一篇博客中为大家介绍了javascript面向对象编程原则的封装,今天为大家介绍继承,在javascript中没有类的概念,所有不能像c#,java语言那样,直接的用类去继承类。比如现在有比如,现在有一个"动物"对象的构造函数。
function Animal(){
this.species = "动物";
}
还有一个"猫"对象的构造函数。
funct...
分类:
编程语言 时间:
2014-05-25 07:25:50
阅读次数:
305
数组名是数组的首地址,就是数组中的第一个元素的地址,是常量。常量是不能值在=的左边的。数组和指针的区别在于,指针是变量,是用来存储指向数据的地址的变量,而数组名是常量。一般情况下申明一个数组,比如char a[10]; 之后 数组名a都是数组的首地址,是一个地址常量。但是在函数申明的形参列表中除外,比如:
int fo(char []);
在这种情况下的申明与
int fo(char...
分类:
编程语言 时间:
2014-05-25 16:29:42
阅读次数:
278
经验1:
析构函数绝对不要吐出异常。如果一个被析构函数调用的函数可能抛出异常,析构函数应该捕捉任何异常,然后吞下它们(不传播)或结束程序。
经验2:
如果客户需要对某个操作函数运行期间抛出的异常做出反应,那么class应该提供一个普通函数(而非在析构函数中)执行该操作。...
分类:
编程语言 时间:
2014-05-25 16:20:26
阅读次数:
304
经验:在构造和析构期间不要调用virtual函数,因为这类调用从不下降至derived class(比起当前执行构造函数和析构函数的那层)。
让derived class将必要的构造信息向上传递至baseclass构造函数...
分类:
编程语言 时间:
2014-05-25 09:52:25
阅读次数:
237
经验:令赋值(assignment)操作符返回一个reference to *this --》 这样可以实现级联赋值...
分类:
编程语言 时间:
2014-05-25 13:33:44
阅读次数:
286
经验:确保当对象自我赋值时operator=有良好行为。其中技术包括比较“来源对象”和“目标对象”的地址、精心周到的语句顺序、以及copy-and-swap。...
分类:
编程语言 时间:
2014-05-25 09:53:27
阅读次数:
233
动态语言的定义:动态编程语言是高级程序设计语言的一个类别,在计算机科学领域已被广泛应用。它是一类在运行时可以改变其结构的语言:例如新的函数、对象、甚至代码可以被引进,已有的函数可以被删除或是其他结构上的变化。动态语言目前非常具有活力。众所周知的ECMAScript(JavaScript)便是一个动态语言,除此之外如PHP、Ruby、Python等也都属于动态语言,而C、C++等语言则不属于动态语言...
分类:
编程语言 时间:
2014-05-25 18:15:55
阅读次数:
368
h=lambda t:(reduce(lambda x,y:x*y,range(1,t+1)))
h(5)=120
reduce函数是一个二元操作函数,他用来将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给reduce中的函数 func()(必须是一个二元操作函数)先对集合中的第1,2个数据进行操作,得到的结果再与第三个数据用func()函数运算,最后得到一个结果。...
分类:
编程语言 时间:
2014-05-25 09:55:21
阅读次数:
477
所谓学习问题,是指观察由n个样本组成的集合,并根据这些数据来预测未知数据的性质。
学习任务(一个二分类问题):
区分一个普通的互联网检索Query是否具有某个垂直领域的意图。假设现在有一个O2O领域的垂直搜索引擎,专门为用户提供团购、优惠券的检索;同时存在一个通用的搜索引擎,比如百度,通用搜索引擎希望能够识别出一个Query是否具有O2O检索意图,如果有则调用O2O垂直搜索引擎,获取结...
分类:
编程语言 时间:
2014-05-25 13:34:47
阅读次数:
495
The Leak of the Memory in C++
In this chaper I will introduce a new smart pointer which is scoped_ptr;
It likes auto_ptr but better. When peopel use auto_ptr, sometimes they forget
that auto_...
分类:
编程语言 时间:
2014-05-25 07:03:10
阅读次数:
373
上述代码中,如果直接用于多线程中是存在问题的,比如线程A调用MyThreadScopeData.getInstance()获取MyThreadScopeData对象,执行到 instance = new MyThreadScopeData();还没返回的时候恰好这时候线程B也来调用MyThreadScopeData.getInstance(),执行了 instance = new MyThreadScopeData();这时候则线程B创建的对象会覆盖线程A创建的对象。所以在线程A中的MyThreadScop...
分类:
编程语言 时间:
2014-05-25 04:47:12
阅读次数:
285