# example **Repository Path**: leithda/example ## Basic Information - **Project Name**: example - **Description**: 根据书籍或视频自己实现一些小东西 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2020-04-14 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 日志 - 目前为Mybatis日志框架实现方式 ## spring - IOC 通过反射获取需要管理的Bean类(如果是接口类型,根据注解找到其实现类注入)。遍历Bean的属性,若包含自动注入注解则查找对应的Bean类注入。 - AOP 首先获取代理类与目标类的映射,然后获取目标类与代理列表的映射。最后,遍历目标类与代理列表的映射。实例化目标类的代理类并设置目标类属性,将代理类重新交给IOC管理 ## db-pool - 根据最小连接数初始化连接池,后台根据连接总数、空闲连接数以及最大最小连接数以及参数设置的最大空闲时间动态调整连接个数(**算法待优化**) - 获取数据库连接数,校验最大等待时间,如果超过,则抛出异常 ## orm - 编写简单数据库映射框架,**TODO 待执行** ## framework - 尝试进行简单框架的编写 ## rpc - 通过网络连接完成服务的远程调用 - 基于NIO及JDK 动态代理实现。可优化为NIO及其他代理 - 消费端基本原理,通过动态代理生成代理对象。代理对象调用方法时,使用代理机制完成如下操作:建立网络连接将Java类+方法名+方法参数类型数组(序列化)+方法参数(序列化)上送至服务端 - 服务端基本原理,初始化服务时,加载注册的服务到服务端注册列表,收到客户端请求时,选择列表中符合条件的服务进行方法调用,将结果通过网络+序列化方式返回给客户端 - 仅仅展示原理,所以example-rpc仅仅完成静态服务初始化,而非动态注册。涉及服务端的负责均衡等也没有实现。 ## exception - 常见异常封装方式示例