c++
阿康不会敲代码
这个作者很懒,什么都没留下…
展开
-
redis的c++ 客户端 redis-plus-plus
hiredis 多线程不安全,要想多线程使用就得维护一个对象池,使用起来比较麻烦。使用redis-plus-plus来操作redis更加的分布,redis类多线程安全,内部维护了一个连接池原创 2023-10-17 11:34:20 · 547 阅读 · 0 评论 -
C++语法糖(std::variant)详解以及示例代码
在上面的程序中,我们使用了一个 std::variant 对象 value 来存储整型、浮点型和字符串类型中的任意一种。在程序中,我们分别将 value 赋值为整型、浮点型和字符串类型,并使用 std::get 来获取对应的值。在之前的版本中,C++ 可以使用 union 来存储不同类型的数据,但是 union 存在一些限制,比如不能存储非 POD 类型和类对象。std::variant 是 C++17 中引入的一个新类模板,它可以存储一组类型中的任意一个,并且能够在运行时进行类型检查和转换。原创 2023-10-17 10:46:54 · 403 阅读 · 0 评论 -
C++17新特性——std::optional
我们在写代码过程中可能经常会碰到这样的情况:某个函数经过一系列计算后获取一个返回值,但是这个函数可能在执行过程中有异常分支,从这些异常分支中return出来的时候还没有得到这个想计算的值。例如想计算得到一个无符号类型,我们可能会在这些异常分支return一个-1出去,用来表示计算失败,或执行有误,甚至不同的负值用来表示不同的异常情况。。。由于这些值的存在,本来返回值应该是uint32类型,为了容纳可能出现的负值和整个uint32的范围,返回值就变成了int64。。。转载 2023-10-17 10:11:58 · 219 阅读 · 0 评论 -
C语言指针作为函数参数 以及智能指针作为函数参数
总所周知指针作为函数参数传递的时候 传递的是指针的拷贝(指针也是变量) 这里提供四种指针的传递方法 改到实际的指针。原创 2022-06-28 17:16:33 · 497 阅读 · 0 评论 -
适配器模式 完成vector和list 到 stack和queue的封装
todo: 代码弄丢了 等补原创 2022-06-27 16:31:56 · 108 阅读 · 0 评论 -
c++为什么没有垃圾回收
垃圾回收内存清理的另一个方面是垃圾回收。在支持垃圾回收的环境中,程序员几乎不必显式地释放与对象关联的内存。运行时库会在某时刻自动清理没有任何引用的对象。与C#和Java不一样,在C++语言中没有内建垃圾回收。在现代C++中,使用智能指针管理内存,在旧代码中,则在对象层次通过new和delete管理内存。诸如shared_ptr的智能指针(稍后讨论)提供类似于“垃圾回收后的内存”的功能,也就是说,销毁某资源的最新shared_ptr实例时,会同时销毁资源。在C++中实现真正的垃圾回收是可能的,但不原创 2022-06-24 17:54:23 · 732 阅读 · 0 评论 -
vim 不常见但好用的命令
● 跳跃○ 向前跳跃是 f○ 向后跳跃是 F● 继续○ 保持方向是 ;○ 改变方向是 ,● 可以加上 [count] 来加速● ^ 是到本行第一个非空字符● 0 是到本行第一个字符,不管是不是空格● g_ 是到本行最后一个非空字符● 两个按键要依次按下● $ 跳到本行最后一个字符,即使他是空格● I○ 相当于^i● A○ 相当于$a● w● 意思是 word● 还学习了向后一个单词● b● 意思是 backward● 配合d有删除的效果● dw 会删到下一个单词的头原创 2022-06-24 17:53:22 · 240 阅读 · 0 评论 -
内存池的线程安全问题
malloc/free据说老版本libc 有俩个版本,当你连接 pthread库的时候它就链接的是线程安全版,否则不是。在glic 2.2 以上无论怎么都是线程安全的。new/deletenew/delete 封装的 malloc/free , 如果malloc/free 是它们就是线程安全的。...原创 2022-06-23 17:04:55 · 239 阅读 · 0 评论 -
内存池的实现4 alloc内存池
alloc 内存池优点: :本质是定长内存池的改进,分配和释放的效率高。可以解决一定长度内存分配的问题。缺点 :存在内碎片的问题,且将一块大内存切小以后,申请大内存无法使用,别的FreeList挂了很多空闲的内存块而分配不到,但是其他的FreeList缺不够分配。在多线程并发场景下,可能会导致线程安全的问题,可以通过加锁解决,但是锁竞争激烈,申请释放效率会降低。所以内存池主要是为了减少cookie 节省内存 不是为了提高效率...原创 2022-06-23 17:01:03 · 121 阅读 · 0 评论 -
内存池中的嵌入式指针
嵌入式指针 可以union改struct 内存分配后 next指针就没用了 直接作为数据空间比较省内存 因为对指针指向的内存存储的时候 编译器是不管你是什么类型的 ,这里有道练习题可以对指针的概念稍微理解一下:由于嵌入式指针节省内存的特点 几乎所有的内存池都会使用内存池一般不是为了提高效率而是为了减少cookie,设想一下节省100万个指针的存储会节省多少空间。...原创 2022-06-23 16:58:43 · 311 阅读 · 0 评论 -
内存池的实现3 固定大小的allocator单线程内存配置器
值得注意的是 到目前为止的内存配置器都是只支持单线程的 要对多线程支持得上锁,下面固定大小 的大小是allocate_1 的大小为基准原创 2022-06-23 16:52:07 · 240 阅读 · 0 评论 -
内存池的实现2 类专用的内存适配器
B类增加了嵌入指针原创 2022-06-23 16:38:59 · 80 阅读 · 0 评论 -
内存池的实现1 :重载
重载operator new 和 delete new原创 2022-06-23 16:36:01 · 108 阅读 · 0 评论 -
c++后端开发书籍推荐
推荐书籍: 略读80% 精读50%C:原创 2022-06-22 10:56:25 · 1116 阅读 · 0 评论 -
c语音的一些特殊关键字
PRETTY_FUNCTION C语言中获取函数名C语言中的__LINE__用以指示本行语句在源文件中的位置信息原创 2022-06-23 17:05:26 · 122 阅读 · 0 评论 -
c++堆栈溢出
c++堆栈溢出原创 2022-06-21 09:27:14 · 251 阅读 · 0 评论 -
二进制数据流处理函数
二进制数据流处理函数原创 2022-06-21 09:25:32 · 170 阅读 · 0 评论 -
c++ const
函数名称不单单是函数名 const 补充内容还有 const 参数类型 函数后头const 只能在成员函数如果const对象 但是我没通过const成员函数 就会报错原创 2022-06-21 09:22:04 · 140 阅读 · 0 评论 -
c++ 指针的强制类型转换
应该是拿到了常量区地址了 不对 拷贝构造了一次 产生了一个局部常量 返回的是栈的地址 所以会强转然后* 会报错原创 2022-06-21 09:17:16 · 253 阅读 · 0 评论 -
c++ this指针
c++ this 指针原创 2022-06-21 09:08:20 · 85 阅读 · 0 评论 -
拷贝构造函数和拷贝赋节省代码最好用一个私有的函数
令 copy assignment操作符调用copy构造函数是不合理的,因为这就像试图构造一个已经存在的对象。这件事如此荒涔,乃至于根本没有相关语法。是有一些看似如你所愿的语法,但其实不是;也的确有些语法背后真正做了它,但它们在某些情况下会造成你的对象败坏,所以我不打算将那些语法呈现给你看。单纯地接受这个叙述吧:你不该令copy assignment 操作符调用copy构造函数。反方向一令 copy构造两数调用 copy assignment操作符一同样无意义。构造两数用来初始化新对象,而assig原创 2022-06-21 08:55:02 · 140 阅读 · 0 评论