2020-03-01

庚子鼠年 戊寅月 癸卯日

描述

这个月开始学习设计模式....

总结一下spring中的Template

技术博客:https://blog.csdn.net/qq_40674583/article/details/104600560

随笔

设计模式常用的七大原则:

  1. 单一职责原则

    • 在方法上(方法很少,逻辑足够简单)或类上遵守单一职责原则都可以。

    • 可以降低类的复杂性

  2. 接口隔离原则

    • 客户端不应该依赖他不需要的接口,即一个类对另一个类的依赖应该建立在最小的接口上。

    • 接口隔离原则和单一职责原则非常类似。单一职责原则要求接口的职责是单一的,而接口隔离原则要求接口尽量细化,它们有异曲同工之妙,都是要让我们的接口功能尽量单一,尽量小。

  3. 依赖倒转原则(DIP)

    • 高层模块不应该依赖低层模块,两者都应该依赖其抽象

    • 抽象不应该依赖细节,细节应该依赖抽象

  4. 里氏替换原则

    • 任何基类可以出现的地方,子类一定可以出现。
    • LSP是继承复用的基石,只有当衍生类可以替换掉基类,软件单位的功能不受到影响时,基类才能真正被复用,而衍生类也能够在基类的基础上增加新的行为。
    • 在类中调用其他类时务必要使用父类或接口,如果不能使用父类或接口,则说明类的设计已经违背了LSP原则。
    • 1.子类必须完全实现父类的方法
      2.子类可以有自己的个性
      3.覆盖或实现父类的方法时输入参数可以被放大,覆写或实现父类的方法时输出结果可以被缩小
    • 任何基类可以出现的地方,子类一定可以出现。里氏替换原则是继承复用的基石,只有当衍生类可以替换基类,软件单位的功能不受到影响时,即基类随便怎么改动子类都不受此影响,那么基类才能真正被复用
  5. 开闭原则ocp

    • 软件实体应该对扩展开放,对修改关闭
    • 当软件需要变化时,尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来实现变化。
  6. 迪米特法则

    • 又叫作最少知识原则
    • 个软件实体应当尽可能少的与其他实体发生相互作用。每一个软件单位对其他的单位都只有最少的知识,而且局限于那些与本单位密切相关的软件单位。
    • 迪米特法则不希望类之间建立直接的联系。如果真的有需要建立联系,也希望能通过它的友元类来转达。
    • 它要求一个对象应该对其他对象有最少的了解
    • 迪米特法则还有一个英文解释是:talk only to your immediate friends(只和直接的朋友交流)。什么是朋友呢?每个对象都必然会与其他的对象有耦合关系,两个对象之间的耦合就会成为朋友关系。那么什么又是直接的朋友呢?我们称出现成员变量、方法参数、方法返回值中的类为直接的朋友。迪米特法则要求只和直接的朋友通信。
    • 对外除了提供的public方法,不对外泄漏任何信息。
  7. 合成复用原则

    • 软件复用时,要尽量先使用组合或者聚合等关联关系来实现,其次才考虑使用继承关系来实现

RedisTemplate中定义了5种数据结构操作

redisTemplate.opsForValue();  //操作字符串
redisTemplate.opsForHash();   //操作hash
redisTemplate.opsForList();   //操作list
redisTemplate.opsForSet();    //操作set
redisTemplate.opsForZSet();   //操作有序set

stringRedisTemplate.opsForValue().set("test", "100",60*10,TimeUnit.SECONDS);//向redis里存入数据和设置缓存时间  
stringRedisTemplate.boundValueOps("test").increment(-1);//val做-1操作
stringRedisTemplate.opsForValue().get("test")//根据key获取缓存中的val
stringRedisTemplate.boundValueOps("test").increment(1);//val +1

stringRedisTemplate.getExpire("test")//根据key获取过期时间
stringRedisTemplate.getExpire("test",TimeUnit.SECONDS)//根据key获取过期时间并换算成指定单位
    
stringRedisTemplate.delete("test");//根据key删除缓存
stringRedisTemplate.hasKey("546545");//检查key是否存在,返回boolean值 
stringRedisTemplate.opsForSet().add("red_123", "1","2","3");//向指定key中存放set集合

stringRedisTemplate.expire("red_123",1000 , TimeUnit.MILLISECONDS);//设置过期时间
stringRedisTemplate.opsForSet().isMember("red_123", "1")//根据key查看集合中是否存在指定数据
stringRedisTemplate.opsForSet().members("red_123");//根据key获取set集合
原文地址:https://www.cnblogs.com/chang1024/p/12392853.html