首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏weixuqin 的专栏

    Guava -- 集合类 和 Guava Cache

    Guava -- 集合类 和 Guava Caches 1. 什么是 Guava Guava 是 google 推出的一个第三方 java 库,用来代替 jdk 的一些公共操作,给我印象特别深的就是 Collection 的扩展和本地缓存的扩展这两个方面了。 所以今天也就主要来讲讲 guava 的 collection 和 caches 两方面。 2. 依赖 使用 guava 非常简单,可以直接通过 maven 导入依赖: <dependency> <groupId>com.google.guava</groupId> <artifactId Caches guava caches 用来当本地缓存个人认为是一个非常不错的选择。 1.

    1.4K31发布于 2019-08-20
  • 来自专栏技术从心

    Guava RateLimiter

    来源:https://mrbird.cc/Guava-RateLimiter.html Google Guava提供的RateLimiter使用的是令牌桶算法。 Guava RateLimiter允许某次请求获取超出剩余令牌数的令牌,但是下一次请求将为此付出代价,一直等到令牌亏空补上。

    59210发布于 2020-04-21
  • 来自专栏高爽的专栏

    Guava Collect

    Guava是什么 进入新公司就会接触一些新的东东,Guava就是一个,Guava是Google的一个开源类库,丰富了JDK的API,而且使用起来很方便,本文介绍的是Guava collect包下的一些常用工具类 项目主页:https://github.com/google/guava Maven依赖: <groupId>com.google.guava</groupId> <artifactId>guava</ 可以简化: List<String> strList = new ArrayList<String>(); Collections.addAll(strList, "1", "2", "3"); 使用Guava Guava可以创建一个完全不可变的集合,如下代码: List<String> strList = ImmutableList.of("1", "2", "3"); 本文只是对Guava Collect的管中窥豹 ,也仅仅介绍了List部分,更多请移步:https://github.com/google/guava/wiki。

    93000发布于 2017-12-28
  • 来自专栏落叶飞翔的蜗牛

    Guava Cache

    根据科普中国的定义,缓存就是数据交换的缓冲区(称作Cache),当某一硬件要读取数据时,会首先从缓存中查找需要的数据,如果找到了则直接执行,找不到的话则从内存中找。由于缓存的运行速度比内存快得多,故缓存的作用就是帮助硬件更快地运行。

    83830发布于 2021-04-23
  • 来自专栏高爽的专栏

    Guava Predicate

    简介 Predicate<泛型>(断言,断定),是Guava中的一个基础接口,其内部只有一个方法boolean apply(T input),这个方法输入是一个泛型对象,输出是一个布尔值,非常简单,下面来看一下这个小东西能帮助我们做什么

    75801发布于 2017-12-28
  • 来自专栏Java技术圈子

    Guava使用

    Guava使用 Guava Cache 是Google Fuava中的一个内存缓存模块,用于将数据缓存到JVM内存中。 提供了get、put封装操作,能够集成数据源 ;线程安全的缓存,与ConcurrentMap相似,但前者增加了更多的元素失效策略,后者只能显示的移除元素,相当于对已有集合框架类的一个扩充;Guava Cache 提供了多种基本的缓存回收方式监控缓存加载/命中情况通常,Guava缓存适用于以下情况: 愿意花费一些内存来提高速度。 转为类型名称这个类型数量比较多,有可能发生变动但不频繁的情景 比如端面需要根据填报志愿的专业code获取专业名称如果返回实体不带Name,每个调一次查询服务,或者一次性拿出所有名称循环对比取显然不是很优雅就可以用Guava 来实现 /** 引入如下依赖 <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId

    45730编辑于 2023-02-28
  • 来自专栏JavaQ

    Guava之Objects

    Guava中Objects类提供了很多和Object类作用相同、效率更高的方法可供使用: 1.equal方法 使用Obejct的equals方法进行相等判断,例如: test.equals("test Object的firstNonNull方法可以根据传入的两个参数来返回一个非Null的参数, view plain copy Objects.firstNonNull(null, "jack"); Guava

    68170发布于 2018-04-04
  • 来自专栏小道

    Guava学习笔记(2) --- Guava的不可变集合

    /** * Guava的不可变集合用法 * * 创建对象的不可变集合是一种很好的防御性编程技巧; * Guava为所有JDK标准集合类型和Guava集合类型都提供了简单易用的不可变版本; *

    67520发布于 2021-04-13
  • 来自专栏有脑子的搬砖工

    Guava之Objects

    Guava中Objects类提供了很多和Object类相似方法可供使用: 1.equal方法 使用Object的equals方法进行相等判断,例如: test.equals("test"); 如果test .firstNonNull方法 Object的firstNonNull方法可以根据传入的两个参数来返回一个非Null的参数, Objects.firstNonNull(null, "jack"); Guava

    57330发布于 2019-07-02
  • 来自专栏IT大咖说

    guava并发工具

    并发是一个难题,但是可以通过使用强力简单的抽象来显著的简化,为了简化问题,guava扩展了Future接口,即 ListenableFuture (可以监听的Future)。 它返回一个常规的Future,guava提供了ListeningExecutorService接口,它返回ListenableFuture。 private String sex; private Integer id; } } 相对的,如果你想从基于FutureTask的API转换过来,Guava 为了避免这种情况,所有的guava的Future处理方法(有些从jdk来),有 *Async版本来安全的解开这个嵌套。

    1.8K30发布于 2020-04-26
  • 来自专栏爱撸猫的杰

    初探Google Guava

    Guava地址:https://github.com/google/guava 第一次接触我是在16年春github上,当时在找单机查缓存方法,google guava当初取名是因为JAVA的类库不好用 guava在还没做分布式处理上,单机单整合上大行其道。 集合[Collections] Guava对JDK集合的扩展,这是Guava最成熟和为人所知的部分 2.1 不可变集合: 用不变的集合进行防御性编程和性能提升。 缓存[Caches] Guava Cache:本地缓存实现,支持多种缓存过期策略 4. 函数式风格[Functional idioms] Guava的函数式支持可以显著简化代码,但请谨慎使用它 5. 反射[Reflection] Guava 的 Java 反射机制工具类 1.Guava EventBus探讨 在设计模式中, 有一种叫做发布/订阅模式, 即某事件被发布, 订阅该事件的角色将自动更新。

    1.3K20发布于 2019-03-28
  • 来自专栏后端码事

    关于Guava ForwardingMap

    如上示例,对于使用ForwardingMap的主体,可以不用考虑多代理的Map的具体实现。

    62420发布于 2020-09-10
  • 来自专栏JavaQ

    Guava之Ordering

    Ordering类提供了一些链式的排序方法,相比JDK自带的排序方法更加简练、方便。 Ordering中有3种静态方法用于创建Ordering排序器: 根据上面的方法创建Ordering后,可以继续调

    91780发布于 2018-04-04
  • 来自专栏ml

    Guava----Function

    1. Function接口,提供两个方法: apply方法:    可以自定义自己想实现的功能 1 @Nullable T apply(@Nullable F input); 1. 实例: 1 import com.google.common.base.Function; 2 import com.google.common.base.Joiner; 3 import org.junit.Test; 4 import org.slf4j.Logger; 5 import org.slf4j.L

    65490发布于 2018-03-27
  • 来自专栏猫头虎博客专区

    Guava》基础 入门

    前言 Guava 包含我们在基于Java的项目中依赖的Google的几个核心库:集合,缓存,原语支持,并发库,通用批注,字符串处理,I / O等。 我们日常开发中 遇到最多的Exception 可能就是NullPointException 了,那么 guava 如何来优化这个问题呢? 避免使用null 粗心地使用null可能会导致各种错误。 (UseNullTest.java:51) at com.sf.guava.basic.UseNullTest.main(UseNullTest.java:24) :UseNullTest.main true System.out.println(Objects.equal(str1, str2)); // 打印 true } 3.利用 比较链的方式 实现比较 package com.sf.guava.basic other.zipCode, Ordering.natural().nullsLast()) .result(); } } 参数检查 package com.sf.guava.basic

    35110编辑于 2024-04-07
  • 来自专栏房东的猫

    Guava Collect API

    简介 Guava[ˈɡwɑːvə] 是 Google 开源的一个 Java 工具库。 <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>29.0-jre< 不变的;不可变的;不能变的 Guava是google的一个库,弥补了java语言的很多方面的不足,很多在java8中已有实现。 Guava提供了对JDK里标准集合类里的immutable版本的简单方便的实现,以及Guava自己的一些专门集合类的immutable实现。 注意:每个Guava immutable集合类的实现都拒绝null值。

    1.2K11发布于 2021-02-05
  • 来自专栏InvQ的专栏

    spring - guava-cache

    ReferenceEntry ReferenceEntry是guava-cache中实际进行存储的数据结构,其类图: 那么在初始状态下,每个Segment中有多少个ReferenceEntry呢? ReHash guava cache采用了和ConcurrentHashMap同样的算法。 } return false; } finally { unlock(); postWriteCleanup(); } } 注意两点: guava if (newCount > this.threshold) { // ensure capacity expand(); newCount = this.count + 1; } guava 高并发下数据写入与过期 总结 Guava cache其实是在ConcurrentHashMap的基础上加入了过期、权重、自动刷新等特性。

    74020发布于 2021-10-22
  • 来自专栏落叶飞翔的蜗牛

    Guava Cache高级特性

    刷新:主动刷新方法LoadingCache.referesh(K) 信息统计:CacheBuilder.recordStats() 开启Guava Cache的统计功能。

    88320发布于 2021-07-14
  • 来自专栏让技术和时代并行

    guava-IO使用

    ; // Copy the data from a URL to a file Resources.asByteSource(new URL("http://ifeve.com/google-guava-io

    75220发布于 2019-04-16
  • 来自专栏屈定‘s Blog

    Guava -- Bloom Filter原理

    常见实现方案 guavaGuava中提供了com.google.common.hash.BloomFilter类,如下所示,可以很方便的实现布隆过滤器。其实现原理中有很多值得学习的点。 Byte,占8bits,最大的为Long,占64bits,因此常见方案是使用Long数组作为bits数组使用,举个例子 128bits可以用long[2]标识,146bits可以用long[3]表示,在Guava 如上图计算,100w元素,0.0001误判率下需要13次hash计算,hash在快次数一多也必然会成为性能瓶颈,在Guava中并没有引入多个Hash函数,而是计算出一个hash值后,其他的使用位移,乘除等方法快速计算出来 } 另外com.google.common.hash.BloomFilterStrategies也是枚举策略模式的典型应用场景,值得学习,关于策略模式可以参考 设计模式–策略模式的思考 Redis Guava 文章标题: Guava -- Bloom Filter原理 文章链接: https://mrdear.cn/2019/03/16/framework/guava/guava--bloom-filter/

    1.9K30发布于 2020-02-10
领券