- 博客(39)
- 收藏
- 关注
原创 【C语言】复习
目录 C语言 (复习) 1、malloc,calloc 和 realloc 的作用及区别 2、static 关键字的用法及作用 3、指针和数组的区别 4、大端和小端 5、二分(折半)查找 6、实现 Myatoi 函数 C语言 (复习) 1、malloc,calloc 和 realloc 的作用及区别 malloc 使用的最频繁,因为它最简单,只需要一个参数,即需要动态开辟的内存的字节数, 如果堆里的连续空间能满足需要则将分配好的内存首地址返回,...
2020-09-06 15:39:42
442
原创 【软件测试】 ------ 测试分类
目录 测试分类: 一、按开发阶段划分 (一)单元测试 (二)集成测试 (三)系统测试 (四)验收测试 二、按测试实施组织划分 (一)α (二)β (三)第三方 α测试与Beta测试的区别: 三、按测试执行的方法划分 (一)静态测试 (二)动态测试 四、按是否查看代码划分 (一)黑盒测试 (二)白盒测试 (三)灰盒测试 五、按是否手工执行划分 (一)手工测试 (二)自动化测试 六、按测试对象划分 (一)性能测试 (二)安全测试 (三)兼容性测试 (四).
2020-09-04 22:20:46
517
原创 【软件测试】 ------- 测试用例及常见的测试方法
目录 一、测试用例的基本要素 二、常见的测试方法 (一)测试用例的总体设计方法 ------基于需求的设计 (二)具体的设计方法 1、等价类设计法 2、边界值设计法 3、因果图设计法 4、正交表设计法 5、场景设计法 6、错误猜测法 一、测试用例的基本要素 测试用例(Test Case)是为了实施测试而向被测试的系统提供的一组集合, 这组集合包含:测试环境、操作步骤、测试数据、预期结果等要素。 好的测试用例是一个不熟悉业务的人也能依据用例来很快的进行测试 .
2020-09-03 22:05:46
744
原创 【软件测试】 ----- 基础篇
一、软件测试的生命周期 需求分析→测试计划→ 测试设计、 测试开发→ 测试执行→ 测试评估 二、描述软件缺陷的要素(如何描述一个bug) 发现问题的版本 开发人员需要知道出现问题的版本,才能够获取对应版本的代码来重现故障。 并且版本的标识也有利于统计和分析每个版本的质量。 问题出现的环境 环境分为硬件环境和软件环境,如果是web项目,需要描述浏览器版本,客户机操作系统等, 如果是app项目,需要描述机型、分辨率、操作系统版本等。详细的环境描...
2020-09-03 21:14:33
455
原创 【软件测试】----- 概念篇
软件测试相关概念 一、软件测试的目的和原则 二、什么是需求 三、什么是bug 四、什么是测试用例 五、软件的生命周期 六、软件开发的五个模型 1、瀑布模型 2、螺旋模型 3、增量模型 4、迭代模型 5、敏捷开发模型: 七、软件测试的两个模型 1、V模型 2、W模型 一、软件测试的目的和原则 目的:验证软件有或没有问题。 原则:以客户为中心,遵循软件测试的规范、流程、标准和要求 (1)好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案。 (2)成功的测试是
2020-09-03 19:08:03
314
原创 【软件测试】---------- 答疑篇
1、测试与调试的区别: 目的不同 测试的任务是发现程序中的缺陷;调试的任务是定位并且解决程序中的问题。 参与角色不同 测试主要是由测试人员和开发人员来执行,黑盒测试主要由测试人员完成、 单元/集成测试主要是由开发人员执行。调试由开发人员完成。 执行的阶段不同 测试贯穿整个软件开发生命周期,调试一般在开发阶段 2、软件测试的职业规划 3、一个优秀的测试人员所具备的素质 (1)思维模式 逆向思维:开发盖房子,测试拆房子。不走寻常路...
2020-09-03 17:16:37
480
原创 【数据结构】希尔排序(缩小增量排序)
1、基本思想 希尔排序法又称缩小增量法。 希尔排序法的基本思想是:按照增量划分成若干小组,使之组内有序,整体趋于有序 增量缩减,整体会慢慢更加趋于有序 最后增量为1时,(数据趋于有序后)做了一次直接插入排序 2、步骤 (1)先根据增量对数据进行划分,划分成若干个小组,并在小组内进行排序,使得组内有序; (2)缩减增量,重复上述过程,此时数据整体更加趋于有序; (3)当增量缩减为1时,直接进行插入排序,效率提高 符号说明: i:待排序部分的起始位置 j:已排序部分的末尾 ...
2020-08-18 10:12:20
1020
原创 【数据结构】直接插入排序
目录 1、基本思想 2、步骤 3、代码实现 4、特点 1、基本思想 直接插入排序是一种简单的插入排序法,整体分为两部分: 已排序部分和未排序部分 其基本思想是:把待排序的记录按其关键码值的大小逐个插入到一 个已经排好序的有序序列中,直到所有的记录插入完为止,得到一个新的有序序列 。(也就是拿到一个数据将该数据插入到合适的位置) 实际中我们玩扑克牌时,就用了插入排序的思想。 2、步骤 1、找合适位置(找位置怎么找?) (1)重头找,将待排序的起始位置(i)放入tmp临时变量中,将其与..
2020-08-17 09:56:06
492
原创 【MySQL】--存储引擎和事务
一、mysql存储引擎 { MyISAM 和 InnoDB的区别} (一)概念 MyISAM 是 MySQL 的默认存储引擎。MyISAM 不支持事务、也不支持外键,其优势是访问的速度快,对事务完整性没有要求;对于一些在线分析处理操作速度快。 InnoDB 存储引擎提供了具有提交、回滚和崩溃恢复能力的事务安全。但是对比 MyISAM的存储引擎,InnoDB 写的处理效率差一些并且会占用更多的磁盘空间以保留数据和索引。支持事务,主要是面向在线事务处理方面的应用,特点是行锁设计,并支持外键。Innod..
2020-07-27 14:56:11
388
原创 【数据结构】循环队列
一、概念 1、队列(queue):只允许在一端进行插入操作,而在另一端进行删除操作的线性表。 队列是一种先进先出(FIFO)的线性表。允许插入的一端称为队尾,允许删除的一端称为队 队尾 插入 O(1) 队头 删除 O(n) 2、线性表有顺序存储和链式存储,栈是线性表,所以有这两种存储方式。 同样,队列作为一种特殊的线性表,也同样存在这两种存储方式。 二、队列的分类 1、顺序队列(数组) 队头 0 删除 O...
2020-06-03 21:34:01
398
原创 【Linux】进程的创建
主函数(main函数)的参数 int main(int argc, char *argv[],char *envp[]); argv :(char*)[] 传递main方法的参数列表 argc :int --->传递给main方法的参数列表中的参数个数 envp :(char*)[]传递环境变量列表 注:只要用户执行程序,main方法默认至少接收一个参数,此参数就是执行程序的命令 main方法传参: 2、输出缓冲区 不能以输出的顺序来决定程序运行的...
2020-05-28 21:26:48
298
原创 【Linux】进程的概念
1、进程的概念:正在运行的程序(由一条条指令构成 数据 资源) 2、操作系统对进程的管理: 标示一个进程 PID(也在PCB中) 控制一个进程 进程控制块 PCB 在系统内核里就是struct task_struct 创建一个进程: 先申请一个PCB,然后加载程序,生成进程实体 进程结束:先结束进程实体,再释放PCB结点(释放PCB需要一定条件) 僵死进程(僵尸进程): 进程实体已经释放,但PCB结点并没有被释放 退出码(在PCB)--有退出码才...
2020-05-28 21:03:06
302
原创 【数据结构】顺序栈
一、概念 栈:是限定仅在表尾进行插入和删除的线性表,栈又称为FILO先进后出的线性表 我们通常把允许插入和删除的一端称为栈顶(top),另一端称为栈底(bottom) 不含任何数据元素的栈称为空栈 ...
2020-05-28 20:26:25
465
原创 【数据结构】链栈
上篇我们讲完了顺序栈,这回我们来讲下链栈,链栈的实现与顺序栈相同 一、定义 链栈:栈的链式存储结构(以链表的形式实现栈的特性) 对于链栈来说,基本不存在栈满的情况,除非内存已经没有可以使用的空间。 链栈的操作绝大部分和单链表类似 二、基本操作 1、存储结构 typedef int Elemtype; typedef struct Node { Elemtype data; struct Node* next; }Node,Stack, *pStack;//再设计一个栈类型 2、初始化
2020-05-28 20:24:34
296
原创 【数据结构】双向链表
一、概念 双向链表:是在单链表的每个结点中,在设置一个指向其前驱结点的指针域 可回退 二、代码实现 1、存储结构 typedef int ElemType; typedef struct Node { ElemType data; struct Node* prev;//前驱 struct Node* next;//后继 }Node,*DPList;//本身类型为结点类型,指针类型为DPList 2、初始化 在init函数中操作main函数里phead内存块,在init中以指针的形
2020-05-26 21:23:23
207
原创 【数据结构】单链表
一、概念 1、链表:逻辑上连续,物理存储不连续的一种线性表的实现,链表具有唯一的起始和唯一的结尾 2、单链表:前一个结点除了存储元素值外,还必须存储下一个结点的地址 除了最后一个元素外,每一个结点都有一个直接后继 3、头指针:链表中第一个结点的存储位置叫做头指针 4、头结点:在单链表的第一个结点前附设一个结点,称为头结点 头结点的数据域可以不存储任何信息,头结点的指针域存储指向第一个结点的指针 头指针与头结点的...
2020-05-26 14:56:34
642
原创 【Linux】线程的概念与创建
线程的概念与创建 1、线程的概念: 线程是进程内部的一条执行序列(执行流),一个进程可以包含多个线程, 将main函数执行的线程称为主线程,其他的线程称之为函数线程。 main函数:是进程执行的入口,函数执行的第一个 函数线程:创建线程时,需要指定线程的执行序列(一组有序指令--》函数) //线程是进程内部的一条执行序列或执行的路径,一个进程可以包含多条线程C语言如何组...
2020-04-28 22:12:46
585
原创 【数据结构】 定长顺序表
顺序表 提起顺序表,首先我们要先了解什么是线性表; 线性表:是零个或多个数据元素的有限序列。其中元素之间是有顺序的,若多个元素存在,则第一个元素无前驱,最后一个元素无后继,其他每个元素都有且只有一个前驱和后继。此处就像是我们在日常生活中见到的排队一般。 线性表两种物理结构:(1)顺序表:逻辑相邻,物理也相邻,比如一维数组。 ...
2020-04-24 16:09:58
353
原创 【Linux】进程间通信(共享内存)
共享内存 1、实现原理: 共享内存区域说白了就是多个进程共享的一块物理内存地址,只是将这块物理内存分别映射到自己的虚拟空间地址上。 假设有 10 个进程将这块区域映射到自己的虚拟地址上,那么,这 10 个进程间就可以相互通信。 由于是同一块区域在10 个进程的虚拟地址上,当第一个进程向这块共享内存的虚拟地址中写入数据时, 其他 9 个进程也都会看到。 因此共享内存是进程间通信的一种最...
2020-04-17 18:25:43
348
原创 【Linux】进程间通信(信号量)
信号量 1、信号量的基本概念 信号量:类似于一个计数器,当信号量的值大于0时,记录临界资源的个数,当信号量等于0时,对此信号量执行P操作(-1)进程访问临界资源时必须阻塞,当计数器减到0的时候,其他进程想要访问资源,就需要挂起等待,直到该进程执行完操作,信号量的值大于0,或者有其他进程在此信号量上执行了V操作(+1)。 (ipcs -s //查看信号量 ipcrm -s semid ...
2020-04-17 15:18:24
436
原创 【Linux】进程间通讯(消息队列)
消息队列 消息:类型+数据 队列:先进先出(优先级队列) 消息队列中的数据都是有间隔的 1、消息队列特点: 是消息的链表。具有特定的格式,存放在内存当中,由消息队列标识符标识。 消息队列允许一个或者多个进程向他写入与读取消息。 消息队列可实现消息的随机查询,不一定要以先进先出的顺序读取,也可以按照类型进行读取。 2、相关函数 msgget(): 用来创建或访问一个...
2020-04-17 13:20:45
309
原创 【Linux】进程间通信(管道)
管道 管道是一种半双工通信机制 (全双工:A可到B,B也可到A,如网络 半双工:要么A-->B,要么B-->A,不可能同时存在 单路通讯:只能A-->B,如广播) 1、有名管道:在磁盘有一个管道文件标识,但是这个管道文件只会占用一个inode结点, 任何都不会占据block块,数据在传递过程中会缓存到内存上 //如何创建管道文件??? 命令:mkfifo ...
2020-04-17 11:15:45
263
原创 【Linux】文件的压缩与解压
文件的压缩与解压 压缩包:xxxxx.tgz xxxxx.tar.gz 压缩分成两步:【1】打包: tar 【2】压缩: gzip gzip xxxxxx.t tar cf xxxx.tar 所有需要添...
2020-04-09 12:29:55
206
原创 【Linux】文件类型及基本操作
Linux上一切皆文件,但将文件分为五种类型 1、 linux上文件类型是文件的一种属性信息,不能通过文件的扩展名来区分文件类型 普通文件 - 目录文件 d 管道文件 p 链接文件 l 设备文件(字符设备文件c、 块设备文件b、 套接字s) dir:目录文件 main.c:普通文件 2、文件的访问权限: r 读权限 w 写权限 x 普通文件...
2020-04-09 12:07:46
1041
原创 【MySQL】DCL语句及练习
SQL语句主要有三个部分构成: 一、DDL:数据定义语言 定义(表的结构、库的结构、视图的结构…) *语句:* 1、库结构: (1) 添加一个库 create create database CY1212; (2) 删 ...
2020-04-09 11:01:57
1084
原创 【MySQL】DML语句
SQL:结构化查询语言 DB:datebase 数据库 SQL语句主要有三个部分构成:DDL DML DCL 一、DDL:数据定义语言 二、DML:数据操作语言 (insert delete update select) 1、添加数据 insert insert into stu values("001","zhangsan","man",20); insert into stu(id,nam...
2020-03-08 23:01:36
191
原创 【MySQL】DDL语句
SQL:结构化查询语言 DB:datebase 数据库 SQL语句主要有三个部分构成: 一、DDL:数据定义语言 定义(表的结构、库的结构、视图的结构…) 1、库结构: (1) 添加一个库 create create database CY1212; 为了避免创建时库名重复,库名前加(if not exit) create database if not exit...
2020-03-08 22:56:53
188
原创 指针与数组 --- C语言
概念: 指针:指针就是地址 数组:存储多个相同类型数据的集合 注意: 数组越界问题 数组作为参数传递,不仅需要地址,还需要长度 指针: int a = 10; int b = 20; int *p; // 定义整型指针( 地址) 变量 p = &a; //”&” 取地址符,&a 取a 的地址 int *p1 = &...
2020-03-08 18:34:31
261
原创 【Linux】静态库与共享库
库文件:特定功能的实现,为用户提供一些调用接口 libc : printf scanf malloc free stdio.h malloc.h 函数声明 编译 连接 符号解析 找到符号对应的定义位置 数据结构 顺序表 链表 队列 栈 二叉树 C++ STL标准模板库 容器 1、静态库,动态库在Windows和Linux下的区别: 静态库 ...
2019-05-11 16:16:01
225
原创 结构体大小-C语言
内存对齐:各种数据存放的地址要能够整除该数据本身的字节数 char可存放在任意地址,short存放在能被2整除的地址,int存放在能被4整除的地址… 1、先将每个成员的字节数写出,然后从第二个成员开始, 将前面成员的总字节数补齐成当前字节数的倍数 2、结构体的总大小,一定要能整除单个成员最大类型的大小 //结构体大小 struct A { int a; int b; }; struct B ...
2019-03-17 18:32:52
305
原创 二维数组-C语言
1.二维数组定义时为变量(int brr[3][4]表示行为3列为4的数组)。 使用时为下标(brr[1][2]表示二维数组中1行2列的数。 注:二维数组中行优先 int main() { int brr[3][4]; int crr[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}}; int drr[3][4] = {1,2,3,4,5,6,7,8,9,...
2019-03-02 19:22:22
549
原创 const的使用 --- C语言
const的用法: 定义常变量,不允许修改其值(只可读) eg:int const ca=10;//const修饰ca,ca的值不能改变,为定值。 1.基本的数据类型对于const是透明的; (1)int const ca=0;//ca和cb是等价的;const修饰ca和cb; const int cb=0; const int cb=10; cb=20//error 不可...
2019-02-28 15:09:48
156
原创 字符串的常见用法 --- C语言
*1、字符串:用""包括的字符序列,末尾自带’\0’。只要以’\0’结尾的字符序列都是字符串(只要遇到’\0’就认为字符串已经结束) 2、0:’\0’,false,NULL 3、重要的等式:str[i] == (str+i) //字符串的复制 //desstr = srcstr(将左值赋值给右值) void Mystrcpy1(char *desstr,char *srcstr) { int i...
2019-02-25 18:35:17
529
原创 If的用法 --- C语言
if的用法: 1、若表达式1为真,执行语句块1;语句块2无论表达式1是否为真都执行 2、若表达式1为真,执行语句块1,否则执行语句块2 eg://a,b,c从大到小输出 //void 没有,返回值,参数列表 void Show(int a,int b,int c) { int tmp; if(a < b) { tmp = a; a = b; b = tmp; }//a >= b if...
2018-11-27 11:15:11
899
原创 浮点数精度问题 --- C语言
浮点数精度问题 例子: #include “stdio.h” int main() { float a=123456789; printf("%f",a); } 结果: 说明浮点数存在误差问题–浮点数的误差EPS //方程的根有两个,不能返回 void Fun(double a,double b,double c)//todo,if else if else { #define EPS ...
2018-11-27 10:54:34
351
原创 字符串问题 --- C语言
//字符串:利用“”包括起来的一系列字符。字符串的末尾有个’\0’, //’\0’是字符串结尾标记,如果没有’\0’则不是字符串 int main() { char arr[5] = {‘a’,‘b’,‘c’,‘d’,‘e’};//不是字符串 char brr[5] = {‘a’,‘b’,‘c’,‘d’};//0,’\0’//是字符串 char crr[] = {‘a’,‘b’,‘c’,‘d’...
2018-11-02 14:36:20
166
原创 指针的算数运算 --- C语言
1、指针±1,加或者减一个指向的单元格 2、指针加法(减法)需要调整,调整的权重为sizeof(指针去除一个*)* 3、指针+指针 非法,没有意义 4、指针-指针:结果为间隔的单元个数,可正可负, (1)加粗样式、算出间隔的字节数, (2)除以调整权重 总而言之:指针的算术运算都需要调整 int main()** **{ int p = (int )0x2010; printf("%x\n",p...
2018-11-02 14:27:14
337
原创 习题(求n进制)--- C语言
eg1:假设在n进制下,下面的等式成立,567456=150216,n的值是(18) 解:567456=(5n ^ 2+6n+7)*(4n ^ 2+5n+6) =20n ^ 4+49n ^ 3+88n ^ 2+71n+42 150216 =n ^ 5+5n ^ 4+2n ^ 2+n+6 可得出:20n ^ 4+49n ^ 3+88n ^ 2+71n+42 = n ^ 5+5n ^ 4+2n ^ 2...
2018-10-29 15:31:15
379
原创 C语言习题: 给一个不多于5位的正整数,要求: (1)求出它是几位数 (2)分别输出每一位数字 (3)按逆序输出各位数字,例如原数为321,应输出123
4.9给一个不多于5位的正整数,要求: (1)求出它是几位数 (2)分别输出每一位数字 (3)按逆序输出各位数字,例如原数为321,应输出123 代码: #include “stdio.h” int count(int n) { if(n==0) { return 1; } { int tmp=0; while(n!=0) { tmp++; n/=10; return tmp; } } } voi...
2018-10-17 16:53:52
5398
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅