自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 资源 (1)
  • 问答 (4)
  • 收藏
  • 关注

原创 C++如何使指针指向泛型的对象

引言这是一次在代码中遇到的一个小问题,在网上没有找到解答,遂在解决后分享出来,帮助有同样问题的朋友直入主题 我们来看一段简单的代码来引入我们的问题 template<typename Type> struct wrapper_type{ Type fun; ... };首先这是一个简单泛型对象的声明,假如现在有一个需求,就...

2020-01-29 20:48:57 996

原创 future_error详解

引言遇到这个问题以后第一次没有得到解答 随后经测试和查阅资料知道了它的由来 希望能有相同问题的朋友能得到帮助

2020-01-24 15:38:59 3806

原创 自旋锁与互斥锁

互斥锁(mutex)当一个线程试图锁定一个互斥锁而没有成功时,由于该互斥锁已经被锁定,它将进入睡眠状态,并立即允许另一个线程运行,它将会立即睡眠直到被唤醒,当它睡眠前的上锁的线程解锁时,多个沉睡的线程会竞争锁,得到锁的话会被唤醒.自旋锁(spin-lock)当一个线程使用自旋锁锁定没有成功的时候,它将不断的尝试锁定,直到锁定成功;因此,自旋锁不允许其他线程代替它,但是,一旦当前线程的被分配的...

2020-01-24 14:37:00 421

原创 为什么我们要使用std::alloctor

std::allocator is used when you want to separate allocation and do construction in two steps. It is also used when separate destruction and deallocation is done in two steps. All the STL containers in...

2020-01-23 20:01:57 547

原创 问题解决: invalid static_cast from type 'unresolved overloaded function type' to type 'xxx'

引言在编写一个多线程的代码时遇到这个问题,在csdn,博客园查询无果后在stackoverflow上得到了解答,遂在解答后分享出来,希望能帮到有同样问题的朋友.问题复现问题解决: invalid static_cast from type ‘unresolved overloaded function type’ to type ‘xxx’...

2020-01-22 23:24:44 4876

原创 std::future如何实现

引言C++11中引入了一个异步编程的利器std::future(虽然javaGDK5中就已经引入了),这显然使我们的异步编程的过程变得即简介又易维护,但学习不能仅停留在知道它是干什么的的阶段,显然正确的使用时机也是我们需要学习的,但是总感觉对其使用有点不得心应手,遂决定简单的看看源码,看看其是如何实现的.猜测在看源码之前 首先自己想一想这个过程当然也是极好的 那我们一起来捋一捋吧 其实过程想...

2020-01-20 21:19:03 2440 1

原创 std::string源码剖析(1) 体系结构

引言一直以来广大C++使用者对标准库中std::string褒贬不一,笔者整理了一下,大致是以下几点不支持一些常用功能,例如format有algorithm的情况下.basic_string支持的功能太多,过于冗余,缺少编码信息,对于宽字节等有其它的容器,比如wstring,u16string,u32string.不少地方效率不够比起字符串更应该叫字节串,它并不像其他语言一样只读的(...

2020-01-18 23:36:29 971

原创 我们该如何搞定死锁避免?

文章目录引言死锁是什么死锁的产生死锁避免固定顺序获取锁层次锁层次锁原理C++实现try_lockstd::lock鸵鸟算法引言正如 Herb Sutter所言 “Free lunch is over.”,程序员坐等处理器升级而提升程序的效率的时代已经过去,随着多核机器的发展,软件要想提升效率,必须由程序员去设计高效的软件其可以并行执行多个任务以提升效率,听起来是个不错的提升效率的方法,但那不是...

2020-01-18 23:06:52 567

原创 为什么只有atomic_flag是保证无锁的

引言

2020-01-18 20:51:15 741

原创 std::unique_lock的灵活性体现在哪里

引言

2020-01-18 15:09:11 333

翻译 uint与int的区别

为什么与如何使用uint由于我们使用正负数字比仅带正数的时候多,所以我们的int被设计为有符号的,如果我们想使用一个值没有符号,这个时候我们就可以使用UINT,UINT创建了一个整数,该整数与处理器处理的位数相同,你唯一使用UINT的理由如下:当你想使用一个很大的数字,但最大值会取决于机器而改变,那对你来说可不是个好主意.https://makeapppie.com/2016/01/29/ho...

2020-01-11 13:54:22 9738

原创 简单实现LZ77压缩算法

引言因为哈弗曼编码对于大文件的压缩有很大的局限性 且压缩比十分有限 所以决定根据LZ77算法写一个简单的压缩库组成因为时间较为紧张 目前完成了最基础的ZIP算法的编写 即根据LZ77算法(滑动窗口压缩)先对压缩文件得到一个数据三元组 然后针对数字出现的频率再进行哈弗曼算法 为了更好的压缩比 我并没有先参考的资料中的方法 采用了建三棵哈弗曼树的做法效率对于一般的文件 压缩比可以达到百分之4...

2020-01-07 16:18:43 1119

原创 改进std::string

String因为std::string中有一些地方为了保证空间与时间的平衡从而采用了在时间上较为保守的方式 所以我在此基础上略微的打破了这个平衡 使得更追求时间效率.做了什么char_traits<_CharT>中的比较方法较为低效 为逐字符比较 导致basic_string中find系方法较为低效 为O(n2), 遂改为内部使用strstr()函数,也可改为kmp,两者效率差...

2020-01-07 16:09:19 338 1

原创 C++迭代器后置++与前置++有什么区别

引言在看到代码后感觉确实以前只是知道为什么 有点人云亦云的感觉 而没有眼见为实过 遂记录这篇博客 解决有同等需求的朋友Talk is cheap, show your std code. __normal_iterator&//前置 operator++() _GLIBCXX_NOEXCEPT //noexcept { ++_M_current;/...

2020-01-03 22:00:21 1343

原创 std::__are_same 简单解释

引言在std::string中发现了这个函数,但当时并没有找到这个函数的具体意义,虽然能猜个大概,但始终不算解决 遂在解决后记录 以帮助其他有相同问题的朋友cpp_type_traits.h00115 // Compare for equality of types.00116 template<typename, typename>00117 struct ...

2020-01-03 21:54:04 335

GCC 10.2 2020年7月23日发布

外网上下的太慢,直接来这里取果实就好。ps:开源软件,收钱违法 虽然官网上说这个版本已经支持了C++20的部分特性,比如Coroutinue,Concept,飞船运算符等,但经过我的测试发现其实并没有支持,换句话来说编译C++20代码失败了,可能是我哪里操作有问题,大家使用以后也欢迎给出自己的想法。

2020-10-01

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除