当前位置: 首页 > news >正文

上海市工程建设质量管理协会网站装修案例分析

上海市工程建设质量管理协会网站,装修案例分析,上海网站建设-网建知识,辽宁建设工程信息网官网 项目经理解锁表格在文件的内容发生变动时,应用可以感知这种变种,并重新加载文件内容,更新应用内部缓存 实现 轮询:定时器Timer,ScheduledExecutorService 判断文件修改:根据java.io.File#lastModified获取文件的上次修改时…
  1. 在文件的内容发生变动时,应用可以感知这种变种,并重新加载文件内容,更新应用内部缓存

  2. 实现

    1. 轮询:定时器Timer,ScheduledExecutorService

    2. 判断文件修改:根据java.io.File#lastModified获取文件的上次修改时间,比对

    3. public class FileUpTest{private long lastTime;private void ttt(){throw new NullPointerException();}@Testpublic void testFileUpdate(){File file = new File("/tmp/alarmConfig");//首先文件的最近一次修改时间戳lastTime = file.lastModified();//定时任务,每秒来判断一下文件是否发生变动,即判断lastModified是否改变ScheduledExecutorService scheduledExcutorService = Executors.newScheduledThreadPool(1);scheduledExecutorService.scheduleAtFixedRate(new Runnable(){@Oveerridepublic void run(){if(file.lastModified() > lastTime){System.out.println("file update! time : "+ file.lastModified());lastTime = file.getlastModified();ttt();}}},0,1,TimeUnit.SECONDS);try{Thread.sleep(100*60);}catch(InterruptedException e){e.printStackTrace();}}
      }
      
    4. 使用这种的,如果定时任务执行过程中遇到发生异常,则后面的任务将不再执行

  3. apache版本

    1. <dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.6</version>
      </dependency>
      
    2. 借助工具中FileAlterationObserver,FileAlterationListener,FileAlterationMonitor三个类实现相关需求

    3. public class PropertiesConfListenerHelper{public static boolean registerConfChangeListener(File file,Function<File,Map<String,AlarmConfig>> func){try{//轮询间隔5秒long interval = TimeUnit.SECONDS.toMillis(5);//因为监听是以目录为单位进行的,所以这里直接获取文件的根目录File dir = file.getParentFile();//创建一个文件观察期用于过滤FileAlterationObserver observer = new FileAlterationObserver(dir,FileFilterUtils.and(FileFilterUtils.fileFileFilter(),FileFilterUtils.nameFileFilter(file.getName())));//设置文件变化监听器observer.addListener(new MyFileListener(func));FileAlterationMonitor monitor = new FileAlterationMonitor(interval,observer);monitor.start();return true;}catch(Exception e){log.error("register properties change listener error! e:{}",e);return false;}}static final class MyFileListener extends FileAlterationListenerAdaptor{private Function<File,Map<String,AlarmConfig>> func;public MyfileListener(Function<File,Map<String,AlarmConfig>> func){this.func = func;}@Overridepublic void onFileChange(File file){Map<String,AlarmConfig> ans = func.apply(file);//如果加载失败,打印一条日志log.warn("PropertiesConfig changed ! reload ans: {}",ans);}}
      }
      
    4. 介绍

      1. 这个文件监听,是以目录为根源,可以设置过滤器,来实现对应文件变动的监听
      2. 上面的registerConfChangeListener方法,传入的file是具体的配置文件,因此构建参数的时候,拿到目录,拿到文件名作为过滤
      3. 第二个参数是jdk1.8语法,其中为具体的读取配置文件内容,并影射为对应的实体对象
      4. 如果func方式执行时,抛出了一场,程序失败,不在运行
  4. JDK版本

    1. JDK1.7提供了一个WatchService,可以用来实现文件变动的监听

    2. @Test
      public void testFileUpWather() throws IOException{//监听必须是目录Path path = Paths.get("/tmp");WatchService watcher = FileSystems.getDefault().newWatchService();path.register(watcher,ENTRY_MODIFY);new Thread(() ->{try{while(true){WatchKey key = watcher.take();for(WatchEvent<?> event : key.pollEvents()){if(event.kind() == OVERFLOW){                        // 实践可能lost or discardedcontinue}Path fileName = (Path)event.context();System.out.println("文件更新:"+fileName);}if(!key.reset()){//重设WatchKeybreak}}}catch(Exception e){e.printStackTrace();}}).start();try{Thread.sleep(1000* 60 * 10);}catch(InterruptedException e){e.printStackTrace();}
      }
      
    3. 千万不要在定时任务或者文件变动的回调方法中抛出异常

    4. 为了避免异常断开情况,一个是可以做的实现借助EventBus的异步消息通知机制来实现,当文件变动之后,发送一个消息即可,然后在具体的重新加载文件内容的方法上,添加一个@Subscribe注解即可,这样既实现了解耦,也避免了一场导致的服务异常

http://www.yayakq.cn/news/691052/

相关文章:

  • 网站设计有哪些专业术语wordpress搬家方法
  • 深圳中建南方建设集团网站百度百科创建入口
  • 河源市网站建设公司天津建设项目招投标网站
  • 地方网站源码手机端网站尺寸
  • 佛山网页建站模板进去了
  • 深圳好的外贸网站建设佛山模板建站代理
  • 做外贸比较好用的网站买证书网站开发工程师
  • 自建站网站seo查询源码
  • 淄博周村网站建设哪家好怎么更改网站栏目id
  • 塘沽网站建设网站建设怎样布局
  • 怎么做自己的网站教程西安装修公司排名十强
  • wordpress网站使用教程如何卸载安装wordpress
  • 请简要描述如何进行网站设计规划系统管家
  • 建设农场网站卖产品怎么做网站
  • 本机可以做网站的服务器吗phpcms 视频网站模板
  • 信息类网站制作手机视频转码vue
  • 购物网站建设个人总结最差网站设计
  • 购物网站建设计划书网站制作最
  • 企业怎么做网站推广前端机构培训
  • 青岛建设银行股份有限公司网站首页广告制作费
  • 天空网站开发者90设计网站创建时间
  • 资料库网站源码wordpress难吗
  • 搭建网站费用电脑网站在哪里找
  • 长沙 外贸网站建设公司排名轻量级网站开发
  • 建设公司网站标题郴州新网招聘信息招聘频道
  • 环保网站建设说明线上商城怎么开
  • 技能训练企业网站建设可行性分析自己黑自己做的网站
  • 手机网站营销新华舆情监测平台
  • 一起做彩票网站的人vps建站教程
  • 农业开发公司好名字金融网站排名优化