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

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

阅读更多

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

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

阅读更多

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

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

阅读更多

说说hashCode和equals的相关问题

本文的内容主要想解决一下几个问题:

  • equals() 和 == 的作用是什么?
  • equals() 和 == 的区别是什么?
  • hashCode()的作用是什么?
  • hashCode()与equals()之间有什么联系?
阅读更多

说说Object类下面有几种方法

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

阅读更多

Redis中是如何实现分布式锁的

分布式锁常见的三种实现方式:1、数据库乐观锁;2、基于Redis的分布式锁;3、基于ZooKeeper的分布式锁。本题面试考点是,你对Redis使用熟悉吗?Redis中是如何实现分布式锁的。
阅读更多

单例模式的几种写法

纠结单例模式有几种写法有用吗?有点用,面试中经常选择其中一种或几种写法作为话头,考查设计模式和coding style的同时,还很容易扩展到其他问题。这里讲解几种笔者常用的写法,但切忌生搬硬套,编程最大的乐趣在于“know everything, control everything”。

阅读更多

如何决定使用HashMap还是TreeMap

TreeMap的key要求实现java.lang.Comparable接口,是有序的。而HashMap的key要实现hashCode(),分布是散列。往往需要根据两者的特点,结合不同的业务场景去选择使用哪种Map。

阅读更多

你能说说Spring框架中Bean的生命周期吗

  1. 实例化bean对象;
  2. 设置对象属性;
  3. 检查Aware相关接口并设置相关依赖;
  4. BeanPostProcessor前置处理;
  5. 检查是否是InitializingBean以决定是否调用afterPropertiesSet方法;
  6. 检查是否配置了自定义的init-method方法;
  7. BeanPostProcessor后置处理;
  8. 注册必要的Destruction相关回调接口;
  9. 使用中;
  10. 是否实现了DisposableBean接口;
  11. 检查是否配置了自定义的destory方法
阅读更多