自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 问答 (3)
  • 收藏
  • 关注

原创 套接字编程

Linux下的ipc通信管道消息队列共享内存信号量套接字具体讲解由于其中没有套接字的信息,现补充如下套接字(socket)socket是什么socket是计算机之间进行通信的一种约定或者一种方式。通过socket这种约定,一台计算机可以接收其他计算机的数据,也可以向其他计算机发送数据,这也就实现了计算机间的通信。socket原意是“插座”,计算机通信领域是“套接字”,把插头插到插座上就可以从电网中获取电力,同理,为了与其他计算机进行数据传输,需要连接到因特网,而socket就是链接因

2022-01-14 17:27:14 228

原创 【linux项目】多人聊天室

多人聊天室搭建一个可以实现多个用户同时在线聊天的多人聊天室客户端1.注册用户信息bool Register() 89 { 90 if(!connect_server()) 91 { 92 return false; 93 } 94 9

2021-02-23 15:11:55 1209

原创 【linux】shell脚本

简单的hello world echo -e "hello world\n" sh+文件名//执行shell脚本 [1@bogon shell]$ sh hello_world.sh hello worldsh - x +文件名 //查看脚本执行过程[1@bogon shell]$ sh -x hello_world.sh + echo -e 'hello world\n'hello world年月日时分秒 1: time.sh 1 date "+%y-%m-%d

2021-01-29 17:29:46 429

原创 【linux】多线程

线程是操作系统调度的最小单位进程是操作系统分配资源的最小单位线程是什么线程:操作系统调度的最小单位,线程被包含在进程中,是进程中实际的运行单位。  一个线程指的是进程中一个单一顺序的控制流,一个进程可以并发多个线程,每个线程并行执行不同任务  线程是独立调度和分派的基本单位  同一进程的多个线程将共享进程中的全部系统资源,ege:进程的虚拟地址空间,文件描述符表  同一进程的多个线程有属于自己的调用栈,自己的寄存器  一个进程可以有很多线程,每个线程并行执行不同的任务  有时线程

2021-01-15 09:21:07 327

原创 【linux】进程信号

信号基本概念信号就是一个软件中断,打断当前正在运行的进程,让该进程去处理信号的事件,当前执行的程序陷入死循环时,摁下ctr+c,死循环界面就会结束,这一现象就是一个中断现象信号介绍每一个信号都有属于自己的一个编号和宏定义,这些宏定义都可以在signal.h中找到,在man手册中有这些信号的详细信息,只需要在使用时及时查看即可产生信号的方式通过键盘的组合键产生,比如ctrl+c产生SIGINT信号中断当前的前台进程,ctrl+\产生SIGQUIT信号让进程崩溃并产生coredump文件,ctrl

2020-12-25 17:16:51 226

原创 【linux】进程间通信

进程间通信:进程和进程间交换数据管道(数据传输)共享内存(数据共享)消息队列(数据传输)信号量(进程控制)管道:内核当中的一块内存,内核为进程间通信创建的缓冲区匿名管道创建匿名管道#include<unistd.h>int pipe(int fd[2]);fd[2]:具有两个元素的整型数组,数组当中的每一个元素都是一个文件描述符fd[2]是一个出参,内核返回给用户两个文件描述符fd[0]:表示读端,操作fd[0]可以对匿名管道进行读;fd[1]:表示写端,操作fd[

2020-12-19 16:34:03 149 1

原创 【linux】基础IO

打开文件 #include <stdio.h> FILE *fopen(const char *path, const char *mode); FILE *fdopen(int fildes, const char *mode); FILE *freopen(const char *path, const char *mode,FILE *stream);DESCRIPTION 描述函数 fopen 打开文件名为 path 指向的字符串的文件,将一个流与它

2020-11-25 15:19:06 133

原创 去重行动

一、项目功能:通过比对两个文件的数字签名,进行判断两个文件是否完全一致,若一致则删除重复文件数字签名:只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明MD5:一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。由上图可知文件内容不同,所产生的MD5值是不同的二、MD5值是如何产生的添加冗余信息添加bit长度初始化MD buffer(A,B,C,D)按51

2020-06-13 01:42:24 157

原创 【C++】多态

多态概念同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。在运行时,可以通过指向父类的指针,来调用实现子类中的方法。ege:Person买火车票是全价,Student买火车票是半价多态的定义及实现构成多态的条件1. 被调用的函数必须是虚函数,且子类必须对父类的虚函数进行重写2. 调用虚函数的类型必须是指针或者引用3.一般使用父类的指针或者引用指向子类对象虚函数:...

2020-01-06 20:04:37 399

原创 【C++ 】继承

继承概念继承:如果一个类A继承于另一个类B,那么将A称做派生类或者子类,将B称作基类或者父类,继承可以让子类具有父类的各种变量和函数,所以不需要在进行编写父类的代码,即父类的成员(变量、函数)都会变成子类的一部分。成员函数存在代码段中继承格式 class A :public Bclass Person{public: void Cout() { cout << "na...

2020-01-04 20:14:40 567

原创 【C++】模板进阶

非类型模板参数就是用一个常量作为类(函数)模板的一个参数,在类(函数)模板中可将该参数当成常量来使用非类型模板参数可以是整形,指针和引用。,即(int,size_t,T*,T&),而浮点数、类对象以及字符串是坚决不允许作为非类型模板参数的。class Arr{public: T& operator[](size_t n) { return _arr[n]; }...

2019-11-19 20:23:07 112

原创 【C++】容器适配器之stack&queue&priority_queue

栈stack什么是栈栈是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。先进后出stack的常用接口函数名称功能简述stack(...

2019-11-17 19:40:28 149

原创 【C++】STL之deque

什么是duque是双向队列不规则的首字母缩写,双向队列是动态大小的序列式容器,其可以在两端进行插入,删除操作deque的常见接口1.构造函数函数名称功能简述deque()构造空的dequedeque(size_type n,const value_type& val=value_type())构造的deque包含n个val的数据deque(In...

2019-11-17 15:30:39 348

原创 【C++】List的模拟实现

自己实现一个List来加深对其的理解#include<iostream>#include<assert.h>using namespace std;template<class T>struct ListNode{ ListNode<T>* _pre; ListNode<T>* _next; T _val; Lis...

2019-11-16 21:34:47 113

原创 【C++】STL之list

基本概念list是一个计算机专业术语,在编程语言中List是类库中的一个类,可以简单视之为双向连结串行,以线性列的方式管理物件集合。list的特色是在集合的任何位置增加或删除元素都很快,但是不支持随机存取。list常见接口1.构造函数函数名称功能简述list()构造空的listlist(size_type n,const value_type& v...

2019-11-16 14:15:40 249

原创 【C++】Vector类的模拟实现

自己写一个Vector的简单模拟实现,来加深自己对vector的理解#include<iostream>#include<assert.h>#include<string>using namespace std;template<class T>class Vector{ //typedef T* iterator;//放到这里默认认...

2019-11-14 18:18:45 183

原创 有关vector的迭代器失效问题

什么是迭代器失效在vector中因为插入、删除的操作,导致vector的空间发生改变,让其指向的那个位置的含义已经改变(可能原位置的空间已经被释放,也可能原位置的数据变成其原来相邻位置上的数据),从而导致iterator失效,因为每个容器的迭代器底层实现不同,所以导致它们失效的原因也不同,并不能因为vector是因为插入、删除导致的失效,就片面的认为所有的迭代器失效都是因为这个原因哪些操作导...

2019-11-13 21:25:20 219

原创 【C++】STL之vector

基本概念vector是Cpp标准模板库中的部分内容,但并不准确。它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。vector类的常见接口1.构造函数函数名称功能简述vector()无参构造函数v...

2019-11-11 20:19:26 73

原创 【C++】String类的模拟实现

#include#include<assert.h>#pragma warning(disable:4996)using namespace std;//实现一个简单版的String(传统写法)//class String//{//public:// String(const char* str = “”)// {// _str = new char[strlen...

2019-11-10 15:24:49 62

原创 【C++】STL之String

STL简介什么是STLSTL是一些“容器”的集合,这些“容器”有list,vector,set,map等,STL也是算法和其他一些组件的集合。这里的“容器”和算法的集合指的是世界上很多聪明人很多年的杰作。STL的目的是标准化组件,这样就不用重新开发,可以使用现成的组件。STL现在是C++的一部分,因此不用安装额外的库文件。STL的版本原始版本:Alexander Stepanov、Meng...

2019-11-09 22:16:25 168

原创 【C++】内存管理

C和C++的内存分布内存主要分为:代码段、数据段、BBS段、栈、堆代码段:可执行代码、常量数据段:已经初始化了的全局变量和静态变量BBS段: 未初始化的全局变量和静态变量栈:局部变量、函数重载、临时变量、声明、返回值、指向堆对象的地址(指针)堆:动态分配内存,ege:new,malloc出来的东西内核空间用户不能读写栈地址向下增长堆地址向上增长数据...

2019-11-09 14:37:16 121

原创 【C++】模板初阶

泛型编程假如我们需要实现一个简单的加法函数int Add(int a, int b){ return a + b;}float Add(float a, float b){ return a + b;}double Add(double a, double b){ return a + b;}一个简单的Add函数,都是同一个原理,但需要写三个函数,如果以后再写大型...

2019-09-26 16:59:12 97

原创 【C++】类与对象 (拓展)

static成员  声明为static的类成员称为类的静态成员,用static修饰的成员变量,称之为静态成员变量;用static修饰的成员函数,称之为静态成员函数。静态的成员变量一定要在类外进行初始  1.静态成员变量是被所有该类对象共享的,并不仅属于某个具体的对象  2.静态成员变量必须在类外定义,定义时且不可以添加 static 关键字  3.类静态成员访问方式类名::...

2019-09-18 21:33:12 84

原创 【C++】Date类的实现

作为类与对象的初学者,写一个有关Date日期类算是对其最好的巩固了#pragma once#include<iostream>using namespace std;class Data{public: static int GetMonthDays(int year, int month) { static int arr[] = { 0,31,28,31,3...

2019-09-12 21:48:34 397

原创 【C++】 类与对象下

类的6个默认成员函数  空类,当你创建一个类时就比如是这样的Class Date (){};它此时占空间的大小为1,而不是0.是因为系统中会给他默认生成6个成员函数初始化和清理构造函数主要负责初始化析构函数主要负责清理拷贝复制拷贝构造使同类对象初始化并创建对象赋值重载把一个对象赋值给另一个对象取地址重载普通对象的取地址const对象的取地址class Date{priv...

2019-08-05 22:30:17 67

原创 【C++】 类与对象 上

C语言与C++的区别?1.面向不同C语言面向过程面向过程是分析解决问题的步骤,然后用函数把这些步骤一步一步的实现,然后在使用的时候一一调用则可C++面向对象面向对象是把构成问题的事务分解成各个对象,而建立对象的目的也不是为了完成一个个步骤,而是为了描述某个事物在解决整个问题的过程中所发生的行为。用送外卖来举例C语言:先找到外卖小哥A,然后让A到指定的卖家那里去取指定的外卖,送到指定的...

2019-08-02 17:03:25 101

原创 【C++】 入门

命名空间在C/C++中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突或名字污染,namespace关键字的出现就是针对这种问题的。命名空间定义定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{}中即为命名空间的成员。...

2019-07-27 19:36:48 100

原创 【linux】 进程控制

进程创建fork():通过复制调用进程创建子进程详情见vfork():与父进程共用同一块虚拟地址空间–子进程运行,等到子进程exit退出或者程序替换之后父进程才开始运行,子进程return后将资源释放,父进程则调用栈混乱,因此vfork创建在子进程不能在main中return退出vfork()–快速创建子进程且子进程是专门用来运行其他程序共用地址空间可以减少子进程数据拷贝父进程的消耗,因此...

2019-06-11 16:01:19 231

原创 【linux】 进程概念

冯诺依曼体系结构冯诺依曼—奠定了现代计算机的硬件体系结构现代计算机的五大硬件单元输入设备:键盘,鼠标输出设备:显示器存储器;内存(易失性,一旦掉电,数据将全部丢失)运算器;CPU(中央处理器)控制器;CPU操作系统:目的:让计算机更好用功能:统筹管理计算机上的软硬件资源,提供良好的执行环境如何管理软硬件资源:先描述,后组织库函数和系统调用接口的关系:上下级的调用关系,库函...

2019-05-29 21:05:27 480

原创 【linux】 常用工具

常用工具yum—软件包管理工具 软件安装方法:  1.手动源码安装  2.使用工具安装(工具自身可以解决软件包安装的依赖关系)yum的常用操作:查看查看能安装什么  yum list | grep package_name查看已经安装了什么  yum list installed | greppackage_name安装(root) yum install package_...

2019-05-24 21:35:48 137

原创 【linux】 基本命令

基本命令ls----浏览目录内容 -a 浏览所有文件(含隐藏文件,以’.'开头的文件为隐藏文件) -l 查看文件详细信息 -t 对浏览的文件按时间排序 -SL 按文件的大小进行排序 -r 逆序查看命令手册 man + 命令名pwd—查看当前所在路径 /home/dev 绝对路径–基于根目录的路径表达方式 …/dev/ 相对路径–相对于当前所在路径的表达方式 在每一个目录下...

2019-05-24 14:05:10 128

空空如也

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

TA关注的人

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