自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(44)
  • 资源 (3)
  • 收藏
  • 关注

原创 虚拟机连不上网-主ip地址网络信息不可用 解决方案

虚拟机连不上网解决方案

2022-11-04 12:21:37 5490 28

原创 HTTP与RPC区别比较分析

HTTP与RPC区别

2022-10-28 13:17:08 2801 3

原创 HTTP复习(二)

HTTP/1,HTTP/2,HTTP/3总结

2022-10-25 13:23:53 1865 4

原创 HTTP总结(一)

HTTP总结(一)

2022-10-18 11:53:22 1446 2

原创 输入网址后发生了什么&没有listen(accept)能建立连接吗&SYN洪水

网络复习(一)

2022-10-17 20:25:46 922 4

原创 LeetCode括号的分数(栈、树形结构、贡献率三种解法)

LeetCode856.括号的分数(三种解决方式)

2022-10-09 15:30:16 405 1

原创 小林coding图解操作之硬件结构

小林coding之图解操作系统(一)

2022-09-25 20:54:48 1995 1

原创 C++智能指针讲解及模拟实现

C++智能指针详解及模拟实现

2022-08-05 13:36:51 739 6

原创 C++基础语法(六)多态

C++基础语法(六)多态一、什么是多态1、静态的多态2、动态的多态二、构成多态的条件与实现1、多态的构成条件问题一:什么是虚函数问题二:什么是函数重写2、纯虚函数和抽象类纯虚函数的定义抽象类3、override和final关键字overridefinal4、实现继承和接口继承三、多态的底层原理1、虚函数表指针2、为啥必须使用基类指针或者引用才能构成多态3、关于虚表的一些扩展(1)虚函数表的“不正确”(2)何时初始化_vfptr?(3)如何理解重写 == 覆盖?(4)虚函数表存放在哪里?4、多继承中的虚函数表

2021-10-29 09:38:30 906 8

原创 Linux进程详解——万字总结,复习利器

1、图解计算机体系结构xxxx在学习操作系统的时候,我们肯定要对计算机的体系结构有一个大体的认识,至少是在框架层次上的,作为软件开发人员,我们需要这方面的知识,但是并不是要对他十分透彻的认识,刨根问底的理解是不太需要的(当然自身知识越丰富越好)。xxxx计算机的体系结构是一种分层结构,硬件~软件一层一层分布。下面我们来对其进行一个大体的框架认识。xxxx接下来我们自底向上逐层来讲解一下计算机体系结构这六层。(1)底层硬件xxxx底层硬件就是计算机中的硬件设备,例如:网卡,键盘、硬盘、显示器……这

2021-10-12 20:53:20 2369 4

原创 C++基础语法(五)继承——万字总结,干货满满

C++继承继承是什么、为什么会出现继承1、什么样的场景会使用继承2、什么是继承3、继承的语法继承方式1、访问限定修饰符的作用(1)修饰类中成员(2)修饰继承方式基类\派生类对象赋值兼容问题(切割问题)1、基类\派生类对象赋值兼容的基本概念2、其他类型的切割指针赋值引用赋值继承中的作用域隐藏\遮蔽遮蔽的概念及理解遮蔽与函数重载派生类的默认成员函数1、构造函数2、拷贝构造3、operator=( )4、析构函数多继承单继承与多继承的概念菱形继承菱形继承的坑虚继承终极问题:C++如何通过虚继承解决数据冗余以及二义

2021-10-11 17:33:55 1662 6

原创 初识“回溯算法”讲解及LeetCode对应例题解析

初识“回溯算法”及LeetCode例题解析回溯算法1、回溯算法的概念2、回溯算法的一般解题思路3、解决问题的方法例题一:二叉树中和为某一值的路径(1)题目描述(2)题目分析(3)代码实现例题二:电话号码的字母组合(1)题目描述(2)题目分析(3)代码实现回溯算法1、回溯算法的概念xxxx回溯算法也叫试探法,它是一种系统地搜索问题的解的方法。回溯算法的基本思想是:从一条路往前走,能进则进,不能进则退回来,换一条路再试。xxxx上述文字有些抽象,如果将其具化来说。回溯法思路的具体描述是:把问题的解空间转

2021-09-21 19:13:25 1006 9

原创 LeetCode二叉搜索树的后序遍历序列

LeetCode二叉搜索树的后序遍历序列题目描述题目分析搜索二叉树1、定义2、性质题目分析(续)代码实现总结题目描述题目分析xxxx这道题的关键字是“搜索二叉树”、“后序遍历”。后序遍历大家应该都十分熟悉了,不熟悉的可以看我之前的博客二叉树的常见操作,但是搜索二叉树,估计大部分读者都不甚了解,所以我先把搜索二叉树的基本性质讲解一下。搜索二叉树1、定义二叉搜索树是满足以下性质的二叉树。1.非空左子树的所有结点的值小于其根结点的值;2.非空右子树的所有值大于其根结点的值;3.左右子树都是搜索

2021-09-20 21:11:47 720 8

原创 C++priority_queue模拟实现与仿函数讲解

C++priority_queue模拟实现1、priority_queue介绍(1)priority_queue的使用模拟实现仿函数 \ 函数对象何为仿函数?less的介绍仿函数与函数指针的比较其他函数对象补充priority_queue的实现1、priority_queue介绍xxxx先来一个大爆炸!!xxxx不要慌,我们慢慢解读,priority_queue(优先级队列),这确实是我们没有听说过的,不是我们在数据结构中讲过的。但是,我们注意到图中的一句话This context is simil

2021-09-18 18:28:40 588 12

原创 LeetCode重建二叉树详解

LeetCode重建二叉树详解题目描述原理分析(1)大致思路(2)细节阐述代码实现(1)主函数(2)递归函数参数区间的决定递归结束的条件总结题目描述原理分析(1)大致思路下面讲解一下,前序遍历+中序遍历如何确定一个唯一的二叉树。关于二叉树的基本知识,请看二叉树的基本操作及联系。对此就不再过多重复。对于前序遍历顺序:根、左子树、右子树;对于中序的遍历顺序:左子树、根、右子树。所以通过前序遍历,我们获取前序第一个结点就是这个树的根,再在中序遍历中找到该结点的位置。在中序中,根的左边全部的是属于根左子

2021-09-12 20:32:28 808 10

原创 C++stack与queue模拟实现

C++stack与queue模拟实现前言stack栈适配器stack的成员函数queue队列queue类总结前言xxxx无论是当初在学校最先学习C语言版的数据结构,还是现在学习STL,发现大家(包括我)都喜欢将stack(栈)和queue(队列)放在一起。可能是FILO和FIFO两种数据存储方式过于相近,更能深入人心,因此两者经常会被放在一起。但是STL我把他们放在一起更是有原因。因为这两种容器在模拟实现的时候,都会使用到“适配器”。这个在后面我再具体说明。stack栈xxxx栈的基本知识相信大

2021-09-11 19:53:28 1339 7

原创 C++基础语法(四)模板

模板引例何为模板1、函数模板2、类模板引例xxxx我们想要了解模板语法,我们要先举一个小“栗子”。那就是:请写出short、int、double三种类型的相加函数(Add)。short Add(short a, short b){ return a+b;}int Add(int a, int b){ return a+b;}double Add(double a, double b){ return a+b;}我们发现,对于不同的类型,我们就要写不同的函数,有几种类型就需要

2021-09-10 20:48:19 402 10

原创 LeetCode二叉树的层序遍历

二叉树的层序遍历题目描述题目分析二叉树的层序遍历题目描述题目分析xxxx这道题,题目是“二叉树的层序遍历”,首先我们提取一下题目和题目内容的关键词。“二叉树”、“层序遍历”、“每一层值分别”(可能不同的人看的着重点不完全相同,我注意到的是以上三个)。二叉树的层序遍历还是比较好搞的,根据数据结构的基础知识,只要我们借助一个队列,利用队列的“先进先出”的特性,就能够很好的进行层序遍历。为了避免部分读者暂时不会代码实现,影响后面的问题分析和代码阅读。所以我先讲解一下如何借助队列实现二叉树的层序遍历xxx

2021-09-07 09:18:44 481 7

原创 LeetCode只出现一次的数字i/ii/iii

LeetCode只出现一次的数字i/ii/iii只出现一次的数字i题目描述题目分析代码实现:只出现一次的数字ii题目描述题目分析代码实现只出现一次的数字iii题目描述题目分析代码实现总结只出现一次的数字i题目描述题目分析xxxx这道题第一次看的时候是完全没有思路的。想出来的方法效率太低。后来在网上看到解法是使用异或,但是一直不理解原理是什么。最近学校在学“计算机组成原理”,详细学异或后。突然对这个题有了透彻的理解。题目分析如下:首先来了解一下异或这个操作符异或(^):相同为0,相异为1操作数

2021-09-05 22:02:38 1231 10

原创 LeetCode最小栈问题的最优解法+代码实现

xxxx最近做了一道LeetCode中的一道题。最小栈,这道题其实是一个简单级别的题目,但是如果深究这道题,我觉得还是可以到达一个很深的层次。因为这道题如果想解决不算难,但是如果追求时间、空间上的极致,确实需要一定的思考与算法基础。题目描述xxxx简单来说,设计一个栈,除了基本的push、pop、top操作,还需要设计一个直接可以获取栈中元素最小值的接口。思路一(错误的)xxxx我估计大多数人都会像我一样,牺牲栈中第一个位置,或者创建一个成员变量,用来存储最小值。当push数据的时候就与这个最小值

2021-09-04 09:11:51 814 5

原创 Linux下改变printf输出颜色和格式

Linux下改变printf输出颜色和格式输入格式显示方式颜色aaddC语言在Linux下的打印都是单一颜色。但是我们有时候就需要打印彩色的来使我们代码的执行内容更加丰富,更加好看。下面我将介绍如何在Linux操作系统下将C语言的printf打印输出的内容改变颜色。正常情况下的Linux的printf打印输出内容输入格式printf("\033[显示方式;字背景颜色;字体颜色m字符串\033[0m" );显示方式1:粗体/高亮22:非粗体4:单条下划线24:无下划线5:闪烁25:无

2021-09-02 20:37:17 3068

原创 C++list类模拟实现

C++list类模拟实现list类的基本结构结点类成员变量成员函数迭代器类成员函数1、解引用运算符重载2、箭头运算符重载3、迭代器前置++4、迭代器后置++5、迭代器的比较链表类成员变量成员函数1、构造函数2、拷贝构造3、赋值重载4、析构函数5、clear6、begin()、end()7、insert8、erase其他小型接口list类的基本结构xxxxSTL中list是一个双向带头循环链表。除了头结点不存储有效信息外,其余node结点存储有效信息。同时,为了防止代码冗余,对于存储信息类型不同的问题,

2021-09-01 15:07:16 527 2

原创 迭代器失效(附案例详解)

迭代器失效问题迭代器指向内容意义改变总结“野指针”类型的迭代器失效总结两种迭代器失效合在一起的例子解决方案本文将使用具体案例来详细解读迭代器失效的各种原因迭代器指向内容意义改变下面我们看一段代码int main(){ vector<int> v; v.push_back(1); v.push_back(2); v.push_back(3); v.push_back(4); v.push_back(5); //查找3迭代器的位置 vector<int>::it

2021-08-29 20:17:42 940 6

原创 Linux项目自动化构建工具-make/Makefile

Linux项目自动化构建工具-make/Makefile什么是Makefile什么是make为何需要使用这种项目自动化构建工具如何书写Makefile文件伪目标什么是Makefilemakefile其实就是一个文档,里面定义了一系列的规则指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,它记录了原始码如何编译的详细信息! makefile一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。Makefile带来的最大好处就是“自动化编译”,Makefile文

2021-08-11 19:16:13 91

原创 Linux权限详解

权限的作用更改文件权限——chmod命令使用:chmod [对象]+/- [权限][文件名]对象:u-拥有者…\wx.g-所属组…\wx.o-other…\wx.不指明对象则默认给三个对象同时操作,或者a-all(操作对象是所有)还可以一次命令对多个对象的权限进行修改,需要逗号分隔即使文件没有读写权限,但是root作为超级用户,即使没有权限也可以随意操作。权限修改的八进制方案使用3个比特位来某一个对象的权限内容,具体如下:rwx1117rw-1106

2021-07-30 20:29:08 528 2

原创 Linux基本指令详解

Linux的常见基本指令1.ls选项(1)-a选项(2)-l选项(3)-d选项(4)-R选项(5)-t选项(6)-s选项(7)-12.pwd3.cd (change direction)(1)直接加当前目录下文件名打开该指定文件(2)直接加文件绝对路径打开指定文件(3)直接加文件相对路径打开指定文件(4)直接加..返回上级目录(5)加~进入主工作目录(6)加 - 回退到上次所在目录4.touchtouch的选项mkdir-p选项rmdirrm(1)-i 删除前逐一确认是否删除(2)-r 以递归方式全部删除该

2021-07-29 17:15:00 737 2

原创 C++string类的模拟实现

string类的模拟实现一、string类的成员变量二、四大默认成员函数的实现(1)构造函数(2)拷贝构造函数(3)析构函数(4)赋值运算符重载三、string类中辅助功能实现(1)reserve(2)resize(3)size(4)clear(5)empty四、string的增删查改(1)push_back(2)append(3)operator+=(4)insert(5)erase(6)pop_back五、string的遍历(1)重载operator[ ] 的遍历方式(2)使用迭代器的遍历方式4(3)使

2021-07-22 18:23:44 922 8

原创 默认成员函数详解

C++默认成员函数详解一、构造函数1.作用2.函数样式3.使用特点4.注意事项二、析构函数1.作用2.函数样式3.使用特点4.注意事项三、拷贝构造函数1.作用2.函数样式3.使用特点4.注意事项四、复制运算符重载1.作用2.函数样式3.使用特点4.注意事项总结####c++作为面向对象的编程语言,与c语言相比最大的一个特点就是类的使用,使数据与方法打包(变量与函数打包)在类中。而类中很重要的就是默认成员函数,默认成员函数是帮助我们更好处理对象与内存的一种方式,所以我们有必要充分的理解认识它们,这样才能使我

2021-07-21 17:46:52 589 7

原创 二叉树常见操作及练习题

二叉树常见操作及OJ练习二叉树常见操作首先先将树的结构体介绍一下typedef struct BTNode //树的结点的结构体{ BTDataType x; //存该结点的值 //BTDdataType是指存储的数据类型 struct BTNode* leftchild; //储存左孩子的地址 struct BTNode* rightchild; //储存右孩子的地址}BTNode;深度优先遍历(前、中、后序)(1)前序遍历:对于每一个结点,先访问该结点本身,再去访问它的

2021-05-28 21:48:51 652 13

原创 C++基础 语法(二)函数重载与缺省参数

C++基础语法(二)函数重载介绍函数重载概念函数重载常见的具体举例为什么C++可以函数重载而C语言不行(函数重载的底层解释)C语言:C++语言:函数名修饰缺省函数缺省函数的概念函数重载介绍函数重载概念函数重载:是函数的一种特殊情况,C++允许在同一作用域中声明多个功能相似的同名函数。但是要求这些同名函数的形参列表(参数个数、类型或参数顺序)必须互相不同。jwoof注:重载函数只与形参列表有关,而与函数返回类型无关!函数重载常见的具体举例由于这函数重载这部分举例能更好说明函数重载的用法与作用,所

2021-05-21 18:42:39 771 10

原创 C++基础语法(一)C++命名空间详解

码字不易,养成习惯,先赞后看C++基础语法(一)命名空间命名空间介绍如何定义命名空间?如何使用命名空间中的变量标准库及如何使用标准库中的内容注意事项及补充命名空间命名空间介绍命名空间是C++为了解决C语言中命名冲突的缺陷而设计出来的一种语法。大致就是将变量名定义在一定的空间中,在使用时指定变量所在的域,帮助编译器明确地识别变量。借助这种特性,就可以在不同地命名空间中定义名字相同但是作用不同的变量。其次,C++还将库函数分装在自己的标准库中,所以我们也可以使用库函数的名字来定义适合的变量。我们所需要做

2021-05-18 15:59:18 654 16

原创 堆(Heap)的基本知识和堆排序

堆二叉树二叉树的概念满二叉树完全二叉树堆堆的分类如何建堆(将数据变成堆的存储方式)堆排序算法堆是利用完全二叉树的结构来维护一组数据,然后进行相关操作,一般的操作进行一次的时间复杂度在O(1)~O(logn)之间。我们在了解学习堆这个数据结构之前,必须先学习一些二叉树的概念和性质。二叉树二叉树的概念一棵二叉树是结点的一个有限集合,该集合或者为空,或者是由一个根节点加上两棵别称为左子树和右子树的二叉树组成。简单来说,二叉树就是每个节点的度(树的度)小于等于2的数满二叉树一个二叉树,如果每一个层的

2021-04-23 20:37:53 1577 5

原创 单链表带环问题归纳总结

单链表的带环问题判断单链表中是否存在环1.问题分析2.代码实现若带环,求环的长度1.问题分析2.代码实现若带环,求环的连接点问题分析2.代码实现判断单链表中是否存在环1.问题分析(1)不带环的链表的最后一个结点的next指针是指向NULL,而带环链表没有类似的最后节点,所以无法判断带环链表的结束,也就无法通过遍历一遍链表来求取链表的长度。但是如果有一个指针在遍历时它最后会一直在环中重复打圈。因此我们可以使用快慢指针来判断(fast / slow)。如果链表带环那么当fast走到空指针时slow还未走到

2021-04-20 20:36:36 427 6

原创 LeetCode-旋转数组

旋转数组问题题目描述给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。方法一:分析:一个数组【1,2,3,4,5,6,7】如果旋转3次,得到的数组就是【5,6,7,1,2,3,4】。方法一是最好想的方法。我们一次一次旋转数组,每次都把数组中最后一个元素放到第一个位置,把剩余的元素都向后挪动一个位置。重复k次操作,就得到了结果。代码实现void change(int* arr, int size) //每次旋转一次{ int tmp = arr[size - 1

2021-04-09 19:22:06 930 5

转载 KMP算法详解

从头到尾彻底理解KMP          此文转自神的博客  http://blog.csdn.net/v_july_v/article/details/7041827# 1. 引言     本KMP原文最初写于2年多前的2011年12月,因当时初次接触KMP,思路混乱导致写也写得混乱。所以...

2021-03-31 16:48:51 276

原创 文件操作详解

文件操作详解什么是文件二级目录三级目录文件的打开与关闭文件信息区文件的打开文件的关闭文件的读写fputcfgetcfputsfgetsfprintffscanfsprintfssacnffwritefread文件结束的判定什么是文件我们所说的文件一般包括三类:1.程序文件:包括源文件(.c)目标文件(windows-.obj)可执行程序(windows-.exe)2.数据文件:程序运行时读写的数据每个文件都有自己的文件名,文件名是文件的唯一标识。组成:文件路径+文件名主干+文件后缀 eg:

2021-03-27 20:58:29 1097 1

原创 动态内存开辟详解

动态内存管理malloc函数代码示例calloc代码实现reallocmalloc函数函数原型 :void* malloc ( size_t size )1.如果开辟成功,则返回一个指向开辟好空间的指针。2.如果开辟失败,则返回一个NULL指针,因此malloc的返回值一定要做检查。3.返回值的类型是 void ,所以malloc函数并不知道开辟空间的类型,具体在使用的时候使用者自己来决定。4.如果参数 size 为0,malloc的行为是标准是未定义的,取决于编译器。注:1.malloc

2021-03-24 19:44:14 1453 6

原创 结构体总结

结构体1.概念:结构体可以称之为一些值的集合,这些值我们称之为“成员变量”。每个成员变量可以有不同的类型,我们将这些成员变量“打包”形成一个结构体,用于描述一个具有多个特性的复杂对象。2.结构体的声明:struct tag //结构体名称{ member_list; //成员变量列表}variable_list; //变量名列表有时候,我们甚至可以将tag省略,只不过如此操作我们只能在声明这个结构体的时候进行一次变量创建,无法再在之后的情况下创建变量,并且无法

2021-03-13 20:26:15 642 5

原创 逆置字符串问题

逆置字符串问题内容完全改变问题以空格为分割单词顺序不变问题内容完全改变问题这类问题算是比较简单的了,而我们的思路是从字符串两头开始,交换内容。在这里我介绍两种方法。1.循环的方式2.递归的方式(1)循环的方式很好理解,就是暴力地进行内容的交换,而交换的规则就是从begin和end两头进行内容交换hehehee.g. 字符串 " l am a student." 我们可以定义一个指向字符串起始位置的指针char * begin和指向字符串最后一个字符的指针char * end,不断让两个交换

2021-03-09 15:47:38 204

原创 字符串函数与内存操作函数总结与模拟实现

字符串函数1.strlen 函数(1)作用:用于求字符串长度,在遍历字符串时遇到 ‘\0’ 停止(2)函数原型:size_t strlen ( const char* str)注意事项:strlen的返回值是无符号整型,所以不能轻易比较大小模拟实现:计数器、递归、指针相减三种方法 计数器方法int my_strlen(char* str){ assert(str); //断言,避免str是空指

2021-03-04 19:55:58 148 2

STL中list模拟实现源码

list模拟实现源码,适合初学者学习

2021-08-06

STL中vector类模拟实现

vector的模拟实现,非常适合初学者学习

2021-08-06

STL中string类模拟实现源码

内容简介,涵盖内容广泛。源码实现参照STL源码。

2021-08-06

空空如也

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

TA关注的人

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