假设我们有十亿个独特的图像,每个图像一兆字节.我们计算每个文件内容的SHA-256哈希值.碰撞的可能性取决于:
假设它为零,我们可以在多大程度上忽略这种可能性?
当您将鼠标指针放在任何Qt函数/类上时,它会显示一个弹出窗口,其中简要描述了它的作用,取自函数/类上方注释中的文档.
对于我的函数/类,我有doxygen格式的文档:
/**
Returns foo
*/
QString getFoo() {
return "foo";
}
Run Code Online (Sandbox Code Playgroud)
当使用此函数时,我想在鼠标指针位于函数名称上时查看与我的文档相同类型的弹出窗口.
用Qt Creator可以做到吗?
当用python下载大文件时,我想为时间限制设置一个时间限制,不仅适用于连接过程,还适用于下载.
我正在尝试使用以下python代码:
import requests
r = requests.get('http://ipv4.download.thinkbroadband.com/1GB.zip', timeout = 0.5, prefetch = False)
print r.headers['content-length']
print len(r.raw.read())
Run Code Online (Sandbox Code Playgroud)
这不起作用(下载没有时间限制),正如文档中正确指出的那样:https://requests.readthedocs.org/en/latest/user/quickstart/#timeouts
如果有可能,这将是伟大的:
r.raw.read(timeout = 10)
Run Code Online (Sandbox Code Playgroud)
问题是,如何为下载设置时间限制?
我在四核处理器上使用Tesseract进行OCR.为了更好的速度,我想一次读4个单词,使用4个线程.同时从多个线程调用Tesseract是否安全?
注意:每个线程将处理不同的非共享映像.
注意:由于速度的原因,用锁保护是不行的.
我发现在java中计算sha256很慢.例如,它比python慢.我写了两个简单的基准测试来计算1GB零的sha256.在这两种情况下,结果都是相同且正确的,但是python时间是5653ms,java时间是8623ms(慢了53%).结果每次都相似,这对我来说是一个重要的区别.
如何更快地在java中进行计算?
基准:
Java的:
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class BenchmarkSha256 {
public static void main(String... args) throws NoSuchAlgorithmException {
int size = 1024 * 1024;
byte[] bytes = new byte[size];
MessageDigest md = MessageDigest.getInstance("SHA-256");
long startTime = System.nanoTime();
for (int i = 0; i < 1024; i++)
md.update(bytes, 0, size);
long endTime = System.nanoTime();
System.out.println(String.format("%1$064x", new java.math.BigInteger(1, md.digest())));
System.out.println(String.format("%d ms", (endTime - startTime) / 1000000));
}
}
Run Code Online (Sandbox Code Playgroud)
蟒蛇:
#!/usr/bin/env python
import hashlib
import time
size = 1024 * 1024 …Run Code Online (Sandbox Code Playgroud) 我需要在360度进行模板匹配.
大多数模板是80*120,图像是640*480灰度(8位).
对于非旋转我使用的是opencv cvmatchtemplate,它工作得非常好.
我尝试在各种角度旋转模板并进行cvmatchtemplate,它正在工作但耗费了太多时间.
对于正常模板匹配,它需要12毫秒,而对于360度,需要小于50毫秒.
我想在scala中编写交互式shell,支持readline(Ctrl-l,箭头键,行编辑,历史记录等).
我知道如何在python中做到这一点:
# enable support for Ctrl-l, arrow keys, line editing, history, etc.
import readline
finished = False
while not finished:
try:
line = raw_input('> ')
if line:
if line == 'q':
finished = True
else:
print line
except KeyboardInterrupt:
print 'Ctrl-c'; finished = True
except EOFError:
print 'Ctrl-d'; finished = True
Run Code Online (Sandbox Code Playgroud)
我想写一个简单的scala程序,具有完全相同的行为.到目前为止,我最接近的解决方案是以下scala:
// used to support Ctrl-l, arrow keys, line editing, history, etc.
import scala.tools.jline
val consoleReader = new jline.console.ConsoleReader()
var finished = false
while (!finished) { …Run Code Online (Sandbox Code Playgroud) 我想创建 java 桌面应用程序,它将数据离线存储在数据库中(不仅仅是一些配置文件)。当用户离线时,应用程序应该可以正常工作。当用户在线时,离线数据库应该能够与在线 master 同步。
任何想法可以使用哪些技术来实现这一目标?
如果在命令行或CMD上指定了简单的运行命令,则程序退出时容器将停止.但是,如果:
该程序产生新的进程,然后蚂蚁退出?
'exec'在命令行中使用,然后第一个命令退出?
你还可以指向文档吗?
谢谢!
我有以下Java代码:
public static BufferedImage createImage(byte[] data, int width, int height)
{
BufferedImage res = new BufferedImage(width, height, BufferedImage.TYPE_BYTE_GRAY);
byte[] rdata = ((DataBufferByte)res.getRaster().getDataBuffer()).getData();
for (int y = 0; y < height; y++) {
int yi = y * width;
for (int x = 0; x < width; x++) {
rdata[yi] = data[yi];
yi++;
}
}
return res;
}
Run Code Online (Sandbox Code Playgroud)
有更快的方法吗?
在C++中,我会使用memcpy,但在Java中?
或者也许可以直接用传递的数据初始化结果图像?
java ×3
optimization ×2
sha ×2
algorithm ×1
concurrency ×1
database ×1
docker ×1
hash ×1
interactive ×1
ocr ×1
opencv ×1
python ×1
qt ×1
qt-creator ×1
readline ×1
reentrancy ×1
scala ×1
sha256 ×1
shell ×1
tesseract ×1
urllib3 ×1