自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 资源 (7)
  • 收藏
  • 关注

原创 编程模仿boost::function和boost::bind

boost::function和boost::bind结合使用是非常强大的,他可以将成员函数和非成员函数绑定对一个对象上,实现了类似C#的委托机制。委托在许多时候可以替代C++里面的继承,实现对象解耦,简单说就是把产生事件的代码和处理事件的代码通过委托者给隔离开来。但是boost库是非常庞大的,尤其是在发布开源软件时,下载安装boost是一件让用户望而却步的事情。基于此,下面编程模拟boost::function和boost::bind。为了满足90%以上的应用场合,该代码实现以下目标:1.支持成员函

2013-09-12 14:03:49 1732

原创 CMake入门

CMake,是的缩写,是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。CMake 自己本身并不是构建工具(build tool),它不直接建构出最终的软件。它的职责是从抽象配置代码生成原生构建 工具(native build tool)文件。XcodeNinjaMakeCMake使用指定名为的配置文件可以控制软件的构建、测试和打包等流程。同时,通过编写平台无关的。

2023-04-09 20:40:16 449

转载 socks代理服务器协议的说明

socks代理里面,有socks4 socks4a socks5,也有叫sock4 sock4a sock5的,都是一回事。socks4 socks4a和socks5的tcp部分极其简单。这又出现一个怪现象了,网文中除了一个人说道udp比tcp复杂,其他的全都说udp简单,只说tcp部分,把udp都一笔带过了。而我就明显感到udp比tcp复杂很多。 sock

2014-11-17 09:39:41 1104

原创 对界面编程一些感想

大多数开发者刚学编程时,一般是从比较简单的示例代码开始,运行出来一般是很基本的Windows界面,那时候对漂亮的程序界面都是充满好奇,心里想着他们是怎样实现的呢?就是这份好奇,让不少人升起对界面编程的兴趣。在论坛里面看到不少大牛发布自己的界面作品,有仿IM软件的,仿播放器的,有使用DirectUI技术,效果非常不错。非常欣赏他们的共享精神。大多数朋友看到这样的界面库在羡慕的同时,一定迫

2014-03-21 16:11:43 953 2

原创 windows平台使用CMake编译pcre库

网上有在windows平台编译pcre库的介绍,都是使用手动填加文件到工程的方式,过程比较繁琐。其实pcre本身提供了对使用CMake进行编译的支持,操作如下:下载安装CMake,进行如下配置:生成的文件目录如下:打开生动的PCRE.sln直接编译即可!

2013-11-25 10:55:13 2073 1

原创 调用DocumentProperties弹出打印设置对话框

在VC中可以使用以下代码弹出打印属性设置对话框:m_hPrinter = NULL;PRINTER_DEFAULTS PrinterDef = { NULL, NULL, PRINTER_ALL_ACCESS };if(OpenPrinter( lpzsPrinterName, &m_hPrinter, &PrinterDef) ){ DEVMODE *pDevModout;

2013-09-27 17:39:34 2558

转载 调用COM组件服务器正在运行中解决方法

调用进程外COM组件时,如果等待时间过长,则会出现如下提示对话框:   服务器正在运行中 由于另一个程序正在运行中,此操作无法完成.请选择“切换到”来激活正在运行中的程序,并更正问题.底下是“切换到”和“重试”两个选项。可以在程序初始化时添加如下代码,屏蔽该提示对话框:AfxOleGetMessageFilter()->EnableBusyDialog(FALSE);AfxOle

2013-09-24 09:24:03 2805 1

转载 Win32编程点滴3 - 简单ActiveX控件的使用

文字来源:http://www.cnblogs.com/Greatest/archive/2009/09/03/1559533.html虽然这里一片的.net气氛,到处充斥着像MVC、WPF、WorkFlow、LINQ等各种niubility的术语。但我们使用的Windows还是由COM技术主宰着;我们在选择日常使用的软件时,也会避免使用.net开发的软件。即便是.net的桌面程序,也会经

2013-09-22 11:56:08 1509

转载 Win32编程点滴2

文章来源:http://www.cnblogs.com/Greatest/archive/2009/08/31/1557422.html前段时间我一直在研究一个问题:在一个DC中选择一个英文字体,为什么还是能够正确的绘制出中文?然后,我就找到了这篇文章,觉得还蛮好看的,所以翻译了一下。虽然这篇2004年写的文章,即使放到当年来看技术上也是很老了。从windows2000开始,类似TextO

2013-09-22 11:53:39 980

转载 Win32编程点滴1

文字来源:http://www.cnblogs.com/Greatest/archive/2009/08/25/1553623.html当我们非常熟练得用着MFC/ATL/WTL的时候,是否还记得如何用SDK方式编写程序?本博客将关注与用MFC/ATL/WTL时容易忽略的问题,容易犯的错误,以及一些技巧。作为第一篇,我们先来讨论一下最基础的一个东西,消息循环(Message loo

2013-09-22 11:50:50 965

转载 TCP知识片段

文章来源:http://blog.chinaunix.net/uid-29075379-id-3896840.htmlTCP之ACK发送情景我现在的理解,在有以下几种情景,TCP会把ack包发出去:1.收到1个包,启动200ms定时器,等到200ms的定时器到点了(第二个包没来),于是对这个包的确认ack被发送。这叫做“延迟发送”。2.收到1个包,启动200ms定时

2013-09-18 13:47:15 1101

转载 TCP之深入浅出send和recv

文章来源:http://blog.chinaunix.net/uid-29075379-id-3895700.html在这篇文章中,我用深入浅出socket选项行为中的4个选项来介绍send和recv的行为SO_RCVBUF SO_SNDBUF先明确一个概念:每个TCP socket在内核中都有一个发送缓冲区和一个接收缓冲区,TCP的全双工的工作模式以及TCP的滑动窗口便是依赖

2013-09-18 13:18:07 1078

转载 UDP中一个包的大小最大能多大

1.在进行UDP编程的时候,我们最容易想到的问题就是,一次发送多少bytes好?   当然,这个没有唯一答案,相对于不同的系统,不同的要求,其得到的答案是不一样的,我这里仅对   像ICQ一类的发送聊天消息的情况作分析,对于其他情况,你或许也能得到一点帮助:   首先,我们知道,TCP/IP通常被认为是一个四层协议系统,包括链路层,网络层,运输层,应用层.   UDP属于运输层,下

2013-09-18 11:56:48 3116

转载 TCP选项之SO_LINGER

文章来源:http://blog.chinaunix.net/uid-29075379-id-3904022.htmlSO_LINGER这个选项在我以前带队改造haproxy的时候引出过一个reset(RST)客户端连接的bug。SO_LINGER作用设置函数close()关闭TCP连接时的行为。缺省close()的行为是,如果有数据残留在socket发送缓冲区中则系统将继续发

2013-09-18 11:32:02 1089

转载 向国内的程序员开炮

我在工作中,接触到印度软件公司开发出来的软件:         整个体系架构非常清晰,按照我们的要求实现了全部功能,而且相当稳定。但  是打开具体的代码一看,拖沓冗长,水平不咋样。我们自己的一些程序员就有怪话  了,说他们水平真低。但是!印度人能够把软件整体把握得很好,能够完成软件,并  得到相当好的设计文档。    而中国人在那里琢磨数据结构、算法,界面人员就还没编码就想着是Outloo

2013-09-16 08:49:44 940

转载 在Session 0中创建用户进程

在Windows XP, Windows Server 2003或者更早期的Windows操作系统中,所有的服务和应用程序都是运行在与第一个登录到控制台的用户得Session中。这个Session叫做Session 0。在Session 0 中一起运行服务和用户应用程序,由于服务是以高权限运行的,所以会造成一些安全风险。这些因素使得一些恶意代理利用这点,来寻找提升他们自身权限的结构。在Wi

2013-09-12 13:13:28 1814

原创 VC++常用代码片段

1.改变当前目录到EXE所在的目录在VC++开发环境中直接运行程序,当前目录不是EXE所在的目录,这样会造成一些麻烦,比如使用相对路径打开文件。使用以下代码将当前目录设成EXE所在的目录:void ChangeCurDirToExe(){ CString strPath; ::GetModuleFileName(NULL,strPath.GetBuffer(MAX_PAT

2013-09-12 09:28:14 1532 1

原创 编程实现打印到文件

在网上找了好长时间,一直没找到可以编程实现打印到文件,生成prn格式的功能,今天终于在MSDN中找到了,拿出来分享一下。其实关键在于DOCINFO这个结构体,下面看看该结构体的定义:typedef struct { int cbSize; LPCTSTR lpszDocName; LPCTSTR lpszOutput; LPCTSTR lpszData

2013-09-10 09:30:39 2840 2

原创 编程实现后台打印

后台打印即打印时不弹出打印对话框,在某些不需要用户干预的时候非常有用。利用以下API可以很容易实现后台打印:1.创建打印机DCCreateDC(  LPCWSTR pwszDriver, LPCWSTR pwszDevice, LPCWSTR pszPort, DEVMODEW * pdm);pwszDriver:打印机驱动名称,可以为NULL也可以写成“WINSPOOL”

2013-09-10 09:08:52 1486

转载 C++中的new和delete

1. new与operator newC++中有很多语法让人难以理解,如:new operator(操作符,下同)和operator new之间差异,确切的说,应该是new与operator new 的区别。1.1 new operator如下代码:string *ps=new string("memory management");这里所使用的new就是所

2013-09-09 16:50:57 1414

原创 使用WireShark分析DICOM数据包

WireShark要比DVT里面的 Network

2013-09-09 11:05:52 4243 3

原创 视频监控客户端开发(IP Camera)总结

做了将近三年时间的视频监控客户端开发,当然期间也做个一些其他开发。在开发期间,经对系统不断进行重构优化积累了一些经验,现向大家分享一下。希望以此抛砖引玉,有这方面经验的朋友也发表一下看法和见解:首先看下项目需求:  1.最多同时支持16路高清音视频同时显示。  2.窗口模式,全屏,1窗口,4窗口,9窗口,16窗口。  3.播放控制,开始播放,停止播放,开启音频,停止音频,云台控

2013-09-06 17:27:12 3230 2

原创 一个函数实现网络故障诊断

该代码由网上的文章“微软ping程序源代码完整版”修改而来。该文实现一个完整的ping命令,但是大部分时候,为方便在其他程序中调用,在此将器封装成一个独立的函数。#include "stdafx.h"#pragma comment(lib,"ws2_32.lib")#include #include #include #define ICMP_ECHO 8 #de

2013-09-06 15:05:33 1350

原创 一种无锁CycleBuffer

利用我的前一篇文章介绍的多线程无锁解决方案,很容易实现一个支持一个线程读,一个线程写的CycleBuffer。需要特别注意的是该CycleBuffer要求缓冲区长度为2的n次方。下面贴出代码:class ZwAsynCount{public: ZwAsynCount(unsigned uSize) //uSize必须为2的n次方 { m_uReadCount = 0; m_uW

2013-09-05 13:52:48 1239 1

转载 程序员如何保持优秀

小范围的选择一些有用技术,透彻的学习它们,拥抱它们。然后不断的扩展这个范围。理解各种数据结构的优点和缺点,包括它们在内存中和在硬盘上的各自表现。理解各种算法的优点和缺点。了解你的工作领域。关上电脑,去做你的用户们在做的事。有准备,有愿望,有能力在任何时候投入到多种技术层面中。你必须知道表象下的技术原理。在“各个技术层面的掌握程度”和“编程能力”上有着

2013-09-05 11:17:20 796

原创 一种多线程基于计数无锁实现

先申明下,该方案为我在实际编程中创造出来的,事先我没有在其中地方看到关于该方案的介绍。     在多线程编程中,我们经常会遇到线程同步问题,这时候加锁就变得必不可少。但是锁的使用会或多或少带来某些性能上的下降。下面先介绍一个多线程编程中经常遇到的问题模型,然后实现一种无锁解决方案。     问题模型:     R:表示某种资源,线程A往R中存放资源,线程B从R中取出资源。

2013-09-03 10:09:31 2451 6

转载 MFC非模态对话框的销毁

S的指示:非模态对话框需要重载函数OnCanel,并且在这个函数中调用DestroyWindow。并且不能调用基类的OnCancel,因为基类的OnCancel调用了EndDialog这个函数,这个函数是针对模态对话框的。还有一个必须重载的函数就是PostNcDestroy,这也是一个虚函数,通常的非模态对话框是用类的指针,通过new创建的,这就需要在PostNcDestroy函数中delet

2013-03-18 17:08:25 1193

live555的VS2008工程

live555的VS2008工程,使用VS2008可以直接编译。

2014-05-25

利用thunk技术改写窗口类回调函数为窗口对象成员函数

使用Thunk技术改写窗口类回调函数为窗口对象成员函数。 具有介绍看 http://chzup.blog.163.com/blog/static/10771319201133014637408/

2011-04-30

VC++学生成绩管理系统

1.使用ODBC连接Access数据库。 2.学生信息管理。 3.成绩管理。 4.使用VC++ 2008编写。 5.适合用于做学生毕业设计参考。 6.包括源码,使用方法和可执行文件。

2010-04-21

Praise for High Performance Web Sites

中文名:“高性能网站建设指南”对于前端工程师来说,绝对值得一读。

2009-11-16

Android 图像处理教程

非常实用Android图像处理教程,有例子,PDF只有28页。

2009-11-12

Android程序员指南

Android开发指南,适合入门人员,英文书籍。

2009-11-12

基于 Mozilla 的扩展开发

本分详细对Mozilla的结构和对其进行扩展的基本步骤。

2009-05-22

空空如也

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

TA关注的人

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