自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(112)
  • 资源 (1)
  • 收藏
  • 关注

原创 C++智能指针

智能指针

2022-06-04 20:01:35 1151 5

原创 linux就该这么学【网络编程socket套接字】

本节重点认识IP地址, 端口号, 网络字节序等网络编程中的基本概念;学习socket api的基本用法;能够实现一个简单的udp客户端/服务器;能够实现一个简单的tcp客户端/服务器(单连接版本, 多进程版本, 多线程版本);理解tcp服务器建立连接, 发送数据, 断开连接预备知识源IP地址和目的IP地址在IP数据包头部中, 有两个IP地址, 分别叫做源IP地址, 和目的IP地址.我们都知道ip是标识着全网的唯一一台主机,只要找到了目的ip地址就可以确定数据该往哪里传输, 而源ip.

2022-03-26 10:44:10 3776 13

原创 linux就该这么学【进程控制】

目录进程创建fork函数初识fork函数返回值进程创建fork函数初识在linux中fork函数是非常重要的函数,它从已存在进程中创建一个新进程。新进程为子进程,而原进程为父进程#include <unistd.h> //fork所在头文件pid_t fork(void); //fork函数原型fork创建子进程是以父进程为“模板”的,fork的返回值:给子进程中返回0,给父进程返回子进程id,创建子进程失败出错返回-1进程调用fork,当控制转移到内核中的fork代码.

2022-02-12 20:29:17 868 2

原创 linux就该这么学【进程地址空间】

目录进程地址空间进一步理解地址空间进程地址空间我们都知道fork创建进程后,进程的执行是随机的 1 #include <stdio.h> 2 #include <unistd.h> 3 #include <stdlib.h> 4 5.

2022-02-07 23:25:55 940 1

原创 C++11新特性 + 语法糖

目录C++11简介列表初始化std::initializer_list变量类型推导decltype类型推导右值引用左右与右值概念区分左值右值总结:右值引用的使用场景C++11简介在2003年C++标准委员会曾经提交了一份技术勘误表(简称TC1),使得C++03这个名字已经取代了C++98称为C++11之前的最新C++标准名称。不过由于TC1主要是对C++98标准中的漏洞进行修复,语言的核心部分则没有改动,因此人们习惯性的把两个标准合并称为C++98/03标准。从C++0x到C++11,C++标准10年.

2022-02-07 16:15:05 1884 3

原创 linux就该这么学【进程概念】

目录基本概念系统允许多个进程同时运行起来,OS需要对进程进行管理,如何管理进程?**操作系统管理进程的方式是先描述后组织**描述进程-PCBtask_struct-PCB的一种task_ struct内容分类总结:组织进程基本概念课本概念:程序的一个执行实例,正在执行的程序等内核观点:担当分配系统资源(CPU时间,内存)的实体操作系统一般存在在根目录下的boot目录下,而这个boot目录下存放的是一些镜像和压缩包 ,这就是我们操作系统所在的位置 查看指令:sudo ls /boot/而这些

2022-01-30 23:17:21 3338 2

原创 C++特殊类设计 -单例设计模式

目录特殊类设计只能在堆上创建对象的类请设计一个类,只能在栈上创建对象请设计一个类,不能被拷贝请设计一个类,不能被继承请设计一个类,只能创建一个对象(单例模式)懒汉模式和饿汉模式的对比特殊类设计只能在堆上创建对象的类请设计一个类,只能在堆上创建对象实现方式:将类的构造函数私有,拷贝构造声明成私有。防止别人调用拷贝在栈上生成对象。提供一个静态的成员函数,在该静态成员函数中完成堆对象的创建class test {public: static test* GetObj() { re.

2022-01-27 18:26:12 1205 4

原创 哈希表和哈希桶模拟实现、封装unordered_map、unordered_set

目录unordered系列关联式容器unordered_map的文档介绍unordered_map的接口说明unordered系列关联式容器在C++98中,STL提供了底层为红黑树结构的一系列关联式容器,在查询时效率可达到 ,即最差情况下需要比较红黑树的高度次,当树中的节点非常多时,查询效率也不理想。最好的查询是,进行很少的比较次数就能够将元素找到,因此在C++11中,STL又提供了4个unordered系列的关联式容器,这四个容器与红黑树结构的关联式容器使用方式基本类似,只是其底层结构不同,本文中只.

2022-01-26 09:26:03 785

原创 C++实现红黑树

目录红黑树的概念红黑树的性质红黑树的定义与树结构插入旋转验证删除红黑树与AVl树的比较红黑树的应用红黑树的概念红黑树,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。 通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有一条路径会比其他路径长出俩倍,因而是接近平衡的概念总结:红黑树是二叉搜索树的升级,结点里面存放的成员col标记当前结点的颜色,它的最长路径最多是最短路径的二倍,红黑树通过各个结点着色方式的限制接近平衡二叉树,但是不同于AV.

2022-01-12 13:32:31 901 2

原创 C++实现AVL树

目录AVL树的概念AVL树的插入AVL树的四种旋转右单旋左单旋左右双旋右左双旋查找其他接口析构函数拷贝构造拷贝赋值AVL树的概念二叉搜索树虽可以缩短查找的效率,但如果数据有序或接近有序二叉搜索树将退化为单支树,查找元素相当于在顺序表中搜索元素,效率低下。因此,两位俄罗斯的数学家G.M.Adelson-Velskii和E.M.Landis在1962年发明了一种解决上述问题的方法:当向二叉搜索树中插入新结点后,如果能保证每个结点的左右子树高度之差的绝对值不超过1(需要对树中的结点进行调整),即可降低树的高.

2022-01-03 10:22:05 2107 13

原创 每日一题【剑指 Offer 41. 数据流中的中位数】

数据流中的中位数.解题步骤:/* 解题思路: 得出一个数据流的中位数的问题我们可以之间建立两个堆,一个是大根堆,而另一个就是小根堆,通过建立两个 堆的关系从而来达到我们的目的(找出中位数)*/class MedianFinder {public: /** initialize your data structure here. */ MedianFinder() { /* 此处可以省略... */ } void ad..

2021-12-30 23:51:46 354 2

原创 剑指 Offer 36. 二叉搜索树习题

/*// Definition for a Node.class Node {public: int val; Node* left; Node* right; Node() {} Node(int _val) { val = _val; left = NULL; right = NULL; } Node(int _val, Node* _left, Node* _right) { .

2021-12-29 14:28:24 367 2

原创 C++入门关联式容器【map和set基本使用】

目录关联式容器键值对set文档介绍set的模板参数列表set的使用set的构造set的迭代器set的容量set修改操作multisetmap的介绍map的模板参数说明关联式容器我们已经接触过STL中的部分容器,比如:vector、list、deque、这些容器统称为序列式容器,因为其底层为线性序列的数据结构,里面存储的是元素本身关联式容器也是用来存储数据的,与序列式容器不同的是,其里面存储的是<key, value>结构的键值对,在数据检索时比序列式容器效率更高总结:1、容器本身底层.

2021-12-28 11:26:50 228 4

原创 C++类和对象继承

目录继承的概念及定义继承的概念及定义继承的概念继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复用,继承是类设计层次的复用。namespace mzt { //将一致的信息单独提取出来,提高程序的复用性 class Person { public: string _name;.

2021-12-07 10:46:53 1356 30

原创 linux就该这么学【yum 、vim、编译器gcc/g++使用、make使用】分享一个好用的vim配置

yum软件包在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序.但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好, 做成软件包(可以理解成windows上的安装程序)放在一个服务器上, 通过包管理器可以很方便的获取到这个编译好的软件包, 直接进行安装.软件包和软件包管理器, 就好比 “App” 和 “应用商店” 这样的关系.yum(Yellow dog Updater, Modified)是Linux下非常常用的一种包管理器. 主要应用在Fedora,.

2021-11-30 09:17:45 826 36

原创 linux就该这么学【权限管理】

Linux权限概念Linux下有两种用户:超级用户(root)、普通用户。超级用户:可以再linux系统下做任何事情,不受限制普通用户:在linux下做有限的事情。超级用户的命令提示符是“#”,普通用户的命令提示符是“$命令:su [用户名]功能:切换用户。例如,要从root用户切换到普通用户user,则使用 su user。 要从普通用户user切换到root用户则使用 suroot(root可以省略),此时系统会提示输入root用户的口令Linux权限管理文件和文件目录的所有者:U.

2021-11-23 09:51:57 5168 22

原创 C++入门List类使用介绍 + 进阶【模拟实现】

目录常用接口函数介绍构造函数迭代器常用的操作函数front和backpush_front 和 pop_frontpush_back 和 pop_backinsert 和 erase迭代器失效问题探讨常用接口函数介绍构造函数构造函数接口说明list()构造空的listlist (size_type n, const value_type& val = value_type())构造的list中包含n个值为val的元素list (const list&.

2021-11-22 08:10:42 675 21

原创 C++入门 vector的使用 + 进阶【模拟实现】

基本接口函数介绍构造函数函数名功能vector()(重点)无参构造,构造一个空容器,没有元素。vector(size_type n, const value_type& val = value_type())构造并初始化n个valvector (const vector& x); (重点)拷贝构造vector (InputIterator first, InputIterator last);使用迭代器进行初始化构造测试:void .

2021-11-17 08:57:25 3193 38

原创 Linux就该这么学【基础指令】

目录linux常用指令ls指令. 和 . .的意思cd的常用方式Linux的目录结构touch指令面试三问:mkdir指令(重要)treermdir指令 && rm 指令(重要)linux常用指令ls指令语法:ls功能:对于目录: 列出该目录下的所有子目录与文件。对于文件: 将列出文件名以及其他信息针对目录显示的效果:针对文件显示的效果:ls常用选项:推荐使用ls - al-a 列出目录下的所有文件,包括以 . 开头的隐含文件。-d 将目录象文件一样显示,而不是显示其.

2021-11-14 11:50:27 9018 34

原创 C++入门string类常用接口函数介绍 + 进阶【模拟实现string接口函数】

目录string类对象的常见构造string类对象的访问及遍历操作string类对象的常见构造介绍常用的几个string接口函数,如果需要学习更多的请参考官方文档: string构造函数.函数名称功能说明string() (重点)构造空的string类对象,即空字符串string(const char* s) (重点)用C-string来构造string类对象string(size_t n, char c)string类对象中包含n个字符cstring(c.

2021-11-11 11:35:44 1695 18

原创 C++入门-- 一篇带你扫清前期琐碎语法知识,快速入门,效率直线拉升

目录C++关键字(C++98)命名空间命名空间定义:命名空间嵌套using namespace stdC++关键字(C++98)C++总计63个关键字,C语言32个关键字命名空间在C/C++中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突或名字 污染,namespace关键字的出现就是针对这种问题的。命名空间定义:定义命名空间,需要使用到namespace关键字,后.

2021-10-26 15:13:10 1925 31

原创 万字总结画解八大排序算法

目录插入排序希尔排序插入排序1、从图中观察的现象是如果后一个数不比前一个数小,那就不需要插入,不插入的动作就是break出循环2、如果前面的数都比pos值大,那么就将前n个数都往后挪动,直到比pos值小或者相等就停止,可以用循环控制,这里防止越界需要再加判断插入排序的基本思想:其基本思想是:把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中,直到所有的记录插入完为止,得到一个新的有序序列 。//插入排序,升序void InsertSort(int* arr, in.

2021-10-23 14:18:01 1070 39

原创 堆实现TopK问题以及二叉树的基础知识铺垫

目录前言树概念及结构树的表示左孩子右兄弟表示法2.二叉树概念及结构2.4特殊的二叉树:二叉树的性质练习题前言一个(最大)二叉堆是一个具有最大堆特性的完全二叉树。所以在学习堆之前,我们先来学习一下二叉堆吧树概念及结构1.1树的概念树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。有一个特殊的结点,称为根结点,根节点没有前驱结点除根节点外,其余结点被分成M(M>0)个互不.

2021-10-19 10:11:58 494 7

原创 栈和队列C语言实现附加力扣题

目录栈的概念栈的实现栈的声明栈的实现压栈出栈队列队列声明队列实现销毁队尾入队队头出队判空获取队头数据获取队尾数据求元素个数力扣题20. 有效的括号225. 用队列实现栈栈的概念1.栈1.1栈的概念及结构栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。出栈:栈的删除操作叫做出栈。出数据也在.

2021-10-18 08:38:37 604 32

原创 顺序表C语言实现附加力扣题

目录1.线性表2.顺序表顺序表缺陷:顺序表的实现顺序表的初始化顺序表的销毁1.线性表线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串…线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式存储。2.顺序表2.1概念及结构顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。

2021-10-07 09:43:00 717 23

原创 c语言预处理 国庆期间不休息弯道超车一篇就够了

目录程序的翻译环境详解编译+链接梳理:程序的执行环境预定义符号介绍预处理指令 #define宏和函数的对比预处理操作符#和##的介绍命令定义预处理指令 #include预处理指令 #undef条件编译程序的翻译环境程序的翻译环境和执行环境 在ANSI C的任何一种实现中,存在两个不同的环境。第1种是翻译环境,在这个环境中源代码被转换为可执行的机器指令。第2种是执行环境,它用于实际执行代码。假设你要处理一个2 + 3 的简单加法计算你的程序会经过预编译、编译、汇编、最终链接生成一.

2021-10-01 13:39:36 1003 18

原创 C语言篇 +文件操作(营养鸡汤期末不挂科)

目录什么是文件文件名文件类型文件缓冲区文件指针总结:补充:文件的打开和关闭那么如何打开桌面上的文件呢?文件的顺序读写文件读写的函数字符输出函数fputc流的概念字符输入函数fgetc总结:文本行输出函数 fputs文本行输入函数 fgets格式化输出函数 fprintf格式化输入函数 fscanf二进制输出 fwrite二进制输入 fread文件的随机读写文件结束的判定什么是文件什么是文件 磁盘上的文件是文件。但是在程序设计中,我们一般谈的文件有两种:程序文件、数据文件程序文件包括源.

2021-09-29 08:03:57 1208 35

原创 C语言篇 + 内存管理及柔性数组话题

目录为什么存在动态内存分配动态内存函数的介绍malloc和freefree函数的注意事项举例一举例二正确使用callocrealloc常见的动态内存错误对NULL指针的解引用操作对动态开辟空间的越界访问对非动态开辟内存使用free释放使用free释放一块动态开辟内存的一部分对同一块动态内存多次释放动态开辟内存忘记释放(内存泄漏)几个经典的笔试题柔性数组为什么存在动态内存分配为什么存在动态内存分配首先我们先了解一下内存中的几个区域栈区、堆区、静态区我们已经掌握的内存开辟方式有:int val =

2021-09-25 11:16:05 957 47

原创 QT开发实例之常用控件(上)

为防止通过setWindowTitle 设置的窗口标题出现中文乱码的问题,需要将设置的参数进行一个转换,可以通过fromLocal8Bit 函数转换后就不会出现中文乱码的问题了。在窗体中创建 QLabel 标签显示“我是 QLabel”字样,红色加粗倾斜字体。在窗体中创建按钮 A,点击按钮 A,改变文字为按钮 B。将窗体背景色透明,根据图片形状显示窗体。对输入的密码会进行一个隐藏设置。

2022-11-23 17:22:28 874 6

原创 QT 字符串操作常用接口函数

qt开发实例

2022-11-22 16:41:17 859 1

原创 力扣每日一题【用户分组】

力扣解题

2022-10-13 23:38:18 491 4

原创 opencv入门四

opencv

2022-09-04 12:08:40 1406 8

原创 opencv入门三

opencv

2022-09-03 11:39:27 1341

原创 Qt入门 【ui设计】

Qt

2022-09-03 07:49:28 3621

原创 opencv入门 二

opencv

2022-09-02 15:18:35 893 8

原创 opencv入门

opencv

2022-09-01 16:23:10 809 8

转载 一篇搞懂五种io模型

linux

2022-07-30 15:40:09 151

原创 力扣每日一题 - 【单词搜索】

刷题打卡

2022-07-02 13:21:21 157

原创 力扣每日一题 -【全排列】

刷题

2022-07-01 12:39:51 198 9

原创 力扣每日一题【滑动窗口中位数】

刷题打卡

2022-06-30 12:17:54 285 7

交通罚单管理系统.C

交通罚单管理系统.C

2021-06-24

空空如也

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

TA关注的人

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