- 博客(43)
- 收藏
- 关注

原创 VM虚拟机异常关机后再次登录显示系统繁忙怎么办?
上一次由于电脑卡了,在关闭虚拟机的时候卡住了,等再次登录的时候就显示系统繁忙无法登陆。 这个时候不要慌张,找到你当时安装虚拟机的文件夹Centos,打开文件夹,里面有一个.lck的文件夹,删除这个文件夹就可以了。 ...
2018-07-30 16:45:21
17981

原创 贪吃蛇小游戏(带BGM)
学习完链表之后,利用所学的知识写了一个史上最挫版的贪吃蛇,虽然想再提升一下,加了BGM(背景音乐)但游戏体验还是极差。等学习了图形界面之后再加上游戏界面之后应该游戏体验应该会提升一丢丢吧! 贪吃蛇游戏的主要要解决的问题:怎样控制蛇的移动蛇吃到食物后蛇的身子怎样加长蛇的活动区域在蛇的活动区域内怎样随机生成食物游戏的结束条件 主要要解决的就是这几个问题,那直接上代码,用代码来体现这几...
2018-07-18 17:32:58
5407
1

原创 探究PCB 的构成——task_struct结构体
一、进程控制块PCB概念: 进程控制块是操作系统核心的一种数据结构,主要用来表示进程的状态,它能够使程序成为一个能够独立运行的基本单位,并且可以并发执行的进程。也就是说,系统是根据PCB来对并发执行的进程进行控制和管理。PCB中通常存放着操作系统用于描述进程的情况和控制进程运行的全部信息。进程控制块中存放的信息进程标识符 内部标识符:操作系统为每一个子进程创建...
2018-06-25 21:04:18
6452

原创 时间复杂度和空间复杂度
度量算法的效率时就会提到时间复杂度和空间复杂度。在谈时间复杂度之前我们先介绍一个O渐进表示法。一、什么是O渐进表示法一个算法语句总的执行次数总是关于问题规模N的某个函数,记为f(N),N称为问题的规模。语句总的执行次数记为T(N),当N不断变化是,T(N)也在变化,算法执行次数的增长速率和f(N)的增长速率相同。则有T(N)=O(f(N)),称O(f(N))为时间复杂度O的渐进表示法。一般算法O(...
2018-05-25 15:45:32
2656
3
原创 【Selenium webdriver自动化测试入门】
Selenium webdriver自动化测试入门一、手工测试和自动化测试的区别在介绍selenium之前我们先要了解自动化测试和手工测试的区别以及优缺点是什么?什么样的项目适合做自动化测试?自动化测试比手工测试高大上?可以完全取代手工测试?手工测试依赖测试人员去手动执行测试用例,测试人员通过一系列的输入以及点击操作来验证程序是否能正确运行;自动化测试依赖测试人员编写的测试脚本,由代码来控制测试步骤,通过脚本的执行来验证程序的正确性。其实这样来看自动化测试和手工测试是由不同的执行对象来运行测试用例,只
2022-05-07 16:32:54
615
原创 Jmeter简单入门
Jmeter简单入门Jmeter是一个基于java开发的压力测试工具,其实最初是为测试Web应用程序而设计的,但后来扩展到其他测试功能。它可用于测试静态和动态资源、Web 动态应用程序的性能;Jmeter可以用来模拟服务器、服务器组、网络或对象上的巨大负载,以测试分析不同负载类型下它们的整体性能。一、安装JAVA JDK因为Jmeter是基于java的所以在安装Jmeter之前要下载对应版本的java JDK,Jmeter要求的java最低版本是java 8,可以向上兼容更高的版本。Java JDK
2022-04-14 11:23:47
1046
原创 使用unittest进行函数和类的单元测试
使用unittest进行函数和类的单元测试unittest是python模块中的一个单元测试框架,它里面包含了TestCase基类,TestCase基类可以用来新建测试用例,这个类中提供了众多的断言方法,可以使用断言来检查你编写的测试case中的一些假设条件是否成立。Python在unittest.TestCase类中供了很多断言方法。使用断言方法可以来检查你的case中假设应该满足的条件是否确实满足。如果该条件确实满足,你对程序行为的假设就得到了确认,可以确信其中没有错误。如果你认为应该满足的条件实际
2022-04-01 14:13:57
1872
原创 多线程
一、什么是线程???要了解什么是多线程那得先知道什么是线程? 所谓的线程就是程序里面的一个执行线路。或者说线程是一个进程内部的控制序列。其实线程是进程模拟的(Linux环境下)所以线程也叫做轻量级进程。二、线程VS进程线程与进程之间的联系 - 进程是资源分配的最基本单位 - 线程是系统调度的基本单位(CPU是以PCB为单位调度的) - 每一个进程中至少有一个线程 ...
2019-10-15 15:59:23
144
原创 C/C++面试语常见关键字
C语言中以功能有32个关键字(注意这个是针对C99而言的) C++中的关键字共有63个(针对C++98而言的) 常考的关键字:volatile的作用volatile的意思是易变的、不稳定的,volatile与const一样是一种类型修饰符,用它修饰的变量表示可以被某些编译器未知的因素更改,比如:操作系统、硬件或者其他线程等。volatile主要的作用来提醒编译器volatile所修饰的...
2018-09-03 11:29:42
941
原创 I/O文件操作
一、回顾之前在C语言中我们也接触到了一些文件操作的函数,因为这些函数都是对流操作的,绝大多数流都是完全缓冲的,读操作和写操作都是在缓冲区进行的,用于输出流的缓冲区只有当被写满的时候才会被舒心到设备或者文件。这样的效率很高。FILE*fp=fopen(const char*filename,const char*mode);//打开流 filename:文件名 mode:打开的方式int...
2018-08-26 19:43:34
276
原创 初识进程
一、进程的概念进程:程序的一次动态执行过程程序:为了完成特定任务的一系列指令的有序集合进程和程序的区别: 程序是静态的,进程是动态的一个程序可以对应多个进程,一个进成只能对应一个程序程序是由代码和数据组成的,但是进程就比程序更为复杂一点,组成进程的不止有代码和数据除此之外还有堆栈和PCB(进程控制块)进程的特点:动态性、并发性、独立性、制约性每一个进程都有自己的地址空间以及运行...
2018-07-31 09:45:39
333
原创 七大排序算法
一、排序算法的分类排序首先分为四种:插入排序选择排序交换排序归并排序 具体分类如下图所示: 二、直接插入排序思路:通过构建有序序列,当要插入第i个元素是,前面的array[0]、array[1]、array[2]….,array[i-1]已经有序,然后用array[i]和之前的有序序列中的数依次进行比较,选择合适的位置插入,然后将插入位置的数顺序往后移。 实现代码:...
2018-07-28 13:33:31
2795
原创 栈和队列面试题
1. 实现一个栈,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值)的时间复杂度为O(1)用两个栈实现思路:用两个栈来实现一个栈为普通栈,一个栈专门放最小值当普通栈要入的数据小于等于min栈的栈顶的时候两个栈同时入;反之如果大于的话min栈不入数据出栈的时候如果min栈中的数据等于普通栈中的数据,两个栈同时出,否则min栈只将栈顶的元素 返回即可原理图:入栈图:出栈图typedef i...
2018-06-20 15:58:58
337
原创 链表和顺序表面试题(进阶版)
一下面试题中要用到的数据类型以及一些函数。1.判断两个链表是否相交,若相交,求交点。(假设链表不带环)思路:typedef int DataType;typedef struct SLinkList{ DataType data; struct SLinkList*PNext;}SNode;// 初始化 void SLinkList_InIt(SNode **Phead){ as...
2018-06-13 17:30:56
331
原创 链表和顺序表的面试题(中级版)
1.合并两个有序链表,合并后依然有序思路:两个指针分别指向两个有序链表比较两个指针指向的节点的数字的大小,将较小的拿出来放到新的链表中,更新拿出来数据的那个指针,另外一个不动将剩下的节点链接到新的链表后面/*1. 两个指针分别指向两个有序链表2.比较两个指针指向的节点的数字的大小,将较小的拿出来放到新的链表中,3.更新拿出来数据的那个指针,另外一个不动4.当其中一个链表指向NULL时...
2018-06-13 15:39:22
256
原创 冒泡排序和选择排序的区别
一、冒泡排序冒泡排序的时间复杂度为O(n^2),冒泡排序法是最简单基础的一种排序方法,但是它的时间复杂度较大,排序一组数组比较的次数较多。冒泡排序的具体操作过程:比较相邻的元素。如果第一个比第二个大,就交换他们两个。 2. 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。这一趟比较完后,最后的元素会是最大的数。 3. 针对所有的元素重复以上的步骤,除了最后一个。...
2018-06-11 20:30:05
13521
6
原创 链表和顺序表的面试题(初级版)
1.从尾到头打印单链表有两种方法: 递归法 注意事项:递归的结束结束条件比较重要,当链表的指针走到尾部(NULL)时结束递归。下面是原理图,便于理解:void SLinkList_Print(SNode *Phead){ assert(Phead != NULL); while (Phead != NULL)//递归结束条件 { printf("%d ", Phead-&g...
2018-06-11 20:22:44
548
原创 Linux中重要的目录和重要命令
一、Linux中的重要目录/proc目录/proc文件系统是一种虚拟文件系统,以文件目录和文件形式,提供了一个指向内核数据结构的接口。这样方便查看和改变各种系统属性。此外还可以通过一组/proc/PID(PID就是进程ID)形式命名的目录查看系统中运行个进程的相关信息。由于进程是动态的,所以不同进程下的proc中的信息可能会有所不同。/proc目录下的文件内容都采取人类可读的文本形式,shell脚...
2018-06-11 01:07:51
369
原创 Linux--目录权限
一、文件的权限在Linux中存在三种人类: 文件属主(Owner)组用户(Group)其他用户(Other)这三种人类每一类授予用户的权限如下所示:Read:可阅读文件的内容Write:可更改文件的内容Execute:可执行文件执行 ls -l 命令可查看文件的权限和所有权,如下所示:在上面的输出中,将该文件的权限显示为“rw-rw-r--”(该字符串起始位置的连接号“-”表明该文件属于普通文件)...
2018-06-08 11:04:39
656
原创 用C语言实现通讯录(二、动态版+文件保存信息)
之前写的静态版的通讯录,只能存储固定数目大小的联系人信息,现在要升级为动态版的,这样只要容量不够的话只需自动扩容就可以啦!而且之前版本的信息每次退出程序后不会保存,每次需要重新录入,加入文件操作后可以将录入的信息保存到文件中,然后再从文件中读取就可以了。现在就让我们来完成一下之前程序的升级版。实现一个简单的通讯录要求: 通讯录可以用来存储1000个人的信息,每个人的信息包括: 姓名、性别、年龄...
2018-05-26 20:23:28
1572
原创 自定义类型相关知识剖析
1.结构体结构体: C语言允许用户创建由不同类型数据组成的数据结构,它称为结构体。结构体类型的创建 直接上代码struct Stu{ char name[20]; int age; char sex[5];};上面就定义了一个名为Stu的结构体,里面的成员有姓名、年龄和性别。这些成员可以是不同类型的变量。 定义结构体变量 1.先声明结构体类型,再定义该类型的变量
2018-05-10 10:34:40
274
原创 用C语言实现一个简单功能的通讯录(一、静态版本)
实现一个简单的通讯录要求: 通讯录可以用来存储1000个人的信息,每个人的信息包括: 姓名、性别、年龄、电话、住址 该通讯录所具备的基本功能: 1. 添加联系人信息 2. 删除指定联系人信息 3. 查找指定联系人信息 4. 修改指定联系人信息 5. 显示所有联系人信息 6. 清空所有联系人 7. 以名字排序所有联系人 接下来我们就用代码来一步一步实
2018-05-08 19:30:27
409
原创 c语言之指针、数组、函数之间的微妙联系
一、指针指针就是一个存储着内存地址的变量,通过所存的地址可以找到相对应的变量单元,因此将地址形象化地成为“指针”,意思就是可以通过它找到以它为地址的内存单元。 为了加以理解我们用图来进行解析: 下面我们定义一个整形的指针变量pint *p; 也就是说,指针是一个地址,而指针变量是存放地址的变量。###指针使用的注意事项指针变量前面的*表示该变量为一个指
2018-05-01 12:54:59
366
原创 可变参数列表剖析
一、什么是可变参数列表?在C语言中,我们知道当我们去实现一个函数时,它可以接受的参数是固定的,例如strcmp字符串比较函数,它有两个参数,传参时不能多传也不能少传。但是要想使我们的定义的函数可以接受多个参数,我们可以通过可变参数列表来实现。 可变参数列表可以通过宏来实现,这些宏是定义在头文件stdarg.h中的,它属于标准库的一部分。这些头文件中声明了一个类型va_list和三个宏,这三个宏
2018-04-19 17:16:40
239
原创 函数的调用--栈帧
对于函数的调用过程的了解层面你是否还停留在仅仅如下图所示的程度: 只知道大致过程而对于具体过程还不够了解,没有关系通过这篇博客,希望我们彼此都可以更深一层的了解函数具体的调用过程。一. 什么是栈帧?C语言中,每个栈帧对应着一个未运行完的函数,栈帧中保存了该函数的返回地址和局部变量。栈帧也叫过程活动记录,是编译器用来实现函数调用的一种数据结构。从逻辑上讲,栈帧就是一个函数执行的环境。 栈是从高
2018-04-16 12:48:15
482
2
原创 用C语言实现扫雷游戏
用C语言实现扫雷游戏—扫雷游戏的基本思路 1.打印游戏的菜单 2.为了便于后面排查周围雷的个数,初始化两个二维数组,一个作为向玩家显示的面板,一个作为布雷的面板。两个数组嵌套在一起。如下图所示: 3. 将初始化的两个数组打印出来 4. 在布雷的数组里面随机放入雷 5. 玩家扫雷 .输入要排查的区域的坐标 .如果第一次遇到雷,将雷移走,继续游戏 ....
2018-04-11 16:21:02
746
原创 用C语言实现简单的三子棋游戏
简单的三子棋游戏设计思路:打印游戏的菜单选择是否玩游戏定义一个二维数组作为棋盘并初始化电脑下棋显示棋盘判断输赢玩家下棋显示棋盘判断输赢 现在就用代码实现我们的想法 新建一个文件夹:三子棋.h#ifndef _SANZIQI__H__#define _SANZIQI__H__#include<stdio.h>#include<stdlib.h>#include<time
2018-04-11 15:29:57
350
原创 冒泡排序法
使用冒泡排序法对数组从大到小排列比较挫的代码写法:#include<stdio.h>#include<stdlib.h>int main(){ intarr[10] = { 0,1, 2, 3, 4, 5, 6, 7, 8, 9 }; int i = 0;//比较的趟数 int j = 0;//每个数比较的次数 int sz = sizeof(arr...
2018-04-04 19:23:22
210
原创 C语言数组总结
数组使用葵花宝典一维数组一.数组的特点1.数组是一组有序数据的集合2.数组中的每一个元素都属于同一个数据类型二.一维数组的定义1.一般形式一维数组的一般形式为类型符 数组名[常量表达式];Eg.int a[10]; int a[3+4];说明:(1)在定义数组时,需要指定数组中元素的个数,方括号中的常量表达式用来表示元素的个数,即数组长度。数组元素的下标是从0开始的。三.数组...
2018-04-04 11:37:02
515
原创 编程实现:两个int(32位)整数m和n的二进制表达式中,有多少个位不同
#include<stdio.h>#include<stdlib.h>int main(){ int num1 = 0; int num2 = 0; int arr[32] = { 0 }; int count = 0; scanf("%d%d",&num1, &num2); int tmp = 0; ...
2018-04-03 10:32:21
243
原创 获取一个数二进制序列中所有的偶数位和奇数位,分别输出二进制序列
比较挫的代码:#include<stdio.h>#include<stdlib.h>int main(){ int i = 1; int j = 0; int num = 0; int arr[32] = { 0 }; int count = 0; scanf("%d", &num); while(num) { ...
2018-04-02 08:42:04
377
原创 写一个函数返回参数二进制中的1的个数
int main(){int ret = 0;int num = 0;scanf("%d",&num);ret = count_onebits(num);printf("ret=%d",ret);system("pause");return 0;}
2018-04-02 08:39:31
309
原创 在整形有序数组中查找想要找的数字,找到了返回下标,找不到返回 – 1(折半查找法)
#include<stdio.h>#include<stdlib.h>int main(){ intnum = 0; printf("请输入要查找的数:\n"); scanf("%d", &num); int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; int mid = 0; int l...
2018-04-02 08:33:34
399
原创 猜数字游戏
#include<stdio.h>#include<stdlib.h>#include<time.h>void menu(){ printf("**************************\n"); printf("**********1.start*********\n"); printf("**********0.exit ****...
2018-04-02 08:32:11
230
原创 编写一个程序,它从标准输入读取C源代码,并验证所有的花括号都成对的出现
#include<stdio.h>#include<stdlib.h>int main(){ intch = 0; int count = 0; while((ch = getchar()) != EOF) { if(ch == '{') { count++; } if(c...
2018-04-02 08:30:42
252
原创 输出0 - 999之间的水仙花数
#include<stdio.h>#include<stdlib.h>#include<math.h>int main(){ inti = 0; for(i = 1; i <= 1000; i++) { intsum = 0; intcount = 1; inttmp = i; wh...
2018-04-02 08:27:55
266
原创 在屏幕上打印一个菱形
比较挫的代码写法:#include<stdio.h>#include<stdlib.h>#include<Windows.h> #include<string.h>int main(){ char arr1[] =" "; char arr2[] ="*****************"; char ...
2018-04-02 08:27:09
287
原创 编程计算一下从1到100的所有整数中出现多少次数字9
#include<stdio.h>#include<stdlib.h>int main(){ inti = 0; intcount = 0; for(i = 1; i <= 100; i++) { if(i % 10 == 0) { count++; } if(i /...
2018-04-02 08:21:27
1257
原创 判断1000-2000年之间的闰年
#include<stdio.h>#include<stdlib.h>int main(){ int year = 0; int count = 0; for(year = 1000; year <= 2000; year++)printf("count=%d\n",count); system("pause"); return0;} ...
2018-04-01 09:47:15
323
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人