摘要: 分布式缓存框架: Microsoft Velocity:微软自家分布式缓存服务框架。 Memcahed:一套分布式的高速缓存系统,目前被许多网站使用以提升网站的访问速度。 Redis:是一个高性能的KV数据库。 它的出现很大程度补偿了Memcached在某些方面的不足。 EnyimMemcached 阅读全文
posted @ 2020-12-07 22:18 唐磊(Jason) 阅读(661) 评论(0) 推荐(0) 编辑
摘要: 在分布式系统中,存储基本都是多副本形式的,之所以采用这种模式,有以下两种原因: 提高系统可用性,防止单点故障引起的系统不可用 提高系统性能,利用负载均衡,让多副本分担流量压力 数据复制在可用性和性能方面给分布式系统带来的好处是不言而喻的,但是数据复制所带来的一致性挑战,也是所有开发人员需要面对的。 阅读全文
posted @ 2020-12-07 21:52 唐磊(Jason) 阅读(185) 评论(0) 推荐(0) 编辑
摘要: 索引的缺点: 创建索引和维护索引要耗费时间 ,时间随着数据量的增加而增加。 占用大量磁盘空间,今天发现公司的一个大表,索引占用的空间竟然是行数据占用空间的125%。 当对表中的数据进行增加、删除和修改的时候, 索引也要动态的维护 ,这样就降低了数据的维护速度。 创建索引的建议: 仅为必要的列创建索引 阅读全文
posted @ 2020-12-07 21:50 唐磊(Jason) 阅读(84) 评论(0) 推荐(0) 编辑
摘要: 数据库锁的初衷是处理并发问题,当并发出现时,数据库要合理的控制资源的访问规则,而锁就是用来实现这些访问规则的数据结构。 mysql里面的锁大致可以分为 全局锁、表锁、行锁。 全局锁 就是对整个数据库实例加锁 ,mysql提供了一种加全局锁的方法,命令是 flush tables with read 阅读全文
posted @ 2020-12-07 21:47 唐磊(Jason) 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 策略模式是一种定义一系列算法的方法,以相同的方式调用不同的算法,减少了各种算法类与使用算法类之间的耦合。 它的重心不是如何实现算法,而是如何组织,调用这些算法。从而让程序结构更灵活,具有更好的维护性和扩展性。 代码实现: //算法策略接口 public interface IStrategy { i 阅读全文
posted @ 2020-12-07 21:45 唐磊(Jason) 阅读(76) 评论(0) 推荐(0) 编辑
摘要: 设定一个场景:公司要对接两家服务商的业务,业务是相同的,但是两家服务商的接口表现形式是不同的,需要我们对其做一层封装,让它们实现我们统一的接口,以便于公司内部调用。 假设业务包括会员和优惠券两个部分,首先我们需要 创建一个ErpService.Abstract项目,并为这两个业务定义两个统一的接口以 阅读全文
posted @ 2020-12-07 21:43 唐磊(Jason) 阅读(97) 评论(0) 推荐(0) 编辑
摘要: 简单工厂模式 创建一个工厂类,对实现了同一个接口的多个类进行实例的创建。 //抽象类 人 public abstract class HuMan { public abstract void Talk(); } //黑人实现类 public class BlackHuman : HuMan { pu 阅读全文
posted @ 2020-12-07 21:42 唐磊(Jason) 阅读(116) 评论(0) 推荐(0) 编辑
摘要: 三大基本特征 封装 封装就是隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别,将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成“类”,其中数据和函数都是类的成员。封装的目的是增强安全性和简化编程,使用者不必了 阅读全文
posted @ 2020-12-07 21:38 唐磊(Jason) 阅读(688) 评论(0) 推荐(0) 编辑
摘要: 关系型数据库的事务 具有ACID 四个特征: 原子性:一个事务的执行,要么全部提交成功,要么全部失败回滚,不能只执行一部分操作。 一致性:事务的执行不能破坏数据库数据的完整性和一致性,一个事务在执行前后,数据库都必须处于一致性状态。 隔离性:当数据库上有多个事务同时执行时,就有可能出现脏读、幻读、不 阅读全文
posted @ 2020-12-07 21:36 唐磊(Jason) 阅读(220) 评论(0) 推荐(0) 编辑
摘要: 在我们用 redis 存储数据时,大多数场景都会给key设置一个过期时间,那么当key过期后,redis是如何处理的呢。大家可能会想到定时器的方案,当我们给key设置过期时间的同时设置一个定时器,到达时间后,删除过期的key,但这种方式在内存不紧张但Cpu紧张时,将cpu时间用在删除过期key上,无 阅读全文
posted @ 2020-12-07 21:32 唐磊(Jason) 阅读(557) 评论(3) 推荐(0) 编辑
摘要: Sentinel(哨兵)是redis的高可用解决方案:由一个或多个Sentinel实例组成Sentinel系统可以监视任意多个主服务器,以及这些这些主服务器下属的所有从服务器,并在被监视的主服务器进入下线状态后,自动将下线主服务器下属的某个从服务器升级为新的主服务器,然后由新的主服务器代替已下线的主 阅读全文
posted @ 2020-12-07 21:29 唐磊(Jason) 阅读(147) 评论(0) 推荐(0) 编辑
摘要: Redis集群是Redis提供的分布式数据库方案,集群通过分片(sharding)来进行数据共享,并提供复制和故障转移功能。 节点通过握手将其它节点添加到自己所在的集群。 集群中的16384个槽可以分别指派给集群中的各个节点,每个节点都会记录哪些槽指派给了具体哪个节点。 节点在收到客户端命令请求时, 阅读全文
posted @ 2020-12-07 21:28 唐磊(Jason) 阅读(120) 评论(0) 推荐(0) 编辑
摘要: 什么是sql注入 SQL注入是比较常见的网络攻击方式之一,它不是利用操作系统的BUG来实现攻击,而是针对程序员编写时的疏忽,通过SQL语句,实现无账号登录,甚至篡改数据库。 防止SQL注入,我们需要注意以下几个要点: 永远不要信任用户的输入。对用户的输入进行校验,可以通过正则表达式,或限制长度;检查 阅读全文
posted @ 2020-12-07 21:26 唐磊(Jason) 阅读(168) 评论(0) 推荐(0) 编辑
摘要: Redis的慢查询日志功能用于记录执行时间超过给点时长的命令请求,用户可以通过日志来监视和优化查询速度。 我们可以通过配置文件或者命令方式配置 slowlog-log-slower-than(执行时间超过多少微妙的命令会被记录) 和 slowlog-max-len (最多保存多少条日志记录) 配置文 阅读全文
posted @ 2020-12-07 21:24 唐磊(Jason) 阅读(149) 评论(0) 推荐(0) 编辑
摘要: 容器化是一种软件开发方法,通过使用容器化的开发方法,应用程序或服务以及他们的依赖和配置可打包再一起成为一个容器镜像。总之容器提供了 隔离性/可移植性/可扩展性/灵活性和对整个应用程序生命周期可控性等方面的优势。这其中最重要的优势是:实现了开发与运维之间的隔离。 Docker容器类似于一个轻量级的沙箱 阅读全文
posted @ 2020-12-07 21:22 唐磊(Jason) 阅读(147) 评论(0) 推荐(0) 编辑
摘要: > nginx官方文档说明:http://nginx.org/en/linux_packages.html#RHEL-CentOS ## 添加源 ``` cd /etc/yum.repos.d/ vim nginx.repo ``` 插入下面的内容 ``` [nginx-stable] name=n 阅读全文
posted @ 2020-12-07 21:19 唐磊(Jason) 阅读(436) 评论(0) 推荐(0) 编辑
摘要: 对于一个大型网站来说,随着网站访问量的快速增长,单台服务器已经无法承担大量用户的并发访问,必须以增加服务器的方式,提高计算机系统的处理能力,计算速度,进而满足当前业务量的需求。那么如何实现服务器之间的协同功能呢?Nginx提供的反向代理和负载均衡功能是一个很好的解决方案。 反向代理 在Nginx服务 阅读全文
posted @ 2020-12-07 21:18 唐磊(Jason) 阅读(940) 评论(0) 推荐(0) 编辑
摘要: Nginx是一款开源的、跨平台的高性能web服务器,它有着高性能,稳定性高,配置简单,模块结构化,资源消耗低的优点。同时支持反向代理、负载均衡、缓存的功能。其采用多进程+epoll(IO多路复用)模型,也对互联网高并发连接业务有着很好的支持。 下图是一个简单nginx架构: 基本命令: 启动ngin 阅读全文
posted @ 2020-12-07 21:16 唐磊(Jason) 阅读(12721) 评论(0) 推荐(1) 编辑
摘要: 数据持久化功能是redis相比于其他缓存中间件具有的优势之一,它可以保证在redis重启时,数据不丢失,以提升系统的性能及可用性。 那么redis是如何实现数据持久化的呢?它提供了两种数据持久化的解决方案: RDB、AOF。 RDB redis默认的持久化策略是RDB方案,rdb方案生成的rdb文件 阅读全文
posted @ 2020-12-07 21:13 唐磊(Jason) 阅读(516) 评论(0) 推荐(0) 编辑
摘要: 在redis中,我们可以通过slaveof命令或配置选项,让一个服务器去复制另一个服务器,我们称被复制的服务器为主服务器,而对主服务器进行复制的服务器为从服务器。 下面是从服务器设置主服务器相关的配置,如果主服务器设置了requirepass 选项,需要在masterauth配置上主服务的密码。 s 阅读全文
posted @ 2020-12-07 21:08 唐磊(Jason) 阅读(70) 评论(0) 推荐(0) 编辑