自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 MySQL笔记---数据库基础

摘要: 数据库是结构化存储和管理数据的系统,具有高效访问、数据完整性、并发控制和安全备份等特性,相比普通文件更适合处理海量数据。数据库管理系统(DBMS)是操作数据库的工具,通过表结构存储数据。MySQL支持多种存储引擎,如InnoDB(支持事务)、MyISAM(读多写少)和Memory(临时缓存)。登录MySQL可使用mysql命令配合选项,SQL语言则分为DQL(查询)、DML(增删改)、DDL(结构定义)、DCL(权限控制)和TCL(事务控制)五类,是与数据库交互的标准方式。

2025-09-23 20:11:25 467

原创 Linux笔记---select、poll、epoll总结对比

select:小规模、低并发场景 适用场景监控 FD 数量少(≤1024)、并发连接少的简单服务(如小型工具、测试程序);优势:兼容性极强,无需考虑系统差异;劣势:FD 上限和效率问题无法解决,不适合高并发。poll:FD 数量不固定但并发不高的场景适用场景:监控 FD 数量超过 1024 但并发连接较少的服务(如中小规模的内部服务);优势:突破 FD 数量上限,编程比 select 简单;劣势:高并发下遍历和拷贝开销依然明显,效率低于 epoll。epoll:高并发、大规模连接场景。

2025-09-22 20:34:39 465

原创 Linux笔记---Reactor模式与EpollReactor

是一种,主要用于高效处理并发 I/O 操作,尤其在网络编程中被广泛应用。其核心思想是通过(Reactor)(如连接请求、数据到达、错误等),当事件发生时,自动将事件分发到对应的(Handler)进行处理,从而避免传统阻塞 I/O 的效率问题。

2025-09-22 11:43:49 859

原创 Linux笔记---epoll用法及原理:从内核探究文件等待队列的本质-回调机制

文件描述符(fd)数量限制:select 受限于 FD_SETSIZE(通常为 1024),无法监控大量 fd;低效的轮询机制:每次调用 select/poll 都需要遍历所有监控的 fd 检查事件,时间复杂度为 O(n),fd 越多效率越低;用户态与内核态的数据复制:每次调用需将整个 fd 集合从用户态复制到内核态,fd 越多,复制开销越大;重复监控:若事件未处理完毕(如数据未读完),select/poll 会重复触发,导致不必要的处理。

2025-09-18 21:26:15 641

原创 Linux笔记---非阻塞IO与多路复用

它们的核心区别在于 “等待数据准备” 和 “数据复制到用户空间” 两个阶段的处理方式不同。

2025-09-17 20:28:55 604

原创 Linux笔记---HTTPS的原理

又称。

2025-09-15 20:34:55 1076

原创 Linux笔记---基于HTTP协议搭建一个简单的Web服务器

首先,我们要根据HTTP协议描述的请求报文与响应报文,定义出结构化的请求报文和响应报文,并实现二者的序列化与反序列化方法。如果只考虑服务端的话,我们只需要实现请求报文的反序列化方法和响应报文的序列化方法。我们注意到,请求报文与响应报文最大的区别在于首行,而其他部分均大同小异,所以我们可以首先定义出HttpMessage类public:// 向_headers中添加键值对protected:// 空格// 换行符// 空行// 报头分割符// Http版本。

2025-09-12 15:41:28 1237

原创 Linux笔记---HTTP协议

是互联网中最基础、最核心的,用于在和之间传输超文本(如 HTML、图片、视频、API 数据等)。它基于工作,定义了,是万维网(WWW)得以运行的基石。HTTP协议是如何在万维网中发挥作用的呢?举个例子,我们在使用浏览器访问网页的时候,就会根据你提供的网址向特定的服务器;收到请求报文之后会解析该报文,分析浏览器想要请求什么网页资源,并将该资源。

2025-09-12 14:18:36 844

原创 Linux笔记---网络计算器

我们说过,OSI7层模型十分完美,但是因特网实际上采用的是TCP/IP五层模型:实际上,对比可以发现,TCP/IP模型实际上就是将OSI的前三层模型合并为了应用层。简单来说,在服务器端,这三层就是提供实际服务的顶层、规定数据传输协议的协议层、负责建立连接与断开连接的服务器层。

2025-09-10 09:13:49 504

原创 Linux笔记---进程间关系与守护进程

在操作系统中,是由,用于简化对多个关联进程的统一管理。它是 Unix/Linux 系统中进程组织的重要概念,主要为了方便信号传递、作业控制等操作。每个进程组由唯一的 进程组 ID(PGID) 标识。通常,进程组的创建者(称为 “组长进程”)的进程 ID(PID)会作为该进程组的 PGID(即 PGID = 组长进程的PID)。什么是有关联的进程呢?有父子关系的进程、通过管道相连的进程……这些在操作系统层面上有关联,需要相互协作的进程就叫有关联的进程。

2025-09-09 20:28:09 1393

原创 Linux笔记---协议定制与序列化/反序列化

我们在中已经谈过协议的基本概念了,这里就不再复述。放到程序员编程的角度来说,协议规定的就是。显然,将结构化的数据直接以bit流的方式传输是不现实的,且不说各种语言对于同一种结构体的解释与编码是否相同,就是同种类型的变量是否兼容都是未知数。我们不能指望与你通信的远端和你使用的是同一种语言。所以,我们需要将结构化的数据转换为可传输的格式,字符串就是我们的不二选择。因为字符的编码是有独立的标准规定的,例如ASCII、base64。协议就是用来规字符串与结构化数据之间如何相互转换的。

2025-09-09 09:31:39 812

原创 Linux笔记---封装套接字

是一种行为型设计模式,其是:在中定义一个(模板方法),将算法中某些中实现,从而让子类在不改变算法整体结构的前提下,灵活定制算法的特定步骤。模板方法模式包含以下以 “冲饮料” 为例,和。

2025-09-07 20:16:55 1024

原创 Linux笔记---TCP套接字编程

使 TCP 套接字进入被动监听状态,准备接受客户端连接(仅服务器端使用)。

2025-09-06 15:19:54 1037

原创 Linux笔记---UDP套接字实战:简易聊天室

我们要设计的是一个简单的匿名聊天室,用户的客户端要求用户输入自己的昵称之后即可在一个公共的群聊当中聊天。

2025-09-04 16:58:59 778

原创 Linux笔记---UDP套接字编程

socket()用于创建一个套接字(通信端点),返回套接字描述符(类似文件描述符)。

2025-09-03 11:32:41 866

原创 Linux笔记---套接字编程基础

在现在的英特网当中,传输层及以下的部分所采用的都是通用的优秀解决方案,无需我们这些普通程序员再去插足。我们所做的无非就是在应用层上实践应用层协议,开发网络应用层协议。自然,与我们直接相关,也是我们在编程中主要使用的就是传输层提供的服务。是计算机网络编程中用于实现不同设备或进程之间网络通信的一种抽象概念,它提供了一套标准化的接口,让应用程序能够通过网络发送和接收数据。

2025-09-03 08:40:11 815

原创 Linux笔记---计算机网络概述

再由不同厂商生产。

2025-09-01 20:02:43 886 2

原创 Linux笔记---单例模式与线程池

饿汉式懒汉式实例创建时机程序启动时首次使用时线程安全性天然安全C++11 后安全资源利用可能浪费更高效实现复杂度简单稍复杂(需考虑线程安全)实际开发中,懒汉式因为其资源利用效率更高而更常用,尤其是在单例可能不会被使用的场景下。而饿汉式适合在程序启动时就需要初始化的核心组件。线程池是一种线程管理机制,它预先创建一定数量的线程,通过复用这些线程来处理多个任务,从而避免频繁创建和销毁线程带来的性能开销,提高系统效率和资源利用率。线程池包含一个线程队列和一个任务队列线程队列。

2025-08-23 18:45:57 708

原创 Linux笔记---策略模式与日志

设计模式并非具体的代码实现,而是。

2025-08-21 14:57:47 1098

原创 Linux笔记---线程同步与互斥

在并发编程(多线程 / 多进程)中,同步(Synchronization) 是指通过特定机制协调多个执行单元(线程或进程)的执行顺序,确保它们它们按照预期的逻辑有序执行,避免因无序操作导致的逻辑错误或数据不一致。同步的核心目标是解决"执行顺序依赖"问题—— 当一个操作的执行必须依赖于另一个操作的完成时,通过同步机制确保这种依赖关系得到满足。在许多情况下,我们需要协调多个线程的执行顺序,来确保二者顺利合作完成任务。例如经典的"生产者消费者"问题:一些线程负责向某个固定大小的缓冲区放入产品,称为生产者;

2025-08-18 14:16:51 442

原创 Linux笔记---线程控制

是 POSIX 线程库(pthread)中用于创建新线程的函数。调用该函数后系统就会启动一个与主线程并发的线程,并使其跳转到入口函数处执行。

2025-06-23 17:43:34 1169 2

原创 Linux笔记---线程概念

基本定义: 线程(Thread)是操作系统能够进行运算调度的最小单位。它被包含在进程(Process)之中(或者说是进程的一部分、对进程的划分),是进程中的实际运作单位。: 一个线程必须存在于某个进程中。进程是资源分配的基本单位,线程是CPU调度的基本单位。执行:线程是程序执行流的最小单元。一个标准的单线程程序只有一个执行流(主线程)。多线程程序则在一个进程内有多个独立的执行流并发或并行地运行。

2025-05-31 20:17:10 1867 15

原创 Linux笔记---分页存储管理

操作系统如何管理有限的物理内存空间,在满足各个进程要求的前提下尽可能提高内存利用率呢?

2025-05-26 17:46:04 1227 12

原创 Linux笔记---信号(下)

功能:sigaction函数用于检查或修改与指定信号相关联的处理动作。它可以用来设置信号处理函数、信号掩码等。参数:指定要处理的信号编号,如SIGINT、SIGTERM等。:一个指向sigaction结构体的指针,用于设置新的信号处理动作。:一个指向sigaction结构体的指针,用于存储旧的信号处理动作。返回值成功时,sigaction函数返回0。失败时,它返回-1,并设置errno以指示错误。

2025-05-22 16:14:57 1635 16

原创 C++程序员疯狂星期四必备代码

遇到一个前所未有的bug,程序一启动就崩溃,有没有懂C++的大佬帮我看看,要不我可能今天一整天都搞不定了!

2025-05-22 15:20:44 215 5

原创 Linux笔记---内核态与用户态

由外部硬件设备通过中断请求线(IRQ)主动触发。

2025-05-19 16:55:27 1670 18

原创 Linux笔记---信号(中)

我们在管道那一节说过,管道的读端关闭管道会导致管道的写端退出。管道的写端退出实际上是接收到了由软件条件产生的信号SIGPIPE。这些条件包括但不限于定时器超时(如alarm函数设定的时间到达)、软件异常(如向已关闭的管道写数据产生的SIGPIPE信号)等。当这些软件条件满足时,操作系统会向相关进程发送相应的信号,以通知进程进行相应的处理。简而言之,软件条件是因操作系统内部或外部软件操作而触发的信号产生。

2025-05-14 15:43:18 976 4

原创 Linux笔记---信号(上)

信号是一种异步的信息传递方式,这意味着发送信号的进程只发送由信号作为载体的命令,而并不关心接收信号的进程如何处置这个命令(做不做、何时做、怎么做、结果如何等)。我们的程序在遇到运行时错误时会报错并退出,这就是因为程序在发生执行异常时会引发硬件异常中断,操作系统检测到之后,就会向引发异常的进程发送一个信号,进而终止进程。功能:向指定的进程发送特定的信号,并可以传递一个额外的数据值,提供了比kill函数更丰富的功能,可用于进程间的高级通信。函数用于向指定的进程或进程组发送信号,以实现进程间的通知或控制。

2025-05-12 15:05:32 1456 18

原创 Linux笔记---System V共享内存

System V共享内存是一种在Linux系统中用于进程间通信的机制。顾名思义,就是申请一段可供多个进程共享的内存,以用于进程间通信,相对于管道机制要更加直接。

2025-05-10 15:04:54 1333 12

原创 Linux笔记---进程间通信:管道

是进程间通信(IPC)的一种基础机制,主要用于在具有亲缘关系的进程(如父子进程、兄弟进程)之间传递数据,其核心特性是通过内核缓冲区实现单向或半双工的数据传输。管道是轻量级且高效的进程间通信方式,适用于简单的数据流场景,但其单向性和容量限制使其不适合复杂需求。命名管道扩展了应用范围,但需注意文件系统的依赖。

2025-04-23 22:16:32 1448 19

原创 Linux笔记---动静态库(原理篇)

动静态库文件的构成是什么样的呢?或者说二者的内容是什么?实际上,可执行文件,目标文件,静态库文件,动态库文件都是使用ELF文件格式进行组织的。ELF(Executable and Linkable Format)文件格式是Unix系统及其衍生系统中广泛使用的可执行文件、共享库和核心转储的二进制文件格式。ELF头(ELF header):位于文件的开始位置,主要目的是定位文件的其他部分。程序头表(Program header table):列举了所有有效的段(segments)和它们的属性。

2025-04-16 20:30:36 1161 13

原创 leetcode二叉树刷题调试不方便的解决办法

在leetcode中刷题时,如果没有会员就需要将代码拷贝到本地的编译器进行调试。但是leetcode中有一类题可谓是毒瘤,那就是二叉树的题。要调试二叉树有关的题需要根据测试用例给出的前序遍历,自己构建一个二叉树,非常不方便。作为一个懒人,在此之前我的解决办法就是硬看程序,反复检查,但是确实有点折磨了。前几天在刷二叉树有关的题时心血来潮写了一个函数来帮助构建二叉树。

2025-04-05 10:52:33 521 17

原创 Linux笔记---动静态库(使用篇)

-I] :指定头文件所在目录。[-L]:指定库文件所在路径。[-l]:指定要链接的库。[-shared]:生成动态库。[-fPIC]:产生位置无关码。[-static]:使用静态链接。静态库使用ar命令进行打包:ar -rc lib[库名].a [目标文件s]将静态库与用户目标文件一起编译即可生成可执行程序。

2025-03-26 17:26:05 1787 23

原创 Linux笔记---文件系统软件部分

从这部分我们可以看出为什么 数据写入很慢,而删除却很快。因为删除数据只需要修改对应的标志信息置即可(如将inode Bitmap 和 Block Bitmap对应位置为0)。由此我们又能大概猜到回收站或数据恢复技术的原理了,只要赶在数据被覆盖之前,找到被删除数据对应的原inode和数据块即可恢复。但如果新的数据被写入到了这些存储空间那就无能为力了。所以,当重要的数据被误删时,尽可能什么都不做,赶在数据被覆盖之前交由专业人士进行恢复。

2025-03-22 16:24:23 6255 23

原创 Linux笔记---文件系统硬件部分

文件系统是操作系统用于明确存储设备(常见的是磁盘,也有基于NAND Flash的固态硬盘)或分区上的文件的方法和数据结构,即在存储设备上组织文件的方法。

2025-03-13 17:37:33 1400 29

原创 Linux笔记---自定义shell

该自定义shell并没有任何实用价值,一是因为其功能并不完善,二是因为其是建立在bash的基础之上进行的编写的成果(初始环境变量取自bash),仅具有学习价值。为了贴近真实的 shell 程序开发,我们的代码完全用C语言完成。本文通过完成一个自定义shell小项目的方式,对前面学习的知识做一个简单的总结,帮助读者深入理解有关概念(子进程,进程调度,环境变量……)。

2025-03-08 15:16:31 6621 27

原创 Linux笔记---缓冲区

在计算机系统中,缓冲区(Buffer) 是一种临时存储数据的区域,主要用于协调不同速度或不同时序的组件之间的数据传输,以提高效率并减少资源冲突。它是系统设计中的重要概念,尤其在I/O操作、网络通信、硬件交互等领域广泛应用。

2025-03-01 17:14:06 1027 11

原创 Linux笔记---一切皆文件

一切皆文件”是 Linux 对系统资源的高度抽象,通过文件接口屏蔽底层差异,提供了简洁、一致的操作方式。这种设计降低了系统复杂性,使得工具、脚本和应用程序能够以统一模式处理多样化资源,是 Linux 强大灵活性的重要基石。简单来说,在Linux操作系统中,所有的资源(包括普通文件(文本、二进制文件等)、目录、设备(如磁盘、键盘)、进程信息、网络套接字、管道等)都被抽象为了文件。在用户层面上,我们可以通过对对应的文件进行操作,进而完成对这些资源的操作。

2025-03-01 15:10:28 819 1

原创 MySQL笔记---Ubuntu环境下从零开始的MySQL

其中,mysql是客户端(Client),而mysqld就是服务端(MySQL),所以在某些操作系统中或MySQL版本中,开始,关闭,重启命令的对象是mysqld。当客户端发送连接请求时,MySQL服务器会在连接层接收请求,分配一个线程来处理该连接,随后进行身份验证。:是MySQL的核心组件,负责提供各种数据库操作所需的基本功能,如SQL语法处理、事务管理、锁管理等。所谓安装数据库服务器,只是在机器上安装了一个数据库管理系统程序,这个管理程序可以管理多个数据库,一般开发人员会针对每一个应用创建一个数据库。

2025-02-28 15:43:16 1693 22

原创 编译原理复习---SSA

适用于电子科技大学编译原理期末考试复习。

2024-12-23 16:56:08 1456 1

空空如也

空空如也

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

TA关注的人

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