自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Hello World!

这个人很懒,什么都没有留下!!!

  • 博客(86)
  • 收藏
  • 关注

原创 C++正则表达式

C++正则表达式

2020-05-30 22:12:12 5181 1

原创 SGI-STL 空间配置器

写在前面空间配置器概念空间配置器:顾名思义,就是为各个容器高效的管理空间(空间的申请与回收)的+为什么需要空间配置器

2020-05-30 17:55:26 274

原创 C++11特性(二)

委派构造函数委派构造函数可以减少构造函数的书写量class Info {public: Info() : type(1) , name('a') { InitRest(); } Info(int i) : type(i) , name('a') { InitRest(); } Info(char e) : type(1) , ...

2020-05-03 11:20:28 327

原创 C++11特性(一)

C++11 简介在C++98标准之后,C++标准委员会于2003年其实还提出过一份技术勘误表(TC1),使得C++03 这个名字已经取代了C++98为C++11之前的最新的C++标准名称。不过由于 TC1 主要是对 C++98 标准中的漏洞进行修复,语言的核心部分并没有改动,因此大多数人习惯将这两个标准合称为 C++98/03相比于 C++98/03 ,C++11 带来了数量可观的变化,不仅增...

2020-04-23 17:41:51 765 1

原创 OnlineJudge项目简介

项目简介仿照 leetcode 来写一个在线判题系统的项目。用户可以实现通过url在浏览器访问试题列表、选中相关题目并编写代码、提交到服务器编译运行、将运行结果反馈给浏览器展示在页面上等相应操作开发环境CentOS7g++7.3.0jsoncpp (Json格式解析库)cpp-httplib (HTTP/HTTPS客户端服务器C++库)ctemplate (网页模板类库)项目设...

2020-04-15 15:49:45 947 1

原创 Linux gcc/g++ 升级到7.3版本

root 权限下:yum install centos-release-scl -yyum install devtoolset-7 -y# 打开 `~/.bashrc` 文件vim ~/.bashrc# 在 `~/.bashrc` 文件末尾添加下面一行的代码source /opt/rh/devtoolset-7/enable# 在shell中更新 `~/.bashrc` 文件...

2020-04-08 00:06:06 1689 2

原创 并查集问题

并查集

2020-03-31 13:52:34 191

原创 Shell(三)

Shell 控制流程if elseif# 语法if conditionthen command_1 command_2 ...fi# 可写成if condition ; then command1; command2; fiif else# 语法if conditionthen command_1 command_2 ...else command_N ...

2020-03-26 18:13:06 233

原创 Shell(二)

Shell参数在执行Shell脚本时,可以向脚本传递参数实例如下:#!/bin/bashecho "Shell 传递参数实例!";echo "执行的文件名:$0";echo "第一个参数为:$1";echo "第二个参数为:$2";echo "第三个参数为:$3";运行结果如下:[adam@aliyun test]# ./test.sh 1 2 3Shell 传递参数实例...

2020-03-25 23:22:06 253

原创 Shell(一)

简介Shell 简介从技术角度,Shell最简单的定义为命令行解释器,主要包含:将使用者的命令翻译给核心(kernel)处理同时,将核心的处理结果翻译给使用者对比Windows GUI,我们操作的Windows并不是直接操作操作系统内核的,而是通过图形接口,点击,等的一系列操作来使用的shell对之Linux,同样有着相同的作用,主要就是对我们的指令进行解析,解析指令给Linu...

2020-03-25 20:18:56 197

原创 socket套接字

套接字描述符socket#include <sys/socket.h>int socket (int domain, int type, int protocol);返回值:成功返回文件(套接字)描述符,出错返回-1参数:domain:确定通信的特性,包括地址格式域描 述AF_INETIPv4因特网域AF_INET6IPv6因特网域...

2020-03-08 22:31:36 153

原创 关于报错:Run-Time Check Failure #2 - Stack around the variable 'xxx' was corrupted的解决方式

最近写项目的时候碰到如下图所示的报错,困扰了我好久,终于在网上找到了解决方案,觉得需要记录一下,具体如下:说明:编译器为VS2013这个报错字面意思是定义的变量xxx附近的内存被破坏了一般情况下,第一反应就是堆栈溢出、内存访问越界 …没错,这是第一个解决方案【解决方案】如果提示中的变量是指针类型变量,则大概率的就是数组访问越界,需要反复检查数组下标访问的合法性如果提示中的变量并不是...

2020-03-02 00:18:28 51329 28

原创 malloc底层实现

Linux维护一个break指针,这个指针指向堆空间某个位置。从堆起始地址到break之间的地址空间为映射好的,可以供进程访问而从break往上,是未映射的地址空间,如果访问这段空间则程序会报错。我们使用malloc进行内存分配就是从break往上进行的而rlimit则是限制进程堆内存容量的指针,即可分配堆空间的“极限指针”获取了break地址,也就是内存申请的初始地址Linux通过brk...

2020-02-26 16:10:10 158

原创 浅析C/C++中static

static

2020-02-26 16:05:26 113

原创 餐厅点餐系统设计思路

写在前面本项目为练手小项目(初步成果,待完善),目的为了验证对于Linux网络编程方面的粗浅理解,若有不足,请留言指正,不胜感激!附上项目源码:https://github.com/Adam-Xi/OrderMealSystem开发环境:CentOS7、Windows10开发工具(语言):数据库:MySQL、CentOS下MariaDB服务器设计:C++、g++(版本7.3.1)、gd...

2020-02-13 23:07:46 4458

原创 C++STL树形结构的关联式容器

关联式容器STL容器分为序列式容器和关联式容器序列式容器包括vector、string、list、deque、forward_list等,因为其底层为线性序列的数据结构,里面存储的是元素本身关联式容器也是用来存储数据的,与序列式容器不同的是,其里面存储的是<key, value>结构的键值对,在数据检索时比序列式容器效率更高键值对用来表示具有一一对应关系的一种结构,该结构中一...

2020-01-21 20:41:17 820

原创 Linux进程信号

信号概念信号是进程之间事件异步通知的一种方式,会打断当前的进程,使之去处理信号的事件,信号是一种软件中断信号的种类每个信号都有一个编号和一个宏定义名称,这些宏定义可以在signal.h中找到,同时,在Linux系统7号手册中也可以找到可以使用kill -l命令可以查看Linux系统下所有的信号,其中:总共有62中信号 :1~31号信号是不可靠信号,即信号有可能丢失34~64号信号是可...

2020-01-20 23:48:37 163

原创 while(true) 和 for(;;) 比较

引子今天在论坛中闲逛,看见一貌似很简单的问题while(true)和forfor( ; ; )有区别吗,为什么C库源码中的都是for( ; ; )而不是while(true)确实很简单的问题,可我确实不清楚,特此在网上查了一下 ,但是发现网上说法众说纷纭,经过查找资料,答案如下:先抛答案1、在C编译器中确实有区别,较之while( true ),for( ; ; ) 的效率更高一些...

2020-01-16 15:09:08 11514

原创 Linux进程间通信

写在前面为什么要进行进程间通信?    因为进程间具有独立性(每一个进程都有自己的虚拟地址空间,进程A并不知道进程B的虚拟地址空间中的内容),因此导致了进程之间协作的问题进程间通信的目的:    数据传输:一个进程需要将它的数据发送给另一个进程    数据共享:多个进...

2020-01-01 14:46:48 837

原创 Linux文件

文件操作关于C中的文件操作,详见C文件操作除了C语言中的文件接口,其他各种语言也都提供了接口,在Linux下,也提供了几个系统调用接口来进行文件操作…这里只对常用的接口进行介绍打开文件#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>int open(const char *...

2019-12-30 19:03:54 651 1

原创 Linux进程控制

进程创建fork功能:从已存在进程中创建一个新进程。新进程为子进程,而原进程为父进程函数原型:#include <unistd.h>pid_t fork(void);返回值:子进程中返回0,父进程返回子进程的id,出错返回-1进程调用fork,当控制转移到内核中的fork代码后,内核做以下步骤:1、分配新的内存块和内核数据结构给子进程2、将父进程部分数据结构内容...

2019-12-24 10:31:09 639

原创 Linux进程概念

冯诺依曼体系结构美籍匈牙利数学家冯·诺伊曼于1946年提出存储程序原理,把程序本身当作数据来对待,程序和该程序处理的数据用同样的方式储存。 冯·诺伊曼体系结构冯·诺伊曼理论的要点是:计算机的数制采用二进制;计算机应该按照程序顺序执行。人们把冯·诺伊曼的这个理论称为冯·诺伊曼体系结构截止目前,我们所认识的计算机,都是有一个个的硬件组件组成,输入单元:包括键盘,鼠标,扫描仪,写字板等中...

2019-12-21 12:02:37 638

原创 二叉搜索树

模拟实现#include <iostream>using namespace std;//为了简化问题,将二叉搜索树定义为节点值都不相同的树template<class T>struct BSTNode{ BSTNode(const T& data = T()) : _pLeft(nullptr) , _pRight(nullptr) ...

2019-12-20 17:18:53 589

原创 CentOS7更换yum源和安装EPEL源及相关报错处理

写在前面为什么要更换yum源很多时候CentOS默认的yum源不一定都是国内镜像,所以导致yum在线安装和更新速度都不是很理想,这时候就需要把CentOS默认的yum源更换为国内镜像站点。而国内主要的Linux开源软件源为网易和阿里为什么要安装EPEL源通过yum源安装某些安装包时,会发现某些形如没有可用的安装包的提示,这就说明在yum源中没有对应的安装包。其实,在Linux操作系统可用的...

2019-12-17 16:26:01 6409 2

原创 C++智能指针

智能指针

2019-12-11 15:03:26 1744

原创 C++异常

异常:是指在程序运行周期发生的异常事件,一般情况下是不可预测的。C的错误处理方式终止程序如assert,缺陷:用户难以接受。如发生内存错误,除0错误时就会终止程序返回错误码缺陷:需要程序员自己去查找对应的错误。如系统的很多库的接口都是通过把错误码放到errno中,表示错误setjmp和longjmp结构化异常的基础,发生异常则跳转至对应的模块,不过一般情况下很少使用C++异常概念...

2019-11-21 16:46:24 398

原创 浅析Linux权限

Linux权限概念Linux下有两种用户:超级用户(root)、普通用户超级用户:可以在Linux系统下做任何事情,不受限制普通用户:在Linux下做有限的事情超级用户的命令提示符是"#",普通用户的命令提示符是"$"Linux权限管理1、文件访问者的分类文件和文件目录的所有者:u–User文件和文件目录的所有者所在的组的用户:g–Group其他用户:o–Others2...

2019-11-14 17:02:09 1194

原创 C++多态

C++多态

2019-11-09 18:27:16 1223

原创 C++继承

一、继承简介众所周知,C++是面向对象(OOP)的一门语言,而面向对象的三大特性为封装,继承,多态。由此可见,继承是面向对象程序设计中的重要特性之一,本篇中将介绍一下C++中的继承特性及用法。概念继承机制是面向对象程序设计中实现代码复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生的新类,称为派生类 或 子类,而原有特性的旧类称为基类 或 父类继承呈现了面...

2019-11-08 00:19:40 1232

原创 C文件操作

c文件操作

2019-11-04 21:33:55 1563

原创 皇后问题,8皇后、n皇后、2n皇后

8皇后问题问题描述:八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。高斯认为有76种方案。1854年在柏林的象棋杂志上不同的作者发表了40种不同的解,后来有人用图论的方法解出92种结果。计算机发明后,有...

2019-10-29 23:24:07 2213

原创 Linux基本命令

ls语法:ls [选项] [目录或文件]功能:对于目录,将列出该目录下所有子目录和文件;对于文件,将列出文件的所有信息常用选项:-a:列出目录下的所有文件,包含隐含文件-l: 列出文件的详细信息-r: 对目录反向排序-t: 以时间排序-R: 递归列出所有子目录下的文件tips:1、各种选项可以进行组合使用2、这里只列举几种最常用的选项,并不是所有的选项用例:ls ...

2019-10-27 19:45:03 1242

原创 C++模板(二)

模板

2019-10-26 17:37:04 644

原创 C++之STL

STL

2019-10-26 13:13:34 311

原创 priority_queue的模拟实现

//优先级队列#include<iostream>using namespace std;//priority_queue的模板参数: T--元素类型,Container--底层数据结构(默认为vector),Compare--比较方式(大堆/小堆---less/greater-默认为less)template<class T, class Container = ve...

2019-10-25 20:16:10 1352

原创 queue的模拟实现

#include<iostream>using namespace std;#include<deque>//库函数中queue的底层结构为deque//模板参数: T--数据类型 Container--底层数据结构template<class T, class Container = deque<T>>class queue{...

2019-10-25 20:01:34 510

原创 stack的模拟实现

#include<iostream>using namespace std;#include<deque>//模板参数: T--数据类型 Container--底层数据结构template<class T, class Container = deque<T>>class stack{public: stack() :co...

2019-10-25 19:59:29 508

原创 STL之deque

deque介绍1、deque是动态大小的序列式容器,可以向两端进行扩容或压缩2、特定的库可以以不同的方式实现deque,但通常都是一种动态数组。不论在何种情况下,它都允许通过随机访问迭代器直接访问单个元素3、deque提供了一些与vector相似的功能,但deque在头部和尾部进行数据插入和删除操作更加高效。与vector不同的是,deque不能保证所有元素都存储在连续的空间中,在deque...

2019-10-25 19:47:11 380

原创 STL之list

list介绍1、list是可以在常数范围内在任意位置进行插入删除的序列式容器,并且该容器可以前后双向迭代2、其底层结构:带头结点的双向循环链表3、list和forward_list相似:但是forword_list是单链表,只能朝前迭代4、与其他容器相比,list在任意位置插入删除更加高效,但最大的缺陷是不能进行任意位置元素的访问,若要访问第pos位元素,需要从头节点开始朝前或朝后进行遍历...

2019-10-25 18:58:20 364

原创 STL之vector

vector介绍简言之,vector是表示可变大小数组的容器序列其底层结构:可存放任意数据类型的动态类型顺序表具体介绍如下:1、和数组一样,vector也是用一片连续空间存储数组,意味着它可以和数组一样高效地通过下标访问每个空间中的元素,但和数组不同的是,它的大小可以动态改变,而且是被容器自动改变,无需使用者关心2、本质讲,vector动态分配数组来存储它的元素。当新元素插入时,vect...

2019-10-25 18:16:00 340

空空如也

空空如也

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

TA关注的人

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