自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

我的编程之旅

学无止境

  • 博客(263)
  • 资源 (4)
  • 收藏
  • 关注

转载 P2P之UDP穿透NAT原理

首先先介绍一些基本概念:NAT(Network Address Translators),网络地址转换:网络地址转换是在IP地址日益缺乏的情况下产生的,它的主要目的就是为了能够地址重用。NAT分为两大类,基本的NAT和NAPT(Network Address/Port Translator)。最开始NAT是运行在路由器上的一个功能模块。最先提出的是基本的NAT,它的产生基于如下事实:一个私有网络(域)中的节点中只有很少的节点需要与外网连接(呵呵,这是在上世纪90年代中期提出的)。那么这个子网中其实只有少数的

2011-03-23 21:57:00 564

转载 作业

<br />Note 0:<br />Windows提供了一个作业(job)内核对象,它允许你将进程组合在一起并创建一个"沙箱"来限制进程能够做什么.最好将作业对象想象成一个进程容器.但是,即使作业中只包含一个进程,也是非常有用的,因为这样可以对进程施加平时不能施加的限制.<br />Note 1:<br />以下的StartRestrictedProcess函数将一个进程放入一个作业中,以限制此进程具体能够做哪些事情,如下所示:<br />void StartRestrictedProcess() {<b

2011-03-11 18:04:00 931

转载 通过SetWorkingSet减少内存使用(翻译)

第一次翻译文章,错误在所难免。让大家见笑了!还希望高手多指点。。    Windows Form应用程序在内存使用方面显得非常臃肿。主要是因为.NET应用程序在启动的时候有大量的footprint被JIT编译器加载,并且所有的链代码和WinForms引擎在启动时候被编译,并加载到程序的进程。这一过程占用了处理器时间片的同时也占用了大量的内存。JIT在确定哪些代码应该被编译已经做的非常好了,大部分其编译的代码都是事实上要用的。但是.NET框架本身也会要求编译一些代码。这样的结果就是程序进程加载了很多只在启动的

2011-03-11 10:51:00 2118

转载 作业管理

StartRestrictedProcess 函数,我们利用该函数可以把一个进程放入一个作业中。<br />void StartRestrictedProcess() {<br />   // 1.首先,我们会校验一个当前的进程判断它是否是已经在一个现有作业下控制运行了。   BOOL bInJob = FALSE;   IsProcessInJob(GetCurrentProcess(), NULL, &bInJob);   if (bInJob) {      MessageBox(NULL, TEXT

2011-03-11 10:48:00 1079

转载 各种进程创建方式比较总结(MacOS, Win32, Qt)

write by 九天雁翎(JTianLing) -- blog.csdn.net/vagrxie讨论新闻组及文件 由于进程创建是非常基础,很重要的工作,由此导致的恶果就是每个系统自己都喜欢封装一套,以显示自己对其有原生的,较好的支持,但是,说实话,有的时候, 那方式,实在是相当别扭,这里,我讲我了解的平台/系统下的进程创建方式统一的梳理总结一下,也顺面可以比较一下各个系统的API封装情况,窥一斑而见全 豹嘛。这里很容易加入主观因素,也没有太多客观事实可以作为唯一的评定标准,那么

2011-03-08 11:43:00 1480 1

转载 异常处理与MiniDump详解(2) 智能指针与C++异常

<br />异常处理与MiniDump详解(2)  智能指针与C++异常<br />write by 九天雁翎(JTianLing) -- blog.csdn.net/vagrxie<br />讨论新闻组及文件一、   综述<br />《异常处理与MiniDump详解(1) C++异常》稍微回顾了下C++异常的语法及其类似于函数参数传递的抛出异常对象的copy,引用语义,但是有个问题没有详细讲,那就是C++异常的绝佳搭档,智能指针。在没有智能指针的时候会感觉C++的异常少了一个用于释放资源的finally语

2011-03-07 16:52:00 876

转载 Win32结构化异常处理(SEH)——终止处理程序(__try/__finally)

<br /><br />环境:VC++6.0, Windows XP SP3<br />        当我们想编写一个健壮的程序时,我们会用到异常处理,对各种异常进行考虑并进行处理。现在在各种语言都有自己的异常处理机制,比如C++的try, catch, throw,JAVA也一样。不过它们的实现都要基于OS。<br />        Microsoft为了使系统程序和应用程序更加健壮,把异常处理加入了Windows。这里的异常处理就是SEH, 结构化异常处理(Structured Exception

2011-03-07 16:33:00 1524

转载 Win32结构化异常处理(SEH)——异常处理程序(__try/__except)

<br /><br />环境:VC++6.0, Windows XP SP3<br />        上一篇中,我们看到了如何实现一个终止处理程序,和系统级的异常处理程序,在这一篇中,我们要着重看一下VC++6.0的异常处理程序是如何实现的。<br />        这里要用的结构体有:<br /> <br /> typedef struct _SCOPETABLE<br />  {<br />    DWORD       previousTryLevel;<br />    DWORD      

2011-03-07 16:21:00 2805

转载 Linux精简指南

<br />一、概述<br />精简Linux系统的主要目的是将Linux系统使用固态盘等小容量flash存储设备来替代PC机上面的硬盘。解约成本、减少体积、提高速度以及延长使用寿命和稳定性。<br />精简Linux的主要方法就是通过更换Linux的系统环境进行的。主要的过程是使用内存文件系统替换硬盘文件系统,使用busybox替换Linux的init进程、常用命令和shell,使用Framebuffer替换X11库。<br />二、准备工作<br />在精简之前,需要安装引导程序,用来引导我们精简之后的

2011-03-05 10:04:00 4324

转载 asp jsp 判断操作系统类型 浏览器版本

<br /><br />//获取客户端操作系统类型 <br />function detectOS() <br />{  <br />    var sUserAgent = navigator.userAgent; <br />    var isWin = (navigator.platform == "Win32") || (navigator.platform == "Windows");                                                        

2011-02-28 15:27:00 3413

转载 VirtualBox中实现与主机文件的共享

<br />来源: 编辑: 时间:2009-07-28<br />VirtualBox是一款开源的虚拟机软件,可以在Linux/Mac和Windows主机中运行。支持在虚拟机中安装全系列Windows操作系统(如Win2000、XP、Vista、Windosw 7)。在VirtualBox虚拟机中安装操作系统并不复杂,如同在真实电脑中一样。对于多数新手来说,使用VirtualBox最大的麻烦就是共享相关问题,今天我们就来解决虚拟XP系统与真实主机之间的文件共享问题,下面以最新版本的VirtualBox 3.

2011-02-27 09:38:00 789

转载 Linux必学的60个命令

<br />Linux必学的60个命令(1)-安装与登陆<br />Linux必学的60个命令<br />Linux提供了大量的命令,利用它可以有效地完成大量的工作,如磁盘操作、文件存取、目录操作、进程管理、文件权限设定等。所以,在<br />Linux系统上工作离不开使用系统提供的命令。要想真正理解Linux系统,就必须从Linux命令学起,通过基础的命令学习可以进一步理解 Linux<br />系统。<br />不同Linux发行版的命令数量不一样,但Linux发行版本最少的命令也有200多个。这里笔者

2011-02-27 09:37:00 1667

转载 Linux图形界面中客户端、服务器、窗口管理器之间的关系

很多LINUX初学者在学习linux图形方面的知识时会遇到一些概念,如:X、X11、Xfree86、WM、 KDE、GNOME、QT、QT/E、Qtopia、DirectFB、Framebuffer、显卡加速驱动等等。理解它们之间是什么关系,对我们学习来说是非常重要的。写这篇文章的目的,就是想让大家明晰这些概念及它们之间的关系。(部分内容引用网络上的一些描述比较清晰的内容)一、Linux操作系统和图形的关系 linux本身没有图像界面,linux现在的图像界面的实现只是linux下的应用程序实现的。图像界面

2011-02-27 09:14:00 623

转载 UDT协议-基于UDP的可靠数据传输协议

UDT协议-基于UDP的可靠数据传输协议

2011-02-21 08:42:00 1710

转载 ghost封装电源判断longhorn的detecthal技术

<br />HAL为硬件抽象层之意。微软自带系统封装工具SYSPREP,可以方便快捷地进行企业产品部署,但是在WINDOWS LONGHORN之前,运用SYSPREP有一个限制,就是仅适用于用于封装的源计算机和目标计算机必须具有相同硬件抽象层 (HAL),因此,不同的网友均提出了不用的HAL检测解决方案,如ACPI封包、.的电源模式等等,这些解决方案不同程度存在几个缺点:1、检测的兼容性无法达到100%;2、检测需要额外的文件,并且可能需要重新启动计算机,耗费了时间。<br />  有没有一个最完美的解决方

2011-02-14 13:58:00 3117

转载 手动封装系统

解决问题  手工封装其实只要解决两个问题,现有的工具无非也是解决这两个问题。这两个问题就是电源判断即突破HAL限制,(这个是必要的,因为母机和客户机的配置通常不一样)以及SRS驱动相关(因为目前的机器配置更新越来越快,所以这个是必要的。这样能提高恢复光盘可用性)。工具的好处就是不要人工操作(程序都写好了),另外就是方便扩展性(例如你可以添加任何适合运行何种程序,或者隐藏P处理的黑框)。下面是这两个方面是如何突破的并达到手工封装系统。电源判断的实现  电源判断的实现有多种方法,方法:   Copy

2011-02-14 13:47:00 3057

转载 最新Ghost系统封装教程及封装工具原理

<br />本教程基于MCC硬件抽象HAL(电源模式)原理,系统以XP为例。 <br /><br />这里将系统封装分为3步:做系统、封装、部署 <br /><br /><br />================================ <br /><br />一、做系统 <br /><br />================================ <br /><br />平台不限,但不建议在虚拟机上制作。CPU及主板芯片没有限制,关于intelide和intelppm的不兼容问题,没

2011-02-14 11:43:00 6185 1

转载 封装(驱动处理)

<br />(一)简介 <br />封装前都会对封装用计算机(源计算机)中的硬件设备驱动进行处理。所谓处理,主要是卸载驱动,以及一些对驱动程序的调整等。 <br />为什么要卸载源计算机的硬件设备驱动程序?理论上说,卸载源计算机的驱动不是必要的步骤,Windows本身就具有对硬件的即插即用能力,例如你添加一块网卡、更换一块显卡系统都会自动帮你搜寻适合的驱动并尝试安装。系统封装与部署技术是将源计算机中的系统封装后部署到其他计算机上,对系统来说并不认为是系统部署到了不同计算机中,而是发现了更多的即插即用设备,系

2011-02-14 11:26:00 7841

转载 VNC协议分析

<br />简介<br />      VNC(Virtual Network Computing)是基于RFB(Remote Frame Buffer)协议进行通信的,是一个基于平台无关的简单显示协议的超级瘦客户系统,<br />由Cambridge的AT&T实验室设计开发的。<br />vnc的缺省端口是main:5900(C/S)和http:5800(B/S)端口。<br />RFB (远程帧缓存) 是一个远程图形用户的简单协议,因为它工作在帧缓存级别上,所以它可以应用于所有的窗口系统,例如:X11,

2011-02-08 13:42:00 1093

转载 VC++实现Vista和Win7系统低权限程序向高权限程序发消息

Windows 7已经隆重发布,但是很多程序员已经通过RTM等版本尝到了Windows 7的甜处。那么在Windows 7下用户界面特权隔离,将是本文我们介绍的重点。ZJk平坦软件园我们介绍了操作系统服务的Session 0隔离,通过Session 0隔离,Windows 7实现了各个Session之间的独立和更加安全的互访,使得操作系统的安全性有了较大的提高。从操作系统服务的Session 0隔离尝到了甜头后,雷德蒙的程序员们仿佛爱上了隔离这一招式。现在他们又将隔离引入了同一个Session之中的各个进程

2011-01-25 11:29:00 1633

转载 在VS2005下搭建和使用CppUnit

<br />编译安装CPPUnit:<br />解压CPPUnit,里面的INSTALL-WIN32.txt说明了如何编译CPPUnit和它的实例,简单的讲步骤如下:<br />打开src/CppUnitLibraries.dsw,如果是VC 7及以上版本,会有一个对话框询问是否将工程转换成更高版本,选择“Yes to all”进行转换;<br />打开“Build”菜单,选择“Batch Build...”,弹出“Batch Build...”对话框后点击“Select All”,然后Build。<br

2011-01-18 08:56:00 992

转载 滚动条 实现的细节代码 SCROLLINFO

<br /><br />今天分析了以前的一段自绘 滚动条的代码, 终于明白了滚动条的细节。<br /> <br /> 对于Edit 来说 <br />SCROLLINFO si1; <br />si1.nMin:0, si1.nMax:14, si1.nPage:6, si1.nPos:9, si1.nTrackPos:9<br /> <br />例如上面信息:<br />si1.nMax - si1.nMin + 1 <br />代表编辑框中文字的总行数 <br />si1.nPage:6<br />编辑

2011-01-15 22:11:00 6344 1

转载 使用PostThreadMessage在Win32线程间传递消息

<br />PostThreadMessage的原型是这样的<br />BOOL PostThreadMessage( DWORD idThread,<br />    UINT Msg,<br />    WPARAM wParam,<br />    LPARAM lParam<br />);<br /><br />PostThreadMessage可以用于线程之间的异步通讯,因为它不用等待调用者返回,<br />这也许是线程通讯中最简单的一种方法了。<br /><br />但是要注意以下问题<br /

2010-12-29 23:33:00 1287

转载 自动安装卸载驱动程序的源码

<br />#include "stdafx.h"<br />#include <tchar.h> // Make all functions UNICODE safe.<br />#include <newdev.h> // for the API UpdateDriverForPlugAndPlayDevices().<br />#include <setupapi.h> // for SetupDiXxx functions.<br />#include "install.h"<br />int Di

2010-12-27 21:26:00 3131 1

转载 C++test

<br />什么是单元测试 <br />单元测试的定义是测试应用中最小的单元,单元测试被公认为软件开发过程中的一个关键步骤。单元测试能够简化错误检测,在减少开发时间和成本的同时提高软件质量。 <br />为什么需要单元测试? <br />•  单元测试能帮助客户更准更全面地找到错误,显著提高软件质量 <br /><br />上图显示了一个包含许多对象的应用程序的测试模型,大椭圆表示应用程序,小椭圆表示对象,箭头表示用户输入,红星表示潜在的错误。 <br />在集成测试中为了发现错误,我们希望通过不断修改输入

2010-12-07 10:21:00 24195 2

转载 C/C++ unit testing tools

<br />Boost<br />Description:<br />The Boost Test Library provides a matched set of components for writing test programs, organizing tests in to simple test cases and test suites, and controlling their runtime execution.<br />Requirement:<br /> <br />Downl

2010-12-01 23:54:00 5598

转载 测试工具列表

<br />对测试工具总结,现在找到一个列表<br />Parasoft白盒测试工具集<br />工具名<br />支持语言环境<br />简介<br />Jtest<br />Java<br />代码分析和动态类、组件测试<br />Jcontract<br />Java<br />实时性能监控以及分析优化<br />C++ Test<br />C,C++<br />代码分析和动态测试<br />CodeWizard<br />C,C++<br />代码静态分析<br />Insure++<br />C,

2010-12-01 23:17:00 1281

转载 什么是线程安全

<br />什么是线程安全?  如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。 <br />  或者说:一个类或者程序所提供的接口对于线程来说是原子操作或者多个线程之间的切换不会导致该接口的执行结果存在二义性,也就是说我们不用考虑同步的问题。 <br />  线程安全问题都是由全局变量及静态变量引起的。 <br />  若每个线程中对全局变量、静态变量只有读操作,而无写操作,一

2010-11-30 21:40:00 1050

原创 函数及类成员函数回调模板化

<br />///////////////////////////////////////////////////<br />// 作者:黄崇 潘鹏 <br />// 时间:2010-11-29<br />// 功能:回调模板化<br />// 转载请注明出处,谢谢<br />///////////////////////////////////////////////////<br />//<br />// 使用方法<br />/*<br />class A<br />{<br />public:<br

2010-11-30 19:51:00 804 1

转载 虚拟列表

一、什么是虚拟列表控件虚拟列表控件是指带有LVS_OWNERDATA风格的列表控件。。二、为什么使用虚拟列表控件我们知道,通常使用列表控件CListCtrl,需要调用InsertItem把要显示的数据插入列表中,之后我们就不必关心数据在哪里了,这是因为控件自己开辟了内存空间来保存这些数据。现在假设我们要显示一个数据库,里面的信息量很大,有几十万条记录。通常有两种方法解决这个问题:1是仅仅在ListCtrl中插入少量的数据,比如100个,然后通过[上一页][下一页]两个按钮进行控制,某

2010-08-24 10:15:00 2224

转载 CEMAPI实战攻略(一)——准备工作

<br />CEMAPI实战攻略(一)<br />By 吴春雷<br />QQ:819543772<br />EMAIL:[email protected]<br /> <br />一.准备工作<br />1.       开发环境和设备平台<br />a)         下载和安装<br />微软已经发布了Windows Mobile 6.0 SDK和中文版的仿真器已,WM6.0的SDK和仿真器分成了标准版和专业版两个版本,由于两个版本都可以支持cemapi.lib,因此我们可以选用其中任意一个版本作为

2010-06-22 18:45:00 830

转载 把.pfx文件转为.pvk和.spc文件的办法

<br />以前从Verisign购买的证书都是.pvk+.spc文件,这次却得到一个.pfx文件,而inetsdk的SignCode.exe是使用.pvk+.spc文件的,只好去找工具来进行提取了。<br /><br />工具准备:首先需要OpenSSL,可以从这里下载。另外还需要pvk.exe,可以从这里下载。<br />用以下命令:<br />1) 从 PFX 文件提取私钥<br />->openssl pkcs12 -in (pfx-file) -nocerts -nodes -out (pem-k

2010-06-08 08:58:00 5290 1

转载 创建窗体

第一讲 用Create()方法新建一个窗体应用程序  一般来讲,大多数windows应用程序的界面都是由一个或数个窗体构成。而VC++中提供了丰富的类库,用于创建Windows窗体应用程序。  我们一般可以通过CFreameWnd类中的Create()方法来创建一个窗体,Create()函数的定义如下:BOOL Create(LPCTSTR lpszClassName, LPCTSTR l

2010-05-23 00:16:00 1930

转载 一份C/S界面规范

1. 界面规范 1.1. 总体原则 l 以用户为中心。设计由用户控制的界面,而不是界面控制用户。 l 清楚一致的设计。所有界面的风格保持一致,所有具有相同含义的术语保持一致,且易于理解 l 拥有良好的直觉特征。以用户所熟悉的现实世界事务的抽象来给用户暗示和隐喻,来帮助用户能迅速学会软件的使用。 l 较快的响应速度。 l 简单且美观。 1.2. 原则详述 1.2.1. 用户控制 用户界面设计的一个重

2010-05-21 23:05:00 1285

转载 Base64编码解码程序(C语言版)

#include #include ////////////////////////////////////////////////////////////////////////////////////////////Base64 编码int Base64Encode( char *OrgString, char *Base64String, int OrgStringLen ) {// Org

2010-05-15 17:03:00 2316

转载 SOCKS 5协议详解

SOCKS 5协议详解     笔者在实际学习中,由于在有些软件用到了socks5(如oicq,icq等),对其原理不甚了解,相信很多朋友对其也不是很了解,于是仔细研读了一下rfc1928,觉得有必要译出来供大家参考。1.介绍:  防火墙的使用,有效的隔离了机构的内部网络和外部网络,这种类型的Internet架构变得越来越流行。这些防火墙系统大都充当着网络之间的应用层网关的角色,通常提

2010-05-15 11:40:00 8190

转载 如何有效地使用对话框一

Q:如何在对话框中加入工具条在 OnInitDialog 中加入下面代码: BOOL CYourDlg::OnInitDialog(){ CDialog::OnInitDialog(); // Create the toolbar. To understand the meaning of the styles used, you /

2010-05-11 22:08:00 491

转载 如何有效的使用对话框之二

1. 如何有效地使初始窗口不显示当我们想让窗口初始时不显示时,通常会用ShowWindow(SW_HIDE) ,但实际上还是在启动是可以看到窗口一闪而过的痕迹。所以,可以使用下面的方法来实现它:(1.1)先在构造函数中设置布乐变量 visible值为false. visible = false;(1.2)重载 WM_WINDOWPOSCHANGING,并添加下面代码:void CTes

2010-05-11 22:07:00 556

转载 不规则窗口——GDI+实现

  今天终于完成一个小心结,以前看到鱼鱼桌面秀那里那么炫的界面就想自己做一回,但是苦于没有实现思路,今天终于有了点眉目了。其实那些桌面秀的界面都是不规则的窗口,以前也有想过实现做不规则窗口,但由于各种原因没动手都没有完成。经过这两天来的搜索,终于完全明白怎么回事了。  要实现不规则窗口,有几种方法。  第一种是基于GDI的,这种方法是根据图片或者其他图案生成一个窗口区域也就是RGN,然后通

2010-04-25 09:49:00 3155

转载 SystemParametersInfo详说

函数功能描述:查询或设置系统级参数。该函数也可以在设置参数中更新用户配置文件。函数原型B00L SystemParametersinfo(UINT uiAction,UINT uiParam,PVOID pvParam,UINT fWinlni);参数uiAction:该参数指定要查询或设置的系统级参数。其取值如下;SPI_GETACCESSTIMEOUT:检索与可访问特性相关联的超时段的

2010-04-22 09:45:00 1184

显示器定时关闭开启小工具(exe和代码)

这是一个用MFC编写的显示器定时关闭开启小工具(需求来源是学校的LED屏幕要求几天连续播放,但晚上可能忘记关闭或者安排人员关闭很麻烦)。通过这个小工具可以实现指定时间段保持关闭状态,非关闭时间段保持开启。附上源代码,主要涉及的核心代码有:显示器开启和关闭代码、程序托盘实现代码、模拟鼠标移动操作代码、配置文件读写代码、程序单实例运行代码。

2019-06-13

英语复读机

非常好用的英语复读机 学习英语的好工具。

2014-03-20

音乐CD刻录大师(专门刻录CD碟的工具)

音乐CD刻录大师(专门刻录CD碟的工具),傻瓜式简单方便。

2014-03-20

BMP批量转JPG

BMP批量转JPG 支持递归目录批量转换; 支持转换质量调整;

2013-05-25

空空如也

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

TA关注的人

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