小编hgu*_*294的帖子

Java Guava组合Multimap和Cache

是否有可用的番石榴CacheMultimap功能组合?基本上,我需要一个集合,其中条目在给定时间后过期,例如可用Cache但我有非唯一键,我需要条目独立到期.

java multimap guava

13
推荐指数
1
解决办法
4667
查看次数

Java在集合中查找最接近(或相等)的值

我有一个类:

public class Observation {
   private String time;
   private double x;
   private double y;

   //Constructors + Setters + Getters
}
Run Code Online (Sandbox Code Playgroud)

我可以选择将这些对象存储在任何类型的集合中(标准类或第三方,如Guava).我已经在下面的ArrayList中存储了一些示例数据,但就像我说的那样,我对任何其他类型的集合都是开放的.所以,一些示例数据:

ArrayList<Observation> ol = new ArrayList<Observation>();
ol.add(new Observation("08:01:23",2.87,3.23));
ol.add(new Observation("08:01:27",2.96,3.17));
ol.add(new Observation("08:01:27",2.93,3.20));
ol.add(new Observation("08:01:28",2.93,3.21));
ol.add(new Observation("08:01:30",2.91,3.23));
Run Code Online (Sandbox Code Playgroud)

该示例假定匹配的构造函数Observation.时间戳存储为String对象,因为我从外部源接收它们,但我很乐意将它们转换为其他内容.我按时间顺序接收观察结果,因此我可以创建并依赖于有序的观察集合.时间戳不是唯一的(如示例数据中所示),因此我无法基于创建唯一键time.

现在来问题了.我经常需要找到一个time等于或接近一定时间的一(1)个观测值,例如,如果我的时间是08:01:29我想在示例数据中获取第四个观测值,并且如果时间是08:01:27我想要第三个观测值.

我显然可以遍历整个集合,直到找到我正在寻找的时间,但我需要经常这样做,并且在一天结束时我可能有数百万的观察,所以我需要找到一个解决方案,我可以找到有效的相关观察.

我已经查看了各种集合类型,包括我可以过滤集合的类型,Predicates但是我找不到可以返回一个值的解决方案,而不是满足"<="条件的集合的子集.我基本上是在寻找SQL的等价物SELECT * FROM ol WHERE time <= t LIMIT 1.

我相信有一个聪明而简单的方法来解决我的问题所以我希望能够开悟.先感谢您.

java collections predicate find

7
推荐指数
1
解决办法
7441
查看次数

Java Swing保存并加载工作空间/设置

我有一个Java Swing应用程序,它包含一堆帧,而这些帧主要包含显示大量数据的表.由于在启动时安排所有窗口和表格总是麻烦且耗时,我想实现"工作区"功能,以便用户可以保存首选项设置,并在启动时选择自动加载存储的工作区将所有窗口和表格显示为先前保存的.具体来说,我希望存储在工作区中的设置是:

  • 活动窗口(JFrame)及其在屏幕上的大小和位置
  • 表设置,包括选定的列,列顺序,列宽,排序,过滤

有没有人知道一个聪明而简单的方法来实现这一点,没有明显的,并且看起来是一个非常复杂和繁琐的解决方案,迭代所有打开的窗口并用Preferencesapi 保存每一条信息?谢谢

java workspace settings swing preferences

7
推荐指数
1
解决办法
4440
查看次数

LONG作为Hibernate映射到MySQL的主键

我试图通过Hibernate映射到MySQL表来实现一些Java对象的持久性.当我提交时,我收到一条消息,说"批量更新从更新[0]返回了意外的行数; 实际行数:0; 预期:1'.

我的假设是问题是由于long我的Java POJO中有一个字段,我想用它作为MySQL表中的主键.由于我无法使用数据类型LONG作为我在MySQL表中的主键(ERROR 1170:BLOB/TEXT列'id'在密钥规范中使用而没有密钥长度)我从一些谷歌搜索和这篇帖子得出结论,BIGINT将是合适的映射long.但它没有更新.

我的测试POJO Person非常简单.它有3个字段:id(long),firstname(String),lastname(String),带有setter和getter等.

我在xml(person.hbm.xml)中执行基本上看起来像(减去标题)的hibernate映射:

<hibernate-mapping>
  <class name="hibernatetest.Person" table="hibernatetest">
   <id name="id" type="long" column="id" >
   <generator class="native"/>
  </id>

  <property name="firstname">
   <column name="firstname" />
  </property>
  <property name="lastname">
  <column name="lastname"/>
  </property>
 </class>
</hibernate-mapping>
Run Code Online (Sandbox Code Playgroud)

我应该保存或更新记录的实际java代码片段很简单:

Transaction tr = session.beginTransaction();            
Person person = new Person(1,"John","Doe");
session.saveOrUpdate(person);
tr.commit();
Run Code Online (Sandbox Code Playgroud)

这就是,如果我id在Person对象和MySQL表中将类型更改为int(Integer),这一切都可以正常工作.但是,对于我想要保留的实际对象,我没有那个选项,所以问题是; 我做错了什么或者我该怎么办才能让它发挥作用?谢谢.

添加Stacktrace:

Hibernate: update hibernatetest set firstname=?, lastname=? where id=?
org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; …
Run Code Online (Sandbox Code Playgroud)

java mysql hibernate

5
推荐指数
1
解决办法
5845
查看次数

Java Jersey Jettison Message Body Reader异常

我是REST服务的完全初学者,但我需要通过REST从网站访问一些信息.该服务有一些示例代码,以显示如何登录我使用过.示例代码使用Jettison作为JSON解析器,但是当我尝试运行以下代码片段时,我得到一个例外:

JSONObject post = baseResource.path("login")
            .queryParam("service", "ABC").queryParam("auth", authParam)
            .accept(MediaType.APPLICATION_JSON_TYPE).post(JSONObject.class);
Run Code Online (Sandbox Code Playgroud)

baseResourse是一个WebResource对象.代码失败,出现以下异常:

Exception in thread "main" com.sun.jersey.api.client.ClientHandlerException:
A message body reader for Java class org.codehaus.jettison.json.JSONObject, and
Java type class org.codehaus.jettison.json.JSONObject, and MIME media type
application/json; character=utf-8 was not found
Run Code Online (Sandbox Code Playgroud)

示例代码并不表示我应该添加任何"消息正文阅读器"来处理响应?或者我是否需要添加或执行任何明显的解析响应?谢谢.

java rest jersey jettison

4
推荐指数
1
解决办法
9108
查看次数

带有过期条目的Java集合

我需要在指定的时间范围内跟踪某些事件,并在事件数量达到一定数量时采取行动.更详细地说,我连接到外部服务并提交已确认状态等于CONF或FAIL的请求.我需要能够监视响应以检测我是否在给定时间范围内得到异常数量的失败,例如> 3在最后5秒内失败,以便我可以检查错误并采取相应措施.我可以选择连续3次检查,但我更喜欢基于时间的方法.

CacheLoader在阅读这篇文章后一直在测试Guava ,但是当缓存中的条目(我只存储FAIL事件)似乎按预期到期时,对size()(确定失败次数)的调用也包括过期的条目.如果我没有误解事情,这似乎是根据文档应该如何工作?有没有办法从缓存中获取"活动"事件的数量?

我想另一种解决方案是使用像Esper这样的CEP框架,但对于我的简单需求而言似乎有点过分和麻烦.有没有人有一个完全不同的方法来建议这将有助于我的要求?谢谢

java collections guava

4
推荐指数
1
解决办法
5627
查看次数

如果缺失值(或零),Matlab填充前一个值

我有一个包含时间序列的向量,其中包含不同的值和一些设置为零的缺失值:

X=[0,0,2,0,5,0,0,0,4,0];
Run Code Online (Sandbox Code Playgroud)

我想创建一个新的向量,其中缺少值(零)由前一个值填充(如果存在),以便我得到一个新的向量,如下所示:

Z=[0,0,2,2,5,5,5,5,4,4];
Run Code Online (Sandbox Code Playgroud)

我一直在浏览Matlab帮助和这样的论坛,以找到一个整洁而合适的功能,可以通过一行解决方案或类似解决方案,但我没有这样做.我可以通过以下几个不同的步骤解决问题,但我猜测必须有更好更容易的解决方案吗?

当前解决方案

X=[0,0,2,0,5,0,0,0,4,0];
ix=logical(X);
Y = X(ix);
ixc=cumsum(ix);
Z=[zeros(1,sum(~logical(ixc))) Y(ixc(logical(ixc)))];
Run Code Online (Sandbox Code Playgroud)

这样就可以了,但对于一个简单的问题来说,它似乎是一个过于复杂的解决方案,所以任何人都可以帮助我找到更好的问题吗?谢谢.

matlab interpolation

3
推荐指数
1
解决办法
3544
查看次数

Java Hazelcast多个集群的问题

我正在运行一个小型系统,它依赖于Hazelcast在多播模式下进行群集,分布式计算和消息传递(下载中提供标准配置).我有许多服务器模块作为"核心"Hazelcast实例运行,Java Swing应用程序作为Hazelcast"Native Client"实现.这一切都很好,我现在想要在生产中调试系统,因此需要运行两个独立的集群(dev + prod),这就是我遇到问题的地方.

根据文档,你需要的是为两个集群使用单独的组名+密码,我得到的印象是两个集群应该自动排序!?这似乎适用于服务器模块,但是当我尝试将"客户端"实例连接到prod环境时,我可以从prod中的一个服务器模块的日志中看到客户端似乎成功连接:

INFO: [prod] received auth from Connection [/192.168.0.2:55863 -> null] live=true,
client=true, type=JAVA_CLIENT, this group name:prod, auth group name:prod, 
successfully authenticated
Run Code Online (Sandbox Code Playgroud)

但是,客户永远不会成为prod的成员.相反,我发现客户端已成为开发环境的成员,即使对生产进行了身份验证!

对于我来说,两个星团的无声混合显然是一个巨大的问题.有没有人知道我做错了什么或者我是否可以做任何配置更改来解决问题?

java cluster-computing hazelcast

2
推荐指数
1
解决办法
4188
查看次数

Java:将日期比较为字符串是否可以

从外部服务我得到Date+Time字段为String格式的对象2012-03-07 12:12:23.547,我需要比较这些字段以获得对象的正确顺序.我很清楚我可以Date通过例如SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS")创建对象并比较两者Date来实现这一点但我的问题是我是否可以依赖正确的排序顺序如果我把它们比作Strings如String.compareTo(String)?一些光测试给我的印象是它有效,但我想知道是否有人知道任何情况下它不会给我正确的结果?此外,还有任何性能方面的考虑,比较或缺点,比较String的Vs解析到日期比较?

java string compareto

2
推荐指数
1
解决办法
197
查看次数