- 博客(25)
- 资源 (10)
- 收藏
- 关注

原创 VC++ 线程池
服务器程序利用线程技术响应客户请求已经司空见惯,可能您认为这样做效率已经很高,但您有没有想过优化一下使用线程的方法。该文章将向您介绍服务器程序如何利用线程池来优化性能并提供一个简单的线程池实现。线程池的技术背景在面向对象编程中,创建和销毁对象是很费时间的,因为创建一个对象要获取内存资源或者其它更多资源。在Java中更是如此,虚拟机将试图跟踪每一个对象,以便能够在对象销毁后进行垃圾回收。所以提
2008-02-28 16:27:00
8726

原创 C++ 快速内存分配
我们知道,C++中当我们用new在堆中创建一个对象时,会发生两件事情。首先调用operator new分配一定大小的内存空间,然后在此空间上调用构造函数以形成对象。而operator new涉及到寻找合适内存的算法,往往,这个算法是比较费时间的,所以,如果我们的程序中需要不断的产生和释放某类型的对象,那么operator new所累计起来的时间可能就会成为阻碍程序性能提高的一个重要因素了。看来
2007-10-01 14:10:00
1827
原创 垃圾回收器
引言在前文,我们引入了GC Allocator(具备垃圾回收能力的Allocator),并提供了一个实作:AutoFreeAlloc(详细内容参见《C++内存管理变革(2):最袖珍的垃圾回收器 - AutoFreeAlloc》)。但是,如前所述,AutoFreeAlloc是有其特定的适用环境的(它对内存管理的环境进行了简化,这种简化环境是常见的。详细参阅《C++内存管理变革(3):另类内存
2008-03-31 23:36:00
879
原创 简单实用的线程管理类
在开发多线程程序时,常常碰到线程管理的问题。当有多种线程的时候,为了控制每个线程,编程工作也变得复杂。事实上,我们对线程的控制大多是相似的,所以把这些控制抽象出来,形成一个可复用的程序模块,将能大大提高开发效率和代码质量。首先我们对线程的使用目的进行分析和归纳。一般来说,有如下几种:1) 独立线程。执行一项在后台完成的工作,工作频率很低,线程的生命期里只完成一项任
2008-03-31 23:32:00
1950
原创 TCP P2P 穿越NAT的方法
Internet的迅速发展以及IPv4 地址数量的限制使得网络地址翻译(NAT,Network Address Trans2lation)设备得到广泛应用。NAT设备允许处于同一NAT后的多台主机共享一个公网(本文将处于同一NAT后的网络称为私网,处于NAT前的网络称为公网) IP 地址。一个私网IP 地址通过NAT设备与公网的其他主机通信。公网和私网IP地址域,如下图所示:广域网与私网示意图一般
2008-02-28 16:33:00
1262
原创 VC++数据库连接池
对于连接的管理可使用空闲池。即把已经创建但尚未分配出去的连接按创建时间存放到一个空闲池中。每当用户请求一个连接时,系统首先检查空闲池内有没有空闲连接。如果有就把建立时间最长(通过容器的顺序存放实现)的那个连接分配给他(实际是先做连接是否有效的判断,如果可用就分配给用户,如不可用就把这个连接从空闲池删掉,重新检测空闲池是否还有连接);如果没有则检查当前所开连接池是否达到连接池所允许的最大连接数(ma
2008-02-28 16:13:00
6111
15
原创 VC++调用带参数的存储过程
最近由于工作之需,要利用VC进行一些高级的数据库操作,如执行存储过程等。遍寻网络资源发现好使的不多(经常#30XX错误,大部分应该是COM的VARIANT数据类型所致,其实有个讨巧的方法,请看下文),在自己的实验下小有所得。记下学习笔记以备参考:1 进行ADO编程的必备步骤:引入msado15.dll #import "c:/program files/common files/syste
2008-02-28 16:11:00
6495
1
原创 内存池的简单试验(C++)
这是试验性的程序, 虽然算法实现简弱, 当在编译器优化后实验结果,性能比用全局new delete的内存管理好了很多,我这里有考虑到多线程看来在大量使用内存分配的程序,用内存池是能够显著提高性能的;有时间我会改进算法,有高手看到, 请指点一二, 我是非专业的, 算法方面很弱;还有数组的内存分配遇到了一些问题;以下数组的内存分配的一般模式void * operator new[](size_t si
2008-02-28 16:08:00
1039
原创 数据库备份与还原处理
利用T-SQL语句,实现数据库的备份与还原的功能体现了SQL Server中的四个知识点: 1. 获取SQL Server服务器上的默认目录 2. 备份SQL语句的使用 3. 恢复SQL语句的使用,同时考虑了强制恢复时关闭其他用户进程的处理 4. 作业创建SQL语句的使用 /*1.--得到数据库的文件目录 @dbname 指定要取得目录的数据库名
2008-02-28 16:05:00
953
原创 VC++实现非窗口类中使用定时器的方法
/////////////////////////////////////////// MyTimer.h: interface for the CMyTimer class.#if !defined(AFX_MYTIMER_H__D97674D1_B221_49CD_9637_4CBA8C3180CE__INCLUDED_)#define AFX_MYTIMER_H__D97674D1_B221
2008-01-11 09:56:00
3653
1
原创 VC中CShockwaveFlash的常用函数
Play() 播放动画 StopPlay() 停止动画 IsPlaying() 动画是否正在播放(true,false) GotoFrame(frame_number) 跳转到某帧(frame_number+1) TotalFrames() 获取动画总帧数 CurrentFram
2008-01-11 09:54:00
4697
原创 界面美化
QQ软件主界面的ListCtrl 是可以说非常经典了,一个字漂亮! 这个ListCtrl的所包含的信息之丰富,更是让我们这些软件工程师望Q兴叹! 今天,我将和大家一起来解决这个难题,写一个属于自已的CMyListCtrl。 一、实现MyListCtrl要完成的任务及实现
2007-12-26 16:50:00
1917
原创 让你的软件界面更漂亮 (VC)
一、漂亮界面实现的原理 用图象元素自绘窗口标题样栏,边框,系统按钮(最大化、最小化、关闭按钮)还有按窗口中的控件。图象元素可以是位图,也可用绘图函数实现。如果用位图实现,那需要美工的支持。如果绘图函数实现需要你超强审美观和对VC绘图函数熟练掌握!。二、VC绘图技术介绍 CDC* pDisplayMemDC=new CDC;
2007-12-26 16:45:00
2418
原创 STL中的map用法详解
Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在处理一对一数据时,在编程上提供快速通道。介绍一下map内部数据的组织,map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,后面会见识到有序的好处。
2007-10-05 13:15:00
706
原创 API函数大全 (C++)
1. API之网络函数WNetAddConnection 创建同一个网络资源的永久性连接 WNetAddConnection2 创建同一个网络资源的连接 WNetAddConnection3 创建同一个网络资源的连接 WNetCancelConnection 结束一个网络连接 WNetCancelConnection2 结束一个网络连接 WNetCloseEnum 结束一次
2007-10-05 12:56:00
2276
原创 十万个为什么(VC++)
1) 如何通过代码获得应用程序主窗口的 指针?主窗口的 指针保存在CWinThread::m_pMainWnd中,调用AfxGetMainWnd实现。AfxGetMainWnd() ->ShowWindow(SW_SHOWMAXMIZED)//使程序最大化.(2) 确定应用程序的路径Use GetModuleFileName 获得应用程序的路径,然后去掉可执行文件名。Example:TCHAR
2007-10-05 12:54:00
1633
原创 什么叫真正的C++高手
自从计算机问世以来,程序设计就成了令人羡慕的职业,程序员在受人宠爱之后容易发展成为毛病特多却常能自我臭美的群体。如今在Internet上流传的“真正”的程序员据说是这样的:(1) 真正的程序员没有进度表,只有讨好领导的马屁精才有进度表,真正的程序员会让领导提心吊胆。(2) 真正的程序员不写使用说明书,用户应当自己去猜想程序的功能。(3) 真正的程序员几乎不写代码的
2007-10-01 15:22:00
1864
原创 正确使用内存
对于初学者来说,内存是个神秘的空间。程序的绝大部分错误,也是在于内存的使用不当造成的,而且这些错误有些都是隐藏很深的。所以,如何掌握内存的使用,通晓系统对内存的管理手段,将是软件成功的一个非常关键的因素。 首先我们要了解内存的分配方式。一般来说,内存的分配方式有三种:1.从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,
2007-10-01 14:51:00
807
原创 Visual C++开发工具与调试技巧整理
自己总是用VC平台来开发东西,但是有时候总是出这样那样的问题,呵呵,总是需要上网查资料来解决,在这里把自己用到上网查的一些技巧摘录如下,希望对大家有用,省去大家再去搜索的烦恼。1.如何在Release状态下进行调试Project->Setting=>ProjectSetting对话框,选择Release状态。C/C++标签中的Category选General,Optimizations选D
2007-10-01 14:45:00
713
原创 C和C++编程和学习文档
1 :指针变量名称以p为首字符,这是程序员通常在定义指针时的一个习惯2 :har * p; (int *)p 把p强制转换为int型 3.1 :指针的问题:指针应用时最好给予定义(初始化)这样可以保证指针的指向是程序员自己能够把握的。3.2 :指针的越界,这恐怕是最难查出的吧!
2007-10-01 14:26:00
2418
原创 UDP穿透之NAT类型分析
NAT,即网络地址转换,是指在一个网络内部,根据需要可以随意自定义的IP地址,而不需要经过申请。而当内部的计算机要与外部internet网络进行通讯时,NAT设备(比如:路由器)负责将其内部的IP地址转换为合法的IP地址并进行通信。从功能上来说,NAT可以分为:传统NAT,双向NAT(Bi-Directional NAT),两次NAT(Twice NAT),多宿主NAT(Multihom
2007-10-01 14:23:00
1773
3
原创 STL使用入门( Using STL)
作者:Zoran M. Todorovic原文:Using STL.翻译:Winter STL使用入门( Using STL) 0 前面的话(Winter) 1 介绍 2 规则 Rule 1: Rule 2 R
2007-10-01 14:19:00
3267
原创 用C++封装Socket库
这两天又看了几眼Socket编程,我老是没长性,总是东看看西看看。还老爱挑毛病,钻牛角尖,真是不可救药了。这不,又开始看Socket不顺眼了。当时是看了一个朋友给我的一段socket raw编程的代码,有一段看的我很恶心。如下:if((ErrorCode=WSAStartup(MAKEWORD(2,1),&wsaData))!=0){ printf("WSAStartup fail
2007-10-01 14:16:00
3763
原创 C++事件(Event)机制的实现
用C++实现事件机制我以前写过一个小例子,但不是很完善,比如Event只能接受全局函数作为handler,类成员方法不可以,还有一个Event只能添加一个handler等……最近我的一个程序刚好要用到Event机制,所以我就抽了些时间,重新实现了一下。这个版本应该说是比较完善的,基本上和C#中的Event一样了。点击这里下载源代码。要使用Event机制主要用到两个模板类:一个是Delegate
2007-10-01 14:13:00
6647
2
原创 VC++常用数据类型及其操作详解
目录一. VC常用数据类型列表二. 常用数据类型转化2.1数学类型变量与字符串相互转换2.2 CString及string,char *与其他数据类型的转换和操作●CString,string,char*的综合比较●数学类型与CString相互转化●CString与char*相互转换举例●CString 与 BST
2007-10-01 14:09:00
728
Redis-x64-4.0.14.zip
2019-12-16
面向对象软件架构设计
2012-05-02
ARM嵌入式常用模块与综合系统设计实例精讲
2010-05-17
嵌入式常用模块与综合系统设计实例精讲(源码)
2010-05-17
课程设计之VC++------------------
2008-12-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人