- 浏览: 875779 次
- 性别:
- 来自: 美国图森
最新评论
-
jnjeC:
jake_12345 写道大哥,这写错了吧Class.isAs ...
Class.isAssignableFrom(Class clz)方法 与 instanceof 关键字的区别 -
lgh1992314:
https://my.oschina.net/xianggao ...
Servlet生命周期 -
qq412796770:
大哥,百度第一条就是你的,好歹也修改一下吧
Class.isAssignableFrom(Class clz)方法 与 instanceof 关键字的区别 -
技术无涯苦作舟:
大哥,百度第一条就是你的,好歹也修改一下吧
Class.isAssignableFrom(Class clz)方法 与 instanceof 关键字的区别 -
lgh1992314:
大哥,百度第一条就是你的,好歹也修改一下吧
Class.isAssignableFrom(Class clz)方法 与 instanceof 关键字的区别
最近有一个银行数据漂白系统,要求操作人员在页面调用远端Linux服务器的shell,并将shell输出的信息保存到一个日志文件,前台页面要实时显示日志文件的内容.这个问题难点在于如何判断哪些数据是新增加的,通过查看JDK 的帮助文档, java.io.RandomAccessFile
可以解决这个问题.为了模拟这个问题,编写LogSvr和 LogView类,LogSvr不断向mock.log日志文件写数据,而 LogView则实时输出日志变化部分的数据.
代码1:日志产生类
package com.bill99.seashell.domain.svr; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.Writer; import java.text.SimpleDateFormat; import java.util.Date; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; /** *<p>title: 日志服务器</p> *<p>Description: 模拟日志服务器</p> *<p>CopyRight: CopyRight (c) 2010</p> *<p>Company: 99bill.com</p> *<p>Create date: 2010-6-18</P> *@author Tank Zhang<tank.zhang@99bill.com> *@version v0.1 2010-6-18 */ public class LogSvr { private SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); /** * 将信息记录到日志文件 * @param logFile 日志文件 * @param mesInfo 信息 * @throws IOException */ public void logMsg(File logFile,String mesInfo) throws IOException{ if(logFile == null) { throw new IllegalStateException("logFile can not be null!"); } Writer txtWriter = new FileWriter(logFile,true); txtWriter.write(dateFormat.format(new Date()) +"\t"+mesInfo+"\n"); txtWriter.flush(); } public static void main(String[] args) throws Exception{ final LogSvr logSvr = new LogSvr(); final File tmpLogFile = new File("mock.log"); if(!tmpLogFile.exists()) { tmpLogFile.createNewFile(); } //启动一个线程每5秒钟向日志文件写一次数据 ScheduledExecutorService exec = Executors.newScheduledThreadPool(1); exec.scheduleWithFixedDelay(new Runnable(){ public void run() { try { logSvr.logMsg(tmpLogFile, " 99bill test !"); } catch (IOException e) { throw new RuntimeException(e); } } }, 0, 5, TimeUnit.SECONDS); } }
代码2:显示日志的类
package com.bill99.seashell.domain.client; import java.io.File; import java.io.IOException; import java.io.RandomAccessFile; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; public class LogView { private long lastTimeFileSize = 0; //上次文件大小 /** * 实时输出日志信息 * @param logFile 日志文件 * @throws IOException */ public void realtimeShowLog(File logFile) throws IOException{ //指定文件可读可写 final RandomAccessFile randomFile = new RandomAccessFile(logFile,"rw"); //启动一个线程每10秒钟读取新增的日志信息 ScheduledExecutorService exec = Executors.newScheduledThreadPool(1); exec.scheduleWithFixedDelay(new Runnable(){ public void run() { try { //获得变化部分的 randomFile.seek(lastTimeFileSize); String tmp = ""; while( (tmp = randomFile.readLine())!= null) { System.out.println(new String(tmp.getBytes("ISO8859-1"))); } lastTimeFileSize = randomFile.length(); } catch (IOException e) { throw new RuntimeException(e); } } }, 0, 1, TimeUnit.SECONDS); } public static void main(String[] args) throws Exception { LogView view = new LogView(); final File tmpLogFile = new File("mock.log"); view.realtimeShowLog(tmpLogFile); } }
执行LogSvr类,LogSvr类会启动一个线程,每5秒钟向mock.log日志文件写一次数据,然后再执行LogView类,LogView每隔1秒钟读一次,如果数据有变化则输出变化的部分.
结果输出:
2010-06-19 17:25:54 99bill test !
2010-06-19 17:25:59 99bill test !
2010-06-19 17:26:04 99bill test !
2010-06-19 17:26:09 99bill test !
2010-06-19 17:26:14 99bill test !
2010-06-19 17:26:19 99bill test !
PS:
代码修改过, 有朋友下载了我的代码,说如果是中文会乱码,将日志输出类的第30行的代码
System.out.println(tmp)改成 System.out.println(new String(tmp.getBytes("ISO8859-1"))),就会正常显示中文.
评论
33 楼
dx_meng
2016-09-22
楼主,也求一份356878812@qq.com,小女子也学习一下,谢谢。
32 楼
青春de诺言
2016-07-20
楼主,您好!麻烦发我一份学习下 fangyb@bytter.com 谢谢!
31 楼
tblovecj
2016-02-22
亲爱的楼主,请发一份来学习下,谢谢
tangben_slkj@126.com
tangben_slkj@126.com
30 楼
zifanglian
2015-08-10
楼主您好,我现在也想用这个框架实时在前台展示日志信息,麻烦您给我也发一份,谢谢了!
邮箱:zifanglian@163.com
邮箱:zifanglian@163.com
29 楼
cuiyiping
2014-12-12
楼主,把日志显示在前台页面的代码能否发我一份。418409893@qq.com
28 楼
zhaofangtao
2014-10-28
这是打印到system控制台。请问打印到界面比如Lable组件上,该如何输出?
貌似Lable组件传入run方法中后会报错。
貌似Lable组件传入run方法中后会报错。
27 楼
jason_3345
2014-10-28
楼主可否发份给我
jack68_hn@163.com
jack68_hn@163.com
26 楼
sunnylocus
2014-08-19
jokerQin 写道
sunnylocus 写道
jokerQin 写道
楼主我现在要把日志显示在前台页面,这样应该怎么处理呢?
很简单呀,用ajax技术每隔一秒请求服务端,服务端把上次插入的日志信息取出来,response到前端。有个数据漂白项目里用了这种方式,我看看代码还能不能找到。
麻烦楼主了
项目在移动硬盘里放着,你给我个邮箱,我回家找到后发你邮箱里
25 楼
huangyungang
2014-08-19
楼主,麻烦发一份,huangyungang@hotmail.com
24 楼
jokerQin
2014-08-18
sunnylocus 写道
jokerQin 写道
楼主我现在要把日志显示在前台页面,这样应该怎么处理呢?
很简单呀,用ajax技术每隔一秒请求服务端,服务端把上次插入的日志信息取出来,response到前端。有个数据漂白项目里用了这种方式,我看看代码还能不能找到。
麻烦楼主了
23 楼
sunnylocus
2014-08-18
jokerQin 写道
楼主我现在要把日志显示在前台页面,这样应该怎么处理呢?
很简单呀,用ajax技术每隔一秒请求服务端,服务端把上次插入的日志信息取出来,response到前端。有个数据漂白项目里用了这种方式,我看看代码还能不能找到。
22 楼
jokerQin
2014-08-18
楼主我现在要把日志显示在前台页面,这样应该怎么处理呢?
21 楼
a136709853
2014-08-08
楼主你好!请问怎么做实时监控telnet或tn3270中的操作并实时显示在网页控件(如用Swing界面的形式进行打印)中。如果有相关资料麻烦发我邮箱136709853@qq.com,谢谢。
20 楼
hxsyewlink
2014-06-23
多谢lz分享,我也遇到了这个问题,学习一下
19 楼
moxiuer
2013-11-15
你好,我现在需要把日志的错误信息,用Swing界面的形式进行打印,想知道怎么做呢?我一直打印不出来呢
18 楼
yuanji
2013-11-07
请教一下楼主,对于远程系统的监控,如果实时数据接收速度超过处理程序的速度,应当如何处理比较好。目前采用socket接收,并new新线程处理,导致线程处理来不及,产生过多线程致使系统内存溢出。
17 楼
竹子风
2013-04-28
楼主,挺不错的,很感兴趣的,能否发我一份,谢谢。
jasonk2010@163.com
jasonk2010@163.com
16 楼
carol_ji
2013-04-22
写得非常好,对我很有用,
楼主我现在做的是个自动化测试的工具,要把日志显示在前台页面。
你那用Ajax每隔一秒取新增长的信息,然后显示在页面的代码,能不能发给我一份。非常感谢。
ryj_jch@163.com
楼主我现在做的是个自动化测试的工具,要把日志显示在前台页面。
你那用Ajax每隔一秒取新增长的信息,然后显示在页面的代码,能不能发给我一份。非常感谢。
ryj_jch@163.com
15 楼
medicine
2013-04-06
不错!
14 楼
小岛人张璐
2013-01-07
sunnylocus 写道
奇迹海 写道
楼主,看了下你描述的功能正和我现在想实现的类似。可是我的是要实时输出到页面上,该怎么做?
这个简单呀,我做过,用ajax每隔一称钟获取新增长的信息,然后显示到页面就可以了。手里有源代码,需要的话发到你邮箱里。
楼主你好,我现在手上有一个类似的东西要做,但我刚刚接触不太会,希望您帮忙发一份代码,谢谢了。fortune1989@sohu.com
发表评论
-
人在江湖:如何用代码保护自己
2011-10-12 16:30 11434现在上一点规模的 ... -
Spring freemarker页面乱码解决
2011-01-13 11:56 7566在开发过程中遇到乱码十分的头痛,如果你在开发过程中也遇 ... -
数据漂白算法研究
2010-12-07 18:05 3830你的手机是不是 ... -
理解使用static import 机制
2010-11-09 08:48 3237J2SE 1.5里引入了“Sta ... -
理解多线程设计模式
2010-11-08 17:43 10549多线程设计模式:1.Single Threaded Execu ... -
理解ThreadLocal
2010-11-03 17:04 1967ThreadLocal是什么 早在JDK 1 ... -
经验总结:高性能的数据同步
2010-11-03 10:03 6457最近在做一个银行的生产数据脱敏系统,今天写代码时遇到 ... -
用JSSE实现网络安全通信
2010-06-25 15:11 3900在网络上信息由源主机到目标主机要经过很多路由和计算机, ... -
Junit测试private方法
2010-04-28 14:09 8077package com.bill99.junit; pu ... -
保护眼睛的豆沙色
2010-03-19 09:46 3602作我们IT这行的,一天要盯着电脑看,时间长了眼睛会感觉发酸 ... -
中国联通短信网关接入程序源代码(SGIP1.2协议)
2010-01-11 12:23 43307自从我发了博文“中国联通SP业务开发总结”后有很多的朋友问 ... -
Class.isAssignableFrom(Class clz)方法 与 instanceof 关键字的区别
2009-12-24 13:14 67560原地址:http://topic.csdn.net/t/200 ... -
非阻塞通信
2009-12-03 11:43 4670对于用ServerSocket和Socket写的服务 ... -
处理线程泄露
2009-12-01 15:10 8629当一个单线程化 ... -
在Timer和ScheduledExecutorService间决择
2009-11-27 10:25 13430java.util.Timer计时器有管理任务延迟执行(& ... -
Socket通信模式:收发线程互斥
2009-11-14 19:09 8784有做过通信程序或着短信接入程序的程序员都知道,与之 ... -
ASCII码对照表
2009-11-12 11:26 2600ASCII表 ASCII值 控制字符 ASC ... -
java.net.SocketException: Software caused connection abort: recv failed 异常分析
2009-11-12 11:01 15827java.net.SocketException: Softw ... -
用State模式减少if..elseif语句
2009-11-03 17:20 7130我们在写程序的过 ... -
HttpURLConnection设置网络超时
2009-10-29 17:30 9513Java中可以使用HttpURLConnection来请 ...
相关推荐
基于springboot+Javaweb的二手图书交易系统源码数据库文档.zip
Linux课程设计.doc
课程考试资源描述 本资源是为应对各类课程考试而精心准备的综合性学习包。它包含了多门学科的考试指南、历年真题、模拟试题以及详细的答案解析。这些资源旨在帮助学生系统复习课程内容,理解考试要点,提高解题技巧,从而在考试中取得优异成绩。 资源中不仅包含了基础的考试资料,还特别加入了考试技巧讲解和备考策略分析。学生可以通过这些资源了解不同题型的解题方法和思路,学会如何在有限的时间内高效答题。此外,还有针对弱项科目和难点的专项训练,帮助学生攻克学习瓶颈。 为了确保资源的时效性和准确性,我们会定期更新考试资料和模拟试题,及时反映最新的考试动态和趋势。同时,也提供了在线交流平台,方便学生之间互相讨论、分享学习心得。 项目源码示例(简化版,Python) 以下是一个简单的Python脚本示例,用于生成包含选择题和答案的模拟试题: python import random # 定义选择题题库 questions = [ {"question": "Python的创始人是谁?", "options": ["A. 林纳斯·托瓦兹", "B. 巴纳姆", "C. 比尔·盖茨", "D.
基于 MySQL+Django 实现校园食堂点餐系统。 主要环境: PowerDesigner MySQL Workbench 8.0 CE Python 3.8 Django 3.2.8 BootStrap 3.3.7 Django-simpleui
基于SpringBoot的同城宠物照看系统源码数据库文档.zip
GEE训练教程
基于springboot+Web的心理健康交流系统源码数据库文档.zip
微信小程序 kotlin 实践微信插件助手, 目前支持抢红包(支持微信最新版本 7.0.0及7.0.3).zip
N32G45X运放电路检测电压
梦幻西游道人是梦幻西游里面的一个NPC,主要是刷全服最实惠的高级兽决和其他很好用的比较贵的东西,在长安城、傲来国、长寿村中的任意一个场景出现,一般会出现30分钟,不过东西一般都被秒刷。 梦幻西游道人出现时间解析如下: 1.梦幻西游道人出现时间一直都保持着一年出现两次的规律,即2、3月份的元宵节期间来一次,9月份的教师节期间出现一次。 2.云游道人每个整点(0:00至7:00不出现)会在长安城、傲来国、长寿村中的任意一个场景出现,每次出现后停留时间为30分钟。
tables-3.7.0-cp38-cp38-win_amd64.whl
基于springboot旧物回收管理系统源码数据库文档.zip
MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。在存储引擎方面,使用XtraDB(英语:XtraDB)来代替MySQL的InnoDB。 本文档介绍了MariaDB 10.1的集群部署,至少三台机器做成集群,每台可以同时提供读和写,感兴趣的小伙伴们可以参考一下
内容概要:本文档全面介绍了JavaScript作为一种轻量级的、解释型的语言及其在前端开发中的广泛应用。从JavaScript的基本概念出发,详尽讲解了基础语法(如变量、数据类型、运算符、流程控制)、函数和闭包、对象和原型、DOM操作(如获取、修改、添加和删除元素)、事件处理(如事件监听器、事件对象)、AJAX与Fetch API、ES6+的新特性(如箭头函数、模板字符串、解构赋值)以及前端框架和库(React、Vue、Angular)。除此之外,文章还涉及了代码优化技巧(如减少DOM操作、选择适当的算法和数据结构、使用工具提升代码性能),并对JavaScript的应用场景和发展趋势进行了展望。 适用人群:适用于初学者或具有少量编程经验的学习者,旨在帮助他们系统掌握JavaScript基础知识和前沿技术。 使用场景及目标:通过本教程的学习,读者不仅可以学会基本语法,还能理解并掌握高级概念和技术,如DOM操纵、事件处理机制、异步编程及最新的ECMAScript规范。这不仅有助于改善用户体验、增强网站互动性和响应速度,也能有效提升自身的编码水平和项目开发能力。 其他说明:此文档不仅涵盖了JavaScript的传统功能,还有现代前端技术和最佳实践指导,确保读者能够紧跟行业发展步伐,成为合格甚至优秀的Web开发人员。
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过严格测试运行成功才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
基于springboot高考志愿智能推荐系统源码数据库文档.zip
经典-FPGA时序约束教程
mcu交互实验整体文件
Collins COBUILD (CN).mdx
自定义springboot starter