我目前正在尝试学习Haskell,我真的无法理解在do-block中只使用一个monad的概念.如果我有foo :: Int -> Maybe Int并且想hIsEOF :: Handle -> IO Bool在这个函数中使用例如函数.有人可以在一些基本的例子上向我解释我将如何使用hIsEOF并可以某种方式使用Bool?
我一直试图在这里和谷歌搜索,但我总是遇到一些高级的东西,基本上没有人解释如何,他们只是给出如何适应OP的代码的建议.我看到那些线程中提到的monad变换器,但即使在阅读了一些资源之后,我似乎也找不到如何使用它们的正确方法.
我在使用 SNI 的单个服务器上运行了 100 个 HTTPS 服务。(实际上,我无权访问它们。这是一个分配。我只知道它们的域名N.xxx.yy,其中 N 的范围是 00 到 99。)分配的目标是评估每个连接的安全性这些服务器。所以一些服务器包含过期的证书,带有错误 CN 的证书等。
我的问题是我无法通过某些服务器上的握手。我已经使用 OpenSSL 用 C++ 编写了自己的应用程序,但我也尝试过使用openssl s_client. 这是我连接到服务器的方式:
openssl s_client -host N.xxx.yy -port 443 -verify 1 -servername N.xxx.yy -CAfile assignment-ca.pem
Run Code Online (Sandbox Code Playgroud)
这就是我得到的:
139625941858168:error:14094438:SSL routines:ssl3_read_bytes:tlsv1 alert internal error:s3_pkt.c:1493:SSL alert number 80
139625941858168:error:140790E5:SSL routines:ssl23_write:ssl handshake failure:s23_lib.c:177:
Run Code Online (Sandbox Code Playgroud)
在 Wireshark 中,我看到客户端发送了ClientHello,服务器响应ServerHello(选择 TLSv1.2 和ECDHE-RSA-AES256-GCM-SHA384)Certificate,然后它向我Alert发送了包含Internal Error (80).
在尝试了不同的事情后,我发现如果我跑s_client了-tls1或者-tls1_1我可以成功地通过握手。-tls1_2不起作用。更奇怪的是,即使协商了 TLSv1.2,通过 Chrome/Firefox/任何其他浏览器的连接也能成功。从我所见,Chrome …
我有一个程序可以对大量文件(> 10 000)执行一些操作。它产生 N 个工作线程,每个线程映射一些文件,做一些工作并映射它。
我现在面临的问题是,每当我只使用 1 个进程和 N 个工作线程时,它的性能比生成 2 个进程(每个进程有 N/2 个工作线程)要差。我可以看到这一点,iotop因为 1 个进程+N 个线程仅使用大约 75% 的磁盘带宽,而 2 个进程+N/2 个线程则使用全部带宽。
一些注意事项:
MADV_SEQUENTIAL但如果我删除它或更改 suggest 参数,它似乎不会改变任何东西(或者只是减慢速度)。htop似乎也是相同的。所以我的问题是:
编辑:
#include <condition_variable>
#include <deque>
#include <filesystem>
#include <iostream>
#include <mutex>
#include <thread>
#include <vector>
#include <fcntl.h>
#include <sys/mman.h>
#include <unistd.h>
#ifndef WORKERS …Run Code Online (Sandbox Code Playgroud) 我已经使用gtest了一段时间,但最近想尝试一下gmock。我正在尝试使用返回值但也通过引用返回输出参数中的内容的方法来模拟类。这是我的小代码。
#include <vector>
#include "gmock/gmock.h"
#include "gtest/gtest.h"
using namespace ::testing;
class AReal
{
public:
virtual bool foo(std::vector<int>& v) const = 0;
};
class AMock : public AReal
{
public:
MOCK_CONST_METHOD1(foo, bool(std::vector<int>&));
};
class B
{
public:
B(AReal* _a) : a(_a) {}
bool foo(std::vector<int>& v) const { return a->foo(v); }
private:
AReal* a;
};
class FooTest : public Test {};
TEST_F(FooTest,
DummyTestVector) {
AMock a;
B b(&a);
std::vector<int> exp = { 1, 2, 3 };
EXPECT_CALL(a, foo(_)) …Run Code Online (Sandbox Code Playgroud)