JAVA面试题17

171.为什么在使用百度搜索内容的时候经常需要切换关键词

因为所有搜索并不是通过模糊查询在数据库里进行模糊查询出来的结果,而是把数据存放到搜索引擎服务器中,通过搜索引擎的分词系统把数据的一些关键信息保存到索引库中形成了字典索引一样的目录结构,当我们通过关键字进行搜索的时候,搜索引擎也是把关键字进行分词然后根据分词的结果和索引库中的数据做出精确匹配获取原始数据的信息,所以我们在搜索的时候由于分词后的关键字不能匹配分词库的信息而导致搜索不到想要的结果,这是就需要我们调整搜索关键字来适应搜索引擎中的关键字内容才能获取我们想要的信息

172. solr ElasticSearch 的区别

1)Solr 建立索引时候,搜索效率下降,实时搜索效率不高,es 实时搜索效率高

2)Solr 利用 Zookeeper 进行分布式管理,而 Elasticsearch 自身带有分布式协调管理功能。

3)Solr 支持更多格式的数据,而 Elasticsearch 仅支持 json 文件格式。

4)Solr 官方提供的功能更多,而 Elasticsearch 本身更注重于核心功能,高级功能多有第三方插件提供

5)Solr 在传统的搜索应用中表现好于 Elasticsearch,但在处理实时搜索应用时效率明显低于 Elasticsearch。

6)Solr 是传统搜索应用的有力解决方案,但 Elasticsearch 更适用于新兴的实时搜索应用。

173. 什么是 actviveMQ

activeMQ 是一种开源的,实现了 JMS 规范的,面向消息的中间件,为应用程序提供高效的、可扩展的、稳定的和安全的企业级消息通信。主要是利用多线程来实现线程通信,及消息队列功能。  

174. 为什么使用 activeMQ

ActiveMQ 的作用就是系统之间进行通信。 当然可以使用其他方式进行系统间通信, 如果使用 Activemq 的话可以对系统之间的调用进行解耦, 实现系统间的异步通信。

原理就是生产者生产消息, 把消息发送给 ActiveMQ。 ActiveMQ 接收到消息,然后查看有多少个消费者, 然后把消息转发给消费者, 此过程中生产者无需参与。 消费者接收到消息后做相应的处理和生产者没有任何关系。

175. activeMQ 的使用步骤

1、上传安装包到 linux 服务器,需要提前安装 JDK,actviemq 是 java 开发,需要 jdk 环境。

2、解压缩,进入 bin 目录。

3、通过./activemq start 启动 activeMQ 服务器。

4、可以通过访问 8161 端口进入 activeMQ 的管理后台,对消息队列进行管理。

176. ActiveMQ 的消息传递类型

1、点对点模式

1、一个消息生产者对应一个消息消费者

2、消息只能被消费一次

3、如果消息生产完,消费者不在线,消息进入队列并持久化保存,当消费者上线后自动消费

2、发布订阅模式

1、一个消息生产者对应多个消息消费者

2、消息可以被多个消费者消费多次,但是每个消费者仅能消费一次

3、如果消息生产完,消费者不在线,则消息丢失,默认不会持久化保存。

177. ActiveMQ 的消息类型

· TextMessage--一个字符串对象

· MapMessage--一套名称-值对

· ObjectMessage--一个序列化的 Java 对象

· BytesMessage--一个字节的数据流

· StreamMessage -- Java 原始值的数据流

178. 你们项目什么地方使用到了mq

1.用户生成订单之后,我们将订单号存储到了rabbitMQ,(我们通过死信队列、死信交换器、普通队列)来实现延迟队列,如果限定的支付时间之内,用户没有付款,那么我们需要消费mq当中的消息,操作数据库设置订单为已过期、库存回滚、积分回滚、优惠券回滚。

2.为了保证redis缓存和数据库的数据一致性,我们采用rabbitMQ进行解耦,mysql数据变更通过binlog日志会记录下来,我们通过生产者监听mysql的binlog日志,将要更新的数据写入到mq,另一端消费者消费数据,更新到缓存当中

3对于新增的功能可以单独写模块扩展,比如用户确认评价之后,新增了给用户返积分的功能,这个时候不用在业务代码里添加新增积分的功能,只需要把新增积分的接口订阅确认评价的消息队列即可,后面再添加任何功能只需要订阅对应的消息队列即可。

4也可是在添加订单的时候对外发送一个消息,其他的业务模块如果需要该订单的信息就可以监听消息并根据消息进行数据处理

179. MQ 有哪些重要的角色

MQ 中重要的角色有:生产者、消费者:

生产者:消息的创建者,负责创建和推送数据到消息服务器;

消费者:消息的接收方,用于处理数据和确认消息;

180. ActiveMQ 服务器宕机怎么办

这得从 ActiveMQ 的储存机制说起。在通常的情况下,非持久化消息是存储在内存中的,持久化消息是存储在文件中的。但是,在非持久化消息堆积到一定程度,内存告急的时候,ActiveMQ 会将内存中的非持久化消息写入临时文件中,以腾出内存。虽然都保存到了文件里,但它和持久化消息的区别是,重启后持久化消息会从文件中恢复,非持久化的临时文件会直接删除。那如果文件增大到达了配置中的最大限制的时候,此时生产者阻塞,但消费者可正常连接并消费消息,等消息消费掉一部分,文件删除又腾出空间之后,生产者又可继续发送消息,服务自动恢复正常。

解决方案:尽量不要用非持久化消息,非要用的话,将临时文件限制尽可能的调大。

更多面试题,请打开主页分栏 java面试 进行查看,谢谢

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值