博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java编程笔试面试题
阅读量:7235 次
发布时间:2019-06-29

本文共 1334 字,大约阅读时间需要 4 分钟。

hot3.png

1.常用中间件RabbitMQ,kafka等,原理、区别、优缺点。

RabbitMQ是一个AMQP实现,传统的messaging queue系统实现,基于Erlang。老牌MQ产品了。AMQP协议更多用在企业系统内,对数据一致性、稳定性和可靠性要求很高的场景,对性能和吞吐量还在其次。

Kafka是linkedin开源的MQ系统,主要特点是基于Pull的模式来处理消息消费,追求高吞吐量,一开始的目的就是用于日志收集和传输,0.8开始支持复制,不支持事务,适合产生大量数据的互联网服务的数据收集业务。

2.Lock 和 synchronize 实现原理与区别。简述乐观锁悲观锁。分布式锁实现方式

synchronized是托管给JVM执行的,而lock是java写的控制锁的代码。synchronized在锁定时如果方法块抛出异常,JVM 会自动将锁释放掉,不会因为出了异常没有释放锁造成线程死锁。

但是 Lock 的话就享受不到 JVM 带来自动的功能,出现异常时必须在 finally 将锁释放掉,否则将会引起死锁。在资源竞争不是很激烈的情况下,偶尔会有同步的情形下,synchronized是很合适的。原因在于,编译程序通常会尽可能的进行优化synchronize。

分布式锁实现方式:基于数据库实现,基于缓存(Redis,memcached,tair)实现,基于Zookeeper实现。

3.Redis和memcache区别

Memcached和Redis都能很好的满足解决我们的问题,它们性能都很高,总的来说,可以把Redis理解为是对Memcached的拓展,是更加重量级的实现,提供了更多更强大的功能。具体来说:

a.性能上:

性能上都很出色,具体到细节,由于Redis只使用单核,而Memcached可以使用多核,所以平均每一个核上Redis在存储小数据时比Memcached性能更高。而在100k以上的数据中,Memcached性能要高于Redis,虽然Redis最近也在存储大数据的性能上进行优化,但是比起 Memcached,还是稍有逊色。

b.内存空间和数据量大小:

MemCached可以修改最大内存,采用LRU算法。

Redis增加了VM的特性,突破了物理内存的限制。

c.操作便利上:

MemCached数据结构单一,仅用来缓存数据

Redis支持更加丰富的数据类型,也可以在服务器端直接对数据进行丰富的操作,这样可以减少网络IO次数和数据体积。

d.可靠性上:

MemCached不支持数据持久化,断电或重启后数据消失,但其稳定性是有保证的。

Redis支持数据持久化和数据恢复,允许单点故障,但是同时也会付出性能的代价。

e.应用场景:

Memcached:动态系统中减轻数据库负载,提升性能;做缓存,适合多读少写,大数据量的情况(如人人网大量查询用户信息、好友信息、文章信息等)。

Redis:适用于对读写效率要求都很高,数据处理业务复杂和对安全性要求较高的系统(如新浪微博的计数和微博发布部分系统,对数据安全性、读写要求都很高)。

转载于:https://my.oschina.net/javafirst/blog/1934078

你可能感兴趣的文章
关于SetCapture() 和 ReleaseCapture()的使用方法
查看>>
Asp.net MVC Comet推送
查看>>
QDir, QFileInfo 和 QDirIterator 区别
查看>>
Zend Studio使用
查看>>
院士的幻想与国产操作系统泡沫
查看>>
为什么 string.find()返回值是-1
查看>>
结构型模式之Adapter模式
查看>>
Silverlight Popup Bubble
查看>>
【转】在Ubuntu下编译Android源码并运行Emulator
查看>>
ASP.NET Web API 全局权限和异常处理
查看>>
从头来之【iOS及历史版本特性介绍】
查看>>
C语言——指针
查看>>
JobControl 的实现原理
查看>>
【leetcode】Rotate Image(middle)
查看>>
Android之listview运用(美团美食列表)
查看>>
【转】Mybatis/Ibatis,数据库操作的返回值
查看>>
iOS UITextView 输入内容实时更新cell的高度
查看>>
SQL删除重复数据方法
查看>>
Sql Server函数全解<一>字符串函数
查看>>
2015年第9本:别让猴子跳回背上
查看>>