自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C语言指针总结

一、指针 了解指针:1.指针就是个变量,用来存放地址,地址唯一标识一块内存空间。 2.指针的大小是固定4/8个字节(32位操作系统/64位操作系统)。 3.指针有类型,其类型决定了指针可以进行+-整数和解引用时的权限。 4.指针可以与指针在同...

2018-11-11 12:09:24 1889 2

原创 C++ deque的使用

1、简介 1、双端队列是动态大小的序列式容器,其可以向两端进行伸缩; 2、特定的库可以以不同的方式实现deque,但通常都是一种动态数组;不论在何种情况下,它都允许通过随机访问迭代器直接访问单个元素,可以根据需要动态的伸缩; 3、deque提供一些与vector相似的功能,但deque在头部和尾部进行数据插入和删除操作更加高效。与vector不...

2019-08-26 15:25:33 498

原创 C++容器----list总结

1.概述 1.list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。 2.list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向器前一个元素和后一个元素。 3.list与forward_list非常相似:最主要的不同在于forward_list是单链表,只能朝前迭代,已让其更简单高效...

2019-08-26 12:05:52 286

原创 Linux多线程

1.线程 线程概念:linux下,线程以进程的pcb模拟实现,因此linux下的线程就是pcb,是一个轻量级进程; 简单谈一谈线程:说到线程概念,必须先说到进程。进程是一个运行中的程序,在操作系统中,一个程序运行起来,程序被加载到内存中,操作系统创建一个进程描述符(进程控制块),PCB对程序的运行进行描述控制,因此进程就是pcb,在linux是task_struct结构体。...

2019-08-26 11:01:18 313

原创 项目:数据卫士

一、设计思想 在学校使用百度网盘,每次下载文件的速度特别慢(下载文件电脑都要开一晚上),于是我有了一个想法,自己实现一个文件的上传、备份、下载的小项目,给自己和舍友使用。二、设计平台 windows下vs2013实现客户端myClient,CentOS下实现服务端myServer和myCompress三、设计内容 1、客户端 1&gt...

2019-08-22 14:32:13 216

原创 项目:保密

首先介绍一下加密相关的知识: 1、加密分为对称加密和非对称加密 对称加密:双方使用同一种加密/解密规则,对信息进行加密和解密。 非对称加密:一方生成两把密钥(公钥和私钥),公钥是公开的,私钥是保密的;另一方获取到公钥,然后用它对信息加密;一方得到加密后的信息,用私钥解密。 2、RSA加密/解密公式 加密:公钥(E...

2019-08-22 14:29:42 337

原创 C++容器---vector总结

1.vector介绍 1.vector是表示可变大小数组的序列容器; 2.就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自动处理; 3.本质讲,vector使用动态分配数组来存储它的元素,当新元素插入时候,这个数组需要被重新分...

2019-05-20 14:25:13 348 1

原创 C++容器---string知识点总结

1.标准库中的string类 简单概述: 1.string是表示字符串的字符串类 2.该类的接口与常规容器的接口基本相同,再添加了一些专门用来操作string的常规操作 3.string在底层实际是:basic_string模板类的别名,typedef basic_string<cahr, char_traits, allcoa...

2019-05-17 16:36:07 316 1

原创 C++模板总结

1.泛型编程 理解:就是编写与类型无关的通用代码,是代码复用的一种手段。 为什么要实现泛型编程? 我们已经知道在C++中函数可重载,在函数重载有些地方不好使用:代码的复用率比较低;代码的可维护性比较低。因为C++中有模板,所以采用模板可以实现泛型编程,从而生成代码,这样就不需要我们去一个一个重载一些通用的函数。(比如:交换函数) 从这里我们引出模板...

2019-05-17 10:31:37 434

原创 C&C++内存管理

1.C/C++内存分布 经典问题: 说明:1、栈又叫堆栈,非静态局部变量/函数参数/返回值等等,栈是向下增长的; 2、内存映射段是高效的I/O映射方式,用于装载一个共享的动态内存库; 3、堆用于程序运行时动态内存分配,堆...

2019-05-08 11:07:47 1084

原创 Linux下的信号(signal)

1.信号:是一个软中断--通知进程事件的发生 信号的生命周期:产生->注册->注销->处理 产生:(硬件/软件) 处理:(默认/忽略/自定义)2.信号的产生 62种信号---使用kill -l命令查看 1-31 (非可靠信号/非实时信号) 34 -64 (可靠信号/实时信号) 硬件产生:ctrl+...

2019-05-07 09:36:24 392

原创 linux下进程通信

1.基本介绍 进程间通信的目的:数据传输、资源共享、进程控制 如何通信的? 1.因为进程独立性,因此通信需要双方拥有公共的媒介才能通信,而这个媒介由操作系统提供; 2.因为通信场景不同,因此操作系统也提供多种不同的进程间通信方式;2.进程间通信方式: 1>管道:匿名管道/命名管道---半双工通信1 管...

2019-04-27 09:54:20 193

原创 Linux命令练习

1. 将之前所创建的目录和文件全部清理掉 2. 在家目录下创建 ~/workspace/cmd 目录以及 ~/workspace/tmp/test 目录(什么是家目录?) 家目录是在/home里面的目录3. 进入 ~/workspace/cmd 目录,创建一个空文件my.txt 4. 使用重定向>>与echo命令向my.txt文件写入 h...

2019-04-27 09:31:05 2230

原创 数据结构七大排序及时间复杂度和空间复杂度的比较

1、插入排序 主要思想:从第一个元素开始往后走,只不过每次比较从后往前比较。 具体实现:记录走到的元素的值,给前面排好序的元素比较,遇见大的向后搬移,直到遇见小的,将该值放在小值的后面void InsertSort(int array[], int size){ for (int i = 0; i < size; i++){ int last ...

2019-04-15 22:31:08 2799

原创 linux下的基础IO

Linux下IO的系统调用接口 文件流指针 文件描述符 文件重定向Linux下ext2文件系统 inode节点 软链接/硬链接 动态库和静态库的生成1.系统调用接口: open、close、write、read、lseek库函数和系统调用函数的关系:上下级的调用关系 int open(const char* pathname, int flags...

2019-04-05 07:30:31 251

原创 深入探索C++类和对象

1.构造函数 1>构造函数体赋值 在创建对象时,编译器通过调用构造函数,给对象中各个成员变量一个合适的初始值。 注意:成员变量只初始化一次(在初始化列表中),构造函数体内的语句只能将其称为赋初值,而不能称为初始化,因此构造函数体内可以多次赋值。 2>初始化列表 初始化列表:以一个冒号开始,接着是一个逗号分隔的数据...

2019-03-24 10:29:01 282 1

原创 C++类和对象默认成员函数总结

1.类的6个默认成员函数有哪些 2.构造函数 什么是构造函数? 构造函数是一个特殊的成员函数,名字与类名相同,创建类类型对象时由编译器自己调用,保证每个数据成员都有一个合适的初始值,并且在对象的生命周期内只调用一次(其主要任务是初始化对象) 构造函数的特性 1、函数名和类名相同 2、无返回值 ...

2019-03-15 19:53:37 308

原创 C++类与对象基础知识

1.初步认识类与对象 主观世界的抽象类别-----&gt;计算机世界中的类;现实世界的实体-----&gt;计算机世界的对象; 在现实世界中,实体被抽象成抽象类别;在计算机世界中,类可以被实例化为对象; 简述C语言与C++的区别: C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题; C++基于面向对象...

2019-03-13 20:30:12 670

原创 C++基础知识

1.C++关键字2.命名空间 为什么要有命名空间? 因为在c++语言中变量、函数、类的名称都存在于全局作用域中,可能会导致很多冲突,使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突或名字污染 怎么定义命名空间? 需要使用namespace关键字,后面跟命名空间的名字,然后接一对{}即可,其中{}中为命名空间的成员,举例如下...

2019-03-12 20:38:38 223

原创 XMind总结C语言知识

本次总结主要针对C语言的总体框架总结,知识点比较全面,但内容还是有缺陷,具体了解还需看书本。 

2019-02-14 15:46:36 708

原创 递归与非递归实现二叉树的遍历

主要讲解二叉树的遍历问题: 前序遍历:访问根结点的操作发生在遍历其左右子树之前。 中序遍历:访问根结点的操作发生在遍历其左右子树中。 后序遍历:访问根结点的操作发生在遍历其左右子树之后。 层序遍历:设二叉树的根结点所在层数为1,层序遍历就是从所在二叉树根结点出发,首先访问第一层的树根结点,然后从左到右访问第2层上的节点,接着是第三层的节点,以此类推,...

2019-01-26 17:41:42 363

原创 用数组实现堆

一、简单了解堆       如果有一个关键码的集合k = {k0,k1,k2,...,kn-1},把它的所有元素按完全二叉树的顺序存储方式存储在一个一维数组中,并满足:ki &lt;= k21+1 且 ki &lt;= k2i+2(ki &gt;= k2i+1 且 ki &gt;= k2i+2) i = 0,1,2...,则称为小堆(或大堆)。将根结点最大的堆叫做最大堆或大根堆,根结点最小的堆...

2019-01-26 17:10:48 2832 1

原创 时间复杂度和空间复杂度详解

一、算法效率 算法效率分析分为两种:第一中是时间效率,第二种是空间效率。时间效率被称为时间复杂度,空间效率被称为空间复杂度。时间复杂度主要衡量的是一个算法的运行速度,而空间复杂度主要衡量一个算法所需的额外空间。二、时间复杂度 简单的来说一个算法所花费的时间与其语句中的执行次数成正比,算法中的基本操作的执行次数,为算法的时间复杂度。 通常表示时间复杂...

2019-01-26 16:40:59 1900

原创 linux下的进程控制

1.进程概念 冯诺依曼体系结构:现代计算机的硬件体系结构 五大硬件单元:输入设备:键盘;输出设备:显示器;存储设备:内存;运算器和控制器:cpu; 硬件结构决定软件行为:数据都是围绕内存流动的 输入设备获取数据存储到内存中,cpu处理数据,是从内存中获取数据,运算完毕放入内存,输出设备从内存获取数据;所有 的设备都是围绕内存工作的2.操作...

2019-01-13 12:26:04 306

原创 C语言实现栈和队列

一、栈(原理:FILO||LIFO)       实现思想:利用静态顺序表实现栈                     1.定义结构体,包含值和数组还有栈顶成员变量记录栈内元素个数(栈主要就是对栈顶元素的操作)                     2.初始化、销毁(比较简单看代码理解)                     3.增操作:先判断栈是否已满,再在栈顶进行添加;(...

2019-01-08 10:56:47 3007 1

原创 C语言实现双向链表

实现思想:               1.定义两个结构体,一个表示链表的一个单元,另一个表示链表的头结点;               2.链表的初始化(必须让头结点的next和prev指向自己)、清除(不删除头结点)、销毁(删除头结点);               3.增操作:每次增加需要开辟一个单元,所以直接创建一个函数用来创建单元;头插、尾插、pos结点之前插;     ...

2019-01-08 10:09:30 2215

原创 Liunx常用工具

常用工具:1.yum软件包管理器     2.vim文本编辑器     3.gcc编译器     4.Makefile辅助编译   5.gdb调试器   6.git1.yum软件包管理工具        查看可以安装的软件包:yum list | grep **        安装软件包:yum install 安装软件名   (lrzsz 向windows文件传输的软件包)   ...

2019-01-03 20:56:16 177

原创 Liunx基本指令

1.ls指令语法: ls[选项][目录或文件]功能: 对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件以及其他信息。常用选项:-a 列出目录下的所有文件,包括以 . 开头的隐含文件。-l 列出文件的详细信息。-S按文件大小将文件从小到大排序。...

2018-12-28 16:01:08 223

原创 单链表(不带头、不循环)

简单概述:                    1&gt; 定义两个数据结构,第一个结构体成员为数据和指向(指向下一个结点),第二个结构体定义第一个结构的指针,指向这个链表。                    2&gt; 链表的初始化、销毁。                    3&gt; 增删改查操作。                    4&gt; 打印链表。具体...

2018-12-05 14:07:51 229

原创 动态顺序表

简单概要:                    1&gt; 定义一个结构体,结构体存放顺序表中成员的相关信息,其中结构体中定义一个指针,指向动态开辟的空间,使用时定一个结构体变量,这个变量通过-&gt;操作解引用顺序表中的成员。                    2&gt; 初始化、删除顺序表。                    3&gt; 增删改查操作的实现。     ...

2018-12-05 13:45:33 172

原创 C语言文件的基本操作

一、什么是文件     磁盘上的文件是文件,但在程序设计中,我们一般谈的文件有两种:程序文件、数据文件。     程序文件:包括源程序文件(后缀为.c),目标文件(windows环境后缀.obj),可执行程序(windows环境后缀为.exe)。     数据文件:文件的内容不一定是程序,而是程序运行是读写的数据,比如程序运行需要从中读取数据的文件,或者输出内容的文件。二、文件名...

2018-12-02 22:46:38 3552

原创 C语言malloc、calloc、realloc、free的使用

为什么要使用动态内存分配?     当你声明数组时,你必须用一个编译时常量指定数组的长度。数组的长度常常是在程序运行时才知道的,需要的内存取决于输入数据的值,这个大小是固定的,但在很多情况下,我们需要程序在运行时发现内存不够可以自动扩充,这是就要使用到动态内存开辟。具体使用如下:1.malloc用于执行动态内存分配:malloc在堆上申请的空间是固定,可以采用满则扩充的方法实现扩容。...

2018-11-30 00:18:33 345

原创 C语言简单实现通讯录

一、整体思路     1.需要一个结构体,用来表示人的基本信息,再需要一个结构体用来存放人的基本信息,声明一个结构体的全局变量访问结构体成员。     2.定义一个枚举enum,表示通讯录各种执行的操作,用户选择时调用对应的函数。     3.主要的函数:结构体的初始化函数,通讯录的增、删、改、查、显示、退出、清除函数,通讯录用文件的保存、加载函数。     4.main函数:按步...

2018-11-26 08:27:17 5466 1

原创 C语言结构体、联合、位段和枚举知识总结

一、结构体     概述:简单来说结构体就是一些值的集合,这些值是它的成员,只不过各个成员可能具有不同的类型。     结构体的声明:一种不完全声明,一种采用重命名typedef,再就是标准命名。            不完全声明:不声明结构体的tag:就是匿名声明。            重命名:将struct student重命名为student。            标...

2018-11-26 00:14:26 265

原创 模拟实现strncpy、strncat、strncmp

一、模拟实现strncpy    概述:简单来说strncpy就是字符串拷贝,拷贝多少取决于strncpy中n的个数,具体实现如下:    理解: 需要拷贝几个,只需要一个循环就可以了,但是需要注意的是如果dest初始化为0,拷贝完之后不需要再目标字符串末尾加'\0',否则拷贝完成之后,要给目标字符串末尾加'\0',不然就是未定义行为。#define _CRT_SECURE_NO_W...

2018-11-19 13:01:55 191

原创 C语言指针深造及回调函数总结

 一、数组指针      概述:数组指针是指针,简单来说数组可以当做修饰语,修饰指针,只不过它是一个指向数组的指针。      举例:int *p[100];表示指针数组(https://blog.csdn.net/Sun_student/article/details/83932242)这里有指针数组的概念,                 int (*p)[100];表示数组指针,...

2018-11-19 12:07:26 166

原创 C语言模拟实现memcpy和memmove

//模拟实现memcpy和memmove  概述:memcpy:从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中             memmove:用于从src拷贝count个字节到dest;如果目标区域和源区域有重叠的话,mommove能够保证源串在被覆盖之前将重叠区域的字节拷贝到目标区域中,但复制后src内容会被更改。  解题思路:m...

2018-11-07 02:10:14 311

原创 C语言模拟实现strcmp

//模拟实现strcmp  概述:          对两个字符串自左至右逐个字符相比较,直到出现不同的字符或遇到'\0'          注意:比较字符的大小(按ASCII码值大小比较)    解题思路:                 1&gt; 判断出较长的一个字符串,作为for循环的条件,然后才能比较;                 2&gt; 直接比较一个字符...

2018-11-07 01:54:05 2719

原创 C语言模拟实现strchr

//模拟实现strchr  概述:          查找一个字符c在另一个字符串str中末次出现的位置,并返回从字符串中的这个位置起,一直到字符串结束的所有字符。如果未找到指定的字符,返回NULL。   解题思路:                 1&gt; 通过外部函数找到对应的字符,若找到返回该字符,否则返回0;                 2&gt; 通过获取该字符...

2018-11-07 01:37:26 373

原创 C语言模拟实现strstr

 //模拟实现strstr   概述:            //strstr表示查找一个字符串是否是另一个字符串的子集   解题思路:                 1&gt; 在主函数数中进行判断,若返回值为1,说明有相同的字符串,并打印,若返回值为0,没有找到相同的字符串,输出没有找到!;                 2&gt; 若找到源字符串中一个字符与目的字符串...

2018-11-07 00:53:03 358

空空如也

空空如也

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

TA关注的人

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