基于Java NIO的简单NoSQL

学了不短时间的java,有点零散,准备串联起知识,决定写一个综合的程序来锻炼锻炼,于是花了几天做了一个简单的NoSQL,采用Java NIO和反射技术,当然还有很多不足,多多包涵,欢迎指正。

服务器短主要采用Java NIO selector进行多路复用,提高系统并发量,连接事件就保存链接,注册事件;可读事件则只是将消息封装成对象,压入阻塞消息队列,不做处理,由单独的线程进行处理分发,提高主线程的响应速度。本来想用多线程提高处理速度,但所有的数据操作都是全局共享的,则必须保证操作顺序,多线程没有意义,因此只得采用单线程。不知道有没有更好的方法,这里还对消息对象进行了一定数目的缓存,超过数目就直接丢弃,避免每次new 新的。

传递的数据是一个字符串,开头是操作指令如Push,SET等,这是通过框架初次读取配置文件config.xml决定的,可根据需求自由设置<自定义指令>类名.方法名,运行时利用Java 反射动态加载,调用方法,传入操作的字符串,高度自由。

这也是我最喜欢反射的地方,由字符串参数直接获得对象和调用方法,无需做if-else的判断和硬编码。我以前写php程序的时候,最喜欢的一招就是通过参数字符串new $str()或者$str()直接调用方法,而无需做复杂的逻辑判断(不要在黑我大php了,通过字符串映射到对象和方法整的很爽好吗?已经多年没写过臃肿的if-else 和switch-case了)PS:java 的API真他妈难用,坑爹的IO,上来啥也不干先捕获一堆异常,Oracle的文档直接被http://php.net 吊打。

具体的存储我就偷懒直接采用了Java的集合做静态成员,载入类时初始化。其实很粗糙,大神请忽略。Github地址 https://github.com/dingdangmao123/javaredis  GitHub 新手 不要见笑

你可能感兴趣的:(基于Java NIO的简单NoSQL)