我有以下问题.我需要存储大量的信息(〜32 GB)的量和能够尽可能快地操纵它.我想知道最好的方法是什么(编程语言+操作系统的组合+你认为重要的东西).
我正在使用的信息的结构是双精度浮点数(8字节)的4D数组(NxNxNxN).现在我的解决方案是将4D阵列切成2D阵列并将它们存储在我的计算机硬盘中的单独文件中.这真的很慢,数据操作难以忍受,所以这根本不是解决方案!
我正在考虑进入我国的超级计算设施并将所有信息存储在RAM中,但我不确定如何实现应用程序以利用它(我不是专业的程序员,所以任何书籍/ reference将帮助我很多).
我正在考虑的替代解决方案是购买具有大量RAM的专用服务器,但我不确定这是否能解决问题.所以现在我的无知并没有让我选择最好的方式继续前进.
如果你遇到这种情况,你会怎么做?我对任何想法持开放态度.
提前致谢!
编辑:很抱歉没有提供足够的信息,我会尝试更具体.
我正在存储一个离散的4D数学函数.我想要执行的操作包括数组的转置(改变b [i,j,k,l] = a [j,i,k,l]等),数组乘法等.
由于这是对拟议实验的模拟,因此操作仅应用一次.一旦获得结果,就不必对数据执行更多操作.
编辑(2):
我也希望将来能够存储更多信息,因此解决方案应该以某种方式可扩展.当前的32 GB目标是因为我想让N = 256点的数组,但如果我可以使用N = 512(这意味着512 GB来存储它)会更好.
什么是无线测量两个物体(计算机,智能手机或专用设备)之间距离的最佳方法,这两个物体相距几米,精度达到~10厘米?这可能通过在WLan,蓝牙或GPS上进行捎带吗?
来自服务器代码的片段:
public void run() {
try {
// Create data input and output streams
ObjectInputStream inputFromClient = new ObjectInputStream(
socket.getInputStream());
ObjectOutputStream outputToClient = new ObjectOutputStream(
socket.getOutputStream());
while (true) {
cop = inputFromClient.readObject();
String[][] m1=new String[][] {{"1", "1","1"}};
Object xx=new getSerialModel(m1);
outputToClient.reset();
outputToClient.writeObject(xx);
outputToClient.flush();
}
}
Run Code Online (Sandbox Code Playgroud)
来自客户的片段:
//////////////
/// sockt jop
try {
// Create a socket to connect to the server
socket = new Socket("127.0.0."+Math.round(50+Math.random()*50), 8000);
// Create an output stream to send data to the server
toServer = new …Run Code Online (Sandbox Code Playgroud)