摘要:
布隆过滤器 面试被问到了海量数据处理相关的问题。然后发现了布隆过滤器这个数据结构,学了一下,结果就是这是acm里面用过的算法。 我把布隆过滤器分解为两个模块,也就是多次哈希+bitset。 多次哈希用来优化时间,bitset优化了空间。 时间复杂度上的原理 我们想想哈希这个算法有什么有什么缺点?当然 阅读全文
摘要:
排序算法 学了几年算法了,回头看几种排序算法居然不会。。。。 偷了菜鸟驿站的图 不会很认真的分析时间复杂度、空间复杂度,重在实现。 冒泡排序 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 每一轮都会找到一个最大的值,所以可以保证算法正确性。 时间复杂度是稳定的$n^2$不会有改变 void 阅读全文
摘要:
allocator类 群友之前问了一个问题,C++除了new和malloc还有什么分配内存的方法,当时我在想mmap()、brk()这些系统调用,后来突然想到STL里面有一个allocator类似乎也是做空间分配的。现在来学一学。 new/delete的局限性 抽象的描述new的行为:将内存分配和对 阅读全文
摘要:
DNS DNS是什么? DNS是一个域名系统,它的作用是进行主机名和IP地址的转换。一方面,它是一个分层的DNS服务器实现的分布式数据库,另一方面,它是一个使得主机能够查询分布式数据库的应用层协议。 一个具体实例,我们的客户端向Web服务器www.scuec.edu发送一个http请求,那么我们必须 阅读全文
摘要:
C++多线程笔记 关于什么是线程可以看看小林的这篇文章 这篇笔记主要是在整理C++thread库的使用,对于较为高级的比如写一个线程池,在我之前的文章中有写过。 OK,让我们看看C++中的多线程吧。 1.1 创建一个线程 C++提供了std::thread来创建一个线程。使用时需要包含头文件,该头文 阅读全文
摘要:
设计模式(7)原型模式 ##情景 原型模式 如何复制一个对象?对于一个类而言,它存在一些私有的成员,这些成员无法被访问,那么就需要提供一个接口来实现对象复制。 解决方案 原型模式将克隆过程委派给被克隆的实际对象。 模式为所有支持克隆的对象声明了一个通用接口, 该接口让你能够克隆对象, 同时又无需将代 阅读全文
摘要:
第一次学TCP/UDP的记录 现在来看学的真有点浅了,所以今天再来看看TCP。当然不排除以后还会写TCP/UDP(3),TCP/UDP(4),还有以前很想学的QUIC。 还是三次握手和四次挥手 MTU和MSS MTU:一个网络包的最大长度。 MSS:出去IP和TCP头部之后,一个网络包容纳的TCP数 阅读全文
摘要:
学一学mysql的事务 事务是什么 事务是一组数据库操作的集合,比如我们建了张员工表,然后我们会插入、查询员工信息,我们保证这一组操作要全部成功要么就全部失败。 CREATE TABLE test( id int(5)) engine=innodb; begin; # 开始事务 insert int 阅读全文
摘要:
字典树 怎么存储一篇文章里面出现的所有的单词,需要将所有单词存下来吗?字典树给出的答案是no。 朴素的字典树 字典树,英文名 trie。顾名思义,就是一个像字典一样的树。 看看OIwiki的这张图: 对于一个单词比如caab,就表示从1->4->8->13这样一条路径。我们可以使用13来表示这个单词 阅读全文
摘要:
学学MySql中的隔离性 之前写了一篇事务的笔记没保存,吐了。 为什么需要隔离性? 数据库上有多个事务同时执行的时候,就可能出现脏读、不可重复读、幻读的问题。 脏读:当前事务A可以读到其他事务B未提交的数据,也就是脏读 不可重复读:在事务A中先后两次读取同一个数据,两次结果不相同,这种就是不可重复读 阅读全文