自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 日期时间数据

参数h、m、s、ms分别表示小时、分钟、秒、毫秒。

2023-10-09 09:32:21 132

原创 常用算法详解

nums[101] //存放原数据sum[101] //存放前缀和b[101] //存放差分标记bsum[101] //存放差分标记的前缀和一维前缀和:核心算法:sum[i] = sum[i-1] + nums[i]。二维前缀和:核心算法:sum[i][j] = sum[i-1][j] + sum[i][j-1] - sum[i-1][j-1] + nums[i][j]。容斥原理基本思想。

2023-10-08 22:04:35 82

原创 QString字符串操作

前沿没啥要说的,这文章就是我看QT6开发指南和看b站up主爱编程的大丙qt视频说记录的笔记1.1QString字符串操作QString用来存储字符串,没有父类。存储的是一串字符,每个字符都是Qchar类型,,使用的是UTF-16编码,一个字符包含两个字节数据。对于超过65535的Unicode编码,QString使用两个连续的QChar字符表示。一个汉字是一个字符。

2023-10-08 10:14:52 652

原创 Docker基础

数据卷就是目录或文件,存在于一个或多个容器中,由docker挂载到容器,但不属于联合文件系统。

2023-10-05 15:52:50 61

原创 c++中IO优化

如果是对应的文件读取与写入的的话,使用配套的fread()、fwrite()、freope()即可。sync_with_stdio(false)为取消同步,不推荐使用。

2023-09-15 15:22:38 92

原创 可变参数模版

语法://函数模板的参数个数为0到多个参数,每个参数的类型可以各不相同void func1(T...args)//args一包形参,T一包类型//sizeof...固定语法格式计算获取到模板参数的个数;//注意sizeof...只能计算...的可变参。

2023-09-14 11:52:45 35

原创 文件操作简单了解

ofstream: 写操作(输出)的文件类 (由ostream引申而来)ifstream: 读操作(输入)的文件类(由istream引申而来)fstream: 可同时读写操作的文件类 (由iostream引申)文件处理基本流程。

2023-09-14 10:23:40 61

原创 模板的简单了解

模板用来解决功能相同只是需要操作的数据类型不同的问题。模板是另一种代码重用机制。

2023-09-13 17:16:00 40 1

原创 嵌套类和局部类

语法:class 外围类名{ // 类体class 嵌套类名{ // 类体外围类需要使用嵌套类对象作为底层实现,并且该嵌套类只用于外围类的实现,且同时可以 对用户隐藏该底层实现。从作用域的角度看,嵌套类被隐藏在外围类之中,该类名只能在外围类中使用。如果在外围 类之外的作用域使用该类名时,需要加名字限定。嵌套类中的成员函数可以在它的类体外定义。嵌套类的成员函数对外围类的私有成员没有访问权,反之亦然。嵌套类仅仅只是语法上的嵌入。

2023-09-13 16:42:19 58

原创 异常处理简单了解

异常处理指的是处理运行时错误的过程,对异常进行处理,保证程序在出现问题后也可以继续运行。 异常指的是在运行时候抛出的异常信息。所有异常都派生自 std::exception类。 它是一个可以处理的运行时错误。 如果我们不处理异常,它就会打印异常消息并终止程序。try 块中放置可能抛出异常的代码,try 块中的代码被称为保护代码(有可能出错的代码)。3. 自定义异常 通过继承和重载 exception类来定义新的异常:

2023-09-13 16:15:03 59

原创 c++多态

多态” 指的是同一名字的事物可以完成不同的功能。多态可以分为编译时的多态和运行时的多态。编译时的多态:主要是指函数的重载(包括运算符的重载)。对重载函数的调用,在编译时就能根据实参确定应该调用哪个函数,因此叫编译 时的多态;运行时的多态:和继承、虚函数等概念有关。有虚函数基类指针指向基类对象时就使用基类的成员指向派生类对象时就使用派生类的成员这种就叫多态C++ 提供多态的目的是:可以通过基类指针对所有派生类的成员变量和成员函数进行 “全方位” 的访问。

2023-09-13 15:38:46 41

原创 归并排序与统计排序

归并排序,其排序的实现思想是先将所有的记录完全分开,然后两两合并,在合并的过程中将其排 好序,最终能够得到⼀个完整的有序表。归并思想:大问题,拆分成小问题、而且要求每个小问题都是独立的。

2023-09-12 19:46:47 44

原创 c++继承

如果创建的新类与现有的类相似,只是多出若干成员变量或成员函 数时,可以使用继承,这样不但会减少代码量,而且新类会拥有基类的所有功能。如果需要创建多个类,它们拥有很多相似的成员变量或成员函数时, 也可以使用继承。可以将这些类的共同成员提取出来,定义为基类,然后从基类继承, 既可以节省代码,也方便后续修改成员。C++ 中的继承是类与类之间的关系,是一个很简单很直观的概念,与现实世界中的继承类似,比如儿子继承父亲的财产。继承。

2023-09-12 09:07:19 78

原创 堆排序详解

数据放到堆上 insert 怎么插入 能够满足堆属性。顺序存储 [i/2, i, 2i, 2i+1]最小值 找根节点 extract 调整 满足小顶堆。如果想更加详细了解堆排序,不妨可以看看STL源码剖析中的heap算法。n个数,申请n+1个节点,从1号索引开始存数据。堆特点:没有顺序,很方便找最大/最小值 TOP10。数据存放在一个堆上,任意的节点,都要满足小顶堆。堆:基于完全二叉树的特殊数据结构。操作: 插入数据 删除数据。

2023-09-11 17:33:13 27

原创 交换排序详解

起泡排序,别名“冒泡排序”,该算法的核⼼思想是将⽆序表中的所有记录,通过两两⽐较关键字, 得出升序序列或者降序序列。例如,对⽆序表{49,38,65,97,76,13,27,49}进⾏升序排序的具体实现过程如图所示:上图所示是对⽆序表的第⼀次起泡排序,最终将⽆序表中的最⼤值 97 找到并存储在表的最后⼀个位置。由于 97 已经判断为最⼤值,所以第⼆次冒泡排序时就需要找出除 97 之外的⽆序表中的最⼤值,⽐ 较过程和第⼀次完全相同。

2023-09-11 15:32:23 40

原创 修饰符、友元与运算符重载

在 C++ 中,所有的 成员变量和成员函数都有访问权限,所谓的访问权限,就是到底能不能访问该类中的成员变量和成员函数。C++ 中,用来控制访问权限的 关键字 有 public、protected 和 private,它们分别表示公有的、受保护的和私有的,同时,它们被统称为成员访问限定符。可以被该类中的函数、子类的函数、其友元函数访问,也可以由该类的对象访问。可以被该类中的函数、子类的函数、以及其友元函数访问,但不能被该类的对象访问。

2023-09-11 08:43:44 35

原创 类与对象其一

具有相同特性(数据元素)和行为(功能)的对象的抽象就是类。因此,对象的抽象是类, 类的具体化就是对象,也可以说类的实例是对象,类实际上就是一种数据类型。类具有属性,它是对象的状态的抽象,用数据结构来描述类的属性。类具有操作,它是对象的行为的抽象,用操作名和实现该操作的方法来描述。

2023-09-11 07:53:27 28

原创 插入排序详解

插⼊排序算法是所有排序⽅法中最简单的⼀种算法,其主要的实现思想是将数据按照⼀定的顺序⼀ 个⼀个的插⼊到有序的表中,最终得到的序列就是已经排序好的数据。

2023-09-10 15:42:45 395 1

原创 C++ 中 static 和 const 关键字

修饰局部变量修饰全局变量修饰函数修饰类。

2023-09-07 16:52:51 49 1

原创 图的概念及重要术语

在中,每个元素之间只有⼀个和⼀个。在树形结构中,数据元素之间是,并且每⼀层上的数据元素可能和下⼀层中多个元素相关,但只能和上⼀层中⼀个元素相 关。但这仅仅都只是⼀对⼀,⼀对多的简单模型,如果要描述多对多的复杂关系就需要图数据结构了!

2023-09-06 14:13:15 145 1

原创 c++中值传递、指针传递和引用传递

被调函数的形参也作为局部变量在栈中开辟了内存空间,但是内存空间中存的是实参变量的地址,而不是指针传递那种的副本。所以对形参的任何操作都会影响实参。是值传递的方式,它所传递的是一个地址值。值传递过程中,被调函数的形式参数作为被调函数的局部变量处理(),所以改变传进来的地址,并不会影响实参的地址,不过是可以通过传进来的地址来改变实参对象的对象的。指的是传进来的地址值被作为局部变量处理,而不是指针指向的值。:形参为指向实参地址的指针,当对形参的指向操作时,就。:形参是实参的拷贝,改变形参的值并。

2023-09-06 13:36:39 68 1

原创 c++中内存分配情况

用来保存局部static对象、类static数据成员已经定义在任何函数之外的变量。还分为初始化和未初始化两个区域,存储初始化和未初始化的全局变量和静态变量。):由程序员管理,需要⼿动对空间进⾏分配和回收,空间较⼤,但可能会出现内存泄漏和空闲碎⽚的情况。static对象在 使用前分配,在程序结束时销毁。:用来保存定义在函数内的非static对象。对于栈对象,仅在其定义的程序块中运行时才存在。堆中对象的生存周期由程序来控制。:存储常量,⼀般不允许修改。:存放程序的⼆进制代码。

2023-09-06 10:43:36 38 1

原创 智能指针详解

智能指的作⽤是管理⼀个指针,避免申请的空间在函数结束时忘记释放,造成内存泄漏这种情况的发⽣。因为智能指针就是⼀个类,当超出了类的作⽤域是,类会⾃动调⽤析构函数,析构函数会⾃动释放资源。定义在头文件memory。

2023-09-05 19:27:37 34

原创 API的理解和使用

dbsize命令在计算键总数时不会遍历所有键,而是直接获取Redis内置的 键总数变量,所以dbsize命令的时间复杂度是O(1)。而命令会遍历所 有键,所以它的时间复杂度是O(n),当Redis保存了大量键时,。Redis支持对键添加过期时间,当超过过期时间后,会自动删除键,例如为键hello设置了10秒过期时间:expire hello 10。

2023-09-04 09:52:22 144 3

原创 配置、启动、操作、关闭Redis

注意:如果没有-h参数,那么默认连接127.0.0.1;如 果没有-p,那么默认6379端口,也就是说如果-h和-p都没写就是连接 127.0.0.1:6379这个Redis实例。有三种方法启动Redis:默认配置、运行配置、配置文件启动。

2023-09-03 14:22:50 1425

原创 socket套接字

大多数网络应用程序使用两个协议:传输控制协议(TCP)和用户数据包协议(UDP)。他们都使用一个端口号以识别应用程序。端口号为主机上所运行之程序所用,这样就可以通过号码象名字一样来跟踪每个应用程序。端口号让操作系统更容易的知道有多少个应用 程序在使用系统,以及哪些服务有效。端口号被从 1 开始分配。通常端口号超出 255 的部分被本地主机保留为私有用途。1 到 255 之间的号码被用于远程应用程序所请求的进程和网络服务。每个网络通信循环地进出主计算机的 TCP 应用层。

2023-08-30 09:47:10 279 2

原创 并查集和哈夫曼树

并查集有两种常见实现思路查找效率:O(1)合并效率:O(N)查找效率:O(logN)合并效率:O(logN)

2023-08-30 08:45:42 71 1

原创 二叉搜索树和平衡树

如果他的左⼦树不空,则左⼦树上所有结点的值均⼩于它的根结点的值。若它的右⼦树不空,则右⼦树上所有结点的值均⼤于它的根结点的值。它的左、右树⼜分为二叉排序树。

2023-08-29 11:09:47 82 4

原创 进程控制详解

守护进程是一种后台运行并且独立于所有终端控制之外的进程。UNIX/Linux 系统通常 有许多的守护进程,它们执行着各种系统服务和管理的任务。

2023-08-28 19:10:09 65 1

原创 树、二叉树、线索二叉树

树(Tree)是n(n≥0)个节点的有限集合T,它满足两个条件 :有且仅有一个特定的称为根(Root)的节点其余的节点可以分为m(m≥0)个互不相交的有限集合T1、T2、……、Tm,其中每一个集合又是一棵树, 并称为其根的子树(Subtree)。树的定义具有递归性,即“树中还有树”。二叉树是每个结点最多有两个子树的树结构。二叉树不允许存在度⼤于2的树。它有五种最基本的形态:二叉树可以是空集根可以有空的左子树或者右子树;左右子树都是空。只有左子树或者右子树的叫做斜树。

2023-08-25 08:22:30 147 1

原创 深度探索c++对象模型

第一章关于对象(Object Lessons)第二章构造函数语意学第三章data语意学第四章function语意学第五章构造、析构、拷贝语义学第六章执行期语意学第七章站在对象模型的尖端。

2023-08-21 16:24:58 112 1

原创 栈和队列的实现

栈是限制在一端进行插入操作和删除操作的线性表(俗称堆栈),允许进行操作的一端称为“栈顶”,另一固定端称为 “栈底”,当栈中没有元素时称为“空栈”。特点 :后进先出(LIIFO)。队列是一种特殊的线性表,特殊之处就在于它只允许在表的前端进行删除操作,在表的后端进行 插入操作。和栈一样,队列也是一种操作受到限制的线性表。进行插入操作的端称之为队尾,进行删除操作的端称之为队头。队列中没有队列的时候,称之为空队列。队列的数据元素,⼜叫做队列元素。

2023-08-21 10:28:07 223 1

原创 高精度算法

本篇文章是依据哔哩哔哩上up主麦克老师讲算法的视频做的笔记,该视频简单易懂,十分推荐,推荐看视频。【高精度算法全套(加,减,乘,除,全网最详细)】 https://www.bilibili.com/video/BV1LA411v7mt/?int类型的取值范围10^9,long long类型为10^18,当要取得的数据大于这个范围就需要使用高精度了。

2023-08-21 08:19:33 42

原创 链式存储表

申请一个结构的头 存储数据的首地址,以及这个结构的其他参数。链式 物理上不连续 增加 元素逻辑的关系。在第二个位置上,进行插入操作时,如果索引指针指向第二个节点,无法进行后续操作。链式存储维护 表内容的首结点,首结点逐个寻找其他节点。一旦把节点的next赋新值,之前的下一个元素的关系,就断开。单链表中,一旦索引指针往前走一步,之前的元素就再也找不到。删除A元素,站在A元素的前一个元素上,才能删除A元素。链式存储的特点和核心操作逻辑。

2023-08-19 13:00:00 75

原创 数据结构基础概念和表的代码

数据类型是按照值的不同划分的。数据类型可以分为两类:(1)原子类型:是不可以再分解色基本类型,包括整型、实例、字符型等。(2)结构类型:由若干个类型组合而成,是可以再分解的。例如,整型数组是由若干个整型数组组成的。算法是求解特定问题的步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。

2023-07-28 16:04:11 78 1

原创 STL读书笔记

一、容器:是各种数据结构,如vector、list、deque、set、map。从现实角度看STL容器是一种class template(类模板)二、算法:常用算法如sort、search、copy、erase。从现实角度看STL算法算是一种function template(函数模版)三、迭代器:扮演容器和算法之间的胶合剂,是“范型指针”。从现实角度看,迭代器是一种将指针相关操作予以重载的class template。四、仿函数:行为类似函数。

2023-07-26 16:43:37 973 3

空空如也

空空如也

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

TA关注的人

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