小编rk2*_*010的帖子

有没有办法在for-each循环迭代开始之前避免空值检查?

每次我必须迭代一个集合时,我最终都会检查null,就在for-each循环的迭代开始之前.像这样:

if( list1 != null ){
    for(Object obj : list1){

    }
}
Run Code Online (Sandbox Code Playgroud)

是否有更短的方法,以便我们可以避免编写"if"块?注意:我使用的是Java 5,并且会在一段时间内坚持使用它.

java foreach for-loop

106
推荐指数
9
解决办法
11万
查看次数

使用JMS临时队列进行同步使用是一种好习惯吗?

如果我们使用"临时队列"使用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)

java architecture jms java-ee ibm-mq

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

使单例成为Spring bean的正确方法

我正在将单例转换为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


编辑1:

使用这个单例的类不是spring bean本身..它们只是非春天的pojos,我无法转换为spring.他们必须依靠getInstance()方法来获取Singleton.


编辑2 :( …

java singleton spring

20
推荐指数
4
解决办法
9万
查看次数

如何进行JMS同步请求

我有一个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 architecture jms ibm-mq

11
推荐指数
2
解决办法
2万
查看次数

如何确定Linux中的进程内存限制?

我一直在网上搜索一下java进程可以在linux(red-hat)机器上占用多少内存.(我不是在讨论堆;相反,java 进程占用的全部内存量)

我无权在该机器上执行任何操作.所以我不能简单地执行一个消耗内存的程序,直到内存不足为止.

但是,我确实有权检查配置文件等(例如:我试图执行cat/proc/meminfo,但是我无法理解;它似乎没有任何结果代表我想知道的参数关于).

我在一个单独的红帽机器上尝试了一个java程序 - 我有权执行程序 - 我能够看到java程序长大到3GB左右.

有什么方法可以找出一个进程可以获得多少内存?

linux memory process out-of-memory

10
推荐指数
2
解决办法
5万
查看次数

什么是Grails插件?安装插件意味着什么?

我最近使用了Grails,并为JQuery添加了Grails插件,但我认为它不仅仅是复制一些jQuery文件.

到目前为止,我只看到有关"如何安装和使用"插件的信息...但我找不到任何描述插件概念的内容.

有人可以告诉我,什么是Grails插件?"安装"插件意味着什么?

grails grails-plugin

10
推荐指数
1
解决办法
3385
查看次数

在新的执行线程中使用 catch throwable 或 catch Exception

我需要在启动新线程时找出 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% 正确”。

java try-catch

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

针对maven项目的NetBeans和Eclipse的差异

Netbeans和Eclipse之间用于处理maven项目有什么区别?

eclipse maven-2 netbeans maven

5
推荐指数
2
解决办法
2703
查看次数

C# - 无法找到hashset的确认答案包含比较检查

我试图找出C#如何比较HashSet中的对象是否相等.

我在这里找不到任何东西:http://msdn.microsoft.com/en-us/library/bb359438.aspx

只有当我来到计算器,我读它使用equals()和可能的GetHashCode()

无论如何我打算实施这两种方法,但我的问题是:

你会怎么做才能找出HashSet如何实际比较对象?

c# equality hashset

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

如何开始一个新项目

我有史以来第一次有机会开始一个新项目.

关于"发展",我对项目结构感到满意.它有通常的'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项目的基础目录也将成为源控件项目的基础目录

java web-applications project-structure

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

我们可以在为商业应用程序工作时扩展 Spring 源代码吗?

我一直按原样使用 Spring Framework 类。

但是,我正在考虑通过扩展其 WebServiceTemplate 类来自定义 Spring-WS(WebService)行为。

WebServiceTemplate 目前只提供“sendAndReceive”,但我想让它只做一个“send”。然后一个单独的线程执行“接收”。(这样做是为了反映依赖于消息传递的现有工作流程)。

所以我正在考虑扩展课程..

在从开源代码扩展到商业应用程序之前,我需要注意哪些事项?另外,我可以自由使用源代码并根据需要复制它吗?

更新:看起来 Spring 使用与 Apache 相同的许可证

http://www.apache.org/licenses/LICENSE-2.0

spring licensing open-source

0
推荐指数
1
解决办法
1091
查看次数