目录

Life in Flow

知不知,尚矣;不知知,病矣。
不知不知,殆矣。

存档: 2019 年 08 月 (32)

Maven

安装 Maven Maven下载 配置环境变量 重启 检测是否安装成功 C:\Users\soulboy>mvn --version Apache Maven 3.5.4 (1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2018-06-18T02:33:14+08:00) Maven home: F:\Development\Maven\bin\.. Java version: 1.8.0_111, vendor: Oracle Corporation, runtime: F:\Development\JDK1.8\jre Default locale: zh_CN, platform encoding: GBK OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows" Maven 仓库的分类 本地仓库  maven 本地仓库的默认位置:无论是 Windows 还是 Linux,在用户的目录下都有一个。m2/repository/的仓库目录,这就是 M....

布隆过滤器

布隆过滤器简介  布隆过滤器(英语:Bloom Filter)是 1970 年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都远远超过一般的算法,缺点是有一定的误识别率和删除困难。  布隆过滤器可以理解为一个不怎么精确的 set 结构,当你使用它的 contains 方法判断某个对象是否存在时,它可能会误判。但是布隆过滤器也不是特别不精确,只要参数设置的合理,它的精确度可以控制的相对足够精确,只会有小小的误判概率。当布隆过滤器说某个值存在时,这个值可能不存在;当它说不存在时,那就肯定不存在。 优点  相比于其它的数据结构,布隆过滤器在空间和时间方面都有巨大的优势。布隆过滤器存储空间和插入/查询时间都是常数(即复杂度为 O(k))。另外,散列函数相互之间没有关系,方便由硬件并行实现。布隆过滤器不需要存储元素本身,在某些对保密要求非常严格的场合有优势。 缺点  但是布隆过滤器的缺点和优点一样明显。误算率是其中之一。随着存入的元素数量增加,误算率随之增加。但是如果元素数量太少,则使用散列表足矣。 ....

Redis持久化策略

RDB 持久化原理 配置文件路径 VIM /test/redis-4.0.6/redis.conf # 时间策略,表示900s内如果有1条是写入命令,就触发产生一次快照,可以理解为就进行一次备份 # 实际生产环境每个时段的读写请求肯定不是均衡的,为此redis提供一种根据key单位时间操作次数来触发一次备份到磁盘,我们可以自由定制什么情况下触发备份,此功能起到平衡性能与数据安全的作用 save 900 1 save 300 10 #表示300s内有10条写入,就产生快照 save 60 10000 # redis servercron 类似于linux的crontab,默认每隔100毫秒执行一次 :检测300s内有没有10条写入,如果有就备份 # 文件名称 dbfilename dump.rdb # 如果持久化出错,主进程是否停止写入 stop-writes-on-bgsave-error yes # 是否压缩 rdbcompression yes # 导入时是否检查 (重启redis,导入rdb文件) rdbchecksum yes # 文件保存路径 dir /test/redis-....

Redis Cluster

部署 Redis Cluster # 安装redis cd /usr/local/ wget http://download.redis.io/releases/redis-4.0.6.tar.gz tar -zxvf redis-4.0.6.tar.gz cd redis-4.0.6 make && make install # 新建集群文件夹 mkdir /usr/local/redis_cluster cd /usr/local/redis_cluster mkdir 7000 7001 7002 7003 7004 7005 cp /usr/local/redis-4.0.6/redis.conf /usr/local/redis_cluster/7000 cp /usr/local/redis-4.0.6/redis.conf /usr/local/redis_cluster/7001 cp /usr/local/redis-4.0.6/redis.conf /usr/local/redis_cluster/7002 cp /usr/local/redis-4....

高可用架构Sentinel

Sentinel 架构体系  可以将 Redis Sentinel 集群看成是一个 ZooKeeper 集群,它是集群高可用的心脏,它一般是由 3~5 个节点组成,这样挂了个别节点集群还可以正常运转。它负责持续监控主从节点的健康,当主节点挂掉时,自动选择一个最优的从节点切换为主节点。客户端来连接集群时,会首先连接 sentinel,通过 sentinel 来查询主节点的地址,然后再去连接主节点进行数据交互。当主节点发生故障时,客户端会重新向 sentinel 要地址,sentinel 会将最新的主节点地址告诉客户端。 如此应用程序将无需重启即可自动完成节点切换。比如上图的主节点挂掉后,集群将可能自动调整为下图所示结构。  主节点挂掉了,原先的主从复制也断开了,客户端和损坏的主节点也断开了。从节点被提升为新的主节点,其它从节点开始和新的主节点建立复制关系。客户端通过新的主节点继续进行交互。  Sentinel 会持续监控已经挂掉了主节点,待它恢复后,此时原先挂掉的主节点现在变成了从节点,从新的主节点那里建立复制关系。 Sentinel 搭建 # 创建目录 [root@localho....

Redis读写分离

读写分离的应用场景  海量并发性能瓶颈处理,横向扩展,大幅度提升抗压能力。  Redis 的主从数据是异步同步的,所以分布式的 Redis 系统并不满足「一致性」要求。当客户端在 Redis 的主节点修改了数据后,立即返回,即使在主从网络断开的情况下,主节点依旧可以正常对外提供修改服务,所以 Redis 满足「可用性」。  运行一些额外的服务器,让它们与主服务器进行连接,然后将主服务器发送的数据副本并通过网络 进行准实时的更新(具体的更新速度取决于网络带宽)通过将读请求分散到不同的服务器上面进行处理, 用户可以从新添加的从服务器上获得额外的读查询处理能力。  Redis 已经发现了这个读写分离场景特别普遍,自身集成了读写分离供用户使用。我们只需在 Redis 的配置文件里面加上一条,【slaveof host port】语句  目前我们讲的 Redis 还只是主从方案,最终一致性,无故障转移功能,主 Master 节点宕机,则无法写入。 读写分离架构配置流程 # 创建目录 [root@localhost redis-replication]# mkdir /usr/local/red....

分布式锁

分布式锁  分布式锁是控制分布式系统或不同系统之间共同访问共享资源的一种锁实现。如果不同的系统或同一个系统的不同主机之间共享了某个资源时,往往通过互斥来防止彼此干扰。 分布锁设计目的  可以保证在分布式部署的应用集群中,同一个方法在同一操作只能被一台机器上的一个线程执行。 锁的设计要求 这把锁要是一把可重入锁(避免死锁) 这把锁有高可用的获取锁和释放锁功能 这把锁获取锁和释放锁的性能要好… 分布式锁实现方案分析 获取锁的时候,使用 setnx(SETNX key val:当且仅当 key 不存在时,set 一个 key 为 val 的字符串,返回 1; 若 key 存在,则什么都不做,返回 【0】加锁,锁的 value 值为当前占有锁服务器内网 IP 编号拼接任务标识组成。在释放锁的时候进行判断。并使用 expire 命令为锁添 加一个超时时间,超过该时间则自动释放锁。 获取锁的时候调用 setnx, 如果返回 0,则该锁正在被被人使用,返回 1,则成功获取锁。还设置一个获取的超时时间,若超过这个时间则放弃获取锁。 setex (key,value,expire) 过期以秒为单....