2021-10-26集信达项目笔记

空间换时间

在实际开发中时间 = 运行时间,空间 =
运行内存,所以空间和时间的转换其实也就是运行时间和内存之间的占比。在时间运行中如何将两者的关系处理好就能提升系统的运行速度。时间换空间就是执行那些复杂的程序的时候需要消耗很大的内存,我们就需要把程序拆分成不同模块执行利用时间来降低内存的消耗,反之亦然。

策略模式

策略模式(Strategy Pattern):

定义一系列的算法,把它们一个个封装起来,并且使他们可相互替换。本模式使得算法的变化可以独立于使用它的客户。(Define a family
of algorithms,encapsulate each one and make them
interchangeable.Strategy lets the algorithmvary independently from
clients that use it.)

策略模式本质是:分离算法,选择实现

通俗来讲:策略模式对应于解决某一个问题的一个算法族,允许用户从该算法族中任选一个算法解决某一问题,同时可以方便的更换算法或者增加新的算法。并且由客户端决定调用哪个算法。

redis发布订阅模式

发布订阅模式 redis的发布订阅模式 发送者 (pub) 发送消息,订阅者 (sub) 接收消息。Redis
客户端可以订阅任意数量的频道。 SUBSCRIBE,用于订阅信道 PUBLISH,向信道发送消息 UNSUBSCRIBE,取消订阅
用于退订给定的一个或多个频道的信息。 语法: UNSUBSCRIBE channel
我们为什么不选择这种方式来作为api服务和server服务间的通信
原因:在分布式环境下,一旦发送者(pub)发送了消息,所有的订阅者能同时接收到消息,如果采用这样的方式
api服务作为数据的发送者pub,而server服务作为订阅者,存在多个server同时接收到请求的情况,会造成重复发送短信的情况
这是一种广播的模式,并不适用于我们的系统
于是我们使用lpush、lpop、rpush、rpop、lrange这几组命令 Lpush 命令将数据插入到队列头部 格式:
LPUSH key “数据” Rpush 命令用于将一个或多个值插入到列表的尾部(最右边)。 格式:
Rpush key “数据” Lpop 命令用于移除并返回列表的第一个元素 格式:
Lpop key Rpop 命令用于移除列表的最后一个元素,返回值为移除的元素 格式:
RPOP key
Lrange 返回列表中指定区间内的元素,可以指定一个区间以偏移量 START 和 END 指定。
其中 0 表示列表的第一个元素, 1表示列表的第二个元素,以此类推
也可以使用负数下标,以-1表示列表的最后一个元素,-2表示列表的倒数第二个元素,以此类推。
格式:LRANGE key START END

  1. 为什么我们不使用lpush、lpop、rpush、rpop作为我们api服务和server服务通信的模式 原因:在服务的接收方并不知道什么时候会有数据,因为需要通过死循环的方式重复去redis里获取数据,然后判断读取到的==null
    这样存在一直空转的情况,会造成资源的浪费,但是对于api服务来说,通过lpush或rpush命令添加数据是没有问题的
  2. blpop、brpop:相比于rpop和lpop多了b(b代表blocking)及阻塞的意思 Blpop:移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止 格式:相比于lpop我们需要指定超时时间 blpop heima 3
    从左侧获取key为heima的数据 如果超过3秒则超时 brpop:移出并获取列表的最后一个元素,
    如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止 brpop heima 3 从右侧获取key为heima的数据
    如果超过3秒则超时

最终我们选择 lpush 、 rpush 、 blpop 、 brpop 这组命令作为我们api服务和server服务之间的数据交互方式

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值