自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【Linux | 网络编程】MAC帧协议 + ARP协议

在学完网络层IP协议之后,本章我们将继续向下沉一层,进入到数据链路层的学习。该层有两个重要的协议需要我们来学习,一个是ARP协议,另一个就是MAC帧协议,这二者都是处于数据链路层。ARP协议在MAC帧协议的上一层,它们属于上下层的关系。老规矩,我们先来认识报头的各个字段,再来学习它们的作用。搬好小板凳,我们马上开讲啦…

2023-10-25 17:22:17 1884 10

原创 【Linux | 网络编程】IP协议

前两章我们学习了整个网络协议中最重要的协议TCP协议,也结束了传输层协议栈的学习。本章我们继续向下沉一层,进入到网络层的学习。本章我们来学习网络层的IP协议,也是网络协议栈中最重要的一个协议之一。和前几章一样,先学习了解其协议格式和报头中每个字段的含义,再理解数据经过IP层的传输过程。还是那句话:整个网络协议栈就叫做TCP/IP协议栈,可想而知TCP/IP协议的重要性!!

2023-10-24 16:53:17 468 7

原创 【Linux | 网络编程】TCP协议

从上一章开始,我们正式进入传输层的学习,该层两个重要的协议TCP协议和UDP协议。上一章我们主要学习了UDP,认识了其报头和各个字段。TCP协议因为要维持可靠性传输,所以要做很多工作,同时也很难理解,本章我们将重讲TCP协议。整个网络协议栈就叫做TCP/IP协议栈,可想而知TCP/IP协议的重要性!!整个网络协议栈叫做TCP/IP协议,用两个协议把整个网络协议栈命名了,但是可不止这两个协议,说明这两个协议非常重要。

2023-10-20 20:54:16 1030 9

原创 【Linux | 网络编程】UDP协议

在我们刚学习网络时,我们知道网络是层状的结构,前面所有的内容都是围绕着应用层展开的。接着我们来学习操作系统内部最顶层协议,叫做传输层协议。应用层用应用的功能都是传输层提供的接口。例如,用http通信,http协议底层用的是tcp协议。https在密钥协商之前,首先要将客户端和服务端的连接建立好,所以在应用层的理解之下,还要搞一下传输层协议。传输层最典型协议有两种,一个udp,以个tcp,对应的就是曾经学到的udp套接字和tcp套接字。👉网络层状结构复习。

2023-10-18 14:57:08 385 9

原创 【Linux | 网络编程】HTTPS协议

在上一章中,我们学习了http协议,了解了其层状的结构,并对其常见报头,方法,各种特性有了相关的认识。本章我们紧接着学习https这一协议。分析通信时是如何加密的,主要的策略有哪些,并了解现在主流的加密措施等。目标已经,搬好小板凳,准备开讲啦… 👉http协议复习数字指纹(数据摘要),其基本原理是利用单向散列函数(Hash函数)对信息进行运算,生成一串固定长度的数字摘要。数字指纹并不是一种加密机制,但可以用来判断数据有没有被篡改。

2023-10-12 14:20:17 296 7

原创 【Linux | 网络编程】HTTP协议

从本章开始,我们要自顶向下的学习网络协议,有了前面的基础,我们再学习http协议就更容易理解了。本章的目标是学习http协议,熟悉http的协议格式,方法,状态码等概念,并且对http常见的报头进行学习。目标已经确定,准备开讲啦… 👉【网络层状结构复习】

2023-10-11 14:48:39 348 4

原创 【Linux | 网络编程】序列化与反序列化

本章我们将重谈网络协议,了解主流的网络协议,学习序列化与反序列化,并通过自己手写一个简易版的网络协议,来了解网络传输中数据的变化过程。目标已经确定,办好小板凳,准备开讲啦……在学习本章内容之前,先复习之前的👉TcpServer本章代码详情:👉Gitee我们只是简单的实现一个网络计算器,不涉及到负载运算,目的在于学习了解制定协议的过程。1+12*310-75/9// ...x + y规定,编码之后的格式是,报头(长度)和字符之间用\r\n分隔,有效载荷最后用\r\n。

2023-10-06 14:08:22 563 7

原创 【Linux | 网络编程】TCP的服务端(守护进程) + 客户端

上一节,我们用了udp写了一个服务端和客户端之间通信的代码,只要函数了解认识到位,上手编写是很容易的。本章我们开始编写tcp的服务端和客户端之前通信的代码,要认识一批新的接口,并将我们之前学习的系统知识加进来,做到融会贯通…

2023-10-03 13:07:25 3566 7

原创 【Linux | 网络编程】UDP的服务端 + 客户端

从上一章开始我们正式进入Linux网络编程的学习,上回中我们对网络有了大概的认识,宏观上了解了网络的传输过程,对局域网广域网以及Mac地址和IP地址有了初步的认识。本章我们正式进入网络编程,用代码来实现网络间的通信,学习认识相关的接口……

2023-10-01 11:25:25 1534 4

原创 【Linux | 网络编程】网络原理

本章开始我们进入Linux网络编程阶段的学习,本章我们将来认识一下网络,学习一下网络原理。对网络整体有个大概的认识,要了解网络传输数据的基本流程,并了解封装和解包的过程,目标已经明确,搬好板凳准备开讲了……

2023-09-25 20:54:14 1210 6

原创 【Linux】生产消费模型 + 线程池

上一章节我们学习了线程的同步与互斥,学习了互斥锁和条件变量的使用。本章我们将学习编程的一个重要模型,生产者消费者模型,并且运用之前学的线程同步和互斥的相关接口来实现阻塞队列和环形队列,最后再来实现一个简易的线程池。目标已经确定,准备开讲啦……

2023-09-20 20:09:13 545 1

原创 【Linux】线程同步与互斥

上一章我们学习了线程的控制,理解了什么是线程id,和线程私有栈等相关的概念,还学习了线程退出的四种方式,并学习了几个相关接口。本章我们还是继续进行线程方面的学习,接下来我们将学线程的互斥加锁,同步条件变量等待等相关问题的学习,目标已经确定,搬好小板凳准备开讲啦……线程互斥,它是对的,难道它任何场景都是合理的吗?很显然并不是。一个执行流,长时间得不到某种资源。例如一个线程的优先级很高,每次竞争锁时,都可以优先竞争到。这就导致了其他线程竞争不到锁,造成了饥饿问题。

2023-09-18 19:32:27 592 6

原创 【Linux】线程控制

上一章我们认识了什么是线程,对线程有个基本的概念,了解并学习了进程和线程的关系,对页表有了更深层次的理解,还对查看进程有了了解。本章我们再继续学习线程,将对线程id进行了解,线程私有栈等,接下来学习线程控制,线程退出,线程分离等,目标确定,办好小板凳准备开讲了……

2023-09-16 17:59:25 576 8

原创 【Linux】线程的概念

从本章开始,我们进入Linux系统编程最后一节多线程的学习,本章我们先来简单的认识一下线程。

2023-09-15 10:45:49 580 5

原创 【Linux】进程通信 — 信号(下篇)

上一篇我们讲述了信号的基本概念和相应系统接口的使用,本章我们想更深入的学习信号发送的一系列过程,目标已经确定,接下来就要搬好小板凳,准备开讲了…🙆🙆🙆🙆。

2023-08-29 17:20:11 1030 9

原创 【Linux】进程通信 — 信号(上篇)

本章我们将讲解Linux信号这部分的内容,本章将介绍信号的产生,发送,信号的捕捉,屏蔽等操作,将对信号进行一些列系统的了解与学习。目标已经确定,接下来就要搬好小板凳,准备开讲了…🙆🙆🙆🙆在我们学习信号之前,我们先来回忆一下生活中的各种信号,例如:红绿灯、铃声、闹钟……即便这个信号还没有产生,我们就已经具备了处理这个信号的能力。即便当前信号还没有产生,我们已经提前知道了这个信号的处理方法。信号是给进程发送的,进程要具备处理信号的能力。

2023-08-26 21:43:42 599 5

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

上一章我们由进程通信,引入并讲述了管道,匿名管道和命名管道和匿名管道。本章我们将继续讲解进程通信的另一种方式,通过共享内存的方式来进行进程间的通信。还要学习几个系统调用接口,并用代码实现两个进程通过共享内存来进行通信。目标已经确定,接下来就要搬好小板凳,准备开讲了…🙆🙆🙆🙆。

2023-07-29 17:41:45 1517 17

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

从本章开始,我们开始学习进程通信相关的知识,本章将来详细探讨一下管道,学习匿名管道和命名管道的原理和代码实现等相关操作。目标已经确定,接下来就要搬好小板凳,准备开讲了…🙆🙆🙆🙆。

2023-07-25 11:48:57 1420 11

原创 【Linux】动静态库

本章将来学习一下动静态库的相关知识,从认识动静态库到自己手写简单版本的库,最后将库发布出去,如何去使用第三库等方面做详细讲解。目标已经确定,接下来就要搬好小板凳,准备开讲了…🙆🙆🙆🙆无论动静态库在使用的时候,用gcc生成可执行程序时,都要指明库所在的路径。而在运行时则是:静态库不需要再去找库的位置,而动态库则需要再找库的位置。静态库是在编译时加载到可执行程序中的,当可执行程序启动时,静态库的代码已经完全集成在程序中,不需要额外的加载过程。而动态库则是运行时才加载到可执行程序中的。

2023-07-18 20:25:17 480 16

原创 【Linux】inode软硬连接

本章我们将学习学习认识一下磁盘的的物理结构,理解磁盘分区分块,如何对区块进行管理。学习认识inode和软硬连接。目标已经确定,接下来就要搬好小板凳,准备开讲了…🙆🙆🙆🙆。

2023-07-13 18:41:39 740 10

原创 【Linux】文件描述符(下篇)

紧接着上篇的文件描述符,我们要继续讲解文件描述符,通过文件描述符讲解重定向的原理,再用所学的知识自己模拟实现一下C语言中fopen等文件操作,讲解一下缓冲区,最后再完善一下我们之前实现的shell。目标已经确定,接下来就要搬好小板凳,准备开讲了…🙆🙆🙆🙆。

2023-07-05 20:27:54 463 12

原创 【Linux】文件描述符 (上篇)

本章开始,我们将进入Linux文件相关的学习与操作,从复习回顾C语言的文件操作接口,再从操作系统角度出发,学习系统调用接口。再了解虚拟文件系统,内核管理文件的数据结构。最后通过学习的操作文件的系统接口来模拟实现C语言的文件操作接口,最后对之前实现的shell进程改进。目标已经确定,接下来就要搬好小板凳,准备开讲了…🙆🙆🙆🙆。

2023-07-04 20:35:22 983 12

原创 【Linux】进程控制 — 进程程序替换 + 实现简易shell

上一节我们讲了进程终止和进程等待等一系列问题,并做了相应的验证,本章将继续对进程控制进行学习,我们将学习进程程序替换,进行相关验证,运用系统进程程序替换接口,自己模拟写一个shell,该shell能够实现执行指令,等一系列命令行操作……

2023-05-26 00:02:13 1952 14

原创 【Linux】进程控制 — 进程终止 + 进程等待

在此之前,我们学过进程的概念,进程的状态,进程地址空间等一系列进程相关的问题。本章我们继续学习进程,我们要来学习一下进程的控制,关于进程等待,进程替换等问题。

2023-05-23 22:07:00 1101 6

原创 【Liunx】进程地址空间

上节我们讲完了环境变量,本章我们来给环境变量收个尾,讲解一下进程优先级🙋🙋🙋……本文实验系统:CentOS 7.6~独立性多进程运行,需要独享各种资源,多进程运行期间互不干扰。进程相关的数据结构是独立的,进程的代码和数据是独立的。进程地址空间不是物理上存在的概念而是,逻辑上抽象的概念。进程地址空间,就是操作系统给进程画的大饼,为了更好的维护进程彼此之间的独立性(每个进程都认为内存是从全0到全F的)。让每一个进程都认为自己是独占系统中的所有资源的!!

2023-05-07 23:19:03 863 19

原创 【Linux】进程优先级 + 环境变量

在学完进程状态之后,本章我们将来学习一下环境变量,还有进程优先级等🙋🙋🙋……CentOS 7.6优先级是权限吗?在之前我们讲解过什么是权限:👉传送门我们这里讲的优先级并不是权限,那么优先级到底是什么呢?如果我们说权限是能不能得问题的话那么优先级就是 — 能!但只不过是先还是后的问题优先级是进程获取资源的先后顺序为什么会存在优先级?排队的本质叫做确认优先级那么排队的最根本原因是 — 资源不够!系统里面永远都是,进程占大多数,而资源是少数!所以,进程竞争资源是常态!一定需要确认先后!

2023-05-02 18:22:17 1557 14

原创 【Linux】fork函数 + 进程状态

在我们有了进程的初步基本概念之后,我们就要来学习一下如何创建进程,进程的几种状态,进程的优先级的问题,搬好小板凳要开讲了🙋🙋🙋……CentOS 7.6。

2023-04-16 16:00:44 1322 12

原创 【Linux】进程的概念 + 查看进程

在前面我们学习了Liunx的基本指令和权限相关知识,还有基本工具的使用,有了以上的基础知识我们本章将正式接触操作系统,搬好小板凳要开讲了🙋🙋🙋……

2023-04-14 15:48:05 1711 9

原创 【Liunx】必备工具的简单使用 — yum / vim / gcc / gdb / make

本章将介绍Linux下常用工具的安装及使用,在Linux下安装软件,编写代码,调试代码,以及和远程gitee仓库交互等操作。

2023-04-06 11:25:36 669 13

原创 【Linux】权限管理

本章开始我们正式开始学习Linux,在日后的学习中我们将陆续学习Linux系统编程和网络编程……基本指令我们就不再过多赘述,指令只要经常用就会熟能生巧,所以我们也就不必过于关心指令记不住的问题,我们直接开门见山,从重点抓起,本章我们将介绍Linux的权限管理……😉😉😉所有演示均在CentOS7.6下进行 ~在我们日常的生活中,我们所接触的权限有,例如:某某视频软件,有的视频是需要vip客户才能观看,普通用户却看不了,这就是权限。如果想要对某些文件具备某些权限,对应的事物需要具备对应的属性。

2023-04-01 22:16:56 1931 10

原创 【C++】IO流 + 空间配置器(了解)

本章讲简单的介绍C++的IO流和空间配置器,并学习一下C++STL库中空间配置器的底层结构,本章只是简单的了解学习,并不要求深入学习……🙌 🙌 🙌在我们之前的学习中,我们知道:括号()这个运算符,可以做函数调用的参数列表,也可以是控制优先级的,也可以是强制类型转换。如果一个类要强转成其他类型,而我们之前学习的仿函数已经将括号()给重载了,所以我们要是想重载强制类型转换,就不能再用了,C++只能退而求其次搞了一种新的玩法。

2023-03-26 17:34:49 1022 12

原创 【C++】特殊类的设计 + 单例模式

在我们的学习中不免会遇到一些要设计一些特殊的类,要求这些类只能在内存中特定的位置创建对象,这就需要我们对类进行一些特殊的处理,那我们该如何解决呢?下面来絮叨絮叨~~🙋🙋🙋🙌。

2023-03-23 19:32:30 450 8

原创 【C++】定制删除器 + 类型转换

上一章节我们学习了智能指针,我们可以将对象托管给智能指针管理,通过智能指针来释放资源空间。但是每个资源的释放的方式是不一样的,而我们之前实现的智能指针释放资源的方式单一,那我们该如何解决呢?下面来絮叨絮叨~~🙋🙋🙋🙌传送门。

2023-03-20 15:44:17 716 13

原创 【C++】智能指针

前倾回顾,在我们之前学习异常的时候,讲到过异常安全的问题,会有内存泄露的问题。内存泄露这个问题对程序员的要求很高,申请的空间就必须要手动释放,不像Java这种语言自带垃圾回收器(gc)。就算是我们手动释放了空间,也有可能存在内存泄露的问题(异常安全),抛异常时会乱跳,有可能就会导致即使手动释放了,也没会内存泄露。上节在异常种我们可以通过拦截异常手动释放掉,但是防不胜防并不是所有的都能拦截到,于是C++就引入了智能指针。异常安全回顾:传送门。

2023-03-19 21:09:06 1735 16

原创 【C++】异常

C++是一门面向对象的语言,和面向过程的C语言有很多不一样的,其中这两种语言对程序错误的处理方式就不一样,通常面向对象是通过抛异常的方式来处理错误,而C语言则是通过返回错误码的方式。实际使用中很多公司都会自定义自己的异常体系进行规范的异常管理因为一个项目中如果大家随意抛异常,那么外层的调用者基本就没办法玩了所以实际中都会定义一套继承的规范体系这样大家抛出的都是继承的派生类对象,捕获一个基类就可以了。

2023-03-13 13:44:01 594 28

原创 【C++、C++11】可变参数模板、lambda表达式、包装器+bind

上一篇我们已经将C++11开了个头,详细讲述了C++11中的 { } 列表初始化和右值引用,本章将继续讲解C++11中的一些新的且比较实用的功能。👉传送门定义了一个可以调用的对象 / 匿名函数,一般定义在局部,特点是可以深度绑定了局部的数据。lambda表达式书写格式:普通函数有函数名,lambda函数没有函数名,他是一个整体lambda表达式,实际上是一个匿名函数,实际上是在定义一个函数(局部的函数)lambda表达式通常是用来定义小函数lambda表达式在局部是很好用的,最特别的就是捕捉列表。

2023-03-09 21:01:17 949 13

原创 【C++、C++11】列表初始化、右值引用

阶段内容类及派生类、公有和私有成员、类的构造和析构、友元、内联函数、赋值运算符重载等C++98C++标准第一个版本,绝大多数编译器都支持,得到了国际标准化组织(ISO)和美国标准化协会认可,以模板方式重写C++标准库,引入了STL(标准模板库)C++11增加了许多特性,使得C++更像一种新语言,比如:正则表达式、基于范围for循环、auto关键字、新容器、列表初始化、标准线程库等C++20自C++11以来最大的发行版。

2023-03-08 16:27:30 999 11

原创 【C++、数据结构】位图、布隆过滤器、哈希切割(哈希思想的应用)

之前我们学习了和的使用,并了解和模拟实现了其地层结构——哈希桶,并对自己实现的哈希桶进行了封装,封装模拟实现了的和,同时我们了解到,哈希表的查找性能很高时间复杂度为〇(1),所以其思想也得到了广泛的应用,本文我们就来介绍其思想的两个应用 ——位图和布隆过滤器。

2023-03-02 10:29:20 632 12

原创 【C++、数据结构】封装unordered_map和unordered_set(用哈希桶实现)

与学习红黑树和map、set的思路一样,我们在学unordered_map和unordered_set时,也是先学底层结构,在用模拟的底层结构来自己封装一下该容器,动手实践来让我们更好的学习和理解底层逻辑。前情回顾:哈希桶👉传送门这里用到的封装思路和封装map、set的思路相同,都是更高维度的泛型编程。思路复习:封装map和set👉传送门所以我们这里还是和封装map和set时一样,无论是Key还是Key_Value,都用一个类型T来接收,这里高维度的泛型哈希表中,实现还是用的是Kye_Value。

2023-02-15 20:07:35 603 6

原创 【C++、数据结构】哈希 — 闭散列与哈希桶的模拟实现

哈希表在日常生活中我们一定略有耳闻,作为STL中我们所必须学习和了解的容器,首先哈希查找的时间复杂度为〇(1),是一种一一映射的存储方式,其次它在日常生活中的应用范围也是很广的,例如位图海量数据筛选中用到的布隆过滤器等等……下面我们就来先学习一下STL中的应用哈希表的两个容器,再了解一下底层结构(两个关联式容器unordered_map和unordered_set,unordered系列的关联式容器之所以效率比较高,是因为其底层使用了哈希结构),最后再来模拟实现一下……🙋 🙋 🙋 🙋 🙋。

2023-02-15 11:23:43 911 7

空空如也

空空如也

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

TA关注的人

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