我正在寻找一种(多平台)方式为我的C++程序执行非阻塞控制台输入,因此我可以在程序不断运行时处理用户命令.该计划还将同时输出信息.
什么是最好/最简单的方法?只要他们使用许可许可证,我就可以使用像boost这样的外部库.
我需要一个如何使用Crypto ++从std :: string生成SHA256哈希并输出std :: string的示例.我似乎无法弄明白.我尝试的一切都给了我无效的输出.
这是interjay回答后的新代码:
string SHA256(string data)
{
byte const* pbData = (byte*) data.data();
unsigned int nDataLen = data.size();
byte abDigest[CryptoPP::SHA256::DIGESTSIZE];
CryptoPP::SHA256().CalculateDigest(abDigest, pbData, nDataLen);
return string((char*)abDigest);
}
Run Code Online (Sandbox Code Playgroud)
SHA256的输出("A"); 是

如何将其转换为可读格式?
感谢interjay的回答,我能够生成最终的哈希值.
我目前正在编写一个多线程应用程序,需要访问数据库才能提供请求.我看到很多人说使用许多持久数据库连接的池是这种类型的应用程序的方法,但我试图解决为什么会出现这种情况.
请记住,我正在Erlang中设计此应用程序,因此我将大量使用线程/进程/工作程序.
那么让我们比较两种情况:
您有一个拥有单个数据库连接的线程.所有客户端处理线程都与此线程通信以进行数据库查询.
您有一个线程池,每个线程都有自己的数据库连接.当客户端处理线程想要访问数据库时,它从池中获取其中一个线程,并使用它来查询数据库.
在第一种情况下,我看到很多人说它很糟糕,因为让一个线程处理所有与数据库相关的查询反过来会导致瓶颈.但我的困惑如下:那个单线程中的瓶颈实际上不是数据库本身吗?如果线程正在做的就是通过其连接句柄查询数据库,是不是在等待DB响应请求的主要延迟源?如何在这个问题上抛出更多的连接线程来解决它?
我的C++程序有一个主循环,一直运行直到程序说完了.在主循环中,我希望能够在某些时间间隔内发生某些事情.像这样:
int main()
{
while(true)
{
if(ThirtySecondsHasPassed())
{
doThis();
}
doEverythingElse();
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我希望每30秒调用一次doThis(),如果不需要调用,则允许主循环继续并处理其他所有内容.
我怎样才能做到这一点?另请注意,此计划旨在持续运行数天,数周甚至数月.