Memcache-Java-Client-Release源码阅读(之一)
2016-04-13 22:59
951 查看
写在前面的话
使用到的开源框架,还是会抽点时间看看源码,个人喜欢的方式是先看源码整体结构,然后再跟着源码一步一步的单步调试,边运行边了解,逐步对比框架介绍中提及的功能特性,研究研究他是怎么实现各种特性的,虽然有很多地方看不太懂,但不影响阅读代码的乐趣。
一、下载
在github网站能下到发布的源码,作者是gwhalin,选择Tags标记版本,这才是第一手的资料,找最新的2.6.1,下载地址为:
https://github.com/gwhalin/Memcached-Java-Client/archive/release_2.6.1.zip
二、整体阅读
首先需要大致了解一下源码的结构,所有的UML类图放在一起,会比较大,所以根据类的耦合程度,简单地拆分成5部分进行主要的UML图绘制(拆分的时候其实没有严格的原则,仅凭个人感觉)。为了简洁显示,裁剪了类中的许多重载方法和成员变量 。
1、先看一下最核心的SockIOPOOL类和Client类
2、内部类SockIO的相关类
主要负责网络通信部分数据的发送、接收,如下UML所示:
3、两个工厂类
主要目的是创建SockIO连接对象,Memcached新特性SASL认证的相关代码也是在这里实现的,如下UML所示:
4、自定义序列化和反序列化相关类的UML结构,支持基本类型的转换和POJO的序列化,反序列化操作,如下UML所示:
5、Command类
这些类其实只在AscIIUDPClient类中有使用到,AscIITCPClient类都是使用StringBuilder完成命令的拼接的,这些Command类也不算是遵循命令设计模式,只是类名后面带了Command字样而已,并且在使用过程中违反依赖倒置原则和里氏替换原则,好在这部分也不是很关键的部分,看看就好了。
使用到的开源框架,还是会抽点时间看看源码,个人喜欢的方式是先看源码整体结构,然后再跟着源码一步一步的单步调试,边运行边了解,逐步对比框架介绍中提及的功能特性,研究研究他是怎么实现各种特性的,虽然有很多地方看不太懂,但不影响阅读代码的乐趣。
一、下载
在github网站能下到发布的源码,作者是gwhalin,选择Tags标记版本,这才是第一手的资料,找最新的2.6.1,下载地址为:
https://github.com/gwhalin/Memcached-Java-Client/archive/release_2.6.1.zip
二、整体阅读
首先需要大致了解一下源码的结构,所有的UML类图放在一起,会比较大,所以根据类的耦合程度,简单地拆分成5部分进行主要的UML图绘制(拆分的时候其实没有严格的原则,仅凭个人感觉)。为了简洁显示,裁剪了类中的许多重载方法和成员变量 。
1、先看一下最核心的SockIOPOOL类和Client类
2、内部类SockIO的相关类
主要负责网络通信部分数据的发送、接收,如下UML所示:
3、两个工厂类
主要目的是创建SockIO连接对象,Memcached新特性SASL认证的相关代码也是在这里实现的,如下UML所示:
4、自定义序列化和反序列化相关类的UML结构,支持基本类型的转换和POJO的序列化,反序列化操作,如下UML所示:
5、Command类
这些类其实只在AscIIUDPClient类中有使用到,AscIITCPClient类都是使用StringBuilder完成命令的拼接的,这些Command类也不算是遵循命令设计模式,只是类名后面带了Command字样而已,并且在使用过程中违反依赖倒置原则和里氏替换原则,好在这部分也不是很关键的部分,看看就好了。
相关文章推荐
- 从源码安装Mysql/Percona 5.5
- 实战Memcached缓存系统
- Redis和Memcached的区别详解
- 浅析Ruby的源代码布局及其编程风格
- asp.net 抓取网页源码三种实现方法
- JS小游戏之仙剑翻牌源码详解
- JS小游戏之宇宙战机源码详解
- jQuery源码分析之jQuery中的循环技巧详解
- 本人自用的global.js库源码分享
- java中原码、反码与补码的问题分析
- ASP.NET使用HttpWebRequest读取远程网页源代码
- PHP MemCached 高级缓存应用代码
- PHP模块 Memcached功能多于Memcache
- php的memcached客户端memcached
- php模块memcache和memcached区别分析
- 探讨:如何通过stats命令分析Memcached的内部状态
- 利用Memcached在php下实现session机制 替换PHP的原生session支持
- ubuntu+php环境下的Memcached 安装方法
- Nginx HttpMemcModule和直接访问memcached效率对比测试
- PHP网页游戏学习之Xnova(ogame)源码解读(六)