数据结构
数据结构
loulanyue_
使我有洛阳二尺地,安能配六国将相
展开
-
深入浅出布隆过滤器
布隆过滤器(Bloom Filter)是1970年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都比一般的算法要好的多,缺点是有一定的误识别率和删除困难。基本概念如果想要判断一个元素是不是在一个集合里,一般想到的是将所有元素保存起来,然后通过比较确定。链表,树等等数据结构都是这种思路. 但是随着...原创 2019-07-05 16:31:22 · 188 阅读 · 1 评论 -
如何证明一棵二叉树是另一个的子数
1. 递归/*struct TreeNode {int val;struct TreeNode *left;struct TreeNode *right;TreeNode(int x) :val(x), left(NULL), right(NULL) {}};*/class Solution {public: bool HasSubtree(TreeNode* pRo...原创 2019-07-11 18:28:15 · 114 阅读 · 0 评论 -
无锁队列的实现原理
队列在计算机中非常重要的一种数据结构,尤其在操作系统中。队列典型的特征是先进先出(FIFO),符合流水线业务流程。在进程间通信、网络通信之间经常采用队列做缓存,缓解数据处理压力。结合自己在工作中遇到的队列问题,总结一下对不同场景下的队列实现。根据操作队列的场景分为:单生产者——单消费者、多生产者——单消费者、单生产者——多消费者、多生产者——多消费者四大模型。其实后面三种的队列,可以归纳为一种多对...原创 2019-07-17 22:07:44 · 6172 阅读 · 2 评论 -
【线程】Thread深入浅出
一、创建线程的方式(1)继承Thread类(2)实现Runnable接口二、start()方法和run()方法的区别(1)只有调用了start()方法,才会表现出多线程的特性,不同线程的run()方法里面的代码交替执行。(2)如果只是调用run()方法,那么代码还是同步执行的,必须等待一个线程的run()方法里面的代码全部执行完毕之后,另外一个线程才可以执行其run()方法里面的代码。...转载 2019-07-21 21:06:09 · 210 阅读 · 0 评论