自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

C/C++菜鸟养成记

不急不躁,不悲不喜

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

原创 【C++】如何释放vector的内存空间及std::vector::shrink_to_fit用法简介

如何对vector内存空间释放,C++11 shrink_to_fit,方法简介。

2022-09-21 12:12:37 2239

原创 C/C++程序中记录运行时间的方法

如何在C/C++程序中记录程序运行所用时长。

2022-08-17 15:14:41 1975

原创 Ubuntu 20.04版本三步安装微信,亲测有效~

Ubuntu系统安装微信

2022-07-19 15:41:44 542 1

原创 NC121 字符串的排列

NC121 字符串的排列

2021-12-14 16:51:13 294

原创 关于常见的各种链表算法题C++代码实现(希望可以持续更新…)

关于各种常见链表算法C++的代码实现

2021-12-07 15:32:32 1449

原创 关于常见的各种二叉树算法题C++代码实现(希望可以持续更新…)

各种常见的二叉树算法题

2021-12-07 15:03:54 1117

原创 设计LRU缓存结构(C++,unordered_map+双向链表)

class LRUchache { struct ListNode{ ListNode* pre; ListNode* next; int key; int value; ListNode(int _key, int _value): pre(nullptr), next(nullptr), key(_key), value(_value) {} };public: LRUchache(int capcity) : capcity(capci...

2021-12-03 17:11:39 1857

原创 【超级推荐技巧】Linux环境下(CentOS)安装OpenCV!!!

网上关于安装OpenCV的文章很多,但是博主亲测很多不管用,要不然就是特别麻烦。(前提是g++等都有安装好哦)下面给出一种特别简单的方式:sudo yum install dnfsudo dnf install opencv opencv-devel opencv-python然后就可以自己写一份代码试试#include<opencv2/opencv.hpp>#include<iostream>using namespace std;int main

2020-06-07 14:09:24 756 1

原创 【实用技巧】CCS.V8创建TMS320F2812工程

CCS各版本的下载地址:http://software-dl.ti.com/ccs/esd/documents/ccs_downloads.html库文件下载地址:链接:https://pan.baidu.com/s/1y5-k_xCB3NZMc5WUlUq2pw提取码:ww5h1、打开CCS,选择工作区域2、创建一个新的CCS工程(Project-New CCS Pr...

2020-01-08 17:45:29 2705 1

原创 【Liunx】通过Docker部署C++服务器程序

Docker是什么Docker是一个开源的应用容器引擎,Docker 能够将开发环境依赖的所有外部软件都打包到容器中, 发布的时候将整个容器拷贝到云服务器上即可。Docker 的特点1、资源隔离(容器和容器之间不会相互影响)2、高性能(相比于传统的虚拟机)Docker的安装博主的环境是 CentOS 3.10.0,大家可以查看自己的环境:uname -r...

2019-09-02 21:36:39 2494

原创 【Linux】深入理解Linux环境下的信号(信号产生、信号注册、信号注销、信号处理)

信号的概念宽泛的信号:信号是消息的物理载体,是运载消息的工具;Linux中的信号:信号是由用户、系统或者进程发送给目标进程的信息,以通知目标进程某个状态的改变或系统异常;系统中定义的信号列表kill - l其中编号34以上的属于实时信号,本文只讨论关于编号34以下的信号;注意:无论信号各自在什么条件下产生,默认的处理动作是什么,在 signal(7) 中都有详细说明;...

2019-09-02 19:38:42 727

原创 【Linux】详细理解进程间通信机制(管道、消息队列、共享内存、信号量)

进程间通信的目的数据传输:一个进程需要将它的数据发送给另一个进程;资源共享:多个进程之间共享同样的资源;通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件(例如进程终止时要通知父进程);进程控制:有些进程希望完全控制另一个进程的执行,此时控制进程希望能够拦截另一个进程的所有陷入和异常,并能及时直到它的状态;查看系统中的进程通信方式:ipcs -...

2019-08-30 20:24:59 542

原创 【Linux】理解Linux下的文件系统(ext2、软 / 硬链接)

文件系统一个简单的 Linux 指令ls -l依次是:模式、硬链接数、文件所有者、组、大小、最后修改时间、文件名 stat redirect.c可见,我们使用 stat 命令会看见更多的文件相关信息,其中有几个信息我们需要详细了解;inode ...

2019-08-30 18:47:37 392

原创 【Linux】基础I / O 操作(重定向 )

C中的I/O操作标准库IO接口fopen 打开文件 FILE* fopen(const char* path,const char* mode);fwrite 向文件写入数据FILE* fwrite(const void* ptr,size_t size,size_t nmemb,FILE* stream); ptr:要写入的数据 ...

2019-08-30 17:28:45 305

原创 【Linux】详细理解进程地址空间

研究背景:kernel 2.6.32 32位程序地址空间先看一段代码:#include<stdio.h>#include<unistd.h>#include<stdlib.h>int g_val = 0;int main(){ pid_t id = fork(); if(id < 0){ perror("...

2019-08-30 16:17:15 373

原创 【Linux】环境变量炒鸡好理解的博客

基本概念我们在编写 C/C++ 代码的时候,在链接的时候,从来不知道我们所链接的动态静态库在哪里,但是照样可以链接成功,生成可执行的程序,原因就是有相关环境变量帮助编译器进行查找。环境变量一把是指在操作系统中用来指定操作系统运行环境的一些参数,环境变量通常是具有某些用途,还有在系统中通常具有全局特性;常见环境变量PATH:指定命令的搜索路径;HOME:指定用户的主工作目录(即用...

2019-08-30 15:45:32 177

原创 【Linux】进程创建、进程终止、进程等待、进程程序替换

进程创建在Linux 中 fork 函数是非常重要的,它从已经存在的进程中创建一个新的进程。#include<unistd.h>pid_t frok(void);/*创建成功: 父进程:返回子进程 PID 子进程:返回 0创建失败: 父进程:返回 -1,并设置 errno*/程序调用 fork 后,当控制转移到内核中的 fork 代码后,...

2019-08-29 19:01:06 856

原创 【Linux】详细理解进程概念

进程是什么进程故名思意就是在计算机中正在进行中的程序。我们知道操作系统对计算机中的所有程序是 先描述、在组织。那么计算机中是如何对进程进行描述的?描述进程-PCBPCB(process control block)进程管理块。在计算机中,进程被放在一个叫做进程控制块的数据结构中,可以理解为进程属性的集合。(Linux操作系统下的PCB是 task_struct :Linux 内核...

2019-08-29 17:47:23 186

原创 【算法】动态规划专栏~(常见动态规划题目解析及代码)

动态规划:动态规划是分治思想的延伸,通俗一点来说就是大事化小,小事化无的艺术。 在将大问题化解为小问题的分治过程中,保存对这些小问题已经处理好的结果,并供后面处理更大规模的问题时直接 使用这些结果。动态规划具备了以下三个特点:把原来的问题分解成了几个相似的子问题。 所有的子问题都只需要解决一次。 储存子问题的解。动态规划的本质:是对问题状态的定义和状态转移方程的定...

2019-08-28 20:07:21 1190

原创 【赛码】日常错题(选择题)持续更新~

1、滴滴2018研发工程师(二)不解释了,可能是脑袋懵了,八进制没看出来。2、滴滴2018研发工程师(二)fork()函数创建子进程成功后,返回0;所在 || 运算中,前面的fork已经成功创建了子进程,返回了0,但是由于 || 会继续执行后面的fork 函数,所以是创建了三个进程。3、滴滴2018研发工程师(二)int *p 和 int (*p)的区别 在于因为[...

2019-08-26 17:46:47 411

原创 【C++自学笔记】哈希结构浅识(如何解决哈希冲突—闭散列、开散列)待更新~

一、哈希概念顺序结构以及平衡树中,元素的关键码与其存储位置之间没有对应关系,因此在查找一个元素的时候,必须要经过关键码的多次比较。顺序查找时间复杂度为O(N),平衡树中为数的高度,即O(log2N),搜索的效率取决于搜索过程中元素的比较次数;理想的搜索方法:可以不经过任何比较,一次直接从表中得到要搜索的元素。如果构造一种存储结构,通过某种函数(hashFunc)使元素的存储位置与它的关键码...

2019-08-24 23:16:01 296

原创 【C++自学笔记】详细理解AVL树(插入、左单旋、右单旋、左右单旋、右左单旋)

一、AVL树的概念二叉搜索树虽然可以缩短查找的效率,但是如果数据有序或者接近有序二叉搜索树将退化为单只树,查找元素相当于在顺序表中搜索元素,效率低下。因此,引入AVL树:当向二叉搜索树中插入新节点后,如果能保证没给节点的左右子树盖度之差的绝对值不超过1(需要对树中的节点进行调整),即可降低树的高度,从而减少平均搜索的长度。一棵AVL树或者是空树,或者具有以下性质的二叉搜索树:它的左右子...

2019-08-24 19:14:36 547

原创 【C++自学笔记】深度理解二叉搜索树(模拟实现及源代码C++)

一、二叉搜索树1、二叉搜索树的概念二叉搜索树又称二叉排序树,它或者是一颗空树,有以下性质:若它的左子树不为空,则左子树上所有结点的值都小于根结点的值; 若它的右子树不为空,则右子树上所有结点的值都大于根结点的值; 它的左右子树也分别为二叉搜索树; int a[ ] = { 5,3,4,1,7...

2019-08-22 20:16:59 181

原创 【C++自学笔记】STL-详细解析set、mulitset(关联式容器)

一、set和multiset 的介绍和使用1、set1、set的介绍set是按照一定次序存储元素的容器,在set 中,元素的 value也标识它(value就是key,类型为T),并且每个value必须是唯一的,set 中的元素不能在容器中修改(元素总是const),但是可以从容器中插入或者删除他们; 在内部,set中的元素总是按照其内部比较对象(类型比较)所指示的特定严格弱排序准则...

2019-08-22 15:49:40 918

原创 【C++自学笔记】STL-详细解析map、mulitmap(关联式容器)

一、关联式容器概念1、关联式容器关联式容器也是用来存储数据的,与序列式容器不同的是,其里面存放的是<key,value>结构的键值对,在数据检索时比序列式容器效率更高。2、键值对用来表示具有一一对应关系的一种结构,该结构中包含两个成员变量 key 和 value ,key 表示键值,value 表示与 key 所对应的信息。template<class T1...

2019-08-22 15:26:48 664

原创 【C++自学笔记】STL—详细理解stcak和queue、priority_queue 及 其模拟实现(容器适配器)

一、stack的介绍和使用1、stack的介绍1、stack是一种容器适配器,专门用于具有LIFO(后进先出)的上下问环境中,其删除只能从容器的一端进行,元素的插入和提取操作;2、stack时作为容器适配器被动实现的,容器适配器即使对特定类封装作为其底层的容器,并提供一组特定的成员函数来访问其元素,将特定类作为其底层的,元素特定容器的尾部(栈顶)被压入或者弹出;3、stack的底层...

2019-08-21 21:34:27 534

原创 【C++自学笔记】STL—详细理解deque

一、deque的介绍1、deque是一种动态大小的双端队列,属于序列式容器,两端均可伸缩;2、特定的库可以以不同的方式实现deque ,但是通常都是一种动态数组,不论任何情况下,它都允许通过随机访问迭代器的方式直接访问单个元素,可以根据需要动态伸缩;3、deque 提供了一些与 vector 类似的功能,但是 deque 在头部和尾部的插入过程中效率更高,与 vector 不同的是,d...

2019-08-21 20:08:23 238

原创 【C++自学笔记】STL-list的深度剖析及模拟实现(源码)

一、list的介绍及使用1、list 的介绍list 是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代; list 底层时双向链表结构,双向链表中每个元素存储在互不想关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素; list 和 forward_list 非常相似,主要不同在于 forward_list 是单链表,只能朝前迭代,已让其简单...

2019-08-20 21:03:51 370

原创 【C++自学笔记】详细理解智能指针

一、智能指针的使用及原理1、RAIIRAII是一种利用对象生命周期来控制程序资源(内存、文件句柄、网络连接、互斥量等等)的简单技术;在对象构造时获取资源,接着控制对资源的访问使之在对象的生命周期内始终有效,最后在对象析构的时候释放资源。借此,我们实际上把管理一份资源的责任托管给了一个对象,有两大好处:不需要显示的访问; 采用这种方式,对象所需要的资源在其生命期内始终有效;2、s...

2019-08-19 20:51:06 191

原创 【C++自学笔记】C/C++的异常处理

一、C语言传统的处理错误方式实际上C语言基本都是使用返回错误码的方式处理错误,部分情况使用终止程序处理非常严重的错误;终止程序:assert ,缺陷:用户难以接收,如果发生内存错误,除 0 错误时就会终止程序; 返回错误码:缺陷:需要程序猿自己去查找对应的错误,如系统的很多库的接口函数都是通过把错误码放到 error 中,表示错误; C标准库 setjmp 和longjmp组合,这...

2019-08-19 17:23:55 227

原创 【C++自学笔记】几个特殊的类(不能被继承、只能在堆上、只能在栈上)

一、实现一个不能被继承的类1、C++98 中构造函数私有化,派生类中调不到基类的构造函数,则无法被继承;class NonInherit {public: static NonInherit GetInstance() { return NonInherit(); }private: NonInherit() { }};2、C++11 关键字 final 可以禁止...

2019-08-19 15:33:16 178

原创 【C++自学笔记】C/C++内存管理

一、C/C++内存分布先看一段C语言代码:int globalVar = 1;static int staticGlobalVar = 1;void Test() { static int staticVar = 1; int localVar = 1; int num1[10] = { 1, 2, 3, 4 }; char char2[] = "abcd"; char*...

2019-08-18 23:00:21 244

原创 【C++自学笔记】详细解读——C++面向对象之多态

一、多态的定义及实现多态:通俗来说,就是多种形态,具体点就是完成某个行为,当不同的对象去完成时会产生出不同的状态;1、多态的构成条件多态是在不同继承关系的类对象,去调用同一个函数,产生了不同的行为。在继承中构成多态还有两个条件:必须通过基类的指针或者引用调用虚函数; 被调用的函数必须是虚函数,且派生类必须对基类的虚函数进行重写。2、虚函数(被关键字 virtual 修饰的类...

2019-08-18 19:16:51 353

原创 【C++自学笔记】详细解读——C++面向对象之继承(内含详细理解菱形继承和菱形虚拟继承)

一、继承的概念及定义1、继承的概念继承机制是面向对向程序涉及使代码可以复用的最重要的手段,它允许程序猿在保持原有类特性的基础上进行了扩展,增加功能,产生新的类,称为派生类(子类)。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程,继承是类设计层次的复用。2、继承的定义先看一个例子:class Person {public: void Print() ...

2019-08-17 22:02:13 253

原创 【C++自学笔记】STL—vector详解及模拟实现

一、什么是vector?vector是表示可变大小数组的序列容器;vector就像是数组一样,也采用连续存储空间来存储元素,同样可以使用下标来访问vector的元素,它和数组差不多,但是它的大小是可变的,并且它的大小是会被容器自动处理的;二、vector的使用需要包含<vector>头文件,需要std命名空间(using namespace std)1、vector...

2019-08-17 21:01:03 369

原创 【数据结构】通俗易懂的快速排序递归及非递归(Hoare版本、挖坑法、前后指针)C++完整代码

快速排序是Hoare于1962年提出的一种二叉树结构的交换排序方法。其基本思想为:任取待排序元素序列中 的某元素作为基准值,按照该排序码将待排序集合分割成两子序列,左子序列中所有元素均小于基准值,右子序列中所有元素均大于基准值,然后最左右子序列重复该过程,直到所有元素都排列在相应位置上为止。如何寻找基准值?一般情况下会选择排序序列的最后一个元素作为基准值,但是如果待排序列的最后一个元素...

2019-08-15 23:15:26 370

原创 【C++自学笔记】类的六个默认成员函数

一、构造函数构造函数是特殊的成员函数,需要注意的是,构造函数名称虽然叫构造函数,但是需要注意的是它并不是开辟空间创建对象,而是对对象进行初始化。如果类中没有显示定义构造函数,C++编译器会自动生成一个无参的构造函数,一旦用户显示定义编译器将不再生成。class Date{public: //无参的构造函数 Date(){ } //带参的构造函数 ...

2019-08-14 16:03:48 151

原创 【C++自学笔记】从C到C++入门级的小知识(引用、内联函数、auto关键字、范围for循环)

一、引用1、引用的定义引用是C++中的一个很重要的概念,引用不是新定义了一个变量,而是给已经存在的变量取了一个别名,实际上编译器并不会为它分配新的内存空间,它和它所引用的变量使用同一块命名空间。其语法为:类型& 引用变量名(对象名) = 引用实体;void TestFun() { int a = 10; int& ra = a; cout << ...

2019-08-11 22:11:42 165

原创 【C++自学笔记】从C到C++入门级的小知识(命名空间、标准输入/输出、缺省参数、函数重载)

一、命名空间在C语言中,我们通常会遇到一个问题,就是在给函数起名字的时候怎么起呢,大部分人用汉语拼音,高端一些的人士会用英文,但是这也避免不了会有名字冲突的情况发生,一旦名字冲突那整个工程都将无法进行编译。在C++中,引用入了命名空间的这个概念来解决这个问题,它最主要的功能就是解决了名字相互冲突的问题。1、命名空间的定义定义一个命名空间,需要用到 namespace 这个关键字,后面跟...

2019-08-10 23:07:00 171

原创 【Linux/网络】基于HTTP的简易点餐系统小项目 持续更新~

一、整体架构系统的整体分为三个部分:服务器、商家客户端、顾客客户端项目效果:商家通过商家客户端可以进行订单管理和菜品管理; 顾客可以通过扫描餐桌上的二维码进入顾客客户端进行点餐,将订单提交到服务器上由商家在客户端上获取到;编程语言/开发平台:服务器:编程语言基于C++、开发平台基于Linux(CentOS 7.3)(阿里云轻量应用服务器)、MySQL 客户端:HTML、CSS...

2019-08-07 19:41:22 780

空空如也

空空如也

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

TA关注的人

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