- 博客(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
原创 项目组件框架介绍[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
原创 红黑树的插入
在学习STL的之前, 我们需要了解红黑树, 红黑树是一种自平衡的二叉查找树(BST),用于维护动态数据集,并在最坏情况下保证基本操作的时间复杂度为 𝑂(log𝑛)
2024-09-13 21:43:55
921
原创 计算机硬件的基本组成
这四门课程是计算机科学与技术专业的重要基础课程, 是研究计算机硬件在底层是如何互相协调工作的, 深入理解计算机系统的工作机制及其内部结构
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进程调度与切换
在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++继承
继承(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关注的人