在我的应用程序中,我必须从一组图像(MRC图像)加载volumedata并将像素数据保存在内存中.(图像是灰度级的,因此每像素一个字节).
我的开发环境是QT框架,MinGW for Windows和GCC for Linux.
目前,我使用一个简单的数据结构来存储volumedata:
unsigned char *volumeData;
Run Code Online (Sandbox Code Playgroud)
并按如下方式进行大量分配.
volumeData=new unsigned char[imageXsize * imageYsize * numofImages];
Run Code Online (Sandbox Code Playgroud)
以下是访问给定平面中图像数据的重要方法,例如
unsigned char* getXYPlaneSlice(int z_value);
unsigned char* getYZPlaneSlice(int x_value);
unsigned char* getZXPlaneSlice(int y_value);
Run Code Online (Sandbox Code Playgroud)
使用我简单的数据结构,很容易实现上述方法.
但是我们可能需要在未来采用体积大小为2000x2000x1000(~3.7Gb).而目前的数据结构将无法处理这些庞大的数据.
如何避免碎片?现在,即使使用1000x1000x200数据,应用程序也会崩溃,从而导致bad_alloc.什么是更改数据结构的最佳方法?我应该使用链接列表,每个块大小为100mb.
此外,用户应该能够在体积数据上执行一些图像处理过滤器,并且还应该能够重置为原始像素值.这意味着,我应该保留两份卷数据.与目前的实施类似.
unsigned char*volumeDataOriginal;
unsigned char*volumeDataCurrent;
因此,对于2000x2000x1000数据范围,它将使用大约8Gb(每个音量4Gb).但在Win32中,地址空间为4GB.如何解决这个问题?我应该使用64位应用程序?
编辑:这是我的应用程序的快照 
基本上,我加载了体积数据(来自MRC格式的图像集),并将它们显示在不同的平面查看器中(XY,YX,YZ.Image显示XY平面查看器).我需要保持在上面3种数据访问方法,用于显示特定平面中的图像.使用滑块栏用户可以更改要在所选平面中显示的图像)
提前致谢.
我有两个问题
1)如何从java.runtime库调用unix shell来运行这样的命令
进程p = Runtime.getRuntime().exec(命令);
猫别名>偏见
2)如何从java读取和写入来自unix管道的稳定数据流.我是否必须将所有系统调用(例如开放读取写入管道)
我基本上想要复制这个命令
猫别名>偏见
稳定的数据流将来自java程序偏向而不是cat别名.
我有一个正常的预填充数据库.我想将其迁移到我的应用程序的核心数据.实现这一目标的最佳方法是什么?顺便说一句,我做了这些事情,从apple的sample.exported表sql复制recipes.sqlite数据库.根据核心数据表列重命名列名称(类似于此 - 使用Z_PK的id"主键").用我的价值观填满了那张桌子.但我无法理解列名Z_ENT和Z_OPT.是否有人知道如何轻松地将预先填充的sqlite3数据库迁移到核心数据.
谢谢
我有一个在Sun java 6 JVM中在tomcat下运行的java Web应用程序.有没有办法将scala或clojure REPL附加到正在运行的JVM?
一旦webapp启动并运行,就会在正在运行的VM中设置要进行调用的上下文.因此,这对于调用增量,探索性开发和调试的任意java方法调用非常有用.
我从NetBeans IDE收到以下警告.
Suspicious call to java.util.Collection.contains
Expected type T, actual type Object
Run Code Online (Sandbox Code Playgroud)
我知道这意味着什么吗?
这对我来说没有意义.Both List和Collectionclass的contains方法都使用Object作为它们的方法参数.
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
/**
*
* @author yan-cheng.cheok
*/
public abstract class AbstractCollection<T> implements Collection<T> {
protected List<T> list = new ArrayList<T>();
public boolean contains(Object o) {
// Suspicious call to java.util.Collection.contains
// Expected type T, actual type Object
return list.contains(o);
}
Run Code Online (Sandbox Code Playgroud)
Collection类的代码片段
/**
* Returns <tt>true</tt> if this collection contains the specified element.
* …Run Code Online (Sandbox Code Playgroud) 我找到了这个旧线程(来自一年多以前),它解释了R如何不支持多行注释(例如PHP的/*comment*/).
我想知道过去一年是否已经解决了这个问题,还是有其他选择?(例如,在带有npptor的notepad ++中,你可以标记一堆行并按ctrl + q将它们全部标记为注释,是否有其他IDE的类似解决方案?)
嗨
我怎么能转换enum为IList?
假设您要读取FormWindowState枚举中的所有元素,并返回IList<FormWindowState>包含Normal,Minimized和Maximized
我有以下的代码,真的不 好笑的东西:
class Parent {
public virtual void DoSomething(IEnumerable<string> list) {
Console.WriteLine("Parent.DoSomething(IEnumerable<string>)");
}
}
class Child : Parent {
public override void DoSomething(IEnumerable<string> list) {
Console.WriteLine("Child.DoSomething(IEnumerable<string>)");
}
public void DoSomething(IEnumerable<object> list) {
Console.WriteLine("Child.DoSomething(IEnumerable<object>)");
}
}
Run Code Online (Sandbox Code Playgroud)
如您所见,正确覆盖了DoSomething方法Child.
以下代码的输出非常意外:
...
Child c = new Child();
var list = new List<string> { "Hello", "World!" };
c.DoSomething(list);
...
Run Code Online (Sandbox Code Playgroud)
打印 Child.DoSomething(IEnumerable<object>)
而协助Parent引用c生成正确的输出:
...
Parent c = new Child();
var list = new List<string> { "Hello", …Run Code Online (Sandbox Code Playgroud) 从java中读取excel中的大数字我有很大的问题.当我读71674705时,我得到7.1674705E,这是不行的.
例:
double num = cell.getNumericCellValue();
如何防止数字之间的转换,数字将保持像71674705.
是否可以使用C#查询文件索引服务?文件索引服务是否公开数据库?如果是这样,这个数据库的方案是什么?