string/ostringstream/vector的性能问题
其实最悲伤的一点是,我在之前的代码里大量用到了ostringstream,当时没有意识到这玩意其实在多线程下可能是有副作用的。 查资料的时候发现,ostringstream在构造的时候有加锁行为,在解释一些宽字符串(如汉字)的时候,依赖执行环境的本地化策略,一个可执行文件在运行前是无法确定这些转换策略的,所以ostringstream在构造的时候需要通过 std::locale()来获取本...
其实最悲伤的一点是,我在之前的代码里大量用到了ostringstream,当时没有意识到这玩意其实在多线程下可能是有副作用的。 查资料的时候发现,ostringstream在构造的时候有加锁行为,在解释一些宽字符串(如汉字)的时候,依赖执行环境的本地化策略,一个可执行文件在运行前是无法确定这些转换策略的,所以ostringstream在构造的时候需要通过 std::locale()来获取本...
集中看下,c++代码下,有哪些可行的计时方法 低精度 clock 这种主要使用c语言的clock函数,精度较低,但是可以用于简单的计时。返回的时间其实是个long_t, 单位是ms,所以需要除以CLOCKS_PER_SEC来得到秒数。 #include <ctime> // 需要包含头文件 clock_t start = clock(); /...
Game sudoku Tutorial How-to-Make-a-Computer-Operating-System 30dayMakeCppServer Io workflow TinyWebServer Library folly async_simple Tools btop calculator
了解一下通用的定时器实现, 大多数的通用库是实现其实都不是高精度的timer。我大概看了些,基本的实现都是timer fd + 一个红黑树存储(或者堆/跳表) 过期时间戳,然后用epoll来监听timer fd的读事件,然后在epoll的回调函数里面一次性处理过期的定时器。但是怎么设计task + loop + timer这一套东西,每个库都有自己的一套,核心其实都是这玩意 部分库实现了...
一起学x86-64汇编 https://gpfault.net/posts/asm-tut-1.txt.html https://gpfault.net/posts/asm-tut-2.txt.html https://gpfault.net/posts/asm-tut-3.txt.html ...
基于就绪态的一些函数调用的思考 select, poll, epoll的内容 发现brpc的文档写的很棒,io 处理流的buffer read和write最好分成两个buffer。因为我遇到过回调ondata是裸指针的,然后在收一部分data的时候可以ondata ready给用户,用户直接在这里调用send data。 这一块内存会被反复的覆写,最好是分开,不然就一直copy数据...
perfbook,你可以在paul的blog官网下一pdf版本的pdf,他偶尔会更新 REF perfbook study note Locking in WebKit Understanding NUMA Architecture
发现一个写的挺好的constexpr的介绍, 知乎上有老哥已经开始翻译了 C++ 中 constexpr 的发展史!上 C++ 中 constexpr 的发展史!下 雾里看花:真正意义上的理解 C++ 模板(Template),这个也还可以
能找到的资料大多都是基于socketio去做ssl操作的,typical的记录一下,如果我们已经有了TCP的链路抽象,应该怎么在这个层次之上,实现一个简单的tls client的流程,server的相反就可以了 总结的来讲,ssl加解密的工作和io是分开的,这样做的好处是bio(basic io)能抽象为各类的io,比如socket io,file io。你也可以定义自己的io,只需要预定...
openssl在命令行层面有一些很方便的命令,比如s_client和x509。这里记录一些常用的命令。 s_client s_client命令可以简单的开启一个连接上的客户端,可以用来测试ssl连接。 常用的 openssl s_client -connect host:port -tls1_3 -servername "" X509 证书的数据管理 openssl x509...