自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 传输层协议TCP ( 下 )

TCP(Transmission Control Protocol,传输控制协议)是互联网最重要的协议之一,为应用层提供可靠的、面向连接的数据传输服务。它广泛应用于 HTTP、FTP、SMTP 等协议中,保障数据能够准确、有序地到达目标设备。本文将主要介绍TCP其他保证可靠性机制。

2025-02-14 20:42:59 1196

原创 传输层协议TCP (上)

TCP(Transmission Control Protocol,传输控制协议)是互联网最重要的协议之一,为应用层提供可靠的、面向连接的数据传输服务。它广泛应用于 HTTP、FTP、SMTP 等协议中,保障数据能够准确、有序地到达目标设备。本文将主要介绍TCP连接管理机制​ TCP 是一个全双工协议,这意味着连接的双方可以同时发送和接收数据。为了确保这种能力,在连接建立时,必须确认双方都能够发送和接收数据, 三次握手可以保证双方可读可写。

2025-02-14 20:42:34 852

原创 项目组件框架介绍[bRPC]

bRPC是百度开源的一款工业级RPC框架,功能强大, 常用于搜索、存储、机器学习、广告、推荐等高性能系统。

2024-12-10 22:12:55 416 1

原创 项目组件框架介绍[etcd]

Etcd 是一个 golang 编写的分布式、高可用的一致性键值存储系统,用于配置共享和服务发现等项目中主要使用etcd进行服务注册和发现, 我们重点介绍这些接口, 其他介绍可参考官方介绍。

2024-12-09 21:52:36 842

原创 项目组件框架介绍[ gflags && gtest]

gflags与gtest是谷歌开源的框架, gflags是一个命令行标志处理库,用于解析和管理程序的命令行选项, gtest是测试框架, 用于编写单元测试。

2024-12-08 21:35:17 429

原创 即时通信系统项目总览

本项目是一个全栈的即时通信系统, 前端使用QT实现聊天客户端, 后端采⽤微服务框架设计, 由网关子服务统一接收客户端的请求, 再分发到不同的子服务上处理并将结果返回给网关, 网关再将响应转发给客户端。

2024-12-06 21:24:51 789

原创 基于ucontext库实现协程类

协程(Coroutine)是一种"轻量级线程, 用户态线程",允许在执行过程中暂停和恢复执行,从而实现更加灵活的控制流程。与线程不同,协程在用户空间由程序自身调度,不需要操作系统的调度器介入, 我们使用ucontext实现一个简单的协程类。

2024-10-06 19:35:36 943 1

原创 HTTPS加密原理

HTTPS(Hypertext Transfer Protocol Secure)是HTTP的安全版本,旨在通过加密通信、数据完整性验证和身份验证,确保在网络上传输的数据的安全性。它在HTTP的基础上加入了SSL/TLS协议,使用加密技术防止第三方在数据传输过程中的窃听、篡改和伪装数据摘要(Message Digest)是通过一种哈希函数(也称为散列函数)将任意长度的输入数据转换成固定长度的输出数据,即摘要值。这种摘要过程具有不可逆性,即无法从摘要值还原出原始数据。数据摘要用于验证数据的完整性而。

2024-10-03 19:25:56 1323

原创 应用层协议HTTP

在互联网世界中,HTTP(HyperText Transfer Protocol,超文本传输协议)是一个至关重要的协议。它定义了客户端(如浏览器)与服务器之间如何通信,以交换或传输超文本。

2024-10-03 15:57:57 1164 1

原创 红黑树的删除

在之前我们已经学习了红黑树的插入插入操作, 现在我们来学习删除操作, 删除操作比起插入操作更复杂。

2024-09-14 21:52:18 879

原创 红黑树的插入

在学习STL的之前, 我们需要了解红黑树, 红黑树是一种自平衡的二叉查找树(BST),用于维护动态数据集,并在最坏情况下保证基本操作的时间复杂度为 𝑂(log⁡𝑛)

2024-09-13 21:43:55 921

原创 list的简单实现

STL中的list是一个双向链表容器,适用于需要频繁插入和删除操作的场景, 这次我们来简单实现一下list

2024-09-03 21:11:30 1098

原创 计算机硬件的基本组成

这四门课程是计算机科学与技术专业的重要基础课程, 是研究计算机硬件在底层是如何互相协调工作的, 深入理解计算机系统的工作机制及其内部结构

2024-08-31 17:09:08 1310

原创 vector简单实现

std::vector 是 C++ 标准库中的一个动态数组容器类,std::vector 可以动态调整其大小,因此在需要频繁尾插尾删的场景下非常有用

2024-08-22 19:51:19 693

原创 C++STL string简单实现

std::string是C++标准模板库中的一个类,用于处理字符串。与C语言的字符串相比,std::string 提供了更强大的功能和更安全的操作, 这次我们来简单实现一下

2024-08-18 19:25:08 1193

原创 C++泛型编程

C++泛型编程(Generic Programming)是一种通过编写与数据类型无关的代码,以提高代码的重用性和灵活性的编程方式。在C++中,泛型编程主要通过模板(Template)来实现

2024-08-17 17:39:39 686 1

原创 Linux线程实用场景

生产者消费者模型和读者写者模型这些模型是用于在线程间协调和管理资源访问的模式, 我们在之前已经理解了线程的概念以及同步与互斥, 现在我们来学习几个常见的线程实用场景

2024-08-16 19:27:14 1122

原创 C/C++内存管理

C++ 的内存管理是程序设计中的一个关键部分,涉及到内存的分配、使用和释放。理解内存管理对于编写高效和稳定的C++程序至关重要

2024-08-16 19:17:23 1104

原创 Linux线程互斥与同步

线程互斥与同步是多线程编程中的两个重要概念,用于解决多线程环境下的共享资源访问问题,避免出现竞态条件和确保线程的正确协作

2024-08-14 17:17:44 885

原创 Linux线程概念和控制

Linux线程是一种轻量级进程,是操作系统调度的基本单位。线程是进程中的一个执行路径,多个线程共享进程的资源, 理解线程有利于我们编写多执行流代码

2024-08-13 17:32:29 782

原创 进程地址空间

进程地址空间实现了将物理内存从无序变为有序,让进程的以同一的视角来看待内存将进程管理和内存管理解耦合, 在以往的博客中, 我们很多次都看到了进程地址空间这个名词, 这次我们具体介绍它

2024-08-12 17:40:33 285

原创 进程信号的产生与处理

进程信号(Process Signals)是操作系统与运行进程之间进行通信的一种机制。信号通常用于通知进程发生了某些事件,如异常情况、硬件事件、系统调用的错误或用户发出的中断请求。信号的处理方式与异常处理类似,它允许进程在接收到信号时,暂时中断当前的执行流程,以处理特定的事件, 学习进程的信号有利于我们理解程序的运行情况

2024-08-12 17:01:56 1154

原创 进程间通信IPC

进程是操作系统中独立运行的程序单元,每个进程拥有自己的内存空间。由于进程之间的内存空间是隔离的,不能直接访问彼此的内存,因此需要借助IPC来实现进程间的数据交换

2024-08-11 19:57:17 1046

原创 Linux文件IO

在Linux操作系统中,文件I/O是一个核心概念,涉及如何读写文件、与设备通信以及如何管理数据流。Linux下一切皆文件, 文件I/O在Linux中有着统一的接口

2024-08-10 16:41:42 794

原创 Linux文件系统

Linux文件系统是操作系统中用来组织和管理文件与目录的结构, 它提供了存储、检索、管理和保护数据的方法, 在Linux下一切皆文件, 理解文件系统以及文件能让我们对Linux的学习有很大帮助

2024-08-09 20:31:23 782

原创 Linux进程控制

进程创建 , 进程退出 , 进程替换

2024-08-07 17:42:57 515

原创 Linux进程调度与切换

在Linux 2.6版本的内核中,进程调度器引入了O(1)调度器,这个调度器通过优先级队列、活跃队列和过期队列的机制来管理进程调度,虽然在现在已被更好的CFS调度器取代,但对于我们学习Linux也有很大的帮助,进程切换则是实现多任务操作系统的核心目标

2024-08-07 16:12:24 850

原创 Linux进程概念

打开一个终端相当于创建了一个会话,当终端被关闭,会话被关闭,会话中的所有进程都将退出,为了能让进程在终端关闭的时候一直运行,就需要将这些进程单独放在一个会话中,不受当前终端的影响,这样的进程就是守护进程(精灵进程),守护进程通常提供系统级服务,如网络服务(HTTP 服务器、FTP 服务器)、数据库服务、打印服务等。为了回收这个子进程的资源和退出状态,就会将这个子进程交付给init进程(PID:1),init进程会成为这个进程的父进程,负责对该进程的终止和资源清理。

2024-08-06 17:39:40 728

原创 Linux权限

权限,是用来限制身份的,Linux中分为普通用户和超级用户超级用户就是root,可以在linux系统中做任何事不受限制,普通用户会被权限限制。

2024-04-10 17:15:52 389

原创 C++多态

多态通俗来说,就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会 产生出不同的状态。

2024-04-07 16:16:46 878

原创 C++继承

继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保 持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象 程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复用,继 承是类设计层次的复用。

2024-04-04 15:31:30 561

原创 C++内存管理和简单模板

C++是一种通用编程语言,支持面向对象、过程性和泛型编程。在C++中,内存管理和模板是两个重要的概念,它们分别涉及到程序的运行时性能和代码的通用性。C++的很多东西都是针对自定义类型实现的比如这个class Apublic:A()~A()int a;在对自定义类型new时会自动调用类的构造函数,而delete会调用类的析构函数。

2024-01-12 20:27:45 482 1

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

面向对象编程(Object-Oriented Programming,简称OOP)是一种强大的编程范式,它将数据和操作数据的方法组织成类和对象,使得程序更易于理解、扩展和维护。在C++中,类和对象是OOP的核心概念,为程序员提供了一种结构化的方法来组织和设计代码。本节我们继续来学习C++的类和对象。

2024-01-11 19:07:42 785

原创 C++类和对象(中)

面向对象编程(Object-Oriented Programming,简称OOP)是一种强大的编程范式,它将数据和操作数据的方法组织成类和对象,使得程序更易于理解、扩展和维护。在C++中,类和对象是OOP的核心概念,为程序员提供了一种结构化的方法来组织和设计代码。本节我们继续来学习C++的类和对象。

2024-01-09 17:40:51 461

原创 C++类和对象(上)

面向对象编程(Object-Oriented Programming,简称OOP)是一种强大的编程范式,它将数据和操作数据的方法组织成类和对象,使得程序更易于理解、扩展和维护。在C++中,类和对象是OOP的核心概念,为程序员提供了一种结构化的方法来组织和设计代码。本节我们来学习C++的类和对象

2024-01-07 20:42:58 788

原创 C++入门基本语法

欢迎来到C++的世界!C++是一种广泛使用的计算机编程语言,它提供了丰富的功能,包括面向对象编程、泛型编程以及底层内存操作等,本节介绍C++的入门基本语法。

2024-01-06 20:29:15 909

原创 快速排序和冒泡排序

排序算法是计算机科学中的基础工具之一,对于数据处理和算法设计有着深远的影响。了解不同排序算法的特性和适用场景,能够帮助程序员在特定情况下选择最合适的算法,从而提高程序的效率和性能。本节我们讲述两种交换排序。

2024-01-06 15:40:04 1346

原创 归并排序的实现

将已排序的子序列合并为一个新的有序序列。这是通过比较每个子序列的头部元素,选择最小的元素放入新序列,然后将相应子序列的指针向后移动一步,直到所有的子序列都被合并为一个新序列。对于内存受限的环境,这可能是一个显著的缺点。如果子序列的长度为1或零,那么它被认为是有序的。将原始序列划分为若干子序列,直到每个子序列包含一个或零个元素,即认为这些子序列是有序的。归并排序是一种稳定的排序算法,即对于具有相等键值的元素,其相对顺序在排序后保持不变。gap表示每一有序序列的元素个数,从最小的1个元素开始合并,两两合并。

2023-12-12 21:34:22 527

原创 选择排序和堆排序

排序算法是计算机科学中的基础工具之一,对于数据处理和算法设计有着深远的影响。了解不同排序算法的特性和适用场景,能够帮助程序员在特定情况下选择最合适的算法,从而提高程序的效率和性能。本节我们讲述选择排序和堆排序。

2023-12-11 21:11:22 1291

原创 插入排序和希尔排序

排序算法是计算机科学中的基础工具之一,对于数据处理和算法设计有着深远的影响。了解不同排序算法的特性和适用场景,能够帮助程序员在特定情况下选择最合适的算法,从而提高程序的效率和性能。本节我们讲述插入排序和希尔排序。

2023-12-11 20:43:09 1096

空空如也

空空如也

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

TA关注的人

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