设计模式-策略


策略模式属于对象的行为模式。其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。这个模式涉及到三个角色:环境(Context)角色:持有一个Strategy的引用。抽象策略(Strategy)角色:这是一个

设计模式-观察者


观察者模式(Observer)又称发布-订阅模式(Publish-Subscribe:Pub/Sub)。它是一种通知机制,让发送通知的一方(被观察方)和接收通知的一方(观察者)能彼此分离,互不影响。观察者接口public interface Observer { public abstract

设计模式-职责链


职责链就是,将不属于自己职责的任务推卸给下一个执行任务的对象。我们将多个这样的对象组成一条链,然后根据组成顺序,任务就能被分配到具体执行的对象上。首先,定义一个表示用来解决问题的抽象类Supportpublic abstract class Support { private String n

热点数据如何处理


热点key定义某个特定key某一时间段突然被大量访问,比如秒杀,热点等。这样会造成流量过于集中,达到例如Redis单实例瓶颈(一般是10W OPS级别),或者物理网卡上限,从而导致这台redis的服务器扛不住,导致宕机,甚至从新缓存之后另一个分片被打挂。如何发现热点key根据业务特点,比如秒杀,能预

Redis几种数据类型及应用场景


Redis支持5种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。何时使用Redis呢?先通过一张图了解下Redis内部内存管理中是如何描述这些不同数据类型的首先Redis内部使用一个redisObject对象来表示所

分布式锁的实现


1、分布式的特点分布式系统由独立的服务器通过网络松散耦合组成。在这个系统中每个服务器都是一台独立的主机,服务器之间通过内部网络连接。分布式系统有以下几个特点:可扩展性:可通过横向水平扩展提高系统的性能和吞吐量。高可靠性:高容错,即使系统中一台或几台故障,系统仍可提供服务。高并发性:各机器并行独立处理