自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(50)
  • 资源 (8)
  • 收藏
  • 关注

原创 输出任意一个tuple的元素

运用C++11中的variadic template我们可以实现输出任意一个tuple元素代码如下:#include #include #include template struct seq {};template struct genseq : genseq<N - 1, N - 1,S...>{};template struct genseq{   

2013-11-05 08:19:22 737

原创 Python的垃圾回收机制

本文来自于Internet,源地址不详 :)本文是关于垃圾回收讲座的第二篇,第一篇为《垃圾回收系列(1):没有GC,世界将会怎样》。本文主要关注垃圾回收算法。垃圾回收机制,最早出现于世界上第二元老语言Lisp,JeanE.Sammet曾经说过,Lisp语言最长久的共享之一是一个非语言特征,即代表了系统自动处理内存的方法的术语极其技术——垃圾收集(GC,GarbageCollection)

2013-11-05 08:19:20 554

转载 LINUX&nbsp;c++线程池框架

原文地址:c++线程池框架">LINUX c++线程池框架作者:NeilLINUX c++线程池框架 本文给出了一个通用的线程池框架,该框架将与线程执行相关的任务进行了高层次的抽象,使之与具体的执行任务无关。另外该线程池具有动态伸缩性,它能根据执行任务的轻重自动调整线程池中线程的数量。文章的最后,我们给出一个简单示例程序,通过该示例程序,我们会发现,通过该线程池框架执行多线程任务是多么的简

2013-11-05 08:19:18 400

原创 Linux&nbsp;pipe

pipe管道是单向的字节流,它将某个进程的标准输出连接到另一个进程的标准输入。管道和有名管道是最早的进程间通信机制之一,管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信。管道和有名管道的读写规则是在程序中应用它们的关键。管道相关的概念   在linux中管道是通过指向同一个临时的VFS inode的两个f

2013-11-05 08:19:16 442

原创 Linux&nbsp;上实现双向进程间通信管道

管道允许在进程之间按先进先出的方式传送数据,管道也能使进程同步执行。管道传统的实现方法是通过文件系统作为存储数据的地方。有两种类型的管道:一种是无名管道,简称为管道;另一种是有名管道,也称为FIFO。进程使用系统调用open来打开有名管道,使用系统调用pipe来建立无名管道。使用无名管道通讯的进程,必须是发出pipe调用的进程及其子进程。使用有名管道通讯的进程没有上述限制。在以后的叙述中,所有无名

2013-11-05 08:19:12 462

原创 Linux&nbsp;pipe(管道)

1、 管道概述及相关API应用1.1 管道相关的关键概念管道是Linux 支持的最初UnixIPC形式之一,具有以下特点:管道是半双工的,数据只能向一个方向流动;需要双方通信时,需要建立起两个管道;只能用于父子进程或者兄弟进程之间(具有亲缘关系的进程);单独构成一种独立的文件系统:管道对于管道两端的进程而言,就是一个文件,但它不是普通的文件,它不属于某种文件系统,而是自立门户,单独

2013-11-05 08:19:10 593

原创 2012年12月21日

“Unix 中所有的东西就是文件!”那个家伙也许正在说到一个事实:Unix 程序在执行任何形式的 I/O 的时候,程序是在读或者写一个文件描述符。一个文件描述符只是一个和打开的文件相关联的整数。但是(注意后面的话),这个文件可能是一个网络连接,FIFO,管道,终端,磁盘上的文件 或者什么其他的东西。Unix中所有的东西是文件!因此,你想和 Internet 上别 的程序通讯的时候,你将要通

2013-11-05 08:19:08 460

原创 Linux&nbsp;Socket编程(转载)

“一切皆Socket!”话虽些许夸张,但是事实也是,现在的网络编程几乎都是用的socket。——有感于实际编程和开源项目研究。我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web服务器通信的?当你用QQ聊天时,QQ进程怎么与服务器或你好友所在的QQ进程通信?这些都得靠socket?那什么是socket?socket的类型有哪些?还有so

2013-11-05 08:19:05 384

原创 Linux下Socket编程

Linux下Socket编程  一 、socket介绍  socket接口是TCP/IP网络的API,socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。要学Internet上的TCP/IP网络编程,必须理解socket接口。  socket接口设计者最先是将接口放在Unix操作系统里面的。如果了解Unix系统的输入和输出的话,就很容易了解socke

2013-11-05 08:19:03 369

原创 Linux下Socket编程(转载)

什么是Socket  Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。要学Internet上的TCP/IP网络编程,必须理解Socket接口。   Socket接口设计者最先是将接口放在Unix操作系统里面的。如果了解Unix系统的输入和输出的话,就很容易了解Socket了。网络的Socket数据传输

2013-11-05 08:19:01 420

转载 POSIX定时器:timer_settime(…

原文地址:POSIX定时器:timer_settime()作者:smart   最强大的定时器接口来自POSIX时钟系列,其创建、初始化以及删除一个定时器的行动被分为三个不同的函数:timer_create()(创建定时器)、timer_settime()(初始化定时器)以及timer_delete(销毁它)。 创建一个定时器:inttimer_create(clockid_t clo

2013-11-05 08:18:58 1098

原创 抽象工厂方法C++实现

看了设计模式中的抽象工厂方法,书中用到了C#中的反射技术,而C++中没有反射,我就参考MFC中为实现动态创建而设计的DYNCREATEMACRO的方法来克服抽象工厂的不足。使工厂类完全不更改的情况下就能随意添加新的产品类。工厂类通过读取配置文件动态创建对象。Utility.hclass COperator;typedef COperator* (*pCreateFun)();s

2013-11-05 08:18:56 528

原创 DLL与LIB的区别和联系

什么是lib文件,lib和dll的关系如何 (转,原文地址未知)(1)lib是编译时需要的,dll是运行时需要的。如果要完成源代码的编译,有lib就够了。如果也使动态连接的程序运行起来,有dll就够了。在开发和调试阶段,当然最好都有。(2)一般的动态库程序有lib文件和dll文件。lib文件是必须在编译期就连接到应用程序中的,而dll文件是运行期才会被调用的。如果有dll文件,那么对应的

2013-11-05 08:18:54 418

原创 char&nbsp;转wchar_t&nbsp;及wchar_t转char

char 转wchar_t 及wchar_t转char原文来自http://haofu123.blog.163.com/blog/static/178294920096243161997/利用widechartomultibyte来转换的函数通常适合于window平台上使用#include #include int _tmain(int argc, _tchar* argv

2013-11-05 08:18:52 551

原创 Bresenham算法(转)

上回说到, 在看一本书《Windows游戏编程大师技巧》 (Tricks of Windows Game ProgrammingGurus). 这次继续书里的内容: 直线光栅化的Bresenham算法. 书上讲的比较含糊, 没有讲算法的推导过程,更没讲算法是怎么想出来的. 所以我们只好自己动手, 丰衣足食…直线光栅化直线光栅化是指用像素点来模拟直线. 比如下图中用蓝色的像素点来模拟红色的直

2013-11-05 08:18:50 777

原创 关于C++随机数生成中种子值设置的…

今天编了一个遗传算法的小程序。在个体类的默认构造函数中,使用随机数来进行二进制编码的初始化。C++中的随机数其实是伪随机数,即随机数函数产生的是通过公式计算出来的一系列伪随机数,这个公式会采用一个种子数计算出一个数,而该数将成为产生下一个数的种子数。基于产生随机数的原理,如果采用相同的种子的话,两次调用随机数后产生的随机数序列将是一样的。一般情况下,在C++中使用当前时间作为种子数,这样两次调用随

2013-11-05 08:18:46 1066

原创 C++&nbsp;杂烩

1、有4种情况,会导致“编译器必须为未声明constructor之classes合成一个default constructor”① 带有Default constructor的member class object② 带有Default constructor的base class③ 带有一个Virtual function的class,编译器会为他们合成一个defaultconstruc

2013-11-05 08:18:43 387

原创 简单的COM对象

//////////////////////////////////////myInterface.h#ifndef __INTERFACE__#define __INTERFACE__#include #include #include using namespace std;const IID IID_IX = {0xea67aab3, 0xbe5a, 0x433a, 

2013-11-05 08:18:41 398

原创 Ruby程序设计笔记1

1、文件扩展名为".rb"   运行Ruby时输入ruby helloruby.rb2、print("Hello, Ruby!\n") \\双引号时会考虑\n这种特殊字符   print('Hello, Ruby!\n')\\单引号不会考虑\n、\t这种特殊字符,只会按照引号内容原本输出3、puts方法与print方法不同,显示的字符串最后面一定会换行。4、比如数值的1与字符串的“1”

2013-11-05 08:18:38 455

原创 Windows&nbsp;Game&nbsp;Note9

1、为多边形创建边界矩形同创建边界球是采取相同的方式,但你需要找出四条边而不是半径。为了找出(max_x, min_x, max_y,min_y)的值,可采取如下的简单算法:① 初始化(max_x = 0, min_x = 0, max_y = 0, min_y = 0),这是假设多边形的中心在(0,0)。② 对多边形的每个顶点,计算(max_x, min_x, max_y, min_y)

2013-11-05 08:18:35 480

原创 Windows&nbsp;Game&nbsp;Note8

1、画直线的Bresenham算法, 开始于(x0,y0)点,但是它不采用斜率来计算移动。它先在x方向上移动一个像素,然后再决定如何移动y方向的像素,以使所描画的直线尽量接近于实际的线。这是用过使用一个衡量光栅化得出的直线与实际直线之间的接近程度的误差项来实现的。该算法对误差项不断调整,以使得数字化的光栅线能够尽量接近真实直线。 x = x0; y = y0; dx = x1 - x0

2013-11-05 08:18:33 425

原创 C++&nbsp;Primer&nbsp;笔记20

1、可以在另一个类内部定义一个类,这样的类是嵌套类(nestedclass),也称为嵌套类型。 外围类和嵌套类的对象时互相独立的。嵌套类的名字在其外围类的作用域中可见,但在其他类作用域或定义外围类的作用域中不可见。外围类对嵌套类的成员没有特殊访问权,并且嵌套类对其外围类的成员也没有特殊访问权。2、为了在外围类的外部定义类体,必须用外围类的名字限定嵌套类的名字。 嵌套类可以直接引用外围类的静

2013-11-05 08:18:31 409

原创 Windows&nbsp;Game&nbsp;Note7

1、如何编写窗口模式的DirectX程序,如何操作主表面①窗口方式的DirectDraw程序的主表面就是整个显示屏幕,而不仅仅是你的窗口,这就意味着你必须找出你的窗口客户区的坐标,并确保只是在它上面操作②裁剪,你必须告诉DirectDraw裁剪系统,你在屏幕上有一个窗口,是它按照这个窗口进行裁剪,无论你的窗口如何移动位置或者改变尺寸③8位调色板。如果视频是8位模式,改变调色板会带

2013-11-05 08:18:29 434

原创 C++&nbsp;Primer&nbsp;笔记19

1、通过运行时类型识别(RTTI),程序能够使用基类的指针或引用来检索这些指针或引用所指对象的实际派生类型。   通过下面两个操作符提供RTTI① typeid操作符,返回指针或引用所指对象的实际类型② dynamic_cast操作符,将基类类型的指针或引用安全地转换为派生类型的指针或引用  这些操作符只为带有一个或多个虚函数的类返回动态类型信息,对于其他类型,返回静态(即编译时)类型

2013-11-05 08:18:27 396

原创 C++&nbsp;Primer&nbsp;笔记18

1、C++中,内存分配和对象构造紧密纠缠,使用new表达式的时候,分配内存,并在该内存中构造一个对象;使用delete表达式的时候,调用析构函数撤销对象,并将对象所用内存返还给系统。   C++提供下面两种方法分配和释放未构造的原始内存① allocator类,它提供可感知类型的内存分配。这个类支持一个抽象接口,以分配内存并随后使用该内存保存对象。② 标准库中的operator new

2013-11-05 08:18:24 384

原创 C++&nbsp;Primer&nbsp;笔记17

1、多重继承Primer 笔记17" TITLE="C++ Primer 笔记17" />class Panda : public Bear, public Endangered{...};基类构造函数按照基类在类派生列表中的出现次序调用。对Panda而言,基类初始化的次序是:① ZooAnimal,从Panda的直接基类Bear沿层次向上的最终基类。② Bear,第一个直接基类

2013-11-05 08:18:22 493

原创 C++&nbsp;Primer&nbsp;笔记16

1、命名空间(namespace)为防止名字冲突提供了更加可控的机制,命名空间能够划分全局命名空间,这样使用独立开发的库就更加容易,一个命名空间时一个作用域,通过在命名空间内部定义库中的名字,库的作者(以及用户)可以避免全局名字固有的限制。命名空间作用域不能以分号结束。2、在命名空间中定义的名字可以被命名空间中的其他成员直接访问,命名空间外部的代码必须指出名字在哪个命名空间中。可以编写usi

2013-11-05 08:18:20 357

原创 C++&nbsp;Primer&nbsp;笔记15

1、通过异常我们能够将问题的检测和问题的解决分离,这样程序的问题检测部分可以不必了解如何处理问题。Sales_item operator +(const Sales_item& lhs, constSales_item& rhs){  if(!lhs.same_isbn(rhs))    throw runtime_error("Data mustrefer to same ISBN

2013-11-05 08:18:18 387

原创 Windows&nbsp;Game&nbsp;Note6

1、执行位图的缩放很简单,需要你做的就是改变目标RECT的尺寸,只要它同源RECT的尺寸不同,图像就会被缩放。对于旋转,你不得不设一个DDBLTFX结构,执行旋转操作,你必须有支持旋转的硬件加速,然后设置DDBLTFX结构。例:DDBLTFX ddbltfx;DDRAW_INIT_STRUCT(ddbltfx);ddbltfx.dwRotationAngle = angle;然后,像通

2013-11-05 08:18:16 434

原创 Windows&nbsp;Game&nbsp;Note5

1、 要设置DirectDraw裁剪,需要执行以下步骤①   创建DirectDraw裁剪器对象,使用IDIRECTDRAW7::CreateClipper()函数②   创建裁剪序列(是矩形的列表,存储为RECT结构,这些矩形对应于可以进行blit的有效区域)③   用IDIRECTDRAWCLIPPER::SetClipList()将裁剪序列发送给裁剪器④   用I

2013-11-05 08:18:14 474

原创 Windows&nbsp;Game&nbsp;Note4

1、使用blitter进行内存填充:blitter是一个相当复杂的硬件。内存填充以为着用某些值填充VRAM中的一块区域。利用硬件blitter你可以立即直接填充或者移动大块VRAM和DirectDraw表面。  DirectDraw有两个用于显存块移动的函数是IDIRECTDRAWSURFACE7::Blt()和IDIRECTDRAWSURFACE7::BltFast()Blt()函数中的

2013-11-05 08:18:12 427

原创 Windows&nbsp;Game&nbsp;Note3

1、16位高彩模式:  Alpha.5.5.5   X.5.5.5   5.6.5获取像素格式:要知道任意表面的像素格式,需要调用IDIRECTDRAWSURFACE7::GetPixelFormat()函数DDPIXELFORMAT结构,dwFlags常用标志:DDPF_PALETTEINDEXED8:说明表面采用8位调色板模式DDPF_RGB:说明表面采用RGB模式,其格式可以

2013-11-05 08:18:09 434

原创 C++&nbsp;Primer&nbsp;笔记14

1、任意类(模板或非模板)可以拥有本身为类模板或函数模板的成员,这种成员称为成员模板(member template),成员模板不能为虚。模板成员声明看起来像任意模板的声明一样:template classQueue{ public:   template<classIt>   Queue(It beg, Itend):head(0),tail(0){copy_elems(beg

2013-11-05 08:18:07 389

原创 C++&nbsp;Primer&nbsp;笔记13

1、面向对象编程所依赖的多态性成为运行时多态性,泛型编程所依赖的多态性称为编译时多态性或参数式多态性。2、函数模板(functiontemplate):模板定义以关键字template开始,后接模板形参表,模板形参表是用尖括号括住的一个或多个模板形参的列表,实参之间以逗号分隔。模板形参表不能为空。例 template   int compare(constT& v1, const T&

2013-11-05 08:18:05 333

原创 Windows&nbsp;Game&nbsp;Note2

1、总共只有五个组成了DirectDraw:① IUnknown:所有COM对象都必须从这个基本接口生成。②IDirectDraw:这是开始使用DirectDraw时必须创建的主接口对象。IDirectDraw一对一地表示视频卡及其支持硬件。③IDirectDrawSurface:这表示你用DirectDraw创建、控制和显示的实际显示表面。一个DirectDraw显示表面可以使用显

2013-11-05 08:18:03 422

原创 Windows&nbsp;Game&nbsp;Note1

1、DirectX几乎可以为你提供对所有设备的硬件级的控制。通过叫做COM的技术,以及一套由Microsoft和硬件厂商共同编写的驱动程序库,就可以达到上述效果。Microsoft提出了一套协议,包括函数、变量、数据结构等等,硬件厂商必须遵守这套协议才能开发与硬件通信的驱动程序。2、DirectX组件:  DirectDraw、DirectSound、DirectMusic、DirectI

2013-11-05 08:18:01 463

原创 C++&nbsp;Primer&nbsp;笔记12

1、在C++中,通过基类的引用(或指针)调用虚函数时,发生动态绑定。引用(或指针)既可以指向基类对象也可以指向派生类对象,这一事实是动态绑定的关键。2、除了构造函数之外,任意非static成员函数都可以是虚函数。保留字virtual只在类内部的成员函数声明中出现,不能用在类定义体外部出现的函数定义上。3、派生类中虚函数的声明必须与基类中的定义完全匹配,但有一个例外:返回对基类型的引用(或指

2013-11-05 08:17:59 395

原创 C++&nbsp;Primer&nbsp;笔记11

1、重载操作符必须具有至少一个类类型或枚举类型的操作数。这条规则强制重载操作符不能重新定义用于内置类型对象的操作符含义。2、作为类成员的重载函数,其形参看起来比操作数数目少1。 作为成员函数的操作符有一个隐含的this形参,限定为第一个操作数。3、一般将算术和关系操作符定义为非成员函数,而将赋值操作符定义为成员。当操作符为成员函数,this指向左操作数。操作符定义为非成员函数时,通常必须

2013-11-05 08:17:57 402

原创 C++&nbsp;Primer&nbsp;笔记10

1、复制构造函数、赋值操作符和析构函数总称为复制控制(copy control)。2、复制构造函数可用于:① 根据另一个同类型的对象显式或隐式初始化一个对象。② 复制一个对象,将它作为实参传给一个函数。③ 从函数返回时复制一个对象。④ 初始化顺序容器中的元素。⑤ 根据元素初始化式列表初始化数组元素。3、vector svec(5);编译器首先使用string默认构造函数创建一个临时

2013-11-05 08:17:55 406

原创 C++&nbsp;Primer&nbsp;笔记9

1、每个类可以没有成员,也可以定义多个成员,成员可以是数据、函数或类型别名。2、将关键字const加在形参列表之后,就可以将成员函数声明为常量,const必须同时出现在声明和定义中。3、可以在类定义体内部指定一个成员为inline,作为其声明的一部分。或者,也可以在类定义体外部的函数定义上指定inline。4、类的定义以分号结束,分号是必须得,因为在类定义之后可以接一个对象定义列表,定义必

2013-11-05 08:17:52 415

《selenium2 python 自动化测试实战(第二版)》

《selenium2 python 自动化测试实战(第二版)》 虫师出品,必是精品

2015-05-21

抽象工厂C++实现

运用C++,MFC中的宏实现的抽象工厂设计模式,有兴趣的朋友可以参考一下

2013-07-07

打印输出任意tuple

运用C++11,模板编程技术,来反向解析任意tuple元素

2013-07-07

DBus_C_API_Lowlevel

网络上关于DBus的开发资料很少,这个是我用C Lowlevel API编写的完整的客户端和服务端代码,有兴趣的朋友可以参考一下

2013-07-07

c++简易线程池

C++编写的简易线程池,实现了线程安全,需要的朋友可以尝试一下

2013-07-07

随机生成图中的N棵最大树

给定一个图,随机生成这个图的N棵最大树(最大树就是包含图中所有的顶点的一棵树),现在只能生成一棵这样的树,请需要的同学自行修改下,令算法执行N次,即可以生成N棵最大树

2011-05-22

用初等变换求复数矩阵的逆矩阵

复数矩阵求逆,用了STL中的vector表示矩阵,用了complex类表示复数,求逆矩阵使用了初等变换求逆矩阵的方法

2011-05-22

用初等变换求实数矩阵的逆矩阵

实数矩阵求逆,用了STL中的vector表示矩阵,求逆矩阵使用了初等变换求逆矩阵的方法

2011-05-22

空空如也

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

TA关注的人

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