每次我必须迭代一个集合时,我最终都会检查null,就在for-each循环的迭代开始之前.像这样:
if( list1 != null ){
for(Object obj : list1){
}
}
Run Code Online (Sandbox Code Playgroud)
是否有更短的方法,以便我们可以避免编写"if"块?注意:我使用的是Java 5,并且会在一段时间内坚持使用它.
如果我们使用"临时队列"使用JMS请求/回复机制,那么该代码是否可扩展?
截至目前,我们不知道我们是否每秒支持100个请求,或者每秒支持1000个请求.
下面的代码是我正在考虑实现的.它以"同步"方式使用JMS.关键部分是创建"消费者"以指向为此会话创建的"临时队列"的位置.我无法弄清楚使用这种临时队列是否是一种可扩展的设计.
destination = session.createQueue("queue:///Q1");
producer = session.createProducer(destination);
tempDestination = session.createTemporaryQueue();
consumer = session.createConsumer(tempDestination);
long uniqueNumber = System.currentTimeMillis() % 1000;
TextMessage message = session
.createTextMessage("SimpleRequestor: Your lucky number today is " + uniqueNumber);
// Set the JMSReplyTo
message.setJMSReplyTo(tempDestination);
// Start the connection
connection.start();
// And, send the request
producer.send(message);
System.out.println("Sent message:\n" + message);
// Now, receive the reply
Message receivedMessage = consumer.receive(15000); // in ms or 15 seconds
System.out.println("\nReceived message:\n" + receivedMessage);
Run Code Online (Sandbox Code Playgroud)
更新:
我遇到了另一种模式,看到这个博客 的想法是使用'常规'队列进行发送和接收.但是对于"同步"调用,为了获得所需的响应(即匹配请求),您将创建一个使用"选择器"监听接收队列的消费者.
脚步:
// 1. …Run Code Online (Sandbox Code Playgroud) 我正在将单例转换为Spring bean,因此如果单例无法初始化,则整个Web应用程序的spring上下文无法正确加载.
使Spring上下文无法正确加载的优点是人们会在部署期间注意并修复配置.与使用'非spring bean'单例相反:当在初始化期间抛出异常时,没有人注意到......直到实际用户抱怨缺少功能.
我的更改正在按预期工作..但我不确定我是否正在做正确的事情.
有什么想法吗?
代码如下所示:
public class MySingleton {
private static MySingleton INSTANCE = null;
private MySingleton(){}
public static MySingleton getInstance(){
if(INSTANCE == null){
synchronized(MySingleton.class){
if(INSTANCE == null){
try{
doWork()
}catch(Exception e){
throw new IllegalStateException("xyz", e);
}
INSTANCE = new MySingleton();
}
}
}
return INSTANCE;
}
private static void doWork() {
// do some work
}
}
Run Code Online (Sandbox Code Playgroud)
在spring config xml中,bean将被定义为:
<bean id="MySingletonBean"
class="com.MySingleton"
factory-method="getInstance" lazy-init="false" singleton="true">
</bean>
Run Code Online (Sandbox Code Playgroud)
注意: 大部分内容类似于本文中讨论的策略:http: //springtips.blogspot.com/2007/06/configuration-hell-remedy-with.html
使用这个单例的类不是spring bean本身..它们只是非春天的pojos,我无法转换为spring.他们必须依靠getInstance()方法来获取Singleton.
编辑2 :( …
我有一个webapp,可以从外部应用程序获取和显示数据,只能通过消息传递(JMS)访问.
因此,如果用户在浏览器上提交请求,则相同的HTTP请求线程必须与Messaging系统(MQ Series)交互,以便相同的请求线程可以显示从Messaging System接收的数据.
我可以在这里使用一种模式吗?我在网上看到了一些模糊的引用,它们以这种方式使用"Correlation ID":
Msg m = new TextMsg("findDataXYZ");
String cr_id = m.setCorrelationID(id);
sendQueue.send(m).
// now start listening to the Queue for a msg that bears that specific cr_id
Response r = receiverQueue.receive(cr_id);
Run Code Online (Sandbox Code Playgroud)
那里有更好的东西吗?我发现其他模式期望响应是异步接收的..这对我来说不是一个选项,因为我必须在同一个HTTP请求上发回响应.
我一直在网上搜索一下java进程可以在linux(red-hat)机器上占用多少内存.(我不是在讨论堆;相反,java 进程占用的全部内存量)
我无权在该机器上执行任何操作.所以我不能简单地执行一个消耗内存的程序,直到内存不足为止.
但是,我确实有权检查配置文件等(例如:我试图执行cat/proc/meminfo,但是我无法理解;它似乎没有任何结果代表我想知道的参数关于).
我在一个单独的红帽机器上尝试了一个java程序 - 我有权执行程序 - 我能够看到java程序长大到3GB左右.
有什么方法可以找出一个进程可以获得多少内存?
我最近使用了Grails,并为JQuery添加了Grails插件,但我认为它不仅仅是复制一些jQuery文件.
到目前为止,我只看到有关"如何安装和使用"插件的信息...但我找不到任何描述插件概念的内容.
有人可以告诉我,什么是Grails插件?"安装"插件意味着什么?
我需要在启动新线程时找出 try-catch 的最佳实践。
就我个人而言,我更喜欢选项 2。
哪个选项是最佳实践?是否有任何因素可能使任一选项在某些情况下成为最佳实践,而在其他情况下则不然?
选项1
public void run(){
try{
//do something
}catch(Exception e){
// log
}
}
Run Code Online (Sandbox Code Playgroud)
选项 2
public void run(){
try{
//do something
}catch(Throwable t){
// log
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:假设您正在编写必须满足严格代码审查的代码。编辑 2:我知道上述两个选项之间的区别。我只是好奇什么被其他人视为“100% 正确”。
Netbeans和Eclipse之间用于处理maven项目有什么区别?
我试图找出C#如何比较HashSet中的对象是否相等.
我在这里找不到任何东西:http://msdn.microsoft.com/en-us/library/bb359438.aspx
只有当我来到计算器,我读它使用equals()和可能的GetHashCode()
无论如何我打算实施这两种方法,但我的问题是:
你会怎么做才能找出HashSet如何实际比较对象?
我有史以来第一次有机会开始一个新项目.
关于"发展",我对项目结构感到满意.它有通常的'src','lib','resources','test'等dirs.我已经在Eclipse项目中使用了这个结构.
我无法确定源控件中的dir结构应该是什么.我目前正在考虑以下问题:
/sourcecontrol/branch/MyProject:
-dev
---- Here I will have dirs that make up the 'Eclipse' project.
-dbscripts
---- sql Scripts for any DB Schema change
-documentation
---- UserGuide.pdf
---- DeveloperGuide.pdf
---- Other such docs
-sh
---- Here I will have the scripts to deploy, start, and stop the web server.
-notes
---- Here I will store random 'helpful notes' that developers can create for other developers.
Run Code Online (Sandbox Code Playgroud)
这个想法是,当有人想要'开发'项目时,他们只能查看'dev'目录.
这是一个好主意吗?您过去的经验有何建议?我一直无法找到一个不讨论'src','test','lib'等新项目的'最佳实践'.
编辑:如果它有所帮助,它是一个java spring + hibernate webapp
编辑2:这是我现在关注的问题:Eclipse项目结构是否也应该是Source countrol中的项目结构?如果是这样,那么Eclipse项目的基础目录也将成为源控件项目的基础目录
我一直按原样使用 Spring Framework 类。
但是,我正在考虑通过扩展其 WebServiceTemplate 类来自定义 Spring-WS(WebService)行为。
WebServiceTemplate 目前只提供“sendAndReceive”,但我想让它只做一个“send”。然后一个单独的线程执行“接收”。(这样做是为了反映依赖于消息传递的现有工作流程)。
所以我正在考虑扩展课程..
在从开源代码扩展到商业应用程序之前,我需要注意哪些事项?另外,我可以自由使用源代码并根据需要复制它吗?
更新:看起来 Spring 使用与 Apache 相同的许可证