自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 腾讯云服务器升级gcc

添加Fedora源在 /etc/yum.repos.d 目录中添加文件 FedoraRepo.repo ,并输入以下内容:[warning:fedora]name=fedoramirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=fedora-23&arch=$basearchenabled=1gpgcheck=...

2020-04-26 14:50:15 495

原创 安装/使用 pycurl 遇到的问题

记录下安装 pycurl 出现的问题:问题3: ImportError: pycurl: libcurl link-time ssl backend (openssl) is different from compile-time ssl back我的版本centos7:首先说下我的解决办法:pip3 uninstall pycurlexport PYCURL_SSL_LIBRARY=o...

2020-02-29 18:04:54 528

原创 使用tinyproxy简易搭建代理服务器

需要:腾讯云服务器或阿里云服务器;虚拟机;步骤:第一步、在自己的云服务器上安装 tinyproxy :如果是 Ubuntu 就使用apt install -y tinyproxy如果是 Centos 则使用yum install -y tinyproxy本文用 Centos 进行演示第二步:使用 vim 打开 /etc/tinyproxy/tinyproxy.conf ...

2020-02-22 13:10:14 3791

原创 C++11左值&左值引用&右值&右值引用

文章目录零、左值&右值一、移动语义二、C++11中的右值(纯右值&将亡值)三、右值引用四、std::move五、完美转发零、左值&右值   左值:能出现赋值号左边的值,能取地址,有名字的值就是左值;  右值:不是左值的值就是右值。右值又分为纯右值和将亡值。一、移动语义先看下面这段代码:有什么问题?#include <iostream>#includ...

2019-08-26 15:27:30 696

原创 云之家

简介:  随着网络的不断发展,人们对网络的认知越来越高,使用电脑的人也越来越多,网络上的新鲜事物有很多,人们都可以通过下载到自己电脑的方式来了解,那么时间一长,积攒的文件越来越多,而对于一般人来说基本不可能去更换电脑或者提升电脑存储配置,那有的人又不想删除这些下载下来的东西,所以云上存储的需求就应刃而生。人们可以花很少的钱,甚至不花钱将自己暂时不需要的东西存放在云上,等需要用的时候再从云上将其下...

2019-08-05 10:33:50 852

原创 基于boost库中cpp_int库实现RSA

- 前言:  在应用层有两个协议分别叫做 HTTP 和 HTTPS,这两个协议想必大家都不陌生,HTTPS 与 HTTP 最大的区别就是 HTTP 发送的数据在网络中发送的信息是以明文的形式发送的,并且是可以被人截获,别人截获到信息后很容易就得到了信息内容。为了让别人不容易拿到消息或者说让别人基本不可能拿到消息,就有了HTTPS,HTTPS 对数据进行了一层加密,让别人即使拿到消息也没办法解密(...

2019-08-04 16:51:31 1139

原创 C++之智能指针

遇到的问题:  在编写C++程序时,我们最常遇到的问题也就是内存方面的问题了。申请内存后未释放,打开文件后未关闭,这些都属于内存泄漏的问题。  举个栗子:如果我们在申请内存之后,程序抛了一个异常,并且我们的catch代码段也没有去做对应的处理,那么这个时候就会发生内存泄漏。如下程序:int Division(int a, int b){ if (b == 0) { throw "D...

2019-07-25 22:42:55 179

原创 C++之多态

文章目录一、多态的概念二、多态的定义和实现三、多态的原理四、静态多态和动态多态1、静态多态2、动态多态一、多态的概念  多态用一句话说就是执行一个事物会发生不同的情况。  在代码中就是不同继承关系的类对象对一个函数进行操作,会有不同的结果产生。  举个生活中的例子:比如相亲这件事,① 长得好看并且有钱的人相亲可能百战百胜;② 长得不好看并且又没钱的人可能就会遭到别人的冷眼且相亲失败(职...

2019-07-16 12:58:18 352

原创 菱形继承和菱形虚拟继承(原理:虚基表)

在继承体系中有单继承、多继承、和菱形继承,(菱形继承其实是多继承的一种特殊情况)。单继承:一个子类只有一个直接父类时称这个继承关系为单继承多继承:一个子类有两个及以上个直接父类称这个继承关系为多继承菱形继承:多继承的一种特殊情况。一个子类有多个直接父类并且这些直接父类的父类是同一个父类菱形继承带来的问题:拿上面菱形继承的图中的例子来看:因为有子类 Assistant 是继承自多个父...

2019-07-10 21:48:51 697

原创 C++之继承

继承是什么?在原有的类的基础上建立的新的类,称为继承。就像家产的继承一样,被继承的类称为基类(父类),新生成的类称为派生类(子类)。

2019-06-21 14:10:52 240

原创 写时拷贝技术(COW)

文章目录写时拷贝技术写时拷贝技术原理举个例子写时拷贝技术  写时拷贝技术实际上是一种拖延战术,是为了提高效率而产生的技术,这怎么提高效率呢?实际上就是在需要开辟空间时,假装开了空间,实际上用的还是原来的空间,减少开辟空间的时间,等到真正要使用新空间的时候才去真正开辟空间。  举一个例子理解写时拷贝技术:我们小时候经常会遇到这种情况:家里面有哥哥姐姐的,大人们经常会让我们穿哥哥姐姐穿剩的衣服,...

2019-06-19 17:08:59 2977

原创 重载、重写、隐藏是什么?

重载:构成重载的条件:1、在同一作用域下;        2、函数的函数名相同、参数个数不同 或 参数类型不同 或 参数顺序不同。 函数重载是在编译期间对函数的参数类型进行推演,根据合适的类型去调用不同的函数,所以函数重载也叫静态多态(或者静态绑定)。重写(覆写):构成重写的条件:1、两个函数分别在基类和派生类的作用域;        2、函数名相同、参数相同、返回值相同(协变除外);...

2019-06-19 11:28:41 533

原创 C/C++中的static关键字

static的用法主要分为两大类,一种是在c语言中的用法,还有就是c++在类中的用法。文章目录1. 在C语言中1.1 修饰全局变量1.2 修饰局部变量1.3 修饰函数2. 在C++中2.1 修饰类中成员变量2.2 修饰类中成员函数两个问题:1. 在C语言中1.1 修饰全局变量定义静态全局变量就是在全局变量前加上 static 关键字#include <iostream>st...

2019-06-16 00:36:29 310 1

原创 堆排序(排升序为啥建大堆,排降序为啥建小堆)

简介:  之前对堆排序认识的不是很透彻,今天回过头来再把堆排序的知识整理整理!以及排升序为什么要建大堆,排降序要建小堆。正文:  首先我们要知道:  ①堆的逻辑是一颗完全二叉树;  ②它使用的是顺序存储(也就是数组);  ③它的作用:一般都是用于找最值。排序也就是对数组的元素按照大小规则进行摆放。堆排序的过程:1、建堆2、对建好的堆进行向下调整。可能有人会疑问?堆已经建立好了...

2019-06-13 11:25:19 15879 10

原创 STL之list的模拟实现

实现的功能:迭代器、反向迭代器、以及list的各种接口list.hnamespace myList{ ////List的结点类 template<class T> class ListNode { public: ListNode(const T& val = T()) :_data(val) , _next(nullptr) , _pre...

2019-06-11 09:33:09 285

原创 STL之string模拟实现

啥都不说了,都在注释里#include <iostream>#include <assert.h>using namespace std;class String{public: typedef char* iterator; typedef const char* const_iterator; String(char* str = "") { ...

2019-06-11 09:33:00 293

原创 STL之vector模拟实现

vector的模拟实现:注意在 Insert 和 Erase 的时候,迭代器会失效,Insert:有可能会引发扩容,但是迭代器还指向原来的空间Erase:删除当前位置,当前位置已经没有了,指向当前位置的迭代器也会失效所以这两种情况都要考虑更新迭代器的指向。#define _CRT_SECURE_NO_WARNINGS 1#include <iostream>#includ...

2019-06-11 09:32:46 227

原创 [Linux] IPC共享内存

一、共享内存原理二、共享内存生命周期共享内存的生命周期是随内核的。匿名管道、命名管道、消息队列、信号量、共享内存这五种进程间通信方式。两种管道的生命周期是随进程,剩下的都是随内核的。三、共享内存为什么是最快的通信方式?  因为共享内存的原理是:在物理内存中直接开辟一片空间,并将空间映射到各个进程的虚拟地址空间的共享区;这时候进程就可以通过虚拟地址来直接对共享内存进行操作。  其他通信...

2019-06-10 11:45:45 556

原创 linux之信号量,PV操作

一、信号量是啥?PV操作是啥?信号量用一句话来总结就是带有等待队列的计数器。信号量也就是对我们的临界资源进行计数。就像我们去车站买票一样:当取票机有票的时候,也就是资源计数 >0,那我们就可以直接取票,并且取票机的票数-1;当取票机没有票的时候,也就是资源计数 <= 0,那我们就得等待取票机补上票,我们才能取票当票机补一张票,资源计数也就+1,就是多了一份资源。当信号量S ...

2019-06-09 16:46:51 1456

原创 ipcs 和 ipcrm 了解

  ipcs 和 ipcrm 都是与进程间通信有关的命令。可以看到这两个命令都是以IPC开头的— Inter-process Comminication,就是进程间通信。我们先来了解下进程间通信能干什么?进程间通信的目的就是为了:数据传输:一个进程要将它的数据发送给另一个进程资源共享:多个进程之间共享同样的资源通知事件:一个进程需要向另一个进程或进程组发送消息,通知某件事发生(比如子进...

2019-06-09 10:02:37 555

原创 生产者消费者模型

1、什么是生产者消费者模型?  答:生产者与消费者其实在我们生活中很常见,比如工厂生产商品,我们购买商品,那么这里工厂就是生产者,我们就是消费者。还有一个仓库,当生产者生产出货物,将货物放入仓库,我们消费时货物从仓库发出。这三者共同组成生产者和消费者模型。2、生产者和消费者模型的特点?  答:一个场所,两个角色,三种关系,这句话就可以描述出生产者与消费者模型,那么我们来解读一下:  一个...

2019-06-03 17:45:35 291

原创 C/C++之动态库/静态库的创建及使用

我们先来看两个问题:库是什么?答:库里面存放的是现成的,写好的,可以复用的代码,我们写的每一个程序都是报了头文件了,这些头文件里面就是一些库函数。静态库和动态库?答:首先静态/动态说的是链接方式。静态链接是在程序编译时将汇编生成的目标文件与引用的库一起链接打包到可执行文件中。动态链接是在编译时并不会被链接到目标代码中,而是在程序运行时才被载入。动态库和静态库的区别?答:对于静态库:...

2019-05-28 17:56:18 626

原创 进程的调度算法

进程的调度算法主要有以下几种:算法解释优点(特点)缺点先来先服务算法(FCFS)是最简单的调度算法,按先后顺序进行调度;按照作业提交或进程变为就绪状态的先后次序分派 CPU;当前作业或进程占用 CPU,直到执行完或阻塞,才让出 CPU,属于非抢占式调度公平、有利于长作业、CPU 繁忙的作业不利于I/O繁忙的工作,不利于短作业轮转法(RR)轮转法就是让每个进程...

2019-05-23 15:14:27 393

原创 浅谈task_struct各个字段内容

什么是进程?什么是task_struct?  首先站在用户的角度来看:进程就是运行中的程序,这是一个比较抽象化的概念。  站在操作系统的角度来看:进程就是操作系统对进程的描述,这个描述信息就是对进程的具象化描述- - -这个描述信息就是进程,这个描述信息就是pcb(process control block)- - -进程控制块或者进程描述符。在linux下就是task_struct这个结构体...

2019-05-23 11:38:10 787

原创 输入两个整数M和N,求M的N进制表示方式(M大于0且N大于等于2小于等于16)

#include <iostream>#include <string>using namespace std;int main(){ string s = "", table = "0123456789ABCDEF"; int M = 0, N = 0; cin >> M >> N; if (M == 0) { s = "0...

2019-05-23 09:38:24 1358

原创 A,B,C三个人是好朋友,每个人手里都有一些糖果,我们不知道他们每个人手上具体有多少个糖果,但是我们知道以下的信息:A - B, B - C, A + B, B + C. 这四个数值.每个字母代表每个

题目:A,B,C三个人是好朋友,每个人手里都有一些糖果,我们不知道他们每个人手上具体有多少个糖果,但是我们知道以下的信息:A - B, B - C, A + B, B + C. 这四个数值.每个字母代表每个人所拥有的糖果数.现在需要通过这四个数值计算出每个人手里有多少个糖果,即A,B,C。这里保证最多只有一组整数A,B,C满足所有题设条件。输入描述:输入为一行,一共4个整数,分别为A - B,...

2019-05-23 09:36:26 915

原创 C++模板初了解

模板是编写与类型无关的通用代码,是泛型编程的基础1. 泛型编程2. 函数模板3. 类模板1、泛型编程泛型编程顾名思义:可以通泛的使用,比如我们要使用一个Add加法函数,void Add(int& a, int& b){ return a + b;}void Add(double& a, double& b){ return a + b;}...

2019-05-04 23:44:43 191

原创 编写函数 process_create(pid_t* pid, void* func, void* arg)

封装fork/wait等操作, 编写函数 process_create(pid_t* pid, void* func, void* arg), func回调函数就是子进程执行的入口函数, arg是传递给func回调函数的参数. 4 #include <stdio.h> 5 #include <stdlib.h> 6 #include <unistd.h&g...

2019-05-04 21:49:25 308 6

原创 C/C++动态内存管理

首先我们看看 c 语言是如何进行动态内存分配的;c 语言主要是使用malloc / calloc / realloc 来进行内存申请的。malloc / realloc / calloc三者的共同点与不同点:共同点1、都是从堆上进行动态内存分配2、释放内存都是需要使用free函数来释放3、三者的返回值都是void*4、都需要强制类型转换5、都需要对申...

2019-04-28 00:44:15 2779 7

原创 C/C++内存布局

  下图是c/c++的进程的内存分布布局图,搞清楚内存布局对于理解一个程序是非常重要的。   一个程序运行起来,操作系统会给每个进程分配一个 4G 的程序地址空间,当然这都是虚拟地址空间,因为如果一个进程分 4G 的内存,那么就算有再多的内存也不够分。   这些虚拟地址空间中的内存分段都是什么意思呢?下面进行讲解:一、首先进程地址空间的 1G 内核空间是给操作系统使用的,我们用户是没有操作...

2019-04-27 22:34:01 4346 1

原创 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。

本题利用了类的属性,在类内实现一个内部类,让这个内部类的构造函数只做累加,那么我们通过调用内部类的构造函数即可完成累加注意:使用静态变量才能完成累加。 class Solution {public: class Sum //实现一个内部类 { public: //内部类的构造函数一定设为public,因为class中默认是private的 ...

2019-04-18 09:49:38 937

原创 Linux下彩色进度条的实现

  实现一个彩色进度条的前提是要了解linux下如何改变shell的输出颜色,shell的输出颜色改变是通过转义序列完成的。  多数转义序列以控制字符 ‘ESC’ 和左中括号 ‘[’ 开头。该起始序列称为控制序列引导符,通常由 ‘\033[’ 或 ‘\e[’ 代替  通过转义序列设置终端显示属性时,采用以下格式:\033[属性{;属性;…}m 或 \e[属性{;属性;…}m其中:’\033[...

2019-04-18 09:28:28 224

原创 Linux下如何使用命令安装g++

  g++ 是 GNU 的 c++ 编译器,它可以用来编译 c++ 程序。那么如何用命令安装 g++ 呢?注意:以下操作均在centos 7.3.1611 版本进行那么开始进行操作。首先切换到 root 用户,然后输入yum install gcc-c++,回车这时它会弹出来一堆信息,不用管,这是在找该下载的版本。就是这样子等它搜索完毕后会询问你是否ok?输入 y 即可这时它就开...

2019-04-17 00:52:09 4098

原创 Linux下重要目录存放的内容

/bin  bin是binary的缩写。这个目录沿袭了UNIX系统的结构,存放着使用者最经常使用的命令。例如cp、ls、cat,等等。/boot  这里存放的是启动Linux时使用的一些核心文件/dev  dev时device(设备)的缩写。这个目录下时所有Linux的外部设备,其功能类似DOS下的.sys和Win下的.vxd。在Linux中设备和文件是用同种方法访问的。例如:/dev/...

2019-04-14 22:28:02 1052

原创 Linux进入目录需要哪些权限?(ls/ll/touch/rm/mv需要的权限)

Linux文件权限:对于目录来说,目录的操作分别是可浏览、可创建/删除、可进入。如果目录没有 x 权限,那么即便这个目录有 r 或 w 权限,也不能对这个目录进行浏览、创建/删除操作,甚至不能进入该目录。  在Linux下文件的权限:新建一个目录:更改目录权限:此时发现没有权限,cd 不能进入目录。将权限改为400(可读),再次尝试 cd 进入目录:至此发现,有可读(可浏览...

2019-04-14 22:16:16 2863 2

原创 c++万年历

#define _CRT_SECURE_NO_WARNINGS 1#include <iostream>using namespace std;class Date { friend ostream& operator<<(ostream& _cout, const Date& d);public: //构造 Date(int...

2019-04-11 23:16:38 560

原创 结构体内存对齐良心讲解

本文将介绍以下内容:一、什么是内存对齐?二、结构体大小如何计算?三、为什么存在内存对齐?四、如何修改默认对齐数?五、笔试题练习正文一、什么是内存对齐?  首先,内存对齐是属于编译器的“管辖”范围,编译器为程序中的每个数据单元安排在适当的位置上。但是在 c 语言中我们是被允许干预内存对齐的,也就是说我们可以一定程度上的控制如何内存对齐。内存对齐是为了硬件计算起来效率更高而设计的...

2019-04-10 23:57:32 421 1

原创 设计一个只能在栈上创建对象的类

观看本篇文章前可以先看看这篇文章,可以帮助理解本文的内容。//todo 超链接  在栈上创建对象也就是说不能使用 new 来创建对象,在类外是用 StackOnly p = new StackOnly; 这种方法来在堆上创建对象的,那么我们可以将构造函数设为私有成员,此处可以不用将拷贝构造也设为私有成员,因为我们使用拷贝构造出来的对象只会出现在栈上。  同样的我们要提供一个静态的公有的成员函...

2019-04-09 08:12:46 190

原创 设计一个只能在堆上创建对象的类

如何定义一个只能在堆上创建对象的类?  首先我们要知道堆上和栈上存放的内容是什么?栈上面放的是形参和局部变量,对于堆,动态内存分配一般都是堆上的空间,比如malloc/calloc/realloc/free new/delete都是在分配堆上的空间。  那么我们现在只能在堆上创建对象,也就意味着不能在栈上创建对象,也就是说不能出现局部变量,那么应该怎么做呢?  1、那就是不能在类外使用构造...

2019-04-09 08:11:33 286

原创 c++引用和指针

引用相关知识参见此文章:c++引用那么引用和指针到底有什么区别呢?答:看下面这段代码!!int main(){ int a = 10; int *pa = &a; *pa = 20; int& ra = a; ra = 20; return 0;}汇编代码及执行过程如下:因此,两者在底层处理方式:一模一样...

2019-04-08 21:21:29 159

空空如也

空空如也

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

TA关注的人

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