我们有一个搜索结果映射列表,例如一个简单的URL映射可能看起来像
"stackoverflow" - >"www.stackoverflow.com""joel" - >"www.joelonsoftware.com"
所以搜索确切的短语工作正常.
现在我们正在寻找增量搜索/预先输入,例如"stackover"也将返回"www.stackoverflow.com".我们当然可以相应地填充我们的地图,例如将每个可能的字符串放入地图中,从给定最小尺寸的所有变化开始
- >地图键:
stack - > stackoverflow ... stackoverf - > stackoverflow stackoverfl - > stackoverflow stackoverflo - > stackoverflow stackoverflow - > stackoverflow
然而,这意味着需要更高的内存占用(我猜).
有什么建议?
我有一个3D网格(体素),其中一些体素被填充,有些则没有.3D网格稀疏地填充,因此我得到了filledVoxels具有填充体素的坐标(x,y,z)的集合.我想要做的是找出每个填充的体素,也填充了多少相邻的体素.
这是一个例子:
现在我有这个算法:
voxelCount = new Map<Voxel, Integer>();
for (voxel v in filledVoxels)
count = checkAllNeighbors(v, filledVoxels);
voxelCount[v] = count;
end
Run Code Online (Sandbox Code Playgroud)
checkAllNeighbors()查找所有26个周围的体素.所以总的来说我做了26*filledVoxels.size()查找,这很慢.
有没有办法减少所需的查找次数?当您查看上面的示例时,您可以看到我正在多次检查相同的体素,因此可以通过一些聪明的缓存来摆脱查找.
如果这有任何帮助,体素代表一个体素化的3D表面(但它可能有洞).我通常想得到一个包含5或6个邻居的所有体素的列表.
我的老板不想再听到重构这个词,因为每当他问一个人他在做什么时,他们会回答" 我正在重构! "
我需要找到可以让经理满意的重构的替代描述.Thesaurus.com没有找到任何重构,任何想法,当他问我在做什么时,我应该告诉他什么?
我想要一个小的批处理脚本,每当我关闭 Visual Studio GUI 时,它都会自动运行 subversion 更新,然后是 CMAKE,然后使用解决方案重新启动 Visual Studio。不幸的是,我似乎无法编写启动 Visual Studio GUI 并等到它完成。
我已经试过了
call "%VS100COMNTOOLS%\vsvars32.bat"
start /wait devenv solution.sln
Run Code Online (Sandbox Code Playgroud)
它启动了 GUI,但命令行立即返回而无需等待。
我基本上想要像
call "%VS100COMNTOOLS%\vsvars32.bat"
:START
svn update
cmake
start /wait devenv solution.sln
GOTO START
Run Code Online (Sandbox Code Playgroud)
甚至可以等待 GUI 关闭吗?
我想有一个SynchronousQueue从一个线程插入元素的位置put(),因此输入被阻塞,直到元素被另一个线程占用.
在另一个线程中,我执行了大量计算,并且不时想要检查元素是否已经可用,并使用它.但似乎isEmpty()总是返回true,即使另一个线程正在等待put()通话.
这怎么可能呢?以下是示例代码:
@Test
public void testQueue() throws InterruptedException {
final BlockingQueue<Integer> queue = new SynchronousQueue<Integer>();
Thread t = new Thread(new Runnable() {
@Override
public void run() {
while (true) {
if (!queue.isEmpty()) {
try {
queue.take();
System.out.println("taken!");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
// do useful computations here (busy wait)
}
}
});
t.start();
queue.put(1234);
// this point is never reached!
System.out.println("hello");
}
Run Code Online (Sandbox Code Playgroud)
编辑:既不是isEmpty()也不是peek()工作,必须使用poll().谢谢!