本次主要用Java实现简单的游戏服务器事件通知,在游戏服中,事件通知是必不可少的一种游戏业务处理逻辑,可以基于观察者模式去编写,或则其他更好的方式。也可以用guava框架的事件通知框架,以下代码只是大概的实现思想,总体设计思路都大同小异; 1.Event注解 package ge; import j ...
分类:
编程语言 时间:
2020-07-21 14:15:17
阅读次数:
73
https://github.com/google/guava/blob/master/guava/src/com/google/common/util/concurrent/RateLimiter.java 异常参数校验 Preconditions类 部分方法: checkArgument使用:P ...
分类:
其他好文 时间:
2020-07-20 22:29:07
阅读次数:
74
一,为什么要使用caffeine做本地缓存? 1,spring boot默认集成的进程内缓存在1.x时代是guava cache 在2.x时代更新成了caffeine, 功能上差别不大,但后者在性能上更胜一筹, 使用caffeine做本地缓存,取数据可以达到微秒的级别, 一次取数据用时经常不足1毫秒 ...
分类:
编程语言 时间:
2020-07-19 00:47:58
阅读次数:
94
简介 有时候你需要实现自己的集合扩展。也许你想要在元素被添加到列表时增加特定的行为,或者你想实现一个Iterable,其底层实际上是遍历数据库查询的结果集。Guava为你,也为我们自己提供了若干工具方法,以便让类似的工作变得更简单。(毕竟,我们自己也要用这些工具扩展集合框架。) Forwarding ...
分类:
其他好文 时间:
2020-07-17 19:27:58
阅读次数:
72
文中所述Guava版本基于29.0-jre,文中涉及到的代码完整示例请移步Github查看。 常见Obejct方法使用 Java中所有的类都有一个隐藏的公共父类,就是Object类。既然所有的类都继承自Object类,那所有的类中都包含有Object类的方法,常见的有。 equals(Object) ...
分类:
其他好文 时间:
2020-07-17 19:20:10
阅读次数:
86
范例 LoadingCache<Key, Graph> graphs = CacheBuilder.newBuilder() .maximumSize(1000) .expireAfterWrite(10, TimeUnit.MINUTES) .removalListener(MY_LISTENER ...
分类:
系统相关 时间:
2020-07-17 16:20:30
阅读次数:
82
文中所述Guava版本基于29.0-jre,文中涉及到的代码完整示例请移步Github查看。 常见Obejct方法使用 Java中所有的类都有一个隐藏的公共父类,就是Object类。既然所有的类都继承自Object类,那所有的类中都包含有Object类的方法,常见的有。 equals(Object) ...
分类:
其他好文 时间:
2020-07-17 16:12:10
阅读次数:
46
所谓不可变集合,顾名思义就是定义了之后不可修改的集合。 一.为什么要使用不可变集合 不可变对象有很多优点,包括: 当对象被不可信的库调用时,不可变形式是安全的; 不可变对象被多个线程调用时,不存在竞态条件问题 不可变集合不需要考虑变化,因此可以节省时间和空间。所有不可变的集合都比它们的可变形式有更好 ...
分类:
其他好文 时间:
2020-07-15 01:17:18
阅读次数:
68
1.1 关于Caffeine Cache ? Google Guava Cache是一种非常优秀本地缓存解决方案,提供了基于容量,时间和引用的缓存回收方式。基于容量的方式内部实现采用LRU算法,基于引用回收很好的利用了Java虚拟机的垃圾回收机制。其中的缓存构造器CacheBuilder采用构建者模 ...
分类:
系统相关 时间:
2020-07-10 13:38:09
阅读次数:
146
java.util.List 分段 使用google的guava类库对List分段处理 List<Integer> intList = Lists.newArrayList(1, 2, 3, 4, 5, 6, 7, 8); List<List<Integer>> subSets = Lists.pa ...
分类:
编程语言 时间:
2020-07-06 18:02:38
阅读次数:
74