状态机引擎的业务实践 前言在开发中通常会有状态属性,例如订单状态、事件处置状态、OA请假单状态等,都会根据不同的动作,去更新对应的状态。如下: int status = 0; if (condition1){ status = 1; }else if (condition2){ status = 2; }else if (condition3) 2023-02-25 设计模式
HTTPS通信过程分析 为什么需要HTTPSHTTP缺点: 明文传输 C/S两端不存在验证机制,无法确认对方身份,可能存在中间人攻击。 概念 对称加密:客户端和服务器持有同一个密钥对数据进行加密解密。 非对称加密:公钥加密私钥解密、私钥加密公钥解密 CA:证书认证机构,签发数字证书,保证公钥的可信度。 数字证书:包含版本、序列号、有效期、颁发者、公钥等信息 数字证书是由CA颁发用于证明身份的证书,通过域名 2023-02-10 计算机基础 > 网络 #网络
ShardingSphere-JDBC学习笔记 基础概念ShardingSphere-JDBC是Apache ShardingSphere项目中的一个子项目,Apache ShardingSphere是一款分布式的数据库生态系统,可以通过分片、弹性伸缩、加密等能力对原有数据库进行增强。 ShardingSphere-JDBC定位是轻量级Java框架,在JDBC层提供额外服务。它能尽量透明化水平分库分表所带来的影响,让业务方逻辑上感知到一个数据库 2023-01-11 中间件 > DB
Netty学习笔记(三)- 时间轮算法 定时器理论实际的业务场景会遇到许多使用定时任务的场景,定时器主要有三种表现形式:固定周期定时执行、延迟一定时间执行,指定某个时刻执行。再实现层面,定时器需要考虑存储和调度指定任务,内部通过轮询的方式检查任务是否到期并需要执行。 Java定时器Java提供了三种常用的定时器实现方式: Timer DelayQueue ScheduledThreadPoolExecutor TimerTimer使 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可以同时轮询多个Channel,采 2022-08-06 中间件 > Netty
Linux文件管理模块分析 硬盘文件系统inode与块的存储硬盘读写时以扇区为单位,文件系统中读写数据最小单位为块,一个块(簇)内部是相邻的几个扇区,在Linux中的ext文件系统,默认大小为4K。 文件的元数据存放在inode中,ext4中定义如下: struct ext4_inode { __le16 i_mode; /* File mode */ __le16 i_uid; /* Low 16 bit 2022-07-23 Linux