自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

stone

一个人的知识,通过学习可以得到;一个人的成长,必须通过磨练。

  • 博客(55)
  • 资源 (1)
  • 问答 (1)
  • 收藏
  • 关注

转载 Quorum的NRW策略

分布式系统的设计中会涉及到许多的协议、机制用来解决可靠性问题、数据一致性问题等,Quorum 机制就是其中的一种。我们通过分布式系统中的读写模型来简单介绍它。分布式系统中的读写模型  分布式系统是由多个节点(指代一台服务器、存储设备等)构成,由于网络异常、宕机等节点并不能保证正常工作,特别是在节点数量很大的时候,出现异常状况的节点几乎是肯定的。为了保证系统的正常运行,能够提供可

2015-10-10 20:30:24 1888

转载 爬虫学习笔记

这里是维基百科对网络爬虫的词条页面。网络爬虫以叫网络蜘蛛,网络机器人,这是一个程序,其会自动的通过网络抓取互联网上的网页,这种技术一般可能用来检查你的站点上所有的链接是否是都是有效的。当然,更为高级的技术是把网页中的相关数据保存下来,可以成为搜索引擎。从技术来说,实现抓取网页可能并不是一件很困难的事情,困难的事情是对网页的分析和整理,那是一件需要有轻量智能,需要大量数学计算的程序才能做的事

2015-09-13 11:55:24 864

转载 MySQL存储引擎MyISAM与InnoDB的优劣

使用MySQL当然会接触到MySQL的存储引擎,在新建数据库和新建数据表的时候都会看到。MySQL默认的存储引擎是MyISAM,其他常用的就是InnoDB了。至于到底用哪种存储引擎比较好?这个问题是没有定论的,需要根据你的需求和环境来衡量。所以对这两种引擎的概念、原理、异同和各自的优劣点有了详细的了解之后,再根据自己的情况选择起来就容易多了。 MyISA

2014-05-06 17:51:04 372

转载 无锁队列的实现

关于CAS等原子操作在开始说无锁队列之前,我们需要知道一个很重要的技术就是CAS操作——Compare & Set,或是 Compare & Swap,现在几乎所有的CPU指令都支持CAS的原子操作,X86下对应的是 CMPXCHG 汇编指令。有了这个原子操作,我们就可以用其来实现各种无锁(lock free)的数据结构。这个操作用C语言来描述就是下面这个样子:(代码来自Wik

2014-05-05 21:31:45 435

转载 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 490

转载 面向对象设计的基本原则

转自 http://f.dataguru.cn/thread-123555-1-1.html面向对象的设计:* 将属于一类的对象放在一起。如果一个函数操纵一个全局变量,那么两者最好都在类内作为特性和方法出现。* 不要让对象过于亲密。方法应该只光心自己实例的特性。让其他实例管理自己的状态。* 要小心继承,尤其是多重继承。继承机制有时很有用,但也会在某些情况下让事情变得过于复杂。多重继

2013-07-31 18:59:51 425

转载 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 546

转载 影响网络应用程序性能的因素(转)

随着网络的发展,越来越多的应用程序需要依赖于网络,所以网络的性能直接影响到我们应用程序的性能。那么都有那些因素影响到网络程序的性能来?我们以Windows平台上的应用程序来分析,首先将影响因素分为两个部分:基础网络部分,应用程序的网络驱动部分。基础网络部分指物理的网络结构和链路,主要有下面几个方面的因素:网络的速率和带宽。这是一个根本的问题,如果网络的基础设施不够快的话,那

2013-05-13 23:36:14 577

转载 如何在linux下检测内存泄漏

摘自 http://www.ibm.com/developerworks/cn/linux/l-mleak/index.html1.开发背景在 windows 下使用 VC 编程时,我们通常需要 DEBUG 模式下运行程序,而后调试器将在退出程序时,打印出程序运行过程中在堆上分配而没有释放的内存信息,其中包括代码文件名、行号以及内存大小。该功能是 MFC Framewo

2012-07-14 12:06:02 757

转载 #pragma once, extern

1,声明一个变量,必须加关键字extern2,没有关键字extern,则就为变量的定义,无论这个变量定义时有没有初始化3,只要定义变量时初始化了,即使前面加了关键字extern,也是定义,不是声明。(不过只有在函数体外时,才能够在定义且初始化时,加上extern关键字,这是为了const变量设定的)4,多文件程序中,一个文件含有变量的定义,另外一个文件中含有变量的声明,定义只能有一次,

2012-04-22 12:40:46 475

转载 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 556

转载 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 389

转载 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 514

转载 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 422

转载 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 764

转载 线程同步互斥的控制方法

摘自 http://hi.baidu.com/cnrjm/blog/item/5d217e54ff863550564e00b9.html四种进程或线程同步互斥的控制方法    1、临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。   2、互斥量:为协调共同对一个共享资源的单独访问而设计的。   3、信号量:为控制一个具有有限数量用户资源而设计。

2011-10-20 12:03:07 282

转载 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 411

转载 Windows消息机制概述

摘自:http://www.cppblog.com/suiaiguo/archive/2009/07/18/90412.html消息是指什么?     消息系统对于一个win32程序来说十分重要,它是一个程序运行的动力源泉。一个消息,是系统定义的一个32位的值,他唯一的定义了一个事件,向 Windows发出一个通知,告诉应用程序某个事情发生了。例如,单击鼠标、改变窗口尺寸、按下

2011-09-11 18:23:50 497

转载 浅谈C/C++中的顺序点和副作用

摘自:http://www.cnblogs.com/dolphin0520/archive/2011/04/20/2022330.html一.副作用(side effect)    表达式有两种功能:每个表达式都产生一个值( value ),同时可能包含副

2011-09-10 21:58:47 433

转载 VC windows api 多线程---互斥量、信号量、临界值

以下摘自 http://blog.sina.com.cn/s/blog_5040a4e90100gntv.html互斥量的用途和临界区很像。它与临界区的差别在于可以跨线程使用,可以用来同步进行多个线程间的数据访问,但是是以牺牲速度为代价的。只有临界区是非核心对象,那么互斥量就是一个核心对象了。核心对象的特点是有所谓的引用计数。所著一个未被拥有的互斥量,比锁住一个未被拥有的临界区需要花费几乎

2011-09-04 18:08:54 3301

转载 C++本质:类的赋值运算符=的重载,以及深拷贝和浅拷贝

摘自http://www.cnblogs.com/alexusli/archive/2008/08/27/1277683.html关键词:构造函数,浅拷贝,深拷贝,堆栈(stack),堆heap,赋值运算符摘要:    在面向对象程序设计中,对象间的相互拷贝和赋值是经

2011-09-03 10:49:02 333

转载 LIB和DLL的区别与使用

远风工作室共有两种库:一种是LIB包含了函数所在的DLL文件和文件中函数位置的信息(入口),代码由运行时加载在进程空间中的DLL提供,称为动态链接库dynamic link library。一种是LIB包含函数代码本身,在编译时直接将代码加入程序当中,

2011-08-17 16:06:53 325

转载 C/C++ 内存分配方式,堆区,栈区,new/delete/malloc/free

内存分配方式 内存分配方式有三种: [1] 从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量, static 变量。 [2] 在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被

2011-07-19 18:12:49 323

转载 (转)堆、栈、静态存储区、文字常量区

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 449

转载 大小端模式的区别(即小尾和大尾的区别)

  最近在学习USB,在看Keil C51代码的时候发现从PC机接收的USB数据在Keil C51环境里要交换高低字节,这是因为Keil的数据结构是大端模式,对于大端模式不是很清楚后来网上搜索发现有一篇文章介绍的比较详细,不敢独享贴出来大家学习。   所谓的大端模式,是指数据的低位(就是权值较小的后面那几位)保存在内存的高地址中,而数据的高位,保存在内存的低地址中,这样的存储模式有点儿类似于把数据

2011-06-14 17:57:00 4757

转载 extern "C"

概述  extern "C" 包含双重含义,从字面上即可得到:首先,被它修饰的目标是“extern”的;其次,被它修饰的目标是“C”的。让我们来详细解读这两重含义。(1) 被extern "C"限定的函数或变量是extern类型的extern是C/C++语言中表明函数和全局变量作用范围(可见性)的关键字,该关键字告诉编译器,其声明的函数和变量可以在本模块或其它模块中使用。记

2011-06-14 17:51:00 361

原创 【转帖】#pragma pack(n)

什么是对齐,以及为什么要对齐:    现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定变量的时候经常在特定的内存地址访问,这就需要各类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。    各个硬件平台对存储空间的处理上有很大的不同,一些平台对某些特定类型的数据只能从某些特定地

2011-06-01 12:03:00 325

原创 void指针

<br /> 指针有两个属性:指向变量/对象的地址和长度。但是指针只存储地址,长度则取决于指针的类型 <br />编译器根据指针的类型从指针指向的地址向后寻址 <br />指针类型不同则寻址范围也不同,比如: <br />int*从指定地址向后寻找4字节作为变量的存储单元 <br />double*从指定地址向后寻找8字节作为变量的存储单元 <br /><br />1.void指针是一种特别的指针 <br />   void *vp <br />  //说它特别是因为

2011-05-27 18:49:00 302

转载 如何利用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 365

转载 错误:预编译头文件 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 1506

转载 程序员面试题精选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 567

转载 深刻剖析经典面试题之一:堆和栈的区别

<br />堆(heap)和栈(stack)的区别<br />一、预备知识—程序的内存分配<br />一个由c/C++编译的程序占用的内存分为以下几个部分<br />1、栈区(stack)—由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。<br />2、堆区(heap)—一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式倒是类<br />似于链表,呵呵。<br />3、全局区(静态区)(static

2011-05-04 21:54:00 305

转载 谈谈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 363

原创 [转]输出从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 860

原创 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 479

转载 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 337

转载 传承历史,包容遗憾(转)

<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 221

转载 学习C++原则——摘自《C++程序设计》

<br />  学习应用课程和学习理论课程的要求和方法是不一样的……学习的重点应该放在掌握实际的应用上,不要一开始就陷入抽象的名词术语的汪洋大海当中,也不要不分主次地死抠语法细节。到以后根据工作需要进一步深入学习和使用时,自然会逐步深入掌握。

2011-04-29 22:34:00 214

原创 动态链表联系总结

<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 228

原创 筛选法求素数

<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 320

delphi插件CnWizards_0.9.3.534.exe

delphi插件CnWizards_0.9.3.534.exe <!-- The "invoker" servlet, which executes anonymous servlet classes --> <!-- that have not been defined in a web.xml file. Traditionally, this --> <!-- servlet is mapped to the URL pattern "/servlet/*", but you can map --> <!-- it to other patterns as well. The extra path info portion of such a --> <!-- request must be the fully qualified class name of a Java class that --> <!-- implements Servlet (or extends HttpServlet), or the servlet name --> <!-- of an existing servlet definition. This servlet supports the --> <!-- following initialization parameters (default values are in square --> <!-- brackets): --> <!-- --> <!-- debug Debugging detail level for messages logged --> <!-- by this servlet. [0] -->

2010-01-04

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

TA关注的人

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