- 博客(55)
- 资源 (1)
- 问答 (1)
- 收藏
- 关注
转载 Quorum的NRW策略
分布式系统的设计中会涉及到许多的协议、机制用来解决可靠性问题、数据一致性问题等,Quorum 机制就是其中的一种。我们通过分布式系统中的读写模型来简单介绍它。分布式系统中的读写模型 分布式系统是由多个节点(指代一台服务器、存储设备等)构成,由于网络异常、宕机等节点并不能保证正常工作,特别是在节点数量很大的时候,出现异常状况的节点几乎是肯定的。为了保证系统的正常运行,能够提供可
2015-10-10 20:30:24 1909
转载 爬虫学习笔记
这里是维基百科对网络爬虫的词条页面。网络爬虫以叫网络蜘蛛,网络机器人,这是一个程序,其会自动的通过网络抓取互联网上的网页,这种技术一般可能用来检查你的站点上所有的链接是否是都是有效的。当然,更为高级的技术是把网页中的相关数据保存下来,可以成为搜索引擎。从技术来说,实现抓取网页可能并不是一件很困难的事情,困难的事情是对网页的分析和整理,那是一件需要有轻量智能,需要大量数学计算的程序才能做的事
2015-09-13 11:55:24 877
转载 MySQL存储引擎MyISAM与InnoDB的优劣
使用MySQL当然会接触到MySQL的存储引擎,在新建数据库和新建数据表的时候都会看到。MySQL默认的存储引擎是MyISAM,其他常用的就是InnoDB了。至于到底用哪种存储引擎比较好?这个问题是没有定论的,需要根据你的需求和环境来衡量。所以对这两种引擎的概念、原理、异同和各自的优劣点有了详细的了解之后,再根据自己的情况选择起来就容易多了。 MyISA
2014-05-06 17:51:04 387
转载 无锁队列的实现
关于CAS等原子操作在开始说无锁队列之前,我们需要知道一个很重要的技术就是CAS操作——Compare & Set,或是 Compare & Swap,现在几乎所有的CPU指令都支持CAS的原子操作,X86下对应的是 CMPXCHG 汇编指令。有了这个原子操作,我们就可以用其来实现各种无锁(lock free)的数据结构。这个操作用C语言来描述就是下面这个样子:(代码来自Wik
2014-05-05 21:31:45 448
转载 Copy-on-write
摘自: http://www.cnblogs.com/promise6522/archive/2012/03/22/2412686.htmlCopy-on-write(以下简称COW)是一种很重要的优化手段。它的核心思想是懒惰处理多个实体的资源请求,在多个实体之间共享某些资源,直到有实体需要对资源进行修改时,才真正为该实体分配私有的资源。COW技术的一个经典应用在于Li
2013-09-01 17:22:10 509
转载 面向对象设计的基本原则
转自 http://f.dataguru.cn/thread-123555-1-1.html面向对象的设计:* 将属于一类的对象放在一起。如果一个函数操纵一个全局变量,那么两者最好都在类内作为特性和方法出现。* 不要让对象过于亲密。方法应该只光心自己实例的特性。让其他实例管理自己的状态。* 要小心继承,尤其是多重继承。继承机制有时很有用,但也会在某些情况下让事情变得过于复杂。多重继
2013-07-31 18:59:51 438
转载 Implementing a simple smart pointer in C++
摘自:http://www.codeproject.com/Articles/15351/Implementing-a-simple-smart-pointer-in-cIntroductionWhat are smart pointers? The answer is fairly simple; a smart pointer is a pointer which is smart
2013-07-02 18:41:00 566
转载 影响网络应用程序性能的因素(转)
随着网络的发展,越来越多的应用程序需要依赖于网络,所以网络的性能直接影响到我们应用程序的性能。那么都有那些因素影响到网络程序的性能来?我们以Windows平台上的应用程序来分析,首先将影响因素分为两个部分:基础网络部分,应用程序的网络驱动部分。基础网络部分指物理的网络结构和链路,主要有下面几个方面的因素:网络的速率和带宽。这是一个根本的问题,如果网络的基础设施不够快的话,那
2013-05-13 23:36:14 597
转载 如何在linux下检测内存泄漏
摘自 http://www.ibm.com/developerworks/cn/linux/l-mleak/index.html1.开发背景在 windows 下使用 VC 编程时,我们通常需要 DEBUG 模式下运行程序,而后调试器将在退出程序时,打印出程序运行过程中在堆上分配而没有释放的内存信息,其中包括代码文件名、行号以及内存大小。该功能是 MFC Framewo
2012-07-14 12:06:02 768
转载 #pragma once, extern
1,声明一个变量,必须加关键字extern2,没有关键字extern,则就为变量的定义,无论这个变量定义时有没有初始化3,只要定义变量时初始化了,即使前面加了关键字extern,也是定义,不是声明。(不过只有在函数体外时,才能够在定义且初始化时,加上extern关键字,这是为了const变量设定的)4,多文件程序中,一个文件含有变量的定义,另外一个文件中含有变量的声明,定义只能有一次,
2012-04-22 12:40:46 491
转载 Specifications for a simple RTSP client
摘自 http://folk.uio.no/meccano/reflector/smallclient.htmlAbstractThis document describes a simple implementation of the client side of an RTSP session, including the minimal requirements to c
2012-02-05 20:13:00 650
转载 RTSP协议参考资料汇总
摘自 http://blog.chinaunix.net/u2/77292/showart_1922940.html RTSP(Real Time Streaming Protocol,实时流协议),是由RealNetwork和Netscape共同提出的如何有效地在IP网络上传输流媒体数据的应用层协议。RTSP提供一种可扩展的框架,能够提供可控制的,按需传输的实时数据,比如音频和视
2012-02-05 19:54:15 403
转载 c++ 字符类型总结区别wchar_t,char,WCHAR
摘自 http://hi.baidu.com/yangyangye2008/blog/item/d87b5ccb5874c04bf31fe733.html1.区别wchar_t,char,WCHAR ANSI:即 char,可用字符串处理函数:strcat( ),strcpy( ), strlen( )等以str打头的函数。 UNICODE:wchar_t是Unic
2012-01-11 18:44:24 530
转载 ACE Reactor框架处理事件及多个I/O流
摘自 http://hi.baidu.com/pass86/blog/item/1d908b16f21a0e53f2de320a.htmlACE Reactor框架设计的目标是,实现一种灵活的事件处理机制,使应用无需为了满足事件处理的需要而编写平台相关的中心代码。使用Reactor框架,应用要实现其事件处理只需要做三件事情。ONE:从 ACE_Event_Handler 派生一个或
2011-11-23 21:54:56 430
转载 cygwin 使用
摘自 http://www.cppblog.com/dawnbreak/archive/2008/12/10/69087.html对于经常在Windows编程的使用者,想体验*nix编程可以选择vw,vpc,双系统,而对于真正的开发者而言一个*nix shell加上GCCGDB MAKE以及相关的函数库文件足以,哦,也许加上DEVDOC才算完整,也就是可以使用man,所有这些c
2011-10-20 15:10:34 778
转载 线程同步互斥的控制方法
摘自 http://hi.baidu.com/cnrjm/blog/item/5d217e54ff863550564e00b9.html四种进程或线程同步互斥的控制方法 1、临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。 2、互斥量:为协调共同对一个共享资源的单独访问而设计的。 3、信号量:为控制一个具有有限数量用户资源而设计。
2011-10-20 12:03:07 294
转载 C++ 字符类型总结
摘自 http://blog.21ic.com/user1/5585/archives/2009/59431.html1.区别wchar_t,char,WCHAR ANSI:即 char,可用字符串处理函数:strcat( ),strcpy( ), st
2011-09-28 15:52:39 425
转载 Windows消息机制概述
摘自:http://www.cppblog.com/suiaiguo/archive/2009/07/18/90412.html消息是指什么? 消息系统对于一个win32程序来说十分重要,它是一个程序运行的动力源泉。一个消息,是系统定义的一个32位的值,他唯一的定义了一个事件,向 Windows发出一个通知,告诉应用程序某个事情发生了。例如,单击鼠标、改变窗口尺寸、按下
2011-09-11 18:23:50 515
转载 浅谈C/C++中的顺序点和副作用
摘自:http://www.cnblogs.com/dolphin0520/archive/2011/04/20/2022330.html一.副作用(side effect) 表达式有两种功能:每个表达式都产生一个值( value ),同时可能包含副
2011-09-10 21:58:47 445
转载 VC windows api 多线程---互斥量、信号量、临界值
以下摘自 http://blog.sina.com.cn/s/blog_5040a4e90100gntv.html互斥量的用途和临界区很像。它与临界区的差别在于可以跨线程使用,可以用来同步进行多个线程间的数据访问,但是是以牺牲速度为代价的。只有临界区是非核心对象,那么互斥量就是一个核心对象了。核心对象的特点是有所谓的引用计数。所著一个未被拥有的互斥量,比锁住一个未被拥有的临界区需要花费几乎
2011-09-04 18:08:54 3338
转载 C++本质:类的赋值运算符=的重载,以及深拷贝和浅拷贝
摘自http://www.cnblogs.com/alexusli/archive/2008/08/27/1277683.html关键词:构造函数,浅拷贝,深拷贝,堆栈(stack),堆heap,赋值运算符摘要: 在面向对象程序设计中,对象间的相互拷贝和赋值是经
2011-09-03 10:49:02 343
转载 LIB和DLL的区别与使用
远风工作室共有两种库:一种是LIB包含了函数所在的DLL文件和文件中函数位置的信息(入口),代码由运行时加载在进程空间中的DLL提供,称为动态链接库dynamic link library。一种是LIB包含函数代码本身,在编译时直接将代码加入程序当中,
2011-08-17 16:06:53 333
转载 C/C++ 内存分配方式,堆区,栈区,new/delete/malloc/free
内存分配方式 内存分配方式有三种: [1] 从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量, static 变量。 [2] 在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被
2011-07-19 18:12:49 334
转载 (转)堆、栈、静态存储区、文字常量区
2007-05-30 22:31char* r = "hello word!";char b[]="hello word!"*r = 'w';*b='w';其实应该是语法错误,可是VC++6.0没有警告或者错误,r指向的是文字常量区,此区域是编译的时候确定的,并且程序结束的时候自动释放的, *r = 'w';企图修改文字常量区引起错误,b的区别在于其空间是在栈上分配的,因此没有
2011-07-13 18:36:44 462
转载 大小端模式的区别(即小尾和大尾的区别)
最近在学习USB,在看Keil C51代码的时候发现从PC机接收的USB数据在Keil C51环境里要交换高低字节,这是因为Keil的数据结构是大端模式,对于大端模式不是很清楚后来网上搜索发现有一篇文章介绍的比较详细,不敢独享贴出来大家学习。 所谓的大端模式,是指数据的低位(就是权值较小的后面那几位)保存在内存的高地址中,而数据的高位,保存在内存的低地址中,这样的存储模式有点儿类似于把数据
2011-06-14 17:57:00 4800
转载 extern "C"
概述 extern "C" 包含双重含义,从字面上即可得到:首先,被它修饰的目标是“extern”的;其次,被它修饰的目标是“C”的。让我们来详细解读这两重含义。(1) 被extern "C"限定的函数或变量是extern类型的extern是C/C++语言中表明函数和全局变量作用范围(可见性)的关键字,该关键字告诉编译器,其声明的函数和变量可以在本模块或其它模块中使用。记
2011-06-14 17:51:00 369
原创 【转帖】#pragma pack(n)
什么是对齐,以及为什么要对齐: 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定变量的时候经常在特定的内存地址访问,这就需要各类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。 各个硬件平台对存储空间的处理上有很大的不同,一些平台对某些特定类型的数据只能从某些特定地
2011-06-01 12:03:00 331
原创 void指针
<br /> 指针有两个属性:指向变量/对象的地址和长度。但是指针只存储地址,长度则取决于指针的类型 <br />编译器根据指针的类型从指针指向的地址向后寻址 <br />指针类型不同则寻址范围也不同,比如: <br />int*从指定地址向后寻找4字节作为变量的存储单元 <br />double*从指定地址向后寻找8字节作为变量的存储单元 <br /><br />1.void指针是一种特别的指针 <br /> void *vp <br /> //说它特别是因为
2011-05-27 18:49:00 313
转载 如何利用socket进行HTTP访问
<br /> <br />平常我们要访问某个URL一般都是通过浏览器进行:提交一个URL请求后,浏览器将请求发向目标服务器或者代理服务器,目标服务器或者代理服务器返回我们所需要的数据,浏览器接收到这些数据后保存成文件并进行显示。 <br />下面我们看看如何自己利用winsock2.h中的接口来实现这个功能?为了简化问题,作以下假设: <br /><br />通过代理服务器进行HTTP访问,这样就省去了对URL进行DNS解析的步骤,假设代理服务器的地址为:192.168.0.1:808。 <br /
2011-05-20 18:27:00 374
转载 错误:预编译头文件 fatal error C1083: Cannot open precompiled header file: 'Debug
<br />今天把侯sir的一个叫Hello和MFC小DEMO弄到VS2008上跑了一下,出现这个错误:<br />fatal error C1083: Cannot open precompiled header file: 'Debug/Hello_JJH.pch': No such file or directory<br />上网上搜了一篇好文章,记录下来。其实该内容在《深入浅出MFC》里面也说得有,不过没有仔细看。<br />正文:<br />//////////////////////////
2011-05-10 10:49:00 1552
转载 程序员面试题精选100题(58)-八皇后问题
<br />题目:在8×8的国际象棋上摆放八个皇后,使其不能相互攻击,即任意两个皇后不得处在同一行、同一列或者同一对角斜线上。下图中的每个黑色格子表示一个皇后,这就是一种符合条件的摆放方法。请求出总共有多少种摆法。<br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <b
2011-05-06 21:19:00 577
转载 深刻剖析经典面试题之一:堆和栈的区别
<br />堆(heap)和栈(stack)的区别<br />一、预备知识—程序的内存分配<br />一个由c/C++编译的程序占用的内存分为以下几个部分<br />1、栈区(stack)—由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。<br />2、堆区(heap)—一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式倒是类<br />似于链表,呵呵。<br />3、全局区(静态区)(static
2011-05-04 21:54:00 320
转载 谈谈C++继承中的重载,覆盖和隐藏2
引用:http://www.150it.cn/bianchengwendang/Cjia/7289120971.html如果基类声明了一个成员函数f(int),并且派生类声明了一个成员函数f(float)(名称相同,但参数类型或数量不同),那么Base的f(int)被隐藏(hidden)而不是被重载(overloaded)或被重写(overridden)(即使基类的f(int)是虚的) <br /> <br />以下是你如何摆脱困境:派生类必须有一个被隐藏成员函数的using声明,例如
2011-05-04 21:41:00 377
原创 [转]输出从1到1000的数,不能使用循环和条件语句
<br />有这样一个面试题——请把从1到1000的数打印出来,但你不能使用任何的循环语句或是条件语句。更不能写1000个printf或是cout。用C/C++语言。<br /> 我相信,大多数人一开始你可能想到的是递归算法:<br />voidf(intn){<br /> printf("%d/n",n);<br /> 1000-n ? f(n+1):return;<br />}<br />intmain(){<br />f(1);<br />}<br /> 当然,题目中说了不
2011-05-04 21:34:00 867
原创 c++中临时变量不能作为非const的引用参数
<br />/*#include<iostream><br />using namespace std; */<br />#include<iostream.h><br /><br />class Complex<br />{ public:<br /> Complex(float r, float i): real(r), image(i) {}<br />//If any constuctor is not defined, default constucto
2011-05-03 12:21:00 488
转载 gcc和vc编译器在语法上的比较(转)
<br /> gcc编译器的功能强大,支持的语法也非常灵活,给我们在编程时带来了非常大的方便,也给移植代码时带来了一定的难度。 <br />1 声明64位数据类型:<br />gcc: long long<br />vc: __int64 2 switch语法中的case语句:<br />gcc: case '0' ... '9'<br />vc: case 0: case1: ... 3 寄存器变量的作用范围:<br />gcc: 可以把regi
2011-04-30 17:11:00 346
转载 传承历史,包容遗憾(转)
<br />使用C/C++多年的人对下面这个字符串赋值语句都不会陌生吧。<br /> <br /> char* p = "test";<br /> <br />同时,我也相信,各位在使用这种语句后吃过很多苦头也不少吧?只要你想利用指针p来改变字符串的内容,你的程序都会得到一个让你颜面尽失一个内存非法操作。比如,下面的这些语句:<br /> <br /> p[0] = 's';<br /> strcpy(p, "haoel");<b
2011-04-29 22:47:00 229
转载 学习C++原则——摘自《C++程序设计》
<br /> 学习应用课程和学习理论课程的要求和方法是不一样的……学习的重点应该放在掌握实际的应用上,不要一开始就陷入抽象的名词术语的汪洋大海当中,也不要不分主次地死抠语法细节。到以后根据工作需要进一步深入学习和使用时,自然会逐步深入掌握。
2011-04-29 22:34:00 221
原创 动态链表联系总结
<br /> 以下是解题《C++程序设计题解与上机指导》chapter 7.10的总结<br /> <br />#include<iostream><br />using namespace std;<br />#define NULL 0<br />struct student<br />{ long num;<br /> float score;<br /> student *next;<br />};<br />int n=0;<br /><br />
2011-04-29 17:59:00 241
原创 筛选法求素数
<br /> 以下是解题《C++程序设计题解与上机指导》chapter 5.1的总结<br /> 用筛选法求1到100之间的素数的时候,程序如下:<br /><br />#include <iostream><br />#include <iomanip><br />using namespace std;<br />#include <math.h><br />int main()<br /> {int i,j,n,a[101];<br /> for (i=1;i<=10
2011-04-27 22:15:00 330
delphi插件CnWizards_0.9.3.534.exe
2010-01-04
关于MySQL高并发处理机制
2015-03-29
TA创建的收藏夹 TA关注的收藏夹
TA关注的人