PJF
  • Home
  • Archives
  • Categories
  • Tags
  • About

epoll的本质

本文会从网卡接收数据的流程讲起,串联起 CPU 中断、操作系统进程调度等知识;再一步步分析阻塞接收数据、select 到 epoll 的进化过程;最后探究 epoll 的实现细节。 从网卡接收数据说起计算机由 CPU、存储器(内存)与网络接口等部件组成,了解 epoll 本质的第一步,要从硬件的角度看计算机怎样接收网络数据。 下图展示了网卡接收数据的过程。 在①阶段,网卡收到网线传来的数据
2025-01-24

Netty EventLoop实现原理和最佳实践

再谈Reactor线程模型线程模型的优劣直接决定了系统的吞吐量、可拓展性、安全性等,Reactor模式负责将读写事件分发给对应的读写事件处理者。 单线程模型 多线程模型 主从多线程模型 Reactor运行步骤 EventLoop是什么EventLoop是一种事件等待和处理的程序模型,可以解决多线程资源消耗高的问题。 EventLoop源码 select():轮询IO事件 processSel
2025-01-12

Netty

Netty整体结构 Core核心层:提供底层网络通信的通用抽象和实现,包括可拓展的事件模型、通用的通信API、支持零拷贝的ByteBuf等 Protocol Support协议支持层:覆盖了主流协议的编解码实现,如HTTP、SSL、Protobuf、压缩、大文件传输、WebSocket、文本、二进制等,自持自定义应用层协议。 Transport Service传输服务层:提供了网络传输能力的
2025-01-11

DDD五板斧之一:Domain Primitive

概念DDD(Domain-Driven Design)首先我们从名字上来进行简单的理解,“领域驱动设计”的驱动是“促进”的意思,可以理解为“基于领域的工程设计”,那么什么是“领域”呢?我们暂且可以将其理解为“业务问题的范畴”,领域可大可小,对应着大小业务问题的边界,简单来说,领域驱动设计就是将业务上要做的一件大事通过推演和抽象,拆分成多个内聚的领域。 案例1假设现在在做一个简单的数据统计系统,市场
2024-08-25

Python协程和猴子补丁

协程基础协程概念协程(Coroutines)是一种特殊的软件构造,是一种用户态的轻量级线程。它允许程序在执行过程中暂停并恢复执行,而不会丢失当前的执行上下文。与线程和进程不同,协程在单个线程中运行,通过调度机制实现并发,降低了上下文切换的开销,提高了程序的执行效率。协程通常用于处理I/O密集型任务,如网络请求、文件读写等。在 Python 中协程就是一个可以暂停执行的函数,听起来和生成器
2024-07-13

MySQL深分页优化

深分页介绍查询偏移量过大的场景我们称为深度分页,这会导致查询性能较低 12# MySQL 在无法利用索引的情况下跳过1000000条记录后,再获取10条记录SELECT * FROM t_order ORDER BY id LIMIT 1000000, 10 范围查询当可以保证ID的连续性时,根据ID范围进行分页是比较好的解决方案: 1234# 查询指定 ID 范围的数据SELECT * FRO
2024-01-19

MySQL一条行记录的存储细节

知道MySQL一条行记录的存储细节后还能解锁以下问题 MySQL 的 NULL 值会占用空间吗? MySQL 怎么知道 varchar(n) 实际占用数据的大小? MySQL 怎么知道 varchar(n) 实际占用数据的大小? MySQL 的数据存放在哪个文件?MySQL的存储行为是由存储引擎实现的,不同的存储引擎保存的文件自然也不同,这里就以默认的InnoDB存储引擎为例 先来看看 MyS
2024-01-18

Zookeeper

一、Zookeeper介绍1、什么是Zookeeper​ Zookeeper 是一种分布式协调服务,用于管理大型主机。在分布式环境中协调和管理服务是一个复杂的过程,ZooKeeper通过其简单的架构和API解决了这个问题。ZooKeeper 能让开发人员专注于核心应用程序逻辑,而不必担心应用程序的分布式特性。 2、Zookeeper的应用场景 分布式协调组件 在分布式系统中,需要有zookee
2024-01-02

Redis大数据统计

先来一些常见问题 HyperLogLog 基本命令: 基数统计: 统计百万级的用bitmap还算可以接受,但是如果是亿级那么占用的内存会很高,所以应该使用HyperLogLog HyperLogLog是牺牲了一定的准确度来换取空间,在大数据的情况下,一点误差是可以接受的。 HyperLogLog只是进行不重复的基数统计,不是集合也不保存数据,只纪录数量而不是具体内存,提供不精确的去重计数
2023-12-29

Redis的IO多路复用

Redis的IO多路复用架构图
2023-12-28
123…5

Search

Hexo Fluid