自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

夜微雨的博客

一名努力进步的小白

  • 博客(70)
  • 资源 (5)
  • 收藏
  • 关注

原创 [Linux]---网络基础( 应用层协议:http协议 )

TCP粘包问题什么是TCP粘包问题tcp对于收发双方的数据采用字节流的方式进行传递,tcp在传输层进行工作,接收到的数据需要递交给应用层,由于接受方tcp对于发送方tcp发送的数据是不分边界的,而是直接全部接受到缓冲区当中的数据递交给应用层。这样就会导致可能发送方发送的两次数据被一次接收后全部交给应用层,应用层如果不加以区分,就会发生问题,无法区分两次接收的数据。下面进行举例:怎么...

2020-09-06 18:43:31 412 1

原创 [Linux项目]---基于Udp/Tcp/Json库/ncurse库的畅聊系统

222

2020-09-03 10:49:44 331

原创 [C++项目]---磁盘管理工具

项目实现功能本项目旨在实现一个文件管理工具,主要功能是删除磁盘中的重复文件。基本原理本项目要用到的是MD5签名判断方法,因此首先我们了解下MD5.MD5是由Ron Rivest在1991设计的一种信息摘要(message-digest )算法,当给定任意长度的信息,MD5会产生一个固定的128位“指纹”或者叫信息摘要。从理论的角度,所有的信息产生的MD5值都不同,也无法通过给定的...

2020-08-01 10:25:52 505

原创 [C++]---C++11相关语法

一、列表初始化内置类型的列表初始化int main(){ // 内置类型变量 int x1 = { 10 }; int x2{ 10 }; int x3 = 1 + 2; int x4 = { 1 + 2 }; int x5{ 1 + 2 }; // 数组 int arr1[5] {1, 2, 3, 4, 5}; int arr2[]{1, 2, 3, 4, 5}; // 动态数组,在C++98中不支持 int* arr3 = new int[5]{1, 2, 3, 4,

2020-05-16 01:15:39 404

原创 [C++]---红黑树性质及简单模拟实现

红黑树的概念红黑树,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,一般是Red或Black。 通过对任何一条从根到叶子的路径上各个结点着色方式的限制,从而确保没有一条路径会比其他路径长出2倍,因而是接近平衡的。红黑树的性质每个结点不是红色就是黑色,根节点是黑色的。 如果一个节点是红色的,则它的两个孩子结点是黑色的,也就是 红色节点不能连续,黑色节点可以连续。 对于每个结点,从该结点到其所有后代叶结点的简单路径上,均 包含相同数目的黑色结点。 每个叶子结点都是黑色的(此处

2020-05-09 17:45:34 282

原创 [C++]---智能指针介绍简单模拟实现

RAIIRAII(Resource Acquisition Is Initialization)根据对象的生命周期控制,初始化构造对象时管理资源,销毁对象在对象析构时释放资源(如内存、文件句柄、网络连接、互斥量等等)的简单技术。这么做的好处:不需要显式地释放资源。 采用这种方式,对象所需的资源在其生命期内始终保持有效。模拟实现SmartPtr模拟实现SmartPtr://智能...

2020-04-24 00:16:49 220 1

原创 [C++]---C++几种类型转换

目录C语言类型转换为什么C++需要四种类型转换C++类型转换static_castreinterpret_castconst_castdynamic_castexplicitC++中的RTTI机制小结C语言类型转换//c语言类型转换void testCast(){ //隐式类型转换 //内置类型 int i = 10; char...

2020-04-22 17:58:04 2913 1

原创 [C++]---AVL树简介及有关接口实现

AVL树概念在之前学习了二叉搜索树时,我们发现二叉搜索树虽可以缩短查找的效率,但如果数据有序或接近有序二叉搜索树将退化为单支树,查找元素相当于在顺序表中搜索元素,效率低下。因此有两位数学家提出了解决上面问题的方法:当向二叉搜索树中插入新结点后,如果能保证每个结点的左右子树高度之差的绝对值不超过1(需要对树中的结点进行调整),即可降低树的高度,从而减少平均搜索长度。AVL树的特点本...

2020-04-14 17:13:00 224

原创 [Linux]---套接字编程(TCP & UDP)

简单对比TCP和UDPsocket应用编程接口详解// 创建 socket 文件描述符 (TCP/UDP, 客户端 + 服务器)int socket(int domain, int type, int protocol);// 绑定端口号 (TCP/UDP, 服务器)int bind(int socket, const struct sockaddr *addr,socklen...

2020-03-27 22:50:27 442

原创 [Linux]---网络基础简介

网络划分:通过网络的覆盖范围划分:局域网:10公里 城域网:10 - 100公里 广域网:几百到几千公里协议相关概念:协议:通信双方的约定,使用同--种解析信息的手段来进行有效的沟通。 网络协议:在网络当中,通信双方对数据交换和数据传输做出约定,需要制定一个通信协议标准计算机当中的协议有很多种,将一系列协议称之为协议簇。 参考模型/体系结构:定义各个协议之间的关系,并且划分每个...

2020-03-17 18:15:27 243

原创 [C++]---异常及处理方法

一.C语言传统的处理错误的方式传统的错误处理机制:1. 终止程序,如assert,缺陷:用户难以接受。如发生内存错误,除0错误时就会终止程序。 2. 返回错误码,缺陷:需要程序员自己去查找对应的错误。如系统的很多库的接口函数都是通过把错误码放到errno中,表示错误。实际中C语言基本都是使用返回错误码的方式处理错误,部分情况下使用终止程序处理非常严重的错误。二. C++异常概念...

2020-03-06 22:45:56 454

原创 [C++]---多态及相关知识

一.多态定义及实现1.1概念具体点就是去完成某个行为,当不同的对象去完成时会产生出不同的状态。举个栗子:比如买票这个行为,当普通人买票时,是全价买票;学生买票时,是半价买票;军人买票时是优先买票。多态是在不同继承关系的类对象,去调用同一函数,产生了不同的行为。1.2实现多态多态条件:前提:继承条件下; 父类存在虚函数,且子类完成该虚函数的重写。 函数重写:子类父类存...

2020-03-06 19:35:42 212

原创 [C++]---有关继承の介绍

一.继承概念继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,相比以前我们接触的复用都是函数复用,继承是类设计层次的复用。#define _CRT_SECURE_NO_WARNINGS 1#include<string>...

2020-03-05 16:20:49 186

原创 [C++]---二叉搜索树简单实现(查找,插入,删除)

目录二叉搜索树概念及特点1.特点二叉搜索树的简单操作1.查找操作2.插入操作3.删除操作二叉搜索树的性能分析二叉搜索树概念及特点1.特点二叉搜索树又称二叉排序树,它可能是一棵空树,或者是具有以下性质的二叉树:若它的左子树不为空,则左子树上所有节点的值都小于根节点的值 若它的右子树不为空,则右子树上所有节点的值都大于根节点的值 它的左右子树也分别...

2020-02-28 18:01:09 1248 3

原创 [Linux]---进程初阶(冯诺依曼体系结构/认识操作系统/进程相关概念/环境变量/程序地址空间 & 进程地址空间比较/进程优先级)

冯诺依曼体系结构认识操作系统进程概念进程状态环境变量程序地址空间进程优先级进程调度一:冯诺依曼体系结构:现代计算机硬件体系结构分类:输入设备:采集数据 键盘输出设备:数据输出 显示器存储器: 内存硬盘(取得慢,磁头寻址)/内存(存取快)内存存储介质属于易失性介质->断电数据会丢失硬盘存储介质属于持久化介质->断电依旧保存数据...

2020-02-26 10:12:13 371 3

原创 [C/C++]---内存管理(一)

目录一:C/C++中内存分布1.C/C++程序内存区域划分:2.定义:二:C语言中的动态内存管理方式:1函数原型:2区别:三:C++中的内存管理方式:1.使用方法:2.operator new与operator delete函数3.new/delete实现原理4.定位new表达式(placement-new)一:C/C++中内存分布1.C/C++...

2020-02-21 15:59:10 132

原创 [数据结构]---堆创建及简单操作

堆特点:堆是完全二叉树. 堆的某个人节点值总是不大于或者不小它的父亲节点的值.堆存储结构和节点关系:堆分为:大堆(大根堆) 小堆(小根堆):上面图可以看出大根堆和小根堆特点: 节点值总是不小于于它的父亲节点的值或者节点值总是不大于于它的父亲节点的值堆操作简述:1.堆向下调整:让调整的结点与其孩子节点进行比较(用于创建堆过程和堆排序)//向下调整 n:数组长...

2019-11-24 11:37:35 466

原创 [C++]---类和对象(三){一. 两种初始化类方法比较 二. static成员 三. 友元 四. 内部类 }

目录一. 两种初始化类方法比较1.两种方法介绍:1.1.构造函数体赋初值.1.2初始化列表.1.3两种方法对比及注意1.4explicit关键字用法二. static成员2.1概念2.2特点:2.3常见问题:三. 友元3.1友元函数:3.2友元函数特点:3.3友元类四. 内部类4.1什么是内部类4.2特点一. 两种初始化...

2019-11-19 14:20:09 190

原创 [C++]---类和对象(二){一.构造函数 二.析构函数  三.拷贝构造函数 四.赋值运算符重载 五.const成员  六.取地址及const取地址操作符重载}

目录一.构造函数作用:特点:注意:二.析构函数特点:三.拷贝构造函数特点:四.赋值运算符重载定义方法特点:以赋值运算符为例:五.const成员定义:关于const几个问题六.取地址及const取地址操作符重载一般来说一个最简单的空类会有最基本的六大成员函数:构造函数、析构函数、拷贝构造函数、赋值运算符重载函数、取地址操作符重载...

2019-11-18 15:24:05 145

原创 C/C+各类型在各个平台下所占大小常用查找表

2019-11-17 11:15:15 115 1

原创 [C++]---类和对象(一){一:类和对象初步了解 二:类的引入与定义 三:类的访问限定符 四:类对象存储模型 五:this指针}

目录一:类和对象初步了解类和对象关系:类与类的实例化二:类的引入与定义C++如何定义类?类的两种定义方式:三:类的访问限定符分类:作用:特点:如何类外访问类的成员四:类对象存储模型两种类对象存储模型假设验证类存储方式:五:this指针this指针的特性:this指针的两个小问题:一:类和对象初步了解C语言是面向过程的,关注...

2019-10-31 16:49:44 285

原创 [C++]---简单入门知识

目录一:命名空间定义命名空间:使用命名空间:二:C++中的输入输出三:缺省参数缺省参数分类:四:函数重载五:函数重载原因还有一点为什么C语言不存在函数重载???条件编译:六:引用引用特点:引用的使用场景:传值、传引用效率比较:引用/指针比较(重点):七:内联函数内联函数特点:八:auto关键字(C++11)auto使...

2019-10-29 15:26:59 198

原创 [数据结构]---排序总结(简单代码实现 简单图解 总结)

目录排序算法常见的有(7+1)种:下面先介绍前七种:算法一:插入排序(插入排序是一种简单直观的排序方法.)算法二:希尔排序(缩小增量排序)算法三:选择排序算法四:堆排序算法五:冒泡排序算法六:快速排序算法七:归并排序还要介绍一种特殊的排序方法-->计数排序算法八:计数排序排序算法复杂度及稳定性分析:排序算法常见的有(7+1)种:...

2019-10-22 15:36:57 567

原创 [数据结构]---队列实现(使用链表)

队列队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表队列具有先进先出FIFO(First In First Out) 特点主要操作:入队列:进行插入操作的一端称为队尾 出队列:进行删除操作的一端称为队头实现过程代码实现//Queue.h#define _CRT_SECURE_NO_WARNINGS 1#pragma once#in...

2019-09-23 22:12:02 254

原创 [数据结构]---实现栈及栈的基本操作(使用顺序表实现)

栈:栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out即后进先出)的原则。栈的基本结构:栈的基本操作:压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。 出栈:栈的删除操作叫做出栈。出数据也在栈顶。栈实现方式:链表...

2019-09-20 17:50:57 702

原创 [数据结构]---带头双向循环链表基本功能实现及与单链表,顺序表区别

带头双向循环链表增删查改实现实现功能://初始化void ListInit(List* plist);//申请结点ListNode* BuyListNode();//销毁void ListDestory(List* plist);//尾插void ListPushBack(List* plist, LTDataType x);//尾删void ListPopBa...

2019-09-20 14:53:45 174

原创 Linux---Linux 常用工具

yum: 软件包管理工具查看软件包: yum list 查看具体安装包 yum list | grep pack_name检查Linux是否联网: ping 网址安装软件包: yum install pack_name eg: yum install gcc移除软件包: yum remove pack_namevim vim没有鼠标,为了完成...

2019-09-19 00:22:10 151

原创 [数据结构]---图示无头单向不循环链表及有头双向循环链表的一些简单操作

单链表进行以下简单操作.1头插cur->next=head;head=cur;2.头删tmp=head;head=head->next;free(tmp);3.后插cur->next=pos->next;pos->next=cur;4.后删tmp=pos->next;pos-...

2019-09-19 00:09:26 233

原创 [数据结构]---C语言实现无头单向非循环链表简单基本操作

C语言实现无头单向非循环链表以下操作://初始化void SListInit(SList* plist);//销毁void SListDestroy(SList* plist);//创建结点SListNode* BuyListNode(SLTDataType x);//头插void SListPushFront(SList* plist, SLTDataType x);...

2019-09-08 14:21:21 255

原创 [数据结构]---C语言实现: 顺序表的增删改查等操作

顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。顺序表一般可以分为:静态顺序表:使用定长数组存储。(栈上) 动态顺序表:使用动态开辟的数组存储。(堆上)// 顺序表的静态存储#define N 100typedef int SLDataType;typedef struct SeqList{ SL...

2019-09-05 10:28:31 1497

原创 [数据结构]---算法效率,时间复杂度,空间复杂度.

算法效率.一般分为时间效率(时间复杂度),空间效率(空间复杂度)两种。时间复杂度主要衡量的是一个算法的运行速度,而空间复杂度主要衡量一个算法所需要的额外空间,在计算机发展的早期,计算机的存储容量很小。所以对空间复杂度很是在乎。但是经过计算机行业的迅速发展,计算机的存储容量已经达到了很高的程度。所以我们如今已经不需要再特别关注一个算法的空间复杂度。时间复杂度算法的时间复杂度是一个函数...

2019-09-03 10:33:50 782

原创 实现一个彩色的进度条

实现一个彩色的进度条要实现这个小的程序需要了解一些知识.Linux下的 \n 与 \r\n : 换行 \r: 回车在linux下的回车键只代表\n,而在windows下的回车键表示\r\n(\n为进入下一行,\r为回到行首上)linux下只用\n,它就表示回车+换行而windows下,\r只回车不换行的,\n是换行.缓冲区缓冲区...

2019-08-28 17:02:06 407

原创 Linux---Linux下权限及粘滞位总结

权限个人理解权限就是系统 对于一个目录或者文件可不可以进行一些操作进行设置.Linux将用户分为了两种: 超级用户(root),普通用户超级用户:拥有系统中的最高权限,做任何事不会受到限制.普通用户:只能做一些有限的操作下图Linux下文件的详细信息:一.Linux文件类型:-普通文件 比如.exe , 库文件 d目录文件 l 链接...

2019-08-26 18:19:30 392

原创 strlen 和sizeof 区别,联系

一.sizeof头文件: typedef类型: unsigned in使用方法:sizeof (类型说明符) 或者 sizeof 表达式(表达式可以是数组、指针、类型、对象、函数等)作用:返回一个变量或者类型的大小(以字节为单位);在 C 语言中,sizeof() 是一个判断数据类型或者表达式长度的运算符。sizeof语法有以下两种:sizeof(type_na...

2019-08-25 18:55:57 306

原创 字符串压缩

字符串压缩,输入字符串只包括 a-z字母及结束标志,请编写函数实现对连续出现字符进行压缩.例如:压缩前:str="aaabbcdddd";压缩后:str="3a2bc4d"; 看到这个题,我们可以想到的是从前到后遍历字符串,设置计数器,对每个出现字母使用cout进行计数,但要注意每次计数完一个字符都要进行cout重置还有cout应该设置初值时从1开始...

2019-08-25 16:03:41 242

原创 模拟实现pow(x,y)库函数

pow函数.头文件:#include <math.h>pow() 函数用来求 x 的 y 次幂(次方),其原型为:double pow(double x, double y);看到这个题,我们首先能想到是计算量这么大的题,肯定要使用递归.实现:#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>...

2019-08-24 22:28:24 2996

原创 [数据结构]---快速排序算法

快速排序算法(时间复杂度:O(nlogn))是在起泡排序的基础上进行改进的一种算法,其实现的基本思想是:通过一次排序将整个无序表分成相互独立的两部分,其中一部分中的数据都比另一部分中包含的数据的值小,然后继续沿用此方法分别对两部分进行同样的操作,直到每一个小部分不可再分,所得到的整个序列就成为了有序序列。快速排序算法通过多次比较和交换来实现排序,其排序流程如下:...

2019-08-24 21:18:45 432

原创 Linux---Linux 简单指令

首先,我们简单了解下Linux发展史. 最初Linux是基于UNIX的一款小型操作系统,其内核是在1991年被一名研究生所编制的.他把这个简单的版本在网络上共享,这也是最早的互联网开源行为,而后经过世界上越来越多程序员不断进行完善修改,才具有了最初的雏形,也就是1.0版本.到现在由于其开源,仍受到广大公司及程序员的欢迎,并衍生出了更多的类Linux产品.简单来说Linux是一款由C语...

2019-08-23 23:08:59 192

原创 程序的编译,链接

我们基本都知道一个程序由代码行再到最后被执行生成目标文件,会经历四个过程:1:预编译(Prepressing) 2.编译(Compilation) 3.汇编(Linking)4.链接(Assembly)但其中每个步骤都发生了什么,还是不太清楚,今天我们就来学习了解下这个过程.一.预编译.(假设原文件是.c文件 .c------> .i文件)linux命令(gcc...

2019-08-23 00:17:24 162

原创 从第一个字符串中删除第二个字符串

输入两个字符串,从第一个字符串中删除第二个字符串.例:arr1[]={"How are You"};arr2[]={"aeo"};删除后为:arr1[]={"Hw r Yu"} ;方法一: 首先看到这个题,惯性思维我们会想到申请一个新的数组,然后遍历arr2,再遍历arr1z,碰到相同的进行删除操作即可.再把删除后的放在新数组,打印输出即可.不过这...

2019-08-20 15:34:21 2770

C++课设工资发放系统.docx

a. 程序完成企业人事工资管理, b.能够实现工资的录入、添加,统计、查询(按工号或姓名查询)、修改、删除等功能。程序执行的命令 c.录入员工工资信息 d.选择需要执行的操作(添加、统计、删除、修改、查询); 输出结果。

2020-06-17

银行家算法课设书及代码

实现银行家算法.本文对如何使用银行家算法来处理操作系统给进程分配资源做了详细的说明。加深了解有关资源申请、避免死锁等概念,并体会和了解死锁和避免死锁的具体实施方法。死锁的产生,必须同时满足四个条件,防止死锁只要确保四个条件之一不出现,则系统就不会发生死锁。通过这个算法可用解决生活中的实际问题,如银行贷款等.本文对如何使用银行家算法来处理操作系统给进程分配资源做了详细的说明。

2020-01-09

os实验动态分区.doc

首次适应算法(FF): 空闲分区链以地址递增的次序链接。在分配内存时,从链首开始顺序查找,直到找到一个大小能满足要求的空闲分区为止。该算法倾向于优先利用内存中低址部分的空闲分区,从而保留了高址部分的大空闲区,这为以后到达的大作业分配大的内存空间创造了条件。 循环首次适应算法:空闲分区链以地址递增的次序链接。进行内存分配时,从上次找到的空闲分区的下一个空闲分区找起。 最佳适应算法(BF): 每次为作业分配内存时,把能满足要求、又是最小的空闲分区分配给作业,避免大材小用。为了加速寻找,该算法要求将所有的空闲分区按其容量从大到小的顺序形成一空闲分区链,自表头开始查找到第一个满足要求的自由分区分配。该算法保留大的空闲区,但造成许多小的空闲区。 最坏适应算法:空闲分区链按由大到小的顺序排列,从链首开始找起,每次将满足要求的最大空闲分区分配出去。

2020-01-09

os实验报告.doc

实现以下进程调度算法: 1.先来先服务:把当前处于就绪队列之首的那个进程调度到运行状态。也就说,它只考虑进程进入就绪队列的先后,而不考虑它的下一个CPU周期的长短及其他因素。 2.短作业优先:在多个进程中,优先执行运行进程短的作业。 3.时间片轮转:主要用于分时系统中的进程调度。为了实现轮转调度,系统把所有就绪进程按先入先出的原则排成一个队列。新来的进程加到就绪队列末尾。每当执行进程调度时,进程调度程序总是选出就绪队列的队首进程,让它在CPU上运行一个时间片的时间。 4.高优先级优先:在进行多道作业时,按照优先级高的顺序执行进程调度的顺序

2020-01-09

Linux常用命令.txt

Linux及Vim一些实用的命令,快捷键的总结,应该还算完整,不够完整可以再增加,方便使用Linux及小工具 . 包含Git,与Vim相关的命令

2019-08-23

空空如也

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

TA关注的人

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