- 浏览: 186968 次
- 性别:
- 来自: 杭州
-
文章分类
最新评论
-
liuweihug:
图说浏览器的缓存原理及缓存方式说明(1) http://www ...
浏览器缓存机制 -
fei33423:
楼主为啥不根据评论改下文章..不然会误导很多人的..
Java5 Concurrent包中的锁机制 -
superscorpio:
根据总结,点击back和forward跟是否缓存无关。这应该是 ...
浏览器缓存机制 -
hzxlb910:
引用详细内容请访问我的新博客地址:http://xiaofen ...
Storm的第一份作业 -
tudopi:
遇到F5和enter刷新效果不一样的问题,看了文章解惑了
浏览器缓存机制
做过网络管理的人,对于MRTG应该不算陌生。MRTG可以不断收集来自SNMP的数据,保存这些数据,并且按照日、周、月、年的方式生成4幅图像及相关说明,很直观的显示出要检测数据的趋势信息。
MRTG是比较早的技术了,后来又出现了RRD技术,是在MRTG技术的基础上发展起来的,更加灵活、更加方便。其应用也不在局限在主要监测网络数据上了。你可以通过RRD提供的强大功能收集各种各样的信息,并且生成更加复杂的图像。你也可以在自己的应用程序中使用它,因为它提供了丰富接口,方便应用程序调用。
JRobin是RRD的java版本,其原理是一致的。假如你打算监测计算机的CPU使用率,除了查看当前时刻的数据外,你可能也关心计算机在过去的一天、一周,甚至一个月、一年的CPU使用率,也就是以前一段时间的数据。对于这个要求,需要考虑以下一些问题:
1、数据的采集
获取数据是监测的第一步,根据监测对象的不同,采集数据的方法也不一样,可以通过SNMP获取数据、可以通过外部程序获取数据、可以通过脚本得到数据、也可以采用Java编写代码来取得数据。这些提供数据的方式,或者说是程序,可以看成是JRobin的数据源。我们不是时时刻刻的采集数据,出于性能和成本的考虑,通常在每次采集数据之间都会有一个间隔,也就是说在采集一次数据后,等待几秒或几分钟,然后再次采集数据,将这些多次采集的离散数据用图像方式展示出来,就成了好看直观的曲线。MRTG的采集间隔是300秒,RRD较为灵活,可以以秒为单位自由设置。
2、数据的保存
在每次采集数据后,我们可以将这些数据和采集数据的时刻保存下来,这样方便以后绘制图像。假如每300秒采集一次数据,那么一天需要采集288次数据。如果打算保存一年的数据,那么数据的个数就是 365 * 288。这样的数据不算多,但是没有大多必要,因为我们对数据关心的程度与采集数据的时间远近成比例,越近的数据越关心。另外,当把这些数据显示在固定大小的图像上时,并不是数据越多就越清晰。
JRobin采用了所谓的RRD的存储方式。比如,我们打算用四个图像显示一日、一周、一月和一年内的数据,那么我们可以这么保存数据:
(1)保存最近的288个数据,也就是最近一天的数据;
(2)每7个数据保存一个,保存288个,也就是最近一周时间内的的一些数据;
(3)每30个数据保存一个,保存288个,也就是最近一月时间内的的一些数据;
(4)每365个数据保存一个,保存288个,也就是最近一年时间内的的一些数据。
实际处理时,可能并不是简单隔几个保存一个,而是应用一些简单或复杂的算法。比如或许会对多个数据作一个平均,然后保存为一个。
以这种方式保存数据在JRobin中称之为归档(Archive)。数据源于归档的关系可以用下图来简要说明:
3、数据格式
为了达到以上目的,JRobin采用自己的格式来保存数据,这种格式是平台无关的,与RRD的格式不兼容。 JRobin还提供强大的绘制图像的功能,利用其提供的接口,可以很方便的根据数据生成各种样式图像。 举例: 1、定义保存的数据格式,创建数据文件 //以下定义归档数据,即如何保存数据 对于月和年的数据,可以用相同的方式处理。 2、更新数据 采用三角函数生成数据。 for (long t = start; t < end; t += 300) { 3、生成图形 String pngFile = ""; //生成最近一天的图形 //生成最近一周的图形 //如果需要显示中文,以下两条语句比较重要 4、生成的图形如下所示: (1)按日生成的图形
long end = Util.getTime(), start = end - 7 * 86400; //截至时间为当前时间,起始时间为一周前
String rrdFile = "demo.rrd";
// 创建数据文件定义,保存日数据与周数据
RrdDef rrdDef = new RrdDef(rrdFile, start - 1, 300); //数据间隔为300秒
rrdDef.addDatasource("value1", "GAUGE", 600, Double.NaN, Double.NaN); //定义数据源,可以定义多个
rrdDef.addArchive("AVERAGE", 0.5, 1, 288); //输入给数据源的数据每一个都保存下来,保存288笔数据,即保存最近一天的数据
rrdDef.addArchive("AVERAGE", 0.5, 7, 288); //每7笔数据,取平均值,然后保存,保存288笔数据,即保存最近一周的数据
RrdDb rrdDb = new RrdDb(rrdDef); //根据数据定义创建数据文件
Sample sample = rrdDb.createSample(t);
sample.setValue("value1", Math.sin(2 * Math.PI * (t / 86400.0)) * 50 + 50);
sample.update();
}
RrdGraphDef gDef = null;
pngFile = "demoday.png";
gDef = new RrdGraphDef();
gDef.setFilename(pngFile);
gDef.setWidth(450);
gDef.setHeight(250);
gDef.setImageFormat("png");
gDef.setTimeSpan(end - 86400, end);
gDef.setTitle("JRobin Demo");
gDef.datasource("demo", rrdFile, "value1", "AVERAGE");
gDef.line("demo", Color.GREEN, "real");
gDef.gprint("demo", "MIN", "%5.1lf Min");
gDef.gprint("demo", "AVERAGE", "%5.1lf Avg");
gDef.gprint("demo", "MAX", "%5.1lf Max");
gDef.setSmallFont(new Font("Monospaced", Font.PLAIN, 11));
gDef.setLargeFont(new Font("SansSerif", Font.BOLD, 14));
new RrdGraph(gDef);
pngFile = "demoweek.png";
gDef = new RrdGraphDef();
gDef.setFilename(pngFile);
gDef.setWidth(450);
gDef.setHeight(250);
gDef.setImageFormat("png");
gDef.setTimeSpan(end - 7 * 86400, end);
gDef.setTitle("JRobin Demo");
gDef.datasource("demo", rrdFile, "value1", "AVERAGE");
gDef.line("demo", Color.GREEN, "real");
gDef.gprint("demo", "MIN", "%5.1lf Min");
gDef.gprint("demo", "AVERAGE", "%5.1lf Avg");
gDef.gprint("demo", "MAX", "%5.1lf Max");
gDef.setSmallFont(new Font("Monospaced", Font.PLAIN, 11));
gDef.setLargeFont(new Font("SansSerif", Font.BOLD, 14));
new RrdGraph(gDef);
(2)按周生成的图形
发表评论
-
hibernate启动时的一个小问题
2010-01-07 21:39 1369测试时报错但测试可正常运行javax.naming.NoIni ... -
Java中assertion的使用
2009-03-18 16:06 2330assertion的使用是一个复杂的问题,因为这将 ... -
监控系统实现设计
2009-03-18 14:37 0做了半年的网络监控系统,研究过一些开源的解决方案(如:Open ... -
JVM调优总结
2009-03-03 10:40 1333堆大小设置 JVM 中最大堆大小有三方面限制:相关操作系统 ... -
Java Reference的简单总结
2009-02-18 10:45 1220介绍 J ava 2 平台中引入 java.lang.re ... -
Java5 Concurrent包中的锁机制
2009-02-16 16:19 3259JDK1.5以后加入了concurrent包, ... -
该选择哪个Java Map对象?
2009-01-04 16:48 1280HashMap, Hashtable, LinkedHash ... -
Java编码规范
2008-12-08 11:21 11441 介绍(Introduction) 1.1 为什么要有编码规 ... -
在OSGi中运行Servlet
2008-06-13 10:05 2422这几天在研究OSGi这个东东,稍有成果。 什么是OSGi? 简 ... -
使用一个servlet来分配所有的gwt service
2007-12-19 16:30 2221GWT中默认一个service对应一个servlet,这样会使 ... -
让Tapestry5支持中文
2007-04-17 13:18 2404相信很多使用Tapestry5的人和我一样,碰到中文编码的问题 ... -
Struts开发流程
2007-04-06 14:47 2739开发流程如下:1.收集 ... -
重构原则(Java)
2007-04-06 14:44 26181995,Auer曾在文献[AUER95]中指出: 1.应当根 ... -
使用JACOB控制Powerpoint
2007-04-03 16:52 3239什么是JACOB? JACOB是一个JAVA和COM之间的桥接 ... -
为Java ME程序添加蓝牙文本协议
2007-04-03 16:48 2040这篇文章的副标题是: ... -
使用MIDPLogger进行在机调试
2007-04-03 16:47 1090在进行手机蓝牙远程控制的开发中,需要通过蓝牙控制PC,这个过程 ... -
在测试MIDlet时需要考虑的一些重要方面
2007-04-03 16:45 1201在测试MIDlet时需要考虑的一些重要方面: 即使运行环境 ... -
MIDlet的事件模型
2007-04-03 16:44 1188javax.mircoedition.lcdui包实现了一个同 ... -
Java中实现鼠标模拟与键盘映射
2007-04-03 16:41 2554Java SDK 1.3以后实现了Robot类。此类用于为测试 ... -
学习java要经常看的网站[转]
2007-04-03 16:40 1345http://java.sun.com/developer/b ...
相关推荐
JRobin的文件结构和工作原理在"JRobin简介_files"中有所说明。 "监控CPU的使用情况.html"和"监控CPU的使用情况_files"提供了关于如何跟踪和分析CPU使用情况的具体步骤,无论你是使用RRDTool还是JRobin,这些知识都...
- 将`javamelody.jar`和`jrobin-x.jar`两个文件从提供的`javamelody.zip`压缩包根目录下复制到待监控Web应用的`WEB-INF/lib`目录中。 - 如果使用Maven构建工具,可以通过添加`javamelody-core`依赖项简化安装流程...
#### 一、JavaMelody简介 JavaMelody是一款优秀的开源工具,主要用于监控Java Web应用的性能指标。它能够直观地展示应用程序的CPU使用率、内存消耗、请求处理数量等关键数据,并且支持对数据库访问(如JDBC调用)...
人脸识别项目实战
内容概要:本文详细描述了一个完整的Web应用程序的开发过程。该项目主要采用了Hono作为服务器框架,Prisma作为ORM工具,JWT用于认证鉴权,以及一系列现代化的最佳实践确保系统的健壮性和安全性。项目初期构建了基础架构,并设置了必要的依赖和工具。在后端方面涵盖了公共API接口的设计、CRUD增删改查逻辑、用户认证和授权等功能。此外还特别关注到了API的安全保护,如输入输出的校验,跨站请求伪造CSRF的防范,XSS防御等措施;为确保代码的质量引入了代码检测(比如ESLint搭配Prettier),并建立了完善的测试框架以保障后续开发阶段的功能正确。对于可能出现的问题预先定义了一组规范化的异常响应,并提供OpenAPI文档以方便开发者理解和调用。数据存储层面上利用了关系型与非关系型数据库各自的特性,实现了数据的有效组织,最后提供了实用的脚本,可用于种子数据插入以及执行必要的初始化工作。 适合人群:面向具有一定JavaScript/TypeScript开发经验,尤其是Node.js后台服务搭建经验的中级程序员和技术团队。 使用场景及目标:这份材料非常适合那些需要快速建立安全高效的RES
【资源介绍】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,也可以作为小白实战演练和初期项目立项演示的重要参考借鉴资料。 3、本资源作为“学习资料”如果需要实现其他功能,需要能看懂代码,并且热爱钻研和多多调试实践。 掌静脉识别算法源码(门禁).zip掌静脉识别算法源码(门禁).zip掌静脉识别算法源码(门禁).zip掌静脉识别算法源码(门禁).zip掌静脉识别算法源码(门禁).zip掌静脉识别算法源码(门禁).zip掌静脉识别算法源码(门禁).zip掌静脉识别算法源码(门禁).zip掌静脉识别算法源码(门禁).zip掌静脉识别算法源码(门禁).zip掌静脉识别算法源码(门禁).zip掌静脉识别算法源码(门禁).zip掌静脉识别算法源码(门禁).zip掌静脉识别算法源码(门禁).zip
手势识别项目实战
(参考GUI)MATLAB BP的交通标志系统.zip
人脸识别项目实战
内容概要:本文详细介绍了 C++ 函数的基础概念及其实战技巧。内容涵盖了函数的基本结构(定义、声明、调用)、多种参数传递方式(值传递、引用传递、指针传递),各类函数类型(无参无返、有参无返、无参有返、有参有返),以及高级特性(函数重载、函数模板、递归函数)。此外,通过实际案例展示了函数的应用,如统计数组元素频次和实现冒泡排序算法。最后,总结了C++函数的重要性及未来的拓展方向。 适合人群:有一定编程基础的程序员,特别是想要深入了解C++编程特性的开发人员。 使用场景及目标:① 学习C++中函数的定义与调用,掌握参数传递方式;② 掌握不同类型的C++函数及其应用场景;③ 深入理解函数重载、函数模板和递归函数的高级特性;④ 提升实际编程能力,通过实例强化所学知识。 其他说明:文章以循序渐进的方式讲解C++函数的相关知识点,并提供了实际编码练习帮助理解。阅读过程中应当边思考边实践,动手实验有助于更好地吸收知识点。
Comsol光学仿真模型:包括纳米球 柱 Mie散射多级分解 ,Comsol光学仿真模型; 纳米球; 柱; Mie散射; 多级分解,Comsol光学仿真模型:纳米结构Mie散射多级分解
永磁同步电机全速域控制高频方波注入法、滑模观测器法SMO、加权切矢量控制Simulink仿真模型 低速域采用高频方波注入法HF,高速域采用滑膜观测器法SMO,期间采用加权形式切 送前方法 1、零低速域,来用无数字滤波器高频方波注入法, 2.中高速域采用改进的SMO滑模观测器,来用的是sigmoid函数,PLL锁相环 3、转速过渡区域采用加权切法 该仿真各个部分清晰分明,仿真波形效果良好内附详细控制方法资料lunwen 带有参考文献和说明文档,仿真模型 ,核心关键词: 1. 永磁同步电机; 2. 全速域控制; 3. 高频方波注入法; 4. 滑模观测器法SMO; 5. 加权切换矢量控制; 6. Simulink仿真模型; 7. 零低速域控制; 8. 中高速域控制; 9. 转速过渡区域控制; 10. 仿真波形效果; 11. 详细控制方法资料; 12. 参考文献和说明文档。,永磁同步电机多域控制策略的仿真研究
基于蜣螂优化算法的无人机三维路径规划【23年新算法应用】可直接运行 Matlab语言 主要内容:读取地形数据,利用蜣螂算法DBO优化三维路径,目标函数为总路径最短,同时不能撞到障碍物,效果如图所示,包括迭代曲线图、三维路径图、二维平面图等等 ,基于蜣螂优化算法;无人机;三维路径规划;总路径最短;障碍物避免;Matlab语言;迭代曲线图;三维路径图;二维平面图,蜣螂算法优化无人机三维路径规划:实时避障、路径最短新应用
清华大学2024年研究生复试上机考试题.zip
南京理工大学研究生入学考试2011年复试上机试题
手势识别项目实战
这里是3501的内容,用于复习资料
异步电动机变压变频调速系统,包含六千多字的文档、框架图、Simulink仿真模型,电力拖动、电机控制仿真设计 仿真模型+报告 开关闭环对比仿真都有,资料如图所见如所得 ,异步电动机;变压变频调速系统;六千字文档;框架图;Simulink仿真模型;电力拖动;电机控制仿真设计;开闭环对比仿真;资料如图。,异步电机控制仿真系统:六千字详解与图解
人脸识别项目实战
手势识别项目实战