- 博客(38)
- 资源 (15)
- 收藏
- 关注
原创 vector,list,deque,set,map of STL
List封装了链表,Vector封装了数组, list和vector得最主要的区别在于vector使用连续内存存储的,他支持[]运算符,而list是以链表形式实现的,不支持[]。Vector对于随机访问的速度很快,但是对于插入尤其是在头部插入元素速度很慢,在尾部插入速度很快。List对于随机访问速度慢得多,因为可能要遍历整个链表才能做到,但是对于插入就快的多了,不需要拷贝和移动数据,只需要改变
2012-03-28 20:28:33 2772
原创 STL中vector、list、deque和map的区别
1 vector 向量 相当于一个数组 在内存中分配一块连续的内存空间进行存储。支持不指定vector大小的存储。STL内部实现时,首先分配一个非常大的内存空间预备进行存储,即capacituy()函数返回的大小,当超过此分配的空间时再整体重新放分配一块内存存储,这给人以vector可以不指定vector即一个连续内存的大小的感觉。通常此默认的内存分配能完成大部分情况下的存储。
2012-03-28 17:50:38 42501 3
原创 main 之前与之后
我之所以提出这个问题,缘于一些IT公司招聘开发人员的笔试题或者面试题:C++ 中能不能让一些代码在 main() 之前或者之后执行?答案理所当然可以的。这可以有很多实现方法。下面例举:1、一般来说,全局域的变量(包括静态变量)赋值、初始化等工作都是在main之前执行的。此时初始化变量调用的普通赋值函数,初始化对象调用的类的构造函数,都是行之有效的方法。比较典型的是静态变量通过静态函
2012-03-27 21:32:49 1964
原创 [转载]深入浅出Visual C++动态链接库(Dll)编程(2)
VC++动态链接库编程之MFC规则DLL 第4节我们对非MFC DLL进行了介绍,这一节将详细地讲述MFC规则DLL的创建与使用技巧。 另外,自从本文开始连载后,收到了一些读者的e-mail。有的读者提出了一些问题,笔者将在本文的最后一次连载中选取其中的典型问题进行解答。由于时间的关系,对于读者朋友的来信,笔者暂时不能一一回复,还望海涵!由于笔者的水平有限,文中难免有错误和纰漏
2012-03-27 11:22:02 1507
原创 [转载]深入浅出Visual C++动态链接库(Dll)编程(1)
基础慨念1.概论 先来阐述一下DLL(Dynamic Linkable Library)的概念,你可以简单的把DLL看成一种仓库,它提供给你一些可以直接拿来用的变量、函数或类。在仓库的发展史上经历了“无库-静态链接库-动态链接库”的时代。静态链接库与动态链接库都是共享代码的方式,如果采用静态链接库,则无论你愿不愿意,lib中的指令都被直接包含在最终生成的EXE文件中了。但是若使
2012-03-27 11:20:56 1589
原创 IOCP
载自:http://blog.csdn.net/markman101/article/details/6235516本文主要探讨一下windows平台上的完成端口开发及其与之相关的几个重要的技术概念,这些概念都是与基于IOCP的开发密切相关的,对开发人员来讲,又不得不给予足够重视的几个概念:1) 基于IOCP实现的服务吞吐量2)IOCP模式下的线程切换3)基于IOCP实现的消息
2012-03-23 11:53:00 24870 3
原创 IOCP简介
IOCP全称I/O Completion Port,中文译为I/O完成端口。IOCP是一个异步I/O的API,它可以高效地将I/O事件通知给应用程序。与使用select()或是其它异步方法不同的是,一个套接字[socket]与一个完成端口关联了起来,然后就可继续进行正常的Winsock操作了。然而,当一个事件发生的时候,此完成端口就将被操作系统加入一个队列中。然后应用程序可以对核心层进行查询以得到
2012-03-23 11:45:16 1772
原创 《Socket I/O模型全接触》
本文简单介绍了当前Windows支持的各种Socket I/O模型,如果你发现其中存在什么错误请务必赐教。一:select模型二:WSAAsyncSelect模型三:WSAEventSelect模型四:Overlapped I/O 事件通知模型五:Overlapped I/O 完成例程模型六:IOCP模型老陈有一个在外地工作的女儿,不能经常回来,老陈和她通过信件
2012-03-23 11:31:32 1346
原创 线程同步方法
概述线程同步可以采用多种方式。可以在用户方式下实现,也可以在内核方式下实现。前者的优势在于速度快,因为不用在用户方式和内核方式之间切换,但只能用于同一个进程内的线程之间的同步;后者是使用内核对象的方式,速度虽慢,但可以用于不同进程之间的线程同步。而且后者相对前者方法丰富许多,功能也强大许多。用户方式下的线程同步互锁函数组 下列函数可以以原子的方式进行操作(即或者全做,或者
2012-03-23 09:56:12 799
原创 五种WinSock I/O模型的特点及比较
====== select 模型: select模型是WinSock中应用最广泛的模型之一,核心就是select函数,它可用于 判断套接字上是否存在数据,或者能否向一个套接字写入数据。 这个函数可以有效地防止应用程序在套接字处于阻塞模式中时,send或recv进入 阻塞状态;同时也可以防止产生大量的WSAEWOULDB
2012-03-23 09:54:16 1526
原创 几种常用排序算法总结
所谓排序,就是要整理文件中的记录,使之按关键字递增(或递减)次序排列起来。当待排序记录的关键字都不相同时,排序结果是惟一的,否则排序结果不惟一。 在待排序的文件中,若存在多个关键字相同的记录,经过排序后这些具有相同关键字的记录之间的相对次序保持不变,该排序方法是稳定的;若具有相同关键字的记录之间的相对次序发生改变,则称这种排序方法是不稳定的。 要注意的是,排序算法的稳定性是针对
2012-03-23 09:14:47 959
原创 哈希表
散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。基本概念 * 若结构中存在关键字和K相等的记录,则必定在f(K)的存储位置上。由此,不需比较便可直接取得所查记录。称这个对应关系f为散列函
2012-03-23 08:33:57 1077
原创 二分排序与二分查找
1、规定排序的实现 分治法的三步法: 划分问题:(把序列二分), 递归求解:(分别对左右子序列递归排序) 合并结果:(根据左右两个有序的子序列,依次取两个子序列的最小元素中的最小者加到结果中去) 实现如下:[cpp] view plaincopy#inclu
2012-03-23 08:29:29 7737
原创 Hash 算法及其应用
Hash,一般翻译做“散列”,也有直接音译为"哈希"的,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,而不可能从散列值来唯一的确定输入值。数学表述为:h = H(M) ,其中H( )--单向散列函数,M--任意长度明文,h-
2012-03-23 08:19:47 967
原创 VC中实现哈希Hash算法
Hash函数我们可以自己用C来编写,但是如果在VC中就不必了,因为在VC中有实现hash算法的 函数可以调用,就是CryptAcquireContext函数,这个函数的定义在wincrypt.h头文件中。下面是我在MFC中实现的,因为想要结果输出到messagebox中,所以就在视类里定义和实现了GetHash函数来计算哈希值。 首先是在View类的头文件中包含下列文件和内容:
2012-03-23 08:04:25 1836
原创 魔兽哈希算法封装和测试
转载:http://blog.csdn.net/eaglewood2005/article/details/4394583 近期由于需要,研究了魔兽文件打包管理器的相关算法,重点对其文件索引表的生成和查找进行了研究:采用哈希表进行,在冲突方面的处理方面,采用线性探测再散列。在添加和查找过程中进行了三次哈希,第一个哈希值用来查找,后两个哈希值用来校验,这样可以大大减少冲突
2012-03-23 08:00:34 1125 1
原创 哈希算法简介
哈希算法将任意长度的二进制值映射为固定长度的较小二进制值,这个小的二进制值称为哈希值。哈希值是一段数据唯一且极其紧凑的数值表示形式。如果散列一段明文而且哪怕只更改该段落的一个字母,随后的哈希都将产生不同的值。要找到散列为同一个值的两个不同的输入,在计算上是不可能的,所以数据的哈希值可以检验数据的完整性。 哈希表是根据设定的哈希函数H(key)和处理冲突方法将一组关键字映象到一个有限的地址
2012-03-23 07:52:34 1040
原创 进程与线程的区别(转)
线程是指进程内的一个执行单元,也是进程内的可调度实体.与进程的区别:(1)地址空间:进程内的一个执行单元;进程至少有一个线程;它们共享进程的地址空间;而进程有自己独立的地址空间;(2)资源拥有:进程是资源分配和拥有的单位,同一个进程内的线程共享进程的资源(3)线程是处理器调度的基本单位,但进程不是.4)二者均可并发执行. 进程和线程都是由操作系统所体会的程序运行的基本单元,
2012-03-22 17:12:16 632
原创 PostgreSQL
PostgreSQL是以加州大学伯克利分校计算机系开发的 POSTGRES,版本 4.2为基础的对象关系型数据库管理系统(ORDBMS)。PostgreSQL支持大部分 SQL标准并且提供了许多其他现代特性:复杂查询、外键、触发器、视图、事务完整性、多版本并发控制。同样,PostgreSQL 可以用许多方法扩展,比如, 通过增加新的数据类型、函数、操作符、聚集函数、索引方法、过程语言。并且,因为许
2012-03-21 17:37:59 904
原创 TCP/IP中的TTL
TTL是IP协议包中的一个值,它告诉网络,数据包在网络中的时间是否太长而应被丢弃。有很多原因使包在一定时间内不能被传递到目的地。解决方法就是在一段时间后丢弃这个包,然后给发送者一个报文,由发送者决定是否要重发。TTL的初值通常是系统缺省值,是包头中的8位的域。TTL的最初设想是确定一个时间范围,超过此时间就把包丢弃。由于每个路由器都至少要把TTL域减一,TTL通常表示包在被丢弃前最多能经过的路由器
2012-03-21 13:44:11 12324
原创 EXISTS 和 NOT EXISTS
exists (sql 返回结果集为真)not exists (sql 不返回结果集为真) 如下: 表A ID NAME 1 A1 2 A2 3 A3 表B ID AID NAME 1 1 B1 2 2 B2 3 2 B3 表A和表B是1对多的关系 A.ID => B.AID SELECT ID,NAME FR
2012-03-21 13:39:15 840
原创 scanf,printf函数的返回值
闲来无事,突然想起这么一个问题:每次都用scanf,printf,可是从来没有想过他们的返回值是什么。于是,写了一下程序验证。#include "stdio.h"int main(){ int a,b,c; a = scanf("%d %d",&b,&c); b = printf("123 %d",a); printf("1234 %d",b
2012-03-21 13:13:29 828
原创 strlen与sizeof区别(转载)
#include "stdio.h"#include "string.h"void main(){char aa[10];printf("%d",strlen(aa));printf("%d",sizeof(aa));}程序运行得到结果是strlen(aa)=15.sizeof(aa)=10;这是怎么回事呢?strlen是有效字符串的长度,不包含‘\0’
2012-03-19 14:42:26 617
原创 C++this指针
1. this指针的用处: 一个对象的this指针并不是对象本身的一部分,不会影响sizeof(对象)的结果。this作用域是在类内部,当在类的非静态成员函数中访问类的非静态成员的时候,编译器会自动将对象本身的地址作为一个隐含参数传递给函数。也就是说,即使你没有写上this指针,编译器在编译的时候也是加上this的,它作为非静态成员函数的隐含形参,对各成员的访问均通过this进行。
2012-03-19 11:54:51 717
原创 什么是线程安全和线程不安全
首先要明白线程的工作原理,jvm有一个main memory,而每个线程有自己的working memory,一个线程对一个variable进行操作时,都要在自己的working memory里面建立一个copy,操作完之后再写入main memory。多个线程同时操作同一个variable,就可能会出现不可预知的结果。根据上面的解释,很容易想出相应的scenario。而用
2012-03-16 14:21:58 829
原创 线程安全
什么是线程安全? 如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。 或者说:一个类或者程序所提供的接口对于线程来说是原子操作或者多个线程之间的切换不会导致该接口的执行结果存在二义性,也就是说我们不用考虑同步的问题。 线程安全问题都是由全局变量及
2012-03-16 14:17:58 1514
转载 C++拷贝构造函数(深拷贝,浅拷贝)
对于普通类型的对象来说,它们之间的复制是很简单的,例如:int a=88;int b=a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。下面看一个类对象拷贝的简单例子。#include iostream>using namespace std;class CExample {private: int a;pu
2012-03-16 14:15:49 624
原创 delphi下COM+服务器代码调试的设置
以下设置的操作平台:操作系统:WindowsXP,工发工具:delphi7。一、操作系统COM+组件的设置1.打开“组件服务”: 控制面板-->管理工具-->组件服务 2.找到要设置的COM+组件: 在“组件服务”窗口的“控制台根目录”,依“组件服务-->计算机-->我的电脑-->COM+应用程序-->你要调试的COM+应用程序” 3.关闭C
2012-03-15 17:28:29 2954
原创 CMM综述
作者:赵熙朝 来源:yeskyCMM(Capability Maturity Model能力成熟度模型)的本质是软件管理工程的一个部分。它是对于软件组织在定义,实现,度量,控制和改善其软件过程的进程中各个发展阶段的描述。他通过5个不断进化的层次来评定软件生产的历史与现状。 上面提到了CMM把软件开发组织的能力成熟度分为5个的等级。除了第1级外,其他每一级由几个关键过程方面组
2012-03-15 16:54:03 2193
原创 PowerDesigner 教程篇 - 概念数据模型
一、概念数据模型概述 概念数据模型也称信息模型,它以实体-联系(Entity-RelationShip,简称E-R)理论为基础,并对这一理论进行了扩充。它从用户的观点出发对信息进行建模,主要用于数据库的概念级设计。 通常人们先将现实世界抽象为概念世界,然后再将概念世界转为机器世界。换句话说,就是先将现实世界中的客观对象抽象为实体(Entity)和联系 (Relation
2012-03-15 14:18:09 1319
原创 UML图例
UML(统一建模语言):是面向对象的可视化建模的一种语言。是数据库设计过程中,在E-R图(实体-联系图)的设计后的进一步建模。UML中有3种构造块:事物、关系和图,事物是对模型中最具有代表性的成分的抽象;关系是把事物结合在一起;图聚集了相关的的事物。UML提供9种视图:类图、对象图,用例图,序列图、协作图,状态图、活动图,构件图和部署图。在UML系统开发中有三个主要的模型:
2012-03-15 13:57:54 8473 4
原创 VC6下使用STL
在 Borland C++ 及 Visual C++ 环境中使用 STLport 在 Borland C++ 及 Visual C++ 环境中使用 STLport孟岩侯捷注:本文承作者孟岩先生应允,转载于此以飨台湾读者,非常感谢。未得孟岩先生之同意,任何人请勿将此文再做转载。以下红色
2012-03-13 11:19:50 2863
原创 小型机简介
小型机是指采用8-32颗处理器,性能和价格介于PC服务器和大型主机之间的一种高性能 64 位计算机。国外小型机对应英文名是minicomputer和midrange computer。midrange computer是相对于大型主机和微型机而言,该词汇被国内一些教材误译为中型机,minicomputer一词是由DEC公司于1965年创造。在中国,小型机习惯上用来指UNIX服务器。1971年贝尔实
2012-03-13 11:08:37 1944
原创 CICS基础概念
CICS基础概念什么是CICS?CICS是怎么工作的?本章我们将揭开CICS的面纱,描述CICS的基本轮廓。同时,还将对CICS的以下重要功能组成进行介绍:(1)任务管理(Task Management);(2)资源管理(Resource Management);(3)恢复管理(Recovery Management);(4)内存管理(Storage Management);
2012-03-13 10:54:27 4756
原创 海量数据的解决办法(绝对原创)
通常来说海量数据的最大瓶颈是在数据的查询上,下面给出一些解决方法。一、数据库 1、建表:每张表的数据量不能太大,数据库理论一般建议最大为100万条,每张表根据数据量的大小可划分成按天、按月、按年等来建立表。 2、建库: 方案一:如果历史数据也总需要查询的话,可将数据库分成历史库和现有库,历史库数据用于查询历史数据,现存库只用于查询现在的数据,这样可提高数据操作的性
2012-03-13 09:55:53 1404 2
原创 项目管理方法
项目管理方法是关于如何进行项目管理的方法,是可在大部分项目中应用的方法。主要有:阶段化管理、量化管理和优化管理三个方面。概述 项目管理是一个管理学分支的学科,指在项目活动中运用专门的知识、技能、工具和方法,使项目能够在有限资源限定条件下,实现或超过设定的需求和期望。项目管理是对一些与成功地达成一系列目标相关的活动(譬如任务)的整体。这包括策划、进度计划和维护组成项目的活动的进展。
2012-03-12 21:50:58 1793
原创 如何在Google成为一名优秀的产品经理?
作者:伯乐在线 (jobbole) | 来自:月光博客在 Google ,我(前 Google 工程师 Edward Ho)和我最优秀的产品经理一起工作过,我会根据自己的经历出一个列表。由于我不是项目经理,所以这些结论都是我在 Google 观察最优秀的产品经理后的结果。1. 对产品以及所有相关的问题负责。这会让你积极主动,你是第一个寻找bug的人,第一个与用户沟通的人,以
2012-03-02 10:01:20 1132
彗星小助手
2011-11-15
HttpWatchPro
2011-11-10
计算机基础知识考试宝典
2011-09-22
Vc中BSTR,char和CString的转换
2007-10-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人