自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux总目录

这里是Linux教学总目录,建议按照顺序观看。

2025-03-08 18:00:06 298

原创 C++教学总目录

C++教学总目录,对于每一篇按照顺序都有链接。

2024-04-18 18:04:41 347 1

原创 应用层自定义协议与序列化

应用层自定义协议与序列化反序列化。

2025-04-06 08:45:53 756

原创 Socket编程TCP

如果不关闭文件,那么fd的值就会一直增加,而fd属于有用的、有限的资源,如果不关闭就会导致fd泄漏问题。另外如果客户端很多的话那fd不是会一直增加吗,如果fd只有32、64那不就不够用了吗?确实如此,Linux是支持对文件描述符个数进行扩展的,默认云服务器的fd数量是比较多的。

2025-04-05 09:09:31 1063

原创 Socket编程UDP

首先给出EchoServer目录结构:服务器的类我们实现在UdpServer.hpp中,然后在UdpServerMain.cc中启动服务器。客户端相关代码我们就直接在UdpClientMain.cc中实现了,如果有兴趣后续你可以自己在UdpClient.hpp中封装,常用的部分我们放在Common.hpp中,然后将直接写的策略模式日志拿过来方便测试,最后使用make/makefile来自动化构建项目。1、创建套接字:使用socket创建套接字,第一个参数domain表示域或协议家族,AF_INET表示网

2025-04-02 14:30:38 852

原创 网络基础概念

传输层网络层都是对所有协议的统称,传输层有很多协议比如:TCP、UDP,网络层也有很多,那么这么多协议操作系统要不要管理呢?当然要管理,如何管理?——先描述,再组织。所以协议就是结构体。操作系统使用C语言写的,而网络属于操作系统,因此TCP/IP网络也是用C写的。而Windows和Linux操作系统的源代码是不一样的,但是它们网络部分的代码必须是一样的。那么今天windows上有一个协议struct protocol,里面三个整形变量a,b,c。主机A定义了一个数据data赋值10、20、30。

2025-03-31 20:14:55 902

原创 Linux线程同步与互斥

线程互斥与同步,以及线程安全问题。

2025-03-30 15:06:25 370

原创 Linux线程概念与控制

线程是进程内部的一个执行分支。线程的执行粒度比进程要细。

2025-03-27 14:16:09 837

原创 Linux进程信号

信号的发送本质就是给进程的PCB发送,因此进程PCB内部必定要有结构来保存信号。为什么要保存信号?因为进程收到信号之后可能不会立即处理这个信号。那么信号从发送给进程到开始被处理就会存在一个时间窗口,所以需要保存信号。也就是说task_struct里面会有保存信号的结构,实际上这个结构是个位图,如下图:通过位图来管理信号,上图的第一个位置为1,表示的就是进程收到了1号信号。1、比特位的内容是0还是1,表明进程是否收到了信号。2、比特位的位置(第几个),表示信号的编号。

2025-03-25 16:17:56 609

原创 Linux进程间通信

介绍进程间通信的方式:管道、共享内存、消息队列、信号量。

2025-03-23 12:04:32 798

原创 Linux基础IO(终)——动静态库和进程地址空间

介绍动静态库的制作和使用,如何解决动态库加载问题,进程地址空间。

2025-03-21 11:25:47 1018

原创 Linux基础IO(三)——文件系统和软硬链接

介绍磁盘、文件系统、软硬链接的概念。

2025-03-19 19:27:56 464

原创 Linux基础IO(二)——重定向和缓冲区

介绍重定向原理和用户级缓冲区。

2025-03-19 08:35:14 884

原创 Linux基础IO(一)——接口使用和文件描述符

介绍C语言文件接口和Linux下的系统调用接口,引入文件描述符的概念。

2025-03-17 13:50:52 812

原创 Linux进程控制

介绍Linux如何创建进程、终止进程、等待进程、进程程序替换。并基于上述知识实现简易的shell。

2025-03-16 19:42:36 690

原创 Linux进程概念

冯诺依曼体系结构,Linux进程的概念、进程状态、进程、进程地址空间介绍。

2025-03-15 09:06:24 915

原创 Linux环境基础开发工具使用

介绍linux下基础开发工具的使用,软件包管理器apt,文本编辑器vim,编译器gcc/g++,调试器gdb、make/makefile、进度条小程序。

2025-03-11 14:04:56 964

原创 Linux权限理解

Linux权限理解以及如何修改权限,粘滞位介绍。

2025-03-09 08:11:49 782

原创 Linux常见指令

介绍linux下常见指令的使用。

2025-03-08 17:34:34 2399

原创 C++11线程库

介绍C++11thread、mutex、atomic、condition_variable的使用。

2025-03-04 10:01:28 892

原创 C++11智能指针

auto_ptr:管理权转移,会导致被拷贝对象悬空,建议不要使用。unique_ptr:简单粗暴,直接禁止拷贝。日常使用,不需要拷贝的场景就用它。shared_ptr:引用计数支持拷贝,需要拷贝的场景就使用它。但是要小心构成循环引用,循环引用会导致内存泄漏。weak_ptr:不是RAII的智能指针,专门用来处理shared_ptr的循环引用问题。

2025-03-04 09:45:42 841

原创 C++类型转换和IO流

C++类型转换和IO流。

2025-03-03 10:46:25 560

原创 C++特殊类设计

C++特殊类设计,单例模式。

2025-03-02 17:02:51 671

原创 C++11新特性

详细介绍C++11新特性,包括1、统一的列表初始化{}初始化、声明和类型、范围for、STL中的一些变化、右值引用和移动语义、可变模板参数、lambda、包装器、智能指针、多线程等。

2025-03-01 19:05:15 805

原创 C++哈希扩展

现在我们的数据变成字符串,那么就不能使用位图了,而使用红黑树和哈希表也可能内存空间不足,因此就需要布隆过滤器来解决了。布隆过滤器是由布隆(Burton Howard Bloom)在1970年提出的一种紧凑型的、比较巧妙的概率型数据结构,特点是高效地插入和查询,可以用来告诉你“某样东西⼀定不存在或者可能存在”,它是用多个哈希函数,将一个数据映射到位图结构中。此种方式不仅可以提升查询效率,也可以节省大量的内存空间。

2025-02-28 08:35:12 688

原创 C++模拟实现unordered_map和unordered_set

实现散列表,封装散列表实现unordered_set和unordered_map。

2025-02-27 12:48:40 941

原创 C++STL—unordered_map和unordered_set介绍和使用

介绍C++STL中unordered_set和unordered_map的使用。

2025-02-26 19:48:39 819

原创 C++模拟实现map和set

封装红黑树实现map和set

2025-02-26 09:32:48 1018

原创 C++手撕红黑树

C++实现红黑树的插入、删除、查找。对插入删除查找进行深度分析。

2025-02-25 12:40:36 800

原创 C++手撕AVL树

C++代码手撕AVL树,包含插入删除查找等。

2025-02-23 09:26:29 1006

原创 C++异常

介绍C++的异常及其使用。

2025-02-21 20:25:11 746

原创 C++STL—map和set介绍和使用

C++STL中map和set的使用介绍。

2025-02-21 16:42:26 918

原创 基础算法——搜索与图论

基础算法——搜索与图论。

2024-12-06 19:47:09 409

原创 C++实现二叉搜索树

二叉搜索树1、二叉搜索树的概念2、二叉搜索树性能分析3、二叉搜索树的实现3.1、结点和成员变量3.2、二叉搜索树的查找3.3、二叉搜索树的插入3.4、二叉搜索树的删除3.5、二叉搜索树的中序遍历3.6、二叉搜索树的拷贝构造函数3.7、二叉搜索树的赋值运算符重载函数3.8、二叉搜索树的析构函数3.9、二叉搜索树完整代码(包含递归和非递归)4、二叉搜索树key和key/value应用场景4.1、key搜索场景4.2、key/value搜索场景4.3、key/value二叉搜索树代

2024-11-21 11:03:39 601

原创 C++多态

1、多态的概念2、多态的定义和实现2.1、多态的构成条件2.2、面试题:析构函数可以是虚函数吗?为什么需要是虚函数?2.3、override和final关键字2.4、重载、重写(覆盖)、重定义(隐藏)对比2.5、多态练习题3、抽象类4、多态的原理4.1、虚函数表4.2、多态条件的深入思考4.3、虚表存储位置4.4、动态绑定和静态绑定5、单继承和多继承关系的虚函数表5.1、单继承中的虚函数表5.2、多继承中的虚函数表5.3、菱形继承中的虚函数表5.4、菱形虚拟继承中的虚函数表

2024-11-17 19:18:12 861

原创 C++继承

C++继承1、继承的概念和定义2、基类和派生类间的转换3、继承中的作用域4、派生类的默认成员函数拓展:实现一个不能被继承的类5、继承与友元6、继承与静态成员7、多继承及其菱形继承问题8、继承和组合

2024-11-13 10:20:04 757

原创 C++模板进阶

C++模板进阶1、模板初阶的补充2、非类型模板参数3、模板的特化3.1、函数模板特化3.2、类模板特化3.2.1、全特化3.2.2、偏特化3.2.3、类模板特化的应用4、模板的分离编译

2024-11-11 19:11:39 832

原创 C++STL—deque、stack、queue、priority_queue介绍使用和模拟实现

deque、stack、queue、priority_queue1、deque2、stack使用介绍3、stack实现4、queue使用介绍5、queue实现6、priority_queue使用介绍7、priority_queue实现8、反向迭代器

2024-11-03 22:18:26 1167

原创 C++模拟实现list

C++模拟实现list1、成员变量2、迭代器3、insert函数4、erase函数5、pop_back、push_front、pop_front函数6、size和clear函数7、析构函数8、拷贝构造函数9、赋值运算符重载完整代码(包含测试代码)

2024-11-01 20:05:40 1118

原创 C++STL—list介绍和使用

list1、list简介2、构造函数3、迭代器4、访问和容量函数5、修改类函数6、操作类函数

2024-10-31 21:32:23 1055

空空如也

空空如也

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

TA关注的人

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