【文件属性】:
文件名称:j2se项目源码及介绍_last指令
文件大小:113KB
文件格式:ZIP
更新时间:2015-06-19 17:18:00
java j2se 实训项目 项目源码 java小项目
Last指令的实现
一、 背景描述
在Unix系统中,有一个last指令可以查看用户登录服务器的历史记录,last指令的工作原理就是读取unix下的一个系统文件,解析然后输出的效果。
在今后的电信用户数据采集系统项目中,就是通过读取该系统文件来确定用户使用电信实验室服务器的时间长度并收费的。
该系统文件的目录与文件名是/usr/adm/wtmpx,在Unix的系统提供一组的核函数来操作该函数,相对处理比较容易。
在这个项目中,我们只要了解了wtmpx的结构,然后通过Java的IO与NIO技术,就可以实现与last同样的功能。并轻松实现电信数据采集系统。
二、 实现要求
a) 与last的实现效果一模一样。效果如下:
b) 显示登录名,设备类型,客户IP,登录开始与结束时间,登录时长。
三、 实现技术
a) 掌握wtmpx文件的格式与C 的结构的补齐。
b) 掌握IO技术。
c) 掌握NIO与文件通道的技术。
d) 数据集合的使用。
e) 使用函数的参数做为返回值。
四、 类图
a) 类图说明
1. LastMain类:启动last程序。
函数原型 public static void main(String[] args)
函数说明 启动last的主函数。
参数说明 args:用户外部参数。
返回说明 无
异常说明 无
流程原理 无
调用实例
2. LogReader类:读取并解析登录数据。
函数原型 private MappedByteBuffer mappedFile2Buffer(File f) throws Exception
函数说明 把日志文件映射成内存缓冲
参数说明 @param File f日志文件
返回说明 @return MappedByteBuffer 内存映射缓冲。
异常说明 throws 考虑异常
流程原理
调用实例
函数原型 private void readLog(MappedByteBuffer buffer,
Vector logins,Vector logouts)
函数说明 读取所有登录日志,并按登入与登出分类放入数据结构
参数说明 MappedByteBuffer buffer 日志文件的内存缓冲
Vector logins 日志的登入数据
Vector logouts 日志的登出数据
返回说明 无
异常说明 @throws 考虑异常
流程原理
调用实例
函数原型 private Vector match(Vector logins,Vector logouts)
函数说明 把登录数据按一个登入一个登出匹配成一条完整的登录过程记录。
参数说明 Vector logins 日志的登入数据
* Vector logouts 日志的登出数据
返回说明 Vector 所有完整的登入/登出记录
异常说明 throws 考虑异常
流程原理
调用实例
函数原型 public void collect()throws Exception
函数说明 得到所有的登录历史数据
参数说明 无
返回说明 无
异常说明 @throws 考虑异常
流程原理
调用实例
3. LogDealer接口:处理登录数据的接口。
函数原型 void deal(Vector logs)
函数说明 登录日志数据的处理接口,目前可以有多种处理方式:
1。直接通过网络处理
2。直接通过JDBC保存到数据库
3。直接通过IO保存到文件,或送往管道。
4。直接通过IO输出到屏幕。[本last指令采用的处理方式]
参数说明 logs 日志
返回说明 无
异常说明 无
流程原理
调用实例
4. LogOutDealer类:登录数据的控制台输出,也是LogDealer的实现类。今后可以直接保存到数据库,或通过网络传递给远程服务器集中处理。
函数原型 public void deal(Vector logs)
函数说明 该类是LogDealer接口的第4种实现类:
直接通过IO输出到屏幕。[本last指令采用的处理方式]
参数说明 logs 日志
返回说明 无
异常说明 无
流程原理
调用实例
5. LogRecord类:读取出来的登录记录的数据抽象类。
成员变量 成员变量说明
username 登录名
userip 登录IP
pid 登录进程ID
device 登录客户设备类型
visittime 登录登出的时间
6. MatchedRecord类:匹配好的登录记录的数据抽象。
成员变量 成员变量说明
username 登录名
device 设备类型
userip 登录IP
logintime 登入时间
logouttime 登出时间
duration
五、 技术技巧提问
a) 使用IO与NIO的优劣。
b) 什么时候使用NIO作为输入/输出。
c) IO,NIO与解码的关系。
d) 程序中是边匹配边显示,还是处理完成以后再一起显示。
六、 效果
【文件预览】:
last指令
----last程序.doc(105KB)
----last.bat(101B)
----last.jar(10KB)
----说明文档()
--------doc()
----源代码()
--------src()