02 2024 档案

摘要:目录缓冲区的自动增长的实现原理分散读示例 缓冲区的自动增长的实现原理 web服务器之缓冲区的自动增长的实现原理 socket通信中的分散读和集中写 分散读示例 在Linux下,readv系统调用可以实现分散读(scattered read),即从一个文件描述符中读取数据到多个缓冲区中。下面是一个使用 阅读全文
posted @ 2024-02-29 17:22 guanyubo 阅读(114) 评论(0) 推荐(0) 编辑
摘要:目录Reactor和Proactor的区别介绍一下多线程的Reactor高并发模型介绍一下I/O处理单元和逻辑单元介绍一下基于epoll的边缘触发ET模式介绍一下EPOLLONESHOT Reactor和Proactor的区别 Reactor和Proactor都是处理并发编程中的I/O多路复用问题的 阅读全文
posted @ 2024-02-29 15:27 guanyubo 阅读(34) 评论(0) 推荐(0) 编辑
摘要:Markdown 设置字体、字号与颜色 Markdown 语法大全 Markdown 流程图绘制详解 markdown中数学符号公式和字母表示 Markdown常用数学公式 博客园数学公式(转) 在线公式编辑器 Markdown 类图绘制详解 markdown中流程图、时序图、状态图、类图(UML) 阅读全文
posted @ 2024-02-29 15:16 guanyubo 阅读(6) 评论(0) 推荐(0) 编辑
摘要:目录概念示例 概念 装饰器模式(Decorator Pattern)是一种结构型设计模式,它允许动态地给一个对象添加一些额外的职责,而不需要改变其结构。装饰器模式提供了一种灵活的方式来扩展对象的功能,同时保持对象的接口一致。 示例 在C++中,装饰器模式通常通过继承和接口实现。下面是一个简单的示例来 阅读全文
posted @ 2024-02-29 11:19 guanyubo 阅读(33) 评论(0) 推荐(0) 编辑
摘要:在C++中,当两个头文件互相引用时,可以通过前向声明来避免直接的#include依赖,从而解决循环依赖的问题。前向声明是在一个头文件中声明另一个头文件中的类或类型的名称,而不包括其具体的实现细节。这样,每个头文件只依赖对方的声明,而不需要依赖对方的定义,从而打破了循环依赖。 以下是如何通过前向声明来 阅读全文
posted @ 2024-02-28 16:41 guanyubo 阅读(1532) 评论(0) 推荐(0) 编辑
摘要:目录概念示例 概念 观察者模式(Observer Pattern)是C++中常用的一种行为型设计模式,它定义了对象间的一种一对多的依赖关系。在这种模式中,当一个对象(被观察者,Subject)的状态发生改变时,所有依赖于它的对象(观察者,Observer)都会收到通知并自动更新。 这种模式的结构通常 阅读全文
posted @ 2024-02-27 16:46 guanyubo 阅读(162) 评论(0) 推荐(0) 编辑
摘要:目录语言必备 语言必备 在C++中刷Leetcode时,有一些常用的语言技巧和最佳实践可以帮助你更有效地解决问题。以下是一些建议: 熟悉STL(Standard Template Library): 使用vector, list, set, map等容器来存储和操作数据。 使用algorithm库中 阅读全文
posted @ 2024-02-26 16:44 guanyubo 阅读(151) 评论(0) 推荐(0) 编辑
摘要:目录HTTP请求报文结构简单的状态机示例状态转移过程 HTTP请求报文结构 要使用正则和状态机来解析HTTP请求报文,首先需要理解HTTP请求报文的基本结构。一个典型的HTTP请求报文如下: GET /index.html HTTP/1.1 Host: www.example.com User-Ag 阅读全文
posted @ 2024-02-26 14:43 guanyubo 阅读(448) 评论(0) 推荐(0) 编辑
摘要:Reactor模型是一种常见的高并发设计模式,特别是在网络编程中。在Reactor模型中,一个或多个输入同时传递给一个或多个服务处理程序。服务处理程序对输入进行处理,然后将结果传递给相应的输出处理程序。 关于socket可写的几种表述 在Reactor模式中,Socket可写通常指的是Socket的 阅读全文
posted @ 2024-02-26 14:33 guanyubo 阅读(725) 评论(0) 推荐(0) 编辑
摘要:目录新特性详细介绍 新特性 C++14带来了一些重要的新特性,主要包括以下几个方面: Lambda初始化捕获:C++14允许在捕获列表中定义前面没有出现过的变量,但必须赋予一个值,并且不使用类型说明符和auto,类型由编译器自动推断。这在用作函数模板的实参时,能推导参数包并将其用于包展开。 废弃标志 阅读全文
posted @ 2024-02-26 14:30 guanyubo 阅读(148) 评论(0) 推荐(0) 编辑
摘要:利用IO复用技术Epoll与线程池实现多线程的Reactor高并发模型 利用正则与状态机解析HTTP请求报文,实现处理静态资源的请求 利用标准库容器封装char,实现自动增长的缓冲区 基于小根堆实现的定时器,关闭超时的非活动连接 利用单例模式与阻塞队列实现异步的日志系统,记录服务器运行状态 利用RA 阅读全文
posted @ 2024-02-26 14:27 guanyubo 阅读(33) 评论(0) 推荐(0) 编辑
摘要:目录简介 简介 Linux内核是操作系统的核心组件,负责底层硬件管理和资源分配,为上层应用程序提供一个稳定、统一的运行环境。以下是Linux内核的一些主要工作原理和组成部分: 系统调用接口(SCI):SCI层提供了从用户空间到内核的函数调用的机制。它允许应用程序与内核进行交互,执行一些需要特殊权限或 阅读全文
posted @ 2024-02-26 10:27 guanyubo 阅读(111) 评论(0) 推荐(0) 编辑
摘要:目录展望符LR1算法与SLR算法的区别 展望符 在LR(1)文法中,展望符(lookahead)是一个非常重要的概念。它代表了在当前状态下,非终结符后面必须紧跟的终结符。换句话说,展望符用于预测下一个应该出现的输入符号。 在LR(1)项目中,一般形式为[A→α·β, a],其中A→αβ是一个产生式, 阅读全文
posted @ 2024-02-25 19:33 guanyubo 阅读(796) 评论(0) 推荐(0) 编辑
摘要:目录SLR算法算法步骤与LR0算法的区别 SLR算法 编译原理中的SLR(Simple LR)算法是一种用于解决文法分析冲突的策略,它基于LR(0)算法,但进行了一些简化和改进。SLR算法通过引入FOLLOW集来解决冲突,使得在特定状态下,可以根据下一个输入符号是属于移进集合还是某个FOLLOW集来 阅读全文
posted @ 2024-02-24 19:35 guanyubo 阅读(461) 评论(0) 推荐(0) 编辑
摘要:目录LR(0)分析表的构建项目集闭包CLOSURE函数GOTO函数规范LR(0)项集族构建ACTION表构建GOTO表LR(0)分析表构造算法步骤 1:构造初始项集I0步骤 2:构造项集族C步骤 3:构造ACTION和GOTO表注意事项:LR(0) 自动机的形式化定义移进/归约冲突和归约/归约冲突移 阅读全文
posted @ 2024-02-23 16:21 guanyubo 阅读(1505) 评论(0) 推荐(0) 编辑
摘要:目录自底向上语法分析句柄移入-归约法可归约串算符优先分析LR分析法LR分析表LR分析算法4种LR算法LR(0)算法SLR算法 自底向上语法分析 自底向上的语法分析是编译原理中的一个重要概念,它与自顶向下的语法分析相对应。自底向上的语法分析是从输入串的底部(叶子节点)开始,逐步进行归约,直到达到文法的 阅读全文
posted @ 2024-02-22 15:29 guanyubo 阅读(1787) 评论(0) 推荐(1) 编辑
摘要:目录预测分析法实现步骤递归的预测分析非递归的预测分析下推自动机PDA表驱动的预测分析法递归和非递归的对比 预测分析法实现步骤 构造文法 改造文法:消除二义性、消除左递归、消除回溯 求每个变量的FIRST集和FOLLOW集,从而求得每个候选式的SELECT集 检查是不是 LL(1) 文法。若是,构造预 阅读全文
posted @ 2024-02-22 12:17 guanyubo 阅读(197) 评论(1) 推荐(1) 编辑
摘要:目录S_文法q_文法FIRST 集合FOLLOW 集合SELECT 集合LL(1)文法预测分析表 S_文法 S_文法,也被称为简单的确定性文法(Simple Deterministic Grammar),是编译原理中的一种特定类型的文法。这种文法满足以下两个条件: 每个产生式的右部都以终结符开始。 阅读全文
posted @ 2024-02-21 13:58 guanyubo 阅读(1787) 评论(0) 推荐(1) 编辑
摘要:目录简介消除左递归算法提取左公因子算法 简介 在编译原理中,文法转换是一个重要的步骤,用于将复杂的语法结构转化为更适合进行词法分析、语法分析以及代码生成的形式。以下是几种常见的文法转换: 正规文法到正规式转换: 正规文法(3型文法)是一种形式简单、仅能描述正则语言的文法。其产生式只允许形如A → a 阅读全文
posted @ 2024-02-21 11:17 guanyubo 阅读(1813) 评论(0) 推荐(0) 编辑
摘要:目录自顶向下的语法分析递归下降分析(Recursive-Descent Parsing)预测分析(Predictive Parsing)FIRST集的计算过程FOLLOW集的计算过程 自顶向下的语法分析 自顶向下的语法分析是编译原理中的一个重要概念,它与自底向上的语法分析相对应。自顶向下的语法分析是 阅读全文
posted @ 2024-02-20 17:43 guanyubo 阅读(575) 评论(0) 推荐(0) 编辑
摘要:目录1. ε-NFA到NFA的转换2. NFA到DFA的转换子集构造法步骤:注意事项:总结 从非确定有限自动机(NFA)到确定有限自动机(DFA)的转换过程是一个重要的计算理论概念。这个过程主要包括两个主要步骤:首先是将ε-NFA(带有ε-转换的NFA)转化为NFA,然后是将NFA确定化为DFA。下 阅读全文
posted @ 2024-02-20 15:33 guanyubo 阅读(860) 评论(0) 推荐(0) 编辑
摘要:CS自学指南、imyshare 阅读全文
posted @ 2024-02-20 11:35 guanyubo 阅读(11) 评论(0) 推荐(0) 编辑
摘要:在编译原理中,上下文有关文法(Context-Sensitive Grammars, CSGs)是形式文法的一种,它比上下文无关文法(Context-Free Grammars, CFGs)更为强大,但同时也更加复杂。上下文有关文法的产生式规则不仅涉及替换的非终结符本身,还涉及该非终结符在字符串中的 阅读全文
posted @ 2024-02-19 18:23 guanyubo 阅读(235) 评论(0) 推荐(0) 编辑
摘要:目录无符号整数的文法浮点数的文法 在编写无符号整数(Unsigned Integer)和浮点数(Floating Point Number)的文法时,我们通常使用BNF(巴科斯-瑙尔范式)或EBNF(扩展巴科斯-瑙尔范式)等描述形式语言的工具。这些工具提供了一种简洁的方式来定义语法规则。 以下是无符 阅读全文
posted @ 2024-02-19 18:00 guanyubo 阅读(422) 评论(0) 推荐(0) 编辑
摘要:目录推导(Derivation)归约(Reduction) 在编译原理中,推导(Derivation)和归约(Reduction,有时也称为规约)是两个核心概念,用于描述如何根据形式文法的规则来生成或识别字符串。它们是基于形式语言理论中的上下文无关文法(Context-Free Grammars, 阅读全文
posted @ 2024-02-19 17:34 guanyubo 阅读(739) 评论(0) 推荐(0) 编辑
摘要:目录语法成分语言的基本符号 在编译原理中,语法成分(也称为语法单位或语法结构)和语言的基本符号是两个核心概念,它们在定义和解析一种语言的语法时起着至关重要的作用。 语法成分 语法成分是指在特定的语法规则下构成句子或程序结构的基本元素。在上下文无关文法中,这些成分通常是非终结符和终结符的组合。非终结符 阅读全文
posted @ 2024-02-19 15:27 guanyubo 阅读(61) 评论(0) 推荐(0) 编辑
摘要:目录CFG简介CFG的分析树 CFG简介 编译原理中的上下文无关文法(Context-Free Grammar,CFG)是一种用于描述语言结构的抽象机制。它是形式语言理论中的一个核心概念,在编译器设计中扮演着关键角色。 上下文无关文法由四部分组成: 终结符集合(Terminal Set):包含所有语 阅读全文
posted @ 2024-02-18 16:00 guanyubo 阅读(554) 评论(0) 推荐(0) 编辑
摘要:在编译原理中,元语言符号是用于描述和定义文法规则的特殊符号。这些符号的读法和用法对于理解和编写文法规则非常重要。以下是一些常用的元语言符号及其读法: 产生式符号(→):读作“定义为”或“产生”。它用于表示一个非终结符可以被替换成什么。例如,A → α 表示“非终结符 A 定义为 α”。 选择符号(| 阅读全文
posted @ 2024-02-18 15:51 guanyubo 阅读(120) 评论(0) 推荐(0) 编辑
摘要:目录语法语义标识符是语法概念,名字是语义概念总结 在编译原理中,语法(Syntax)和语义(Semantic)是两个关键的概念,它们在源代码到机器代码的转换过程中起着重要的作用。虽然两者都是编译器的重要组成部分,但它们在功能、处理方式和上下文依赖性方面有着明显的区别。 语法 语法,也称为句法,关注的 阅读全文
posted @ 2024-02-18 14:21 guanyubo 阅读(190) 评论(0) 推荐(0) 编辑
摘要:目录语法分析抽象语法树AST 语法分析 编译原理的语法分析是编译过程中的一个重要阶段,其主要任务是根据语言的语法规则对程序的语法结构进行分析和检查。 语法分析器(也称为解析器)是执行语法分析的程序,它接收词法分析器输出的记号流作为输入,并构造出表示程序语法结构的分析树(或语法树)。在这个过程中,语法 阅读全文
posted @ 2024-02-09 00:04 guanyubo 阅读(231) 评论(0) 推荐(0) 编辑
摘要:目录词法分析介绍词法分析步骤正则表达式DFA 和 NFADFA 示例NFA 示例 词法分析介绍 词法分析是编译原理中的一个关键阶段,它主要负责将输入的源代码字符串分解成一系列的标记(tokens),这些标记是源代码的基本构成元素。词法分析器(也称为扫描器或词法器)执行这个任务,它读取源代码字符流,并 阅读全文
posted @ 2024-02-08 21:25 guanyubo 阅读(1226) 评论(0) 推荐(0) 编辑
摘要:目录读秀点点文档 读秀 https://www.duxiu.com/ 点点文档 https://www.torrent.org.cn/bd 阅读全文
posted @ 2024-02-08 16:50 guanyubo 阅读(46) 评论(0) 推荐(0) 编辑
摘要:目录概述readv 示例 (文件I/O)recv 示例 (套接字通信)recvmsg 示例 (套接字通信) 概述 readv、recv和recvmsg三个函数都是用于从文件或套接字接收数据的函数,但它们在功能和使用场景上存在一些区别。 readv函数: readv函数主要用于从文件描述符读取数据到多 阅读全文
posted @ 2024-02-07 21:32 guanyubo 阅读(668) 评论(0) 推荐(0) 编辑
摘要:目录各个阶段编译程序总框编译器的结构 各个阶段 编译程序工作的几个阶段包括: 词法分析(Lexical Analysis):也称为扫描(Scanning)或词法扫描(Lexical Scanning)。这个阶段的任务是从左到右一个字符一个字符地读入源程序,将其划分成一系列的记号(token)。每个记 阅读全文
posted @ 2024-02-07 17:29 guanyubo 阅读(17) 评论(0) 推荐(0) 编辑
摘要:目录解释一解释二 解释一 在 socket 通信中,分散读和集中写是两种常见的 I/O 模型。 分散读(scatter read):在分散读模型中,应用程序可以在一次 readv() 系统调用中从socke读取多个缓冲区的数据。这意味着可以一次性读取多个数据包,而不必为每个数据包执行单独的 read 阅读全文
posted @ 2024-02-07 13:27 guanyubo 阅读(96) 评论(0) 推荐(0) 编辑
摘要:目录简介示例 简介 在Linux下的socket通信中,带外数据(Out-of-Band,简称OOB)是一种特殊的数据传输方式。通常,socket通信中的数据是按照顺序发送和接收的,即所谓的带内数据(In-Band)。然而,在某些情况下,可能需要发送一些紧急或重要的数据,这些数据不适合通过常规的带内 阅读全文
posted @ 2024-02-07 13:04 guanyubo 阅读(208) 评论(0) 推荐(0) 编辑
摘要:目录简介示例 简介 在Linux下,你可以使用GNU调试器(GDB)来调试core dump文件。Core dump文件是在程序崩溃时由操作系统生成的,它包含了程序崩溃时的内存内容、寄存器状态和其他相关信息。 下面是在Linux下使用GDB调试core dump文件的步骤: 确保你的系统已经安装了G 阅读全文
posted @ 2024-02-07 12:20 guanyubo 阅读(2988) 评论(0) 推荐(1) 编辑
摘要:Linux的signal.h头文件包含了一系列与信号处理相关的函数。以下是一些主要的函数及其简要描述: int signal(int signum, void (*handler)(int)): 功能:为指定的信号注册一个处理函数。 参数:signum 是信号的编号,handler 是当信号发生时被 阅读全文
posted @ 2024-02-07 11:54 guanyubo 阅读(23) 评论(0) 推荐(0) 编辑
摘要:目录主机字节序和网络字节序通用socket地址专用socket地址ip地址转换函数 主机字节序和网络字节序 在 Linux 系统中,主机字节序(Host Byte Order)和网络字节序(Network Byte Order)是两个重要的概念。 主机字节序是指 CPU 直接处理数据时使用的字节序。 阅读全文
posted @ 2024-02-06 19:26 guanyubo 阅读(28) 评论(0) 推荐(0) 编辑
摘要:建造者模式(Builder Pattern)是一种对象构建设计模式,它提供了一种构建对象的最佳方式。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 在建造者模式中,一个导演(Director)负责组织各个部分(Builder)的构建步骤,一个抽象构建器(Abstract Buil 阅读全文
posted @ 2024-02-05 21:19 guanyubo 阅读(6) 评论(0) 推荐(0) 编辑
摘要:目录1 概念2 使用场景2.1 饿汉式单例模式2.2 懒汉式单例模式2.3 双重检查锁定(线程安全) 1 概念 单例模式(Singleton Pattern)是一种常见的设计模式,用于确保一个类只有一个实例,并提供一个全局访问点来获取该实例。在C++中,单例模式通常用于管理全局资源或提供全局配置。 阅读全文
posted @ 2024-02-04 17:14 guanyubo 阅读(20) 评论(0) 推荐(0) 编辑
摘要:目录 阅读全文
posted @ 2024-02-01 22:33 guanyubo 阅读(12) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示