自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C/C++知识复习(一)

一 C与C++的区别 1.C是面向过程的语言,而C++是面向对象的语言,因此C++语言中有类和对象以及继承、多态这样的OOP语言必备的内容,此外C++支持模板,运算符重载,异常处理机制,以及一个非常强大的C++标准模板库STL 2.C只能写面向过程的代码,而C++既可以写面向过程的代码,也可以实现面向对象的代码;既然C++是面向对象的OOP语言,因此它还有非常强大的设计模式,比如单例,工厂,观察者...

2019-08-02 21:22:48 283

原创 高级数据结构之二叉树、二叉搜索树、平衡树、红黑树

概念: 二叉树是最多只有左右两个节点的树; 二叉搜索树是在二叉树的基础上,加入了限制:根节点的值大于左子树上的所有值;根节点的值小于右字树上的所有值;左右节点拆分的两个二叉树同时也是二叉搜索树。 平衡树:平衡树是在二叉搜索树的基础上,加入了限制:每个节点的高度差不超过1. 红黑树:平衡树是在二叉搜索树的基础上,加入了限制:每个节点有红或黑颜色;root必须是黑色的;所有叶子节点都是黑色的,是空节点...

2019-08-01 15:03:03 784

原创 Linux知识复习

**一:进程与线程的区别。** 进程是系统进行资源分配和调度的一个独立单位;线程是CPU调度和执行的基本单位。进程是具有一定独立功能的程序与某些数据结合的一次活动,线程是进程的一个实体,是进程内部的一条执行序列。以工厂生产为例,下达任务指标、进行任务生产是以产品为单位的;这里的产品可以理解成程序,而产品的生产过程直到最后的产成品可以看成进程。而线程可以理解成其中的每一道工序流程,一次具体的生产细节...

2019-07-28 14:08:22 173

原创 http的相关

post与get的区别: 最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。 GET在浏览器回退时是无害的,而POST会再次提交请求。 GET产生的URL地址可以被Bookmark,而POST不可以。 GET请求会被浏览器主动cache,而POST不会,除非手动设置。 GET请求只能进行url编码,而POST支持多种编码方式。 GET请求参数会被完整保留在浏...

2019-08-27 14:33:01 165

原创 设计模式-单例模式、观察者模式、工厂模式、代理模式、装饰器模式、适配器模式

首先单例模式: 单例模式的实例化 饿汉模式:在类加载的时候就已经初始化完成,不需要考虑线程安全问题 #pragma once #include <iostream> using namespace std; class Singleton{ private: Singleton(){ cout << "创建了一个单例对象" << end...

2019-08-10 14:55:44 800

原创 Mysql数据库知识学习

数据库的范式规范: 第一范式:保持每一列的原子特性,即每一列不能在分割 第二范式:属性完全依赖于主键(针对联合组件) 第三范式:属性不依赖与其他主属性(不传递) Mysql的存储引擎: Mysql区别于其他关系型数据库的一个特点,就是其插件式的存储引擎。二维表存储在磁盘上,都要存储user.frm(desc user/show create table user),user表的数据,user表的索...

2019-08-09 18:24:30 316

原创 stl库中map set multimap multiset的使用

1:自动排序:map set multimap multiset 是有序容器,即插入的数据会自动排序,但因为multimap multiset允许key值重复,所以key值相同的元素是不会进行排序的,要注意使用哦。 2:insert的使用: map set插入时,先判断 key是否已经存在,存在则不插入,不存在则插入;multimap multiset插入是可以成功地(key重复也可以) 3:...

2019-08-08 15:15:36 238

原创 单链表、双链表、循环链表 大文件查找常见面试问题

一 单链表的逆置(O(1)空间复杂度) 方法一:头插法(迭代法) 算法思想:逆置链表初始为空,表中节点从原链表中依次“删除”,再逐个插入逆置链表的表头(即“头插”到逆置链表中),使它成为逆置链表的“新”的第一个结点,如此循环,直至原链表为空。 void converse(LinkList *head) { LinkList *p,*q; p=head->next;...

2019-08-02 17:48:49 589

原创 C++八大排序复习

所有排序算法均从小到大排序 **一冒泡排序:**冒泡排序的思想就是两两比较,把最大的沉下去;重复沉入最大数据。直到剩下最后两个数据进行比较。 void BubbleSort(int *ar, int len) { int flag = 0; int i = 0; int j = 0; for(i=0; i<len-1; ++i) { for(j=0; j<len-i-1;...

2019-08-01 13:49:08 122

原创 TCP/IP协议头部结构

一 TCP/IP协议族体系结构 数据链路层:数据链路层主要使用ARP(地址解析协议) RARP(逆地址解析协议)网络层使用IP进行寻址。而数据链路层使用物理地址。网络层必须将目标及其的IP转换为物理地址才能使用下层服务,这就是ARP协议的用途。数据链路层把数据封装成帧,不同的传输媒介,帧的类型也不同,以以太网帧为例: 网络层:主要是实现数据包的选路和转发 ICMP(因特尔控制报文协议) 8位...

2019-07-27 13:42:06 1906

原创 航空乘客信誉管理系统复习(一)

一 项目规划: 项目简介:该项目是为了航空公司所使用,用来评测、纪录乘客的信誉程度,从而管理相关的失信人名单,采取措施,提供更好的用户环境。项目由客户端、服务器端、负载均衡端组成实现。 客户端:采用单例连接模式与服务器进行交互。客户端主要采用三个进程来完成,一个进程用来接收服务器的返回信息,一个用来接收用户输入请求,一个用来与信息采集机进行交互。 服务器端:采用半同步半异步线程池框架,采用MVC事...

2019-07-26 14:38:22 175

原创 select、poll、epoll以及epoll的两种模式实现

一:select poll epoll的区别 1 底层实现: select是通过函数select传入感兴趣的可读、可写、异常事件文件描述符集合,select调用返回时,内核修改他们来通知哪些文件描述符就绪,每次使用都需要重新设置文件描述符。 poll是通过函数poll(struct pollfd* fds,nfds_t nfds,int timeout)来传入结构体数组参数,结构体中含有感兴趣的文...

2019-07-26 10:17:09 601

原创 C语言文件操作库函数

创建和打开函数: FILE fopen(const char * path,const char mode); fopen()实现打开指定文件filename,其中mode为打开模式 | 标志 含义 r,rb 以只读形式打开,若文件不存在 ,返回错误 w,wb 以只写方式打开。如果文件不存在,则创建该文件;如果文件存在,则覆盖原文件 a,ab 以追加方式打开。如果文件不存在...

2019-03-27 17:35:49 2592

原创 Linux文件操作常用函数

open()文件打开命令: 函数形式: int open(const char* pathname,int flags); int open(const char* pathname,int flags,mode_t mode); 参数含义: pathname :我们所需要打开的文件名(包含路径名称,不写默认是在当前路径下) flags:flags可以是下面一个或几个值的组合 ...

2019-03-26 20:45:58 779

原创 Linux进程间通讯----管道,消息队列,信号量,共享内存

Linux进程间通讯手段主要有:管道,消息队列,信号量,共享内存,不同网络之间之间通讯会使用socket。 管道: 管道主要通过文件系统的辅助来实现通讯,有两种方式:有名管道与无名管道。 有名管道在磁盘上有一个管道文件标识,但是其进行数据交互时,并不占用磁盘空间,仅在磁盘上存在一个文件i-node节点信息。 有名管道的创建: mafifo filename或 int mkfifo(char* f...

2019-03-26 17:28:07 350 1

原创 八大排序之-----堆排序

什么是堆排序? 堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它也是不稳定排序 什么是堆? 堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。如下图: 堆排序基本思想: 将待排序序列构造成一个大顶堆;此时,整个序列的最大值就是堆顶的根节点将其与末尾元素进行交换,此时末尾就为最大...

2019-01-14 20:57:21 128

原创 二分查找

什么是二分查找: 二分查找的思想: C代码(非递归法): int Search(int*p,int left,int right,int val) { int pos = -1; while(left &amp;amp;lt;= right) { int mid = (right - left + 1)/2 + left; //mid=(right+left)/2 if(val &amp;amp;l...

2019-01-14 20:17:38 194

原创 八大排序算法之-------快速排序及其优化 及其应用寻找第K小元素

什么是快速排序? 顾名思义,快速派速是一种速度比较快,即时间复杂度较低的一种排序方法,其适用于数据混乱无章的情况,在数据完全有序的情况下,快速排序比较糟糕。 算法思想:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小;然后再次按照本方法对两部分再次排序,通过递归;最后数据全部有序。 C代码: int partition(int a[] ,int lo...

2019-01-14 12:35:06 283

原创 八大排序算法之--------选择排序

什么是选择排序? 它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 基本思想:第1趟,在待排序记录r[1]—r[n]中选出最小的记录,将它与r[1]交换;第2趟,在待排序记录r[2]—r[n]中选出最小的记录,将它与r[2]交换;以此类推,使全部有序。(每次假定r[i]最小) C代码: void SelectSort(int...

2019-01-13 22:47:44 123

原创 八大排序算法之--------冒泡排序及其优化

什么是冒泡排序? 冒泡排序,通俗来说即为“沉”下去,即按照要求的条件将最大或最小的放在最后;冒泡排序的基本思路是两两比较,将大的或小的放在后面。 冒牌排序的si ...

2019-01-13 20:41:31 160

原创 Linux常见操作命令及其含义

①:pwd 显示所在的路径 ②:ls 列出当前所在路径下其所包含的信息 -l 列出详细信息 -a 列出包含隐藏文件 -al 列出包含隐藏文件的详细信息 ③:cd 进入所指定的路径 cd ~ 进入当前用户的家目录文件 cd…返回上一级目录 cd-进入上一步操作的目录 ④:文件操作: **普通文件** ...

2019-01-13 18:26:18 411

原创 八大排序算法之--------插入排序

什么是插入排序? 在一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,即为插入排序。 插入排序的基本思想: ①将数据分为两部分,一部分用来存储有序数据,另一部分为无序数组;②每次依次从无序数组中选取一个数据,与有序数据比较,将其插入到有序数组中合适的位置;③重复第②步骤,直到无序数组中不含有数据。此时数组有序。 插入排序的C代码: void Inse...

2019-01-12 11:46:41 142

原创 Linux初学第一讲

第一篇博客 Linux 第一小节 Linux 的目录组织结构:/表示根目录 在其下主要有 bin etc mnt dev home root usr boot lib proc等目录文件。 其中,bin存放系统命令对应的可执行文件;etc为系统的配置目录;mnt为临时挂载点;dev表示设备接口;home表示普通用户的家目录;root表示roo...

2019-01-12 11:19:06 146

空空如也

空空如也

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

TA关注的人

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