- 博客(72)
- 资源 (39)
- 收藏
- 关注
转载 在类模板的声明和定义中把.h与.cpp分离
原来一直以为用模板写类的时候只能将声明和定义放在一个.h里面一起实现,其实不是这样的。也可以将其分离,如下:在类模板的声明和定义中把.h与.cpp分离1.声明部分 // Tpl.h#pragma oncetemplateclass CTpl {public: CTpl(); virtual ~CTpl(); void Test(T t);};
2013-04-29 23:42:31 1221 1
转载 SuspendThread 造成程序死锁的一个例子
msdn对SuspendThread 的说明:This function is primarily designed for use by debuggers. It is not intended to be used for thread synchronization. CallingSuspendThread on a thread that owns a synchronizat
2013-04-29 23:02:55 6938
转载 HTTP-GET 和 HTTP-POST
一、HTTP-GET和HTTP-POST HTTP-GET和HTTP-POST是使用HTTP的标准协议动词,用于编码和传送变量名/变量值对参数,并且使用相关的请求语义。每个HTTP-GET和HTTP-POST都由一系列HTTP请求头组成,这些请求头定义了客户端从服务器请求了什么,而响应则是由一系列HTTP应答头和应答数据组成,如果请求成功则返回应答。 HTTP-GET以使用
2013-04-29 22:15:45 888
原创 My self-introduction
Good afternoon, my name is ChenYiming, and you can call me jaimin, it is my english name.I graduated from South China Agricultural[,æɡri'kʌltʃərəl] University in 2010, software engineering major in
2013-04-28 01:47:00 1588 1
转载 如何回复客户英文邮件
回复客户英文邮件模板1.如果客户投诉我们的产品存在某些问题时的回复Dear Mr. Jones:We are so sorry for the inconvenient brought to you from our product. And we appreciate your efforts in reporting this issue to us.Our support
2013-04-28 00:42:00 23870
转载 视图(View)的优缺点
在做数据库开发中使用视图的优点有: 1.可以访问表中列的子集。在表中有些列是比较敏感的数据不想用户看到的,如用户密码,员工工资等,用视图可以隐藏这些列。 2.可以访问表中行的子集。有时不想让用户看到与TA无关的数据时,可以在where条件中过滤,如企业中子公司的员工只能看到TA所在子公司的同事资料,而不想其它子公司员工资料也显示出来,用过滤后查询出来的数据集组成视图。
2013-04-26 17:19:19 2967
转载 SQLServer 存储过程
SQL Server 存储过程Transact-SQL中的存储过程,非常类似于Java语言中的方法,它可以重复调用。当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句。这样就可以提高存储过程的性能。Ø 存储过程的概念 存储过程Procedure是一组为了完成特定功能的SQL语句集合,经编译后存储在数据库中,用户通过指定存储过程的名称并给出参数来执行
2013-04-26 17:17:13 644
转载 C++中的 友元函数、友元类
1.友元函数的简单介绍1.1为什么要使用友元函数在实现类之间数据共享时,减少系统开销,提高效率。如果类A中的函数要访问类B中的成员(例如:智能指针类的实现),那么类A中该函数要是类B的友元函数。具体来说:为了使其他类的成员函数直接访问该类的私有变量。即:允许外面的类或函数去访问类的私有变量和保护变量,从而使两个类共享同一函数。实际上具体大概有下面两种情况需要使用友元函数:(1)运算
2013-04-25 23:17:06 747
转载 进程控制块PCB
参考一:进程控制块PCB详解PCB(process control block),进程控制块,是我们学习操作系统后遇到的第一个数据结构描述,它是对系统的进程进行管理的重要依据,和进程管理相关的操作无一不用到PCB中的内容。一般情况下,PCB中包含以下内容:(1)进程标识符(内部,外部)(2)处理机的信息(通用寄存器,指令计数器,PSW,用户的栈指针)。(3)进程调度信息
2013-04-24 00:30:10 4868
转载 管程
参考一:3.8 管程的概念 3.8.1 管程的引入 信号量机制是解决进程互斥、同步的有效工具,但前提是信号量设置、其初值的确定以及相关进程中安排P-V操作的位置必须正确,否则同样也会造成与时间有关的错误,有时甚至造成死锁。Dijkstra于1971年提出,把所有进程对某一临界资源互斥、同步操作都集中起来,构成所谓的"秘书"进程。1975年,Hansen和Hoare又把"秘书"进
2013-04-24 00:06:32 3966
转载 操作系统——进程管理
参考一:操作系统之进程管理1.程序顺序执行的特征:a.顺序性:每一操作必须在下一操作开始之前结束b.封闭性:程序运行时独占全机资源,资源的状态(除初始状态外)只有本程序才能改变,程序一旦执行,其结果不受外界影响c.可再现性:程序执行环境和初始条件相同,重复执行时,结果相同2.程序并发执行的特征:a.间断性:程序并发运行时,共享系统资源,为完成同一任务相互合作,会
2013-04-23 00:33:07 1137
转载 C++ 静态库 与 动态库 的区别
参考一:静态库和动态库的区别静态库:在编译的时候加载生成目标文件,在运行时不用加载库,在运行时对库没有依赖性。动态库:在目标文件运行时加载,手动加载,且对库有依赖性。 两者区别: 一,静态库的使用需要: 1 包含一个对应的头文件告知编译器lib文件里面的具体内容 2 设置lib文件允许编译器去查找已经编译好的二进制代码 二,动态库的使用: 程
2013-04-23 00:16:31 3256
原创 一道关于内存操作和strcpy的笔试题
/** char* strcpy(char* _Dest, const char* _Source); 不管strlen(_Dest)和strlen(_Source)的大小关系如何,strcpy总能成功执行,并且执行完copy之后,会在内容的后面补上'\0'。*/#include using namespace std;void GetMomery1(char**
2013-04-21 23:42:33 836
原创 类模板的继承
/**类模板也支持继承机制.和普通的类继承一样我们可以在继承类里面添加新的成员变量和成员函数.*/#include templateclass A{public: void func(T a) { printf("A:func(T)\n"); }};template class
2013-04-21 22:49:49 674
原创 函数模板的重载(overload)
/**模板也提供了函数模板重载的功能,只要定义同名的函数模板,具有不同的返回值类型和形参不同,就实现了了函数模板的重载,* 编译器会在调用函数,自动选择对应的函数模板实例化和调用.*/#include template void func(T a){ printf("func(T)\n");}templateint func(T1
2013-04-21 22:39:11 710
原创 类模板的 全特化、偏特化
#include using namespace std;templateclass A{public: void function(T1 value1, T2 value2){ cout<<"value1 = "<<value1<<endl; cout<<"value2 = "<<value2<<endl; }};/* 偏特化 */
2013-04-21 22:29:37 806
原创 override函数的返回值也必须一致
/**结论:派生类override基类的虚函数时,函数的返回值也必须一致。*/#include using namespace std;class CBase{public: virtual void Func(){ cout<<"CBase::Func()...."<<endl; }};class CDerived: public CBase{
2013-04-21 21:58:55 2268 1
转载 对象数组与构造函数
参考一:定义对象数组时,数组中的各个元素需要构造函数来初始化。数组能否定义成功,关键在于每个元素都有合适的构造函数,默认构造函数并不是必须的。 1.动态对象数组,对象所属类型必须有public默认构造函数.2.静态对象数组(1)没有提供初始化式的元素将调用默认构造函数来初始化(2)提供初始化式的构造函数将调用相应的构造函数#include using namespa
2013-04-21 21:31:21 2817
转载 二分查找法
算法基本思想:二分查找算法的前置条件是,一个已经排序好的序列(假设这个序列是升序排列的),这样在查找所要查找的元素时,首先与序列中间的元素进行比较,如果大于这个元素,就在当前序列的后半部分继续查找,如果小于这个元素,就在当前序列的前半部分继续查找,直到找到相同的元素,或者所查找的序列范围为空为止.二分查找法主要是解决在“一堆数中找出指定的数”这类问题。而想要应用二分查找法,这“一堆
2013-04-21 16:11:05 740
原创 equal_range
/*STL中的equal_range算法返回一个pair类型的值range,vector vec;...//vec initializepair::iterator,vector::iterator> range;range = equal_range(vec.begin(),vec.end(),value); 其中range.first是可以在不改变原来排序顺序的情况下的
2013-04-21 14:18:33 897
转载 lower_bound()、upper_bound()
参考一:函数作用 iterator lower_bound( const key_type &key ): 返回一个迭代器,指向键值>= key的第一个元素。 iterator upper_bound( const key_type &key ):返回一个迭代器,指向键值> key的第一个元素。 lower_bound()函数第一个版本: template
2013-04-21 14:07:00 1302
原创 binary_search
/**binary_search 实现二分查找,如果是随机存取迭代器,则是对数复杂度,否则为线性复杂度。* 要求目标区间已排序。*//** template bool binary_search (ForwardIterator first, ForwardIterator last, const T& val);
2013-04-21 13:54:41 977
原创 count
/**count: 用于计算容器中的某个给定值的出现次数, 计算迭代器区间[first, last)上等于value值的元素个数n.*/#include #include #include #include #include using namespace std; int main(int argc, char* argv[]) {
2013-04-21 13:38:28 625
转载 inclue <string> 和 include <string.h>
两段代码:1、#include void main(){string aaa = " abcsd d " ;printf( " looking for abc from abcdecd %s\n " ,(strcmp(aaa, " abc " )) ? " Found " : " Not Found " );}不能正确执行,提示说是string类型没有定义2、#
2013-04-21 13:33:27 986
转载 STL查找算法
STL 查找算法Section I正确区分不同的查找算法count,find,binary_search,lower_bound,upper_bound,equal_range 本文是对Effective STL第45条的一个总结,阐述了各种查找算法的异同以及使用他们的时机。首先可供查找的算法大致有count,find,binary_search,lower_bound,upper
2013-04-21 12:41:24 806
转载 设计模式_桥接模式(C++)
定义:将抽象部分与它的实现部分分离,使它们都可以独立地变化。桥接模式(Bridge)分离了类的抽象和实现,使它们可以彼此独立地变化而互不影响。桥接模式与适配器模式有些相似,在两个对象之间加入了一个中间层次,提供间接联系增加了系统的灵活性。但两者的意图不同,适配器模式关心的是接口不匹配的问题,不关心接口的实现,只要求对象能够协同工作。桥接模式的侧重点是接口和实现,通常接口是稳定的,桥接解决实现的
2013-04-21 10:16:06 542
转载 truncate、delete、drop 的区别
参考一:TRUNCATE TABLE 在功能上与不带 WHERE 子句的 DELETE 语句相同:二者均删除表中的全部行。但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志资源少。DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项。TRUNCATE TABLE 通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。
2013-04-20 00:26:28 572
转载 互斥量 和 信号量 的区别
1. 互斥量用于线程的互斥,信号量用于线程的同步。这是互斥量和信号量的根本区别,也就是互斥和同步之间的区别。互斥:是指某一资源同时只允许一个访问者对其进行访问,具有唯一性和排它性。但互斥无法限制访问者对资源的访问顺序,即访问是无序的。同步:是指在互斥的基础上(大多数情况),通过其它机制实现访问者对资源的有序访问。在大多数情况下,同步已经实现了互斥,特别是所有写入资源的情况必
2013-04-19 23:55:27 554
原创 怎样调用基类的私有虚函数(private virtual function)
原理:如果基类包含虚函数,则派生类的对象都会有一个虚函数表指针,而且这个指针通常都是处于对象的最前面,即对象的地址和虚函数表指针的地址是一样的。 #include using namespace std;class Base{private: virtual void f0() { cout << "Base::f0()...." << endl; }
2013-04-17 23:54:32 2466 2
转载 C++ 虚函数表解析
虚函数表 对C++ 了解的人都应该知道虚函数(Virtual Function)是通过一张虚函数表(Virtual Table)来实现的。简称为V-Table。在这个表中,主是要一个类的虚函数的地址表,这张表解决了继承、覆盖的问题,保证其容真实反应实际的函数。这样,在有虚函数的类的实例中这个表被分配在了这个实例的内存中,所以,当我们用父类的指针来操作一个子类的时候,这张虚函数表就显得由为重
2013-04-17 23:31:28 494
转载 基类、子类、数据成员类对象三者 构造函数 的调用顺序
构造函数的调用顺序:基类 --> 数据成员类对象(基于声明的顺序) --> 子类;析构函数的调用顺序则相反。 #includeusing namespace std;class human{public: human(int height=0, int weight=0) { this->m_nHeight=height;
2013-04-17 23:14:43 1612
转载 Windows内存管理
参考一:1. 内存管理所要做的事1)把哪些不常用的程序片断就放入虚拟内存,当需要用到它的时候在load入主存(物理内存)中。2)计算程序片段在主存中的物理位置,以便CPU调度。2. 内存管理方式1)块式管理:把主存分为一大块、一大块的,当所需的程序片断不在主存时就分配一块主存空间,把程序片断load入主存,就算所需的程序片度只有几个字节也只能把这一块分配给它。这样会造成很大的浪
2013-04-16 23:42:23 942
转载 C++ 钻石继承与虚继承
首先,何为钻石继承,顾名思义,在类的继承过程中,继承结构是一个类似菱形(钻石)的结构就属于钻石继承,如下:这是一个最简单的钻石继承。实际上,在复杂的继承表中,只要子类按不同的继承路径回溯到基类有菱形结构,均属钻石继承。下面先看一个例子,钻石继承在C++程序设计中带来的问题。//diamond.cpp #include using namespace std; class
2013-04-15 23:28:23 2276
原创 SOCK_RAW 与 SOCK_STREAM 、SOCK_DGRAM 的区别
其中 SOCK_STREAM (TCP)、SOCK_DGRAM (UDP) 工作在传输层,SOCK_RAW 工作在网络层。SOCK_RAW 可以处理ICMP、IGMP等网络报文、特殊的IPv4报文、可以通过IP_HDRINCL套接字选项由用户构造IP头。
2013-04-14 22:06:19 15893 1
转载 原始套接字(SOCK_RAW)概述
大多数程序员所接触到的套接字(Socket)为两类: (1)流式套接字(SOCK_STREAM):一种面向连接的Socket,针对于面向连接的TCP服务应用; (2)数据报式套接字(SOCK_DGRAM):一种无连接的Socket,对应于无连接的UDP服务应用。 从用户的角度来看,SOCK_STREAM、SOCK_DGRAM这两类套接字似乎的确涵盖了TCP/IP应用的
2013-04-14 20:55:12 1737
原创 结构体中的 位域操作
#include using namespace std;typedef unsigned char u_char;struct tagControl{ u_char fc_subtype : 4; u_char fc_type : 2; u_char fc_protocol_version : 2; u_char fc_order :
2013-04-14 20:42:48 901
转载 Windows进程间通信
摘 要: 随着人们对应用程序的要求越来越高,单进程应用在许多场合已不能满足人们的要求。编写多进程/多线程程序成为现代程序设计的一个重要特点,在多进程程序设计中,进程间的通信是不可避免的。Microsoft Win32 API提供了多种进程间通信的方法,全面地阐述了这些方法的特点,并加以比较和分析,希望能给读者选择通信方法提供参考。关键词 进程 进程通信 IPC Win32 API
2013-04-10 23:48:35 1000
转载 Windows Error Code
0 操作成功完成.1 功能错误.2 系统找不到指定的文件.3 系统找不到指定的路径.4 系统无法打开文件.5 拒绝访问.6 句柄无效.7 存储控制块被损坏.8 存储空间不足, 无法处理此命令.9 存储控制块地址无效.10 环境错误.11 试图加载格式错误的程序.12 访问码无效.13 数据无效.14 存储器不足, 无法完成此操作.15 系
2013-04-10 22:03:58 2299
转载 匿名管道 与 命名管道
参考一:管道(PIPE)实际是用于进程间通信的一段共享内存,创建管道的进程称为管道服务器,连接到一个管道的进程为管道客户机.一个进程在向管道写入数据后,另一进程就可以从管道的另一端将其读出来.管道分为两种:匿名管道和命名管道.匿名管道是在父进程和子进程间单向传输数据的一种未命名管道,只能在本地计算机中使用,而不能用于网络间的通信.匿名通道由CreatePipe()函数创建,该函数在创建
2013-04-10 20:50:08 2590
转载 堆排序 原理与实现
参考一:堆排序 估计还要问问:什么是堆,什么是堆排序?堆与计算机分配内存的堆相同吗?很多资料给出:堆的定义是(1)、n个关键字序列(Kl,K2,…,Kn)称为(Heap),当且仅当该序列满足如下性质(简称为堆性质):ki≤K2i且ki≤K2i+1 或 Ki≥K2i且ki≥K2i+1 (1≤i≤ n) //ki相当于二叉树的非叶结点,K2i则是左孩子,k2i+1是右孩子
2013-04-07 12:06:52 877
网络商城+论文+源码 购物系统jsp ssh mvc java web j2ee毕业设计
2017-02-13
酒店管理 预订系统+源码jsp ssh mvc java web j2ee论文 毕业设计
2017-02-13
OA 办公自动化系统+论文+源码jsp ssh mvc java web j2ee毕业设计
2017-02-13
目录文件实时同步备份工具
2015-01-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人