为你关月亮
码龄6年
关注
提问 私信
  • 博客:145,163
    145,163
    总访问量
  • 51
    原创
  • 1,655,692
    排名
  • 25
    粉丝
  • 0
    铁粉
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:北京市
  • 加入CSDN时间: 2018-11-02
博客简介:

YOLO的博客

查看详细资料
个人成就
  • 获得84次点赞
  • 内容获得16次评论
  • 获得188次收藏
  • 代码片获得408次分享
创作历程
  • 17篇
    2021年
  • 29篇
    2020年
  • 5篇
    2019年
成就勋章
TA的专栏
  • Linux
    22篇
  • 数据结构
    8篇
  • C++
    13篇
  • MYSQL
    3篇
  • C语言
    5篇
兴趣领域 设置
  • 数据结构与算法
    推荐算法
创作活动更多

如何做好一份技术文档?

无论你是技术大神还是初涉此领域的新手,都欢迎分享你的宝贵经验、独到见解与创新方法,为技术传播之路点亮明灯!

180人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

AVLTree(二叉平衡树)——数据结构

平衡二叉树如果二叉搜索树的插入序列是有序的或者是接近有序,那么二叉搜索树就会退化为单支数(类似单链表),查找元素相当于在顺序表中搜索元素,效率低下。AVLtree(Adelson Velskii Landis tree)是一个加上额外平衡条件的二叉搜索树,左右子树高度之差(简称平衡因子)的绝对值不超过1,如果它有n个节点,高度可保持在O(logn),搜索时间复杂度为O(logn)。AVL树的节点template<class K, class V>struct AVLTreeNode{
原创
发布博客 2021.03.23 ·
243 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

二叉搜索树(binary search tree)——数据结构

二叉搜索树二叉搜索树(Binary Search Tree),任何节点的键值一定大于其左子树中每一个节点的键值,并且小于其右子树中的每一个节点的键值。二叉搜索树或者是一颗空树,或者是具有以下性质的二叉树:若它的左子树不为空,则左子树上的所有节点的键值小于根节点的键值若它的左子树不为空,则右子树上的所有节点的键值大于根节点的键值它的左右子树也分别为二叉搜索树插入若树为空,则直接插入若树不为空,从根节点开始,遇到键值较大的则向左,遇到键值较小的则向右,直到尾端,插入新的节点//非递归
原创
发布博客 2021.03.21 ·
464 阅读 ·
1 点赞 ·
0 评论 ·
2 收藏

string类——C++

string类string在底层实际是:basic_string模板类的别名,typedef basic_string<char, char_traits, allocator> string;在使用string类时,必须包含#include头文件以及using namespace std;string常见接口string的其中一个缺点是,插入数据,空间不够需要增容,增容是有性能消耗。常见构造string()构造空的string类对象,即空字符串string(cons
原创
发布博客 2021.03.20 ·
242 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

智能指针(auto_ptr、unique_ptr、shared_ptr、weak_ptr)——C++

智能指针C++中堆内存的申请和释放都由程序员自己管理,程序员自己管理堆内存可以提高程序的效率,但是容易造成问题:忘记delete内存:会导致内存泄漏问题,而且除非内存耗尽否则很难检测到这种错误使用已经释放的对象:在释放掉内存后将指针置为空,并且下一次使用前判空同一块内存释放两次:如果有两个指针指向相同的动态分配空间,就会造成这种错误发生异常时的内存泄漏:若在new和delete之间发生异常,则会导致内存泄漏C++引入了智能指针来解决这种问题。RAIIRAII(Resource Acqui
原创
发布博客 2021.03.20 ·
250 阅读 ·
2 点赞 ·
0 评论 ·
3 收藏

模板——C++

模板泛型编程泛型编程:编写与类型无关的通用代码,是代码复用的一种手段。模板(函数模板和类模板)是泛型编程的基础。函数模板函数模板代表了一个函数家族,该函数模板与类型无关,在使用时被参数化,根据实参类型产生函数的特定类型版本。函数模板格式template<typename T>//关键字<模板参数(类型)>void Swap(T& left,T& right){ }//返回值类型 函数名(参数列表)typename是用来定义模板参数关键
原创
发布博客 2021.03.19 ·
158 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

数据库索引为什么是B+树

索引索引(Index)是帮助MySQL高效获取数据的数据结构。帮助我们快速匹配查找到需要的数据行,相当于书本里的目录。索引数据结构哈希存储引擎会为每一行计算一个hash码,并且不同键值行的hash码通常是不同的,hash索引中存储的就是hash码,hash码彼此之间是没有规律的,且Hash操作不能保证顺序性,值接近的两个数据,hash码可能相差很远,被分到不同的桶中。所以Hash索引,单条记录的查询的效率很高,时间复杂度为O(1),但是不适合范围查询。二分查找二分查找是给定一个有序数组,在查找过
原创
发布博客 2021.03.03 ·
225 阅读 ·
1 点赞 ·
1 评论 ·
1 收藏

HTTP、HTTPS协议——Linux网络编程

HTTP协议HTTP 全称 HyperText Transfer Protocol超文本传输协议,超文本即超越普通文本的文本,即音视频、图片、文件的混合体。URLURL(Uniform Resourse Locator)统一资源定位符协议方案名:通信双方指定的协议名主机名和密码:对用户进行认证域名:服务器的主机名或IP地址端口:服务段侦听的端口,省略时使用默认端口HTPP使用80端口,HTTPS使用443端口资源路径:资源在主机上的存放路径,"/"是服务器定义的逻辑上的根目录查询字符串
原创
发布博客 2021.02.23 ·
385 阅读 ·
4 点赞 ·
0 评论 ·
0 收藏

UDP、TCP协议——Linux网络编程

UDP协议UDP的全称是用户数据报协议(User Datagram Protocol),UDP为应用程序提供了一种无需建立连接就可以发送数据包的方法。UDP协议头部格式源端口:发送数据包的应用程序所使用的端口目的端口:接收数据包的应用程序使用的端口数据长度:表示UDP数据包的长度,包含UDP头部长度和UDP数据长度;UDP报文头长度是8个字节,所以这个值最小为8,最大长度为65535字节校验和:检验UDP数据在传输过程中是否有损坏,如果有损坏,则不会提交给应用层,而是直接丢弃。如何通过检
原创
发布博客 2021.02.23 ·
323 阅读 ·
1 点赞 ·
0 评论 ·
1 收藏

网络基础2(ARP、NAT、DNS协议)——Linux网络编程

ARP协议ARP协议只在子网内部有效以太网首部以太网目的地址:ARP请求的目的MAC地址,填充为全1,表示广播地址以太网源地址:ARP请求主句的MAC地址帧类型:以太网数据帧协议,表示上层使用什么协议;IP协议——0x0800,ARP请求或应答——0x080628字节的请求或应答硬件类型:定义运行ARP的网络类型协议类型:表示使用什么协议,IP地址转换MAC地址的硬件地址长度:表示MAC地址的长度协议地址长度:表示IP地址的长度OP:表示是ARP请求还是ARP应答,1表示请求,
原创
发布博客 2021.02.23 ·
305 阅读 ·
2 点赞 ·
0 评论 ·
1 收藏

IP协议——Linux网络编程

IP协议IP头部格式版本号:4位,IP协议的版本首部长度:4位,4个比特位计算出来的值乘4等于首部的长度复位类型:8位,前三个比特位表表示优先权,但是已经弃用了;后面的4个比特位分别表示:最小延迟+最大吞吐量+最高可用性+最小费用,这四个比特位是一个互斥的关系,一般都是0,表示默认属性;最后一个比特位是保留位,必须置为0总长度:16位,表示IP数据包中首部和数据的总和长度,总长度大小为65536,传输长度大于这个字节就需要分片标识:16位,维持一个计数器,每产生一个数据包,计数器就加1,当进
原创
发布博客 2021.02.23 ·
154 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

网络基础1(协议、协议模型、IP、Port、网络字节序)——Linux网络编程

网络基础按照网络覆盖范围划分为:局域网、城域网、广域网协议协议是指通信双方约定使用同一种解析信息的手段来进行有效的沟通网络协议:计算机网络中,通信双方对进行数据交换和数据传输而建立的规则、标准或者做出的约定,指定一个通信协议标准计算机当中有很多不同的网络协议,将一系列的协议称之为协议簇参考模型:定义各个协议之间的关系,并且划分了每个协议需要完成的任务协议分层模型OSI参考模型(自下而上):物理层、数据链路层、网络层、传输层、会话层、表示层、应用层TCP/IP五层模型:物理层、数据
原创
发布博客 2021.02.19 ·
977 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

设计模式(单例模式)——Linux系统编程

设计模式设计模式的优点代码复用程度高程序比较可靠,并且容易理解代码框架比较稳定设计模式的分类创建型模式——单例模式结构型模式——适配器模式行为型模式——观察者模式单例模式特点:全局提供唯一一个类的实例,具有全局变量的特点使用场景:内存池+数据池基础的要点全局只有一个实例——static+禁止构造+禁止拷贝构造+禁止赋值拷贝线程安全调用者是通过类的函数来获取实例具体的实现饿汉模式——程序启动的时候进行初始化,资源在程序启动的时候就全部加
原创
发布博客 2021.02.19 ·
895 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

线程池——Linux系统编程

线程池线程池=线程安全队列+一大堆的线程(消费线程)线程池中的线程,都是同一种角色的线程,每一个线程都执行同样的入口函数线程安全队列中的元素,保存待处理的数据和处理数据的方式如何让相同入口函数的线程,处理不同的请求switch case:处理大量不同的需求的时候,比较麻烦向线程池抛入数据的时候,将处理该数据的函数一起抛入(函数地址),线程池当中的线程只需要调入传入的处理函数处理传入的数据即可#include <iostream>
原创
发布博客 2021.02.19 ·
1018 阅读 ·
2 点赞 ·
0 评论 ·
13 收藏

线程安全(互斥锁、条件变量、信号量、读写锁)——Linux系统编程

线程安全多个线程同时运行,访问临界资源,不会导致程序结果产生二义性,这样的情况是线程安全的。临界资源:多线程执行流共享的资源叫临界资源。临界区:每个线程内部访问临界资源的代码访问:在临界区当中对临界资源进行非原子操作原子操作:不会为任何调度机制打断的操作,该操作只有两种状态,要么完成,要么未完成。线程不安全的原理举个栗子:我们规定一个场景假设现在在同一个程序当中有两个线程,线程A和线程B,并且有一个int类型全局变量,值为10;线程A和线程B在各自的入口函数当中对这样一个变量进行++操作。
原创
发布博客 2021.02.18 ·
1116 阅读 ·
1 点赞 ·
0 评论 ·
1 收藏

生产者消费者模型——Linux系统编程

生产者与消费者模型123规则:1个线程安全的队列+2种角色的线程+3种关系(生产者与生产者互斥+消费者与消费者互斥+生产者与消费者同步加互斥)优点可以解耦合:生产者和消费者都是通过队列进行交互支持忙闲不均:(队列起到了缓冲的作用)支持并发:消费者只关心队列当中是否有数据可以进行消费,生产者只关心队列当中是否有空闲的结点可以进行生产实现队列,借助STL当中的queue线程安全的队列:std::queue并不是一个线程安全的,互斥,使用互斥锁;同步,使用条件变量两种角色的线程:生产者线程
原创
发布博客 2021.02.16 ·
621 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

线程控制(创建、终止、等待、分离)——Linux系统编程

线程线程是什么?从进程角度来看:线程是一个进程内部的控制序列;线程在进程内部运行,本质是在进程的虚拟地址空间内运行;一切进程至少都有一个执行线程;从资源分配角度来看:在Linux系统中,线程的PCB比传统进程更加轻量化;透过虚拟地址空间,可以看到进程的大部分资源被合理分配给每个执行流,就形成了线程执行流;从内核角度来看:在Linux系统中,线程被称为轻量级进程,在内核当中也是创建了task_struct结构体来描述线程,现成的task_struct结构体当中的内存指针指向
原创
发布博客 2021.02.13 ·
856 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

实现一个minishell小程序

minishell的实现实现逻辑从标准输入当中读取数据(要执行的可执行程序)拆分可执行程序名称和命令行参数,我们认为从标准输入当中读取到的内容第一个空格之前的数据是可执行程序的名称,第一个空格之后的内容都认为是命令行参数创建子进程,子进程程序替换可执行程序在子进程程序替换时间内,让父进程进行等待进程等待isspace()函数,判断一个字符是否有空白字符(空格、换页符、换行符、回车、水平指标符、垂直制表符)返回值,返回0为没有读到了空白字符,返回非0读到了空白字符代码实现#incl
原创
发布博客 2021.02.09 ·
995 阅读 ·
1 点赞 ·
0 评论 ·
1 收藏

多态的学习——C++

多态多态是不同继承关系的类对象,去调用同一函数,产生了不同行为。多态的定义和实现构成条件必须通过基类的指针或者引用调用虚函数被调用的函数必须是虚函数,且派生类必须对基类的虚函数进行重写虚函数虚函数——被virtual修饰的类成员函数虚函数的重写(覆盖)——派生类中有一个跟基类完全相同的虚函数(即派生类虚函数与基类虚函数的返回值类型、函数名字、参数列表完全相同),称子类的虚函数重写了基类的虚函数虚函数重写的两个例外:协变——派生类重写基类函数时,与基类虚函数返回值类型不同。即基类虚
原创
发布博客 2020.11.05 ·
920 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

继承的学习——C++

继承继承(inheritance)机制是面向对象程序设计代码复用的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,我们成为派生类。继承定义定义格式继承方式和访问限定符继承方式public继承、protected继承、private继承访问限定符public访问、protected访问、private访问继承基类成员访问的变化[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xU1mncYB-16045540488
原创
发布博客 2020.11.05 ·
896 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

STL应用之stack、queue、priority_queue容器适配器

stackstack是一种container adapter(容器适配器),以某种既有容器作为底层结构,将其接口改变,使之符合先进后出(Frist In Last Out,FILO)的特点,默认情况下使用deque(双端队列)作为底层容器。stack的使用stack()构造空的栈bool empty()如当前堆栈为空,返回 true 否则返回falsesize_t size()返回当前堆栈中的元素数目value_type& top()返回对栈顶元素的引用
原创
发布博客 2020.11.01 ·
884 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏
加载更多