解析Java动态代理机制的实现 简介代理模式主要是Proxy对原始方法做了一层包装,用以增加一些新的统一处理逻辑,来增强目标对象的功能。静态代理是传统设计模式中一种传统的实现方案,动态代理能将代理对象的创建延迟到程序运行阶段。 以下是一个动态代理的示例: 被代理类: public interface DemoService { public String process(String value); 2023-03-05 Java > 基础 #Java
Java SPI机制学习与常用框架SPI案例 概念 SPI(Service Provider Interface)是JDK内置的服务提供机制,常用于框架的动态扩展,类似于可拔插机制。提供方将接口实现类配置在classpath下的指定位置,调用方读取并加载。当提供方发生变化时,接口的实现也会改变。Java生态中JDK、Dubbo、Spring等都通过SPI提供了动态扩展的能力。 样例public interface Search { 2023-02-28 Java > 基础 #Java
状态机引擎的业务实践 前言在开发中通常会有状态属性,例如订单状态、事件处置状态、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