自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(69)
  • 收藏
  • 关注

原创 C实现memset函数

memset()函数的作用是一字节一字节地把整个数组设置为一个指定的值。 memset()函数在mem.h头文件中声明,它把数组的起始地址作为其第一个参数,第二个参数是设置数组每个字节的值,第三个参数是数组的长度(字节数,不是元素个数)。其函数原型如下:void* memset(void* s, int c, size_t n){    unsigned c

2015-10-16 00:03:40 843

原创 const成员函数

在C++中,若一个变量声明为const类型,则试图修改该变量的值的操作都被视编译错误.例如:const int a=1;a=2;//错误C++的const类成员函数:面向对象程序设计中,为了体现封装性,通常不允许直接修改类对象的数据成员。若要修改类对象,应调用公有成员函数来完成。为了保证const对象的常量性,编译器须区分试图修改类对象与不修改类对象的函数。把一个成员函数声明为

2015-09-30 15:28:59 531

原创 对面向过程、面向对象、类、对象的理解

面向过程是一种直接的编程方法,它是按照编程语言的思路考虑问题。尤其是想C语言这种过程式语言,它就是通过顺序执行一组语句来实现一个功能,这些语句的执行过程就是整个程序。   面向对象是基于万物皆对象这个哲学观点. 把一个对象抽象成类,具体上就是把一个对象的静态特征和动态特征抽象成属性和方法,也就是把一类事物的算法和数据结构封装在一个类之中,程序就是多个对象和互相之间的通信组成的.

2015-09-16 13:54:00 618

原创 全局变量,全局静态变量,局部静态变量,局部变量

变量可以分为全局变量、静态全局变量、静态局部变量和局部变量。按照存储区分:全局变量、静态全局变量和静态局部变量都存放在内存的全局数据区,局部变量存放在内存的栈区。 按作用域分:全局变量在整个工程文件内都有效;静态全局变量只在定义它的文件内有效;静态局部变量只在定义它的函数内有效,只是程序仅分配一次内存,函数返回后,该变量不会消失;局部变量在定义它的函数内有效,但是函数返回后失效

2015-09-14 20:20:35 506

转载 C++内存管理

1.1分配方式简介在C++中,内存分成4个区,他们分别是堆、栈、全局/静态存储区和常量存储区。  栈,在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。分配效率很高,但是分配的内存容量有限。  堆,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在

2015-09-14 19:55:39 391

原创 C++中不能被声明为虚函数的函数

常见的不能声明为虚函数的有:普通函数(非成员函数),静态成员函数,内联成员函数,构造函数,友元函数。1、为什么C++不支持普通函数为虚函数?      普通函数(非成员函数)只能被overload,不能被override,声明为虚函数也没有什么意思,因此编译器会在编译时邦定函数。2、为什么C++不支持构造函数为虚函数?      这个原因很简单,主要是从语义上考虑,所以不支持。因为

2015-09-14 19:48:02 563

原创 华为上机考试题----删除重复字符串和约瑟夫环

1、删除重复字符串(哈希数组的应用)给定一个字符串,将字符串中所有和前面重复多余的字符删除,其余字符保留,输出处理后的字符串。需要保证字符出现的先后顺序,并且区分大小写。#include #include int main() {char str[100],hash[256];int len, i;char *index = str;gets(str);le

2015-09-13 15:09:02 592

原创 二分查找

二分查找是在有序表中查找某一数据用的比较频繁的算法。时间复杂度是O(logn)。譬如在数组{1,2,3,4,5,6,7,8,9}中查找元素6,则使用二分查找算法的话,执行顺序为:1 第一步查找中间元素,即是5,将6与5进行比较,得出5则6必然在5之后的那一部分,那么就在这一部分开始寻找;2 第二步查找{6,7,8,9}的中间元素,即是7,将6与7比较,得出7>6;则6必然在7左边的部分

2015-09-13 15:02:05 400

原创 等价类划分--三角形测试用例设计

测试用例实例--三角形用例设计测试一个图形是不是三角形,需考虑到三角形的性质要求。除了满足A B C均是整数且大于0,还需满足A>0,B>0,C>0,且A+B>C,B+C>A,A+C>B。如果是等腰的,还要判断A=B,或B=C,或A=C。如果是等边的,则需判断是否A=B,且B=C,且A=C。输入条件有效等价类无效等价类

2015-09-08 20:12:39 41759 3

原创 快速排序详解

快速排序也是基于交换的原理进行的,是对冒泡排序的一种改进。即它是通过不断比较和移动交换来实现排序的,只不过它的实现,增大了记录的比较和移动的距离,将关键字比较大的记录从前面直接移动到后面,关键字较小的记录从后面直接移动到前面,从而减小了总的比较次数和移动次数。      快速排序采用的思想是分治思想。      快速排序是找出一个元素(理论上可以随便找一个)作为基准(pivot),

2015-09-06 11:37:44 518

转载 TCP协议疑难杂症解析

首先我们认识一下为何IP协议是沙漏的细腰部分。它的下层是繁多的链路层协议,这些链路提供了相互截然不同且相差很远的语义,为了互联这些异构的网络,我们需要一个网络层协议起码要提供一些适配的功能,另外它必然不能提供太多的“保证性服务”,因为上层的保证性依赖下层的约束性更强的保证性,你永远无法在一个100M吞吐量的链路之上实现的IP协议保证1000M的吞吐量…IP协议设计为分组转发协议,每一跳都要

2015-09-05 15:49:25 551

原创 性能测试基本概念

什么是性能测试?       性能测试说白了就是通过工具模拟多个用户对被测系统进行访问,然后查看系统对于多个用户发来请求的处理能力。包括负载测试,强度测试,数据库容量测试,以及竞争(并发,用户)测试。性能测试常用术语解析:并发用户数量:与服务器进行交互(例如产生数据传输)的在线用户数量。请求响应时间:从client端发出请求到得到响应的整个时间。一般包括网络的响应时间和server

2015-09-05 14:29:04 770

原创 ARP协议

ARP协议:是地址解析协议,将IP地址转化为MAC地址。工作在网络层,将上层传下来的数据报中的IP地址转化为MAC地址继续传送。为什么需要ARP协议? 因为网络层及以上传送数据时是根据IP地址进行传送的,而下两层使用的是MAC地址,因此在二三层中间必须有一个工具用以转换IP地址和MAC地址,所以就出现了ARP和RARP。ARP是将IP地址转化为MAC地址,RARP则是将MAC地址转化为IP

2015-09-04 11:12:23 646

原创 IP数据报的格式

IP协议是网络层的协议。它提供不可靠的,无连接的数据包传送服务。   不可靠是指它不保证数据能够成功到达目的方。如果发生某种错误时,如某个路由器暂时用完了缓冲区,IP有一个简单的错误处理方法:丢弃该数据报,并发送ICMP消息报给信源端。任何要求的可靠性必须由上层提供(如TCP)。   无连接指的是IP并不维护任何关于后续数据包的状态信息,任何数据包的处理是相对独立的。即目的方收到的数据报的

2015-09-02 15:38:44 792

转载 软件测试模型之V模型和W模型

下面是比较流行的V测试模型:       V模型中的过程从左到右,描述了基本的开发过程和测试行为。V模型的价值在于它非常明确地标明了测试过程中存在的不同级别,并且清楚地描述了这些测试阶段和开发过程期间各阶段的对应关系。局限性: 把测试作为编码之后的最后一个活动,需求分析等前期产生的错误直到后期的验收测试才能发现.下面是W测试模型:      V模型的局限性在于没

2015-09-01 21:42:32 4690

原创 自动化测试理解

以下问题,可以帮助我们更深入的理解自动化测试?而不只是停留在自动化测试工具的使用上。什么是自动化测试?通过工具记录或编写脚本的方式模拟手工测试的过程,通过回放或运行脚本来执行测试用例,从而代替人工对系统的功能进行验证。自动化测试和手工测试的区别?手动测试优点:1.在测试过程中充分发挥人的主观能动性,灵活性2.可以充分利用发散思维和优秀的逻辑思维能力,分析能力以及判断力3

2015-09-01 21:32:19 2598

原创 功能测试理解

功能性测试又叫正确性测试,主要是对系统所支持的功能点的测试,对数据的测试,包括数据边界的测试、数据包长度限制的测试、各个功能模块数据的正确性测试以及容错处理。该项测试要先把系统的功能点全部列出来,对异常数据的处理也算在内。功能测试的重点在哪儿?想做好功能测试要做好四点:1. 非常了解被测试系统,各个功能和各个业务逻辑。2. 需求文档,如果你不知道怎么测,那你一定没看需求文档

2015-09-01 21:29:41 1366

原创 黑盒测试和白盒测试

黑盒测试又称为数据驱动测试,它是基于程序规格说明书作为依据进行设计测试用例,目的是为了找出程序不符合规格说明书的地方。白盒测试又称为逻辑驱动测试,它是基于程序设计的内部逻辑结构进行设计测试用例,目的是为了测试用例执行的程度或者覆盖源代码的程度。黑盒测试和白盒测试的区别黑盒测试的优点:不需要了解源代码对于大型项目来说,黑盒测试的效率比白盒测试要高有助于发现跟程序规格说明书不一

2015-09-01 20:09:40 1127

原创 mysql explain解析

基于mysql 5.5 存储引擎myisam一:explain的作用explain显示了mysql如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。二:explain的使用如上所示:explain的查询结果包括以上字段,下面对各个字段的含义逐一进行解释。id列建表:查询从 3 个表中查询,对应输出 3 行

2015-09-01 11:12:08 435

转载 精通QTP--常见面试题

1)QTP支持那些环境?  QTP支持以下环境:  Active X、Delphi、Java、Net、Oracle、People Soft Power Builder、SAP、Siebel、Stingray Terminal Emulator、Visual Basic Visual Age 、Web、Web Services  2)QTP的对象库类型是什么?

2015-08-31 15:45:43 3698

转载 测试开放题(二)

1.你为什么选择软件测试行业   因为之前有了解软件测试这个行业,觉得他的发展前景很好。   2.根据你以前的工作经验描述一下软件开发、测试过程,由那些角色负责,你做什么   要有架构师、开发经理、测试经理、程序员、测试员。我在里面主要是负责所分到的模块执行测试用例。   3.结合你以前的学习和工作经验,你认为如何做好测试。   根据我以前的工作经验,我认为做好工作首先要有一个

2015-08-31 15:42:10 994

转载 指针函数和函数指针

一、辨别指针函数与函数指针最简单的方式就是看函数名前面的指针*号有没有被括号包含,如果被包含就是函数指针,反之则是指针函数。1、指针函数是指带指针的函数,即本质是一个函数。函数返回类型是某一类型的指针   类型标识符    *函数名(参数表)   int *f(x,y);    首先它是一个函数,只不过这个函数的返回值是一个地址值。指针函数一定有函数返回值,

2015-08-27 22:01:09 339

转载 数据库设计三大范式

数据库设计三大范式为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。在关系型数据库中这种规则就称为范式。范式是符合某一种设计要求的总结。要想设计一个结构合理的关系型数据库,必须满足一定的范式。                 在实际开发中最为常见的设计范式有三个:1.第一范式(确保每列保持原子性)第一范式是最基本的范式。如果数据库表中的所有字段值都是不可分

2015-08-25 20:44:57 558

转载 数据库存储过程

什么是存储过程?存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。为什么要用存储过程呢?存储过程说白了就是一堆 SQL 的合并。中间加了点逻辑控制。但是存储过程处理比较复杂的业务时比较实用。比如说,一个复杂

2015-08-25 20:20:34 491

转载 死锁的产生,处理,避免

死锁的条件     互斥条件(Mutual exclusion)     :资源不能被共享,只能由一个进程使用。     请求与保持条件(Hold and wait):进程已获得了一些资源,但因请求其它资源被阻塞时,对已获得的资源保持不放。     不可抢占条件(No pre-emption)    :有些系统资源是不可抢占的,当某个进程已获得这种资源后,系统不能强行收回,只能由进程使

2015-08-25 19:47:34 363

原创 图片

2015-08-23 11:37:12 290

转载 函数返回局部变量

一般的来说,函数是可以返回局部变量的。 局部变量的作用域只在函数内部,在函数返回后,局部变量的内存已经释放了。因此,如果函数返回的是局部变量的值,不涉及地址,程序不会出错。但是如果返回的是局部变量的地址(指针)的话,程序运行后会出错。因为函数只是把指针复制后返回了,但是指针指向的内容已经被释放了,这样指针指向的内容就是不可预料的内容,调用就会出错。准确的来说,函数不能通过返回指向栈内存的指针(注意

2015-08-20 10:57:53 326

转载 面试中常问的关于链表的题目

面试中常问的关于链表的题目注:本文转载自 计算机艺术 的博客,感谢作者整理!http://blog.csdn.net/walkinginthewind/article/details/7393134 链表是最基本的数据结构,面试官也常常用链表来考察面试者的基本能力,而且链表相关的操作相对而言比较简单,也适合考察写代码的能力。链表的操作也离不开指针,指针又很容易导致出

2015-08-20 10:32:35 440

转载 一道关于虚函数指针的题目

以下程序在32位机器上运行输出是____。Wang, my age =1; 1234567891011121314151617181920212223242526

2015-08-19 21:19:15 471

转载 bug缺陷管理流程及等级划分

缺陷等级划分缺陷等级一般划分为四个等级,致命、严重、一般、提示。 致命(一级bug)通常表现为:主流程无法跑通,系统无法运行,崩溃或严重资源不足,应用模块无法启动或异常退出,主要功能模块无法使用。比如:1.内存泄漏;2.严重的数值计算错误;3.系统容易崩溃;4.功能设计与需求严重不符;5.系统无法登陆;6.循环报错,无法正常退出。严重

2015-08-18 11:37:31 7094

转载 mysql 数据表中主键(primary key)的操作

mysql数据表中的主键(primary key)有如下几种约束:1、PRIMARY KEY 约束唯一标识数据库表中的每条记录。2、主键必须包含唯一的值。3、主键列不能包含 NULL 值。4、每个表都应该有一个主键,并且每个表只能有一个主键。在创建主键时,我们可以在创建表的同时创建主键,当然有时出于疏忽,建好表后才发现没有创建主键,这时可以补上。下面是在MYSQL控制台

2015-08-17 11:37:52 14067

原创 string类的编写

//string类编写#include#includeusing namespace std;class myString{public://普通构造函数myString(const char *str){if(str==NULL){m_data=new char[1];//对空字符串自动申请存放结束标志的'\0',对m_da

2015-07-31 11:23:41 374

原创 C语言之strncpy函数原型

#include#includechar *MYstrcpy(char *src,const char *dst,int n);int main(){char str1[6]="hello";char str2[6]="abc";       MYstrcpy(str1,str2,4);puts(str1);//abcprintf("%d %d\n",strle

2015-07-30 21:19:40 870

原创 类的各类函数的调用顺序

类的构造函数-》类的成员对象的构造函数-》派生类的构造函数    我们来看下面一段代码:    class B1     {    public:         B1(int i){cout    };    class B2     {     public:          B2(int j){cout     };     class

2015-07-30 19:55:21 1824

转载 证同测试

证同测试可以解决自我复制的问题。看下面的例子:     Widget&Widget::operator=(const Widget& rhs)      {              delete pb;   //这里对pb指向内存对象进行delete,试想如果 this ==& rhs,就是p和rhs指向同一块内存,那就同时把rhs那块内存也delete掉了        p

2015-07-30 19:53:18 468

转载 友元函数

1.友元函数的简单介绍1.1为什么要使用友元函数在实现类之间数据共享时,减少系统开销,提高效率。如果类A中的函数要访问类B中的成员(例如:智能指针类的实现),那么类A中该函数要是类B的友元函数。具体来说:为了使其他类的成员函数直接访问该类的私有变量。即:允许外面的类或函数去访问类的私有变量和保护变量,从而使两个类共享同一函数。实际上具体大概有下面两种情况需要使用友元函数:(1)运算

2015-07-30 19:52:45 364

原创 返回局部变量的问题

众所周知,函数返回局部变量的类型至关重要。由于指针和引用是一类特殊的类型,所以返回局部对象的指针或引用需格外注意。正确情况下,作为函数返回值的局部指针,其所指向对象的作用域应该是调用者作用域、全局或静态常量区;指向栈空间对象的指针作为返回值,存在潜在的错误。1、  返回局部变量的值例如 int num(){int a=2;return a;}当返回类型不是引用时,编

2015-07-30 19:52:34 560

转载 封装、继承、多态

面向对象的三个基本特征面向对象的三个基本特征是:封装、继承、多态。其中,封装可以隐藏实现细节,使得代码模块化;继承可以扩展已存在的代码模块(类);它们的目的都是为了——代码重用。而多态则是为了实现另一个目的——接口重用!封装                                                                什么是封装?

2015-07-30 19:51:33 639

原创 单链表和循环链表

使用链表进行存储元素的时候具有插入和删除节点效率高的优点,这里主要介绍插入和删除元素时的步骤:一 单链表的插入和删除在节点p之后插入一个新的节点s,如下图所示:步骤如下:先连右手,后连左手。s->next=p->next;p->next=s;在p节点之后删除s节点:步骤如下:p->next=s->next;二 循环链表的插入和删除循环

2015-07-30 14:50:34 380

原创 数组和链表的区别

1、大小区别   数组大小是固定的,一开始定义多长就是多长,不能改变;   链表大小不固定,可以再申请内存,增加长度;2、存储方式不同   数组存储在栈中,存储位置连续;   链表存储在堆中,存储位置不连续;3、定位的时间复杂度不同   数组定位元素的时间复杂度是O(1),随机访问速度快;   链表定位元素的时间复杂度是O(n),随机访问速度较慢; 3、插入和删

2015-07-30 10:50:31 297

空空如也

空空如也

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

TA关注的人

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