ShardingSphere-JDBC学习笔记 基础概念 ShardingSphere-JDBC是Apache ShardingSphere项目中的一个子项目,Apache ShardingSphere是一款分布式的数据库生态系统,可以通过分片、弹性伸缩、加密等能力对原有数据库进行增强。 ShardingSphere-JDBC定位是轻量级Java框架,在JDBC层提供额外服务。它能尽量透明化水平分库分表所带来的影响,让业务方逻辑上感知到一 2023-01-11 中间件 > DB
Netty学习笔记(三)- 时间轮算法 定时器理论 实际的业务场景会遇到许多使用定时任务的场景,定时器主要有三种表现形式:固定周期定时执行、延迟一定时间执行,指定某个时刻执行。再实现层面,定时器需要考虑存储和调度指定任务,内部通过轮询的方式检查任务是否到期并需要执行。 Java定时器 Java提供了三种常用的定时器实现方式: Timer DelayQueue ScheduledThreadPoolExecutor 2022-12-03 中间件 > Netty
Netty学习笔记(二)- 内部机制 事件调度层 Reactor线程模型 Netty中三种Reactor线程模型来源于Scalable I/O in Java,主要有以下三种: - 单线程模型:所有IO操作(连接建立、读写、事件分发)都由一个线程完成。 - 多线程模型:使用多线程处理任务。线程内部仍然是串行化。 - 主从多线程模型:主线程只负责连接的Accept事件,从线程负责除连接外的事件。 Reactor线程模型运行 2022-11-19 中间件 > Netty
MinIO的分布式存储实践方案 简介 MinIO是一个开源的分布式对象存储组件,它兼容Amazon S3 API,适合于存储大容量的非结构化数据,支持单个对象最大5TB。 MinIO特点: 部署简单,仅需要单独一个二进制文件 支持纠删码机制,能恢复部分数据块丢失的情况。 读写性能高 基础原理 纠删码 纠删码是分布式存储领域常见的一种冗余技术,与副本机制相对比,纠删码拥有更高的磁盘利用率。纠删码的基本 2022-08-19 中间件 > MinIO
Netty学习笔记(一)-概览 简介 Netty是一个应用于网络编程领域的NIO网络框架,通过屏蔽底层Socket编程细节,封装了提供上层业务使用的API,简化了网络应用的开发过程。Netty需要关注以下几点: IO模型、线程模型 事件处理机制 API接口的使用 数据协议、序列化的支持 Netty的IO模型是基于非阻塞IO实现的,底层通过JDK NIO中的Selector实现,Selector可以同时轮询多个 2022-08-06 中间件 > Netty
Linux文件管理模块分析 硬盘文件系统 inode与块的存储 硬盘读写时以扇区为单位,文件系统中读写数据最小单位为块,一个块(簇)内部是相邻的几个扇区,在Linux中的ext文件系统,默认大小为4K。 文件的元数据存放在inode中,ext4中定义如下: struct ext4_inode { __le16 i_mode; /* File mode */ __le16 i_uid; /* Low 2022-07-23 Linux
Linux内存管理模块分析 概述 内存管理主要分为三个方面: 管理物理内存:只有内核中负责内存管理的模块可以使用 管理虚拟内存:每个进程看到的都是独立且互不干扰的虚拟空间 物理内存和虚拟内存的转换:上述两者的映射关系 无论是内核态程序还是用户态程序,都使用虚拟内存,虚拟内存空间布局如下: 内核空间部分:存放内核进程的程序 用户空间部分:存放用户进程的程序,从最低位开始,逐个段如下: Tex 2022-07-17 Linux
Linux进程管理模块分析 二进制程序执行 编译过程 源代码文件会经过以下的步骤生成可执行文件(CSAPP): 预处理:预处理过程会将头文件嵌入代码中,定义宏展开,生成.i文件 编译:编译生成汇编语言程序,生成.s文件 汇编:汇编器as将汇编语言翻译成机器指令,打包成.o文件,这被称为Relocatable File 链接:链接器ld将链接库和重定位文件合并,生成可执行文件 编译 process.c内 2022-07-14 Linux