自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 自动监控备份系统--项目详情

自动监控备份系统 项目功能介绍 客户端主机上对指定目录进行监控,能够对新文件/修改后的文件进行自动备份到服务端 并且服务端向用户提供网页访问和文件下载的功能 服务端为了节省磁盘空间,对热度低(不经常下载)的文件进行压缩存储。 这里存在可扩展的地方为如果服务端中包含大量的小文件,为了节约inod...

2019-08-21 14:35:05 640

原创 自动监控备份系统--性能测试

项目详情https://blog.csdn.net/Thinker_serious/article/details/99852168 项目功能介绍 客户端主机上对指定目录进行监控,能够对新文件/修改后的文件进行自动备份到服务端 并且服务端向用户提供网页访问和文件下载的功能 服务端为了节省磁盘空间,对热度低(...

2019-08-21 14:36:11 410

原创 C++容器--list

list介绍list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且可以前后双向迭代list的底层式双向链表结构,双向链表中的每个元素存储在互不关联的独立节点中,节点中的指针指向前一个位置和后一个位置list和forward_list非常相似:不同点在于,forward_list是单链表,只支持向前迭代,让其更加简单高效与其他序列式容器相比(array,vector,dequ...

2019-08-17 11:03:05 310

原创 C++容器--vector

vectorvector可表示可变大小数组的序列容器。vector采用和数组相同的连续存储空间来存储元素。可采用下表对vector的元素进行访问,与数组一样高效。与数组的不同点:vector的大小可以动态改变,它的大小会被容器自动处理,而数组是定长的。vector分配空间策略:vector会分配一些额外的空间以适应可能的增长,因为存储空间比实际需要的存储空间更大,为保证vector在末尾...

2019-08-12 17:14:30 128

原创 C++容器--string

stringstring为C++STL中的重要容器,是表示字符串的字符串类其中有一些用来操作字符串的接口不能操作多字节或者变长字符的序列常用接口:构造:string(); // 构造空串string(const char* s); // 用C-string构造string类对象string(size_t n, char c); // string类对象中包含n个字符cstri...

2019-08-11 17:23:21 138

原创 LeetCode整理--删除排序数组中的重复项

题目要求第一种解题思路:因为数组是已经排好序的有序数组,所以后面的元素一定是大于等于前面的数字的,所以我们只需要判断后一个数字是否与前一个数字相等,如果相等就让后一个继续向后,直到不等于当前数为止,如果不相等就让前面的下标向后移动一位赋值,最后的长度就是前面下标+1// 前面的解释有点难以理解,看代码很容易理解class Solution {public: int remo...

2019-07-24 15:08:15 143

原创 Linux---进程间通信

进程间通信1. 操作系统为什么提供通信方式?因为进程的独立性导致进程间是无法直接进行通信的。2. 进程间通信的基本介绍作用:进程间进行交流因为进程间的独立性,因此通信需要双方拥有公共的媒介才能通信,而这个媒介由操作系统提供;并且因为通信的场景不同,操作系统提供了多种不同的进程间通信方式。3. 进程间同i性能方式(ipc)管道:匿名管道/命名管道共享内存:进程间通信方式最快...

2019-06-24 16:00:16 202

原创 C++--模板

一、泛型编程

2019-06-14 17:18:20 136

原创 C++---内存管理

一、内存分布首先我们应该知道各种数据在内存中的分布栈:又叫堆栈,非静态局部变量/函数参数/返回值等等,栈是向下增长的。内存映射段:高效的I/O映射方式,用于装载一个共享的动态内存库。用户可使用系统接口创建共享内存,做进程间通信。堆:用于程序运行时动态内存分配,堆是向上增长的数据段:存储全局数据和静态数据代码段:可执行代码和只读常量二、C语言中的动态内存管理方式malloc:只申请空...

2019-06-06 18:38:45 101

原创 Linux---进程控制

进程控制:进程创建:进程创建函数为fork(),无参数返回值:创建失败返回-1;创建成功后父进程返回子进程的id(大于0),子进程返回0,我们可以通过返回值的不同对父子进程进行分流。fork常规用法: 一个父进程希望复制自己,生成子进程,让父子进程执行不同的代码段。例如:父进程等待客户端请求,生成的子进程来处理请求 一个进程要执行不同的程序。例如子进程从fork返回后,调用exec函...

2019-05-28 16:53:08 175

原创 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)

求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)解析:解决这道题的方法有好几种,这里只提供最好理解的这一种,通过构造对象,让静态变量进行累加,在构建完所有对象后返回静态变量的值,就是累加的和。#include <iostream>using namespace std;class Sum...

2019-05-24 15:35:45 556

原创 C++---类和对象(下)

构造函数体赋值:在创建对象时,编译器通过调用构造函数,给对象中的成员变量一个合适的初始值。class Date{public: Date(int year, int month, int day) // 初始化示例 :_year(year) , _month(month) , _day(day) // 初始化到这里就应该结束了 { // 这里是赋值而不是初始化 ...

2019-05-24 15:29:33 173

原创 Linux--进程概念

进程:本质为运行中的程序程序:存储在硬盘中的可执行程序文件 操作系统如何管理进程?先描述,后组织 站在操作系统的角度来说,进程就是操作系统对进程的描述-->pcb(进程控制块) struct task_struct结构体 描述进程:标识符(PID),进程状态,优先级,内存指针,上下文数据, 程序计数器,io状态信息,记账信息(cpu上运行时间) 进程的切换调度:c...

2019-05-23 18:29:40 177

原创 Linux--概念+常用工具

基础命令在之前已经展示,从这里开始就是对各种概念的理解,在面试中有很大概率会问到的问题。操作系统的构成 = 系统内核 + 外部应用外部应用就要看开发人员对系统的支持了,但是我们知道Linux下的游戏并不是很多,主要就是因为Linux为开源系统,大家都可以在内核的基础上,开发自己的特色上去,导致Linux的版本各有不同,很难统一,导致应用的支持很难实现。权限:用户:普通用户,超级管理员(r...

2019-05-14 16:51:03 117

原创 Linux--其他常用命令

其他命令: 压缩命令: 压缩/解压缩 打包/解包 zip/unzip gzip/gunzip bzip2/bunzip2 .tar.gz .tar.bz2 tar -c 打包 -x 解包 -z gzip格式压缩/解压缩 -j bzip2格式压缩/解压缩 -v 显示详细的打包/解包信息 -f 指定压缩包的名称,后面紧跟包名称 tar -czvf hello.t...

2019-04-25 00:18:58 114

原创 Linux--文件相关命令

文件相关命令: touch 若文件存在则刷新文件时间属性,不存在则创建文件 -t 199811231234.23 -d 1998-... cat 打印文件内容到终端 -n 打印行号 tac 按行逆序打印 more 分页打印文件内容 空格 向下翻页 b 向上翻页 回车 按行向下翻页 less 分页打印文件内容 f pgdown 向下翻页 b pgu...

2019-04-19 14:51:41 115

原创 Linux初识--目录相关命令

介绍:本文章记录一些Linux的基础命令,方便以后查询和复习。初识linux以及基本操作Linux及基本操作:Linux操作系统版本:发行版linux操作系统=linux内核+外部应用redhat—收费centosdebianubuntudeepin 麒麟 红旗基本操作:目录----文件夹linux下一切皆文件linux是一个多用户操作系统;家目录—每个用户都会有的单独的...

2019-04-18 16:52:50 315

原创 C++---类和对象(中)

一、类的6个默认成员函数

2019-03-27 22:35:38 191

原创 C++---类和对象(上)

一、类和对象的初步认识C语言是面向过程的,关注的是过程,分析求解问题的步骤,通过函数调用逐步解决问题。C++是基于面向对象的,关注的是对象,将一件事拆分成不同的对象,靠对象之间的交互完成。二、类的引入C语言中,结构体只能定义变量;在C++中,结构体不仅能定义变量,也可以定义函数。// 测试代码struct Student{ void SetStudentInfo(const cha...

2019-03-20 18:39:33 205

原创 C++---入门

一、命名空间:*使用命名空间的目的:*在C++中,变量、函数和类都是大量存在的,这些变量、函数和类的名称都将存在于全局作用域中,可能会导致很多冲突。使用命名空间对标识符的名称进行本地化,以避免命名冲突或名字污染,关键字namespace。定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后**接一对{}**即可,{}中即为命名空间的成员。// 1. 普通的命名空间n...

2019-03-15 21:18:30 244

原创 数据结构---链表功能全实现(单向+不带头+不循环)

在这里我创建的是单向+不循环+不带头的链表。首先对数据类型进行重命名:typdef int SLDatatype;对链表结点的定义:在链表结点中存放数据,与指向下一个有效空间的指针,如果当前的结点是链表的最后一个结点,则结点中的指针指向NULL,表示链表的结束。typedef struct SListNode { SLDataType data; struct SListNode *...

2018-12-25 17:38:55 235 1

原创 数据结构---顺序表全功能实现

顺序表的基本功能:增删查改我将对每一个接口的功能及实现方法进行介绍顺序表的结构与数组相似,都可以通过对下标的访问,访问到数据结构体的创建:首先定义一个结构体类型,对属性进行添加,我的结构体中定义了一个地址(用来存放动态开辟空间的地址),如果需要的是简单的静态顺序表,可以将指针换做数组使用。接着定义一个capacity,表示容量(用于动态开辟内存的大小),一个size用于记录内存中有效数据的...

2018-12-05 14:43:17 460

原创 string.h库函数的实现---memcpy

作用:从source的位置开始向后复制num个字节的数据到destination的内存位置。注意:1.这个函数在遇到’\0’的时候不会停下来。2.如果source和destination有任何重叠,复制的结果都是未定义的。实现机制:因为这个函数使用了void* 所以不能够解引用复制,所以应该先进行对指针的强转操作()。使用循环对源字符串的每一个字符进行复制到目标字符数组中,返回目标字符串的...

2018-11-13 17:12:56 579

原创 string.h库函数的实现---strcmp

作用:比较两个字符串的大小,按照词典序的原则对字符大小进行定义,依次比较对应的字符的大小。实现机制:字符串传参可用指针接收,将两个指针分别指向两个字符串的起始地址,解引用比较第一个字符的大小,如果arr1&gt;arr2则返回一个大于0的数,arr1&lt;arr2返回一个小于0的数,arr1 = arr2时,将指针向后移动,比较下一个字符,直至一个字符串走至’\0’,则另一个字符串即为较大的字...

2018-11-13 16:44:50 597

原创 string.h库函数的实现---strchr

作用:在字符串中找到一个字符首次出现的位置。实现机制:循环遍历整个字符串,找不到就向后移动,直至到达’\0’,返回NULL,如果找到就返回首次出现字符的地址。函数实现:char* my_strchr(const char* dest, char f){ assert(dest != NULL); while (*dest != f) { dest++; } if (*des...

2018-11-12 17:16:39 470 2

原创 string.h库函数的实现---strstr

作用:寻找源字符串是否为目标字符串的子串。实现机制:用源字符串的指针与目标字符串的指针依次进行比较,当发现源字符串的连续字符都在目标字符串中包含,且源字符串走到’\0’,就说明源字符串是目标字符串的子串,则返回源字符串的首元素在目标字符串中的地址;如果目标字符串走到’\0’任然没有发现与源字符串相同的字符串,则说明源字符串不是目标字符串的子串,返回NULL(空指针)。注意:不可用原指针直接去...

2018-11-12 17:00:33 787

原创 string.h库函数的实现---strcat

作用:字符串拼接,将源字符串拼接到目标字符串的尾部,形成一个字符串。实现机制:字符串其实在存储的时候可以看做是字符数组,所以在传参时可以用两个指针接收。因为源字符串要拼接到目标字符串上,所以目标字符串的指针向后移动,直至到达’\0’,然后进行循环赋值将源字符串中的所有元素赋值给目标字符串,当将’\0’赋值给目标字符串是就完成了字符串的拼接。函数实现:在while循环赋值的问题,我在strcp...

2018-11-12 16:34:45 311

原创 string.h库函数的实现---strcpy

作用:字符串的拷贝,将一个字符串拷贝到另一个可容纳它的字符数组中。

2018-11-12 16:13:57 415

原创 string.h库函数的实现---strlen

strlen的实现:作用:求字符串的长度,给定字符串后调用strlen函数可求出给定字符串的长度实现机制:1.在函数中定义一个临时变量,用于记录字符串的长度,当指针向后走一步,如果是非‘\0’则加1,最终返回临时变量则为长度。2.不定义临时变量实现,用递归的思路,求一个字符串长度,例如:abcdef的长度就可以表示为1+bcdef的长度,bcdef的长度又可以表示为1+cdef的长度,依次...

2018-11-10 13:43:55 486

原创 喝汽水问题

题目:喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以多少汽水分析:20元可以先买到20瓶汽水,所以可以编写一个函数求得20个空瓶可以得到多少瓶汽水。递归方法:可以先求得空瓶第一次能得到汽水的数量,然后求得第二次的到空瓶的数量,调用自己的函数可以的到第二次空瓶换得汽水的数量,以此计算直至判断条件空瓶的数量不足以换得汽水。递归函数方法参考:int EmptyBottle(in...

2018-11-06 17:35:26 1350

原创 一个数组中只有两个数字是出现一次, 其他所有数字都出现了两次,找出这两个数字

题目:一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。找出这两个数字,编程实现。参考代码:#include&lt;stdio.h&gt;#include &lt;windows.h&gt;void find_num(int arr[], int len){ int i = 0;//循环变量 int ret = 0;//记录所有值异或的结果 int pos = 0;...

2018-11-06 17:21:03 1024

原创 判断一个字符串是否为另外一个字符串旋转之后的字符串

题目:判断一个字符串是否为另外一个字符串旋转之后的字符串。例如:给定s1 = AABCD和s2 = BCDAA,返回1,给定s1 = abcd和s2 = ACBD,返回0.AABCD左旋一个字符得到ABCDAAABCD左旋两个字符得到BCDAAAABCD右旋一个字符得到DAABC分析:创建两个字符数组分别存储两个字符串,用函数compare进行比较,用两层循环,第一层循环用于每次将多少个...

2018-11-04 19:39:33 201

原创 字符串左旋

题目:实现一个函数,可以左旋字符串中的k个字符。ABCD左旋一个字符得到BCDA,ABCD左旋两个字符得到CDAB分析:可以将ABCD存在一个字符数组中,左旋一个字符相当于把第一个存到临时变量中,然后将第一个字符之后的字符循环赋值给前一个位置,最后将临时变量的值放置到最后一个位置,就完成了字符的左旋。...

2018-11-04 19:07:29 342

原创 简单计算器的实现与优化方法

题目:用程序实现一个简单计算器,能够进行加减乘除的基本运算分析:利用分支语句进行选择不同的算法,对两个数进行不同的计算。输出对应函数返回的值,就是最终的计算结果。代码如下:#include &lt;stdio.h&gt;int DIV(int a,int b){ return a / b;}int MUL(int a, int b){ return a * b;}in...

2018-11-01 15:41:52 1179 1

原创 杨氏矩阵

题目:一个二维数组,数组的每行从左到右是递增的,每列从上到下是递增的,在这样的数组中找一个数是否存在。时间复杂度小于O(n)。分析:在二维数组中找一个数,应该遍历整个数组找这个数,但是题目中的二维数组每行从左到右是递增的,每列从上到下是递增的,这样给搜索带来了便利。先判断这个数是否小于arr[0][0]这个数,或大于arr[row][col](数组中的最大值)这个数,如果满足其一就直接说明搜索不...

2018-10-31 16:16:52 350

原创 调整数组使奇数全部都位于偶数前面

题目:输入一个整型数组,实现一个函数,来调整该数组中数字的顺序使得数组中的所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。分析:在数组中有一组整型数据,调整奇数位于数组前半部分,偶数位于后半部分,即如果发现前半部分中发现一个偶数就需要把它换到后面。实现:判断这个数的奇偶性用%2的方法来判断,数组前后开始遍历数组判断前后两个数的奇偶性判断是否需要交换(前偶后奇需要交换,然后左边向右走一步...

2018-10-31 15:48:50 917

原创 strlen/strcpy的实现(不使用库函数)

strlen功能的实现:strlen的功能:计算一串字符的长度设计思想:返回类型为整型int,参数为一个字符型指针变量char*int my_strlen(char* src)用字符指针接收字符首字母的地址,当指针指向’\0’时,计数器count停止++;代码如下:#include &lt;stdio.h&gt;#include &lt;assert.h&gt;int my_st...

2018-10-23 18:01:27 683

原创 “C语言操作符”

操作符算数操作符:+ - * / % 加减乘除为基本操作,%为取模;/ 和 %的区别是:/为取商,%为取余数;%只用于两个整数。

2018-10-23 14:51:08 690 1

原创 史上最简单三子棋游戏

史上最简单三子棋游戏,至今未发现更容易的三子棋*和傻子电脑玩三子棋游戏玩法介绍:首先,电脑会先在棋盘上放置一个X,然后玩家开始走,在没有X的放置O,在九个精美的格子上(假的,丑爆了,手动精美)展开激烈的厮杀(假的,一点都不好玩),最后有三个相同的棋子,无论是横竖撇捺的直线上连成一线。棋子的所有者获胜,如果在九个格子都被占用后未出现一方获胜,即为平局。实现原理:建立一个3*3二维数组,为了让游...

2018-10-14 17:32:37 736

原创 求1000--2000年之间的闰年

/********************************求1000–2000年之间的闰年********************************/分析:闰年的判断方法:年份可以被4整除,但不能被100整除或可以被400整除,即为闰年。所以使用for循环依次判断1000到2000年之间的年份,用逻辑与&amp;&amp;与逻辑或||完成判断。判断条件:if (i % 4...

2018-09-26 16:20:44 665

空空如也

空空如也

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

TA关注的人

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