自定义博客皮肤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)
  • 收藏
  • 关注

原创 计算机网络_SYN洪泛攻击的具体过程和解决方法

计算机网络传输层SYN洪泛攻击SYN洪泛攻击发生在三次握手建立TCP连接的过程中。1.具体过程攻击者发送TCP的SYN,服务器返回ACK后,该攻击者就不对其进行确认,那么这个TCP连接处于挂起状态,所谓的半连接状态。服务器收不到再确认的话,还会重复发送ACK给攻击者,这样就更加浪费服务器资源。攻击者如果发送非常大量的这种TCP连接,由于每一个都无法完成三次握手,所以服务器上这些TCP连接会因为挂起状态而消耗CPU和内存,最后服务器可能死机,就无法为正常用户提供服务。2.解决方法(SYN

2020-12-31 19:00:15 5391

原创 C++_文件操作(二进制文件)

C++核心(面向对象)文件操作二进制文件以二进制的方式对文件进行读写操作,打开方式要指定为ios::binary。1.写文件二进制方式写文件主要利用流对象调用成员函数write函数原型:ostream & write(const char * buffer, int len);参数解释:字符指针buffer指向内存中一段存储空间,len是读写的字节数2.读文件二进制方式读文件主要利用流对象调用成员函数read函数原型:ostream & read(char * bu

2020-12-31 18:39:17 1583

原创 C++_文件操作(文本文件)

C++核心(面向对象)文件操作程序运行时产生的数据都属于临时数据,程序一旦结束都会被释放,通过文件可以将数据持久化,C++中对文件操作需要包含头文件<fstream>。文件类型分为两种,文本文件:文件以文本的ASCII码形式存储在计算机中;二进制文件:文件以文本的二进制形式存储在计算机中,用户一般不能直接读懂它们。操作文件的三大类:ofstream写文件;ifstream读文件;fstream读写文件。文本文件1.写文件写文件步骤如下:包含头文件#include<fsre

2020-12-31 17:58:45 996

原创 数据结构_排序算法(交换排序)

排序算法交换排序基本思想:两两比较待排序记录的关键字,一旦发现两个记录不满足次序要求则进行交换,直到整个序列满足要求为止。分类:根据交换思想的不同,可以将交换排序分为:冒泡排序和快速排序。1.冒泡排序冒泡排序是一种最简单的交换排序算法,通过两两比较相邻记录的关键字,如果发生逆序,则进行交换,从而使关键字小的记录如气泡一般逐渐往上“漂浮”,或者使关键字大的记录如石块一样逐渐向下“坠落”分析:时间复杂度O(n^2),空间复杂度O(1),算法稳定。#include <stdio.h>

2020-12-31 16:32:11 455

原创 C++_继承(下)

C++核心(面向对象)类和对象继承接博文C++_继承(上)5.继承同名成员处理方式问题:当子类与父类出现同名成员,如何通过子类对象访问到子类或父类中同名的数据呢?访问子类同名成员,直接访问即可访问父类同名成员,需要加作用域#include <iostream>using namespace std;class Base{ public: Base() { m_A = 100; } void func() { cout<&lt

2020-12-29 19:49:42 81

原创 计算机网络_TCP的传输连接管理(三次握手,四次挥手)

计算机网络传输层传输层是主机才有的层次,其既为应用层提供通信服务,也使用网络层的服务。传输层的功能:第一是提供进程与进程之间的通信(网络层提供主机之间的通信);第二是复用和分用;第三是对收到的报文进行差错检测。传输层的两个协议:TCP协议和UDP协议。TCP协议:面向连接的传输控制协议需要建立连接和释放连接可靠的面向连接,时延大,适用大文件传输TCP协议的特点:面向连接每一个TCP连接只能有两个端点,点对点通信可靠交付,无差错,不丢失,不重复,按序到达(可靠有序,不丢不重)T

2020-12-29 16:45:24 260

原创 C++_继承(上)

C++(面向对象)类和对象继承继承是面向对象三大特性之一有些类与类之间存在特殊关系,下级别成员除了拥有上一级的共性,还有自己的特性,这时需要利用继承的技术,减少重复代码。例:很多网站中,有公共头部,公共底部,甚至公共的左侧列表,只有中心内容不同,接下来分别利用普通写法和继承写法实现网页内容(黑马程序员网站首页)。普通写法#include <iostream>using namespace std;//普通写法class Java{ public: void Heade

2020-12-28 21:01:54 147 1

原创 数据结构_排序算法(插入排序)

排序算法插入排序基本思想:插入排序每一趟将一个待排序的记录,按其关键字的大小插入到已经排好序的一组记录的适当位置,直到所有待排序记录全部插入为止。举例:打扑克牌在抓牌时要保证抓过的牌有序排列,则每抓一张牌就要插入到合适的位置,直到抓完牌为止,即可得到一个有序序列。分类:可以选择不同的方法在已排好序的记录中寻找插入位置。根据查找方法的不同,可将插入排序分为:直接插入排序、折半查找排序和希尔排序。1.直接插入排序直接插入排序是一种简单的排序算法,基本操作是将一条记录插入到已经排好序的有序表中分析

2020-12-27 22:03:28 620

原创 C++_运算符重载

C++核心(面向对象)类和对象运算符重载

2020-12-27 18:37:16 125

原创 C++_友元

C++核心(面向对象)类和对象友元在程序里,有些私有属性也想让类外的一些函数或者类进行访问,此时需要用到友元的技术。友元的目的就是让一个函数或者类,访问另一个类中的私有成员。友元的关键字是friend。友元的三种实现方式分别是:全局函数做友元;类做友元;成员函数做友元。1.全局函数做友元#include <iostream>using namespace std;#include <string>class Building{ friend void goodf(

2020-12-27 18:36:00 140

原创 C++_对象模型和this指针

C++核心(面向对象)类和对象C++对象模型和this指针1.成员变量和成员函数分开存储C++中,类内成员变量和成员函数分开存储只有非静态成员变量才属于类的对象上其余的静态成员变量、静态成员函数和非静态成员函数都不属于类的对象上#include <iostream>#include <string>using namespace std; class Person{ };class Person1{public: int m_a;};c

2020-12-27 18:34:30 50

原创 C++_通讯录管理系统

通讯录管理系统通讯录是一个可以记录亲人、好友信息的工具。系统需求系统中需要实现的功能:添加联系人:向通信录中添加新人,信息包括姓名、性别、年龄、联系电话、家庭地址,且最多记录1000人。显示联系人:显示通讯录中所有联系人信息。查找联系人:按照姓名查看联系人信息。修改联系人:按照姓名重新修改指定联系人信息。删除联系人:按照姓名删除指定联系人信息。清空联系人:清空通信录中所有信息。退出通信录:退出当前使用的通信录。创建项目使用visual studio 2015创建项目。菜单功能

2020-11-19 17:41:29 1275 1

原创 C++_对象的初始化和清理

C++核心(面向对象)类和对象对象的初始化和清理C++面向对象来源于生活,每个对象都有初始设置以及对象销毁前清理数据的设置。1.构造函数和析构函数构造函数和析构函数由编译器自动调用,完成对象初始化和清理编程时,我们不提供构造函数和析构函数,编译器会提供,编译器提供的构造函数和析构函数均是空实现构造函数主要用于创建对象时,为对象成员属性赋值,构造函数由编译器自动调用,无须手动调用析构函数主要用于对象销毁前,系统自动调用,执行清理工作构造函数://构造函数的语法类名(){}没有返

2020-08-24 16:38:01 247

原创 数据结构_顺序表与链表的比较

顺序表与链表从逻辑结构、存储结构、基本操作三个方面来对比顺序表与链表。根据顺序表与链表的优缺点,分析其应用场景逻辑结构顺序表和链表都是线性结构,都属于线性表存储结构顺序表(顺序存储):随机存取,存储密度高,需要大片连续的存储空间,改变容量不方便链表(链式存储):离散的存储空间,改变容量方便,不可随机存取,存储密度低基本操作创建:顺序表创建时必须预先分配大片的连续存储空间链表开始创建时只需为头节点动态分配存储空间销毁:顺序表销毁时需修改表的长度,使Length=0;

2020-08-23 20:21:13 464

原创 数据结构_线性表的链式存储

链表链表是链式存储方式实现的线性表逻辑上相邻的数据元素物理上不一定相邻单链表单链表的节点有一个数据域和一个指针域,数据域存放数据,指针域用来指向下一个节点单链表基本操作的实现(C语言)#include <stdio.h>#include <stdlib.h> //单链表数据类型 typedef struct LNode{ //节点 int data; //数据域 struct LNode *next; //指针域 }LNode, *LinkLis

2020-08-22 21:06:08 186

原创 C++_封装

C++核心(面向对象)类和对象C++面向对象的三大特性:封装、继承、多态。万物皆为对象,对象有其属性和行为。对象:人;属性:身高和体重;行为:走、跳、跑具有相同性质的对象可以抽象为类,如人类封装1.封装的意义将属性和行为作为整体,表现生活中的事物将属性和行为加以权限控制意义一:设计类的时候,将属性和行为写在一起,表现事物;class 类名 {访问权限:属性和行为}。#include <iostream>#include <string>using na

2020-08-21 22:21:14 993

原创 C++_函数高级

C++核心(面向对象)函数高级1.函数默认参数C++中,函数形参列表中的形参可以有默认值。返回值类型 函数名 (参数 = 默认值){函数体}某个位置参数有默认值,那么从这个位置往后,从左至右,必须都有默认值如果函数声明的时候有默认值,那么函数定义时不能有默认值#include <iostream> using namespace std;int func1(int a, int b=10, int c=100){ return a+b+c;}void func2

2020-08-20 23:41:06 140

原创 C++_引用

C++核心(面向对象)引用1.引用的基本概念给变量起别名数据类型 &别名 = 原名#include <iostream> using namespace std;int main(){ int a = 10; int &b = a; cout<<"a = "<<a<<endl; cout<<"b = "<<b<<endl; b = 100; cout<<"

2020-08-20 21:11:46 87

原创 C++_内存分区模型

C++核心(面向对象)内存分区模型C++程序执行时,将内存分为4个区域:代码区:存放函数体的二进制代码,由操作系统管理全局区:存放全局变量、静态变量和常量栈区:内存由编译器自动分配和释放,存放函数的参数值和局部变量堆区:内存由程序员分配和释放,程序员不释放,程序结束时会由操作系统回收内存分区的意义:不同区域存放的数据,被赋于不同的生命周期,可灵活编程1.程序运行前程序编译后,生成exe可执行文件,未执行程序前,将内存分为两个区域:代码区和全局区。代码区:存放CPU执行的机器指令;具

2020-08-20 16:34:47 166

原创 C++_指针和结构体

指针1.基本概念通过指针间接访问内存2.指针变量的定义与使用定义指针 int * p通过解引用的方式来找到指针指向的内存3.指针所占内存空间#include <iostream>using namespace std;int main(){ int a = 10; int * p = &a; cout<<sizeof(int *)<<endl; return 0;}32位的操作系统下,任何数据类型的指针都占用4个字节

2020-08-19 16:49:15 718

原创 C++_数组和函数

数组1.概述数组中的数据具有相同的数据类型数组需要连续的存储空间2.一维数组定义:数据类型 数组名 [数组长度]数据类型 数组名 [数组长度] = {数据1, 数据2,…}数据类型 数组名 [ ] = {数据1, 数据2,…}数组元素下标从0开始数组名:统计整个数组占用内存的大小可获得数组在内存中的首地址#include <iostream>using namespace std;int main(){ int a[4] = {1, 5, 6, 7

2020-08-19 12:15:36 852

原创 C++_运算符和程序的流程结构

运算符1.算术运算符进行四则运算加减乘除 + - * /取模(求余数) 注:只有整型变量可以进行取模运算递增与递减(前置和后置)2.赋值运算符将表达式的值赋给变量= += -= *= /= %=3.比较运算符通过表达式的比较返回真或假== != < > <= >=4.逻辑运算符根据表达式的值返回真或假非!与&&或||程序的流程结构顺序结构、选择结构、循环结构、跳转语句1.选择结构if语句:单行(if…)多行(i

2020-08-18 21:08:52 231

原创 数据结构_线性表的顺序存储

顺序表1.以静态分配为例,完成基本操作:#include <stdio.h>#define MaxSize 10//顺序表的结构体 struct SeqList{ int data[MaxSize]; int length;};//顺序表的初始化 void InitSeqList(struct SeqList *p) { p->length = 0;}void AddSeqList(struct SeqList *q) { int i, n = 4

2020-08-17 23:12:11 254

原创 数据结构_线性表

线性表线性表的定义定义:线性表是由类型相同的数据元素组成的有限序列。注意三个关键字(相同类型、有限、序列)线性表的特点特点:线性表一定存在唯一的第一个元素线性表一定存在唯一的最后一个元素除第一个元素外,其他元素都有直接前趋除最后一个元素,其他元素都有直接后继线性表的每一个元素都具有相同的数据类型线性表的每一个元素都有位置和值,位置是元素与其他元素的关系,值是元素的具体内容线性表中元素的位置和值可以有关系,也可以没关系线性表的基本操作基本操作:线性表的初始化,数据元素的插入

2020-08-17 23:04:22 135

原创 C++_初识C++和数据类型

初识C++1.第一个C++程序#include <iostream>using namespace std;int main(){ cout<<"Hello World"<<endl; return 0;}2.注释#include <iostream>using namespace std;int main(){ //第一个C++程序 cout<<"Hello World"<<endl; /*

2020-08-17 22:00:39 97

原创 排序算法_选择排序

选择排序基本思想:在一个待排序序列中,选取排序码最小的元素,将其按顺序放到已排序的序列最后,直到所有元素排序完毕。简单选择排序思想:第一次排序时,从待排序序列中选取排序码最小的元素,如果它不是第一个元素,则将其与待排序序列中的第一个元素交换;第二次排序时,从剩下的待排序序列选取排序码最小的元素,重复以上步骤,直到得到一个有序序列。实现:#include <stdio.h>void SimpleSelectionSort(int *p, int N){ int i, j; in

2020-08-14 12:34:07 101

原创 排序算法_交换排序

交换排序基本思想:在一个待排序序列中,两两比较元素的排序码,如果不满足次序要求则进行交换,直到整个排序序列满足要求。冒泡排序思想:对待排序序列从前向后,依次比较相邻元素的排序码,若发生逆序,则进行交换。实现:#include <stdio.h>void BubbleSort(int *p, int N){ int i, j; int flag; //标志位,判断元素是否发生交换 int t; //交换时的中间变量 for(i = 0; i < N-1; i+

2020-08-12 18:29:52 256

原创 C语言_动态内存分配

动态内存分配1.静态数组的缺点静态数组长度必须事先指定,且只能是常整数静态数组一经定义,系统就为其分配存储空间,并一直占用此内存,无法手动释放;直到包含此数组的函数终止,系统才可以释放内存静态数组的长度无法在运行过程中发生改变静态数组无法跨函数使用2.动态内存分配函数mallocint *p = (int *) malloc(4); //p为int *类型变量,动态为其分配4个字节的内存 *p = 5; //*p为int类型变量,占用4个字节的内存 free(p); //将p所指向的

2020-08-11 11:33:59 132

原创 C语言_函数与程序结构

函数与程序结构

2020-08-02 10:58:37 413

原创 C语言_控制流

控制流1.if-else语句if(表达式) 语句1else 语句22.else-if语句if(表达式) 语句1else if(表达式) 语句2else 语句33.switch语句:多路判定语句switch(表达式){ case 表达式:语句 case 表达式:语句 default:语句}break语句会导致程序从switch语句中退出。4.while循环与for循环while(表达式

2020-08-01 21:19:44 226

原创 C语言_类型、运算符与表达式

类型、运算符与表达式变量和常量是C语言中的基本数据对象。1.变量名局部变量:较短的变量名外部变量:较长的变量名变量名使用小写字母,符号常量名使用大写字母。2.数据类型与长度字符型 char整型 int单精度浮点型 float双精度浮点型 double3.常量整数常量浮点数常量字符常量常量表达式字符串常量枚举常量字符用单引号;字符串用双引号,末尾默认加’\0’。4.声明在声明变量时也可对其进行初始化任何变量声明都可使用const限定符限定指定变量

2020-07-31 12:46:04 295

原创 C语言_结构体

结构体1.定义:一个或多个变量的集合,变量的类型可能不同。2.声明方式:struct 结构体名称{ 成员1的类型 成员1的名称; 成员2的类型 成员2的名称; ... 成员n的类型 成员n的名称;} x, y, z;3.举例:struct student{ int number; char name[200]; char sex[20];

2020-07-29 13:23:10 132

原创 C语言_数组与指针

数组与指针数组与指针的关系通过数组下标完成的操作都可以通过指针来实现。1.定义:int a[10];a[i] //表示数组a的第i个元素int *p;p = &a[0]; //p指向数组a的第0个元素x = *p; //p的值是数组元素a[0]的地址,将数组元素a[0]中的内容复制到变量x中int *p = a; //数组名就是一个地址,指向数组第一个元素的地址2.举例:#include <stdio.h>int main(){ int a[5] =

2020-07-29 09:43:03 175

原创 C语言_指针

指针1.定义:存储变量地址的变量。2.声明方式:指针类型 *指针变量名3.举例:int *p4.初始化:int x; //第一种方式int *p;p = &x; //p是指向x的指针int x; //第二种方式int *p = &x;**注:**指针变量不能直接赋值,用以下方式赋值。int i, *p, *q; //始终牢记指针是存储变量地址的变量p = &i;q = p;5.指针的作用:存储地址,引用类型,减少内存消耗。6.指针与地址:实现:区

2020-07-28 19:41:15 174

原创 C语言_准备工作

准备工作书籍《C程序设计语言》(第二版 新版)百度云盘链接:C程序设计语言 提取码:nb55集成开发环境(IDE)Dev-C++(版本:5.11.4.9.2)网页下载链接:Dev-C++百度云盘链接:Dev-C++ 提取码:9eewDev-C++安装教程(1)双击下载得到的应用程序(2)开始安装,安装过程不能选择简体中文,先选择English,之后进行设置(3)Dev-C++的条款全部同意(4)选择安装类型,选择Full,全部安装(5)自定义安装路径并安装(6)

2020-07-28 17:22:37 209

原创 C语言_数组

数组一维数组1.概念:相同类型元素组成的集合。2.定义方式:数据类型 数组名[常量表达式]3.举例:int a[3]4.初始化:int a[3]; //第一种方式a[0] = 1;a[1] = 2;a[2] = 3;int a[3] = {1, 2, 3}; //第二种方式int a[5] = {1, 2, 3}; //未赋值,默认为0,即a[3]=0,a[4]=0int a[] = {1, 2, 3}; //未给出数组长度,但根据数组元素个数可得出数组长度为35.一维数

2020-07-28 14:38:09 145

原创 算法思想_动态规划

动态规划1.思想:      上一篇文章算法思想_分治的思想是将问题转化为多个相互独立且结构相同的子问题,如果遇到的子问题不是相互独立的,而是具有一定联系的,此时就需要考虑到动态规划。      动态规划同样是将问题转化为多个子问题,只不过子问题之间不再是相互独立的,而是要在之前阶段子问题解的基础上获得当前阶段子问题的解。2.举例:背包问题。有n件物品和容量为c的背包,给出物品的重量及价值,求解怎样选择物品才能使装入背包的物品重量不超过背包

2020-07-27 11:50:15 120 1

原创 算法思想_分治

分治1.思想:将问题转化为不同层次的子问题,每个层次的子问题相互独立且结构相同,通过求解低层次的子问题,逐步递增到高层次的子问题,最后得到问题的解。自顶向下——分;自底向上——治;最后合并。2.举例:归并排序。3.C语言实现:请见博文排序算法的归并排序。...

2020-07-27 10:29:29 80

原创 算法思想_递归

递归1.思想:将问题转化为小规模的子问题,先求出低层次子问题的解,然后利用相同的方法求高层次的解,最终获得问题的解。2.举例:兔子问题。此时分析兔子问题可发现,其对应Fibonacci数列,第一项和第二项都是1,从第三项开始,每一项都等于前两项的和。3.C语言实现:#include <stdio.h>int Fibonacci(int m){ int n1, n2, n; if(m == 1 || m == 2) return 1; else { n

2020-07-27 10:14:27 66

原创 算法思想_递推

递推1.思想:从已知条件出发,逐步推出问题的解。回忆初中和高中的数学推理题,用到的因为所以就是递归思想的体现。2.举例:兔子问题。一对大兔子每月可以生一对小兔子,新生的小兔子一个月后长成大兔子,且具备繁殖能力。如果不发生死亡,问一年之后有多少对兔子?3.C语言实现:#include <stdio.h>int main(){ int m, n1, n2, num; n1 = n2 = 1; for(m = 1; m <= 12; m++)

2020-07-27 09:50:36 155

空空如也

空空如也

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

TA关注的人

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