Chuenhung的个人网站

chuenhung.github.io

@[toc]

什么是IOC

Inversion of Control的缩写,中文译为控制反转,简单来说就是把对象创建和对象之间的调用过程,交给 Spring 进行管理。
创建对象实例的控制权从代码控制剥离到IOC容器控制,实际就是你在xml文件控制,侧重于原理

IOC的作用

  • DI依赖注入
    Spring的DI实现了面向接口编程的核心思想,符合依赖倒置的原则。开发者只需要关注接口,而无需关注具体实现,降低了耦合度,代码复用性高,可拓展性强
  • 统一管理bean的生命周期
阅读全文 »

什么是spring?

  • Spring是一个轻量级Java开发框架,最早由Rod Johnson创建,目的是为了解决企业级应用开发的业务逻辑层和其他各层的耦合问题。它是一个分层的JavaSE/JavaEE full-stack(一站式)轻量级开源框架,为开发Java应用程序提供全面的基础架构支持。Spring负责基础架构,因此Java开发者可以专注于应用程序的开发
  • Spring最根本的使命是解决企业级应用开发的复杂性,即简化Java开发
  • Spring可以做很多事情,它为企业级开发提供给了丰富的功能,但是这些功能的底层都依赖于它的两个核心特性,也就是依赖注入(dependency injection,DI)和面向切面编程(aspect-oriented programming,AOP)
阅读全文 »

典型应用场景

  • 缓存系统
    可以用string实现
  • 计数器
    有incr命令,可在单线程下进行非常高效的计数,且不会出现计数错误的问题,比如微博转发、评论的计数。
    可以用string实现
  • 购物车
    可以用hash实现
  • 排行榜
    可以用有序集合实现
  • 消息队列
    可以用列表实现
  • 活动秒杀
阅读全文 »

受益与成本

受益

  • 加速读写
  • 降低后端负载

成本

  • 数据不一致:缓存层和数据层在时间窗口不一致
  • 代码维护成本
  • 运维成本:例如Redis cluster

缓存更新策略

各种更新策略对比

策略 一致性 维护成本
内存淘汰 (LRU/LFU/FIFO算法) 最差
超时剔除(expire) 较差
主动更新(开发控制缓存和数据一致性的业务)
阅读全文 »
0%