- 浏览: 10764 次
- 性别:
- 来自: 北京
最新评论
文章列表
advisory lock. 建议锁,如果你在每次访问临界区的时候,都在获得锁的情况下,那么这个锁就能正常工作,提供互斥的动能。但是它并不能阻止不获得锁就直接访问临界区的“流氓”。
现在的选秀节目非常多,就我经常看的就有非诚勿扰,非你莫属,一站到底,当然还有中国好声音。总的说来,这些都很火。现在的人都喜欢有个性的有争议的事物,所以选秀节目越来越火。
在这些节目中,中国好声音的吸引力要远远大于其他节目。这个可以从微博上看出来,每次中国好声音播出前后,微博上都会有一个热门话题与之相关,而且参与的用户都非常多,这无疑已经引起了非常大的影响力。再一个可以从中国好声音的广告费中得到这个结论。今年好声音第一季十期节目的广告费和版权销售一共赚到了3亿,一亿的投入,得到了四个月三倍的收入,这也是个神奇的成绩。
那么它为什么这么火呢?
1.有明星参与。
就和互联网产品一样 ...
placement new
为了稳定和简单,负责在线应用的程序很少使用动态内存,所以很多基本库都是基于静态内存。
比如一个hash的接口是void *GetObjectByKey(uint32_t dwKey);
GetObjectByKey调用后返回了一段内存。如果你想在这段内存上放置一个类,那怎么办呢?
class A
{
public:
....
private:
...
};
一种办法是:
A *pA = GetObjectByKey(dwKey);
这种办法的问题是,没有调用A的构造函数,这是非常危险的,因为pA的对象并没有初始化。
...
今天有时间对alignment重新学习了一下,发现自己之前对alignment的理解是片面的。
alignment理解
alignment的含义可以分为两部分:
1.数据对齐,即这个对象的地址是多少的倍数。
int *p = (int *)malloc(sizeof(int));
在32位机种这段代码中p的值就为8的倍数,因为malloc返回的值需要满足系统中所有的基本数据类型的对齐要求。
2.结构的数据填充。
typedef struct {
char c;
short sh;
int word;
}
在默认alignment ...
1.Page和Block
SSD的硬盘有page和block的概念。Page大小为4K,Block大小为512K(即128个Block)。
2.写放大
从前一直认为SSD的写放大(Write amplification)是指SSD一次写必须写一个Block,其实不是这样的。SSD一次写的单位是page,但是SSD的Write只能写到空的page上,对于之前写过的page,必须先进行一次Erase。而Erase的单位是Block,所以如果一个page的数据删掉之后,要想再写到这个page上,必须经过以下三步:
1.将在同一个Block的其他page读出来。
2.将整个Block Er ...
今天听了吴军老师的演讲,怎样不山寨,感触很深。记录下来时刻提醒自己。
1.判断山寨的标准
是不是只要是抄袭别人的都是山寨呢?当然不是,苹果是第一个出智能机的吗?不是,但是我们没有人说苹果是山寨吧。牛顿说过我们站在了巨人的肩膀之上我们才会成功。所以我们要借鉴和学习别人的,但是我们要有我们的创新点,有我们的努力,我们才能做到不山寨。
2.怎样才能不山寨
这个演讲是为讲授他的数学之美而做的。数学之美中讲的是模型,方法。所以吴老师认为要想不山寨必须有正确的模型和方法才可以。正确的模型应该是能随着不断的改进而产生越来越好的结果。
其中,他拿搜搜做为例子,来讲解模型的正确性。正确的模型帮助搜搜找到 ...
最近在做项目时,遇到了一个问题,现在没有非常好的落地数据的key-value的库。下面就总结一下现有的实现方式,结合使用过程中发现的问题,最后找到一个简单的实现自用的库的方法。
首先总结一下现有的实现方式
1.在mysql上层封装一层接口,将mysql变成一个落地数据的key-value库,然后加上memcache。
这种方式比较适合域读多写少的地方,因为mysql的写性能比较差。读的时候多数会命中memcache所以性能比较好。
针对写性能差的缺点,mysql也有自己的解决方法:读写分离加上主从同步。
建立多个mysql节点,一个节点设置为master,然后其他节点设置为 ...