摘要: 背景 之前面试的时候被问到关于mq如何保证消息的顺序问题,当时没回答好,网上也没找到满意的答案,于是自己想了一个 问题描述 假设,A和B通过消息队列通信,A发了先后发了2条消息m1和m2。A发出的顺序是m1、m2,结果m2先到达队列,m1后进的,那么在队列中m2在前m1在后,假设这两条消息是有依赖关 阅读全文
posted @ 2018-01-11 13:19 废物大师兄 阅读(9585) 评论(5) 推荐(1) 编辑
摘要: Transaction Isolation Levels InnoDB支持SQL1992标准中的四种隔离级别:READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ、SERIALIZABLE。默认的隔离级别是REPEATABLE READ。 通过SET TRA 阅读全文
posted @ 2018-01-10 22:26 废物大师兄 阅读(1010) 评论(0) 推荐(1) 编辑
摘要: Locking Reads 在同一个事务中,如果你先查询数据,随后对相关数据进行插入或修改,那么在标准的SLELECT中不会给出足够的保护。在你查询期间另一个事务可以更新或者删除相同的行。InnoDB提供两种类型的加锁读: SELECT ... LOCK IN SHARE MODE 给读到的每一行都 阅读全文
posted @ 2018-01-10 18:31 废物大师兄 阅读(3178) 评论(0) 推荐(0) 编辑
摘要: Consistent Nonlocking Reads 一致读意味着InnoDB用多版本来提供一个查询数据库某个时间点的快照。这种查询可以看到在当前世界点之前事务提交的改变,看不到此后提交的改变,更看不到未提交的改变。这个规则有一种例外情况是它可以看到同一个事务中在这个查询之前的改变。这种异常就造成 阅读全文
posted @ 2018-01-10 18:10 废物大师兄 阅读(412) 评论(1) 推荐(0) 编辑
摘要: 共享锁和排它锁 InnoDB实现了标准的行级锁,包括两种类型:共享锁(S)和排它锁(X) 一个共享锁(S)允许事务持有这种锁来读取一行 一个排它锁(X)允许事务持有这种锁来修改或删除一行 如果事务T1对行r持有一个共享锁(S),那么来自其它事务T的对于行r的锁的请求处理如下: 如果T2请求的是共享锁 阅读全文
posted @ 2018-01-10 16:47 废物大师兄 阅读(392) 评论(0) 推荐(0) 编辑
摘要: 上面这段代码一直在用,面试的时候也经常被问到,却从未深究过,不知道线程池到底是怎么回事,今天看看源代码,一探其究竟 线程池主要控制的状态是ctl,它是一个原子的整数,其包含两个概念字段: workerCount:有效的线程数量 runState:线程池的状态 为了在一个整型值里面包含这两个字段,我们 阅读全文
posted @ 2018-01-06 22:59 废物大师兄 阅读(9387) 评论(0) 推荐(2) 编辑
摘要: JDK1.8中的HashMap实现跟JDK1.7中的实现有很大差别。下面分析JDK1.8中的实现,主要看put和get方法。 构造方法的时候并没有初始化,而是在第一次put的时候初始化 putVal方法的主要逻辑是这样的: 1、如果数组还没有初始化(数组长度是0),则先初始化 2、通过hash方法计 阅读全文
posted @ 2018-01-05 22:57 废物大师兄 阅读(4947) 评论(2) 推荐(2) 编辑
摘要: 用户对物品的评分矩阵 × 物品相似矩阵 = 推荐列表 构建物品相似度矩阵的时候可以通过计算两个物品的余弦相似度得出,于是需要构建每个物品在所有用户中的评分矩阵 本例中,不采用余弦相似度的方式计算物品与物品相似度 在MapReduce作业中,输入数据的格式是:用户,物品,评分 第一步、构建用于评分矩阵 阅读全文
posted @ 2018-01-02 14:29 废物大师兄 阅读(19804) 评论(2) 推荐(11) 编辑
摘要: 在MapReduce整个过程可以概括为以下过程: 输入 --> map --> shuffle --> reduce -->输出 输入文件会被切分成多个块,每一块都有一个map task map阶段的输出结果会先写到内存缓冲区,然后由缓冲区写到磁盘上。默认的缓冲区大小是100M,溢出的百分比是0.8 阅读全文
posted @ 2018-01-01 19:32 废物大师兄 阅读(36878) 评论(0) 推荐(12) 编辑
摘要: 阅读全文
posted @ 2018-01-01 16:01 废物大师兄 阅读(494) 评论(0) 推荐(0) 编辑