摘要: equals() 的作用是用来判断两个对象是否相等。hashCode() 的作用是获取哈希码,也称为散列码;它实际上是返回一个int整数。这个哈希码的作用是确定该对象在哈希表中的索引位置。 先祭一张图,可以思考一下为什么? 我们以“类的用途”来将“hashCode() 和 equals()的关系”分 阅读全文
posted @ 2021-11-27 22:47 残城碎梦 阅读(114) 评论(0) 推荐(0)
摘要: Java语言是一种单继承结构语言,Java中所有的类都有一个共同的祖先。这个祖先就是Object类。如果一个类没有用extends明确指出继承于某个类,那么它默认继承Object类。 Object类是Java中所有类的基类。位于java.lang包中,一共有13个方法。如下图: Object():O 阅读全文
posted @ 2021-11-27 21:31 残城碎梦 阅读(54) 评论(0) 推荐(0)
摘要: 分布式锁常见的三种实现方式: 数据库乐观锁; 基于Redis的分布式锁; 基于ZooKeeper的分布式锁。 Redis要实现分布式锁,以下条件应该得到满足: 互斥性:在任意时刻,只有一个客户端能持有锁。 不能死锁:客户端在持有锁的期间崩溃而没有主动解锁,也能保证后续其他客户端能加锁。 容错性:只要 阅读全文
posted @ 2021-11-27 20:40 残城碎梦 阅读(121) 评论(0) 推荐(0)
摘要: 懒汉模式 懒汉模式是变种最多的单例模式。 所谓懒汉即先不初始化单例,等第一次使用的时候再初始化,即“懒加载”。 基础的懒汉 // 饱汉 // UnThreadSafe public class Singleton1 { private static Singleton1 singleton = nu 阅读全文
posted @ 2021-11-27 18:38 残城碎梦 阅读(53) 评论(0) 推荐(0)
摘要: 保证消息是有顺序的,这是生产系统中常见的问题。 面试题剖析 举个例子,我们以前做过一个 mysql binlog 同步的系统,压力还是非常大的,日同步数据要达到上亿,就是说数据从一个 mysql 库原封不动地同步到另一个 mysql 库里面去(mysql -> mysql)。常见的一点在于说比如大数 阅读全文
posted @ 2021-11-27 16:46 残城碎梦 阅读(207) 评论(0) 推荐(0)
摘要: 分库分表后需要一个全局唯一的 id 来支持。 基于数据库的实现方案 数据库自增id 系统里每次需要得到一个 id的时候,都是往一个库的一个表里插入一条没任何业务含义的数据,获取到一个数据库自增的一个 id。拿到这个 id 之后再往对应的分库分表里去写入。 这个方案的好处就是方便简单,谁都会用;缺点就 阅读全文
posted @ 2021-11-27 16:18 残城碎梦 阅读(118) 评论(0) 推荐(0)
摘要: TreeMap<K,V>的Key值是要求实现java.lang.Comparable,所以迭代的时候TreeMap默认是按照Key值升序排序的;TreeMap的实现是基于红黑树结构。适用于按自然顺序或自定义顺序遍历键(key)。 TreeMap中默认是按照升序进行排序的,如果想要降序,需要通过自定义 阅读全文
posted @ 2021-11-27 15:40 残城碎梦 阅读(114) 评论(0) 推荐(0)
摘要: 首先简单说一下(以下为一个回答的参考模板) (1) 实例化一个Bean -- 也就是我们常说的new; (2) 按照Spring上下文对实例化的Bean进行配置 -- 也就是IOC注入; (3) 如果这个Bean已经实现了BeanNameAware接口,会调用它实现的setBeanName(Stri 阅读全文
posted @ 2021-11-27 15:20 残城碎梦 阅读(65) 评论(0) 推荐(0)
摘要: 首先对mysql锁进行划分: 按照锁的粒度划分:行锁、表锁、页锁 按照锁的使用方式划分:共享锁、排它锁(悲观锁的一种实现) 还有两种思想上的锁:悲观锁、乐观锁。 InnoDB中有几种行级锁类型:Record Lock、Gap Lock、Next-key Lock Record Lock:在索引记录上 阅读全文
posted @ 2021-11-27 13:18 残城碎梦 阅读(579) 评论(0) 推荐(0)
摘要: 事务的四大特性 原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节。事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没有发生一样。 一致性(Consistency):事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。因此当数 阅读全文
posted @ 2021-11-27 13:16 残城碎梦 阅读(301) 评论(0) 推荐(0)
摘要: 事务的并发问题 脏读(Dirty read):当一个事务正在访问数据并且对数据进行了修改,而这种修改还没有提交到数据库中,这时另外一个事务也访问了这个数据,然后使用了这个数据。因为这个数据是还没有提交的数据,那么另外一个事务读到的这个数据是“脏数据”,依据“脏数据”所做的操作可能是不正确的。 丢失修 阅读全文
posted @ 2021-11-27 13:12 残城碎梦 阅读(416) 评论(0) 推荐(0)