自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

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

原创 在主线程中慎用WaitForSingleObject (WaitForMultipleObjects)

转http://www.cnblogs.com/shootingstars/archive/2004/07/15/24602.html下面的代码我调试了将近一个星期,你能够看出什么地方出了问题吗?线程函数:DWORD WINAPI ThreadProc(    while(!bTerminate)    {        // 从一个链表中读取信息并且插入到CListCtrl中  

2008-01-18 18:06:00 637

原创 ASCII表

信息在计算机上是用二进制表示的,这种表示法让人理解就很困难。因此计算机上都配有输入和输出设备,这些设备的主要目的就是,以一种人类可阅读的形式将信息在这些设备上显示出来供人阅读理解。为保证人类和设备,设备和计算机之间能进行正确的信息交换,人们编制的统一的信息交换代码,这就是ASCII码表,它的全称是“美国信息交换标准代码”。   八进

2007-10-29 13:55:00 517

原创 C 关键字 volatile

volatile关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改,比如:操作系统、硬件或者其它线程等。遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问。使用该关键字的例子如下:int volatile nVint;  当要求使用volatile 声明的变量的值的时候,系统总是重新从它所在的内存读取数据,即使它前面

2007-10-24 09:21:00 544

原创 如何测试到网站的连接(ping以及在禁ping的情况下)

 测试到一个网站的连接时间是网络编程中常常要用到的,一般我们可以采用通过发送icmp包ping的方法,但现在有些服务器禁止了ping,这样用ping的方法就行不通了。但是我们可以换个角度考虑,直接通过HTTP端口(80)来测试,采用mfc中的CInternetSession,以及CHttpConnection来实现。本文针对上述两种方法均给出了实现方式,代码如下:1.ping方式Ping.

2007-10-18 10:33:00 1823

原创 协议大全

 

2007-10-17 18:16:00 1046

原创 CreateThread()、_beginthread()以及_beginthreadex()联系与区别

联系:CreateThread、_beginthread和_beginthreadex都是用来启动线程的。区别:_beginthread是_beginthreadex的功能子集,_beginthreadex是微软的C/C++运行时库函数,CreateThread是操作系统的函数。虽然_beginthread内部是调用_beginthreadex但他屏蔽了象安全特性这样的功能,所以_be

2007-10-16 09:20:00 2201 4

转载 sizeof字节对齐

 考虑下面问题:(默认对齐方式) union u{ double a; int b;}; union u2{ char a[13]; int b;}; union u3{ char a[13]; char b;}; coutcoutcout    都知道union的大小取决于它所有的成员中,占用空

2007-10-12 12:41:00 1149 1

原创 快速排序算法与实现(c++)

快速排序是对冒泡排序的一种改进。它的基本思想是:通过一躺排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一不部分的所有数据都要小,然后再按次方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。算法的基本思想  快速排序的基本思想是基于分治策略的。对于输入的子序列p[m..n],如果规模足够小则直接进行排序,否则分三步处理:

2007-09-30 10:59:00 1558 1

原创 #define,const,typedef三者联系与区别

一. #define与const联系:都可以用来定义常量区别:1. const常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查。而对后者只进行字符替换,没有类型安全检查,并且在字符替换可能会产生意料不到的错误(边际效应)。2. 前者在堆栈分配了空间,而后者只是把具体数值直接传递到目标变量罢了。或者说,const的常量是一个Run-Time的概念,他在程序中确确

2007-09-29 17:23:00 1037 1

转载 Microsoft函数调用约定

原帖:http://www.cpper.com/site/comments/ms_calling_conventions/对于所有调用共有的约定:ebx、ebp、esi、edi都是calle-save,即由被调用的函数负责它们的保存(如果被调用函数用到了这些寄存器的话)先看函数调用发生了什么:(win32下)1、所有参数提升到4bytes的倍数2、执行call指令3、将ebx、ebp、esi、

2007-09-27 13:03:00 816

转载 GNU编码标准

GNU编码标准  引用私有程序 接受他人的奉献 修改日志(Change Logs) 与其它实现的兼容性 Makefile惯例 Makefile的通用惯例 Makefile中的工具 为用户提供的标准目标 为指明命令而提供的变量

2007-09-10 10:24:00 639

原创 堆和栈的联系与区别

联系:都是用来处理变量的内存分配的。主要的区别由以下几点:    1、管理方式不同;    2、空间大小不同;    3、能否产生碎片不同;    4、生长方向不同;    5、分配方式不同;    6、分配效率不同;    管理方式:对于栈来讲,是由编译器自动管理,无需我们手工控制;对于堆来说,释放工作由程序员控制,容易产生memory leak。    空间

2007-09-07 11:33:00 678

原创 AVL树

AVL树称为自平衡二叉查找书。其中任何节点的两个子树的高度最大差别为一。查找、插入和删除在平均和最坏情况下都是O(log n)。增加和删除可能需要通过一次或多次树旋转来重新平衡这个树。        节点的平衡因子是它的右子树的高度减去它的左子树的高度。平衡因子为 1、0 或 -1 的节点被认为是平衡的。平衡因子为 -2 或 2 的节点被认为是不平衡的,并需要重新平衡这个树。平衡因子可以直接存

2007-09-04 13:47:00 1425

原创 用vc制作在线更新系统

最近做了一个从网上在线更新客户端应用程序的小程序,等整理后把代码上传过来。

2007-08-31 10:51:00 934 1

原创 常用的文件对应的MIME类型

MIME类型就是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式。下面列出常用的文件对应的MIME类型: Mime-Typ Dateiendung(en)

2007-08-24 15:12:00 694

原创 单播、多播、广播、组播

假设X代表所有的机器,Y代表X中的一部分机器,Z代表一组机器,1代表源机器,那么1:1(也可以说1-1),那就是单播;1:Y(也可以说1-Y),那就是多播1:X 那就是广播;1:Z 那就是组播。 

2007-08-14 18:14:00 836

原创 IP地址分类

基本的IP地址是分成8位一个单元(称为8 位位组)的32位二进制数。二进制与十进制大家都懂吧。为了方便人们的使用,对机器友好的二进制地址转变为人们更熟悉的十进制地址。IP地址中的每一个8位位组用0~255之间的一个十进制数表示。这些数之间用点(.)隔开,这是所谓的点-十进制格式。因此,最小的IPv4地址值为0.0.0.0,最大的地址值为255.255.255.255,然而这两个值是保留的,没有分配

2007-08-01 11:30:00 1890

原创 软件开发文档

如今,软件开发越来越复杂,软件功能也越来越丰富。而几乎所有成熟的商业软件,都是靠一个开发团队齐心协力的血汗结晶。“罗马不是一天建成的!”,当我们震撼于Microsoft Windows的惊世巨著的同时,也道听途说了微软公司软件工程是如何的完善规范。的确,集数百名员工几年的共同努力之大成,软件项目管理的成败是控制开发成本的关键环节。这里面,少不了贯穿其中的重要步骤----软件文档。   软件文档

2007-08-01 10:29:00 1764

原创 选择排序算法

选择排序算法是每次从数列中取出最小的一个数,把其放到数组的首位。注:首位从第一个位置开始,每次循环往前加一位。void select_sort(int list[], int n){ int i; int j; int tmp; int min; for (i=0; i {  min = i;  for (j=i; j  {   if (list[j]    {    min = j;

2007-07-25 17:16:00 783

原创 冒泡排序算法

 冒泡排序算法的关键是每次循环把最大的数放到最后一个位置,算法的时间复杂度为o(n^2).在下面的算法中,用到了一个变量b_done,它用来监督一趟比较下来,有没有发生交换,如果没有产生交换,说明原始的数据是已经排好序的,j就不用再增加了,整个算法结束。#include "stdafx.h"void bubble_sort(int list[], int n){ int i; in

2007-07-25 17:05:00 803

原创 指针和引用

★ 相同点:1. 都是地址的概念;指针指向一块内存,它的内容是所指内存的地址;引用是某块内存的别名。★ 区别:1. 指针是一个实体,而引用仅是个别名;2. 引用使用时无需解引用(*),指针需要解引用;3. 引用只能在定义时被初始化一次,之后不可变;指针可变;4. 引用没有 const,指针有 const,const 的指针不可变;5. 引用不能为空,指针可以为空;6. “sizeof 引用”得到的

2007-07-18 21:34:00 743

原创 用贪心算法解背包问题

 #include typedef struct _goodInfo{ float v;  //物品效益 float w;  //物品重量 float x;  //物品该放的数量 int  flag; //物品编号}goodInfo;//按照物品效益对物品进行插入排序void InsertSort(goodInfo goods[], int n){ int i,j; for (j=2;

2007-05-14 15:44:00 703

转载 数据仓库设计的21条原则--7个步骤,7个禁忌和7种思路

高效实现数据仓库的七个步骤  数据仓库和我们常见的RDBMS系统有些亲缘关系,但它又有所不同。如果你没有实施过数据仓库,那么从设定目标到给出设计,从创建数据结构到编写数据分析程序,再到面对挑剔的用户的评估,整个过程都会带给你一种与以往的项目完全不同的体验。一句话,如果你试图以旧有的方式创建数据仓库,那你所面对的不是预算超支就是所建立的数据仓库无法良好运作。  在处理一个数据仓库项目时需要注意的问题

2007-04-26 14:28:00 561

原创 ETL概念

ETL即数据抽取(Extract)、转换(Transform)、装载(Load)的过程。它是构建数据仓库的重要环节。数据仓库是面向主题的、集成的、稳定的且随时间不断变化的数据集合,用以支持经营管理中的决策制定过程。数据仓库系统中有可能存在着大量的噪声数据,引起的主要原因有:滥用缩写词、惯用语、数据输入错误、重复记录、丢失值、拼写变化等。即便是一个设计和规划良好的数据库系统,如果其中存在着大量的噪声

2007-04-26 14:26:00 752

转载 DbHelper数据操作类(.net 2.0)

 

2007-04-26 10:35:00 553

原创 24点算法

#include typedef float (__cdecl *TYPE_MYFUN)(float , float );float FunAdd(float x, float y){    return x + y;}float FunSub(float x, float y){    return (x - y>0)?x-y:y-x;}float FunMul(float x, float

2007-04-25 10:57:00 567

原创 蛇形矩阵

 /* 1  2  3  412 13 14  511 16 15  610  9  8  7*/void func(int n)要求:通过传入的n,输出一个4*4的矩阵, 顺序如上图所示. #include #define N 10int a[N][N];void func(int n){ int i,j; int num = 0;  for (i=0;i {  fo

2007-04-24 20:31:00 996 1

原创 百度笔试题

一、选择题:15分 共10题 1.    已知一个线性表(38,25,74,63,52,48),采用的散列函数为Hash($Key)=$Key mod 7,将元素散列到表长为7的哈希表中存储。请选择后面两种冲突解决方法分别应用在该散列表上进行等概率成功查找的平均查找长度,拉链法   ,线性探测法    . A. 1.0            B. 1.5           C. 1.7     

2007-04-24 15:46:00 1501

原创 .net备份与还原sql server数据库

本文写了一个类(C#),可以远程来备份与还原数据库了。主要思路是利用xml来保存数据库中的表,还原是读取xml文件,保存到远程主机上。代码:using System;using System.Data;using System.Data.OleDb;using System.Data.SqlClient;using System.Collections;using System.Colle

2007-04-20 14:55:00 1618

转载 C/C++面试题大汇总

发布之前先申明两点:    1 所有资料来自网络(主要是CSDN),本人只是收集和转发。    2 所有问题解答(尤其是代码)只是参考,不保证正确。先发基本问题,再发编程问题..........想成为嵌入式程序员应知道的0x10个基本问题:预处理器(Preprocessor)1 . 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)         #de

2007-01-25 10:25:00 743

转载 VB与VC通信初探(二)

在通过DLL实现VB与VC的过程中,一般的简单的通信过程很容易建立。在《VB与VC通信初探(一)》中,我已经把基本的通信过程给描述了一下,但是,有些时候,事件的发展并不总是一帆风顺的,当我们以为可以轻松的实现VB与VC的通信的时候,就经常发生这样的情况,还是先看看例子再说。VC中的程序:extern "C" _declspec(dllexport) bool ReadString(LPCS

2007-01-04 13:53:00 704

转载 VB与VC通信初探(一)

在使用VB调用VC写的DLL的时候,可以实现一些VB不能实现或者很难实现的功能,但是,因为VB与VC之间的数据类型并不总是完全对应的,所以,在进行参数传递的时候,就需要进行类型转换了。下面我将通过逐步的推进的方法,来看看如何达到VB与VC之间的通信。      首先,看一个简单的例子。VC中的程序:extern "C" _declspec(dllexport) void 

2007-01-04 13:48:00 789

转载 const浅谈

 常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的。因此,定义或说明常类型时必须进行初始化。  一般常量和对象常量1.       一般常量  一般常量是指简单类型的常量。这种常量在定义时,修饰符const可以用在类型说明符前,也可以用在类型说明符后。如:  int const x=2;  或  const int x=2;  定义或说

2007-01-04 12:00:00 542

原创 memset,memcpy,strcpy 的区别

一.函数原型   strcpy   extern char *strcpy(char *dest,char *src);   #include    功能:把src所指由NULL结束的字符串复制到dest所指的数组中   说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。   返回指向dest的指针  memcpy  extern void *memcpy

2006-12-31 16:05:00 709

转载 WaitForSingleObject的用法

WaitForSingleObject的用法DWORD WaitForSingleObject(   HANDLE hHandle,   DWORD dwMilliseconds ); 参数hHandle是一个事件的句柄,第二个参数dwMilliseconds是时间间隔。如果时间是有信号状态返回WAIT_OBJECT_0,如果时间超过dwMilliseconds值但时间事件还是

2006-12-27 10:51:00 1599

原创 strcpy函数及其优化

一般我们会这么写 char *strcpy(char *strDest, const char *strSrc);{assert((strDest!=NULL) && (strSrc !=NULL)); char *address = strDest; while( (*strDest++ = * strSrc++) != ‘/0’ ) NULL ;return address ; }可以

2006-12-24 18:56:00 817

原创 内存管理之空间分配与释放

分配空间与释放空间函数1.malloc,freevoid *malloc(long NumBytes):该函数分配了NumBytes个字节,并返回了指向这块内存的指针。如果分配失败,则返回一个空指针(NULL)。关于分配失败的原因,应该有多种,比如说空间不足就是一种。void free(void *FirstByte): 该函数是将之前用malloc分配的空间还给程序或者是操作系统,也就是

2006-12-20 14:50:00 738

原创 用GlobalAlloc函数来分配内存

用GlobalAlloc函数来分配内存GlobalAlloc函数接受两个参数。第一个是一个标志,指定几种分配方式中的一种。GMEM_FIXED    = 0x0000分配固定内存.GMEM_MOVEABLE = 0x0002分配可移动内存.GMEM_ZEROINIT = 0x0040初始化内存内容,为0. GPTR = 0x0040 Combines GMEM_FIXED an

2006-12-19 11:19:00 1909

转载 让你受用一生的做人做事36字诀

             一个人不管有多聪明,多能干,背景条件有多好,如果不懂得如何去做人、做事,那么他最终的结局肯定是失败。       做人做事是一门艺术,更是一门学问。很多人之所以一辈子都碌无为,那是因为他活了一辈子都没有弄明白该怎样去做人做事。       每一个人生活在现实社会中,都渴望着成功,而且很多有志之士为了心中的梦想,付出了很多,然而得到的却很少,这个问题不能不引起人

2006-09-29 11:39:00 873

转载 ASP.NET中添加客户端脚本代码

当你在开发ASP.NET Web应用程序时,会遇到这样的情况:你需要给一个ASPX页面呈现的HTML添加客户端脚本代码。有两种不同的方法可以让你在运行时添加这个代码。第一种方法就是运用Page控件的RegisterClientScriptBlock方法,它可以让你在运行时给一个ASPX页面添加代码。该方法有两个参数——key和script。参数key是唯一的,可以识别你添加到页面的每个scri

2006-09-02 15:35:00 1205

软件架构师的12项修炼(pdf)

每一位软件开发人员都有一个架构师的梦,但为何真正的软件架构师却寥寥无几?软件开发人员更容易在技术上有所积累和突破,但是技术上的精湛并不足以使你成为一位优秀的软件架构师。合格的软件架构师究竟应该具备哪些能力和素养?本书科学而系统地归纳出软件架构师应该具备的完整能力模型,该能力模型呈一金字塔结构,共分为4层:位于最底层的是技术技能,是软件架构师的基石,属于硬技能;从下往上的三层分别是关系技能、个人技能和商务技能,这些都属于软技能。由于硬技能会随着具体技术领域的不同而千差万别,因此本书假定读者已经具备了这方面的技能;但其他3大方面的软技能却在每个技术领域都适用,是每一位软件架构师的必修课,这是《软件架构师的12项修炼》的核心内容。

2014-10-24

程序员接单宝典(pdf)

程序员接单宝典,程序员业余如何承接项目,如何进行沟通。

2014-10-24

王爽-汇编语言(清华大学出版社)

王爽编写的一本汇编语言教材,清华大学出版社,该书打破了传统教材按照静态的知识结构对内容进行组织的体例,在其中构造了一个贯穿始终的可以步步深入的学习线索。

2009-09-21

DirectUI(库与测试程序)

一套开源的DirectUI的项目,包含了库与测试程序

2009-09-16

空空如也

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

TA关注的人

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