- 博客(19)
- 收藏
- 关注
原创 RabbitMQ入门操作
本章节主要介绍以下部分:1.RabbitMQ安装安装方式可自行选择版本2.生产和消费概念3.结合springboot实现rabbitMq4.RabbitMQ运转流程ps:比较重要的术语例如(队列,交换器,路由键等)可自行百度,本文不多做赘述生产和消费概念Producer:生产者 就是投递消息的一方。生产者创建消息,然后发布Mq中。消息一般可以包含两个部分:消息体和标签。在实际开发中,消息体一般都是一个带有业务逻辑结构的数据。生产者将消息交给Mq,Mq会根据标签把消息发送给感兴趣的消费者。
2020-11-03 22:15:30
291
原创 什么是RabbitMQ,RabbitMQ有什么用
RabbitMQ是一个消息队列中间件:是指利用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行的分布式系统的集成。中间件的传递模式:一般分为两种形式:点对点模式(p2p)和发布/订阅模式(Pub/Sub)。点对点模式是基于队列,消息生产者将消息发到队列,消息的消费者从队列中获取队列,队列的存在使得异步传输成为了可能。发布/订阅模式定义了如何在一个内容节点发布和订阅消息,这个内容节点成为主题(topic),主题是一个可以认为是消息传递的中介,消息发布者将消息发布到某个主题,消息订
2020-10-29 15:40:51
4345
3
原创 初识ES
1.什么是eses是一个基于Lucene(倒排索引,由属性来确定记录的位置)构建开源的,RESTful风格的全文搜索引擎。es就是为高可用和可扩展而生的。可以通过性能更强的服务器(垂直扩展)。可以增加更多的服务器(水平扩展)。垂直扩展依旧有它的局限性,真正的可扩展还是要采取水平扩展,通过向集群添加更多的节点来分担负载。2.优点1.横向可扩展性,通过向集群添加更多的节点分担负载2.分片机制供更好的分布性,同一个索引分成多个分片,提高查找效率3.高可用,提供复制机制,一个分片可以有多个副本,当某台机
2020-09-24 10:22:54
392
原创 Windows安装Kafka
KafKa的介绍我这就不赘叙了,有心想了解的小伙伴可以去官网查看。kafka中文文档:https://kafka.apachecn.org/开始正题:一、下载最新版本,我用的是2.12-2.6.0 http://kafka.apache.org/downloadsps:安装前提:JDK1.8,没有的同学自行安装二、开始安装1.解压压缩包2.在解压文件下新建一个存放日志的logs3.修改配置文件:config\server.properties 找到log.dirs 然后修改日志存放位置
2020-09-03 17:40:41
485
1
原创 Linux安装RabbitMq 和 Docker安装RabbitMq
1.上传Rabbitmq的安装包以及erlang的安装包2.安装erlang语言的基础环境rpm -ivh erlang-20.1.7-1.el6.x86_64.rpm3.安装rabbitmqrpm -ivh rabbitmq-server-3.4.1-1.noarch.rpm相关的启动命令:service rabbitmq-server startservice rabbitmq-server stopservice rabbitmq-server restart4.配置rabbitm
2020-09-01 21:57:47
179
原创 Stream流List转map用法,真香
UserDto中UserId字段作为key,每个UserDto作为ValueList<UserDto> dtoList= BeanHelper.copyProperties(list, UserDto.class); Map<String, List<UserDto>> map = UserDto.stream().filter(dto -> StringUtil.isNotBlank(dto.getUserId())).collect(Collectors
2020-08-25 11:01:48
1319
原创 使用Java8新特性stream流进行list的复杂排序以及空指针问题
//根据id降序排,然后根据年龄升序 list = list.stream().sorted(Comparator.comparing(User::getId) .reversed() .thenComparing(Comparator.comparing(User::getAge)) ).collect(Collectors.toList());完整代码如下图输出结果但是遇到数值为空,就...
2020-08-13 10:42:42
3716
原创 idea遇到java文件标有橘色J图案解决方法
类似这种图案(网上找的图,公司代码保密)。代表不可编译文件。解决办法:1.file >>project structure >>modules2.找到这个3.将src文件转为sources4. apply >>ok亲测有效!
2020-07-13 18:28:17
11661
12
原创 idea中svn不同颜色的含义
绿色,已经加入控制暂未提交红色,未加入版本控制蓝色,加入,已提交,有改动白色,加入,已提交,无改动灰色,版本控制已忽略文件
2020-07-13 18:20:38
1780
原创 redis的哨兵模式
上篇我们讲了主从同步。有一个问题无法解决,细想如果主节点宕机了,从节点升为主节点,这需要手工进行主从切换,程序也需要手动去修改节点地址。如果是大半夜发生,这就是一场严重的事故了。针对这种场景咱们的Redis提供了一套高可用的方案,Redis sentinel。Redis 的 Sentinel 可以用来管理多个 Redis 服务器,会执行以下四个任务:1.监控Sentinel 会不断的检查 主服务器 和 从服务器 是否正常运行。2.通知当被监控的某个 Redis 服务器出现问题,Sentinel
2020-07-09 17:23:46
213
原创 redis的主从同步
Redis的主从同步是指数据可以从主服务器上向任意数量的从服务器的同步。Redis的主从结构也是采用一主多从或者级联结构,主从同步可按照是否全量划分为增量同步和快照同步。增量同步(2.8以后):Redis 同步的是指令流,主节点会将那些对自己的状态产生修改性影响的指令记录在本地的内存 buffer 中,然后异步将 buffer中的指令同步到从节点,从节点一边执行同步的指令流来达到和主节点一样的状态,一边向主节点反馈自己同步到哪里了 (偏移量)。因为内存的 buffer 是有限的,所以 Redis
2020-07-09 17:03:14
400
原创 redis的分布式锁(面试题)
首先想想为什么要有分布式锁?保证一个方法在高并发情况下的同一时间只能被同一个线程执行。锁的用途?(1)允许多个客户端操作共享资源这种情况下,对共享资源的操作一定是幂等性操作,无论你操作多少次都不会出现不同结果。在这里使用锁,无外乎就是为了避免重复操作共享资源从而提高效率。(2)只允许一个客户端操作共享资源这种情况下,对共享资源的操作一般是非幂等性操作。在这种情况下,如果出现多个客户端操作共享资源,就可能意味着数据不一致,数据丢失。redis的分布式锁如何实现?正常情况下redis使用setn
2020-07-09 16:35:45
11203
原创 redis的消息队列(面试题)
介绍:Redis的队列 使用rpush/lpush操作入队列,使用rpop/lpop出队列。客户端是通过列队的pop来获取消息,然后进行处理,处理完再接着获取消息。如此循环。这就是客户端的生命周期。问题一:队列空了会有什么影响如果队列空了,客户端会一直pop队列,这就造成了空轮询。空轮询不但提高了客户端的cpu,也加大了服务端的qps,是的redis的查询效率变低。处理方式方式一:可以sleep,但是如果多个消费者就会对每个消费者进行sleep方式二:通过blpop/brpop进行读取。阻塞读取。
2020-07-09 16:34:30
987
原创 redis的持久化机制
redis是一个内存数据库,数据保存在内存中,但是我们都知道内存的数据变化是很快的,也容易发生丢失。Redis为我们提供两种持久化的机制,分别是快照RDB和AOF。注意:在redis4.0时候新增了混合持久化。将rbd的内容和增量和aof放在一起。这里的aof是rbd开始到结束之间增量的日志。快照(rbd):执行快照操作Redis必须进行io读写操作。文件 IO 操作会严重拖垮服务器请求的性能,而且如果在存的过程中突然修改某个值或者删除,就会造成信息的不准确。Redis使用了COW机制(写时复制)来实现
2020-07-09 16:31:20
412
1
原创 redis的布隆过滤器
上一节我们学会了如何使用HyperLogLog,知道在允许出现一定误差的情况下可以解决大数据量的统计分析。但是这有一个缺点,如果我们想知道某一个值是不是已经在 HyperLogLog 结构里面了,它就无能为力了。HyperLogLog只提供了pfadd和pfcount 命令。那我们常用的快手,抖音是怎么做到基本不重复的消息推送呢?我们好好思考下这个问题…解决方式一:也是最容易想到的,将查看记录存进数据库,每次刷时再去数据库判断是否查看。如果是小数据量,十三举双手赞成。但是用户量一旦上来,数据库的这种方式就
2020-07-09 10:28:45
342
原创 redis的HyperLogLog
概念:HyperLogLog使用用来进行基数统计的算法。在redis里面,每个HyperLogLog只需要花费12Kb内存在标准误差0.81%的情况下就可以算出2的64次方不同元素的基数。但是HyperLogLog只会计算存入的基数并不会保存数据。HyperLogLog提供两个指令:pfadd和pfcount,增加计数和统计计数。测试误差:输出结果:以十万数据进行测试,误差277个。误差率也不是很高,并且将上面脚本再跑一边,输出结果也是99723,说明具有去重。先了解一个概念,什么是基数?
2020-07-08 17:47:24
443
原创 redis的通讯协议
闲话少说直接干。redis的协议到底是什么?Redis的协议叫做RESP(redis序列化协议)与redis服务器进行通讯。是专门为redis设计的一套序列化协议. 这个协议其实在redis的1.2版本时就有了,但是到了redis2.0才最终成为redis通讯协议的标准。RESP的特点:1.RESP可以序列化不同的数据类型,例如整数,字符串,数组。还有一种特定的错误类型。请求以字符串数组的形式从客户端发送到Redis服务器,这些字符串表示要执行的命令的参数。Redis使用特定于命令的数据类型进行回复
2020-07-08 17:31:51
676
原创 redis的IO模型和执行流程
首先我们想想为什么redis是单线程还运行这么快? 官方解释:因为Redis是基于内存的操作,CPU不是Redis的瓶颈,Redis的瓶颈最有可能是机器内存的大小或者网络带宽。既然单线程容易实现,而且CPU不会成为瓶颈。面试的话当然不可能就一句话概括啦...有四点,如下:1、完全基于内存,绝大部分请求是纯粹的内存操作,非常快速。数据存在内存中,时间的花费主要集中在IO上,所以读取速度快,优势就是查找和操作的时间复杂度都是O(1);2、数据结构简单,对数据操作也简单,redis内...
2020-07-07 23:00:44
730
原创 redis的数据结构
Redis的基础数据结构分为5种,分别为:string (字符串)、list (列表)、set (集合)、hash (哈希) 和 zset (有序集合)。熟练掌握这 5 种基本数据结构的使用是 Redis 知识最基础也最重要的部分。String 字符串结构String 字符串是动态字符串内部实现结构类似于Arraylist,采用预分配冗余的方式,减少内存空间的频繁分配。内部为字符串分配的空间会大于实际长度。当字符串长度小于1M,扩容都是加倍当前空间,大于1M则每次扩容增加1M,最大长度为512M。其
2020-07-06 20:53:53
1081
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人