- 博客(63)
- 资源 (5)
- 收藏
- 关注
转载 编程之美--O(n*log(n))--寻找最近点对
原创文章,转载请注明出处~~ http://www.cnblogs.com/justinzhang/ 问题描述:给定平面上N个点的坐标,找出距离最近的两个点。 这是编程之美2.11的一道题目,从昨天到现在就一直在设法解决它;如果用常规的解法,只需要将N个点两两计算距离,然后找出最小距离的两个点就可以了;但是这种解法的算法复杂度为O(N^2); 为了降低算法的复杂度
2013-08-07 23:58:12
9305
转载 C++ 虚继承与普通继承的内存模型对比
实验小结:对虚继承中编译器不同内存分配也不同。//1.vc6.0中虚继承除了自己有虚函数时有虚指针(没有虚函数时就不加自身的这个虚指针)+另外还有添加一个“公用继承虚指针”+再加上基的空间//2.gcc或codeblock中就没有添加“公用继承虚指针”,会比vc6.0中少4位,但如有虚函数时就有虚指针,最后还要加上基的空间 //相比1.少了4//3.对于不是虚继承而是一把的继承就会没有
2013-07-05 00:08:12
1392
转载 C++指针函数应用
C++中,成员指针是最为复杂的语法结构。但在事件驱动和多线程应用中被广泛用于调用回叫函数。在多线程应用中,每个线程都通过指向成员函数的指针来调用该函数。在这样的应用中,如果不用成员指针,编程是非常困难的。刚遇到这种语法时也许会让你止步不前。但你会发现,使用恰当的类型定义之后,复杂的语法是可以简化的。本文引导你了解成员函数指针的声明,赋值和调用回叫函数。成员函数指针的声明一个成员函数指针
2013-06-03 15:17:21
761
原创 在编写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
804
原创 pthread_join/pthread_exit
函数pthread_join用来等待一个线程的结束。函数原型为: extern int pthread_join __P ((pthread_t __th, void **__thread_return)); 第一个参数为被等待的线程标识符,第二个参数为一个用户定义的指针,它可以用来存储被等待线程的返回值。这个函数是一个线程阻塞的函数,调用它的线程将一直等待到被等待的线程结束为止,当函
2013-06-03 14:12:26
647
原创 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
667
原创 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
603
原创 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
1714
转载 sizeof length strlen
sizeof可以计算一个类型的大小空间sizeof 是 运算符,他可不是函数,是和 加减乘除一样的运算符,计算长度的,计算时候会把/0计算到里面length只是针对字符串而言的标准c里没有length这个函数只有在C++中的string类中才有length这个函数strlen 系统的库函数 是函数计算长度 不会算/0sizeof("abcd")的值为5le
2013-03-12 14:31:03
541
转载 C++ string学习
C++中string是标准库中一种容器,相当于保存元素类型为char的vector容器(自己理解),这个类提供了相当丰富的函数来完成对字符串操作,以及与C风格字符串之间转换,下面是对string一些总结 一,C语言的字符串在C语言里,对字符串的处理一项都是一件比较痛苦的事情,因为通常在实现字符串的操作的时候都会用到最不容易驾驭的类型——指针。比如下面这个例子://example
2013-03-12 13:45:21
520
转载 C/C++中枚举类型(enum)
如果一个变量你需要几种可能存在的值,那么就可以被定义成为枚举类型。之所以叫枚举就是说将变量或者叫对象可能存在的情况也可以说是可能的值一一例举出来。 举个例子来说明一吧,为了让大家更明白一点,比如一个铅笔盒中有一支笔,但在没有打开之前你并不知道它是什么笔,可能是铅笔也可能是钢笔,这里有两种可能,那么你就可以定义一个枚举类型来表示它!enum box{pencil,pen};//这里你
2013-02-26 21:39:11
516
转载 关于typedef的用法总结
不管实在C还是C++代码中,typedef这个词都不少见,当然出现频率较高的还是在C代码中。typedef与#define有些相似,但更多的是不同,特别是在一些复杂的用法上,就完全不同了,看了网上一些C/C++的学习者的博客,其中有一篇关于typedef的总结还是很不错,由于总结的很好,我就不加修改的引用过来了,以下是引用的内容(红色部分是我自己写的内容)。用途一:定义一种类型的别
2013-02-25 22:15:21
357
原创 这段时间做东西
directshow 网络连接 多线程BMP 在内存中 转换 JPGUDP 多线程编程 directshow 的流程 UDP TCP的流程 效率问题 ffmpeg 算法和论文 没做完的继续做完
2012-12-13 15:18:42
534
转载 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
8875
原创 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
13654
原创 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
1193
转载 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
695
转载 epoll精髓
在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。并且,在linux/posix_types.h头文件有这样的声明:#define __
2012-12-05 15:37:34
735
转载 epoll使用详解
epoll - I/O event notification facility在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。并且
2012-12-05 15:36:41
920
转载 高性能Socket服务器编程-02
上一章,我向大家演示了一个最基本的socket服务器结构,它一次只能响应一个连接请求,而“能同时响应多个连接和请求”无疑是现实生活中对socket服务器的最基本要求。要如何让socket服务器可以同时响应多个连接和请求呢?多线和多进程程肯定是大部分人首先想到的,可能很多人不一定真正清楚多线程和多进程的socket服务器架构具体意味着什么,但是至少大家都或多或少听说过这两种技术。不过本章中,我们暂时
2012-12-04 22:35:44
1290
转载 高性能Socket服务器编程-01
网络编程一直都是最吸引人、最有挑战的编程领域。从这篇文章开始,达达将同大家一起向这个领域出发,并接受各种难题的挑战,你准备好了吗?写在开始之前在开始之前,达达有一些题外话想先跟大家说说。在阅读这一系列的文章时,我希望大家始终记住以下几点:1. 软件开发没有银弹,人们总是试图找到问题的唯一解和最优解,但事实是每个问题都有N种解,并且在不同情况下最优解是不一样的,如果非
2012-12-04 22:34:49
2977
原创 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
998
原创 WaitForSingleObject与事件、信号量、互斥、临界区的用法
临界区临界区是一种最简单的同步对象,它只可以在同一进程内部使用。它的作用是保证只有一个线程可以申请到该对象void InitializeCriticalSection(LPCRITICAL_SECTION lpCriticalSection );产生临界区void DeleteCriticalSection(LPCRITICA
2012-11-20 15:05:23
7839
原创 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
3507
原创 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
1282
转载 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
852
原创 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
720
原创 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
8412
原创 Socket与WSASocket的区别
socket() 创建一个通讯端点并返回一个套接口。但是在socket库中例程在应用于阻塞套接口时会阻塞。 WSASocket()的发送操作和接收操作都可以被重叠使用。接收函数可以被多次调用,发出接 收缓冲区,准备接收到来的数据。发送函数也可以被多次调用,组成一个发送缓冲区队列。 可是socket()却只能发过之后等待回消息才可做下一步操作! Head
2012-11-19 14:29:24
4009
转载 多线程编程
一、问题的提出编写一个耗时的单线程程序: 新建一个基于对话框的应用程序SingleThread,在主对话框IDD_SINGLETHREAD_DIALOG添加一个按钮,ID为IDC_SLEEP_SIX_SECOND,标题为“延时6秒”,添加按钮的响应函数,代码如下:void CSingleThreadDlg::OnSleepSixSecond(){Sleep
2012-11-19 10:20:06
624
转载 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
935
转载 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
542
转载 STL概述
概述STL的一个重要特点是数据结构和算法的分离。尽管这是个简单的概念,但这种分离确实使得STL变得非常通用。例如,由于STL的sort()函数是完全通用的,你可以用它来操作几乎任何数据集合,包括链表,容器和数组。要点STL算法作为模板函数提供。为了和其他组件相区别,在本书中STL算法以后接一对圆括弧的方式表示,例如sort()。STL另一个重要特性是它不是面向对象的。为了具有足够通
2012-11-14 09:30:35
536
转载 BMP图片格式
注意:以上的多字节类型,如Int32是以先高位后低位存储的,如位文件大小:0002-0005,Int32类型,要按第5、4、3、2字节顺序组合,得到的整数才是正确的。有了头文件信息后,我们就可以找到位图数据。位图数据是以4个字节(32位,对应32位CPU的优化)为一组来处理的。例1. 我们先来看简单的只有黑白两色的内部存储方式(0:黑,1:白):原始bmp图(一个方
2012-11-10 10:34:19
519
原创 实时捕捉图像的播放
void CVideoPlay::RealPlay(){HRESULT hr;//创建捕捉过滤器图表 hr=CoCreateInstance((REFCLSID)CLSID_CaptureGraphBuilder2,NULL,CLSCTX_INPROC, (REFIID)IID_ICaptureGraphBuilder2,(void **)&CapPigb);
2012-11-10 10:12:27
686
转载 结构体 联合体 链表 枚举和位域
一、联合的定义定义一个联合类型的一般形式为:union 联合名{成员表};成员表中含有若干成员,成员的一般形式为: 类型说明符 成员名 成员名的命名应符合标识符的规定。例如:union perdata{int class;char office[10];};定义了一个名为perdata的联合类型,它含有两个成员,一个为整型,成员名为c
2012-11-07 10:59:19
537
转载 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
600
转载 单播、多播(组播)和广播的区别
单播、多播和广播单播”(Unicast)、“多播”(Multicast)和“广播”(Broadcast)这三个术语都是用来描述网络节点之间通讯方式的术语。那么这些术语究竟是什么意思?区别何在?1.单播:网络节点之间的通信就好像是人们之间的对话一样。如果一个人对另外一个人说话,那么用网络技术的术语来描述就是“单播”,此时信息的接收和传递只在两个节点之间进行。单播在网络中得到了广泛的应用,网络
2012-10-29 19:13:27
510
转载 CJLibrary
在进行项目开发时,功能是最主要的,逐一设置单纯的控件外观与高效率的程序开发是相互矛盾的。在这里推荐给大家一个类库--CJLibrary,利用这个库,你可以做出像Outlook, DevStudio那样美观、方便的程序界面,让读者朋友在程序界面程序设计中享受一下RAD。一、CJLibrary安装与环境配置CJ是一套基于MFC的VC++界面开发类库,源代码公开,可以网上免费下载。它的主 页是
2012-10-29 14:08:56
2970
Visual Assist X 10.6.1827.0破解版
2012-10-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人