Redis

springboot Redis 布隆过滤器

℡╲_俬逩灬. 提交于 2020-12-06 19:53:35
一、布隆的定义是什么? 布隆过滤器(英语:Bloom Filter)是1970年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以 用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都远远超过一般的算法,缺点是有一定的误识别率和删除困难。 Bloom Filter(BF)是一种空间效率很高的随机数据结构,它利用位数组很简洁地表示一个集合,并能判断一个元素是否属于这个集合。 它是一个判断元素是否存在集合的快速的概率算法。Bloom Filter有可能会出现错误判断,但不会漏掉判断。也就是Bloom Filter判断元 素不再集合,那肯定不在。如果判断元素存在集合中,有一定的概率判断错误。因此,Bloom Filter”不适合那些“零错误的应用场合。 而在能容忍低错误率的应用场合下,Bloom Filter比其他常见的算法(如hash,折半查找)极大节省了空间。 二、布隆的原理是什么 布隆过滤器的原理是,当一个元素被加入集合时,通过K个散列函数将这个元素映射成一个位数组中的K个点,把它们置为1。检索时,我 们只要看看这些点是不是都是1就(大约)知道集合中有没有它了:如果这些点有任何一个0,则被检元素一定不在;如果都是1,则被检 元素很可能在。这就是布隆过滤器的基本思想。 Bloom Filter跟单哈希函数Bit-Map不同之处在于:Bloom

Linux陈年漏洞,可造成系统宕机和遭黑客掌控

自古美人都是妖i 提交于 2020-12-06 18:53:51
点击上方 “ 民工哥技术之路 ” 选择“星标” 每天 10点 为你 分享 不一样的干货 读者福利!多达 2048G 各种资源免费赠送 GitHub的首席安全工程师 Nico Waisman 上周揭露了存在于 Linux 核心( Linux kernel )的安全漏洞,且该漏洞从 2013 年的 Linux kernel 3.10.1 便已存在,一旦被开采就有可能造成系统宕机或是遭到黑客掌控。 此一漏洞编号为 CVE-2019-17666 , 它存在于 Linux 核心中的 RTLWIFI 驱动程序,这个驱动程序是用来 支持Realtek 的 Wi-Fi 芯片,因此,采用 Realtek Wi-Fi 芯片的 Linux 设备 位在恶意装置的无线通讯范围内时,该漏洞就能被触发,形成缓冲区溢位,而让 Linux 系统宕掉,或是允许黑客取得系统权限。 此一漏洞仅冲击那些开启 Wi-Fi 并使用 Realtek 芯片的 Linux 设备 ,但从漏洞的属性来看,采用 Realtek Wi-Fi 芯片的 Android 装置也可能受到波及。 Waisman 向 Ars Technica 透露,这是个严重的 漏洞 ,代表 Linux 装置只要使用了 RTLWIFI ,就可被 远程 黑客由 Wi-Fi 造成系统的缓冲区溢位。 Linux开发人员已提交了 CVE-2019-17666 的修补程序

Docker基本操作

为君一笑 提交于 2020-12-06 18:50:47
Docker 简介 什么是docker?A container is a standard unit of software that packages up code and all its dependencies so the application runs quickly and reliably from one computing environment to another. 简而言之docker就是一个容器,将代码、依赖、环境配置等打包,打包好的容器可以发布到任何流行的linux上,能做到一次配置,到处运行。 Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。 容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。 Docker 和传统虚拟化方式的不同之处,可见容器是在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,而传统方式则是在硬件层面实现。 docker 中主要有两个概念 image (镜像)、container (容器),镜像是只读的,可移植;容器是可写的,可执行的,我们运行的都是容器

Redis 2.8.9源码

旧巷老猫 提交于 2020-12-06 18:25:24
Redis使用字典的方式实现了数据库键空间,今天就记录一下字典的实现方式。 Redis 对字典的描述和实现源码在 src/dict.h src/dict.c,关于学习Redis字典如何进行测试或debug,请参考另外一篇文章: Redis 2.8.9源码 - 字典哈希表操作函数头整理,并注释作用和参数说明(附测试方法和代码以及使用方法) 字典结构: typedef struct dict { dictType *type; //根据存储内容的不同,自定义一组回调函数来控制比较申请内存释放空间等操作 void *privdata; //用于回调函数使用 dictht ht[2]; //存放hash表的结构 0 默认使用0,rehash的时候使用1 int rehashidx; //默认为-1,rehash开始的时候该变量设置为0,完成后重新设置为-1 int iterators; //正在进行的安全迭代的数量,释放安全迭代后会减1 } dict; typedef struct dictType { unsigned int (*hashFunction)(const void *key); //针对不同类型进行hash计算的函数,返回hash值 void *(*keyDup)(void *privdata, const void *key); //复制key void *(

Redis学习笔记(4)—— Jedis入门

拈花ヽ惹草 提交于 2020-12-06 18:16:33
一、Jedis介绍   Redis不仅是使用命令来操作,现在基本上主流的语言都有客户端支持,比如Java、C、C#、C++、php、Node、js、Go等。   在官方网站里列的一些Java客户端,有jedis、Redisson、Jredis等,其中官方推荐使用jedis,在企业中用的最多的就是Jedis。 二、Java连接Redis 2.1 导入jar包 commons-pool2-2.3.jar jedis-2.7.0.jar 2.2 单实例连接 @Test public void testJedisSingle() throws Exception { // 1.设置ip地址和端口号 Jedis jedis = new Jedis("192.168.25.129", 6379 ); // 2.设置数据 jedis.set("name", "zhangsan" ); // 3.获得数据 String name = jedis.get("name" ); System.out.println(name); // 4.释放资源 jedis.close(); }    注: 如果执行上面代码时抛出如下异常 redis.clients.jedis.exceptions.JedisConnectionException: java.net.SocketTimeOutException:

基于Redis实现Spring Cloud Gateway的动态管理

做~自己de王妃 提交于 2020-12-06 15:56:41
​ 转载本文需注明出处:微信公众号EAWorld,违者必究。 引言: Spring Cloud Gateway是当前使用非常广泛的一种API网关。它本身能力并不能完全满足企业对网关的期望,人们希望它可以提供更多的服务治理能力。但Spring Cloud Gateway并不提供数据的动态管理,甚至修改个路由都需要重启。我们如何解决它这个短板,同时实现治理配置数据的高效动态管理呢?本文将带来我们网关与Redis组合的实践。 目录: 1.Spring Cloud Gateway 简介 2.网关数据管理 3.实现细节 1.Spring Cloud Gateway 简介 API 网关 API 网关出现的原因是微服务架构的出现,不同的微服务一般会有不同的网络地址,而外部客户端可能需要调用多个服务的接口才能完成一个业务需求,如果让客户端直接与各个微服务通信,会有以下的问题: 客户端会多次请求不同的微服务,增加了客户端的复杂性。 存在跨域请求,在一定场景下处理相对复杂。 认证复杂,每个服务都需要独立认证。 难以重构,随着项目的迭代,可能需要重新划分微服务。例如,可能将多个服务合并成一个或者将一个服务拆分成多个。如果客户端直接与微服务通信,那么重构将会很难实施。 某些微服务可能使用了防火墙 / 浏览器不友好的协议,直接访问会有一定的困难。 以上这些问题可以借助 API 网关解决。API

如何提高web应用的吞吐量

|▌冷眼眸甩不掉的悲伤 提交于 2020-12-06 13:33:57
这篇博文所 列举的优化手段是针对比较传统项目 ,但是想提高系统的吞吐量现在时髦的技术还是那些前后端未分离, 使用nginx当成静态资源服务器去代理我们的静态资源 是谁限制了Throughput? 当我们对一个传统的项目进行压力测试时,很容器就发现,系统的Throughput被数据库(mysql)限制的死死的,尽管代码看起来确实没毛病,逻辑也没有错误,但是过多的请求都被打向了数据库,数据库自个开启大量的IO操作,这样大的负载甚至会使Linux系统的整体负载骤然飙升,但是反观我们的系统的吞吐量,呵呵... 将目光投向缓存 既然mysql的抗压能力限制了我们的系统,那就将数据缓存起来,尽一切可能减少用户和数据库之间的直接接触的次数,这样我们的系统的吞吐量,同一时间能处理器的请求数量自然会升上去 市面上的缓存技术很多, 比较火爆的是两款缓存数据库 Memcache 和 Redis , Redis 和 Memcahe的区别 Redis不仅仅支持key-value键值对类型的数据,同时还支持list,set,hash等数据结构 redis支持数据的备份,即master-slaver模式的集群备份 Redis是支持数据持久化的,它可以将内存中的数据保存在磁盘中,支持RDB和AOF两种持久化形式 对Redis进行压测 # 挨个测试redis中的命令 # 每个数据包大小是3字节 # 100个并发,

Java架构师的薪资代表着高水平?那么这份3.84G的P8架构师知识体系你能掌握多少?

烈酒焚心 提交于 2020-12-06 10:30:29
成为高级的Java开发架构师是每个初学Java开发人员的初衷,高级的Java开发架构师不仅意味着有更好的薪资,更代表着个人在行业中的水平。 下面是P8架构师 核心知识体系学习文档 , 版本8.0 ( 最新版本 ), 888页 核心知识点,共计3.48G下载内存达到 3.48G : 文档领取方式 : 三连后 加小助理微信 mxj94670 即可 免费下载 到底该怎么学?请看目录 Java基础 String类为什么是final的 字符串相关的类 HashMap的实现原理 解决hashcode冲突,是否线程安全 安全问题 ConcurrentHashMap(并发哈希Map) hashCode() 与 equals() 生成算法、方法怎么重写 Java集合类 Java基础 JVM调优实战 Java内存泄露的问题调查定位 内存相关的异常和原因 内存模型 JVM堆内存的划分 堆内存 年轻代 的幸存区survivor区为什么划分为两块相等大小的幸存空间 JVM堆内存常用参数 JVM垃圾回收算法(GC,Garbage Collection) 堆内存分代概念 Jvm 文档领取方式 : 三连后 加小助理微信 mxj94670 即可 免费下载 并发编程、多线程 为什么要使用多线程 使用多线程可能带来什么问题 什么是上下文切换 线程安全问题 线程的生命周期和状态 常用的线程池模式以及不同线程池的使用场景

Rabbitmq的可靠消息投递

北城以北 提交于 2020-12-06 09:59:18
一、背景 生产端向rabbitmq发送消息时,由于网络等原因可能导致消息发送失败。所以,rabbitmq必须有机制确保消息能准确到达mq,如果不能到达,必须反馈给生产端进行重发。 RabbitMQ消息的可靠性投递主要两种实现: 1、通过实现消费的重试机制,通过@Retryable来实现重试,可以设置重试次数和重试频率; 2、生产端实现消息可靠性投递。 两种方法消费端都可能收到重复消息,要求消费端必须实现幂等性消费。 二、消息投递到exchange的确认模式 rabbitmq的消息投递的过程为: producer ——> rabbitmq broker cluster ——> exchange ——> queue ——> consumer 1、生产端发送消息到rabbitmq broker cluster后,异步接受从rabbitmq返回的ack确认信息。 2、生产端收到返回的ack确认消息后,根据ack是true还是false,调用confirmCallback接口进行处理。 在application.yml中开启生产端confirm模式 spring: rabbitmq: publisher -confirms: true 实现ConfirmCallback接口中的confirm方法,ack为true表示消息发送成功,ack为false表示消息发送失败 @Component

工作11年,从阿里P8出来,头发也没了,人也虚了,就剩下这份笔记了!

好久不见. 提交于 2020-12-06 09:41:17
工作了11年,工作压力大,节奏快,但是从技术上确实得到了成长,尤其是当你维护与大促相关的系统的时候,熬到P8也费了不少心思,小编也是个爱学习的人,把这几年的工作经验整理成了一份完整的笔记。此笔记已助朋友拿到腾讯,阿里,美团等9个offer。 由于细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容! 大致内容包括了: Java 集合、JVM、多线程、并发编程、设计模式、Spring全家桶、Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、MongoDB、Redis、MySQL、RabbitMQ、Kafka、Linux、Netty、Tomcat等大厂面试题等、等技术栈! 笔记目录展示: 需要获取得话麻烦一键三连之后,加小助理VX:wjj2632646免费领取!!! 需要获取得话麻烦一键三连之后,加小助理VX:wjj2632646免费领取!!! 部分内容截图: 需要获取得话麻烦一键三连之后,加小助理VX:wjj2632646免费领取!!! 来源: oschina 链接: https://my.oschina.net/u/4297704/blog/4776560