zoukankan      html  css  js  c++  java
  • 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集合
    
  • 相关阅读:
    python打包生成可执行文件教程
    MATLAB中冒号的用法解析
    C#中StreamWriter类使用总结
    C#中StreamReader类读取文件使用示例
    C#中WinFrom保存文件SaveFileDialog类的使用方法
    C#中FolderBrowserDialog类打开文件夹使用说明
    C#中的WinFrom技术实现串口通讯助手(附源码)
    评价指标的计算:accuracy、precision、recall、F1-score等
    【转】一张图解析FastAdmin中的表格列表的功能
    哈工大LTP语言分析:分词、词性标注、句法分析等
  • 原文地址:https://www.cnblogs.com/chang1024/p/12392853.html
Copyright © 2011-2022 走看看