自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 muduo库源码分析: One Loop Per Thread

当该TcpConnection对象注册到SubEventLoop之后,这个TcpConnection对象的任何操作(包括调用用户自定义的连接建立后的处理函数。)都必须要在这个SubEventLoop线程中运行,所以TcpConnection::connectEstablished()函数必须要在SubEventLoop线程中运行。那么我们怎么。

2025-04-12 21:07:33 883

原创 muduo库源码分析: TcpConnection

muduo库源码分析: TcpConnection

2025-04-12 19:21:01 380

原创 Linux内存管理--fork为例

创建一个新的进程涉及多个步骤,每个结构体和内存区域的分配方式不同,我们详细拆解 fork() 时的内存分配流程,并分析 task_struct、mm_struct、页表、堆栈、物理内存 分别从哪里申请。(进程描述符)用于存储进程的基本信息,如 PID、优先级、状态等。(内存描述符)存储了进程的虚拟地址空间信息,包括堆、栈、代码段等。页表(Page Table)是进程的虚拟地址到物理地址的映射数据结构。用户进程的虚拟地址访问时,Linux 采用按需分配(Demand Paging)策略,物理页的申请流程如下:

2025-03-09 20:12:17 862 1

原创 muduo库源码分析:TcpConnection 类

muduo库源码分析:TcpConnection 类。

2025-03-05 16:16:06 374

原创 muduo库源码剖析:定时器TimeQueue相关

muduo库源码剖析:定时器TimeQueue相关

2025-03-05 16:10:48 235

原创 muduo库源码分析

1. 功能概述:- Channel类主要负责一个文件描述符的事件分发。它与一个文件描述符相关联,并封装了该文件描述符上的 I/O 事件及其对应的回调函数。- 它将底层的 I/O 复用机制(如epoll)与用户的业务逻辑进行解耦,使得用户可以专注于处理特定文件描述符上的事件,而无需关心底层的 I/O 复用细节。2. 工作原理:- Channel在构造时会关联一个文件描述符和一个EventLoop对象。它会在EventLoop中注册对特定事件(如可读、可写、异常等)的关注;

2025-03-04 20:21:05 857

原创 Reactor模式(单/主从)

优缺点优点:逻辑简单,避免业务阻塞I/O缺点:Reactor单线程可能成为I/O瓶颈(每秒处理10万+请求时)线程切换开销大(I/O线程与Worker线程频繁切换)适用场景:中小型系统(如API网关、低频交易系统)

2025-02-19 22:27:57 487

原创 Redis基础--常用数据结构的命令及底层编码

Redis基础--常用数据结构的命令及底层编码

2025-02-07 17:47:50 265

原创 一.MySQL程序简介

mysqld --verbose --help

2025-01-09 22:16:59 370

原创 第5章 共享内存范式:C语言层面

编译制导指令以#pragma omp 开始,后边跟具体的功能指令,格式如:#pragma omp 指令[子句[,子句].]。

2025-01-01 20:57:06 257

原创 第4章 共享内存范式:基于R(Rdsm)的简单介绍

共享内存

2024-12-28 20:37:37 258

原创 第3章 并行循环调度的准则

此时total还需要进行同步…首先,让我们来定义一下要考察的类型。在本章中,我们假设每个循环的迭代都与其他循环是相互独立的,也就是说,一个迭代的执行,并不使用前一个迭代的结果。如果我们不认真处理如何,例如如何做循环调度就可能引起比较大的。并且,通常我们不可能提前知道循环迭代的时间,因此,是非常困难的。解决这些问题的方法是本章的重点。

2024-12-27 11:12:04 801

原创 第二章 并行为什么有时会慢?

高速缓存的定义:高速缓存(Cache)是一种小型、快速的内存存储,用于存放最近或最常使用的数据。它位于处理器和主内存(RAM)之间,目的是减少数据访问的延迟,提高数据访问速度。缓存的工作原理:当处理器需要访问内存中的数据时,首先检查高速缓存是否有这个数据(叫做缓存命中)。如果缓存中有这个数据,处理器直接从缓存获取,速度非常快(称为“缓存命中”)。如果缓存中没有该数据(叫做缓存未命中),则处理器从较慢的主内存中读取数据,并把这个数据加载到缓存中,供以后使用(称为“缓存未命中”)。

2024-12-26 21:32:53 1120

原创 第1章 R语言中的并行处理入门

先来总结一下 snow 包的操作:使用了scatter/gather范式:我们同时有多个R的实例在运行,它们可能在集群中的好几个机器上,也有可能在一个多核机器上,我们把其中的一个实例称为manáger,其他的称为worker。

2024-12-26 16:23:55 826

原创 【无标题】

创建数据框data

2024-12-17 16:51:05 573

原创 VPP学习

【代码】VPP。

2024-10-22 10:21:15 370

原创 Client客户端模块

Client客户端模块

2024-08-31 11:58:46 900 1

原创 Broker服务器模块

Broker服务器模块

2024-08-31 11:38:03 1467

原创 Connection连接管理模块

Connection连接模块的实现

2024-08-22 11:36:49 504

原创 Channel信道管理模块

Channel信道模块的实现

2024-08-22 11:15:46 1031

原创 consumer.hpp消费者管理模块

Consumer类封装了一个消费者的基本属性,包括消费者标识、订阅的队列名称、是否自动确认、以及一个回调函数。ptr:定义了一个类型,表示,方便后续使用智能指针管理Consumer对象。:回调函数类型,接收三个参数,分别为消息的标签、消息的基本属性和消息内容,用户可以自定义回调逻辑。构造函数:初始化Consumer对象时设置消费者标识、队列名称、自动确认标志以及回调函数。(消费者调用回调函数,将收到的消息推送给客户端)析构函数:销毁Consumer对象时记录日志,方便调试。

2024-08-16 10:17:21 824

原创 routine.hpp路由匹配模块

Routine类处理了不同类型的消息路由需求,特别是在处理Topic类型的复杂路由规则时,使用了动态规划来高效地完成匹配。

2024-08-16 09:00:00 544

原创 virtual_host.hpp模块

VirtualHost模块

2024-08-15 20:54:59 827

原创 message.hpp消息管理模块

QueueMessage模块的实现

2024-08-15 16:07:01 1145

原创 binding.hpp绑定模块

Binding模块

2024-08-14 15:57:08 1061

原创 msgqueue.hpp队列模块

MsgQueue模块

2024-08-14 10:57:04 1229

原创 exchange.hpp交换机模块

Exchange交换机模块的具体实现

2024-08-12 11:37:46 1117

原创 消息队列项目

仿rabbit实现消息队列项目

2024-08-11 18:02:35 259

原创 common_mq共享模块

common.hpp

2024-08-11 18:01:58 1121

原创 仿TCMalloc高并发内存池

仿TCMalloc高并发内存池

2024-07-17 09:57:39 604

原创 PageCache页缓存

PageCache负责使用系统调用向系统申请页的内存,给CentralCache分配大块儿的内存,以及合并前后页空闲的内存,整体也是一个单例,需要加锁.PageCache桶的下标按照页号进行映射,每个桶里span的页数即为下标大小.

2024-07-06 19:28:42 1673

原创 CentralCache中心缓存

有与ThreadCache相同数量的哈希桶,分别管理一个SpanList,Span,完成后挂到freeList,当ThreadCache对应的桶无内存时,再从对应的。

2024-07-04 18:01:50 719

原创 第九章 支持向量机

加一维度,线性不可分==>线性可分

2024-06-24 10:00:00 317 1

原创 第八章 基于树的方法

多数投票方法是根据每个自举样本的分类结果进行投票,然后选择票数最多的类别作为最终分类结果。红色类的票数:6 绿色类的票数:4多数投票结果是“Red”

2024-06-23 08:58:02 245

原创 第六章线性模型选择+正则化

正则化(Regularization)是指在机器学习和统计学中,通过引入额外的约束或惩罚项来防止模型过拟合的一种技术。过拟合是指模型在训练数据上表现很好,但在测试数据或新数据上表现较差的现象。正则化通过限制模型的复杂度,从而提高模型在未见数据上的泛化能力。在回归分析中,常见的正则化方法包括L1正则化(Lasso回归)和L2正则化(Ridge回归)

2024-06-23 08:34:39 1263 1

原创 第五章重采样方法

(a) 第一个引导观测值不是原始样本中第j个观测值的概率: 每个观测值被选中的概率是1/n。因此,第j个观测值不被选中的概率是1 - 1/n。(b) 第二个引导观测值不是原始样本中第j个观测值的概率: 由于每次选择都是独立的,第二次选择和第一次选择相同,因此概率也是1 - 1/n。(f) 当n = 10,000时,第j个观测值在引导样本中的概率是多少?(e) 当n = 100时,第j个观测值在引导样本中的概率是多少?(d) 当n = 5时,第j个观测值在引导样本中的概率是多少?(b) 第二个引导观测值。

2024-06-22 17:55:21 978

原创 第四章分类问题

线性判别分析是一种用于分类和降维的技术。LDA假设各类别的协方差矩阵是相等的,因此其决策边界是线性的。二次判别分析是LDA的扩展,允许各类别有不同的协方差矩阵,因此其决策边界是二次的。

2024-06-22 17:24:36 1972

原创 第三章线性回归

Linger regression线性回归理论题

2024-06-18 20:10:47 400

原创 第二章统计学习

(a) 灵活的方法更好,因为数据量大,预测变量少。(b) 不灵活的方法更好,因为预测变量多,数据量少,避免过拟合。(c) 灵活的方法更好,因为可以捕捉非线性关系。(d) 不灵活的方法更好,因为高方差噪声会导致灵活方法过拟合。通过以上分析,可以看出灵活和不灵活的方法在不同情况下的优劣。什么是过拟合ChatGPT过拟合(Overfitting)是指在机器学习和统计模型中,模型过于复杂,以至于它在训练数据上表现非常好,但在新数据(测试数据)上表现很差的现象。

2024-06-18 17:45:54 1049

原创 ThreadCache线程缓存

定长内存池利用一个自由链表管理释放回来的固定大小的内存obj。ThreadCache需要支持申请和释放不同大小的内存块,因此需要多个自由链表来管理释放回来的内存块.即。

2024-06-09 17:40:36 1310

空空如也

空空如也

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

TA关注的人

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