摘要: 设定一个场景:公司要对接两家服务商的业务,业务是相同的,但是两家服务商的接口表现形式是不同的,需要我们对其做一层封装,让它们实现我们统一的接口,以便于公司内部调用。 假设业务包括会员和优惠券两个部分,首先我们需要 创建一个ErpService.Abstract项目,并为这两个业务定义两个统一的接口以 阅读全文
posted @ 2020-12-07 21:43 唐磊(Jason) 阅读(101) 评论(0) 推荐(0) 编辑
摘要: 简单工厂模式 创建一个工厂类,对实现了同一个接口的多个类进行实例的创建。 //抽象类 人 public abstract class HuMan { public abstract void Talk(); } //黑人实现类 public class BlackHuman : HuMan { pu 阅读全文
posted @ 2020-12-07 21:42 唐磊(Jason) 阅读(117) 评论(0) 推荐(0) 编辑
摘要: 三大基本特征 封装 封装就是隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别,将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成“类”,其中数据和函数都是类的成员。封装的目的是增强安全性和简化编程,使用者不必了 阅读全文
posted @ 2020-12-07 21:38 唐磊(Jason) 阅读(724) 评论(0) 推荐(0) 编辑
摘要: 关系型数据库的事务 具有ACID 四个特征: 原子性:一个事务的执行,要么全部提交成功,要么全部失败回滚,不能只执行一部分操作。 一致性:事务的执行不能破坏数据库数据的完整性和一致性,一个事务在执行前后,数据库都必须处于一致性状态。 隔离性:当数据库上有多个事务同时执行时,就有可能出现脏读、幻读、不 阅读全文
posted @ 2020-12-07 21:36 唐磊(Jason) 阅读(229) 评论(0) 推荐(0) 编辑
摘要: 在我们用 redis 存储数据时,大多数场景都会给key设置一个过期时间,那么当key过期后,redis是如何处理的呢。大家可能会想到定时器的方案,当我们给key设置过期时间的同时设置一个定时器,到达时间后,删除过期的key,但这种方式在内存不紧张但Cpu紧张时,将cpu时间用在删除过期key上,无 阅读全文
posted @ 2020-12-07 21:32 唐磊(Jason) 阅读(561) 评论(3) 推荐(0) 编辑
摘要: Sentinel(哨兵)是redis的高可用解决方案:由一个或多个Sentinel实例组成Sentinel系统可以监视任意多个主服务器,以及这些这些主服务器下属的所有从服务器,并在被监视的主服务器进入下线状态后,自动将下线主服务器下属的某个从服务器升级为新的主服务器,然后由新的主服务器代替已下线的主 阅读全文
posted @ 2020-12-07 21:29 唐磊(Jason) 阅读(149) 评论(0) 推荐(0) 编辑
摘要: Redis集群是Redis提供的分布式数据库方案,集群通过分片(sharding)来进行数据共享,并提供复制和故障转移功能。 节点通过握手将其它节点添加到自己所在的集群。 集群中的16384个槽可以分别指派给集群中的各个节点,每个节点都会记录哪些槽指派给了具体哪个节点。 节点在收到客户端命令请求时, 阅读全文
posted @ 2020-12-07 21:28 唐磊(Jason) 阅读(121) 评论(0) 推荐(0) 编辑
摘要: 什么是sql注入 SQL注入是比较常见的网络攻击方式之一,它不是利用操作系统的BUG来实现攻击,而是针对程序员编写时的疏忽,通过SQL语句,实现无账号登录,甚至篡改数据库。 防止SQL注入,我们需要注意以下几个要点: 永远不要信任用户的输入。对用户的输入进行校验,可以通过正则表达式,或限制长度;检查 阅读全文
posted @ 2020-12-07 21:26 唐磊(Jason) 阅读(175) 评论(0) 推荐(0) 编辑
摘要: Redis的慢查询日志功能用于记录执行时间超过给点时长的命令请求,用户可以通过日志来监视和优化查询速度。 我们可以通过配置文件或者命令方式配置 slowlog-log-slower-than(执行时间超过多少微妙的命令会被记录) 和 slowlog-max-len (最多保存多少条日志记录) 配置文 阅读全文
posted @ 2020-12-07 21:24 唐磊(Jason) 阅读(151) 评论(0) 推荐(0) 编辑
摘要: 容器化是一种软件开发方法,通过使用容器化的开发方法,应用程序或服务以及他们的依赖和配置可打包再一起成为一个容器镜像。总之容器提供了 隔离性/可移植性/可扩展性/灵活性和对整个应用程序生命周期可控性等方面的优势。这其中最重要的优势是:实现了开发与运维之间的隔离。 Docker容器类似于一个轻量级的沙箱 阅读全文
posted @ 2020-12-07 21:22 唐磊(Jason) 阅读(149) 评论(0) 推荐(0) 编辑