小编And*_*ing的帖子

为什么BufferedReader的性能比BufferedInputStream差得多?

我知道使用BufferedReader(包装FileReader)将比使用BufferedInputStream(包装FileInputStream)慢得多,因为原始字节必须转换为字符.但我不明白为什么它这么慢!以下是我正在使用的两个代码示例:

BufferedInputStream inputStream = new BufferedInputStream(new FileInputStream(filename));
try {
  byte[] byteBuffer = new byte[bufferSize];
  int numberOfBytes;
  do {
    numberOfBytes = inputStream.read(byteBuffer, 0, bufferSize);
  } while (numberOfBytes >= 0);
}
finally {
  inputStream.close();
}
Run Code Online (Sandbox Code Playgroud)

和:

BufferedReader reader = new BufferedReader(new FileReader(filename), bufferSize);
try {
  char[] charBuffer = new char[bufferSize];
  int numberOfChars;
  do {
    numberOfChars = reader.read(charBuffer, 0, bufferSize);
  } while (numberOfChars >= 0);
}
finally {
  reader.close();
}
Run Code Online (Sandbox Code Playgroud)

我已尝试使用各种缓冲区大小的测试,所有缓冲区大小都是150兆字节的文件.以下是结果(缓冲区大小以字节为单位;时间以毫秒为单位):

Buffer   Input
  Size  Stream  Reader
 4,096    145     497
 8,192    125     465
16,384 …
Run Code Online (Sandbox Code Playgroud)

java performance bufferedinputstream bufferedreader

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

如何重新发送GWT RequestFactory请求

是否可以重新发送RequestFactory传输?我想做相同的事情:如何在使用RequestFactory时重新发送GWT RPC请求.从先前的请求重新发送相同的有效负载相当简单,但我还需要调用相同的方法.这是我的RequestTransport类,我希望在处理用户登录凭据的请求之后,只需"重新启动"原始请求:

package org.greatlogic.rfexample2.client;

import com.google.gwt.http.client.Request;
import com.google.gwt.http.client.RequestBuilder;
import com.google.gwt.http.client.RequestCallback;
import com.google.gwt.http.client.Response;
import com.google.web.bindery.requestfactory.gwt.client.DefaultRequestTransport;
/**
 * Every request factory transmission will pass through the single instance of this class. This can
 * be used to ensure that when a response is received any global conditions (e.g., the user is no
 * longer logged in) can be handled in a consistent manner.
 */
public class RFERequestTransport extends DefaultRequestTransport {
//--------------------------------------------------------------------------------------------------
private IClientFactory _clientFactory;
//==================================================================================================
private final class …
Run Code Online (Sandbox Code Playgroud)

gwt gwt-rpc requestfactory

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

Eclipse CoreException位置

我试图使用ILaunchManager#getLaunchConfigurationsEclipse org.eclipse.debug.core包中的方法,但编译器给我的消息是:

The method getLaunchConfigurations() from the type ILaunchManager refers to the missing type CoreException

我可以看到getLaunchConfigurations()抛出CoreException异常,但我找不到包含CoreException该类的jar !有谁知道我需要用哪个罐来解决这个问题?

我正在使用的代码是:

ILaunchManager launchManager = DebugPlugin.getDefault().getLaunchManager();
for (ILaunchConfiguration launchConfiguration : launchManager.getLaunchConfigurations()) {
  String configName = launchConfiguration.getName();
}
Run Code Online (Sandbox Code Playgroud)

我在构建路径中包含了以下jar:

  org.eclipse.debug.core_3.7.100.v20120521-2012
  org.eclipse.core.runtime_3.8.0.v20120521-2346
Run Code Online (Sandbox Code Playgroud)

java eclipse jar

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

Java 和 JavaScript 之间使用 OAEP 的 RSA 加密

我试图用 JavaScript 加密一个短字符串并用 Java 解密它。解密失败,我认为这是因为两个平台之间的块模式和/或填充不同。我尝试在Java和JavaScript中加密相同的字符串,得到不同的结果,这表明确实存在差异。这是创建密钥的 Java 代码:

KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA");
kpg.initialize(1024);
KeyPair keyPair = kpg.generateKeyPair();
Run Code Online (Sandbox Code Playgroud)

这是我用来测试加密的 Java 代码:

Cipher cipher = Cipher.getInstance("RSA/ECB/OAEPWithSHA-256AndMGF1Padding");
cipher.init(Cipher.ENCRYPT_MODE, keyPair.getPublic());
byte[] bytes = cipher.doFinal("asdf".getBytes());
Run Code Online (Sandbox Code Playgroud)

我将公钥发送到 JavaScript 进程,并将其转换为 ArrayBuffer,变量名为publicKey。我已经验证了 JavaScript 端的密钥与 Java 端的密钥匹配(通过导出它crypto.subtle.exportKey并检查字节)。这是我用来测试加密的 JavaScript 代码:

crypto.subtle.importKey('spki', publicKey,
                        {hash: 'SHA-256', name: 'RSA-OAEP'}, true,
                        ['encrypt'])
      .then((key) => {
        crypto.subtle.encrypt({name: 'RSA-OAEP'}, key,
                              new TextEncoder().encode('asdf'))
              .then((buffer) => {

              });
      });
Run Code Online (Sandbox Code Playgroud)

Java 中的字节数组和 JavaScript 中的数组缓冲区的内容是不一样的。我不确定的设置是Cipher#getInstanceJava 端的参数importKeyencryptJavaScript 端的参数。是否有任何设置可以使用内置类在 Java 和 JavaScript 之间工作?或者我应该查看第三方库(例如,Bouncy …

javascript java encryption rsa

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