• 任务调度


    <!-- applicationContext.xml 中配置 -->
    
    
    
    <!-- 任务调度 -->
        <bean name="TaskJob" class="org.springframework.scheduling.quartz.JobDetailBean">  
            <property name="jobClass" value="cn.gov.bjkepu.www.manage.base.task.job.TaskJob" />  
        </bean>
        
        <!-- 定义任务调度 触发时间 --> 
        <bean id="doTaskTime" class="org.springframework.scheduling.quartz.CronTriggerBean"> 
            <property name="jobDetail"> 
                <ref bean="TaskJob"/> 
            </property> 
            <!-- cron表达式 --> 
            <property name="cronExpression"> 
                <value>0 0 2 * * ?</value>
            <!--<value>0 0/1 * * * ?</value> -->
            </property> 
        </bean> 
        
         <!-- 调度器 -->
        <bean id="startQuertz" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> 
            <property name="triggers"> 
                <list> 
                    <ref bean="doTaskTime"/> 
                </list> 
            </property> 
        </bean> 
    /**
    *继承  QuartzJobBean  类   重写 executeInternal 方法
    *
    */
    
    package cn.gov.bjkepu.www.manage.base.task.job;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.InputStream;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.List;
    import java.util.Properties;
    
    import org.quartz.JobExecutionContext;
    import org.quartz.JobExecutionException;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.scheduling.quartz.QuartzJobBean;
    
    import com.mysql.jdbc.Connection;
    import com.mysql.jdbc.PreparedStatement;
    
    import cn.gov.bjkepu.www.manage.base.task.model.TTask;
    import cn.gov.bjkepu.www.util.dao.UtilDao;
    import cn.gov.bjkepu.www.util.service.UtilService;
    
    /**
     * 业务任务Job
     * @author zxj
     */
    @SuppressWarnings("all")
    public class TaskJob extends QuartzJobBean {
        
        private Connection getConnection(){
            try {
                Properties pro = new Properties();
                InputStream ipt = new FileInputStream(new File(this.getClass().getResource("/jdbc.properties").toURI()));
                pro.load(ipt);
                // 装入数据库特定的驱动器  
                Class.forName(pro.getProperty("jdbc.driverClassName"));  
                String user = pro.getProperty("jdbc.username");
                String password = pro.getProperty("jdbc.password");
                String url = pro.getProperty("jdbc.url");
                // 与数据库建立连接  
                return (Connection)DriverManager.getConnection(url ,user ,password);
            } catch (Exception e) {
                e.printStackTrace();
                return null;
            }
        }
        
        @Override
        protected void executeInternal(JobExecutionContext arg0)throws JobExecutionException {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            Date currentTime = new Date();
            System.out.println(sdf.format(System.currentTimeMillis())+"任务调度开始!");
            
            Connection conn = this.getConnection();
            PreparedStatement pst = null;
            try {
                if (conn != null){
                    pst = (PreparedStatement) conn.prepareStatement("update t_task set task_state = 2 where now() > end_time and is_dele = 0 and task_state != 2");
                    pst.execute();
                    System.out.println(sdf.format(System.currentTimeMillis())+"成功结束"+pst.getUpdateCount()+"条任务");
                    pst = (PreparedStatement) conn.prepareStatement("update t_task set task_state = 1 where now() > start_time and now() < end_time and is_dele = 0 and task_state != 1");
                    pst.execute();
                    System.out.println(sdf.format(System.currentTimeMillis())+"成功开启"+pst.getUpdateCount()+"条任务");
                    
                    
                    pst = (PreparedStatement) conn.prepareStatement("update d_pro_type set state=2 where now()>end_time and is_dele=0 and state!=2");
                    pst.execute();
                    System.out.println(sdf.format(System.currentTimeMillis())+"成功结束"+pst.getUpdateCount()+"条任务");
                    pst = (PreparedStatement) conn.prepareStatement("update d_pro_type set state=1 where  now()>start_time and now()<end_time and is_dele=0 and state!=1");
                    pst.execute();
                    System.out.println(sdf.format(System.currentTimeMillis())+"成功开启"+pst.getUpdateCount()+"条任务");
                    
                    
                    
                }
            } catch (Exception e) {
                e.printStackTrace();
            } finally{
                try {
                    pst.close();
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            System.out.println(sdf.format(System.currentTimeMillis())+"任务调度结束!");
        }
    
    }
    这种比较灵活   配置文件直接找到类中的方法实现调度  
    
    
    配置文件中-------->>
    
    <!-- 任务调度对象 -->
        <bean id="taskQuertz" autowire="no" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> 
            <property name="targetObject">
                <ref bean="taskService"/>
            </property>
            <property name="targetMethod">
                <value>startOrEnd</value>
            </property>
        </bean> 
        <!-- 定义任务调度 触发时间 --> 
        <bean id="doTaskTime" class="org.springframework.scheduling.quartz.CronTriggerBean"> 
            <property name="jobDetail"> 
                <ref bean="taskQuertz"/> 
            </property> 
            <!-- cron表达式 --> 
            <property name="cronExpression"> 
                <value>0 0 23 * * ?</value>
            </property> 
        </bean> 
    
      
        

      <!-- 调度器 -->
      <bean id="startQuertz" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
      <property name="triggers">
      <list>
        <ref bean="doTaskTime"/>
        <ref bean="doAssessmentTimeOne"/>
        <ref bean="doAssessmentTimeTwo"/>
        <ref bean="doAssessmentTimeThree"/>
        <ref bean="doXwqybzhService"/>
      <!-- 统计分析r语言出图 -->
      <!--首页统计数据 -->
        <ref bean="doIndexDataService"/>
        <ref bean="doIndexDataService2"/>
      </list>
      </property>
      </bean>

    
    
    调度方法 ------->>
    
    
    package com.xcaj.www.manage.taskSet.service.impl;
    
    import java.text.SimpleDateFormat;
    import java.util.ArrayList;
    import java.util.Date;
    import java.util.List;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    import org.springframework.transaction.annotation.Propagation;
    import org.springframework.transaction.annotation.Transactional;
    
    import com.xcaj.www.manage.assessment.assessmentOne.model.TAssessmentOne;
    import com.xcaj.www.manage.assessment.assessmentOne.model.TOfficeScoreOne;
    import com.xcaj.www.manage.assessment.assessmentOne.model.TStandardScoreOne;
    import com.xcaj.www.manage.assessment.assessmentThree.model.TAssessmentThree;
    import com.xcaj.www.manage.assessment.assessmentThree.model.TStandardScoreThree;
    import com.xcaj.www.manage.assessment.assessmentTwo.model.TAssessmentTwo;
    import com.xcaj.www.manage.assessment.assessmentTwo.model.TOfficeScoreTwo;
    import com.xcaj.www.manage.assessment.assessmentTwo.model.TStandardScoreTwo;
    import com.xcaj.www.manage.dictionary.annual.model.DAnnual;
    import com.xcaj.www.manage.performanceAppraisal.model.TCheckTask;
    import com.xcaj.www.manage.performanceAppraisal.model.TSafetyInformation;
    import com.xcaj.www.manage.taskSet.model.TTask;
    import com.xcaj.www.manage.taskSet.service.TaskService;
    import com.xcaj.www.manage.weekCheck.model.Ledger;
    import com.xcaj.www.manage.workCount.model.TAccidentDetail;
    import com.xcaj.www.manage.workCount.model.TAccidentSituation;
    import com.xcaj.www.manage.workCount.model.TEnforceCheck;
    import com.xcaj.www.manage.workCount.model.TStatisticsForm;
    import com.xcaj.www.util.dao.UtilDao;
    /**
     * 任务接口实现类
     * @author zhaohu
     * @date 2014年11月12日 15:45:19
     */
    @Service("taskService")
    public class TaskServiceImpl implements TaskService {
        @Autowired
        private UtilDao utilDao;
        
        /**
         * 任务保存方法
         */
        @Transactional(propagation = Propagation.REQUIRED, rollbackFor = java.lang.Exception.class)
        public void saveTask(String taskTypeFlag, TTask task, String feyTaskId, String yearId,String batch, String startTimeStr, String endTimeStr,String weekNameStart,String weekNameEnd,String weeks,String planReportStr)throws Exception {
            SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
            task.setTaskType(Integer.parseInt(taskTypeFlag.trim()));
            if("9".equals(taskTypeFlag) || "10".equals(taskTypeFlag)){
                if(feyTaskId != null && !"".equals(feyTaskId)){
                    TTask fkTask = (TTask) this.utilDao.getObjectById(TTask.class, feyTaskId);
                    if(fkTask != null && !"".equals(fkTask)){
                        task.setFkTaskId(fkTask);
                    }
                }
            }
            DAnnual year = (DAnnual) this.utilDao.getObjectById(DAnnual.class, yearId.trim());
            if(year != null && !"".equals(year)){
                task.setFkYearId(year);
                if(batch != null && !"".equals(batch)){
                    task.setTaskFlag(year.getAnnualCode()+batch);//taskFlag
                    task.setMonth(Integer.parseInt(batch));
                }else {
                    task.setTaskFlag(year.getAnnualCode()+"01");//taskFlag
                }
            }
            //当前时间
            Date currentTime = new Date();
            //开始时间
            Date startTime = format.parse(startTimeStr);
            //结束时间
            Date endTime = format.parse(endTimeStr);
            if(startTime != null && endTime != null){
                if(currentTime.before(startTime)){
                    task.setTaskState(0);//未开始
                }
                if(currentTime.after(endTime)){
                    task.setTaskState(2);//已结束
                }
                if(currentTime.after(startTime)&&currentTime.before(endTime)){
                    task.setTaskState(1);//进行中
                }
                task.setStartTime(startTime);
                task.setEndTime(endTime);
            }
            task.setState(0);
            task.setCreateTime(new Date());
            task.setIsDele(0);
            
            //周报任务
            //判断任务类型
            if("11".equals(taskTypeFlag) || "12".equals(taskTypeFlag) || "13".equals(taskTypeFlag)){
                StringBuffer taskName = new StringBuffer("");
                taskName.append(weekNameStart);
                taskName.append("-");
                taskName.append(weekNameEnd);
                taskName.append("周报任务");
                task.setTaskName(taskName.toString());
                
                task.setWeekWeek(weeks);
            }
            //一日一报
            if("15".equals(taskTypeFlag) || "16".equals(taskTypeFlag) || "17".equals(taskTypeFlag)){
                task.setTaskName(weekNameStart+"一日一报任务");
                task.setWeekWeek(weeks);
                task.setPlanReport(sdf.parse(planReportStr));
                task.setTaskFlag(planReportStr);
            }
            
            this.utilDao.save(task);
        }
    
        /**
         * 任务修改方法
         */
        @Transactional(propagation = Propagation.REQUIRED, rollbackFor = java.lang.Exception.class)
        public void updateTask(String taskId, TTask task, String feyTaskId, String yearId,String batch, String startTimeStr, String endTimeStr,String weekNameStart,String weekNameEnd,String weeks,String planReportStr)throws Exception {
            SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            
            SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
            
            TTask taskOld = (TTask) this.utilDao.getObjectById(TTask.class, taskId.trim());
            if(taskOld != null && !"".equals(taskOld)){
                DAnnual year = (DAnnual) this.utilDao.getObjectById(DAnnual.class, yearId.trim());
                if(year != null && !"".equals(year)){
                    taskOld.setFkYearId(year);
                    if(batch!= null && !"".equals(batch)){
                        taskOld.setTaskFlag(year.getAnnualCode()+batch);
                        taskOld.setMonth(Integer.parseInt(batch));
                    }else {
                        taskOld.setTaskFlag(year.getAnnualCode()+"01");
                    }
                }
                
                if("11".equals(taskOld.getTaskType().toString()) || "12".equals(taskOld.getTaskType().toString())  || "13".equals(taskOld.getTaskType().toString())){
                    StringBuffer taskName = new StringBuffer("");
                    taskName.append(weekNameStart);
                    taskName.append("-");
                    taskName.append(weekNameEnd);
                    taskName.append("周报任务");
                    
                    taskOld.setTaskName(taskName.toString());
                    taskOld.setWeekWeek(weeks);
                }else if("15".equals(taskOld.getTaskType().toString()) || "16".equals(taskOld.getTaskType().toString())  || "17".equals(taskOld.getTaskType().toString())){
                    taskOld.setTaskName(weekNameStart+"一日一报任务");
                    taskOld.setWeekWeek(weeks);
                    taskOld.setPlanReport(sdf.parse(planReportStr));
                    taskOld.setTaskFlag(planReportStr);
                }else{
                    taskOld.setTaskName(task.getTaskName());
                }
                
                if("9".equals(taskOld.getTaskType()) || "10".equals(taskOld.getTaskType())){
                    if(feyTaskId != null && !"".equals(feyTaskId)){
                        TTask fkTask = (TTask) this.utilDao.getObjectById(TTask.class, feyTaskId);
                        if(fkTask != null && !"".equals(fkTask)){
                            task.setFkTaskId(fkTask);
                        }
                    }
                }
            
                //当前时间
                Date currentTime = new Date();
                //开始时间
                Date startTime = format.parse(startTimeStr);
                //结束时间
                Date endTime = format.parse(endTimeStr);
                if(startTime != null && endTime != null){
                    if(currentTime.before(startTime)){
                        taskOld.setTaskState(0);//未开始
                    }
                    if(currentTime.after(endTime)){
                        taskOld.setTaskState(2);//已结束
                    }
                    if(currentTime.after(startTime)&&currentTime.before(endTime)){
                        taskOld.setTaskState(1);//进行中
                    }
                    taskOld.setStartTime(startTime);
                    taskOld.setEndTime(endTime);
                }
                taskOld.setUpdateTime(new Date());
                this.utilDao.update(taskOld);
            }
        }
    
        /**
         * 设置任务管理端状态
         */
        @Transactional(propagation = Propagation.REQUIRED, rollbackFor = java.lang.Exception.class)
        public void setState(String taskId, String stateVal) throws Exception {
            TTask taskOld = (TTask) this.utilDao.getObjectById(TTask.class, taskId.trim());
            if(taskOld != null && !"".equals(taskOld)){
                if(stateVal != null && "0".equals(stateVal)){
                    taskOld.setState(0);
                }else if(stateVal != null && "1".equals(stateVal)){
                    taskOld.setState(1);
                }
                taskOld.setUpdateTime(new Date());
                this.utilDao.update(taskOld);
            }
        }
        /**
         * 任务删除方法
         */
        @SuppressWarnings("all")
        @Transactional(propagation = Propagation.REQUIRED, rollbackFor = java.lang.Exception.class)
        public void delTask(String idStr,String taskTypeFlag) throws Exception {
            TTask taskOld = null;
            String[] ids = idStr.split(",");
            if(ids != null && ids.length > 0){
                for (String id : ids) {
                    taskOld = (TTask) this.utilDao.getObjectById(TTask.class, id.trim());
                    if(taskOld != null && !"".equals(taskOld)){
                        taskOld.setIsDele(1);
                        this.utilDao.update(taskOld);
                    }
                    //删除工作统计任务
                    if("1".equals(taskTypeFlag) || "2".equals(taskTypeFlag) || "3".equals(taskTypeFlag)){
                        //删除所属任务的统计单
                        List<TStatisticsForm> formList = (List<TStatisticsForm>) utilDao.getHqlAll(" from TStatisticsForm t left join fetch t.fkTaskId f where t.isDele = 0 and f.id = '"+id+"'  ");
                        if(formList.size()>0){
                            for(TStatisticsForm form : formList){
                                //删除所属统计单的执法检查表
                                List<TEnforceCheck> checkList = (List<TEnforceCheck>) utilDao.getHqlAll(" from TEnforceCheck t left join fetch t.fkStatisticsFormId f where t.isDele = 0 and f.id = '"+form.getId()+"' ");
                                if(checkList != null && checkList.size()>0){
                                    for(TEnforceCheck check : checkList){
                                        utilDao.delete(check);
                                    }
                                }
                                List<TAccidentSituation> accidentSituationList = (List<TAccidentSituation>) utilDao.getHqlAll(" from TAccidentSituation t left join fetch t.fkStatisticsFormId where t.isDele = 0 and t.fkStatisticsFormId.id = '"+form.getId()+"' "); 
                                if(accidentSituationList != null && accidentSituationList.size()>0){
                                    for(TAccidentSituation situ : accidentSituationList){
                                        List<TAccidentDetail> detailList = (List<TAccidentDetail>) utilDao.getHqlAll(" from TAccidentDetail t left join fetch t.fkAccidentSituationId where t.isDele = 0 and t.fkAccidentSituationId.id = '"+situ.getId()+"' ");
                                        //删除事故详细表
                                        for(TAccidentDetail detail :detailList){
                                            utilDao.delete(detail);
                                        }
                                        //删除事故情况表
                                        utilDao.delete(situ);
                                    }
                                }
                                utilDao.delete(form);
                            }
                        }
                    }
                    
                    //周报
                    if("11".equals(taskTypeFlag) || "12".equals(taskTypeFlag) || "13".equals(taskTypeFlag)){
                        List<Ledger> ledList = (List<Ledger>) utilDao.getHqlAll("from Ledger d where d.fkWeekId.fkTask.id = '"+id+"'");
                        for (Ledger ledger : ledList) {
                            utilDao.delete(ledger);
                        }
                        utilDao.deleteAll("update TWeek set isDele = 1 where fkTask.id = '"+id+"'");
                    }
                    
                    //一日一报
                    if("15".equals(taskTypeFlag) || "16".equals(taskTypeFlag) || "17".equals(taskTypeFlag)){
                        utilDao.deleteAll("update TDaily set isDele = 1 where fkTaskId.id = '"+id+"'");
                    }
                    
                    //删除街道对委办局考评任务
                    if("5".equals(taskTypeFlag)){
                        //循环删除
                        List<TStandardScoreThree> stanList = (List<TStandardScoreThree>) utilDao.getHqlAll("from TStandardScoreThree d where d.fkAssessmentId.fkTaskId.id = '"+id+"'");
                        for (TStandardScoreThree sst : stanList) {
                            utilDao.delete(sst);
                        }
                        
                        List<TAssessmentThree> assThree = (List<TAssessmentThree>) utilDao.getHqlAll("from TAssessmentThree where fkTaskId.id = '"+id+"'");
                        for (TAssessmentThree item : assThree) {
                            utilDao.delete(item);
                        }
                        
                    }
                    
                    //删除街道年度自评任务      ||  安委会对街道考评
                    if("8".equals(taskTypeFlag) || "7".equals(taskTypeFlag)){
                        //Type(2);   自评任务
                        List<TStandardScoreOne> stanOneList = (List<TStandardScoreOne>) utilDao.getHqlAll("from TStandardScoreOne d where d.isDele = 0 and d.fkAssessmentId.fkTaskId.id = '"+id+"'");
                        for (TStandardScoreOne tStandardScoreOne : stanOneList) {
                            utilDao.delete(tStandardScoreOne);
                        }
                        
                        List<TOfficeScoreOne> offOneList = (List<TOfficeScoreOne>) utilDao.getHqlAll("from TOfficeScoreOne d where d.isDele = 0 and d.fkTaskId.id = '"+id+"'");
                        for (TOfficeScoreOne tOfficeScoreOne : offOneList) {
                            utilDao.delete(tOfficeScoreOne);
                        }
                        
                        List<TAssessmentOne> assOneList = (List<TAssessmentOne>) utilDao.getHqlAll("from TAssessmentOne d where d.isDele = 0 and d.fkTaskId.id = '"+id+"'");
                        for (TAssessmentOne tAssessmentOne : assOneList) {
                            utilDao.delete(tAssessmentOne);
                        }
                    }
                    
                    //委办局自评任务   ||   安委会对委办局考评
                    if("6".equals(taskTypeFlag) || "4".equals(taskTypeFlag)){
                        
                        List<TStandardScoreTwo> stanTwoList = (List<TStandardScoreTwo>) utilDao.getHqlAll("from TStandardScoreTwo d where d.isDele = 0 and d.fkAssessmentId.fkTaskId.id = '"+id+"'");
                        for (TStandardScoreTwo stan : stanTwoList) {
                            utilDao.delete(stan);
                        }
                        
                        List<TOfficeScoreTwo> offTwoList = (List<TOfficeScoreTwo>) utilDao.getHqlAll("from TOfficeScoreTwo d where d.isDele = 0 and d.fkTaskId.id = '"+id+"'");
                        for (TOfficeScoreTwo offTwo : offTwoList) {
                            utilDao.delete(offTwo);
                        }
                        
                        List<TAssessmentTwo> assTwoList = (List<TAssessmentTwo>) utilDao.getHqlAll("from TAssessmentTwo d where d.fkTaskId.id = '"+id+"'");
                        for (TAssessmentTwo item : assTwoList) {
                            utilDao.delete(item);
                        }
                        
                    }
                    
                    if( "18".equals(taskTypeFlag) || "19".equals(taskTypeFlag)){
                        utilDao.deleteAll("update TSafetyInformationFileRecord set isDele = 1 where fkTaskId.id = '"+id+"'");
                    }
                    
                }
            }
        }
    
        /**
         * 开始或结束任务
         * 创建人:zxj
         * 创建时间:2015-1-28 上午10:31:18
         * @version 1.0
         */


    public void startOrEnd() throws Exception { Date now = new Date(); List<TTask> taskList = (List<TTask>) this.utilDao.getHqlAll("from TTask d where d.isDele = 0"); if(taskList != null && taskList.size() > 0){ for(TTask task : taskList){ if(now.before(task.getStartTime())){ task.setTaskState(0); }else if(now.after(task.getEndTime())){ task.setTaskState(2); }else if(now.after(task.getStartTime()) && now.before(task.getEndTime())){ task.setTaskState(1); } this.utilDao.update(task); } } List<TCheckTask> taskList2 = (List<TCheckTask>) this.utilDao.getHqlAll("from TCheckTask d where d.isDele = 0"); if(taskList2 != null && taskList2.size() > 0){ for(TCheckTask task : taskList2){ if(task.getPlanStartTime()!=null&&task.getPlanEndTime()!=null){ if(now.before(task.getPlanStartTime())){ task.setPlanState(0); }else if(now.after(task.getPlanEndTime())){ task.setPlanState(2); }else if(now.after(task.getPlanStartTime()) && now.before(task.getPlanEndTime())){ task.setPlanState(1); } } if(task.getSummaryStartTime()!=null&&task.getSummaryEndTime()!=null){ if(now.before(task.getSummaryStartTime())){ task.setSummaryState(0); }else if(now.after(task.getSummaryEndTime())){ task.setSummaryState(2); }else if(now.after(task.getSummaryStartTime()) && now.before(task.getSummaryEndTime())){ task.setSummaryState(1); } } if(task.getCheckStartTime()!=null&&task.getCheckEndTime()!=null){ if(now.before(task.getCheckStartTime())){ task.setCheckState(0); }else if(now.after(task.getCheckEndTime())){ task.setCheckState(2); }else if(now.after(task.getCheckStartTime()) && now.before(task.getCheckEndTime())){ task.setCheckState(1); } } this.utilDao.update(task); } } List<String> informationids=(List<String>) utilDao.getHqlAll("select id from TSafetyInformation where isDele=0 and isApplied=1"); if(informationids!=null&&informationids.size()>0){ for(String id:informationids){ int count=utilDao.getHqlCount("select count(*) from TMonthlyPerformanceAppraisal where isDele=0 and type=1 and state=3 and fkDafetyId.id='"+id+"'"); if(count>=2){ utilDao.updateAll("update TSafetyInformation set isApplied=0 where id='"+id+"'"); } } } }

    public static void  removeEvens(List<Integer> list){
            for(Integer x :list){
                if(x%2 == 0){
                    list.remove(x);
                }
            }
        }
        
        public static void main(String[] args) {
            List<Integer> list = new ArrayList<Integer>();
            for(int i = 0 ; i < 50 ; i++){
                list.add(i);
            }
            removeEvens(list);
        }
        
    }
        
  • 相关阅读:
    C++之用程序理解浅拷贝
    es6 | 新增语法 | 总结
    http协议 | http缓存
    Mobx | 强大的状态管理工具 | 可以用Mobx来替代掉redux
    nohup和&后台运行,进程查看及终止
    MIME Type介绍 Content-Type 各种定义
    Meta http-equiv属性详解(转)
    sublme text 3 快捷键
    【坑】【数组的坑】1、对象assign复制的假深度,2、数组slice复制的坑,3、还有数组map复制的坑
    Proxy监听对象的数据变化,处理绑定数据很有用
  • 原文地址:https://www.cnblogs.com/yang1018/p/7444763.html
Copyright © 2020-2023  润新知