自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【Linux网络编程七】网络序列化和反序列化(网络版本计算器)

【Linux网络编程七】网络序列化和反序列化(网络版本计算器):本篇重点:自定义协议和序列化反序列化。以网络版本计算器为例子来理解协议定制的诸多细节问题。理解序列化和反序列化间的套路。

2024-03-15 17:43:09 1022

原创 【Linux网络编程六】服务器守护进程化Daemon

【Linux网络编程六】服务器守护进程化Daemon

2024-02-16 16:48:36 575

原创 【Linux网络编程五】Tcp套接字编程(四个版本服务器编写)

【Linux网络编程四】Tcp套接字编程(四个版本服务器编写):本篇重点:四个服务器版本:单进程版本,多进程版本,多线程版本,线程池版本。以及更多细节问题。带你学会如何使用Tcp套接字编程。

2024-02-16 16:04:29 1312 1

原创 【Linux网络编程四】Udp套接字编程网络应用场景

【Linux网络编程三】Udp套接字编程网络应用场景:场景一远程控制命令;场景二:Linux与Windows通信;场景三:简单聊天

2024-02-04 19:06:46 1262 1

原创 【Linux网络编程三】Udp套接字编程(简易版服务器)

【Linux网络编程三】Udp套接字编程(简易版服务器)本篇重点:UDP网络编程步骤:①创建套接字②绑定网络信息③接发消息;服务器端和客户端绑定细节,以及代码实现。

2024-02-02 18:34:40 981 1

原创 【Linux网络编程二】网络基础2(网络框架)

【Linux网络编程二】网络基础2(网络框架)本篇重点:①跨网络如何通信②网络通信的本质③端口号④TCP/UDP协议⑤通用网络接口⑥网络字节序

2024-02-01 18:43:21 950 1

原创 【Linux网络编程一】网络基础1(网络框架)

【Linux网络编程一】网络基础(网络框架)重点:①什么是协议②协议分层③操作系统与网络协议栈关系④局域网下如何通信⑤以太网下如何通信⑥交换机作用

2024-01-31 22:18:14 949 1

原创 【Linux系统编程三十】线程池实现

【Linux系统编程三十】线程池实现,本篇重点线程池的原理以及代码实现,以及在类内创建线程的细节。

2024-01-23 12:46:17 737

原创 【Linux系统编程二十九】基于信号量的环形队列生产消费模型

【Linux系统编程二十九】基于信号量的环形队列生产消费模型,本篇重点,理解使用信号量,在环形队列生产消费模型中,信号量维持的是生产和消费者之间的同步与互斥关系,而加锁维护的是生产者和生产者,消费者和消费者之间的互斥关系。理解这层概念就能真正的理解基于信号量的环形队列生产模型!

2024-01-21 21:53:41 887

原创 【Linux系统编程二十八】基于条件变量的阻塞队列(生产消费模型)

【Linux系统编程二十八】基于条件变量的阻塞队列(生产消费模型):重点:条件变量(原理,接口),321原则,真正理解生产消费模型,伪唤醒。

2024-01-21 15:16:55 849

原创 【Linux系统编程二十七】:线程的互斥与同步(互斥锁的使用与应用)

【Linux系统编程二十七】:本文主要总结什么是互斥,为什么要互斥,以及互斥如何实现,主要原因是因为多线程并发访问共享资源,会造成数据不一致问题。介绍互斥锁的概念和相关接口使用,锁的应用场景,探讨同步场景下又该如何解决以及死锁问题。

2024-01-09 18:18:41 859

原创 【Linux系统编程二十六】:线程控制与线程特性(Linux中线程库/线程创建/线程退出/线程等待)

【Linux系统编程二十六】:本篇总结Linux下线程库中如何控制线程,理解线程控制块都是在线程库中被统一管理起来,线程tid的本质就是TCB在共享区里的起始地址。熟悉掌握线程的创建,退出,等待等操作,了解线程的一些特性:独立栈,局部存储,可分离线程等。

2024-01-03 19:38:59 908 1

原创 【Linux系统编程二十五】:线程概念(Linux中的轻量级进程)

【Linux系统编程二十五】:本篇知识点诸多,建议反复理解。线程是进程的一个执行分支,执行粒度比进程要细,如何理解?进程是系统资源分配的基本实体,而线程是系统的调度单位。如何理解?线程要比进程更轻量化,又该如何理解?页表是如何完成从虚拟地址到物理地址的映射的?什么是轻量级进程?

2023-12-29 18:52:24 1020

原创 【Linux系统编程二十四】:(信号3)--信号的捕捉处理与周边细节

【Linux系统编程二十四】:本篇知识点:sigaction如何使用,信号何时被捕捉,用户态和内核态,操作系统的本质,信号捕捉周边细节:可重入函数,volatile以及SIG_CHILD信号

2023-12-26 20:49:33 872

原创 【Linux系统编程二十三】:(信号2)--信号的保存

【Linux系统编程二十三】:本文总结信号的保存诸多细节,信号的保存主要依赖三张表,block表,pending表,handler表,这三张表凝聚了信号的核心,介绍了对应的获取或设置系统调用接口sigprocmask() /sigpending() /signal。还介绍了信号的其他相关概念,信号递达,信号未决等等。

2023-12-24 16:03:46 762

原创 【Linux系统编程二十二】:(信号1)--信号的产生与发送

【Linux系统编程二十二】:本篇总结信号产生的五大方式,前台进程,硬件中断,以及信号异步及信号的发送等知识点。

2023-12-22 14:50:30 867

原创 【Linux系统编程二十一】:(进程通信3)--消息队列/信号量(system v标准的内核数据结构的设计模式)

【Linux系统编程二十】:本篇将总结进程间通信之消息队列和信号量,并介绍system v标准下的内核数据结构是如何设计的,以及互斥,临界的等概念的引出,信号量的本质就是一把计数器,PV操作就是对计数器的加加减减,以上部分为后面的多线程作铺垫,

2023-12-12 11:44:34 1067

原创 【Linux系统编程二十】:(进程通信2)--命名管道/共享内存

【Linux系统编程二十】:(进程通信)--本篇总结进程之间的通信:命名管道和共享内存,详细的介绍使用它们之间的系统接口,以及各自的通信特性。

2023-11-23 14:45:57 119

原创 【Linux系统编程十九】:(进程通信1)--匿名管道/模拟实现进程池

【Linux系统编程十九】:(进程通信)--匿名管道/模拟实现进程池,进程通信的本质就是让不同的进程看到同一份公共的资源,而父子进程可以做到对同一个文件共同访问,这个文件是属于内存级文件。本篇总结管道具有5大特性和4种情况,以及管道的应用场景:实现一个简易的进程池。

2023-11-18 14:37:53 137

原创 【Linux系统编程十八】:(基础IO5)--动静态库共享/动静态加载问题(涉及地址空间)

【Linux系统编程十七】:(基础IO4)--动静态库共享/动静态加载问题(涉及地址空间)本文探讨一个可执行程序如何加载,如何与虚拟地址关联起来的?动态库如何实现多进程共享的?动态库与地址无关码?逻辑地址,虚拟地址,线性地址,物理地址?动态库加载细节等问题

2023-11-16 18:48:41 158

原创 【Linux系统编程十七】:(基础IO4)--文件系统(inode与软硬链接)

【Linux系统编程十六】:(基础IO3)--文件系统(inode与软硬链接)总结没有打开的文件在磁盘中是如何存储的,按照什么方式进行存储的呢?理解文件系统的inode与软硬链接,以及应用。

2023-11-13 14:55:08 90

原创 【Linux系统编程十六】:(基础IO3)--用户级缓冲区

【Linux系统编程十六】:(基础IO3)--用户级缓冲区,你真正理解缓冲区吗?我们所指的缓冲区是用户级的还是系统级的呢?缓冲的策略有哪些呢?缓冲区在哪里呢?缓冲区的意义又是什么呢?本篇带你理解缓冲区的慨念。

2023-11-08 19:04:17 333

原创 【Linux系统编程十五】:(基础IO2)--重定向实现原理 &&“Linux下一切皆文件“

【Linux系统编程十五】:本篇将带你理解重定向的实现原理:本质就是文件描述符数组的内容拷贝,提供输出重定向以及输入重定向案例。第二将探讨Linux下一切皆文件,为什么这么说,以及如何做到让Linux下一切皆文件。

2023-11-06 19:58:42 173

原创 【Linux系统编程十四】:(基础IO1)--文件描述符fd(进程与文件的联系)

【基础IO⑧】:当打开一个文件时,是谁打开文件?是进程!进程是如何打开的呢?进程可以打开许多文件,它是如何知道打开的文件在哪呢?进程和文件之间是根据什么关联到一起的呢?本文将为你总结进程与文件之间的联系:文件描述符

2023-11-05 17:39:29 194

原创 【Linux系统编程十三】:(进程控制3)--制作简易shell&&理解shell运行原理

【Linux系统编程十三】:本文将从shell的实现层面来阐述shell的运行原理,shell本质就是一个进程,其中用到的知识有进程创建,进程退出,进程等待,进程替换等知识,内建命令与普通命令的区别等。

2023-11-03 10:22:16 153

原创 【Linux系统编程十二】:(进程控制2)--进程替换/exec*()系列接口

【Linux系统编程十二】:进程替换/exec*()系列接口。本文总结进程程序替换的原理,以及替换过程中的一些细节,总结出4大特点:独立性,唯一性,不变性,不返回。并详细介绍与使用进程替换的系统调用接口exec*系列。

2023-11-02 18:46:50 132

原创 【Linux系统编程十一】:(进程控制1)--进程终止与进程等待

【进程控制①】:进程终止与进程等待。本文总结进程的退出状态是如何被知道的,是从退出码中获取,而父进程又是如何获取子进程的退出码呢?通过进程等待获取,进程等待的系统调用接口有哪些呢?代表什么意义呢?什么是阻塞等待和轮询等待呢?

2023-10-30 17:29:16 140

原创 【Linux系统编程十】:(进程概念4)--进程地址空间(虚拟内存与物理内存)

【进程概念④】:进程地址空间(虚拟内存与物理内存)。本文探讨进程的虚拟地址与物理地址之间的关系,得出平时我们认为的"内存"并不是真正的物理内存,而是虚拟内存,那么为什么要存在虚拟内存呢?总结进程地址空间以及页表的存在对进程管理的意义。

2023-10-25 17:31:01 144

原创 【Linux系统编程九】:(进程概念3) --进程环境变量/进程切换

深入篇【Linux】学习必备:本文总结有关进程的一些细节问题:进程环境变量与进程切换

2023-10-23 16:01:24 431

原创 深入篇【C++】总结智能指针的使用与应用意义&&(auto_ptr/unique_ptr/shared_ptr/weak_ptr)底层原理剖析+模拟实现

深入篇【C++】总结智能指针的使用与应用意义(auto_ptr/unique_ptr/shared_ptr/weak_ptr)底层原理剖析+模拟实现。涉及异常导致的内存泄露问题的,以及智能指针的出现以及实现原理,应用意义。

2023-10-13 20:41:10 318

原创 深入篇【C++】总结<lambda表达式>与<包装器和bind>的使用与意义

深入篇【C++】总结<lambda表达式>与<包装器和bind>的使用与意义。本篇将介绍lambda的基本语法以及使用,理解lambda的底层实现本质就是反函数。lambda的使用意义。以及包装器的使用bind的绑定等C++11特性

2023-10-10 19:26:48 177

原创 【强化算法专题一】双指针算法

【强化算法专题一】本专题主要强化双指针算法,从暴力解法不断优化成双指针算法,一步一步理解双指针算法的原理以及实现细节,帮助你更好的强化算法。

2023-10-03 14:59:05 173

原创 【数据结构】&&【C++】封装哈希表模拟实现unordered_map和unordered_set容器

【数据结构】&&【C++】封装哈希表模拟实现unordered_map和unordered_set容器。一步一步教你如何封装哈希表来模拟实现unordered_map和unordered_set.以及解决哈希表和迭代器如何实现泛型适配,set的key不能修改,map 的value可以修改等问题

2023-09-30 13:05:43 268

原创 【数据结构】&&【C++】哈希表的模拟实现(哈希桶)

【数据结构】&&【C++】哈希表的模拟实现(哈希桶),本篇文章介绍什么是哈希桶,以及如何实现哈希桶,从底层实现来加深读者对哈希的理解与认识。

2023-09-29 14:29:47 371

原创 深入篇【C++】剖析C++11中右值引用与左值引用的区别以及应用价值

深入篇【C++】剖析C++11中右值引用与左值引用的区别以及应用价值,本篇图文结合,探讨左值引用与右值引用的区别,从三个应用场景来解释右值引用的意义加深读者对右值引用的理解,看完本篇的人一定会感叹于C++的牛批,在众多语言中强而不倒不是没有原因的,与其他语言不同,C++非常讲究效率,而也正是不断的追求极致,右值引用应运而生!

2023-09-28 19:16:47 242

原创 【数据结构】&&【C++】封装红黑树模拟实现map和set容器

本篇文章讲解map和set是如何封装红黑树实现的以及实现过程的诸多问题,比如红黑树和迭代器都需要泛型适配,set的key不可以修改,map的key不能修改,但value可以修改等问题,

2023-09-21 18:15:23 332 1

原创 【数据结构】&&【C++】红黑树RBTree的模拟实现(平衡搜索二叉树)

【数据结构】&&【C++】红黑树RBTree的模拟实现(平衡搜索二叉树)本文带你理解红黑树是如何实现的,如何使用颜色控制和旋转达到平衡的,如果想手撕红黑树,看完本篇你也可以轻轻松松手撕出来!

2023-09-17 14:19:00 493

原创 【数据结构】&&【C++】平衡搜索二叉树的模拟实现(AVL树)

【数据结构】&&【C++】平衡搜索二叉树的模拟实现(AVL树)主要模拟实现AVL树的插入动作,讨论平衡因子的更新,与左单旋,右单旋,以及双旋如何处理等问题。

2023-09-11 18:31:28 257

原创 【C++练习】leetcode刷题训练(中等难度)

C++练习:leetcode刷题训练思维,内容包含TOP-K问题,单词计数,字符串相加,相乘,栈的弹出与压入序列,只出现1次的数字的进阶,利用操作符妙解。

2023-08-31 19:50:43 208

原创 深入篇【C++】set和map(multiset/multimap)特性总结与使用

深入篇【C++】set和map(multiset/multimap)特性总结与使用。set/map--->关联式容器?树形结构的关联式容器!带你了解C++的魅力!

2023-08-26 19:01:04 494 1

链表带环问题解决策略及想法

链表刷题必备

2023-03-10

空空如也

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

TA关注的人

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