自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux|线程那些事

线程什么是线程?线程的优点线程的缺点线程异常线程用途怎么使用线程?POSIX线程库线程的创建**线程ID及进程地址空间布局**分离线程线程互斥线程同步什么是线程?在一个程序里的一个执行路线就叫做线程(thread)。更准确的定义是:线程是“一个进程内部的控制序列”一切进程至少都有一个执行线程线程在进程内部运行,本质是在进程地址空间内运行在Linux系统中,在CPU眼中,看到的PCB都要比传统的进程更加轻量化-透过进程虚拟地址空间,可以看到进程的大部分资源,将进程资源合理分配给每个执行流,就形

2020-06-09 16:06:30 260 1

原创 Linux|Linux常用指令总结

在进入Linux的学习以来,要学习,练习,使用,各种各样的指令。随着学习的不断深入,学习到的指令也是越来越多,越来越繁杂,因此想写一篇博客来记录总结自己学习的到的Linux指令,并且不断的更新,使得这篇博客不断的完善,以便于自己日后对于生疏指令的查找。ls指令用法:ls [选项] [目录或文件夹]功能:对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。常用选项选项功能-a列出目录下的所有文件,包括以 . 开头的隐含文件。-d将.

2020-05-17 16:26:09 275

原创 网络通信|Socket编程

Socket编程什么是Socket编程预备知识理解源地址IP和目的IP地址认识端口号理解 "端口号" 和 "进程ID"理解源端口和目的端口号TCP传输协议UDP传输协议网络字节序Socket编程接口常见APIsockaddr结构sockaddr_in结构in_addr结构什么是Socket编程传输层实现端到端的通信,因此,每一个传输层连接有两个端点。那么,传输层连接的端点是什么呢?不是主机,...

2020-05-02 20:22:17 383

原创 网络通信|TCP传输协议

TCP传输协议什么是TCP传输协议TCP协议段格式确认应答机制超时重传机制滑动窗口机制延时应答机制捎带应答机制什么是TCP传输协议传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP协议段格式16位源端口号:标识数据来自哪个进程;16位目的端口号:标识数据去向哪个进程;32位序号:用来标识...

2020-05-01 10:56:19 405

原创 网络通信|UDP传输协议

UDP传输协议什么是UPD传输协议UDP协议格式UDP的特点面向数据报UPD的缓冲区UPD使用注意事项基于UDP的应用层协议什么是UPD传输协议UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,OSI 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。UDP协议格式源端口号:表明数据从那个进程发送出。目的端口号:表明数据...

2020-04-26 16:19:41 690

原创 C++项目|群聊系统(Linux)

群聊系统项目背景项目简介客户端需求分析服务端需求分析服务端功能分析用户管理用户注册用户注册的信息传输已注册用户信息存储用户登录在线用户信息存储为新用户分配ID消息管理消息的接收消息的发送日志消息客户端需求分析客户端界面用户注册登录申请用户消息发送用户消息接收在线用户列表展示项目总结不足之处原码链接项目背景如今各式各样的聊天工具层次不穷,作为计算机专业的学生,我也想通过自己的努力,实现一个简单的...

2020-04-19 18:53:58 539 3

原创 指针总结_上

一、什么是指针?指针(Pointer)是编程语言中的一个对象,利用地址,它的值直接指向(points to)存在电脑存储器中另一个地方的值。简单的来说指针就是指向一个变量的存储地址,这个变量的类型可以使我们的内置类型(int,char,double,等等),也可以是我们自定义类型,对于指针的理解,我们可以将这个变量类比成一个人,指针保存的就是这个人的地址。假设我们有事情要找到这个人,接下来...

2020-02-23 17:55:10 155

原创 C++|继承

继承的定义通过继承机制,可以利用已有的数据类型来定义新的数据类型。所定义的新的数据类型不仅拥有新定义的成员,而且还同时拥有旧的成员。我们称已存在的用来派生新类的类为基类,又称为父类。由已存在的类派生出的新类称为派生类,又称为子类。简单的来说,继承就是新的类可以继承一个已经存在的类,同时新创建的类拥有所继承的类的成员,但要注意的是,我们在继承的时候也会有继承的权限,并不是我们继承了旧类的成员...

2020-02-22 17:38:07 109

原创 C++项目|磁盘文件管理工具

一、简述磁盘文件管理工具该工具的主要功能是删除磁盘中的重复文件。如何判断两个文件的内容是否完全一致,我们采用计算文件指纹的方法,通过指纹验证的方法判断两个文件是否相同。所谓的文件指纹即数字签名。二、 该工具实现所需要解决那些问题如何判断两个文件的内容完全一致?数字签名如何进行计算?如何获取磁盘中的文件信息?怎么去找到那些文件内容相同的文件?三、 概述问题的解决方法我们可以...

2020-02-20 17:21:24 614

原创 练习|找出旋转数组的最小数字

题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组{3,4,5,1,2}的一个旋转,该数组的最小值为1。问题分析:我们可以发现旋转之后的数组看似无序,但我们却可以换分为两个排序的子数组,而且,前面的子数组的元素大于或者等于后面子数组的元素,而且该数组的最元素刚好是这两个子数组的分界线。在排序的数组中...

2020-02-11 17:12:38 134

原创 C++|摸版

一、 泛型编程举一个简单的例子,我们如何去实现一个通用的交换函数?void Swap(int& left, int& right){ int temp = left; left = right; right = temp;}void Swap(double& left, double& right){ double temp = left; l...

2020-02-11 15:59:57 210

原创 C++|STL库容器小结

一、 什么是STL库STL(standard templatelibaray-标准模板库):是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架。二、STL库的六大组件仿函数:...

2020-02-11 15:15:28 315 2

原创 操作系统|进程调度

进程调度进程调度室操作系统必不可少的一种调度。因此在三种类型的OS(DOS、Windows、Linux),都无一例外地配置了进程调度。此外它也是对系统性能影响最大的一种处理机调度。进程调度的任务保存处理机的现场信息。在进行调度时首先需要保存当前进程的处理机的现场信息,如程序计数器、多个通用寄存器中的内容。按某种算法选取进程。调度程序按某种算法从就绪队列中选取一个进程,将其状态改为运行...

2019-12-02 22:34:39 608

原创 操作系统|时间片轮转调度算法(RR)

模拟实现非抢占式将进程信息表的信息根据进入时间排序,判断当前时间线下有哪些进程到达,将其插入到等待队列中,等待分配一个时间片,若进程未全部执行结束,将其插入队尾,等待下次分配。在进行插入队尾前判断当前时间下哪些进程到达,将其依次插入到队尾中单步执行进程//单步执行进程void TmpOfPrccess(Process& process, int n){ //如果服务时间等...

2019-12-02 22:26:18 5413

原创 操作系统|高响应比优先算法(HRRN)

模拟实现的为非抢占式首先,根据时间线的时间判断进程时间是否到达,如果进程时间到达,将进程存入缓冲池中,在每次执行前先计算出缓冲池中的进程响应比,得到响应比最高的进程信息,单步执行该进程单步执行进程信息//单步执行进程void TmpOfPrccess(Process& process, int n){ //如果服务时间等于剩余服务时间,则证明该进程第一次被调度 if (p...

2019-12-02 22:13:44 8319 4

原创 操作系统|短作业优先调度算法(short job first, SJF)

模拟的实现为非抢占式短作业优先,以为着当在已经到达的进程中,选择所需运行时间最短的先执行。首先我们需要一个缓冲池(等待队列),在缓冲池中保存已经到达的进程。将缓冲池中的进程信息根据服务时间进行排序没选择缓冲池中所需服务时间最短的优先执行单次进行进程调度在函数中process为单条进程信息,n为系统分配的时间片长度//单步执行进程void TmpOfPrccess(Proce...

2019-12-02 21:35:45 3883

原创 操作系统|先来先服务时间调度算法(FSFC)

模拟的实现为非抢占式先来先服务算法,根据其字面意思我们就可以知道,该进程调度算法是根据到达时间依次执行,因此我们可以很容易想到用使用排序对进程进入时间进行排序操作。进程信息根据进入时间排序//按照进入时间进行排序void EnterTimeSort(vector<Process>& process){ if (process.size() == 0) ret...

2019-12-02 21:15:19 3622

原创 操作系统|进程调度算法进程对象创建

首先我们要清楚在进程对象中需要拥有哪些信息:①进程标识符;②进程进入时间;③进程结束时间;其次,在进程执行时,我们又需要哪些中间值来辅助进程进行:①服务剩余时间;②时间线;③优先级;最后,在进程执行结束后,我们需要得到哪些信息:①进程开始时间;②进程结束时间;③进程周转时间;④进程带权周转时间;在上述中我们可以发现创建进程类时,其中拥有一个很重要的对象,就是时间,因此我们也需要实现一个时...

2019-12-02 20:55:58 304 1

原创 C++|类与对象_3

1. 再谈构造函数1.1构造函数体赋值在创建对象是,编译器通过调用构造函数,给对象各个成员变量一个合适的初始值。class Date{public: Date(int year, int month, int day) { _year = year; _month = month; _day = day;}private: int _year; int _mont...

2019-11-18 19:54:22 104

原创 C++|类与对象_2

1. 类的6个默认成员函数如果一个类中什么成员都没有,简称为空类。空类中什么都没有吗?并不是的,任何一个类在我们不写的情况下,都会自动生成下面6个默认成员函数。构造函数拷贝构造函数析构函数赋值运算符重载函数取地址运算符重载函数const修饰的取地址运算符重载2. 构造函数2.1 构造函数概念对于以下的日期类:class Date{public: void Set...

2019-11-04 15:11:32 179

原创 C++|类与对象_1

1. 类与对象的初步认识C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。C++是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。2. 类的引入C语言中,结构体中只能定义变量,在C++中,结构体内不仅可以定义变量,也可以定义函数。上面结构体的定义,在C++中更喜欢用class来代替struct Student{...

2019-11-03 16:18:23 175

原创 C++|入门

1. 命名空间在C/C++中,变量、函数和类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突或名字污染,namespace关键字的出现就是为解决这种问题的。1.1如何使用namespace?// 1.普通的命名空间namespace N1 // N1为命名空间的名称{ // 命名空间中的...

2019-11-01 10:09:06 176

原创 1024

就只想要个勋章,自己的勋章太少了

2019-10-24 13:05:49 716 1

原创 排序|常见7种排序

常见的各种排序有哪些?直接插入排序希尔排序冒泡排序选择排序堆排序快速排序归并排序以上七种排序都是我们在学习中经常会遇到的常见的排序插入排序什么是插入排序?当插入第i(i>=1)个元素时,前面的array[0],array[1],…,array[i-1]已经排好序,此时用array[i]的排序码与array[i-1],array[i-2],…的排序码顺序进行比较,找...

2019-10-19 20:01:09 4032 3

原创 数据结构|队

什么是队?队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出FIFO(First In First Out) 入队列:进行插入操作的一端称为队尾 出队列:进行删除操作的一端称为队头队的实现队列也可以数组和链表的结构实现,使用链表的结构实现更优一些,因为如果使用数组的结构,出队列在数组头上出数据,效率会比较低。头文件typedef int ...

2019-10-14 14:20:01 294

原创 数据结构|栈

什么是栈?栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。出栈:栈的删除操作叫做出栈。出数据也在栈顶。栈的实现栈的实现一般可以使用数组或者链表实现,相对而言数组的结构实现更优一...

2019-10-14 14:16:41 104

原创 数据结构|链表

什么是链表?链表是一种物理存储单元上非连续、在逻辑上连续的存储结构。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。优缺点优点:在开辟空间时不会造成空间浪费,。删除,插入时均可将时间复杂度降低为o(1)。缺点:由于节点空间的物理存储不连续,会造成内存碎片化。在查找访问时的时间复...

2019-10-11 19:33:15 144

原创 数据结构|顺序表实现

顺序表?顺序表是在计算机内存中以数组的形式保存的线性表,线性表的顺序存储是指用一组地址连续的存储单元依次存储线性表中的各个元素、使得线性表中在逻辑结构上相邻的数据元素存储在相邻的物理存储单元中,即通过数据元素物理存储的相邻关系来反映数据元素之间逻辑上的相邻关系,采用顺序存储结构的线性表通常称为顺序表。顺序表是将表中的结点依次存放在计算机内存中一组地址连续的存储单元中。简单来说顺序表在内存上...

2019-09-27 16:08:05 326

原创 LeetCode|哈希表简单运用解题

什么是哈希表? 哈希表,是根据关键码值而直接进行访问的数据结构。简单但来说是根据在集合内的所有数据所具有的唯一,确定的属性,以此为查找依据,来查找到,并访问该数据内容。例如:一个学生在学校中的学号是唯一确定的,我们想要了解到该学生的信息,只需要通过学号的查询,就可访问到该学生在学校中的所有信息。哈希表的使用原理与之相似。如何简单的使用哈希表由于笔者也是出于初学阶段,仅仅只能通过...

2019-09-07 20:42:48 522 3

原创 C语言|指针总结

指针是什么在计算机科学中,指针(Pointer)是编程语言中的一个对象,利用地址,它的值直接指向(points to)存在电 脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元。因此,将 地址形象化的称为“指针”。意思是通过它能找到以它为地址的内存单元。指针的分类整型指针:int * p字符指针:char * p指针数组:int *p[5]数组...

2019-08-09 21:05:54 233

原创 C语言|数据类型与数据存储

asd

2019-07-30 16:53:14 365

原创 C语言通讯录(文件保存)

头文件#ifndef _CONTACT_H_#include<stdio.h>#include<stdlib.h>#include<assert.h>#include<string.h>#define MAX_NAME 10#define MAX_TEL 11#define MAX_ADDR 15#define MAX_SEX 3...

2019-07-01 17:51:14 1679 3

原创 模拟实现库函数

1.模拟实现strncpyint Mystrncmp(const char *str1,const char*str2,int n){ int i = 0; assert(str1 != NULL && str2 != NULL); while ((*str1 != 0 || *str2 != 0)&&i++<n) { if (*str1 &g...

2019-07-01 11:47:00 117

原创 模拟实现库函数

模拟实现strstr函数#include<stdio.h>#include<stdlib.h>#include<assert.h>#include<string.h>const char *MyStrstr1(const char *str1, const char *str2){ assert(str1 != NULL &amp...

2019-07-01 11:41:52 87

原创 使用数组简单实现通讯录

实现一个通讯录,可以保存联系人姓名、电话、年龄、性别、地址头文件#ifndef _CONTACT_H_#include<stdio.h>#include<stdlib.h>#include<assert.h>#include<string.h>#define MAX_NAME 10#define MAX_TEL 11#define...

2019-06-23 21:13:59 1486

原创 习题与库函数练习

一个数组中有2个数字是出现一次,其他所有数字出现了2次。找出这两个出现一次的数字,编程实现问题分析若数组中只有一个数字出现了一次,其余数字出现了2次,我们可以通过每个数字异或,得到只出现一次的数字。题目要求找出只出现一次的数字,若我们依旧将每个数字进行异或,即得到的数字为;两个只出现一次的数字异或的结果。以如下数组为例:arr[]={1,1,2,2,3,4,4,7,6,6}最终异或结...

2019-06-18 21:54:41 147

原创 指针练习

实现一个函数,可以左旋字符串中的k个字符。ABCD左旋一个字符得到BCDAABCD左旋两个字符得到CDAB问题分析假设字符串为ABCD我们从第二个开始左旋我们可以将这个过程分逐步分解从第二左旋,意思为从B开始因此我们将字符串可划分为 A B CD我们可以将CD看为一个整体,与B进行位置交换 实现 A CD B接着将A 与 CD 进行交换 实现 CD A B 达到目...

2019-06-11 22:01:07 168

原创 面试题练习

数组中前k的最小的数字,不能进行对数组进行整体排序。问题分析在数组中查找前K个最小的数字,我们可以一次对前K个元素,进行遍历,依次比较,从而得到所要的数字。#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>#include<assert.h>int find_m...

2019-06-07 15:12:35 118 1

原创 指针练习 与 杨氏矩阵 学习

1.调整数组使奇数全部都位于偶数前面。要求:输入一个整数数组,实现一个函数, 来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分, 所有偶数位于数组的后半部分。问题分析题目要求将所有的奇数位于数组前半部分,偶数位于数组后半部分假定数组内容为{1,2,3,4,5,6}已知第一位为奇数,位于数组前半部分,所以我们可以从第一个偶数开始移动,设定一个指针p1指向第一个偶数的位置(...

2019-06-05 20:17:56 128

原创 数据在内存中的存储

C语言常见数据类型char 字符数据类型short 短整型int 整型long 长整型long long 更长的整型float 单精度浮点类型double 双精度浮点类型数据类型的基本归类整型char unsigned char signed charshort unsigned short signed sh...

2019-06-03 15:03:31 161

空空如也

空空如也

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

TA关注的人

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