Tag: guava

如何在将其发送到另一种方法时每隔30秒清空番石榴缓存?

我通过调用add方法从多个线程填充我的guava缓存。 现在从每30秒运行一次的后台线程,我想以primefaces方式将缓存中的任何内容发送到sendToDB方法? 以下是我的代码: public class Example { private final ScheduledExecutorService executorService = Executors .newSingleThreadScheduledExecutor(); private final Cache<Integer, List> cache = CacheBuilder.newBuilder().maximumSize(100000) .removalListener(RemovalListeners.asynchronous(new CustomRemovalListener(), executorService)) .build(); private static class Holder { private static final Example INSTANCE = new Example(); } public static Example getInstance() { return Holder.INSTANCE; } private Example() { executorService.scheduleAtFixedRate(new Runnable() { @Override public […]

抛出java.lang.ClassNotFoundException

我有一个我正在研究的java项目,直到几天前才开始工作。 我不确定我对我的Eclipse设置做了什么来管它,但是当我尝试运行一些访问google finance api的代码时,我得到了一个java.lang.ClassNotFoundException。 我已经构建了一个小型测试应用程序,它自己使用google finance api,这似乎有效。 所以,我认为这是项目特定的问题。 任何帮助将不胜感激。 这是堆栈跟踪: ptolemy.kernel.util.IllegalActionException: in .RandomSearch.manager Because: com/google/common/collect/Maps at ptolemy.actor.Manager.execute(Manager.java:472) at ptolemy.actor.Manager.run(Manager.java:1119) at ptolemy.actor.Manager$3.run(Manager.java:1160) Caused by: java.lang.NoClassDefFoundError: com/google/common/collect/Maps at com.google.gdata.wireformats.AltRegistry.(AltRegistry.java:118) at com.google.gdata.wireformats.AltRegistry.(AltRegistry.java:100) at com.google.gdata.client.Service.(Service.java:546) at AtomicBroadcast.GoogleFinance.GooglePortfolioReader.fire(GooglePortfolioReader.java:108) at ptolemy.domains.de.kernel.DEDirector.fire(DEDirector.java:568) at ptolemy.actor.CompositeActor.fire(CompositeActor.java:458) at ptolemy.actor.Manager.iterate(Manager.java:714) at ptolemy.actor.Manager.execute(Manager.java:349) … 2 more Caused by: java.lang.ClassNotFoundException: com.google.common.collect.Maps at java.net.URLClassLoader$1.run(URLClassLoader.java:217) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:205) […]

Guava-11.0.2.jar与com.google.common_1.0.0.0_0-6.jar有冲突吗?

在有关stackoverflow的讨论之后,我在weblogic服务器上部署应用程序时遇到问题 我意识到问题是weblogic 12c正在使用lib文件com.google.common_1.0.0.0_0-6.jar,而我的应用程序正在使用Guava-11.0.2.jar,这对我来说听起来像是冲突的,试图在谷歌搜索,但我不知道该怎么做,有什么解决方案的正确解决方案?

java – google guava缓存invalidateAll()和cleanUp()之间的区别

假设我有一个像这样定义的Cache : private static Cache alertsUIDCache = CacheBuilder.newBuilder(). expireAfterAccess(60).build(); 从我读到的内容 (如果我错了请纠正我): 如果在0:00将值写入Cache ,则应在60秒后将其移至“准备被驱逐”状态。 实际从Cache删除值将在下一次缓存修改时发生( 缓存修改究竟是什么?)。 是对的吗? 另外,我不确定invalidateAll()和cleanUp()方法之间有什么区别,有人可以提供解释吗?

使用Guava的Optional与@XmlAttribute

我想设置一个带JAXB注释的Java类,以下列格式生成一些XML: The title of my page “refId”字段是可选的,所以我想使用Guava的Optional构造来引用内存中的字符串。 我看到使用generics@XmlJavaTypeAdapter解压缩包装在Guava的Optional中 ,如果您使用的是元素(即使这不是原始问题),它会提供一个完整的示例,但是您如何设置XML属性的注释? 这是我到目前为止所拥有的: @XmlRootElement(name=”page”) public final class Page { @XmlAttribute @XmlJavaTypeAdapter(OptionalAdapter.class) private Optional refId; @XmlElement private String title; … getters/setters, default constructor, etc. } 而OptionalAdapter是一个简单的XmlAdapter: public class OptionalAdapter extends XmlAdapter<T, Optional> { @Override public Optional unmarshal(T v) throws Exception { return Optional.fromNullable(v); } @Override public T marshal(Optional v) […]

Java 8流字符串空或空filter

我在Stream里面有Google Guava: this.map.entrySet().stream() .filter(entity -> !Strings.isNullOrEmpty(entity.getValue())) .map(obj -> String.format(“%s=%s”, obj.getKey(), obj.getValue())) .collect(Collectors.joining(“,”)) 如您所见,过滤函数内部有一个语句!String.isNullOrEmpty(entity) 。 我不想再在项目中使用Guava,所以我只想简单地用以下方法替换它: string == null || string.length() == 0; 我怎么能更优雅呢?

Guava MultiMap和ConcurrentModificationException

我不明白为什么在迭代这个multimap时我得到一个ConcurrentModificationException。 我读了以下条目 ,但我不确定我是否理解了整个事情。 我试图添加一个synchronized块。 但我怀疑的是与什么同步,何时。 multimap是一个字段,创建如下: private Multimap eventMultiMap = Multimaps.synchronizedMultimap(HashMultimap. create()); 并像这样使用: eventMultiMap.put(event, command); 并且像这样(我试图在地图上同步这部分,但没有成功) for (Entry entry : eventMultiMap.entries()) { if (entry.getValue().equals(command)) { eventMultiMap.remove(entry.getKey(), entry.getValue()); nbRemoved++; } }

Java中的链表有快速连接方法吗?

如何通过jdk1.6,google或apache commons集合或其他任何方式将O(1)中的两个链接列表与Java连接起来? 例如,在jdk中,只有addAll方法是O(n)。 我想念的另一个function是连接两个列表,其中每个列表可能是相反的顺序。 为了说明这一点,假设两个列表a-> b-> c和e-> f-> g可以合并到 A-> B-> C-> E-> F->克 A-> B-> C-> G-> F->电子 C-> B-> A-> E-> F->克 C-> B-> A-> G-> F->电子 你知道这样的列表实现还是我必须实现自己的链表? 了解如何调整现有解决方案也很有帮助(例如,jdk LinkedList只有很多私有方法)。 这些function在我看来非常明显,希望我不会错过一些愚蠢的东西。 正如MicSim指出的那样, 在Java中使用Merge两个列表的常量时间是相关的,但不是真正的重复! 现在的问题是: 是否有可能与其他集合库? 如何连续反转?

Guava中的任何东西都类似于Functional Java的效果?

我知道纯函数式编程的目标之一是消除可变性,从而排除副作用。 但是让我们面对现实吧,即使存在所有的函数式编程库,Java也不是一种函数式语言。 事实上,似乎有些FP库知道并期待这一点。 例如,在Functional Java中,有Effect类。 在Jedi FP库中,有Command接口。 这允许您 – 除其他外 – 将类型安全的命令模式应用于Iterable元素,而不需要令人讨厌的for循环样板。 Command makeCall = new Command { public void execute(PhoneNumber p) { p.call(); } } List phoneList = … FunctionalPrimitives.forEach( phoneList, makeCall ); 所以问题是,番石榴中有类似的东西吗? 在接受澄清后接受回复 我正在开发一个框架 ,它可以在一定的环境下帮助解决大多数Java FP库中固有的“垂直问题”。 所以我实际上不会像上面所示那样编写代码示例:即,显式声明Command一个新类实现及其所有垂直噪声icky-ness,只是为了在声明后立即应用它。 我更多地考虑实际的命令模式,其中可能有几个可能的命令在其他地方声明,并且只有其中一个被传递到想要迭代地应用它的代码中。 此外,我的框架的目标是使创建function接口对象(函数,谓词,命令,其他简单的lambda)更加惯用,而不是简单地将垂直问题移动到其他地方。 我早就意识到这不在番石榴的范围内。 但是,由于其他FP库中有类似Command的接口,我只想知道Guava中是否存在模拟。 使用我的框架的更完整的代码示例可能是这样的: class Stuff { private final Stuff CALLS_TO = callsTo(Stuff.class); // […]

Functional Java和Guava之间有很好的比较吗?

我想在我将要教授的课程中使用Functional Java或Guava(或者不太可能使用Scala)。 尽管在JVM上运行了许多函数式语言,但我希望坚持使用尽可能类似于Java的东西,即在Java 8中具有预期的function特性,在概念和语法上最兼容的东西。 。 看起来functionJava和番石榴是最好的候选者。 我无法在function,易用性,概念接近直接Java等方面找到任何比较它们的东西。有没有人知道这些库之间的良好比较?