随笔分类 -  c++

摘要:使用boost/multiprecision/cpp_dec_float.hpp #include <boost/multiprecision/cpp_dec_float.hpp> using boost::multiprecision::number; using boost::multiprec 阅读全文
posted @ 2024-04-18 22:39 鸭子船长 阅读(127) 评论(0) 推荐(0) 编辑
摘要:通过stringstream类来进行int 和string 的转换。stringstream的头文件是sstream使用stringstream对象简化类型转换 stringstream 我发现重复写入时会出现前面的东西还留在stream中。这时,我首先想到的是clear()函数,这个函数是用来清空 阅读全文
posted @ 2022-08-31 17:23 鸭子船长 阅读(107) 评论(0) 推荐(0) 编辑
摘要:thread_local 是 C++ 11 新引入的一种存储类型,它会影响变量的存储周期。 C++ 中有 4 种存储周期: automatic static dynamic thread 有且只有 thread_local 关键字修饰的变量具有线程(thread)周期,这些变量在线程开始的时候被生成 阅读全文
posted @ 2022-07-07 14:17 鸭子船长 阅读(662) 评论(0) 推荐(0) 编辑
摘要:1、原因: GCC 5在编译时会将std::string类型按c++11下std::__cxx11::basic_string<char> 来处理,这时如果你调用的库在编译时未启用c++11特性则其中的std::string实际上是std::basic_string<char> ,如果将c++11下 阅读全文
posted @ 2021-11-23 16:27 鸭子船长 阅读(2499) 评论(0) 推荐(0) 编辑
摘要:参照:http://blog.csdn.net/xiaohuangcat/article/details/18267561 在多线程的环境下,进程内的所有线程共享进程的数据空间。因此全局变量为所有线程共享。在程序设计中有时需要保存线程自己的全局变量,这种特殊的变量仅在线程内部有效。 如常见的errn 阅读全文
posted @ 2021-08-26 20:30 鸭子船长 阅读(370) 评论(0) 推荐(0) 编辑
摘要:格式: _asm_("asm statements":outputs:inputs:registers-modified) 其中,"asm statements"是汇编语句表达式,outputs,inputs,register-modified都是可选参数,以冒号隔开,且一次以0~9编号,如outp 阅读全文
posted @ 2021-07-15 11:19 鸭子船长 阅读(1004) 评论(0) 推荐(0) 编辑
摘要:C++另外有一种匿名的命名空间,来保证生成的符号是局部的,这样对于匿名空间中的变量等,外部都是不可见的. //test3.cpp static void bar(){} namespace //匿名的命名空间 { float bar2; int foo; } //test4.cpp extern i 阅读全文
posted @ 2019-09-20 17:23 鸭子船长 阅读(670) 评论(0) 推荐(0) 编辑
摘要:工作中遇到这样一个问题,某个多级流水多线程的程序,在压力测试下会偶现segmentation fault11错误,错误出现在运行类函数的地方,而后排查后发现是由于多线程争抢导致类被析构后才走入判断,导致出现内存越界。 代码流程如上: 1、多级流水:Task1->Task2->Task3,且每个Tas 阅读全文
posted @ 2019-07-04 14:36 鸭子船长 阅读(1328) 评论(0) 推荐(0) 编辑
摘要:字节序(byte order)关系到多字节整数(short/int16、int/int32,int64)和浮点数的各字节在内存中的存放顺序。字节序分为两种:小端字节序(little endian)和大端字节序(big endian)。小端字节序:低字节存放在内存低地址,例如对两字节整数0x0100( 阅读全文
posted @ 2019-01-18 19:56 鸭子船长 阅读(4851) 评论(0) 推荐(0) 编辑
摘要:O_DIRECT和O_SYNC是系统调用open的flag参数。通过指定open的flag参数,以特定的文件描述符打开某一文件。 这两个flag会对写盘的性能有很大的影响,因此对这两个flag做一些详细的了解。 先看一个open函数的使用例子. O_DIRECT: 无缓冲的输入、输出。 O_SYNC 阅读全文
posted @ 2019-01-18 16:22 鸭子船长 阅读(5742) 评论(0) 推荐(2) 编辑
摘要:一. 原理 tcmalloc就是一个内存分配器,管理堆内存,主要影响malloc和free,用于降低频繁分配、释放内存造成的性能损耗,并且有效地控制内存碎片。glibc中的内存分配器是ptmalloc2,tcmalloc号称要比它快。一次malloc和free操作,ptmalloc需要300ns,而 阅读全文
posted @ 2019-01-18 16:04 鸭子船长 阅读(540) 评论(0) 推荐(0) 编辑
摘要:转载于:http://www.cnhalo.net/2016/06/13/memory-optimize/ 概述 需求 系统的物理内存是有限的,而对内存的需求是变化的, 程序的动态性越强,内存管理就越重要,选择合适的内存管理算法会带来明显的性能提升。比如nginx, 它在每个连接accept后会ma 阅读全文
posted @ 2019-01-18 16:03 鸭子船长 阅读(881) 评论(0) 推荐(0) 编辑
摘要:1 基本解释:extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。此外extern也可用来进行链接指定。 也就是说extern有两个作用,第一个,当它与"C"一起连用时,如: extern "C" void fun(int a 阅读全文
posted @ 2018-09-13 16:16 鸭子船长 阅读(261) 评论(0) 推荐(0) 编辑
摘要:std::thread不提供获取当前线程的系统id的方法,仅可以获取当前的线程id,但是我们可以通过建立索引表的方式来实现 而后用其创建线程 然后用如下方式获取线程id 转自:https://stackoverflow.com/questions/15708983/how-can-you-get-t 阅读全文
posted @ 2018-07-23 16:30 鸭子船长 阅读(8287) 评论(0) 推荐(0) 编辑
摘要:查看ace代码时发现如下代码 使用NDEBUG可以使assert失效,这在c中同样成立。 而static_cast<void>(0)的作用为避免编译器弹出warning提醒,这是因为如果这里直接写0的话,则当编译时,由于该处没有执行代码,编译器会弹出:"Warning: expression 0;  阅读全文
posted @ 2018-07-13 17:57 鸭子船长 阅读(1844) 评论(0) 推荐(0) 编辑
摘要:作者:神奇先生链接:https://www.zhihu.com/question/57048704/answer/151446405来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 编程时经常会写的一种函数叫做named constructor,这种函数的返回值是某个类 阅读全文
posted @ 2018-05-10 16:34 鸭子船长 阅读(2301) 评论(0) 推荐(0) 编辑
摘要:形参为unique_ptr u2,而后实参为std::move(unique_ptr u1),这样会将原本u1的内存传递给u2,避免了传递拷贝。例如: 阅读全文
posted @ 2018-04-08 17:52 鸭子船长 阅读(1602) 评论(0) 推荐(0) 编辑
摘要:从公司的项目源码中看到了这个东西,觉得挺好用的,写篇博客做下小总结。下面的操作以C++为编程语言,protoc的版本为libprotoc 3.2.0。 一、Protobuf? 1. 是什么? Google Protocol Buffer(简称 Protobuf)是一种轻便高效的结构化数据存储格式,平 阅读全文
posted @ 2018-04-02 18:12 鸭子船长 阅读(1065) 评论(0) 推荐(0) 编辑
摘要:std::move的定义如下: 通过引用折叠,此参数可以与任何类型的实参匹配,既可以传递给move一个左值引用也可以传右值引用,如: string s1("hi"), s2; s2 = std::move(string("bye1!"));//正确,从一个右值移动数据 s2 = std::move( 阅读全文
posted @ 2018-03-01 16:50 鸭子船长 阅读(216) 评论(0) 推荐(0) 编辑
摘要:当传入对象时,函数有时会需要拷贝该对象并存入容器中,例如: 类定义: 函数定义: 然而此时,add_item并不知道要分配的类型。当add_item进行内存分配时,它将拷贝sale参数,如 然而这条表达式却可能是不正确的:new为我们请求的类型分配内存,因此它将分配一个Quote类型的对象并拷贝sa 阅读全文
posted @ 2018-02-28 17:31 鸭子船长 阅读(206) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示