任何人都知道我在哪里可以读到nodejs中--trace-gc选项的输出?
我不是要求解释gc是如何工作的,因为有很多关于它的信息,只是为了输出-trace-gc.
我可以猜到一些领域的含义是什么,但我不知道其他一些领域.
例如 :
一个例子 :
[12994] 77042 ms: Scavenge 260.7 (298.1) -> 247.7 (298.1) MB, 9.4 ms [allocation failure].
[12994] 77188 ms: Scavenge 261.7 (298.1) -> 249.0 (300.1) MB, 7.4 ms [allocation failure].
[12994] 77391 ms: Scavenge 263.8 (301.1) -> 250.6 (302.1) MB, 8.1 ms [allocation failure].
[12994] 77511 ms: Scavenge 264.8 (302.1) -> 251.8 (304.1) MB, 7.4 ms [allocation failure].
[12994] 77839 ms: Scavenge 273.4 (304.1) -> 260.7 (305.1) MB, 8.3 ms (+ …Run Code Online (Sandbox Code Playgroud) 我几乎不熟悉加密.
我正在尝试解密一个字节数组,当我提供IV时,我得到一个异常:InvalidAlgorithmParameterException(当预期时没有设置iv).
这是我的代码(iv是一个16字节的数组,它不是null,并且具有加密时使用的值):
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.DECRYPT_MODE, encriptionKey,new IvParameterSpec(iv));
Run Code Online (Sandbox Code Playgroud)
如果我没有指定IV,则密码初始化为ok:
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.DECRYPT_MODE, encriptionKey);
Run Code Online (Sandbox Code Playgroud)
试图找到答案我找到了JCEStreamCipher(这里)的实现,这可能与我正在使用的版本不对应,但有一些代码使我对我的理解不正确.
这是代码:
if ((ivLength != 0) && !(param instanceof ParametersWithIV))
{
SecureRandom ivRandom = random;
if (ivRandom == null)
{
ivRandom = new SecureRandom();
}
if ((opmode == Cipher.ENCRYPT_MODE) || (opmode == Cipher.WRAP_MODE))
{
byte[] iv = new byte[ivLength];
ivRandom.nextBytes(iv);
param = new ParametersWithIV(param, iv);
ivParam = (ParametersWithIV)param;
}
else
{
throw new InvalidAlgorithmParameterException("no IV set when one expected"); …Run Code Online (Sandbox Code Playgroud) 这与如何在电子邮件应用程序中使用我的应用程序打开附件有关?(哑剧类型,意图过滤器...),我以为我已经解决了,但事实并非如此.
我发现一些电子邮件客户端(例如,内置在电子邮件客户端中的Samsung Galaxy SII)不支持sendIntent.setType()方法,并且在向电子邮件添加附件时,它不添加setType方法中指定的mime类型.结果是当电子邮件到达时我无法打开附件.
因此,为了能够从任何电子邮件客户端打开附件,我认为他们唯一的方法是创建一个与我的自定义扩展相关联的新mime类型.
但我找不到任何方式来注册新的mime类型.我知道它可以像一些应用程序那样完成(ASTRO文件资源管理器),但我不知道在哪里可以查找有关添加新mime类型的信息.
编辑(2012年10月1日) ASTRO文件资源管理器仅为其进程添加mime类型.它们不能在其进程外读取,因此我没有任何可行的示例.
我一直在查看MimeTypeMap源代码,看起来它只使用一组预定义的mime类型,你不能添加一个新的.
我尝试使用反射(只是为了检查)并且能够添加mime类型,但它只对我的进程可见,就好像我的进程有自己的MimeTypeMap副本,因此电子邮件客户端仍然不会打开附件.
有人可以帮忙吗?
提前致谢
我有一个REST方法,应该返回一个JSON数组,其中包含从mongodb中读取的某些元素(使用mongoose)。
它应该非常简单(在实际情况下,find方法具有参数,但这不是问题):
OutDataModel.find().stream({transform: JSON.stringify}).pipe(res);
Run Code Online (Sandbox Code Playgroud)
这种方法的问题是我没有得到有效的JSON,结果是这样的:
{"id":"1","score":11}{"id":"2","score":12}{"id":"3","score":13}
Run Code Online (Sandbox Code Playgroud)
我期待着这样:
[{"id":"1","score":11},{"id":"2","score":12},{"id":"3","score":13}]
Run Code Online (Sandbox Code Playgroud)
我还没有找到解决方案,但是我很确定会有一个简单的解决方案。
我尝试过的
没有什么让我引以为傲的,但事情就这样了。
'['响应。','在末尾添加一个']'了响应。仍然无法使用此“解决方案”,因为我在末尾有这样一个逗号:
[{"id":"1","score":11},{"id":"2","score":12},{"id":"3","score":13},]
Run Code Online (Sandbox Code Playgroud)
正如我所说,我很确定应该有一个干净的解决方案,因为这应该很普遍。
此方法将有很多并发调用,因此我不想将所有内容都读取到内存中,然后再将所有内容写入响应中。每次调用都不会返回很多记录,但是所有这些记录在一起可能会非常庞大。使用者是一个带有spring的Java应用程序,它使用jackson解析JSON。
请让我知道该怎么做。
回答
通过按照接受的答案中的建议创建一个Transform流,使它起作用。
我的信息流看起来像这样:
var arraystream = new stream.Transform({objectMode: true});
arraystream._hasWritten = false;
arraystream._transform = function (chunk, encoding, callback) {
console.log('_transform:' + chunk);
if (!this._hasWritten) {
this._hasWritten = true;
this.push('[' + JSON.stringify(chunk));
} else {
this.push(',' + JSON.stringify(chunk));
}
callback();
};
arraystream._flush = function (callback) {
console.log('_flush:');
this.push(']');
callback();
};
Run Code Online (Sandbox Code Playgroud)
以及使用它的代码:
OutDataModel.find().stream().pipe(arraystream).pipe(res);
Run Code Online (Sandbox Code Playgroud)
谢谢。
我有一个对应于“灰度位图”(一个字节-> 一个像素)的字节数组,我需要为此图像创建一个 PNG 文件。
下面的方法有效,但创建的 png 很大,因为我使用的位图是 ARGB_8888 位图,每个像素需要 4 个字节而不是 1 个字节。
我无法让它与 ARGB_8888 不同的其他 Bitmap.Config 一起工作。也许 ALPHA_8 是我需要的,但我一直无法让它工作。
我也尝试过其他一些帖子中包含的 toGrayScale 方法(在 Android 中将位图转换为灰度),但我对大小有同样的问题。
public static boolean createPNGFromGrayScaledBytes(ByteBuffer grayBytes, int width,
int height,File pngFile) throws IOException{
if (grayBytes.remaining()!=width*height){
Logger.error(Tag, "Unexpected error: size mismatch [remaining:"+grayBytes.remaining()+"][width:"+width+"][height:"+height+"]", null);
return false;
}
Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
// for each byte, I set it in three color channels.
int gray,color;
int x=0,y=0;
while(grayBytes.remaining()>0){
gray = grayBytes.get();
// integer may be …Run Code Online (Sandbox Code Playgroud) android ×3
node.js ×2
arrays ×1
attachment ×1
bitmap ×1
cryptography ×1
email ×1
grayscale ×1
image ×1
java ×1
json ×1
mime-types ×1
rest ×1
v8 ×1