一,JAVA性能优化之设计优化 设计优化处于性能优化手段的上层。它往往须要在软件开发之前进行。在软件开发之前,系统架构师应该就评估系统可能存在的各种...
一、Callable 与 Runnable 先说一下java.lang.Runnable吧,它是一个接口,在它里面只声明了一个run()方法: pu...
import java.util.concurrent.Callable; import java.util.concurrent.Executio...
一 架构规划 实验环境是通过SVN提交代码,使用Jenkins一键发布到测试环境进行镜像build和站点安装测试,将DOCKER镜像上传到 私有镜...
线程池原理 Java创建一个线程很方便,只需new Thread()就可以, 但是当有多个任务需要进行进行处理时,频繁的进行创建和启用线程同样需要...
抽象 解析 程序计数器 程序计数器(Program Counter Register)是JVM中一块较小的内存区域,保存着当前线程执行的虚拟机字节码...
前言 万丈高楼平地起,今天的聊点基础而又经常让人忽视的话题,比如“==”与“equals()”区别?为何当我们重写完"equals()&q...
定点爬取 当我们需要对金融行业的股票信息进行爬取的时候,由于股票的价格是一直在变化的,我们不可能手动的去每天定时定点的运行程序,这个时候我们就需要实现定点爬取了,我们引入第三方库quartz的使用: package timeutils; import org.quartz.CronTrigger; import org.quartz.JobDetail; import org.quartz.Scheduler; import org.quartz.SchedulerFactory; import org.quartz.impl.StdSchedulerFactory; import java.text.SimpleDateFormat; import java.util.Date; import static org.quartz.CronScheduleBuilder.cronSchedule; import static org.quartz.JobBuilder.newJob; import static org.quartz.TriggerBuilder.newTrigger; /** * Created by paranoid on 17-4-13. */ public class TimeUpdate { public void go() throws Exception { // 首先,必需要取得一个Scheduler的引用(设置一个工厂) SchedulerFactory sf = new StdSchedulerFactory(); //从工厂里面拿到一个scheduler实例 Scheduler sched = sf.getScheduler(); //真正执行的任务并不是Job接口的实例,而是用反射的方式实例化的一个JobDetail实例 JobDetail job = newJob(MyTimeJob.class).withIdentity("job1", "group1").build(); // 定义一个触发器,job 1将每隔执行一次 CronTrigger trigger = newTrigger().withIdentity("trigger1", "group1"). withSchedule(cronSchedule("50 47 17 * * ?")).build(); //执行任务和触发器 Date ft = sched.scheduleJob(job, trigger); //格式化日期显示格式 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH🇲🇲ss SSS"); System.out.println(job.getKey() + " 已被安排执行于: " + sdf.format(ft) + "," + "并且以如下重复规则重复执行: " + trigger.getCronExpression()); sched.start(); } public static void main(String[] args) throws Exception { TimeUpdate test = new TimeUpdate(); test.go(); } } 在上面的代码中,已经详细的给出了实现定时爬取的基本代码 JobDetail job = newJob(MyTimeJob.class).withIdentity("job1", "group1").build(); 这句代码中的MyTimeJob.class就是我们要执行的任务代码,它是通过类的反射加载机制进行运行的,之后我们设置它为第一组的第一个任务。 要使用这个第三方库我们需要了解一些cron表达式的概念,网上由于对它的说明很多,我就不再这里进行说明 ,大家可以看到: cronSchedule("50 47 17 * * ?") 我设置的是每天的17:47:50秒运行这个程序。 值得注意的是 :我们所要执行的任务必须写在execute方法之中,在下面的代码就是一个实例,也就是我们需要实现的IP代理池。 ...
使用PropertyPlaceholderConfigurer类载入外部配置 在Spring项目中,你可能需要从properties文件中读入配置注...
在职场中有的企业流失率非常高,有的公司却基本都是骨干,都是老员工,这是为什么了?任何事情都是有两面性的,员工离职率高,一方面员工有自己思考的问题,一...
你是否正打算优化hashCode()方法?是否想要绕开正则表达式?Lukas Eder介绍了很多简单方便的性能优化小贴士以及扩展程序性能的技巧。 最...
GC简单的了解   GC :Garbage Collections 字面意思是垃圾回收器,释放垃圾占用的空间。让创建的对象不需要像c、c++那样de...