我有一个Web服务器,它将大型二进制文件(几兆字节)读入字节数组.服务器可能同时读取多个文件(不同的页面请求),所以我正在寻找最优化的方法来做到这一点,而不会对CPU造成过多的负担.下面的代码是否足够好?
public byte[] FileToByteArray(string fileName)
{
byte[] buff = null;
FileStream fs = new FileStream(fileName,
FileMode.Open,
FileAccess.Read);
BinaryReader br = new BinaryReader(fs);
long numBytes = new FileInfo(fileName).Length;
buff = br.ReadBytes((int) numBytes);
return buff;
}
Run Code Online (Sandbox Code Playgroud) 我正在寻找一种快速保存大型numpy数组的方法.我想以二进制格式将它们保存到磁盘,然后相对快速地将它们读回内存.不幸的是,cPickle还不够快.
我找到了numpy.savez和numpy.load.但奇怪的是,numpy.load将npy文件加载到"memory-map"中.这意味着定期操作数组确实很慢.例如,像这样的东西会非常慢:
#!/usr/bin/python
import numpy as np;
import time;
from tempfile import TemporaryFile
n = 10000000;
a = np.arange(n)
b = np.arange(n) * 10
c = np.arange(n) * -0.5
file = TemporaryFile()
np.savez(file,a = a, b = b, c = c);
file.seek(0)
t = time.time()
z = np.load(file)
print "loading time = ", time.time() - t
t = time.time()
aa = z['a']
bb = z['b']
cc = z['c']
print "assigning time = ", time.time() - t; …Run Code Online (Sandbox Code Playgroud) 我有两个用Java编写的应用程序,它们通过网络使用XML消息相互通信.我在接收端使用SAX解析器从消息中取出数据.其中一个要求是将二进制数据嵌入XML消息中,但SAX不喜欢这样.有谁知道如何做到这一点?
更新:我使用apache commons编解码器库中的Base64类,以防其他人尝试类似的东西.
有哪些工具可以帮助解码未知的二进制数据格式?
我知道Hex Workshop和010 Editor都支持结构.对于已知的固定格式,这些在一定程度上是可以的,但是对于任何更复杂的东西都很难使用,特别是对于未知格式.我想我正在寻找一个脚本语言或可编写脚本的GUI工具的模块.
例如,我希望能够从有限的已知信息中找到数据块内的结构,这可能是一个神奇的数字.一旦我找到了一个结构,然后按照已知的长度和偏移字来寻找其他结构.然后以有意义的方式递归和迭代地重复此操作.
在我的梦想中,甚至可能根据我已经告诉系统的内容自动识别可能的偏移量和长度!
所以基本上,我正在尝试编写一系列与Dot Net Nuke交互的脚本.我一直在分析流量,现在可以登录并执行一些基本任务.但是,我从未使用curl处理二进制文件上传.有人愿意看这个来帮助我吗?这是请求的解剖:
这是我到目前为止卷曲的原因:
编辑:对于懒惰 -
实现文件的长度并存储在LENGTH中 .Bullshit只是带参数的请求URL的复制/粘贴,减去URL本身.
curl -L --cookie ~/.cms --data-binary "@background.jpg" \
--header "Content-Length: $LENGTH" \
--header "Content-Disposition: form-data" \
--header "name=\"RadFileExplorer1_upload1file0\"" \
--header "Content-Type: image/jpg" \
--header "Filename=\"background.jpg\"" \
--data $STUFF \
--referer "Kept-Secret" \
"Kept-Secret"
Run Code Online (Sandbox Code Playgroud) 我试图从二进制流构建一个PDF文件,我收到它作为Ajax请求的响应.
通过XmlHttpRequest我收到以下数据:
%PDF-1.4....
.....
....hole data representing the file
....
%% EOF
Run Code Online (Sandbox Code Playgroud)
到目前为止我尝试的是通过嵌入我的数据data:uri.现在,它没有任何问题,它工作正常.不幸的是,它在IE9和Firefox中不起作用.可能的原因可能是FF和IE9在使用时遇到了问题data-uri.
现在,我正在寻找适用于所有浏览器的解决方案.这是我的代码:
// responseText encoding
pdfText = $.base64.decode($.trim(pdfText));
// Now pdfText contains %PDF-1.4 ...... data...... %%EOF
var winlogicalname = "detailPDF";
var winparams = 'dependent=yes,locationbar=no,scrollbars=yes,menubar=yes,'+
'resizable,screenX=50,screenY=50,width=850,height=1050';
var htmlText = '<embed width=100% height=100%'
+ ' type="application/pdf"'
+ ' src="data:application/pdf,'
+ escape(pdfText)
+ '"></embed>';
// Open PDF in new browser window
var detailWindow = window.open ("", winlogicalname, winparams);
detailWindow.document.write(htmlText);
detailWindow.document.close();
Run Code Online (Sandbox Code Playgroud)
正如我所说,它适用于Opera和Chrome(Safari尚未经过测试).使用IE或FF将显示一个空白的新窗口.
是否有任何解决方案,如在文件系统上构建PDF文件,以便让用户下载它?我需要适用于所有浏览器的解决方案,至少在IE,FF,Opera,Chrome和Safari中.
我无权编辑Web服务实现.所以它必须是客户端的解决方案.有任何想法吗?
一般来说,在C++中存储二进制数据的最佳方法是什么?据我所知,这些选项很大程度上归结为使用字符串或向量<char> s.(我将省略char*s和malloc()的可能性,因为我特指C++).
通常我只是使用一个字符串,但是我不确定是否存在我缺少的开销,或者STL在内部进行的转换可能会破坏二进制数据的完整性.有没有人对此有任何指针(har)?这样或那样的建议或偏好?
我想将图像文档存储在mongoDB中.
我正在使用java.
任何链接或建议将不胜感激.
这是一个之前被问过的问题(大文本和图像在sql中),但主要用于将要更改的数据.在我的情况下,数据将被存储并且永远不会改变.把所有东西放在一起似乎是明智的.
我有什么理由不将静态二进制数据存储在数据库中吗?
假设这是一件明智的事情,将这些数据存储在单独的表中是否有任何好处?(你可能现在开始意识到我不是数据库专家......)
澄清:可能会有不超过10-20个用户,但这些用户将在美国和英国.在任何情况下都必须传输二进制数据.
binary-data ×10
binary ×2
database ×2
java ×2
.net ×1
bash ×1
bytearray ×1
c# ×1
c++ ×1
curl ×1
data-storage ×1
dotnetnuke ×1
file-format ×1
image ×1
javascript ×1
jquery ×1
mongodb ×1
mysql ×1
numpy ×1
pdf ×1
persistence ×1
pickle ×1
post ×1
preserve ×1
python ×1
stl ×1
xml ×1