小编Shu*_*eng的帖子

Asio:是否有可自动调整大小的缓冲区来接收输入?

Asio:是否有可自动调整大小的缓冲区来接收输入?

我事先并不知道要收到的尺寸,所以我将这个数量发送到标题中.

我查看了http://www.boost.org/doc/libs/1_59_0/doc/html/boost_asio/example/cpp03/chat/chat_message.hpp以获取使用标题的示例,但此示例假定规范为最大体型.

看一下asio :: buffer类,我必须提供一些底层缓冲区,因此不灵活.相反,我看向asio :: streambuf类,但是如下所示使用它会产生分段/内存错误.

我尝试给出最大大小以只读取HEADER_LEN字节即标题.

这种方法有误吗?

void do_recv_header() 
{
    asio::streambuf buf(HEADER_LEN);
    asio::async_read(*g_selected_conn, buf, [this, &buf](const system::error_code& ec, std::size_t bytes_transferred)
    {
        if (ec != 0) {
            std::cout << "async_read() error: " << ec.message() << " (" << ec.value() << ") " << std::endl;
            remove_closed_conn(g_selected_conn);
            SetEvent(g_wait_event);
        }
        else {
            std::istream is(&buf);
            int body_len;
            is >> body_len;
            std::cout << body_len << std::endl;
            do_recv_body(body_len);
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

c++ boost boost-asio

4
推荐指数
1
解决办法
1560
查看次数

变形代码与多态代码有什么区别?

变形代码是输出自身语义等效版本的代码:https : //en.wikipedia.org/wiki/Metamorphic_code

但是,多态代码是使用多态引擎进行变异,同时保持原始算法完整的代码:https : //en.wikipedia.org/wiki/Polymorphic_engine

那么,多态代码依赖于某些其他程序(多态引擎),而变态具有内置此功能,这是唯一的区别吗?

有人可以通过链接或答案提供多态代码示例吗?

谢谢,

c++ security

4
推荐指数
1
解决办法
2037
查看次数

什么是Windows上使用的GS寄存器?

我已经找到了关于FS寄存器的MSDN文档:

https://msdn.microsoft.com/en-us/library/ms253960(v=vs.90).aspx

其中指出:

"在x86环境中,FS寄存器指向线程信息块(TIB)结构的当前值."

但我似乎无法在基于Windows的环境中找到有关GS寄存器目的的严格文档.

有人能告诉我在哪里看,或给出解释?

windows x86 assembly

4
推荐指数
1
解决办法
3534
查看次数

Coq:证明n和(S n)的乘积是偶数

给定程序even,我想证明even (n * (S n)) = true所有自然数n

使用归纳法,很容易看出这种情况是true成立的n = 0。然而,案件(S n) * (S (S n))很难简单化。

我考虑过证明引理even (m * n) = even m /\ even n,但这似乎并不容易。

另外,很容易看出 if even n = trueiff 。even (S n) = false

Fixpoint even (n: nat) : bool :=
  match n with
  | O => true
  | 1 => false
  | S (S n') => even n'
  end.
Run Code Online (Sandbox Code Playgroud)

有人可以提示如何使用 …

functional-programming coq

4
推荐指数
1
解决办法
1531
查看次数

GCC是否被LLVM取代?

我想知道LLVM凭借其较新的设计是否会在开源世界取代GCC?

LLVM应该具有多种检查代码的技术,因此IDE更容易编程等.但是,GCC在性能方面仍然应该是好的.

gcc llvm llvm-gcc

4
推荐指数
1
解决办法
1642
查看次数

如何在Coq中比较两个ASCII字符串?

我想在Coq中比较两个ASCII字符串s1和s2。

似乎标准库不包含用于此目的的函数?

证明字符串相等的规范方法是什么?

functional-programming coq

4
推荐指数
1
解决办法
958
查看次数

如何使用整数列表在LLVM中初始化整数数组?

我有以下要生成C ++的IR代码:

@gArray = global [10 x i32] [i32 3, i32 4, i32 5, i32 6, i32 0, i32 0, i32 0, i32 0, i32 12, i32 0], align 16
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用以下代码行将数组初始化为全零:

    ConstantAggregateZero* const_array_2 = ConstantAggregateZero::get(ArrayTy_0);
    GArray->setInitializer(const_array_2);
Run Code Online (Sandbox Code Playgroud)

如何将LLVM中的数组初始化为值列表?

c++ arrays llvm llvm-c++-api

4
推荐指数
1
解决办法
1164
查看次数

如何在Powershell中创建一个空数组?

我想在Powershell中创建一个空数组,以保存值的"元组"(数组是不可变的).

所以我试着这样的:

类型$arrObject[].我已经阅读+= @(1,2)过将给定元素(即@(1,2))附加到$arr(实际创建一个新数组).但是,在这种情况下,似乎连接数组,为什么?

$arr = @()
$arr += @(1,2)
$arr.Length // 2 (not 1)
Run Code Online (Sandbox Code Playgroud)

如果我这样做,它似乎$arr包含两个数组@(1,2),@(3,4),这是我想要的:

$arr = @()
$arr += @(1,2),@(3,4)
$arr.Length // 2
Run Code Online (Sandbox Code Playgroud)

如何初始化一个空的数组数组,这样我可以一次添加一个子数组,比如$arr += @(1,2)

arrays powershell

4
推荐指数
2
解决办法
6863
查看次数

为什么对于同一输入,调用运算符(&)和Invoke-Expression会产生不同的结果?

据我了解,invoke运算符(&)和Invoke-Expression cmdlet的行为应相似。但是,如下所示,情况并非如此:

PS C:\Users\admin> powershell -Command "& {""([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('ZWNobyAnaGVsb
G93b3JsZCc=')))""}"
echo 'helloworld'

PS C:\Users\admin> powershell -Command "IEX ""([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('ZWNobyAnaGVs
bG93b3JsZCc=')))"""
helloworld
Run Code Online (Sandbox Code Playgroud)

'ZWNobyAnaGVsbG93b3JsZCc='是Base64编码的字符串"echo helloworld"

有人可以澄清吗?

windows powershell

4
推荐指数
1
解决办法
1740
查看次数

如何在不首先创建新变量的情况下使用 Python 格式的字符串 `(f'...')` 在子字符串周围添加空格?

假设,我想将以下.format()'ed 字符串转换为f'...'表达式:

self.logger.debug('{:10} -- {}'.format('Jira', 'Scan: {} '.format(self.scan_id)))
Run Code Online (Sandbox Code Playgroud)

我可以轻松做到:

self.logger.debug(f'Jira      -- {self.scan_id}`)
Run Code Online (Sandbox Code Playgroud)

但是,我不想'Jira'手动添加空格(宽度)。我怎样才能做到这一点而不必先创建一个新变量,如下所示:

s='Jira'
self.logger.debug(f'{s:10} -- {self.scan_id}`)
Run Code Online (Sandbox Code Playgroud)

?

python python-3.x

3
推荐指数
1
解决办法
103
查看次数