自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(63)
  • 资源 (5)
  • 收藏
  • 关注

转载 编程之美--O(n*log(n))--寻找最近点对

原创文章,转载请注明出处~~ http://www.cnblogs.com/justinzhang/ 问题描述:给定平面上N个点的坐标,找出距离最近的两个点。        这是编程之美2.11的一道题目,从昨天到现在就一直在设法解决它;如果用常规的解法,只需要将N个点两两计算距离,然后找出最小距离的两个点就可以了;但是这种解法的算法复杂度为O(N^2); 为了降低算法的复杂度

2013-08-07 23:58:12 9244 3

转载 C++ 虚继承与普通继承的内存模型对比

实验小结:对虚继承中编译器不同内存分配也不同。//1.vc6.0中虚继承除了自己有虚函数时有虚指针(没有虚函数时就不加自身的这个虚指针)+另外还有添加一个“公用继承虚指针”+再加上基的空间//2.gcc或codeblock中就没有添加“公用继承虚指针”,会比vc6.0中少4位,但如有虚函数时就有虚指针,最后还要加上基的空间 //相比1.少了4//3.对于不是虚继承而是一把的继承就会没有

2013-07-05 00:08:12 1369

转载 C++指针函数应用

C++中,成员指针是最为复杂的语法结构。但在事件驱动和多线程应用中被广泛用于调用回叫函数。在多线程应用中,每个线程都通过指向成员函数的指针来调用该函数。在这样的应用中,如果不用成员指针,编程是非常困难的。刚遇到这种语法时也许会让你止步不前。但你会发现,使用恰当的类型定义之后,复杂的语法是可以简化的。本文引导你了解成员函数指针的声明,赋值和调用回叫函数。成员函数指针的声明一个成员函数指针

2013-06-03 15:17:21 724

原创 在编写Linux多线程中的函数入口错误

在写linux多线程test的时候,在写函数入口函数的时候: 无论是命名为void threadfun()、 还是 void * threadfun() 、还是 void* threadfun(void)在调用的时候会提示错误:所以把函数命名为 void * threadfun(void *)在调用的时候 pthread_create(&id,NULL,threadfun,NULL

2013-06-03 14:18:45 765

原创 pthread_join/pthread_exit

函数pthread_join用来等待一个线程的结束。函数原型为:  extern int pthread_join __P ((pthread_t __th, void **__thread_return));  第一个参数为被等待的线程标识符,第二个参数为一个用户定义的指针,它可以用来存储被等待线程的返回值。这个函数是一个线程阻塞的函数,调用它的线程将一直等待到被等待的线程结束为止,当函

2013-06-03 14:12:26 622

原创 Test linux 多线程

#include#include#include class CLock{public: CLock(); virtual ~CLock(); int lock(); int init(); int destroy(); int unlock();private: p

2013-06-03 14:01:02 646

原创 undefined reference to 'pthread_create'

错误:undefined reference to 'pthread_create'undefined reference to 'pthread_join' pthread 库不是 Linux 系统默认的库,连接时需要使用静态库 libpthread.a,所以在使用pthread_create()创建线程,以及调用 pthread_atfork()函数建立fork处理程序时,需要

2013-06-03 13:58:13 578

原创 python 的重定向的两种写法,老少咸宜

有时需要把print的内容输出到变量储存起来,比如调用别人的脚本,别人结果都是print出来的。有2种办法,第一种是先重定向到文件,再load回来,第二种是直接用一个objec 的write方法纪录下来,记得最后要重新定向stdout:方法一:temp = sys.stdoutsys.stdout = open('.server_all','w')print 1,2,3 # 测试,之

2013-05-29 15:15:51 1687

转载 sizeof length strlen

sizeof可以计算一个类型的大小空间sizeof  是 运算符,他可不是函数,是和 加减乘除一样的运算符,计算长度的,计算时候会把/0计算到里面length只是针对字符串而言的标准c里没有length这个函数只有在C++中的string类中才有length这个函数strlen 系统的库函数 是函数计算长度 不会算/0sizeof("abcd")的值为5le

2013-03-12 14:31:03 518

转载 C++ string学习

C++中string是标准库中一种容器,相当于保存元素类型为char的vector容器(自己理解),这个类提供了相当丰富的函数来完成对字符串操作,以及与C风格字符串之间转换,下面是对string一些总结 一,C语言的字符串在C语言里,对字符串的处理一项都是一件比较痛苦的事情,因为通常在实现字符串的操作的时候都会用到最不容易驾驭的类型——指针。比如下面这个例子://example

2013-03-12 13:45:21 499

转载 C/C++中枚举类型(enum)

如果一个变量你需要几种可能存在的值,那么就可以被定义成为枚举类型。之所以叫枚举就是说将变量或者叫对象可能存在的情况也可以说是可能的值一一例举出来。   举个例子来说明一吧,为了让大家更明白一点,比如一个铅笔盒中有一支笔,但在没有打开之前你并不知道它是什么笔,可能是铅笔也可能是钢笔,这里有两种可能,那么你就可以定义一个枚举类型来表示它!enum box{pencil,pen};//这里你

2013-02-26 21:39:11 492

转载 关于typedef的用法总结

不管实在C还是C++代码中,typedef这个词都不少见,当然出现频率较高的还是在C代码中。typedef与#define有些相似,但更多的是不同,特别是在一些复杂的用法上,就完全不同了,看了网上一些C/C++的学习者的博客,其中有一篇关于typedef的总结还是很不错,由于总结的很好,我就不加修改的引用过来了,以下是引用的内容(红色部分是我自己写的内容)。用途一:定义一种类型的别

2013-02-25 22:15:21 337

原创 这段时间做东西

directshow   网络连接  多线程BMP 在内存中 转换 JPGUDP 多线程编程 directshow 的流程  UDP TCP的流程    效率问题  ffmpeg    算法和论文 没做完的继续做完

2012-12-13 15:18:42 514

转载 BMP与JPG图片格式的互相转换

近天要用到bmp与jpg之间互想转换,在网上查看了许多资料,如jpeglib,cximage,zlib,最后找到了GDI+利用流来转换,此方法最简单,可以实现在文件->文件,文件->内存,内存->内存,内存->文件保存,对于网络传送图片非常实用,通常320*240*24b的225k的BMP转成JPG后大约15.6K,压缩比15:1.转换逻辑如下:1.载入bmp或jpg文件,取得文件数据大小

2012-12-10 15:48:54 8770

原创 VC 实现BMP转换到JPG、JPG转换到BMP

int GetEncoderClsid(const WCHAR* format, CLSID* pClsid) { UINT num = 0; // number of image encoders UINT size = 0; // size of the image encode

2012-12-07 15:37:51 13611 1

原创 vc6.0 设置GDI+

1.下载(GDI+ for VC6.0 SDK)GDIPlus文件将其中的Includes和Lib中的文件拷到vc目录下的Includes和Lib文件夹中.   下载地址:http://www.codeguru.com/code/legacy/gdi/GDIPlus.zip(引用他人的)2.在你将要使用GDI+的工程中,完成初始化工作:在StdAfx.h中加入#define ULO

2012-12-07 15:36:03 1174

转载 select、poll、epoll的比较

http://my.chinaunix.net/space.php?uid=20196318&do=blog&id=366042http://blog.endlesscode.com/2010/03/27/select-poll-epoll-intro/  linux提供了select、poll、epoll接口来实现IO复用,三者的原型如下所示,本文从参数、实现、性能等

2012-12-05 15:38:21 676

转载 epoll精髓

在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。并且,在linux/posix_types.h头文件有这样的声明:#define __

2012-12-05 15:37:34 709

转载 epoll使用详解

epoll - I/O event notification facility在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。并且

2012-12-05 15:36:41 893

转载 高性能Socket服务器编程-02

上一章,我向大家演示了一个最基本的socket服务器结构,它一次只能响应一个连接请求,而“能同时响应多个连接和请求”无疑是现实生活中对socket服务器的最基本要求。要如何让socket服务器可以同时响应多个连接和请求呢?多线和多进程程肯定是大部分人首先想到的,可能很多人不一定真正清楚多线程和多进程的socket服务器架构具体意味着什么,但是至少大家都或多或少听说过这两种技术。不过本章中,我们暂时

2012-12-04 22:35:44 1262

转载 高性能Socket服务器编程-01

网络编程一直都是最吸引人、最有挑战的编程领域。从这篇文章开始,达达将同大家一起向这个领域出发,并接受各种难题的挑战,你准备好了吗?写在开始之前在开始之前,达达有一些题外话想先跟大家说说。在阅读这一系列的文章时,我希望大家始终记住以下几点:1. 软件开发没有银弹,人们总是试图找到问题的唯一解和最优解,但事实是每个问题都有N种解,并且在不同情况下最优解是不一样的,如果非

2012-12-04 22:34:49 2958 1

原创 学习新的东西

学习下高性能服务器,大数据处理

2012-12-04 16:28:50 587

原创 CreateThread出现的错误

用VC创建新线程易出的问题error C2664: 'CreateThread' : cannot convert parameter 3 from 'unsigned long (void *)' to 'unsigned long (__stdcall *)(void *)'解决方案:(1)如果线程要执行的是类的成员函数,则必须用static声明为静态函数  如:   cl

2012-11-21 10:18:50 964

原创 WaitForSingleObject与事件、信号量、互斥、临界区的用法

临界区临界区是一种最简单的同步对象,它只可以在同一进程内部使用。它的作用是保证只有一个线程可以申请到该对象void InitializeCriticalSection(LPCRITICAL_SECTION lpCriticalSection );产生临界区void DeleteCriticalSection(LPCRITICA

2012-11-20 15:05:23 7807

原创 sendto 和WSASendTo

winsock1版的函数不加WSA winsock2版的函数才有WSA 并且前者是阻塞模式 后者是非阻塞模式如果想设置前者为非阻塞模式 u_long mode = 1;ioctlsocket(sendsocket,FIONBIO,&mode);mode为非零就是非阻塞模式,为零就是阻塞模式 然后再sento(sendSocket,sendData,strlen(sendData),0,

2012-11-19 16:33:14 3447

原创 WSAAsyncSelect消息机制

WSAAsyncSelect基于Windows消息机制异步I/O模型,为特定网络事件指定系统通知信息.函数定义int WSAAsyncSelect(SOCKET s, HWND hWnd, unsigned int wMsg, long lEvent);(1)参数4-1Event:设定用户关心得套接口上的网络事件.形式如:1Event=FD_READ/FD_CLOSE.网络I/O事

2012-11-19 16:22:30 1265

转载 LRESULT

在windows应用程序中经常能够看到LRESULT CALLBACK WndProc(HWND,UIINT, WPARAM,LPARAM)这句话,我们来详细讲讲。(1)首先是对于LRESULT的理解LRESULT是一个数据类型,   MSDN: 32-bit value returned from a window procedure or callback function

2012-11-19 16:08:04 821

原创 m_hWnd与this指针

m_hWnd ① m_hWnd这个成员变量,最早是定义在类CWnd中,而且是类CWnd的第一个数据成员,先看一下MSDN的解析:  The handle of the Windows window attached to this CWnd. The m_hWnd data member is a public variable of type HWND.由

2012-11-19 15:56:16 686

原创 WSASocket写的简单的C/S端

/** 服务器端*/#include #include #include #pragma comment(lib,"Ws2_32.lib") SOCKET sockSvc;//服务器端socketSOCKET sockConnect; //连接用的socket DWORD WINAPI Recv

2012-11-19 15:37:14 8363

原创 Socket与WSASocket的区别

socket()   创建一个通讯端点并返回一个套接口。但是在socket库中例程在应用于阻塞套接口时会阻塞。     WSASocket()的发送操作和接收操作都可以被重叠使用。接收函数可以被多次调用,发出接     收缓冲区,准备接收到来的数据。发送函数也可以被多次调用,组成一个发送缓冲区队列。     可是socket()却只能发过之后等待回消息才可做下一步操作!  Head

2012-11-19 14:29:24 3989

转载 多线程编程

一、问题的提出编写一个耗时的单线程程序:  新建一个基于对话框的应用程序SingleThread,在主对话框IDD_SINGLETHREAD_DIALOG添加一个按钮,ID为IDC_SLEEP_SIX_SECOND,标题为“延时6秒”,添加按钮的响应函数,代码如下:void CSingleThreadDlg::OnSleepSixSecond(){Sleep

2012-11-19 10:20:06 606

转载 TCP编程的流程

TCP流程 1、检查版本号——   // Init WinSock     WSADATA   data;     int ret = WSAStartup(0x0202, &data);     if (ret != 0)     {         WSACleanup();         return FALSE;     }2、建立套接字,绑定

2012-11-16 10:02:50 911 1

转载 setsockopt设置socket状态

1.closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket:BOOL bReuseaddr=TRUE;setsockopt(s,SOL_SOCKET ,SO_REUSEADDR,(const char*)&bReuseaddr,sizeof(BOOL));2. 如果要已经处于连接状态的soket在调用closesocket后强制关闭,不经

2012-11-16 09:51:17 516

转载 STL概述

概述STL的一个重要特点是数据结构和算法的分离。尽管这是个简单的概念,但这种分离确实使得STL变得非常通用。例如,由于STL的sort()函数是完全通用的,你可以用它来操作几乎任何数据集合,包括链表,容器和数组。要点STL算法作为模板函数提供。为了和其他组件相区别,在本书中STL算法以后接一对圆括弧的方式表示,例如sort()。STL另一个重要特性是它不是面向对象的。为了具有足够通

2012-11-14 09:30:35 512

转载 BMP图片格式

注意:以上的多字节类型,如Int32是以先高位后低位存储的,如位文件大小:0002-0005,Int32类型,要按第5、4、3、2字节顺序组合,得到的整数才是正确的。有了头文件信息后,我们就可以找到位图数据。位图数据是以4个字节(32位,对应32位CPU的优化)为一组来处理的。例1. 我们先来看简单的只有黑白两色的内部存储方式(0:黑,1:白):原始bmp图(一个方

2012-11-10 10:34:19 503

原创 实时捕捉图像的播放

void CVideoPlay::RealPlay(){HRESULT hr;//创建捕捉过滤器图表      hr=CoCreateInstance((REFCLSID)CLSID_CaptureGraphBuilder2,NULL,CLSCTX_INPROC, (REFIID)IID_ICaptureGraphBuilder2,(void **)&CapPigb);

2012-11-10 10:12:27 660

转载 结构体 联合体 链表 枚举和位域

一、联合的定义定义一个联合类型的一般形式为:union 联合名{成员表};成员表中含有若干成员,成员的一般形式为: 类型说明符 成员名 成员名的命名应符合标识符的规定。例如:union perdata{int class;char office[10];};定义了一个名为perdata的联合类型,它含有两个成员,一个为整型,成员名为c

2012-11-07 10:59:19 511

转载 c语言枚举类型详解

在程序中,可能需要为某些整数定义一个别名,我们可以利用预处理指令#define来完成这项工作,您的代码可能是: #define MON  1#define TUE   2#define WED  3#define THU   4#define FRI    5#define SAT   6#define SUN   7在此,我

2012-10-30 09:55:14 588

转载 单播、多播(组播)和广播的区别

单播、多播和广播单播”(Unicast)、“多播”(Multicast)和“广播”(Broadcast)这三个术语都是用来描述网络节点之间通讯方式的术语。那么这些术语究竟是什么意思?区别何在?1.单播:网络节点之间的通信就好像是人们之间的对话一样。如果一个人对另外一个人说话,那么用网络技术的术语来描述就是“单播”,此时信息的接收和传递只在两个节点之间进行。单播在网络中得到了广泛的应用,网络

2012-10-29 19:13:27 489

转载 CJLibrary

在进行项目开发时,功能是最主要的,逐一设置单纯的控件外观与高效率的程序开发是相互矛盾的。在这里推荐给大家一个类库--CJLibrary,利用这个库,你可以做出像Outlook,  DevStudio那样美观、方便的程序界面,让读者朋友在程序界面程序设计中享受一下RAD。一、CJLibrary安装与环境配置CJ是一套基于MFC的VC++界面开发类库,源代码公开,可以网上免费下载。它的主 页是

2012-10-29 14:08:56 2954

Visual Assist X 10.6.1827.0破解版

Visual Assist X 10.6.1827.0 将解压文件中的VA_X.dll替换掉安装目录的VA_X.dll文件,注意,因为我的是Windows7操作系统,所有在找安装目录是颇费周折,原来10.6.1819的安装目录有所改变,在我的Windows7系统上路径是:“C:\Users\Administrator\AppData\Local\Microsoft\VisualStudio\10.0\Extensions\Whole Tomato Software\Visual Assist X\10.6.1819.0”,查找这个目录最简单的方法是在安装VS2010的硬盘分区下搜索“VA_X.dll”

2012-10-30

vc++深入详解 笔记

vc++深入详解 笔记

2012-07-24

WINDOWS编程入门(21天教程)

WINDOWS编程入门(21天教程)

2012-07-24

C系列编程语言命名规范

C系列编程语言命名规范

2012-07-24

《圈圈教你玩USB》电子版.chm )

《圈圈教你玩USB》电子版.chm

2012-07-24

空空如也

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

TA关注的人

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