自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++STL基础之模板

文章目录前言一、模板是什么?二、模板的使用1.为什么要使用模板2.函数模板的使用方法3.函数模板的本质4.函数模板的使用规则类模板三、模板注意事项模板参数的分类模板的特化分离编译总结前言熟悉现代面向对象编程语言的朋友肯定都听过泛型编程,那么什么是泛型编程,首先要了解泛型编程必须从模板了解.一、模板是什么?从根本上来说,模板是一种以C++为泛型编程提供的语法支持,为了解决软件危机,软件设计领域提出了一种面向对象(OO)设计思想,但其实泛型编程同样是一种解决软件危机的有效手段,所谓泛型就是指在一个方

2020-12-20 21:36:15 262

原创 面试必考考点之TCP协议

关于TCP协议的博客一直没有开始写,是因为一直不确定自己对TCP协议的认识是否正确,在近些时间查阅了很多书籍,文章之后,感觉对TCP协议有了一个大致的认识,因此开始写此篇博客.(大多数人在学习TCP协议时,都习惯与UDP协议对比着学习,实际上这样学习TCP也是完全可以的,因为很多TCP协议的特性与UDP协议的特性是完全对立的,所以如果要进行对比学习TCP协议的话,可以用此篇博客结合之后的UDP协议的博客进行对比学习)TCP协议作为TCP/IP协议的核心协议,一直都是面试的必考题,也是对网络知识学习的检票

2020-12-16 00:26:56 293

原创 TCP/IP协议之IP协议

IP协议是TCP/IP协议的核心协议,位于四层结构模型中的网络层,主要提供逻辑寻址,能够让数据在不同子网中进行传输,这种传输主要基于IP地址实现.什么是IP地址IP地址是IP协议提供的一种统一的地址格式,为互联网上的每台设备提供一个IP地址,以此来解决互联网中因硬件设备的差异产生的通信问题.为什么使用IP地址在一个局域网中,两台设备可以通过MAC地址进行互相访问,但是在不同的局域网中,由于MAC地址的构造,MAC地址不具备层次结构,不能在其基础上引入真正的现实地址,例如:将一个国家的MAC地址限制

2020-11-30 00:24:47 653

原创 TCP/IP协议之数据链路层

TCP/IP协议数据链路层对应osi七层模型中的物理层和数据链路层.物理层物理层是osi七层模型中的第一层,在进行数据传输时,物理层的作用是提供传输数据的环境,对于计算机,物理层可以理解为网络适配器,而网络适配器又可以分为虚拟网络适配器和物理网络适配器,物理网络适配器例如:无线网卡,有线网卡等一系列,虚拟网络适配器例如:宽带拨号,VPN等一系列网络适配器.数据链路层数据链路层是osi七层模型中的第二层,位于物理层之上,网络层之下,主要用来向上为网络层提供数据传送服务和向下提供网络适配器的链接接口,所

2020-11-27 23:21:42 1218

原创 Linux-多线程编程基础

线程是什么在早期的计算机中并没有线程这个概念,早期CUP的最小分配资源单位和最小调度单位都是线程,然而随着计算机的发展,进程在产生,销毁,切换过程中的时间和空间的浪费被越来越多的人注意到,所以在上世纪80年代,计算机领域提出了轻量级进程(线程)的概念,这种轻量级进程一经提出,便在Windows等图形界面操作系统被应用,因为这种轻量级进程能很好地解决Windows中进程太多,CPU调度过于密集的问题.线程与进程的区别进程是CPU分配资源的最小单位,线程是CPU调度的最小单元;线程是一个轻量级进程,一

2020-11-25 23:02:35 101

原创 TCP/IP协议概述

什么是TCP/IP协议TCP协议全称为传输控制协议,IP协议全称为网络互联协议,TCP协议和IP协议分别为两种不同的协议,但通常情况下TCP/IP协议却不仅仅是两种协议的组合,而是代表着以TCP和IP协议为核心的网络协议簇.起初被当做是一种新的通信技术,直到1983年成为ARPANET网络中唯一指定的协议,该协议族包括TCP协议,UDP协议,IP协议,ICMP协议,HTTP协议等一系列网络协议.TCP/IP协议层次结构传统的OSI层次结构为7层,这7层分别自上而下为物理层,数据链路层,网络层,传输层,

2020-11-23 19:27:27 1175

原创 进程间通信(IPC)

进程间通信提供了进程之间信息传递的方法,提高了进程与进程之间的交互性.进程间通信的常见方式有以下几种:管道.网络套接字.消息队列.共享内存.信号量.本篇文章主要浅析后面三种进程间通信的方式.消息队列什么是消息队列.首先队列一词肯定会联系到数据结构中的队列结构,其次消息为队列中存放的内容,由此可以得出,消息队列即为存放在队列结构中的一些信息.其次,消息队列更是一个典型的生产者-消费者模型,队头只负责读取,队尾只负责存入数据.取数据一端为消费者,存数据一端为生产者,而队列的存储结构则可

2020-11-08 23:34:55 88

原创 Linux下信号signal详解

什么是信号信号又称软中断信号,是进程之间传递信息的一种方式,信号传递过程中不仅可以传递信息,还可以附加传递一些数据信息或其他内容.信号的分类信号按照可靠性可分为,可靠信号和不可靠信号不可靠信号:信号传递过程中有可能丢失的信号为不可靠信号,在操作系统早期发展过程中,UNIX的信号都是不可靠信号,在后期发展过程中,Linux在不可靠信号的基础上发展出了可靠信号,但因版本兼容问题,不可靠信号也在一直沿用.可靠信号:信号传输过程中不会丢失的信号.信号按照时间关系还可分为实时信号和非实时信号实时信号和非

2020-10-29 20:21:23 786

原创 日期类实现

C++作为一门面向对象的语言,抽象思想非常重要,将事物抽象为类,通过对象之间的交互解决问题,是面向对象编程语言的解题思想.本章定义一个日期类,用于解决和日期相关的问题.*要自定义一个类,首先需要构造出类需要的成员变量,日期类的成员变量包括三个变量,年月日.其次,需要实例化类,需要实现类的构造函数,并且可以通过外部传参来初始化对象.类与类之间相互赋值通过拷贝构造的调用.同时希望日期类能进行加减操作,则需要实现类的加减法运算符重载.最后,希望对象之间能实现相互比较,需实现比较运算符重载.为了便于查

2020-10-19 16:41:48 216

原创 Makefile 工程管理工具

Makefile是什么Makefile本质是一种脚本语言,主要用来管理工程中的源文件,Makefile的好处就是在Makefile文件中描述了源文件之间的编译和其他的关系,并且可以定义一些简单的脚本命令来完成一些复杂的工作.有很多工具可以解释Makefile文件,例如Linux中的make,VC中的nmake,在一个很大的工程中,如果用Makefile来管理源文件的话,无疑是一个非常好的选择.Makefile中一些简单的规则在Makefile中若不及加入任何参数的情况下,默认生成第一个目标文件,若目

2020-09-29 17:22:50 163

原创 gcc & gdb

1.什么是gcc & gdb.gccgcc是由GNU组织开发的一款编译器,刚开始只可以编译C语言,经过之后的发展,扩展为能支持更多语言的编译器,例如:如Fortran、Pascal、Objective -C、Java、Ada、Go以及各类处理器架构上的汇编语言等,现在被大多用于类UNIX操作系统的标准编译器.gdbgdb也是由GNU组织发行的一款调试器,被应用于UNIX以及类UNIX操作系用下的一款出色的调试工具.2.gcc的使用.gcc作为一款编译器,其主要功能就是对源代码进行

2020-09-20 21:14:05 1822

原创 C++智能指针剖析

1. 什么是智能指针智能指针是一种为解决在有些情况下,申请的内存资源不能的到及时释放的问题所衍生出来的一种类指针.设计原理智能指针采用了RAII的思想,利用类类型在作用域结束时调用析构函数完成对指针所指向资源的清理.2. 智能指针的应用前面说了智能指针是为了解决资源释放问题所产生的一种指针,所以,主要还是应用在内存泄漏等相关问题上例如:程序员在编写程序时,在堆上new或malloc出一块内存资源,因忘记delete或free而导致的内存泄漏.在代码执行过程中,因异常而跳过内存资源的

2020-08-08 00:01:45 121

原创 vim的介绍及基本用法

vim是什么Vim是从 vi 发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用,和Emacs并列成为类Unix系统用户最喜欢的文本编辑器。以上是选自vim的官方介绍,首先,从官方介绍中可以看出,vim是基于vi文本编辑器上发展出来的更为优秀的一款文本编辑器,其次,vim因其丰富的功能和对程序员的高度友好被程序员广泛使用,最后,vim主要是用于Unix操作系统及类Unix操作系统中.当然,也支持Mac os和Windows操作系统.vim更厉害的

2020-07-10 22:43:56 2679

原创 面试高频考点之vector容器篇

1.什么是vector容器?vector是C++中STL(standard template libaray-标准模板库)的一个容器组件, vector是表示可变大小数组的序列容器,就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自动处理。vector官方文档2.为什么要知道vector?标题中已经明确指出,vector容器是面试时的高频考点,如果不需要找工作

2020-06-27 16:18:20 361 1

原创 C++中string类的剖析与实现

什么是string类.在C++中,string类是一个C++标准模板库中的一个容器,主要用来管理字符串和进行一些相关的操作.该类的接口与一半容器接口基本相同,还有一些专门操作字符类型的接口,它的底层是用char类型实例化了basic_string模板类,不能操作多字符或变长字符序列.string类的构造string() ; string类的无参构造函数,生成一个空的string类对象.string(const char* s); 用C-string构造一个string类对象.st

2020-06-25 16:49:28 231

原创 C++笔记

今日笔记新手上路,如有不足之处,还望指出

2020-05-17 22:15:15 104

原创 二叉树实现及其基本原理

话不多说,都在图上.再上代码typedef struct BinaryTreeNode{ BTDataType _data; struct BinaryTreeNode* _left; struct BinaryTreeNode* _right;}BTNode;// 通过前序遍历的数组"ABD##E#H##CF##G##"构建二叉树BTNode* BinaryTreeCreate(BTDataType* a,int* pi);// 二叉树销毁void BinaryTreeDesto

2020-05-13 18:27:28 732

原创 堆的构建

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

2020-04-14 12:41:30 2830

原创 顺序表

List item

2020-04-09 15:31:59 260

原创 C指针方面笔试题分享

今天总结分享几个关于C语言指针方面的一些笔试题,主要是对前些日子练习的一些总结,同样也希望看到这篇文章的人,对你能有所帮助。如果有错误的部分,也希望即使指正笔试题1.`int main(){int a[5] = { 1, 2, 3, 4, 5 };int *ptr = (int *)(&a + 1);printf( "%d,%d", *(a + 1), *(ptr - 1)...

2020-03-11 20:32:24 391

原创 快速排序算法相关思路与C语言代码

它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

2020-02-09 20:48:23 148

原创 指针

指针是什么?指针在编程语言中,是一个变量,变量内容为计算机中的存储地址,每一个指针可以存储一个字节的地址.指针变量在计算机中所占的内存是多大?在32位系统中,指针占4个字节数,而在64位系统中,指针则占8个字节数.指针的定义int a = 0;int* p = &a;这里定义了一个指向变量a的指针p(p存储了a的地址).计算机可以根据p中存储的a的地址来访问到变量a中存储...

2019-12-08 20:58:06 92

原创 '*','++i'&&'i++'优先级问题

#include<stdio.h>int main() { int a[] = { 1, 2, 3, 4, 5 }; int* p = a; printf("%d,", *p);//p->a[0] printf("%d,", *(++p));//p->a[1] printf("%d,", (*p)++);//a[1]=3 printf("%d,", *p);...

2019-12-01 23:02:27 1194

原创 C语言实现控制台扫雷游戏

编写一个扫雷游戏,实现游戏的基本功能.#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>#include<string.h>#include<time.h>#define ROW 9#define COL 9//1.创建两个地图,初始化//2.打印...

2019-11-28 17:40:24 194

原创 用C语言写一个简单的三子棋游戏

用C语言写一个简单的三子棋游戏,能够实现玩家和电脑的简单对战.首先列出简单的设计框架首先定义一个简单的Face界面定义一个二维数组并进行初始化(全设为空格)打印一个棋盘请玩家进行落子判断游戏是否结束请电脑进行落子判断游戏是否结束回到第三步继续运行,直到游戏结束(游戏中,玩家以输入棋盘坐标的方式进行落子)#define _CRT_SECURE_NO_WARNINGS#in...

2019-11-23 12:48:29 155

原创 递归学习笔记

递归:程序调用自身的编程技巧称为递归递归程序的特点(1) 一定都有递归结束条件(2) 每次结束一次递归的时候,都会向这个结果靠拢递归的使用条件在遇到不允许使用循环/不允许创建临时变量时,大多数条件下会用到递归递归应用举例(1)接受一个整型值(无符号),按照顺序打印它的每一位。 例如: 输入:1234,输出 1 2 3 4.#define _CRT_SECURE_...

2019-11-15 23:43:23 156

原创 编程设计一个简单的计算器程序,要求根据用户从键盘输入的表达式,操作数

编程设计一个简单的计算器程序,要求根据用户从键盘输入的表达式,操作数

2019-11-15 16:29:39 16586

原创 已知三角形的三边长a,b,c,要求编写程序,从键盘输入a,b,c的值,计算 并输出三角形的面积(注意不存在的情况)

已知三角形的三边长a,b,c,要求编写程序,从键盘输入a,b,c的值,计算并输出三角形的面积(注意不存在的情况)/*已知三角形三边a,b,c,则(海伦公式)(p=(a+b+c)/2)S=sqrt[p(p-a)(p-b)(p-c)]=sqrt[(1/16)(a+b+c)(a+b-c)(a+c-b)(b+c-a)]=1/4sqrt[(a+b+c)(a+b-c)(a+c-b)(b+c-a)]*...

2019-11-13 21:43:55 17547

原创 C语言练习题

C语言练习题1.猜数字游戏:完成一个游戏,随机生成一个100以内的整数,让玩家猜这个数字,每次输入都会提醒玩家猜大了或是猜小了,直到猜出最终结果.#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>#include<time.h>//包含时间戳调用的头文件void Int...

2019-11-12 20:13:37 1011 1

原创 Git与Github

什么是Git与Github首先来说一下Git,Git是一个开源的版本控制系统,其作用是帮助程序员更好的管理项目.其主要可以解决三个问题:1.程序编写过程中因一些不可预期的事故导致程序代码遗失.2.软件需求经常被更改,需要同时维护多个版本代码.3.团队协同开发项目,避免程序内容被合并.再来说一下Github,Github是一个全球性的开源编程社交网站,同时也是一个代码托管网站,因仅支持G...

2019-11-09 17:48:57 157

空空如也

空空如也

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

TA关注的人

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