小编G.y*_*ang的帖子

条件运算符(?:)如何在C++中工作?

我已经编写了下面的代码片段:

#include <string>

int main() {
    std::string str = "test";
    (str == "tes") ? str.replace(0, 1, "T") : 0;
}
Run Code Online (Sandbox Code Playgroud)

(看这里)

不幸的是,它导致logic_error:

terminate called after throwing an instance of 'std::logic_error'
what():  basic_string::_S_construct NULL not valid
Run Code Online (Sandbox Code Playgroud)

我想知道编译器构造字符串对象的原因吗?

c++

12
推荐指数
1
解决办法
954
查看次数

ECDH-ECDSA-AES128-SHA256 和 ECDHE-ECDSA-AES128-SHA256 之间的区别?

我正在使用 ECC 证书来观察 TLS 的工作原理\xef\xbc\x8c有人可以帮助我区分 和 之间的区别ECDH-ECDSA-AES128-SHA256ECDHE-ECDSA-AES128-SHA256

\n\n

使用时ECDHE-ECDSA-AES128-SHA256,客户端和服务器端工作正常。

\n\n
New, TLSv1/SSLv3, Cipher is ECDHE-ECDSA-AES128-SHA256\nServer public key is 256 bit\nSecure Renegotiation IS supported\nCompression: NONE\nExpansion: NONE\nNo ALPN negotiated\nSSL-Session:\n    Protocol  : TLSv1.2\n    Cipher    : ECDHE-ECDSA-AES128-SHA256\n
Run Code Online (Sandbox Code Playgroud)\n\n

使用时出现ECDH-ECDSA-AES128-SHA256故障SERVER_HELLO

\n\n
140344027961248:error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure:s23_clnt.c:769:\n
Run Code Online (Sandbox Code Playgroud)\n

ssl openssl ssl-certificate tls1.2

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

C++:访问空字符串的元素时,没有错误,为什么?

#include <iostream>
#include <string>
using std::string;
int main(){
    string s;
    std::cout << "size:" << s.size() << " "
                      << "capacity:" << s.capacity() << std::endl;
    std::cout << s[3] << std::endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我定义了一个名为s的空字符串对象.两者s.size()s.capacity(),但是,当访问所述元件S [3] ,不存在段错误,为什么呢?

c++ string

-1
推荐指数
1
解决办法
59
查看次数

将一个地图分配给另一个地图在golang中安全吗?

代码如下:

    m := make(map[interface{}]interface{})
    //read
    for i := 0; i< 10000; i++ {
        go func() {
            for range m {

            }
        }()
    }
    //write
    for i := 0; i< 10000; i++ {
        go func() {
            mTemp := make(map[interface{}]interface{})
            m = mTemp
        }()
    }
Run Code Online (Sandbox Code Playgroud)

有10000个读goroutine访问m,另外10000个写goroutine为m分配一个新的map,安全吗?

go

-1
推荐指数
1
解决办法
659
查看次数

同步一次实现

我在Go 1.12中有一个关于sync.Once()的问题。源代码如下:

// Because no call to Do returns until the one call to f returns, if f causes
// Do to be called, it will deadlock.

func (o *Once) Do(f func()) {
    if atomic.LoadUint32(&o.done) == 1 {
        return
    }
    // Slow-path.
    o.m.Lock()
    defer o.m.Unlock()
    if o.done == 0 {
        defer atomic.StoreUint32(&o.done, 1)
        f()
    }
}
Run Code Online (Sandbox Code Playgroud)

为什么不只使用一个uint32变量,然后对该变量执行CAS。它似乎更有效,并且不会导致死锁。

代码如下:

type Once uint32
func (o *Once) Do(f func()) {
    if atomic.CompareAndSwapUint32((*uint32)(o), 0, 1) {
        f()
    }
}
Run Code Online (Sandbox Code Playgroud)

synchronization go

-5
推荐指数
1
解决办法
102
查看次数

标签 统计

c++ ×2

go ×2

openssl ×1

ssl ×1

ssl-certificate ×1

string ×1

synchronization ×1

tls1.2 ×1