- 博客(24)
- 资源 (22)
- 收藏
- 关注
原创 spring容器在初始化Bean时前和后的操作
在某些情况下,Spring容器在初始化Bean的时候,希望在初始化bean前和销毁bean前进行一些资源的加载和释放的操作。可以通过一下三种方式完成。Bean的方法加上@PostConstruct和@PreDestroy注解在xml中定义init-method和destory-method方法Bean实现InitializingBean和DisposableBean接口@PostConstru
2017-06-23 21:49:09 4825
原创 Spring中注入List Set Map Properties的配置文件
对于Spring中注入List Set Map Properties的配置文件如下:<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
2017-06-23 21:22:15 3441
原创 小车相关的
就是那serial1 改成serial2还有一个就是serialEvent1 改成serialEvent2dealy_time 调节速度的,越大越快
2017-06-21 09:00:13 481
原创 quartz与spring4整合的第一种方式
近日项目开发中需要执行一些定时任务,借此机会整理了一下定时任务的几种实现方式,由于项目采用spring框架,所以我都将结合spring框架来介绍。分类从实现的技术上来分类,目前主要有三种技术Java自带的java.util.Timer类,这个类允许你调度一个java.util.TimerTask任务。使用这种方式可以让你的程序按照某一个频度执行,但不能在指定时间运行。一般用的较少,这篇文章将不做
2017-06-19 17:22:19 5484
原创 Spring Context 工具类
在web的开发过程中,有时需要获取在beans中配置的bean.使用下面的方式可以实现.Spring Context 工具类@Componentpublic class SpringContextUtils implements ApplicationContextAware { public static ApplicationContext applicationContext;
2017-06-19 13:46:24 841
原创 spring更好的处理泛型
由于泛型擦除,使得Generic无法获取自己的Generic的Type类型。实际上BadClass()实例化以后Class里面就不包括T的信息了,对于Class而言T已经被擦拭为Object,而真正的T参数被转到使用T的方法(或者变量声明或者其它使用T的地方)里面(如果没有那就没有存根),所以无法反射到T的具体类别,也就无法得到T.class。* 而getGenericSuperclass()是Ge
2017-06-18 22:53:54 3312
原创 spring定时任务的用法
Spring Task,可以将它比作一个轻量级的Quartz,而且使用起来很简单,除spring相关的包外不需要额外的包,而且支持注解和配置文件两种.XML配置文件方式编写作业类就是即普通的Java类,如下, * 定时任务1import java.util.Date;public class TaskJob { public void myMethod() { Syst
2017-06-18 20:21:41 985 4
原创 Spring中线程池的用法
多线程并发处理起来通常比较麻烦,如果你使用spring容器来管理业务bean,事情就好办了多了。spring封装了java的多线程的实现,简化了开发。简单的Hello程序需要执行的线程类一般是对于业务的封装.将具体的业务逻辑放到,线程内执行。public class MessagePrinterTask implements Runnable { private String messag
2017-06-18 19:35:14 1327
原创 ThreadPoolExecutor的参数介绍
ThreadPoolExecutor的介绍线程池类为java.util.concurrent.ThreadPoolExecutor,常用构造方法为:ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit u
2017-06-18 17:16:30 890
原创 ListenableFutureTask的异步回调
Java在JDK1.6提供了Future,FutureTask,ExecutorService等用于支持异步编程,但是Future,FutureTask没有提供Callback机制,只能主动轮询,通过get去获取结果。Spring的ListenableFutureTask对此做了扩展,支持callback机制。使得编程变得更加的简单。测试代码import java.util.concurrent.
2017-06-18 16:23:31 4633
原创 好的博客地址
在学习过程中,遇到的好的博客地址。记录下来方便以后学习.好的博客地址http://blog.csdn.net/pistolove/article/details/51428562http://www.cnblogs.com/chenpi/category/778984.html http://www.cnblogs.com/nick-huang/p/4848843.html
2017-06-18 11:02:35 472
转载 Guava ListenableFuture实现异步非阻塞调用
为了保证系统响应迅速,需要寻找一种方法能够使调取接口能够异步执行,而Java正好提供了类似的方法,在java.util.concurrent中包含了Future相关的类,运用其中的一些类可以进行异步计算,以减少主线程的等待时间。比如启动一个main方法,main中又包含了若干个其它任务,在不使用Java future的情况下,main方法中的任务会同步阻塞执行,一个执行完成后,才能去执行另一个;如果
2017-06-18 10:52:35 4247 1
原创 Quartz将定时任务持久化到数据库
如果用内存记录定时任务信息,应用重新启动后,定时任务信息将会丢失。比如,用户A通过系统设置1小时后执行Z操作,设置好后的,因系统重新启动,新启动的系统将会丢失“1小时后执行Z操作”的定时任务。如果,我们需要在系统意外(或非意外)重新启动后,仍保留定时任务信息,可以使用数据库存储定时任务信息。优秀的参考文章Lesson 9: Job Stores用数据库存储定时任务信息在上一节就到的quartz的简
2017-06-17 19:46:03 6397
原创 Quartz的搭建和在Web中的使用
Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的程序。Quartz是一个完全由Java编写的开源作业调度框架,为在Java应用程序中进行作业调度提供了简单却强大的机制。Quartz允许开发人员根据时间间隔来调度作业。它
2017-06-17 19:24:37 5220 1
原创 Java主线程等待线程池所有任务完成--线程池的封装
用线程池编写多线程程序时,当所有任务完成时,要做一些统计的工作。而统计工作必须要在所有任务完成才能做。所以要让主线程等待所有任务完成。可以使用ThreadPoolExecutor.awaitTermination(long timeout, TimeUnit unit)。封装的线程池public interface BaseExecutor { /** * @Title: init
2017-06-14 17:07:31 4677 1
原创 Java主线程等待子线程执行完毕-CountDownLatch
主线程代码//Main主线程 publicclassMainThread { publicstaticvoid main(String[] args) throwsInterruptedException { longstartTime = System.currentTimeMillis(); intthreadNum = 5;//线程数
2017-06-14 16:54:47 465
转载 Guava中的RateLimiter
昨天CodeReview的时候看到同时使用RateLimiter这个类用作QPS访问限制.学习一下这个类.RateLimiter是Guava的concurrent包下的一个用于限制访问频率的类.1.限流每个API接口都是有访问上限的,当访问频率或者并发量超过其承受范围时候,我们就必须考虑限流来保证接口的可用性或者降级可用性.即接口也需要安装上保险丝,以防止非预期的请求对系统
2017-06-14 16:25:10 706
原创 Guava中Cache的使用
缓存的主要作用是暂时在内存中保存业务系统的数据处理结果,并且等待下次访问使用。在日常开发的很多场合,由于受限于硬盘IO的性能或者我们自身业务系统的数据处理和获取可能非常费时,当我们发现我们的系统这个数据请求量很大的时候,频繁的IO和频繁的逻辑处理会导致硬盘和CPU资源的瓶颈出现。缓存的作用就是将这些来自不易的数据保存在内存中,当有其他线程或者客户端需要查询相同的数据资源时,直接从缓存的内存块中返回数
2017-06-14 14:39:20 2110
原创 Guava中Splitter和Joiner的用法
字符串的分隔和连接是一个常用的操作.Guava提供了Spliiter和Joiner来帮助我们简化开发。Splitter的用法基本用法测试代码public static void main(String[] args) { String str = "a,b, c,,d"; Iterable<String> result = Splitter.on(',')/
2017-06-14 13:58:26 4255
原创 Throwables帮你抛出异常,处理异常
Guava类库中的Throwables提供了一些异常处理的静态方法,这些方法的从功能上分为两类,一类是帮你抛出异常,另外一类是帮你处理异常。也许你会想:为什么要帮我们处理异常呢?我们自己不会抛出异常吗?假定下面的方法是我们要调用的方法。public void doSomething() throws Throwable { //ignore method body}public void
2017-06-14 11:09:31 4330 1
原创 Guava中的TypeToken,解决泛型运行时类型擦除的问题
关于对于Type的理解泛型是一种类型 关于Type,是一个标示接口,该标示接口描述的意义是代表所有的类型public interface Type {}Type的分类Class<T>ParameterizedType 泛型......泛型的结构public Person<T> { }public interface ParameterizedType extends Type
2017-06-14 10:56:46 3306 1
原创 Preconditions优雅的检验参数
在日常开发中,我们经常会对方法的输入参数做一些数据格式上的验证,以便保证方法能够按照正常流程执行下去。对于可预知的一些数据上的错误,我们一定要做事前检测和判断,来避免程序流程出错,而不是完全通过错误处理来保证流程正确执行,毕竟错误处理是比较消耗资源的方式。Guava类库中提供了一个作参数检查的工具类–Preconditions类, 该类可以大大地简化我们代码中对于参数的预判断和处理,让我们对方法输入
2017-06-13 20:23:49 526
原创 重写Object常用的方法
在Java中Object类是所有类的父类,其中有几个需要override的方法比如equals,hashCode和toString等方法。 Guava也提供了提供了覆写这几个方法的工具类。equals方法的介绍equals是一个经常需要覆写的方法, 可以查看Object的equals方法注释, 对equals有几个性质的要求: 1. 自反性reflexive:任何非空引用x,x.equals(x
2017-06-13 20:01:04 1832
原创 Properties配置文件数据加密
在一些情况下,需要对properties中的配置数据进行加密。比如Mysql数据库的密码,不应该以明文的形式直接保存在properties中,应该以密文的形式保存.PropertiesUtil用于读取properties配置文件的数据,并且将加密的密文进行解密./** * Parsing The Perperties Configuration File */public final cla
2017-06-10 16:58:42 4394 3
mybatis开发jar大全
2016-11-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人