- 博客(8)
- 收藏
- 关注
原创 LRU、LFU算法java实现
近期使用springboot集成ehcache实现缓存,spring还支持使用简单ConcurrentMapCache实现,底层就是用ConcurrentHashMap实现。ehcache相对来说比较重,加pom依赖下载了很长时间,但是ehcache有很多可配置的选项,其中包括缓存达到一定大小淘汰的算法的选择。包括了FIFO、LRU、LFU可以根据不同的业务场景选择。一、LRU的实现比较简单,因为j
2017-11-27 18:21:43
8218
3
原创 guava 集合
1、Multimap我们一定会接触到这样的业务产生这样的结构:map<string,<list<..>>>,有的时候可以利用面向对象的方法避开这样的写法,但是有的时候只能这样,代码结构局很不美观。Multimap可以解决。 Multimap不是map 普通的map可以多个键对应一个值,而不能多个值对应一个键。可以理解为一对多的形式。而Multimap可以做到多对多的形式。一般使用ListMult
2017-11-17 18:08:41
393
原创 guava实用小方法
一、ProconditionProcondition有点快速失败的意思,就是提前对参数进行判断约束,有异常提前抛出来。 在实际业务中,从某个bean里拿出一个为空的属性作为参数,执行了很多代码,在后面某个时机程序崩掉,使用Procondition可以在拿出可能为空的参数时进行前置判断,避免执行更多的代码,有利于定位错误信息,使程序更加健壮。1.checkArgumentcheckArgument比
2017-11-17 14:25:50
750
原创 guava的ListenableFuture使用
java中并行处理带有返回值的方法,会使用ExecutorService和future异步的从Callable获取结果。public class FutureTest { //多个任务异步执行,使用线程池,并行执行 //这里任务抽象成一组数字,线程内睡相应数字的秒数,然后利用future返回结果 //任务在for循环添加进service里,submit后就开始执行,随后get时会阻塞的拿
2017-11-16 18:21:53
649
原创 简单的map-reduce的java例子
需求是去除一个key为long型,value为元素为integer的list的map的value的值。public class test1 { public static void main(String[] args) { Map<Long, Integer> map = Maps.newHashMapWithExpectedSize(5); map.put(1l, Objec
2017-10-26 20:26:09
4078
原创 简单工厂,工厂模式,抽象工厂
学习了一下关于工厂的设计模式,写个例子整理一下,例子是生产不同厂商的鼠标,可能不太合适,记录一下想法。1.简单工厂这个模式在factory里面动态选择使用哪个类public class Factory { public static Made getMade(String o) { Made made = null; switch (o) { case "logute
2017-09-06 16:58:09
264
原创 装饰者模式简单试验
近期项目里要用到很多参数类,每个参数类都有着不同的功能,为了维护方便,抽象出一个基本的基类,然后通过继承来维护,但是每个类相差不多,想到了装饰者模式进行。由于项目改动会牵扯巨大,自己写了一个测试。给一顿餐加食物,例子可能不是很形象。 面对这种逐渐多的子类需求,可能会很乱,装饰者是一种代替生成子类的方式动态的给对象增加功能的设计模式。抽象基类:public abstract class Meal {
2017-09-04 16:16:36
278
原创 spring-boot第一次搭建使用
个人理解:spring-boot作为spring的一个分支,主要用来提供面向微型服务的轻量框架。spring-boot把spring的一些通用的,默认的,繁琐的配置默认为已经配置,不用自己去进行重复的配置,但是可以增加,或者修改。1、框架中有一个默认的配置文application.properties用来指定数据库等配置。mybatis.config-locations=classpath:myba
2017-08-02 15:37:22
413
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人