【026】GC如何判断一个对象是否存活

HashMap如何解决hash冲突问题

HashMap的底层数据结构是数据加链表,在JDK1.8中,当链表元素超过8时,会将链表转为树。数组的长度是有限的,默认情况下为16,不考虑扩容的情况下,如果有17个元素将如何放入HashMap中呢?这就是本文要讲解的问题。
阅读更多

Redis过期策略和内存淘汰机制

在日常开发中,我们使用 Redis 存储 key 时通常会设置一个过期时间,但是 Redis 是怎么删除过期的 key,而且 Redis 是单线程的,删除 key 会不会造成阻塞。要搞清楚这些,就要了解 Redis 的过期策略和内存淘汰机制。
阅读更多

你项目中的单点登录是如何实现的

web系统早已从久远的单系统发展成为如今由多系统组成的应用群,面对如此众多的系统,用户难道要一个一个登录、然后一个一个注销吗?无论web系统内部多么复杂,对用户而言,都是一个统一的整体,也就是说,用户访问web系统的整个应用群与访问单个系统一样,登录/注销只要一次就够了。
阅读更多

分布式系统中接口如何避免表单的重复提交

分布式场景中,保证接口的幂等性十分重要。系统对某接口的多次请求,都应该返回同样的结果,避免因为各种原因,重复请求导致的业务重复处理。对应查询接口而已,其具体天生的幂等性,本文将介绍删除、新增和修改类型的接口,如何保证幂等性。
阅读更多

缓存与数据库双写一致性问题及最佳解决方案

在大型互联网应用当中如果你的应用引入了缓存机制,那么有一个大前提就是你的业务场景上必须得接受数据的新鲜度上有可能会有一定时间的延迟。删除缓存失败是一个极小概率事件,且在不能保证所有操作100%成功的几率下,采用JOB补偿的机制是目前比较成熟的解决方案。大并发量写请求的应用,不可能去实时写DB,基本都采用队列+消息异步写DB的机制,不然会有大量的并发问题。
阅读更多
说说Object类下面有几种方法

说说Object类下面有几种方法

今天说一道基础题型,不过很多人会忽略或者至少说不完整,但是面试时被问到的几率还是很大的。Java语言是一种单继承结构语言,Java中所有的类都有一个共同的祖先,这个祖先就是Object类。如果一个类没有用extends明确指出继承于某个类,那么它默认继承Object类。Object的方法我们在平时基本都会用到,但如果没有准备被忽然这么一问,还是有点懵圈的。
阅读更多