自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【Linux】序列化和反序列化

在网络编程中,直接使用结构体进行数据传输会出错,因为本质上socket无法传输结构体,我们只有将结构体装换为字节数组,或者是字符串格式来传输。同时,将数据保存到磁盘上,也是无法直接保存一个对象的,也要将结构体对象中的数据按照一定的格式转化为字符串然后保存。

2023-09-01 18:28:37 393

原创 【Linux】socket 编程基础

套接字(socket)是 Linux 下的一种进程间通信机制(socket IPC),使用 socket 编程可以使得在不同主机上的应用程序之间进行通信(网络通信),当然也可以是同一台主机上的不同进程之间进行通信。其主要可以分为 UDP SOCKET 编程和 TCP SOCKET 编程。

2023-08-26 18:49:45 627

原创 【C++】智能指针

RAII(Resource Acquisition Is Initialization)是一种利用对象生命周期来控制程序资源(如内存、文件句柄、网络连接、互斥量等等)的简单技术。在对象构造时获取资源,接着控制对资源的访问使之在对象的生命周期内始终保持有效,最后在**对象析构的时候释放资源**。

2023-08-07 19:00:00 548

原创 【C++】C++ 11 新特性

C++11能更好地用于系统开发和库开发、语法更加泛华和简单化、更加稳定和安全,不仅功能更强大,而且能提升程序员的开发效率。同时,C++11增加的语法特性非常篇幅非常多,没办法一 一讲解,本文主要讲解实际中比较实用的几个语法。

2023-07-20 16:58:42 567

原创 【C++】位图和布隆过滤器

位图,就是用每一个比特位位来存放某种状态,适用于海量数据,数据无重复的场景。通常是用来判断某个数据存不存在的。布隆过滤器可以告诉我们 “某样东西一定不存在或者可能存在”,也就是说布隆过滤器说这个数不存在则一定不存,布隆过滤器说这个数存在可能不存在

2023-07-15 19:15:00 277

原创 【C++】unordered_map、unordered_set 模拟实现

unordered_map内部实现了一个哈希表,也叫散列表,通过把关键码值映射到Hash表中一个位置来访问记录,查找的时间复杂度可达到O(1),其在海量数据处理中有着广泛应用。因此,其元素的排列顺序是无序的。unordered_set底层也是哈希表,只是存储的是value,而不是

2023-07-11 17:09:44 220

原创 【C++】哈希

开散列法又叫链地址法(开链法),首先对关键码集合用散列函数计算散列地址,具有相同地址的关键码归于同一子集合,每一个子集合称为一个桶,各个桶中的元素通过一个单链表链接起来,各链表的头结点存储在哈希表中。取到一个数据的哈希值之后,还要 mod 当前容器的大小,当前容器的大小也是有讲究的,经过研究,最好是素数,有很多的哈希素数可供选择,在 GetNextPrime() 中依次递增。对元素的关键码进行同样的计算,把求得的函数值当做元素的存储位置,在结构中按此位置取元素比较,若关键码相等,则搜索成功。

2023-06-27 20:42:16 218

原创 磁盘调度算法(期末复习版)

假设在队列中有两个请求,分别针对柱面 14 和 186,而当处理来自 14 的请求时,另一个靠近 14 的请求来了,这个新的请求会下次处理,这样位于 186 的请求需要等待。如此,会处理位于柱面 14 的请求,接着 98,122,124,最后183(图 2)。磁头连续来回扫描磁盘。SCAN 算法有时称为电梯算法,因为磁头的行为就像大楼里面的电梯,先处理所有向上的请求,然后再处理相反方向的请求。SCAN 算法有时称为电梯算法,因为磁头的行为就像大楼里面的电梯,先处理所有向上的请求,然后再处理相反方向的请求。

2023-06-21 14:52:17 419

原创 【Linux】信号

信号是进程之间事件异步通知的一种方式,属于软中断。本文将从信号的产生、信号的保存、信号的处理这三方面,来详细阐释 Linux 中的信号机制。相信看完之后一定会有所收获!

2023-06-08 17:30:39 495

原创 【C++】Map、Set 模拟实现

map、set 是 C++ 中的关联式容器,由于 map 和set所开放的各种操作接口,RB-tree 也都提供了,所以几乎所有的 map 和set的操作行为,都只是转调红黑树的操作行为。本文对 Map、Set 进行模拟实现,可以深入的理解这两个关联式容器的底层原理!

2023-05-28 16:51:12 1190

原创 【Linux】动静态库

在我们写程序的时候,一直在使用各种语言的标准库,比如我们写 C/C++ 程序的时候,#include< iostream > 使用的就是 C/C++ 的标准库。但是实际上,我们引入的只是头文件,而头文件里面只是有对方法的声明,方法的具体实现,是在库里面的。头和库是有对应关系的,是要组合在一起使用的。这篇文章讲述了如何使用第三方库/自己写的库。

2023-05-19 20:30:05 810

原创 【C++】红黑树的实现

红黑树,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。 红黑树确保没有一条路径会比其他路径长出俩倍,因而是接近平衡的。map 、set 两个关联式容器的底层就是红黑树。

2023-05-16 20:52:09 622 1

原创 【C++】AVL树

AVL树是在搜索二叉树的基础上,保证任意一个节点,其左右子树的高度差不超过1,这样子的搜索树又叫做平衡搜索二叉树/AVL树。

2023-05-14 20:10:16 394

原创 【C++】搜索二叉树

有了二叉树的概念,就可以继续学习二叉搜索树,这是为了学习 AVL 树、红黑树打下基础,其中,二叉搜索树的删除是需要特别注意的地方。

2023-05-12 20:47:02 597

原创 【Linux】进程间通信 —— 共享内存

进程间通信,除了通过管道这一种技术,还可以通过共享内存来实现。虽然技术不同,但是其本质都是一样的,都是让两个进程看到同一份“资源”,这里将详细介绍共享内存完成进程间通信的方式。

2023-05-09 20:43:26 878

原创 【Linux】进程间通信 —— 管道

进程是独立的,但是当两个就进程之间要进行信息的传递,就需要进程间通信,需要用到特殊的技术,本文主要介绍匿名管道和命名管道的方法!

2023-05-08 19:00:02 638

原创 【Linux】文件系统

我们可以对磁盘进行分区,以便于管理。但是,再细节一点的分组呢?当我们创建一个文件的时候,对应分组的内容有哪些变化?文件所处的目录,代表着什么?目录存储的又是什么…………

2023-05-03 20:15:12 523

原创 【C++】多态

封装、继承、多态 是面向对象的三大特性。多态按字面的意思就是多种形态。当类之间存在层次结构,并且类之间是通过继承关联时,就会用到多态。这篇文章介绍了多态的一些使用规则,及其实现原理。

2023-04-29 19:51:47 817

原创 【Linux】如何理解缓冲区

对于 Linux 上运行的程序,是存在缓冲区的,以C语言程序为例,不仅有 Linux 中文件的缓冲区,也有 C 库自己的缓冲区,这两者要进行区分!通过阅读本篇文章,可以对此有所了解!!

2023-04-25 20:27:23 472

原创 【C++】继承

继承是 面向对象程序设计 使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。本文对继承的基本语法做了介绍,并且对一些特殊用法,比如友元、静态继承、菱形继承也有一定程度的涉猎。

2023-04-23 17:24:47 603

原创 【Linux】文件描述符

你知道什么是文件描述符吗?如何理解“Linux” 下一切皆文件? > 输入重定向 >> 追加重定向 等等,如何理解其本质呢? 进程创建的时候,会打开哪三个标准流?这些问题都将在本文详细解答,相信本篇博客的内容不会让你失望!

2023-04-15 17:28:02 662

原创 【Linux】进程控制——程序替换

程序替换可以让一个进程执行一段全新的代码,将原有的全部代码和数据,替换成新的代码和数据。可是,对于编译之后的可执行程序而言,代码并不可以修改,那么是如何实现程序替换的呢?这就需要了解程序替换的原理,并且熟悉exec 函数簇。

2023-04-07 11:23:53 469

原创 【Linux】 进程控制

Linux 的进程控制,与几个函数有着非常重要的关系。比如,fork() 创建子进程,wait()、waitpid() 两个进程等待的函数。进程终止分为哪些情况,返回什么?这些都属于进程控制的范畴,本文详细介绍了这些函数,相信有助于理解进程控制这一块的内容!!

2023-04-04 23:30:13 450

原创 【C++】STL—— list 模拟实现

vector 是一个和数组类似的容器,list 实际上就是和链表类似的容器。它对数据的操作,本质上就是对链表的增删查改,底层是双向链表。其实现并不是很难,难的是实现 list 的迭代器,以及反向迭代器,这里就需要借鉴 STL 中的思想。

2023-03-30 10:04:05 297

原创 【Linux】进程地址空间

当一个C语言程序被执行的时候,如果打印一些数据的地址,那么我们所看到的地址,是物理地址吗?进程的地址空间是怎样划分的?页表又是什么?父子进程的数据有什么关系?如果对这些问题,你都充满疑惑,那么本文就是为你而准备的!请一定要认真阅读!!

2023-03-27 19:32:21 578

原创 【C++】容器适配器

适配器是一种设计模式(设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结),该种模式是将一个类的接口转换成客户希望的另外一个接口。这篇文章介绍了 stack 、queue、priority_queue 通过容器适配器来实现的原理。

2023-03-24 21:07:26 259

原创 【Linux】 Linux 环境变量

在Linux中,环境变量是一个比较重要的内容,它以字符指针数组的形式组织起来,以NULL代表结束。常用的环境变量有 PATH、USER、PWD 等等。

2023-03-22 20:28:01 376

原创 【Linux】进程概念(下)

进程有着各种各样的状态,比如就绪、运行、等待,但这是操作系统宏观而言,对于具体的每一个操作系统,其状态也是不一样的,本文以Linux 操作系统为例,介绍了Linux 系统的几个状态。

2023-03-20 19:09:46 350

原创 【C++】STL—— vector 模拟实现

vector 是 C++ 的 STL 标准库中的一个容器,它主要使用的是泛型编程的思想,即使用模板。这篇blog用自己的方法实现了vector这个容器,同时对模板的使用也有所感悟。

2023-03-17 18:45:45 772 1

原创 【Linux】进程概念、fork() 函数 (干货满满)

操作系统进行“管理”的本质是——先描述、再组织。描述是一个面向对象的过程,组织是使用数据结构的过程。而进程也是被操作系统管理的,操作系统也要对其先描述,后组织。本文详细讲述了操作系统是如何描述并组织起一个进程的,让你对进程的创建有一个深刻理解。

2023-03-14 16:34:19 441 1

原创 【C++】运算符重载练习——Date 类

日期类是用来描述具体日期的,涉及到 年、月、日,当然,也可以有多个日期之间的关系。这个类对于运算符重载的练习帮助很大,几乎所有的成员函数都是运算符重载。

2023-03-11 14:45:56 439

原创 【C++】STL——string类的模拟实现

C++ 中,string类是比较常用的处理字符串的标准库,里面包含了众多的函数。本文对其中的一些函数进行模拟实现,简单地自己实现了string类。

2023-03-07 20:24:59 401

原创 【C++】inline 内联函数

C++的内联函数在有些场景非常有用,可以极大地提高程序运行效率,本文对其用法进行了一些介绍,也说明了需要注意的地方,相信对你有所帮助!

2023-03-01 16:49:51 354

原创 【Linux】程序员的易筋经——冯诺依曼体系结构

对于冯诺依曼体系结构的理解,是一名程序员的必经之路,本文对该体系结构作了一个简单的介绍,同时对操作系统也略微讲解了一点内容。

2023-02-28 19:26:28 447

原创 【C++】 C & C++ 内存管理

C++ 是一门面向对象的语言,C语言是面向过程的,两者这样的区别,注定了他们在内存管理的时候,会有很大的不同之处。这篇文章详细介绍了C++ 中 new/delete 的用法,同时也对C语言中的 malloc/free 进行区分。

2023-02-13 15:19:32 2951 2

原创 【C++】 类和对象 (下)

类和对象部分,除了六个默认构造函数,还有其他一些零碎的知识,比如初始化成员列表、友元等等。此外,了解编译器的优化机制,可以让我们写出更优质的代码。

2023-02-09 11:40:39 543 3

原创 【C++】万字深剖 类和对象(中)

C++ 的类和对象部分,有六个默认成员函数,即使我们不实现,编译器也会自动生成,但是自己实现与否,区别巨大,本篇文章详细介绍了这六个默认成员函数。

2023-02-06 21:51:41 1289 8

原创 【C++】初识类和对象

C++是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。本文初步讲解了类和对象的思想。

2023-02-04 11:12:12 426

原创 【C++】揭开“引用”的庐山真面目

引用是C++新增的,它不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间。

2023-02-03 15:05:49 378

原创 【数据结构】归并排序、快速排序(递归法和非递归法)

排序算法是基础,但是,对于归并排序和快速排序,其思想方法的理解是重中之重,而且不光要掌握递归法,对非递归法也要有所了解。本文详细介绍了归并排序,以及三种实现快速排序的方法。与此同时,对两种排序算法的非递归法也进行了细致的分析,相信看完一定有所收获!

2023-02-01 22:39:47 1268 17

空空如也

空空如也

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

TA关注的人

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