我一直在使用Java的ConcurrentMap作为可以从多个线程使用的地图.putIfAbsent是一个很好的方法,比使用标准的map操作更容易读/写.我有一些看起来像这样的代码:
ConcurrentMap<String, Set<X>> map = new ConcurrentHashMap<String, Set<X>>();
// ...
map.putIfAbsent(name, new HashSet<X>());
map.get(name).add(Y);
Run Code Online (Sandbox Code Playgroud)
可读性明智这很好,但它确实需要每次创建一个新的HashSet,即使它已经在地图中.我可以这样写:
if (!map.containsKey(name)) {
map.putIfAbsent(name, new HashSet<X>());
}
map.get(name).add(Y);
Run Code Online (Sandbox Code Playgroud)
通过此更改,它会失去一点可读性,但不需要每次都创建HashSet.在这种情况下哪个更好?我倾向于支持第一个,因为它更具可读性.第二个会表现得更好,也可能更正确.也许有比这两种方法更好的方法.
以这种方式使用putIfAbsent的最佳做法是什么?
JScrollPane.
根据我的应用程序中发生的事件,我在运行时将一个位于行内的JTable 添加到表中.我想让一个新的行添加到表格时,scoll窗格滚动到表格的底部.
对于JLists有[ensureIndexIsVisible][1]()
强制列表中的特定索引可见.我正在寻找相同的东西,但对于JTable.看起来我可能不得不手动移动滚动窗格上的滚动视图,但我认为必须有一个更简单的方法.
我必须从Java应用程序中使用.NET托管的Web服务.两者之间的互操作性通常非常好.我遇到的问题是.NET应用程序开发人员选择使用.NET DataSet对象公开数据.关于为什么不应该这样做以及它如何使互操作性变得困难,写了很多文章:
我的问题是,尽管这不是推荐的练习,但我不得不使用Web服务返回一个带有Java的DataSet.当你使用除.NET以外的任何东西为这样的东西生成代理时,你基本上会得到一个如下所示的对象:
@XmlElement(namespace = "http://www.w3.org/2001/XMLSchema", required = true)
protected Schema schema;
@XmlAnyElement(lax = true)
protected Object any;
Run Code Online (Sandbox Code Playgroud)
第一个字段是应该描述DataSet的实际模式.当我使用Java中的JAX-WS和JAXB处理它时,它将所有XS-Schema作为Java对象引入,以便在此处表示.走JAXB的对象树是可能的,但不是很漂亮.any字段表示由架构指定的架构中的DataSet的原始XML.
数据集的结构非常一致,但数据类型确实发生了变化.我需要访问类型信息,架构因呼叫而异.我虽然有一些选择,但似乎没有"好"的选择.
还有其他我没考虑过的选择吗?是否有一个Java库可以轻松解析DataSet对象?其他人可能有类似情况做了什么?
在我的Java Swing应用程序中,我想让用户选择他们的字体.令我惊讶的是,没有用于选择字体的核心swing库.我期望找到一个JFileChooser,但没有这样的实用程序.这看起来像是一个简单的对话框,我确信它存在于那里.我真的不想自己写.
我在互联网上环顾四周,发现了这种对话的几种不同实现方式.问题是大多数是在随机博客上或只是代码片段.我正在寻找一个经过充分利用和测试的库的一部分.它还需要有商业友好许可证.
有没有人知道他们可以推荐一个好的Java文件选择器?
我想知道查询的性能如何使用LIKE关键字和通配符作为与没有where子句的值相比较.
考虑一个where子句,例如"WHERE a LIKE'%'".这将匹配列'a'的所有可能值.这与没有where子句相比如何.
我问这个的原因是我有一个应用程序,其中有一些字段,用户可以指定要搜索的值.在某些情况下,用户希望获得所有可能的结果.我目前正在使用这样的单个查询:
SELECT * FROM TableName WHERE a LIKE ? AND b LIKE ?
Run Code Online (Sandbox Code Playgroud)
可以提供'%'和'%'的值以匹配a和or b的所有可能值.这很方便,因为我可以在我的应用程序中使用单个命名查询.我想知道性能考虑因素是什么.查询优化器是否会将LIKE'%'简化为全部匹配?我意识到因为我正在使用命名查询(预备语句),这也可能影响答案.我意识到答案可能是数据库特定的.具体来说,这将如何在Oracle,MS SQL Server和Derby中发挥作用.
另一种方法是根据用户输入通配符使用3个单独的查询.
A是通配符查询:
SELECT * FROM TableName WHERE b LIKE ?
Run Code Online (Sandbox Code Playgroud)
B是通配符查询:
SELECT * FROM TableName WHERE a LIKE ?
Run Code Online (Sandbox Code Playgroud)
A和B是通配符:
SELECT * FROM TableName
Run Code Online (Sandbox Code Playgroud)
没有通配符:
SELECT * FROM TableName WHERE a LIKE ? AND b LIKE ?
Run Code Online (Sandbox Code Playgroud)
显然,单个查询是最简单和最容易维护的.如果性能仍然良好,我宁愿只使用一个查询.
我有一个小的轻量级应用程序,用作更大的解决方案的一部分.目前它是用C语言编写的,但我希望使用跨平台脚本语言重写它.该解决方案需要在Windows,Linux,Solaris,AIX和HP-UX上运行.
现有的C应用程序工作正常,但我希望有一个我可以为所有平台维护的脚本.与此同时,我不想失去很多表现,但我愿意失去一些.
脚本的启动成本非常重要.可以在每秒每分钟到多次的任何地方调用此脚本.因此,保持其内存和启动时间较低非常重要.
所以基本上我正在寻找最好的脚本语言:
可能的选择包括但不限于:bash/ksh + curl,Perl,Python和Ruby.对于这种类型的场景,您会推荐什么?
在Play Framework 1.x中,约定是在Java类上使用公共字段.这样做的理由是Play Properties Enhancers的工作方式如下所述:http://www.playframework.org/documentation/1.2.4/model
简而言之,公共字段是"正常的",因为Play会在运行时自动生成setter和getter.这对我来说很有意义,还有其他问题可以解决这个问题.
Play Framework 2.0的工作方式非常不同.没有"属性模拟"功能.也许他们正在考虑稍后添加,但我找不到任何建议.如果没有属性模拟,使用所有公共字段的原始理由就会消失.Play Framework 2.0示例仍然使用公共字段:http: //www.playframework.org/documentation/2.0/JavaEbean
为什么公共领域仍然推荐用于playframework 2.0?这只是开发者在旧版游戏中创建样本的习惯,还是在Play 2.0中仍然推荐使用公共字段的另一个原因?
我正在使用Apache CXF Web服务堆栈.当客户端在操作完成之前超时或断开与服务器的连接时,服务器将继续运行该操作,直到完成为止.我希望服务器检测客户端何时断开连接并相应地处理它.
有没有办法检测客户端何时使用Apache CXF断开连接?那么使用其他Java Web服务堆栈呢?
我要问的问题是,值得学习像groovy这样的新语言吗?因为如果我学习groovy,感觉就像我在groovy而不是java中编码.当我必须善于使用Java来编写桌面应用程序时,我的智慧是多么的聪明.所以,如果我使用Groovy很多关于Web应用程序,我将只是恶化,不得不重新开始是在java的很好,当我编写的桌面应用程序吗?
所以为什么我不坚持使用java并且擅长一种语言而不必在两种语言和语法之间切换.因为它会如此令人困惑......
在 Gradle 中,您需要定义要在“settings.gradle”文件中构建的子项目。要构建三个子项目,您将执行以下操作:
include "child1", "child2", "child3"
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是我有很多项目要包含。有没有办法在此定义中使用通配符?我正在寻找这样的东西:
include "*"
Run Code Online (Sandbox Code Playgroud)
这当然行不通。这会更容易使用,因为我有很多子项目要包含。有没有办法自动将子目录包含为项目?
我有一个公平的复杂表单,我试图在Play Framework 2.0中创建.我没有将所有字段都放在主窗体模型类中,而是将其分解为子对象.遗憾的是,这似乎不适用于验证限制.绑定确实有效,所以我最终得到了正确填充的对象.
有没有办法让验证工作在子对象上.请参阅以下模型和视图代码.客户端下的电子邮件地址未经过验证.
表格型号:
public class Inspection {
// This works!
@Email
private String email;
private Client client;
// ... getters and setters
}
public class Client {
// This does not work
@Email
private String email;
// ... getters and setters
}
Run Code Online (Sandbox Code Playgroud)
视图:
@inputText(inspectionForm("email"), '_label -> "Email Address 1")
@inputText(inspectionForm("client.email"), '_label -> "Email Address 2")
Run Code Online (Sandbox Code Playgroud) java ×8
groovy ×2
swing ×2
web-services ×2
.net ×1
bash ×1
build ×1
concurrency ×1
cxf ×1
dataset ×1
derby ×1
fonts ×1
gradle ×1
interop ×1
javabeans ×1
jscrollpane ×1
jtable ×1
oracle ×1
performance ×1
perl ×1
python ×1
ruby ×1
sql ×1
sql-like ×1
sql-server ×1
validation ×1