![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
文章平均质量分 79
brahmsjiang
这个作者很懒,什么都没留下…
展开
-
借助SFINAE判断类成员函数是否存在
分析code可知,Check(0)优先尝试匹配Check(int),而declval()会在不需要知道类型U是否有构造函数的条件下返回U的引用,于是decltype(declval().member(...), true_type)便得以调用类型U的After方法。而我们手动实现的轻量级AOP框架,一般采用动态代理的方式。其实现技术就是拦截目标方法,只要拦截了目标方法,我们就可以在目标方法执行前后做一些非核心逻辑,通过继承方式来实现拦截,需要派生基类并实现基 类接口,这使程序的耦合性增加了。原创 2024-07-17 17:33:46 · 316 阅读 · 0 评论 -
分配自定义内存对齐的内存块的aligned_malloc实现分析
于是通过运算reinterpret_cast(reqBlockAddr + offset) & (~alignment),注意这里的alignment已经自减了(如31),结合刚刚所说31的意义,(reqBlockAddr + offset)即(reqBlockAddr + sizeof(void*) + (--alignment))这个地址不但剔除了个额外备用指针,还把31个byte的余量都剔除了,该地址到内存块末尾正好是我们申请的内存100byte。这样对常规的数据来说没有问题。原创 2024-06-24 11:54:17 · 354 阅读 · 0 评论 -
C++可变参数模板类通过递归和特化方式展开
可以看到普通版本压根没有起作用,原书中普通模板的写法其实误导了我,以为Contains匹配特化版而Contains匹配普通版,其实不是的。除了第一行的template外,只要类名后面还带有有尖括号的叫做模板特化,也就是说这段code第一个模板是Contains普通模板,后面两个是Contains特化模板。于是乎,当语句Contains::value想要实例化时尽量先找特化版本,无特化可选才匹配普通版本,下面是借助。原创 2024-05-09 17:22:39 · 368 阅读 · 0 评论 -
分布式哈希算法
一,普通的Hash方式在介绍分布式哈希算法之前,先了解下普通的Hash是如何实现的。JDK中的java.util.HashMap类就实现了一个哈希表,它的特点有:①创建哈希表(HashMap)需要先指定大小,即默认创建一个能够存储多少个元素的哈希表,它的默认大小为16。②当不断地向HashMap中添加元素时,HashMap越来越满,当添加的元素达到了装载因子乘以表长时,就需要扩容了。扩容时,...转载 2019-12-25 09:26:33 · 280 阅读 · 0 评论 -
两种分治排序:归并排序和快速排序(C语言)
归并排序:思想为:在对待排序列设置一个中心点,以此为界左右进行拆分。在左子序列和右子序列递归执行上述过程,直到每个序列只有一个元素,拆分不动为止。然后对相邻元素进行合并。待合并完成为一个大序列后,对相邻的大序列递归执行这个过程,到整个序列的左、右序列合并完了,整个排序便完了。合并思想为:搞两个指针分别指向左、右子序列的头元素。开辟一个新数组存放结果,大小等同于左右子序列的和。通过俩指针逐个...原创 2017-12-26 17:26:28 · 1395 阅读 · 0 评论 -
Effective C++ (E3 41)笔记之了解隐式接口和编译器多态
对于class而言,接口是显式的,以函数签名式(函数名、参数类型、返回类型)为根基。多态则是通过virtual函数发生在运行期。如有个类widget:class Widget{public: Widget(std::string name="default", std::size_t size=0) :sname(name), ssize(size) { } Widget原创 2018-02-04 14:02:06 · 339 阅读 · 0 评论 -
用std::map、std::sort、冒泡对deque进行排序(C/C++)
同样是一道面试题,函数参数类型是deque。deque是双端队列属于动态数组类型,没有sort成员函数,只有借助其他算法或者支持排序的容器,拷贝回deque。(练习而已,时间空间复杂度不考虑了)一、直接调std::sort,参数分别为起始迭代器,结尾迭代器(指向末元素的后面一个):#include <iostream>#include <deque>#incl...原创 2018-03-10 01:36:26 · 5711 阅读 · 3 评论