自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 删除字符串字符,使输出结果不包含回文串

回文串的判定条件:1、相邻两个字符相同;2、当前字符的前后两个字符相同。1、给定一个字符串,删除其中的回文串,使打印的字符串不包含回文字符。2、给定一个字符串,删除部分字符串,使输出字符串中不包含回文串。

2023-10-20 16:11:16 178

原创 性能测试记录

性能测试分类-指标-目标

2023-04-26 16:18:20 682

原创 go/java/C++覆盖率工具原理汇总学习记录

常用语言的几种覆盖率工具作用原理

2023-04-23 18:28:39 1036

转载 Python 常用第三方包介绍及相关使用方法汇总

转自:https://www.cnblogs.com/wf-linux/archive/2018/08/01/9400354.html

2022-02-08 15:33:47 308

转载 接口测试要测试什么?怎么测?

转载: https://www.cnblogs.com/chen-xia/p/11526498.html

2021-11-22 17:25:13 103

原创 野指针的三种类型及常见问题注意点

野指针的三种类型1)指针变量没有被初始化。任何指针变量刚被创建时不会自动成为NULL指针,它的缺省值是随机的,它会乱指一气。所以,指针变量在创建的同时应当被初始化,要么将指针设置为NULL,要么让它指向合法的内存。char *p; //此时p为野指针2)指针p被free或者delete之后,没有置为NULL,让人误以为p是个合法的指针。char *p=new char[10]; //指向堆中分配的内存首地址,p存储在栈区cin>> p;delete []p; //p重新变为野指针

2021-10-26 10:40:21 534

转载 cookie和session介绍

转自:https://www.cnblogs.com/l199616j/p/11195667.html

2021-09-17 17:33:13 83

原创 进程和线程区别和联系

定义进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源关系一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行。相对进程而言,线程是一个更加接近于执行体的概念,它可以与同进程中的其他线

2021-09-17 16:59:20 208

原创 堆和栈的区别

1、申请方式stack:由系统自动分配。 例如,声明在函数中一个局部变量 int b; 系统自动在栈中为b开辟空间heap:需要程序员自己申请,并指明大小,在c中malloc函数如p1 = (char *)malloc(10);在C++中用new运算符如p2 = new char[10];但是注意p1、p2本身是在栈中的。2、申请后系统的响应栈:只要栈的剩余空间大于所申请空间,系统将为程序提供内存,否则将报异常提示栈溢出。堆:首先应该知道操作

2021-09-08 18:08:50 151

原创 HTTP各版本区别

目录httphttp1.0http1.1http2.0多路复用 (Multiplexing)二进制分帧首部压缩(Header Compression)服务端推送(Server Push)HTTP1.0 / 1.1 / 2.0 的区别HTTPSHTTP和HTTPS的区别httpHTTP(超文本传输协议,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。是用于从W

2021-09-06 16:39:35 1741

原创 Mac安装brew报错汇总

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

2020-11-04 17:44:50 465

原创 面试-百度——搜索架构部——测试开发岗

1、自我介绍2、技能提问 awk,sed命令,文件处理,日志过滤相关,如t.txt,统计文件中 hello 出现的次数,txt文件总共行数 python 数据类型有哪些,列表元素增删,request模块介绍 C/C++ 什么是多态,深拷贝浅拷贝的了解并实现一个例子 网络七层协议,tcp建立连接断开连接过程及处于那一层,http处于那一层 http和https区别,get和post区别...

2020-02-28 17:57:27 1134 1

原创 C/C++常量指针和指针常量——const修饰指针

首先明确两个概念:指针是一个变量,这个变量指向一个内存地址,这个变量的值就是这个地址,访问这个地址(*p),即可得到指针指向的内容在C/C++里,变量名前面的,除修饰符外,都是变量类型一般const修饰指针,常见的就下面两种形式:int * const p1;int const * p2;此时P1是一个常量指针,const修饰的是P1这个变量的类型int *,常量指针的指向不可...

2020-02-24 10:46:58 296

原创 数据结构常见的几种排序算法实现

冒泡排序void BubbleSort(int* arr, int len) { assert(arr); int i = 0; int j = 0; for (i = 0; i < len - 1; i++) { bool flag = true; for (j = 0; j < len - 1 - i; j++) { if (a...

2020-01-29 21:55:46 210

转载 http协议状态码

1**(信息类):表示接收到请求并且继续处理100——客户必须继续发出请求101——客户要求服务器根据请求转换HTTP协议版本2**(响应成功):表示动作被成功接收、理解和接受200——表明该请求被成功地完成,所请求的资源发送回客户端201——提示知道新文件的URL202——接受和处理、但处理未完成203——返回信息不确定或不完整204——请求收到,但返回信息为空205—...

2018-09-06 11:38:46 351 1

原创 面试-百度-内容生态质量部-测试开发工程师-一面

1.自我介绍 2.讲项目(信贷方面)因为之前工作是信贷方面测试工作,所以一开始先从项目问起,大体业务流程以及自己负责测试部分,讲完之后,从中挑几个点深究,讲细节,了解是不是真的熟悉项目 3.网络方面东西,先问了http和https,问有了解吗,我大概讲了一下,还有get和post,cookie和select 4.linux,进程和线程讲一下,我记不大清,大概说了一下就换下一个问题了,然后问了...

2018-09-04 22:45:08 1065

原创 链表面试题之复杂链表的复制

我们常用的链表基本都是单链表和双向链表,两种链表不同在于双向链表比单链表多了一个指向当前节点的前一个节点的指针域。 而复杂链表,相比单链表多了一个指向任意位置的随机域。复杂链表的结构如下: struct ComplexNode { int _data; ComplexNode* _next; ComplexNode* _rando

2017-07-23 15:05:51 487

原创 链表面试题之判断链表是否带环?若带环求环的长度?若带环求环的入口点?

判断链表是否带环 判断一个链表是否带环我们一般采用快慢指针法。 即,一个慢指针一次走一个节点,一个快指针一次走两个节点 若链表带环,则快指针始终不为空,快慢指针必会在慢指针进入环之后的半圈内相遇。 若不带环,则快指针走到头时为空。 看代码实现 // 两指针相遇时说明带环,返回相遇节点,否则返回空 Node* HasCircle(Node* pHead)

2017-07-23 14:19:11 732

原创 链表面试题之合并两个有序链表

关于合并两个有序的链表,假定该链表为升序排列,排列后的新表依旧升序。以下提供两种方法进行排列。创建新节点为空,依次后续插入法 Node* MergeTwoList1(Node* pHead1, Node* pHead2) { // 先处理任意一个链表为空的情况 if (pHead1 == NULL) return pHead2

2017-07-23 09:59:58 591

原创 创建守护进程为何fork两次

我们先来了解一下什么是守护进程?守护进程 守护进程也称精灵进程(Daemon) 它是运⾏在后台的⼀种特殊进程。它独⽴于控制终端并且周期性地执⾏某种任务或等待处理某些发⽣的事件。守护进程是⼀种很有⽤的进程。Linux的⼤多数服务器就是⽤守护进程实现的。⽐如, Internet服务器inetd, Web服务器httpd等。同时,守护进程完成许多系统任务。⽐如,作业规划进程crond等。

2017-06-20 10:38:42 1054 1

原创 子进程的异步等待方式——SIGCHLD信号

僵尸与孤儿进程 先来学习两种进程: 孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工作。 僵尸进程:一个进程使用fork创建子进程,如果子进程退出,而父进程并没有调用wait或waitpid获取子进程的状态信息,那么子进程的进程描述符仍然保存在系

2017-06-18 10:16:10 1215

原创 模拟实现sleep(普通版本以及规避竞态条件的实现与对比)

几个重要的函数 实现代码之前,先来学习几个函数。sigaction : 该函数可以读取和修改与指定信号相关联的处理动作。int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); 返回值 : 调⽤成功则返回0,出错则返回- 1。 sig : sig是指定信号的编号。 act : 若

2017-06-15 14:59:26 420

原创 死锁的产生以及避免原理和算法

死锁 是指多个并发进程在运行过程中因竞争资源而造成的一种僵局,当进程处于这种僵持状态时,若无外力作用,这些进程都无法向前推进。并发性 : 指两个或多个事件在同一时刻发生并行性 : 指两个或多个事件在同一时间间隔内发生 来看两种典型的死锁情形: 如果同⼀个线程先后两次调⽤lock,在第⼆次调⽤时,由于锁已经被占⽤,该线程会挂起等待别的线程释放锁,然⽽锁正是被⾃⼰占⽤着

2017-06-08 14:14:50 3104 1

原创 银行家算法避免死锁问题

银行家算法(Banker’s Algorithm)是一个避免死锁(Deadlock)的著名算法,是由艾兹格·迪杰斯特拉在1965年为T.H.E系统设计的一种避免死锁产生的算法。它以银行借贷系统的分配策略为基础,判断并保证系统的安全运行。背景知识 在银行中,客户申请贷款的数量是有限的,每个客户在第一次申请贷款时要声明完成该项目所需的最大资金量,在满足所有贷款要求时,客户应及时归还。银行家在客户申

2017-06-08 13:17:24 3333

原创 Linux下使用gdb调试多进程与多线程程序

常见gdb基本指令 在Linux环境下,我们使用gdb对代码进行调试。下面先来看看常用的gdb调试指令:list/l ⾏号 —> 显⽰binFile源代码,接着上次的位置往下列,每次列10⾏。list/l 函数名 —> 列出某个函数的源代码。r/run —> 运⾏程序。s或step —> 进⼊函数调⽤breaktrace(或bt) —> 查看各级函数调⽤及参数info( i) loca

2017-06-08 00:36:33 511

原创 B-树的基本概念以及代码实现

B-树引入当我们从一堆数据里查找某个数据的时候,常使用如下方法:数据杂乱无规律—>线性搜索 —-> O(N)数据有序—->二分查找—->O(log2N)—>最差情况下退化成单只树O(N)二叉搜索树/AVL树/红黑树—->O(log2N) 其中二叉搜索树、 AVL树、 红黑树都是动态查找树, 典型的二叉搜索树结构,查找的时间复杂度和树的高度相关O(log2N)。 这几种

2017-06-03 21:56:44 3131

原创 二叉树基本操作以及面试题

1.二叉树的创建2.二叉树的前序遍历——递归,非递归3.二叉树的中序遍历——递归,非递归4.二叉树的后序遍历——递归,非递归5.二叉树的层序遍历6.找双亲节点7.找孩子节点8.求第K层上的节点个数9.求叶子结点的个数10.二叉树的镜像11.节点的查找12.求树的高度13.构造函数14.拷贝构造函数15.赋值运算符重载16.析构函数

2017-05-10 15:51:55 457

原创 链表面试题——C语言

最近总结了一些有关用C语言实现单链表的面试题。代码如下: list.h文件——主要是条件编译以及各个函数的声明。#ifndef __LIST__#define __LIST__#include<stdio.h>#include<windows.h>#include<assert.h>typedef int DataType;typedef struct list{ struc

2017-04-12 19:01:16 547

原创 cd一个目录需要什么权限?显示其中文件呢?

首先进入用户目录cd ~,新建一个目录文件dir,并修改其权限掩码为000。mkdir dir chmod 000 dir如下图其中蓝色的表示文件名。来看一张图,了解一下文件名之前的这些标识符含义吧,以bit_code为例:可以看到,新建的dir目录对于所有用户都没有rwx的权限,那么现在,我们来cd一下dir看是否能够进去。毫无意外,无访问权限。 下面我给用户加上r读权限看是否可以访问
 还是

2017-04-01 14:28:00 4977

转载 Linux文件特殊权限之set位权限和粘滞位权限

http://www.it165.NET/os/html/201403/7460.html进程访问文件时的权限匹配机制:进程的发起者,作为进程的属主;而进程属主所属的基本组作为进程的属组; 进程在确定对文件的访问权限的时候,首先会去查看进程的属主和文件的属主是否一样,若一样,则运用该文件属主的权限,否则则检查进程的属主所属的组(用户可属于多个组),是否有其中之一与文件的属组匹配,若有,则运用该文件

2017-03-26 14:52:01 722

原创 Linux中关于find指令的用法以及whereis指令

初识Linux,感觉“哇塞好神奇。。。。。。”真的一点儿不夸张。 当你扔掉鼠标,拿一把称心如意的键盘来控制计算机的时候,那个feel,倍儿爽,想想都觉得帅到爆。当然,前提是你得能够熟练的运用Linux指令。 额,言归正传,我就想说说find指令的使用来着。以下所有命令用于CentOS6.5系统下。用户名为uu。 Linux下find命令在目录结构中搜索⽂件,并执⾏指定的操作。

2017-03-26 14:15:45 1274

原创 switch...case...和if...else...区别

switch 和 if 都是用来处理分支语句的,那么使用的时候,考虑到代码效率问题,就必须先来了解他们有什么区别。先来看看这两个语句的使用格式:if…else… if (表达式1) { 语句1; } else if (表达式2) { 语句2; } else if (表达式3) { 语句

2017-03-25 17:36:09 10115

转载 测试函数执行时间的8种方法——转

目前,存在着各种计时函数,一般的处理都是先调用计时函数,记下当前时间tstart,然后处理一段程序,再调用计时函数,记下处理后的时间tend,再tend和tstart做差,就可以得到程序的执行时间,但是各种计时函数的精度不一样.下面对各种计时函数,做些简单记录.   方法1,time()获取当前的系统时间,返回的结果是一个time_t类型,其实就是一个大整数,其值表示从CUT(Coordinate

2017-03-15 15:43:04 3806

原创 C++——多态总结

在博客多态&虚函数中主要对多态的一些基本概念和虚函数做了介绍,下面,我们来探究一下【虚表】。含有虚函数的类先来看看含有虚函数的类的大小吧!class B{public: virtual void Show() { cout << _b << endl; }public: int _b;}; 一眼看过去,这个类中只有一个int类型的变量_b,

2017-03-08 23:41:25 480

原创 C++——多态&虚函数

说到多态,就要先搞清楚对象的类型。对象类型分类 静态类型:对象声明时的类型,是在编译时确定的。 动态类型:目前所指对象的类型,是在运行时确定的。 具体看下面例子:class B{};class D :public B{};int main(){ D *d = new D; B *b = d; return 0;}多

2017-03-07 20:00:55 451

原创 C++——【继承】总结

C++语言三大特性:继承, 封装, 多态。 我们来看一下继承那点事儿。概念—— 继承机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能。这样产生新的类,称为派生类。继承呈现了面向对象程序设计的层次 结构,体现了由简单到复杂的认知过程。简单来说,继承最显著的特点就是:代码复用。比如有下面这样一个类:class Student

2017-03-07 18:08:49 598

原创 C语言实现通讯录系统——容量自增,文件版本

头文件maillist.h#ifndef _MAILLIST_H_#define _MAILLIST_H_#include#include#include#define INIT_MAIL_SIZE 1#define INC_SIZE 64#define FILE_NAME "maillistFile.txt"#pragma warning (disable:4996

2016-12-19 19:53:01 636

原创 C语言实现下三子棋

三子棋的代码我写了一个.h头文件,用于声明,两个.c文件,其中一个用于函数实现,一个用于测试。代码如下:Checkerboard.h文件:#define _CRT_SECURE_NO_WARNINGS 1#ifndef __CHESSBOARD_H__#define __CHESSBOARD_H__#include#include#include#includevoid

2016-12-09 16:08:33 550

原创 函数的栈帧结构

在地址空间中,为单个过程(我们暂且将这个过程理解为函数)分配的那部分栈就叫做栈帧。栈帧的最顶端以两个指针界定——帧指针和栈指针。简单来说,栈帧就是帧指针和栈指针之间的内容,即函数。每一个函数都有一个自己的栈帧结构,但是,在地址空间中,为单个过程(我们暂且将这个过程理解为函数)分配的那部分栈就叫做栈帧。栈帧的最顶端以两个指针界定——帧指针(寄存器ebp)和栈指针(esp)

2016-11-22 12:28:50 4002

原创 宏和函数的区别

1.代码长度不同。当运行程序时,在预处理阶段,宏代码被插入到程序中,使程序的长度大大幅度增长,如果,宏比较小的话还好,否则

2016-11-03 22:51:30 684

空空如也

空空如也

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

TA关注的人

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