小编Gee*_*eek的帖子

MessageListener和JMS中的Consumer之间有什么区别?

我是新来的JMS.据我所知,Consumers能够从队列/主题中选择消息.那你为什么需要一个MessageListener因为Consumers会知道他们什么时候收到消息?这样的实际用途是MessageListener什么?

编辑:从MessageListenerJavadoc:

MessageListener对象用于接收异步传递的消息.

每个会话必须确保它将消息串行传递给侦听器.这意味着分配给同一会话的一个或多个使用者的侦听器可以假定在会话完成最后一次调用之前,不会使用下一条消息调用onMessage方法.

所以我在异步串行一起使用术语时感到困惑.这两个术语在描述特征方面MessageListener有何关联?

java messaging jms

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

说int枚举模式是编译时常量是什么意思?

这来自Effective Java

使用int枚举模式的程序很脆弱.因为int枚举是编译时常量,所以它们被编译到使用它们的客户端中.

有人可以解释为什么int枚举模式被称为编译类型常量以及编译到客户端的含义是什么?

这是一个这样一个常数的例子:

public static final int APPLE_FUJI = 0;
Run Code Online (Sandbox Code Playgroud)

java enums compile-time-constant effective-java

13
推荐指数
2
解决办法
1145
查看次数

在浏览器中运行的JavaScript的单线程概念

下图取自Jon Resig所着的" Jinja of JavaScript Ninja "一书的第3章.这里作者解释了浏览器事件循环.

在此输入图像描述

这本书不得不说:

重要的是要注意将事件放入队列的浏览器机制在此事件循环模型的外部.确定事件何时发生并将其推送到事件队列所需的处理不参与处理事件的线程.

所以我的问题是,说浏览器中的JavaScript是单线程的吗?我问这个问题,因为显然有两个单独的任务(处理事件和事件排队在这里并行进行).

javascript asynchronous event-loop javascript-events

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

什么是自适应旋转wrt锁定采集?

关于提高内在锁的性能,Java 6带来的四个主要变化之一是Adapative Spinning技术.什么是自适应纺纱?它是自旋锁和互斥锁的组合吗?有人可以用一种易于理解的方式解释这种策略的有用性,默认情况下可以从JDK6开始使用.

java concurrency multithreading java.util.concurrent

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

什么是Java中的回调接口?

接口SetObserver的此代码段取自Effective Java(避免过多的同步项67)

public interface SetObserver<E> {
// Invoked when an element is added to the observable set
void added(ObservableSet<E> set, E element);
}
Run Code Online (Sandbox Code Playgroud)

SetObserver传递给addObserver()removeObserver方法下面给出:

// Broken - invokes alien method from synchronized block!
public class ObservableSet<E> extends ForwardingSet<E> {
  public ObservableSet(Set<E> set) {
    super(set);
  }

  private final List<SetObserver<E>> observers =
      new ArrayList<SetObserver<E>>();

  public void addObserver(SetObserver<E> observer) {
    synchronized (observers) {
      observers.add(observer);
    }
  }



  public boolean removeObserver(SetObserver<E> observer) {
    synchronized (observers) {
      return observers.remove(observer); …
Run Code Online (Sandbox Code Playgroud)

java

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

Enum类型中wrt到构造函数的静态块的执行顺序

这来自Effective Java:

// Implementing a fromString method on an enum type
  private static final Map<String, Operation> stringToEnum
      = new HashMap<String, Operation>();

  static { // Initialize map from constant name to enum constant
    for (Operation op : values())
      stringToEnum.put(op.toString(), op);
  }

  // Returns Operation for string, or null if string is invalid
  public static Operation fromString(String symbol) {
    return stringToEnum.get(symbol);
  }
Run Code Online (Sandbox Code Playgroud)

请注意,Operation常量将从创建常量后运行的静态块放入stringToEnum映射中.试图使每个常量从其自己的构造函数放入映射将导致编译错误.这是一件好事,因为如果它是合法的,它会导致NullPointerException.除编译时常量字段外,不允许枚举构造函数访问枚举的静态字段.这种限制是必要的,因为在构造函数运行时尚未初始化这些静态字段.

我的问题是关于这条线:

"请注意,操作常量将从创建常量后运行的静态块放入stringToEnum映射中".

我认为静态块在构造函数运行之前执行.实际上是在类加载时执行的.

我在这里错过了什么?

java enums jls

12
推荐指数
1
解决办法
4532
查看次数

在分析计算机算法时理解关于机器字大小的假设

我正在阅读Thomas H. Cormen,Charles E. Leiserson,Ronald L. Rivest,Clifford Stein的"算法导论 "一书.在"分析算法"的第二章中,提到:

我们还假设对每个数据字的大小进行限制.例如,当使用大小为n的输入时,我们通常假设整数由c lg n位表示,对于某些常数c> = 1.我们要求c> = 1,这样每个单词都可以保存n的值,使我们能够索引各个输入元素,并且我们将c限制为常量,这样单词大小就不会随意增长.(如果单词大小可以任意增长,我们可以在一个单词中存储大量数据,并在恒定时间内对其进行操作 - 显然是不切实际的情况.)

我的问题是为什么这个假设每个整数应该由c lg n位表示,以及c> = 1的情况如何允许我们索引各个输入元素?

algorithm integer

11
推荐指数
1
解决办法
1627
查看次数

Weblogic Admin Server与受管服务器

Weblogic用语中托管服务器管理服务器之间有什么区别?在标准生产环境中,两者的责任是什么?

PS:正如我从文档中所理解的那样,管理服务器的职责是管理域中的资源(一些托管服务器和一个管理服务器的逻辑分组),但我不清楚的是几个什么样的例子.它负责管理的资源?

weblogic

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

为什么EnumSet或EnumMap可能比它们的哈希对应物更具性能?

以下内容来自EnumMapJava docImplementation Note部分:

实施说明:所有基本操作都在恒定时间内执行.它们很可能(虽然不能保证)比它们的HashMap对应物更快.

我也在java doc中看过类似的行EnumSet.我想知道为什么它更有可能的是EnumSets,并EnumMaps会比他们的同行散列更多更快?

java enums enum-map enumset

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

为什么Java中没有@Implements注释?

@Override在派生类中重写了一些超类方法时发现注释非常有用.基本上编译器会在早期检测到程序中的缺陷,这总是一件好事.但为什么Java中没有@Implements注释?

java annotations

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