2022年8月13日
摘要: synchronized关键字的底层原理: synchronized关键字与JVM的monitor有关,monitor里面有个计数器,一开始计数器为0。如果一个线程要获取monitor锁,就看看他的计数器是不是0,如果是0的话, 那么就说明没有人加锁,他就可以获取锁,然后对计数器加1.加锁,一般来说 阅读全文
posted @ 2022-08-13 18:31 网恋被骗两千八 阅读(20) 评论(0) 推荐(0) 编辑
  2022年8月10日
摘要: 什么是缓存雪崩? 在使用缓存时,通常会对缓存设置过期时间,一方面目的是保持缓存与数据库数据的一致性,另一方面是减少冷缓存占用过多的内存空间。 但当缓存中大量热点缓存采用了相同的实效时间,就会导致缓存在某一个时刻同时实效,请求全部转发到数据库,从而导致数据库压力骤增,甚至宕机。从而形成一系列的连锁反应 阅读全文
posted @ 2022-08-10 23:13 网恋被骗两千八 阅读(26) 评论(0) 推荐(0) 编辑
  2022年8月9日
摘要: redis都有哪些数据类型?分别在哪些场景下使用比较合适? String:最基本的类型,做简单的kv缓存 hash:类似于map的一种结构,一般是将结构化的数据缓存在redis中 list:有序列表 set:无序集合,自动去重 sorted set :排序的set,去重但是可以排序;排行榜 zadd 阅读全文
posted @ 2022-08-09 18:49 网恋被骗两千八 阅读(72) 评论(0) 推荐(0) 编辑
摘要: redis和memcached有什么区别?redis的线程模型是什么?为什么单线程的redis要比多线程的memcached效率要高得多(为什么redis是单线程的但是还可以支撑高并发?) redis支持服务器端的数据操作; 由于redis只使用单核,而memcached可以使用多核,所以平均每一个 阅读全文
posted @ 2022-08-09 17:35 网恋被骗两千八 阅读(16) 评论(0) 推荐(0) 编辑
  2022年8月8日
摘要: 在项目中缓存是如何使用的?缓存如果使用不当会造成什么后果? 项目中缓存是如何使用的? 为啥要用缓存?=>用缓存主要有俩用途,高性能和高并发 1)高性能: 假设这么个场景,你有个操作,一个请求过来,吭哧吭哧你各种乱七八糟操作mysql,半天查出来一个结果,耗时600ms。但是这个结果可能接下来几个小时 阅读全文
posted @ 2022-08-08 22:34 网恋被骗两千八 阅读(20) 评论(0) 推荐(0) 编辑
摘要: es:elasticsearch 首先得了解lucene和elasticsearch的区别并且着手写相关的demo程序 1)es分布式架构原理能说一下吗?(es是如何实现分布式的) 2)es写入数据的工作原理是什么啊?es查询数据的工作原理是什么啊? 3)es在数据量很大的情况下(数十亿级别)如何提 阅读全文
posted @ 2022-08-08 22:09 网恋被骗两千八 阅读(16) 评论(0) 推荐(0) 编辑
摘要: 如果说要设计一个消息队列,主要从以下角度考虑: 1)首先得考虑mq的可伸缩性,也就是需要的时候可以支持快速扩容,就可以增加吞吐量和容量,怎么搞? 设计个分布式系统,参考Kafka设计理念,broker->topic->partition,每个partition放一个机器旧村一部分数据。 如果现在资源 阅读全文
posted @ 2022-08-08 22:00 网恋被骗两千八 阅读(102) 评论(0) 推荐(0) 编辑
摘要: 为什么使用消息队列?消息队列有哪些优缺点?Kafka、activeMQ,rabbitMQ、rocketMQ都什么区别以及适合哪些场景? 如何保证消息队列的高可用啊? 如何保证消息不被重复消费啊(如何保证消息消费时的幂等性)? 如何保证消息的可靠性传输(如何处理消息丢失的问题)? 如何保证消息的顺序性 阅读全文
posted @ 2022-08-08 21:47 网恋被骗两千八 阅读(31) 评论(0) 推荐(0) 编辑
摘要: 一般情况下,只能操作紧急临时扩容了。具体操作步骤和思路如下: 1)先修复consumer的问题,确保其恢复消费速度,然后将现有的consumer都停掉 2)新建一个topic,partition是原来的10倍,临时建好原先10倍或20倍的queue数量 3)然后写一个临时的分发数据的consumer 阅读全文
posted @ 2022-08-08 21:32 网恋被骗两千八 阅读(40) 评论(0) 推荐(0) 编辑
摘要: 1)RabbitMQ:拆分成多个queue,每个queue对应一个customer;或者就一个queue对应一个customer,但是这个customer内部用内存队列,然后分发给底层不同的worker来处理 2)Kafka: 生产者写入一个partition中的数据一定是有顺序性的; 生产者在写数 阅读全文
posted @ 2022-08-08 20:59 网恋被骗两千八 阅读(606) 评论(0) 推荐(0) 编辑