• quartz 任务错过处理, java读取resource下文件,JSONObject、String、Map互相转换,Array、List、Set互转实例


    quartz 任务错过处理 [来源1] [来源2]

    采用StatefulJob,使jobDetails顺序执行,只有前一次job运行完成后,才会运行本次job;
    而多个jobDetails可以并行,互不影响,因为它们是多个线程各自运行;

    // 设置错失触发后的调度策略
    withMisfireHandlingInstructionDoNothing
    说人话: 啥也不干 下次按照原频率继续
    ——不触发立即执行
    ——等待下次Cron触发频率到达时刻开始按照Cron频率依次执行

    withMisfireHandlingInstructionIgnoreMisfires
    说人话: 错过的全部同时执行 下次按照原频率继续
    ——以错过的第一个频率时间立刻开始执行
    ——重做错过的所有频率周期后
    ——当下一次触发频率发生时间大于当前时间后,再按照正常的Cron频率依次执行

    withMisfireHandlingInstructionFireAndProceed
    说人话:立即执行 下次按照原频率继续
    ——以当前时间为触发频率立刻触发一次执行
    ——然后按照Cron频率依次执行

      triggerBuilder.withSchedule(CronScheduleBuilder.cronSchedule(cron).withMisfireHandlingInstructionDoNothing());
    

    java读取resource下文件

      public void testReadFile() throws IOException {
        Resource resource = new ClassPathResource("resource.properties");
        InputStream is = resource.getInputStream();
        InputStreamReader isr = new InputStreamReader(is);
        BufferedReader br = new BufferedReader(isr);
        String data = null;
        while((data = br.readLine()) != null) {
            System.out.println(data);
        }
        br.close();
        isr.close();
        is.close();
    }
    

    JSONObject,String,Map互相转换

      String json = JSON.toJSONString(map);//map转String
      JSONObject jsonObject = JSON.parseObject(json);//String转json
      //json转map
      Map<String, String> jsonMap = JSONObject.toJavaObject(jsonObject, Map.class);
      //String转map
      Map<String, String> jsonMap1 = JSONObject.parseObject(json, Map.class);
    

    Array、List、Set互转实例 [来源]

    Array、List

      // Array转List (对s的修改,直接影响list)
      String[] s = new String[]{"A", "B", "C", "D","E"};
      List<String> list = Arrays.asList(s);
    
      // List转Array (对list中关于元素的修改,不会影响dest)
      String[] dest = list.toArray(new String[0]);//new String[0]是指定返回数组的类型
      System.out.println("dest: " + Arrays.toString(dest));
    

    List、Set

      // 被转换的List(Set)的修改不会对被转化后的Set(List)造成影响
      // List转Set
      Set<String> set = new HashSet<>(list);
      System.out.println("set: " + set);
      // Set转List
      List<String> list_1 = new ArrayList<>(set);
      System.out.println("list_1: " + list_1);
    

    Array、Set

      // array转set
      s = new String[]{"A", "B", "C", "D","E"};
      set = new HashSet<>(Arrays.asList(s));
      System.out.println("set: " + set);
      // set转array
      dest = set.toArray(new String[0]);
      System.out.println("dest: " + Arrays.toString(dest));
    

    延伸

      上述列出的互相转换离不开Arrays.asList()和Collection.toArray()两个重要的方法;
    
      Arrays.asList()
      @SafeVarargs
        @SuppressWarnings("varargs")
        public static <T> List<T> asList(T... a) {
            return new ArrayList<>(a);
        }
      这里出现的ArrayList<>并不是我们通常使用的java.util.ArrayList,因为java.util.ArrayList没有数组作为参数的构造函数。查看对应的源码发现,其实Arrays类的静态内部类。  
      可以看到,这个由Arrays类实现的另一个Arrays$ArrayList,对于java.util.ArrayList类来讲,是比较简单粗糙的类。
    
      没有扩容机制;
    
      无法在指定位置add(int index, E element),调用该方法会抛异常;
    
      这些不同让这个ArrayList看起来实际上就是一个List-View(视图类型的List)的数组。
    
      Collection.toArray()
      List、Set的具体实现类都对Collection.toArray()方法进行了不同程度的重写,可查看源码
  • 相关阅读:
    dfs 与 剪枝
    杭电OJ1789、南阳OJ236(贪心法)解题报告
    多边形面积问题(hdoj2036)
    retain copy(浅复制) mutablecopy (深复制)
    IOS开发的目录结构
    UITableView 委托方法总结
    ios block
    UITableView 学习笔记
    iso socket基础2
    ios socket(基础demo)
  • 原文地址:https://www.cnblogs.com/cuiyf/p/14392166.html
Copyright © 2020-2023  润新知