自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 软件测试(黑盒测试、白盒测试、灰盒测试)

(2)边界值法边界值法具体做法,就是找到有效数据额无效数据之间的分界点,以及其两边的点进行测试,一般与等价类划分法共同使用。举例:(3)决策表法决策表法具体做法,就是把作为条件的所有输入的各种组合值和它对应的输出值都罗列出来形成表格适用场合:适用于输入输出比较多,且输入之间和输出之间相互制约的条件比较多。举例:对学生输入的分数进行评级,其中90< x <=100时A,80<= x <=89为B,70<= x <=79为C,60< x <=69为D,0<= x <=60为E。输入分数要求

2023-09-01 10:05:33 1475

原创 Go语言之反射(反射的简单使用,原理)

Go语言反射的使用,反射如何获取到类型信息,如何修改变量值的原理

2023-04-21 22:12:44 634

原创 Go语言之接口(接口实现条件,使用,原理,类型断言)

Go语言之接口(接口实现条件,使用,原理,类型断言)

2023-03-17 17:10:27 3953

原创 Go语言之函数(定义、可变参数、匿名函数、error、panic、recover、计算函数运行时间)

Go语言函数定义、可变参数、匿名函数、error、panic、recover、计算函数运行时间

2023-03-14 15:01:21 476

原创 Go语言之defer(原理、常见的坑)

defer的原理、defer的坑

2023-03-13 19:05:57 3187

原创 Go语言之闭包

Go语言之闭包(闭包原理)

2023-03-13 15:46:34 1067

原创 Go语言之条件判断循环语句(if-else、switch-case、for、goto、break、continue)

if-else、switch-case、for、goto、break、continue

2023-03-10 16:56:52 1583

原创 Go语言容器之map、list和nil

Go语言map、list、nil的使用,以及make和new的区别

2023-03-10 15:49:19 841

原创 Go语言容器之数组和切片

Go语言容器之数组和切片(数组、切片、数组与切片的区别)

2023-03-09 18:40:01 334

原创 Go之入门(特性、变量、常量、数据类型)

Go之入门(特性、变量、常量、数据类型、类型别名和类型定义的区别)

2023-03-08 14:32:15 375 2

原创 Linux之高级IO

文章目录一、五种典型IO模型1.阻塞/非阻塞IO/信号驱动IO/异步IO典型的四种IO模型2.阻塞/非阻塞、同步/异步3.多路转接IO(即多路复用)二、多路转接的三种实现模型1.select模型2.poll模型3.epoll模型一、五种典型IO模型种类:阻塞IO、非阻塞IO、信号驱动IO、异步IO、多路转接IO。1.阻塞/非阻塞IO/信号驱动IO/异步IO典型的四种IO模型IO过程:发起IO调用,等待IO条件就绪,然后将数据拷贝到缓冲区中进行处理。阻塞IO:为了完成IO,发起调用,若当前不

2020-06-12 16:05:04 355

原创 Linux之网络基础之TCP/IP五层参考模型

TCP/IP五层参考模型:应用层、传输层、网络层、数据链路层。文章目录一、应用层1.自定制协议2.知名协议3.给服务端发送请求4.http协议5.编写一个简单的HTTP服务器:6.http和https二、传输层1.UDP协议2.TCP协议3.面向连接(TCP)4.面向字节流(TCP)三、网络层四、数据链路层一、应用层应用层是负责应用程序之间的数据沟通(应用层的协议是程序员自己定义的。)1.自定制协议网络版计算器:客户端将两个数字和一个运算符传输给服务端,然后服务端进行计算,返回给客户端.

2020-06-11 21:18:48 753

原创 Linux之网络基础之套接字编程

通信中两端主机:客户端和服务端。服务端:被动接受请求的一端。客户端:主动发送请求的一端。永远都是客户端主机现象服务端发送请求。传输层有两个协议:tcp、udp文章目录一、socket套接字编程1.socket接口的介绍2.字节序转换接口二、UDP网络编程流程的实现1.UDP网络通信程序编程流程:2.udpsocket类实现套接字编程3.udp服务端程序4.udp客户端程序三、TCP网络编程流程的实现1.TCP网络通信程序编程流程2.接口介绍3.tcpsocket类实现套接字编程4.tcp服务端程.

2020-06-08 13:40:17 250

原创 Linux之网络基础

文章目录一、网络基础1.网络的分类二、网络中的地址管理1.IP地址2.MAC地址三、网络协议1.协议分层2.网络通信传输中数据的封装与分用四、网络字节序一、网络基础路由器的产生伴随着局域网的产生。1.网络的分类以覆盖范围进行划分:局域网(LAN,计算机数量多,把分布在数公里范围内不同物理位置的计算机设备通过交换机和路由器连接在一起。) 、城域网(MAN,一个城市范围内所建立的计算机通信网。)、广域网(WAN,将远隔千里的计算机都连在一起。)国内的:互联网。 全球的:因特网。局域网的分类:以

2020-06-06 17:08:07 306

原创 Linux之多线程

文章目录一、线程概念1.多进程与多线程进行多任务处理的优缺点分析2.多进程与多线程进行多任务处理的优势在哪?3.多线程与多进程二、线程控制1.线程创建2.线程终止3.线程等待4.线程分离三、线程安全1.线程安全的概念和实现2.互斥的实现(互斥锁)3.同步的实现(条件变量)4.生产者与消费者模型5.信号量(POSIX)6.读者写者模型-----读写锁7.线程池8.线程安全的单例模式一、线程概念在传统操作系统中,pcb就是进程,线程有个tcp。但在Linux下,因为线程是通过进程pcb描述实现的,因为L

2020-06-05 16:21:03 447

原创 Linux之系统编程之进程信号

文章目录一、信号1.信号是什么2.信号的生命周期3.信号的种类4.信号的产生5.信号在进程中注册6.信号在进程中注销(修改未决信号集合)7.信号的处理(信号的递达)8.自定义处理方式的信号捕捉流程8.信号阻塞(生命周期之外的动作)二、竞态条件1.函数的可重入和不可重入2.SIGCHLD信号(非可靠信号,位图中只标记了一次)一、信号1.信号是什么信号是一个软件中断,通知进程发生了某个事件,中断当前进程正在执行操作,去处理这个事件。信号就是代表着事件。信号有多种,各自表示不同的事件。2.信号的生

2020-06-04 16:20:36 353

原创 Linux之系统编程之进程通信

进程通信:操作系统为用户提供的几种进程间通信方式(管道、共享内存、消息队列、信号量)为什么操作系统要提供进程间通信方式给用户?-----因为进程之间具有独立性(每个进程只能访问自己的虚拟地址,无法直接沟通,因此操作系统要提供公共媒介)。通信场景:数据传输/数据共享/进程控制。system V标准的共享内存,消息队列,信息量只适用于uinux。posix标准的共享内存,消息队列,信号量可跨平台。进程间通信目的:①数据传输:一个进程需要将它的数据发送给另一个进程。②资源共享:多个进程之间共享相同.

2020-06-04 14:55:29 229

原创 Linux之系统编程之基础IO

文章目录一、标准库IO1.回顾函数2.注意事项二、系统调用接口三、文件描述符四、重定向五、文件系统的基本认识1.磁盘与文件2.软链接/硬链接一、标准库IO1.回顾函数①fopen(char* filename, char* mode);r 只读r+ 可读可写w 只写w+ 可读可写a 追加只写a+ 追加可读可写②fread(char* buf, size_t bsize, size_t nnum, FILE* fp);③fwrite(char* dat

2020-06-03 16:41:52 309

原创 Linux之系统编程之初识进程

文章目录一、进程概念1.什么是进程2.如何查看进程3.进程状态3.僵尸进程4.特殊进程5.进程的优先级6.环境变量7.程序地址空间(进程的虚拟地址空间).8.内存管理二、进程控制1.进程创建2.进程终止3.进程等待4.程序替换一、进程概念1.什么是进程进程就是指运行中的程序。在操作系统来看,进程是对一个运行中程序的描述(PCB),Linux下,这个pcb实际是一个结构体struct task_struct{,};。(站在操作系统角度,进程就是pcb)任务管理器中的后台进程叫批处理进程,有的操作系统

2020-06-03 14:46:52 312

原创 C++之单例模式(饿汉模式、懒汉模式)

文章目录一、设计模式1.什么是设计模式2.设计模式目的3.设计模式的种类二、单例模式1.饿汉模式2.懒汉模式一、设计模式1.什么是设计模式设计模式是一套被反复使用的、多数人知晓的、经过分类的、代码设计经验的总结。2.设计模式目的为了代码可重用性、让代码更容易被他人理解、保证代码可靠性。3.设计模式的种类单例模式工厂模式:通过对象构造工厂,创建相应的对象实例。用一个方法来代替new关键字。代理模式:对代理类进行动态的扩展。为其他对象提供一个代理,以控制对当前对象的访问。适配器模式

2020-06-02 16:29:48 299

原创 C++之智能指针

在C++之异常中我们了解了异常有关的问题。提到了异常安全的问题。本篇博客就是学习解决异常安全问题的方法------智能指针。文章目录一、内存泄漏(复习)1.内存泄漏的定义2.内存泄漏的危害3.内存泄漏的分类二、RAII1.RAII基本介绍2.SmartPtr的方法解决上述代码问题三、智能指针的版本及发展历史1.C++98------auto_ptr2.C++11------unique_ptr3.C++11------shared_ptr4.C++11------weak_ptr(解决循环引用)四、智能指

2020-06-01 00:31:04 383

原创 C++11之异常

C语言处理错误的方式:(1)终止程序。如assert、exit,缺陷:用户难以接受。例如:发生了内存错误,除数为0错误时就会终止程序。(2)返回错误码。缺陷:需要程序员自己去查找对应的错误。例如:系统的很多库接口函数都是通过把错误码传到errno中,表示错误。(3)C语言标准库中有setjmp和longjmp组合。文章目录一、C++异常概念1.关键字2.异常终止程序执行3.重新抛异常二、异常安全三、异常规范四、自定义异常体系五、C++标准库的异常体系六、异常的优缺点1.异常的优点2.异常的缺点.

2020-05-28 23:03:21 552

原创 C++之C++11

文章目录一、默认成员函数的控制1.显式缺省函数2.删除默认函数二、final和override三、变量的类型推导四、范围for五、初始化列表六、右值引用七、lambda表达式一、默认成员函数的控制1.显式缺省函数在C++11中,可以在默认函数定义或者声明时加上=default,从而显式的知指示编译器生成该函数的默认版本,用=default修饰的函数称为显式缺省函数。class A{public: A(int a)//有了该构造函数,编译器不会自动生成默认的构造函数 :_a(a) {}

2020-05-27 17:39:56 1152

原创 C++之关联式容器(unordered_map/unordered_set)和哈希表

文章目录一、unordered系列容器和map、set1.unordered_map的使用2.unordered_set的使用3.unordered系列容器与map和set的效率对比二、哈希1.概念2.哈希函数3.哈希冲突一、unordered系列容器和map、set1.unordered_map的使用函数声明功能介绍bool empty() const检测unordered_map是否为空size_t size() const获取unordered_map的有效元素个数

2020-05-22 16:05:11 472

原创 C++之关联式容器(map/multimap、set/multiset、AVLTree/RBTree)

STL六大组件中的容器分为序列式容器和关联式容器,在前面的C++之序列式容器(vector、list、deque、string)中我们了解了序列式容器,在本篇博客中,将介绍容器中的关联式容器。树型结构的关联式容器主要有四种:map、set、multimap、multiset。关联式容器也是用来存储数据的,与序列式容器不同的是,其里面存储的是<key, vallue>结构的键值对(键值对:是用来表示具有一一对应关系的一种结构,该结构中一般只包含两个成员变量key和value,key代表键值,.

2020-05-18 15:56:49 332

原创 C++三大特征之多态(虚函数、抽象类)

面向对象语言三大特征:封装、继承和多态。文章目录一、多态的概念1.多态的定义2.多态的构成条件二、虚函数1.虚函数的重写2.多态(虚函数重写)的例外3.抽象类(接口类)三、多态的原理1.多态类的对象模型2.多态的原理四、多态的动态绑定与静态绑定1.多态的静态绑定2.多态的动态绑定五、重载、重定义(隐藏)和重写(覆盖)的对比一、多态的概念1.多态的定义多态就是多种形态。是去完成某个行为,当不同的对象去完成时会产生出不同的状态。多态是在不同继承关系的类对象,去调用同一函数,产生了不同的行为。比如.

2020-05-14 14:39:20 406

原创 C++三大特征之继承(含菱形继承,菱形虚拟继承)

面向对象语言的三大特征:封装、继承、多态。文章目录一、继承的概念及定义1.继承的概念2.继承基类成员访问方式的变化3.父类和子类之间的赋值4.继承中的作用域5.隐藏(重定义)6.派生类的默认成员函数二、继承与友元、静态成员1.继承与友元2.继承与静态成员三、菱形继承及菱形虚拟继承1.单继承2.多继承3.菱形继承4.菱形继承造成的问题5.解决菱形继承造成的问题的方法和原理四、继承和组合一、继承的概念及定义1.继承的概念继承是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特.

2020-05-12 16:57:47 294

原创 C++之动态内存管理(new、delete、operator new、operator delete、new的定位表达式)

C语言中的动态内存函数有malloc、free、calloc、realloc四个函数,详细介绍请看C语言之动态内存管理(动态内存函数) 。文章目录一、C/C++内存分布二、C++动态申请内存1.对于内置类型的操作2.对于自定义类型的操作3.operator new 与 operator delete函数4.new和delete的实现原理5.new的定位表达式5.malloc/free和new/delete的区别三、内存泄露1.内存泄漏的定义2.内存泄漏的危害3.内存泄漏的分类4.如何避免一、C/C+.

2020-05-11 17:10:50 233

原创 C++之适配器(stack、queue、priority_queue)

适配器也是STL六大组件之一。文章目录一、适配器1.适配器定义2.三种顺序适配器二、stack1.stack的定义2.stack的使用适配器stack的模拟实现三、queue1.queue的定义2.queue的使用3.适配器queue的模拟实现四、priority_queue1.priority_queue的定义2.priority_queue的使用3.适配器priority_queue的模拟实现一、适配器1.适配器定义适配器是一种设计模式(设计模式使一套呗反复使用的、多数人知晓的、经过分类编.

2020-05-11 14:27:42 232

原创 C++之序列式容器(vector、list、deque、string)

STL六大组件:仿函数、空间配置器、算法、容器、迭代器、配接器。本节内容介绍的是STL六大组件中的容器,容器分为序列式容器和关联式容器,而本节内容主要介绍序列式容器。文章目录一、vector1.vector的定义及使用2.vector的模拟实现3.resize和reverse的区别二、list1.list的定义及使用2.list的模拟实现三、deque1.deque的定义及使用四、strin...

2020-05-09 21:12:29 450 2

原创 C++之模板

模板分为函数模板和类模板两种文章目录一、函数模板1.函数模板的概念及格式2.函数模板的原理3.函数模板的实例化4.函数模板的匹配二、类模板1. 类模板的实例化三、模板参数的分类1.类型形参2.非类型形参四、模板特化1.概念2.类模板特化五、模板分离编译1.分离编译概念2.模板的分离编译六、模板总结1.优点2.缺点一、函数模板#include <iostream>using...

2020-05-05 16:57:24 166

原创 C++之类和对象

C++是基于面向对象的,关注的是对象。类的格式是class Name{};C++中class和struct的区别:C++需要兼容C语言,所以C++中struct可以当成结构体去使用。另外,C++中可以用来定义类。和class定义类是一样的。区别是struct中的成员函数和成员变量默认访问权限是public,class中的成员函数和成员变量默认访问权限是private。文章目录一、类的访问...

2020-05-04 16:10:04 249 1

原创 C++之引用及其与指针的区别

一、基本概念及使用1.引用的基本概念和基本使用定义:引用不是新定义一个变量,而是给已存在的变量取一个别名,编译器不会为引用变量开辟空间,它和它引用的变量共用同一块内存空间。特性:① 引用在定义时必须初始化。② 一个变量可以有多个引用。③ 一个引用一旦引用了一个实体,再也不能引用其他实体。#include <iostream>using namespace std;...

2020-03-01 17:32:36 217 2

原创 C++之入门(命名空间、输入输出、缺省参数、函数重载)

一、命名空间为了解决C语言的命名冲突,C++引入命名空间。命名空间的定义:需要使用namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{}中的内容即是命名空间的成员。如下例所示:#include <iostream>namespace sheena{ int printf = 20; }int main(){ printf("%d\n", s...

2020-03-01 16:02:49 249

原创 数据结构之八种排序方式

排序的概念:所谓排序,就是使一串数据,按照其中的某个或某些关键字的大小,递增或递减的排序的操作。分为内部排序和外部排序两种。内部排序:数据元素全部都放在内存中的排序。外部排序:数据元素太多不能同时放在内存中,根据排序过程的要求不能在内外存之间移动数据的排序(在磁盘中)。常见的排序算法有八种:直接插入排序、希尔排序、直接选择排序、堆排序、冒泡排序、快速排序、归并排序和计数排序。...

2020-01-23 01:24:58 2434

原创 数据结构之堆及实现其基本操作

1.基本概念及性质概念:如果有一个关键码的集合K = (k0, k1, k2, …, kn - 1),把它的所有元素按完全二叉树的顺序存储方式存储在一个一维数组中,并满足:Ki <= K2i + 1且Ki <= K2i + 2(i = 0, 1, 2, …),则称为小堆,根节点最小的堆叫做最小堆或者小根堆。若所有元素满足:Ki >= K2i + 1且Ki >= K2i ...

2020-01-17 10:55:13 224

原创 数据结构之树和二叉树(构建、先序、中序、后序和层序遍历)

1.树概念:树是一种非线性的数据结构,它是由n个有限结点组成一个具有层次关系的集合。特点:每个结点有零个或多个子结点;没有父结点的结点称为根结点;每一个非根结点有且只有一个父结点;除了根结点外,每个子结点可以分为多个不相交的子树。树的结构如下图所示:节点的度:一个节点含有的子树的个数称为该节点的度。上图节点A的度为4。叶子节点:度为0的节点称为叶子节点。上图叶子节点...

2020-01-16 15:57:56 391

原创 数据结构之栈和队列及其实现

1.栈概念:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作,进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守先进后出原则。入栈和出栈示意图(1.)实现栈需要的接口// 静态栈的结构typedef int STDataType;#define N 10typedef struct Stack{ STDataType _a[N]; in...

2020-01-15 19:15:31 246 1

原创 数据结构之顺序表、链表及其实现(线性表)

1.线性表概念:是数据结构的一种,一个线性表是n个具有相同特性的数据元素的有限序列。特征:① 集合中必存在唯一的一个“第一元素”。 ② 集合中必存在唯一的“最后元素”。 ③ 除最后一个元素之外,均有唯一的后继(后件)。 ④ 除第一个元素之外,均有唯一的前驱(前件)。常见的线性表:顺序表、链表、栈、队列、字符串…线性表在逻辑上是线性结构,也就是说连续的一条直线。但是在物理结构上并不一定是连...

2020-01-14 19:51:00 329

原创 C语言之程序环境、编译过程、宏与函数

一、程序编译过程1.程序编译过程组成一个程序的每个源文件通过编译过程分别转换成目标代码。每个目标文件由链接器捆绑在一起。形成一个单一而完整的可执行程序。链接器同时也会引入标准C函数库中任何被程序所用到的函数,而且它可以搜索程序库,将其需要的函数也链接到程序中。2.编译过程预处理,选项gcc -E test.c -o test.i预处理完成之后就停下来,预处理之后产生的结果都放...

2020-01-13 19:49:57 332

空空如也

空空如也

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

TA关注的人

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