0%

查找算法

线性查找

顺序查找

按照顺序遍历与所查找的数进行比较

1
2
3
4
5
6
7
public static int search(int[] arry, int des) {
for (int i = 0; i <= arry.length - 1; i++) {
if (des == arry[i])
return i;
}
return -1;
}
阅读全文 »

会话管理

HTTP是无状态的协议,每次客户端访问web页面时,都会打开一个单独的连接到web服务器,服务器不会自动保存客户端请求的任何记录,需要使用cookie和session来将一系列的请求和响应关联起来,维持客户端和服务器之间的会话

阅读全文 »

kafka消息丢失和重复消费问题

消息丢失

消息丢失可能发生在生产者端、消息队列、消费者端

生产者丢失数据

Kafka消息发送有两种方式:同步(sync)和异步(async),
默认是同步方式,可通过producer.type属性进行配置。
Kafka通过配置request.required.acks属性来确认消息的生产

  • 0—-表示不进行消息接收是否成功的确认;
  • 1—-表示当Leader接收成功时确认;
  • -1—-表示Leader和Follower都接收成功时确认;
阅读全文 »

压缩

hive其实本质就是MapReduce,所以hive的压缩也就相当于MapReduce的压缩,大家可以看一下hadoop中的MapReduce压缩

之前有文章是介绍这个的,这里就不赘述了,附上链接

数据压缩

这里来说明一下hive的压缩功能

阅读全文 »

RabbitMQ基本概念

RabbitMQ是实现AMQP的消息中间件,AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全

  • Broker:消息队列服务器实体
  • Exchange:消息交换机,接收生产者发过来的消息,并将这些消息推送到队列中。它指定消息按特定规则,路由到哪个队列,用于转发消息,但是它不会做存储 ,如果没有 Queue bind 到 Exchange 的话,它会直接丢弃掉 Producer 发送过来的消息。 这里有一个比较重要的概念:路由键 。消息到交换机的时候,交互机会转发到对应的队列中,那么究竟转发到哪个队列,就要根据该路由键
  • Queue:消息队列载体,每个消息都会被投入到一个或多个队列
  • Binding:绑定,它的作用就是把exchange和queue按照路由规则绑定起来
  • Routing Key:路由关键字,exchange根据这个关键字进行消息投递
  • VHost:虚拟主机,vhost 可以理解为虚拟 broker ,即 mini-RabbitMQ server。其内部均含有独立的 queue、exchange 和 binding 等,拥有独立的权限系统,可以做到 vhost 范围的用户控制。一个虚拟主机持有一组交换机、队列和绑定。为什么需要多个虚拟主机呢?RabbitMQ当中,用户只能在虚拟主机的粒度进行权限控制。 因此,如果需要禁止A组访问B组的交换机/队列/绑定,必须为A和B分别创建一个虚拟主机。每一个RabbitMQ服务器都有一个默认的虚拟主机”/“
  • Producer:消息生产者
  • Consumer:消息消费者
  • Channel:消息通道,在客户端的每个连接里,可建立多个channel,每个channel代表一个会话任务
阅读全文 »