自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Windows10系统开启SNMP服务

Windows10系统开启SNMP服务1、打开控制面板,选择卸载程序2、点击启用或关闭Windows功能3、将SNMP协议开启(如果有该内容请直接跳至步骤7,如找不到该协议请继续看步骤4)4、找不到步骤3中内容原因:Windwos10 1809后更新版本,无启动SNMP协议服务器可选配置项,要安装SNMP。首先要打开开发者模式,打开设置-》更新和安全-》开发者选项-》选择开发人员模式。5、安装snmp,打开计算机的设置-》应用-》应用和功能-》管理可选功能-》点击加号添加

2020-08-20 17:15:27 1440

原创 【软件测试开篇】【关于生活太无聊的事】

关于生活太无聊的事

2022-03-23 13:56:09 162

原创 windows在命令行配置IP地址

前言:安装windows虚拟机后鼠标在控制台不能用,使用命令行配置ip地址正文:1、按win+r 弹出运行窗口,输入cmd进入命令行2、用ipconfig命令查看网卡名称3、输入netsh后回车,输入interface后回车,输入ip,回车4、输入set address “连接名称” static 新IP地址 子网掩码 网关 1,然后回车如图(连接名称为步骤2中用ipconfig查询的网卡名称)5、输入exit退出,再输入ipconfig查看是否配置成功...

2021-04-13 15:31:58 7967 1

原创 安装sz和rz命令

给服务器安装lrzsz:1、下载 lrzsz-0.12.20.tar.gz(百度找就可)2、查看里面的INSTALL文档了解安装参数说明和细节3、解压文件tar zxvf lrzsz-0.12.20.tar.gz4、进入目录cd lrzsz-0.12.205、./configure --prefix=/usr/local/lrzsz6、make7、make install8、建立软链接#cd /usr/bin#ln -s /usr/local/lrzsz/bin/lrz rz#ln

2021-04-08 17:26:24 363

原创 C++对象构造析构顺序

定义A、B、C、D四个类按照下列方式进行调用B b;int main(){ A a; D d; static C c; return 0;}类的构造和析构顺序结果为由结果可见,全局对象B先进行构造,然后ADC按定义顺序进行构造。析构的时候先析构局部对象,按照先构造后析构的顺序D、A进行析构。存在栈上。再析构静态对象和全局对象C、B。因为B和C存在.data段。题外话:...

2019-08-04 12:52:05 1044

原创 C和C++区别

一、函数参数的默认值C语言中没有函数参数默认值的概念、C++中函数参数可以有默认值int fun(int a=10)在函数没有调用的时候,a自动赋值为10。int fun(int a=10,int b)是不可以的,实参和形参自左向右匹配。int fun(int a,int b=30)的时候,fun(20)传参数的时候为a=20,b=30。int fun(int a=10,int...

2019-07-23 15:31:45 148

原创 进制和位运算典型题目

(一)二进制中的原码、反码、补码原码:正数的二进制数表示就是原码。负数的原码按照绝对值大小转换成的二进制数,然后最高位补1。反码:正数的反码和原码相同。 负数的反码和除符号位按位取反。补码:正数的补码和原码相同。 负数的补码为反码加1。计算机中,采用补码表示和存储。为什么采用补码:由于计算中的CPU只有加法器,没有减法器,所以在计算机采用原码...

2019-05-02 23:39:29 341

原创 Linux24 TCP三次握手和四次挥手

(一) TCP特点(1)是一个面向连接的传输层协议,一条TCP连接只能有两个端点,必须先建立连接(虚连接),才收发数据,依靠三次握手建立连接,connect叫做发起连接(开始三次握手),四次挥手是close引起的。(2)提供可靠的交付服务,可靠性依靠应答确认,超时重传。自动重传请求ARQ,后来为连续ARQ协议。(3)是全双工通信。(4)面向字节流:发送的次数与接收数据的次数没有关系,底层...

2019-04-29 16:53:24 232

原创 Linux23 UDP编程流程

UDP服务器编程流程int socket(int domain, int type, int protocol);int bind(int sockfd, struct sockaddr addr,int len);int recvfrom(int sockfd,void bff,int len,int flg,struct sockaddr caddr,int len);int send...

2019-04-29 16:49:31 126

原创 Linux22 TCP编程流程

TCP:面向连接的、可靠的、字节流服务UDP:无连接、不可靠的、数据报服务IP:无连接、不可靠的、无状态的无状态:数据的发送、传输、接收相互独立的,没有上下文关系。接收端接收的数据有可能重复和乱序。头文件# include <stdio.h># include <stdlib.h># include <string.h># include &lt...

2019-04-29 16:48:26 202

原创 Linux21 计算机网络基础

(一)基础名词1、 网络:将计算机串联起来互联网:将各个网络串联起来Inter2、 网络通讯的主角:运行在不同机器上的两个进程3、 IP地址:便于寻址,标识网络中的机器4、 端口号:标识机器上运行的进程,唯一标识一个应用程序。HTTP协议默认使用80,但是可以改。5、 IP+端口:可以唯一标识一个进程。6、 网络设备:路由器(存储、选路、转发),交换机7、 网线:(双绞线100米)...

2019-04-29 16:44:03 130

原创 Linux20 多线程编程

(一)多线程编程线程:是轻量级的进程。是进程内部的一条执行指令(一组有序指令),或者说是执行流。一个进程至少由一条线程,就是main函数所代表的执行序列。称之为主线程。通过线程库可以创建线程----函数线程。主线程仅仅代表进程执行的第一条线程而已。当主线程通过线程库创建出主函数线程以后,所有线程就没有任何区别。主线程默认结束,结束是整个进程。进程和线程的区别:1、 进程是资源分配的单位...

2019-04-29 16:39:33 241

原创 Linux19 进程间通信(四)共享内存

共享内存是最快的一种IPC使得A进程和B进程都能通过虚拟地址映射到同一块物理空间上。区域既属于A进程又属于B进程。两个进程共享同一块空间。两个指针访问同一块内存,不需要切换内核态,不需要经过操作系统。1、 共享内存一旦使得进程映射到此共享内存区域,不需要用户态切换成内核态。2、 共享内存相比较于其他通信方式,会少两次数据的拷贝。共享内存实现:<sys/shm.h>(1) 创...

2019-04-29 16:24:34 686

原创 Linux18 进程间通信(三)信号量

信号量:进程同步控制。信号量用来同步进程,像红绿灯控制东西、南北车辆一样。引入信号量会使程序的性能降低,但不同步程序的安全性得不到保障。进程同步:进程协同工作进程异步:进程独立运行,互不干扰,但两个进程之间是有关系的,没有关系的进程叫做并发执行,需要内核机制来通知(信号就是一种很好的通知方式。)临界资源:同一时刻只能被一个进程访问使用的资源,临界资源可以有多份。临界区:访问临界资源...

2019-04-29 16:21:48 211

原创 Linux17 进程间通信(二) 消息队列

每个进程有4G的虚拟地址空间,3G的用户空间是每个进程独有的,1G的内核空间是共享的内核对象:内核里面的一个结构体变量。标识符和键都能唯一的标识一个对象。标识符是内核中对象的标识,键是用户层次对内核中对象的标识,两个进程需要访问同一个内核对象,必须给一个相同的key值。我们通过键值来找到内核对象的标识符。(一)消息:类型+数据。(一种简单的协议)消息是一条一条的,读取的时候一次只能读一...

2019-04-20 11:39:34 135

原创 Linux16 进程间通信(一) 管道

进程间通信:管道、信号量、共享内存、消息队列、socket、stream管道 半双工,数据只能向一个方向流动;需要双方通信时,需要建立起两个管道;可以通过sockpair实现全双工管道。分为pipe(无名管道)和fifo(命名管道)两种,除了建立、打开、删除的方式不同外,这两种管道几乎是一样的。他们都是通过内核缓冲区实现数据传输。 管道一端的进程顺序地将进程数...

2019-04-20 11:36:53 161

原创 Linux15 进程替换

进程替换: 使用 fork 函数创建子进程的时候,和父进程执行的是相同的程序。但是实际在我们的期望中,子进程应该是执行和父进程不同的代码。所以此时,子进程往往要调用 exec函数从而执行另一个程序。调用 exec 并不创建新的进程,所以调用 exec 函数并不会改变该进程的 pid。 被替换的用户的代码和数据完全被新的程序替换,并从新的程序的启动例程开始执行。e...

2019-04-20 11:32:07 149

原创 Linux14 信号的使用及底层实现

(一)信号操作系统预先定义好的某些特定的事件,信号可以被产生,也可以被接受。产生和接收的主体都是进程。进程接受到信号后,怎么处理——信号的响应方式:默认SIG_DFL, 忽略IG_IGN,自定义如何修改信号的响应方式:typedef void(*Fun) (int);Fun signal (int signum,Fun fun);//修改信号响应方式的函数signal,信号值,信...

2019-04-20 11:19:45 555

原创 Linux13 僵死进程

<defunct>僵死进程: PCB存在,进程主体释放,子进程结束,父进程未获取子进程的退出码,从而子进程不得不保存退出码,所以整个PCB也就无法释放。子进程结束会向父进程发送一个SIGCHLD信号。 孤儿进程:孤儿进程会被init接管。僵死进程处理办法:父进程获取子进程的退出码:pid_t wait(int* reval);pid_t wai...

2019-04-20 11:08:21 200

原创 Linux12 父子进程

(一)数据不共享父子进程的堆区数据、栈区数据、全局数据是不共享的。子进程变量赋值后父进程的值不变,父子进程各自拥有这一变量的副本,互相不影响。通过一段代码研究一下父子进程的是否存在数据共享。数据分成:堆区数据、栈区数据、全局数据。所以我现在有三个变量,同时,我让子进程改变这三个变量的值。让父进程沉睡两秒钟以确保子进程运行结束。结果如下:值发生了改变,说明父子进程的堆...

2019-04-14 17:43:24 985 1

原创 Linux11 进程的创建fork()

fork函数fork是系统调用函数。fork()出错返回-1,fork函数调用一次,返回两次。fork()的功能是创建进程。 fork调用后会生成一个新的进程。fork()会在原进程中返回新进程的pid,不可能为0。在新进程中返回0。原来的进程是父进程,新进程是子进程。int main(){ pid_t n=fork(); assert(n!=-1); ...

2019-04-14 15:30:19 171

原创 Linux10 文件操作函数

1、库函数和系统调用函数Linux上可以用C语言的文件操作函数(fopen fread fwrite fclose fseek)(库函数)但是Linux系统有自己的文件操作函数(open read write close lseek stat)(系统调用函数)库函数:把功能进行封装,封装成库函数,用不同的语言库就不一样。(eg:libc pritf函...

2019-04-10 17:25:30 660 1

原创 虚拟机Linux系统和windows文件共享

1、首先在Linux系统关机状态下点击编辑虚拟机设置,选择CD/DVD, 在使用ISO映像文件下选择Linux.iso。(Linux.iso在VmWare安装路径下)2、开启虚拟机,打开控制终端,进入root用户。3、在/mnt目录下创建dvd目录,然后执行命令: mount /dev/cdrom /mnt/dvd4、执行cd /mnt/dvd 命令,进入到dvd目录中...

2019-04-10 15:56:18 226

原创 printf和scanf缓冲区

1、printf和scanf缓冲区int main(){ printf("hello"); sleep(5); printf("world"); exit(0); return 0;}上面代码的执行情况为先睡眠5秒钟,再打印hello world原因是C语言中的scanf gets函数将输入内容放进输入缓冲区,printf puts将输出的内容放入输出缓...

2019-04-09 17:38:46 668

原创 主函数的参数

主函数的参数int main(int argc, char* argv[], char* envp[]);argc:传递的参数列表中参数的个数(argv的长度)argv:传递的参数列表envp:传递的环境变量,进程运行的环境,一般我们不需要传,可以继承上一级的内容。指定进程工作的方式。主函数不传参数时默认传入一个参数,运行时的./main可以通过下列程序打印a...

2019-04-09 17:28:02 417

原创 Linuc 09 什么是进程&操作系统对进程的管理

1、计算机基本组成:CPU 内存 I/O程序:存储在磁盘上的可执行文件。(一组有序的指令集和)进程:进程是运行中的程序。(一段程序的执行过程)(一组有序指令+数据+资源的集合)main.c、编译链接后生成 main(ELF)都是文件,文件在磁盘上放./main执行起来以后,成为运行着的程序(进程),在内存上放,CPU按照顺序执行进程中的指令2、操作系统的发展(1...

2019-04-09 17:12:16 257

原创 Linux08 进程管理命令&&用户管理命令

1、进程管理命令进程:运行中的程序,将程序加载到内存上。程序:存储在磁盘上的可执行的二进制文件。Linux系统上记录进程: /proc 虚拟目录,以进程为单位存储内存的映射。进程命令:(1)查看进程ps:查看当前终端进程ps -e:查看系统所有进程ps -f:比ps多打印一点信息uid ppidps -ef:系统所有进程的所有信息...

2019-04-02 16:38:53 155

原创 Linux07 makefile工程管理工具

1、makefile文件的作用(摘抄) 一个工程中的源文件按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作。 makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率...

2019-04-02 14:06:30 867

原创 Linux06 链接文件

1、 链接文件链接分为两种:软连接:符号链接,相当于windos上的快捷方式,软链接文件存储文件路径,软链接和源文件使用不同的inode结点,创建软链接文件,ln -s 源文件 新的链接文件,eg ln -s mian.c test.c,test.c就是软链接。硬链接:相当于源文件的别名,硬链接文件和源文件使用同一个inode。ln 源文件 链接文件。ll ...

2019-03-15 15:50:10 227

原创 C程序4G虚拟地址空间

C程序4G虚拟地址空间1、从0X00000000到0X08048000是不可访问区,共128Mchar* p = NULL;strcpy(p,"hello");程序会崩溃,因为NULL为0地址,是不可访问的2、0X08048000到0X0804894是EFL头,和program头,0X0804894是程序的执行入口。3、.text段存储代码,权限只读。4、.data和.bss段...

2019-03-15 13:10:47 717

原创 Linux05 gdb使用的相关命令

gdb调试流程Linux用gcc 编译默认生成release版本,release是发行版本,debug是开发版本,debug版本生成的可执行文件比release版本要大一些,里面生成了一些debug_*段,可用于调试,debug_*段是在编译阶段加入的。1、编译链接:gdb调试要生成debug版本,生成debug版本的方式。 编译:gcc -c main.c -g...

2019-03-14 14:54:08 152

原创 Linux04 LinuxC程序编译链接过程

C/C++编译链接过程文件以main.c为例,main.c内容如图(1)所示1、第一步预编译后生成main.i文件,其中部分内容如图所示,预编译阶段做的事情有:(1)处理预编译指令(2)删除注释(3)将包含的头文件展开(生成main.i文件使用的命令为gcc -E main.c -o main.i)2、编译后生成main.s文件,其中部...

2019-03-13 16:35:18 254

原创 Linxu03 文件操作常用命令

文件操作常用命令普通文件以main.c文件为例、目录文件以ttt为例1、创建普通文件 touch main.c(中间有一个空格) 创建目录文件 mkdir ttt2、删除普通文件 rm main.c 删除目录文件 rm ttt 删除非空目录 rm -r ttt3、拷贝普通文件cp ttt(路径)/main.c(文件名) zz...

2019-03-13 16:25:26 392

原创 Linux02 文件类型&&文件权限

Linux系统下一切皆文件:(一)文件可分为5类 (Linux不以扩展名来区分文件类型)1、普通文件:.c/.java/.class/.txt2、目录文件:文件夹,文件里面都是文件 “d”3、管道文件:进程向管道里写信息,从管道中读信息 “p”4、链接文件:包含另一个文件的路径名,可链接任意文件 “l”5、设备文件: 块设备:按块...

2019-03-11 17:04:38 184

原创 Linux01 文件层次结构

操作系同用于管理软硬件资源,为用户提供与计算机交互的一种软件。windows和Linux系统都为操作系统。相对于windows来讲Linux特性有:1、开源,免费,随时修改获取源码2、允许多个用户同时登陆系统工作,适用于企业使用3、内核小4、支持硬件设备多在Linux系统下一切皆文件。Linux文件存储都是以根目录开始的 “/”/bin:存储系统所使用的命令的...

2019-03-11 16:33:43 174

原创 C语言 指针变量解引用——交换两个变量保存的数字

错误示范一、用一个临时变量保存其中一个变量值。在交换函数中定义一个临时变量tmp用于数字a,b数字交换的中间介质SHAPE \* MERGEFORMAT ​用调试方式查看失败原因。在调试时用监视查看主函数中a和b的初始地址,如下图。 ​进入交换函数后交换函数的a和b的地址,如下图 ​、调用交换函数后主函数中打印函数内a和b的地址,如下图 ​由此可知a和b...

2019-03-04 16:50:06 501

原创 C语言 指针的定义

1、指针变量的定义int a =10;该语句表示定义一个整型变量值为10,a保存的数据为10,为了方便访问变量a,需要a的具体地址。int *p=&amp;a;该语句表示定义一个变量p,该变量为整型指针变量,用于保存整型变量的地址。int**pp=&amp;p;该语句表示定义一个变量pp,该变量是一个二级指针,用于保存指针变量的地址。定义指针变量时,*仅为表示变量p为指针变量。...

2019-03-04 16:38:27 5395

原创 题目:求进制N为多少

某进制计数器中各位数字符号所表示的数值,表示该数字符号值乘以一个与数字符号相关的常数,该常数称为位权。将不同的进制数按权展开可得到十进制数字。例题:假设在n进制下,下面等式成立,567*456=150216,则n的值为()。A. 9B. 10C. 12D. 18由将不同进制按权展开可得十进制数字得到启示,解法如下:将左端每个数字按权展开;将右端按权展开;左右两端仍然相等。...

2019-03-04 16:34:02 460

原创 C语言 #define和typedef区分

# define宏定义是字符替换,typedef是定义类型。# define INT int是将程序中字符为INT的字符全部替换为int,在编译预处理是进行简单的字符替换,不做正确性检查,不管含义是否正确,都进行替换。 typedef int INT是将INT定义为int型的字符类型,是采取像定义变量的方法来声明一种类型。使用# define PINT int ...

2019-03-04 16:31:53 363

空空如也

空空如也

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

TA关注的人

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