Kafka协调器和有意思的三个参数 一、Kafka的协调器作用: 负责消费者的出入组工作组协调器,每个broker启动的时候,都会创建GroupCoordinator实例,管理部分消费组在与之连接的消费者中选举出消费者leader下发leader消费者返回的消费者分区分配结果给所有的消费者管理消费者的消费偏移量提交,保存在kafka的内部主题中和消费者心跳保持,知道哪些消费者已经死掉,组中存活的消费者是哪些...
ElasticSearch学习笔记(九)——Elasticsearch查询原理分析 一、前言ES的查询分为两个阶段:查询取回首先,一个 index 的数据会被分为多片,所以一个 document ,只能存在于一个 shard 中,如何确定doc的位置呢?数据路由算法:shard = hash(routing) % number_of_primary_shardsrouting 可以是_id(默认)或者由我们自定义传入。手动指定在发送请求的时候,手...
MySQL连接(join)原理 一、MySQL JOIN分类INNER JOIN,内连接,返回左右表互相匹配的所有行LEFT JOIN,左外连接,返回左表的所有行,若某些行在右表里没有相对应的匹配行,则将右表的列在新表中置为NULLRIGHT JOIN,右外连接,返回右表的所有行,若某些行在左表里没有相对应的匹配行,则将左表的列在新表中置为NULLFULL JOIN,MySQL不支持,可以使用左外连接和右外连接的联合查...
MySQL行转列案例分析 建表:成绩表:表名score,列名:学号、课程号、成绩CREATE TABLE `score` ( `s_id` varchar(20) NOT NULL, `c_id` varchar(20) NOT NULL, `s_score` int(3) DEFAULT NULL, PRIMARY KEY (`s_id`,`c_id`)) ENGINE=InnoDB DEFAULT...
MySQL Explain命令详解 idid是用来顺序标识整个查询中SELELCT 语句的,在嵌套查询中id越大的语句越先执行。该值可能为NULL,如果这一行用来说明的是其他行的联合结果select_type表示查询的类型,显示本行是简单或复杂select类型说明simple$1600primary包含union或者子查询,最外层的部分标记为primarysubquery一般子查询中的子...
ArrayList实现自定义排序 一、ArrayList排序使用ArrayList中存在sort排序方法,只要你实现了Comparator的接口,按照你自己的排序业务进行实现,你只要告诉这个接口按照什么类型进行排序就OK了。这种方式类似于设计模式中的策略模式,把流程划分好,具体的业务逻辑由用户指定代码实现:public class ComparatorTest { public static void main(St...
NIO组件Buffer,Channel和Selector 流是用来读写数据的。所有 I/O 都被视为单个的字节的移动,通过一个称为 Stream 的对象一次移动一个字节。流 I/O 用于与外部世界接触。它也在内部使用,用于将对象转换为字节,然后再转换回对象。流与与 NIO 最重要的区别是数据打包和传输的方式,原来的 I/O 以流的方式处理数据,而 NIO 以块的方式处理数据。流与块的比较面向流 的 I/O 系统一次一个字节地处理数据,我们很容易将...
深入理解String 一、String知识总结String被final修饰,不可变对象,也就是不能被继承String是通过Char数组来保存字符串的String提供的操作字符串方法,比如subString,replace,concat,连接符,都不是在原有字符串操作,而是重新生成了一个新的对象String对象重写了equals和hashCode方法,所以equals比较的是字符的值,并不是内存地址为了优化S...
数据库分库分表思路 一个闲暇的周末下午读到这篇分库分表文章,获益匪浅,转载之一. 数据切分关系型数据库本身比较容易成为系统瓶颈,单机存储容量、连接数、处理能力都有限。当单表的数据量达到1000W或100G以后,由于查询维度较多,即使添加从库、优化索引,做很多操作时性能仍下降严重。此时就要考虑对其进行切分了,切分的目的就在于减少数据库的负担,缩短查询时间。数据库分布式核心内容无非就是数据切分(Sharding),...
Spark介绍 一、Spark简介Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎。Spark是UC Berkeley AMP Lab(加州大学伯克利分校的AMP实验室)所开源的类Hadoop MapReduce的通用并行框架二、Spark特性分布式基于内存的迭代式计算高效性SpeedRun workloads 100x faster.Apache Spark achiev...
Redis事务与Pipeline功能 一、Redis事务Redis中的事务(transaction)是一组命令的集合,对事物的支持有限,不能保证原子性,在集群分片环境中,由于不同key可能存在不同的机器上,所以造成事务无法使用(可以简单使用,不推荐)事务相关命令multi命令,用于开启事务,标记一个事务块的开始,事务块内的多条命令会按照先后顺序被放进一个队列当中,最后由 exec命令原子性(atomic)地执行exec命令,...
MySQL大数据量分页limit优化 limit用法SELECT * FROM t LIMIT 10,10;第一个参数指定第一个返回记录行的偏移量第二个参数指定返回记录行的最大数目如果只给定一个参数:它表示返回最大的记录行数目第二个参数为 -1 表示检索从某一个偏移量到记录集的结束所有的记录行初始记录行的偏移量是 0(而不是 1)所以上面SQL的含义是查询数据库第10条到第20条数据对于小的偏移量,直接使用li...
Elasticsearch学习笔记(八)—Elasticsearch选主流程 一、Elasticsearch中Master的作用Elasticsearch的Master最重要的作用就是维护集群状态集群状态中包括以下信息:集群层面的设置集群内有哪些节点各索引的设置,映射,分析器和别名索引内各分片所在的节点位置上述的集群状态信息,由Master节点进行维护,并且同步到集群中所有节点。也就是说集群中的任何节点都存储着集群状态信息,但只有Master能够改变信息...
Elasticsearch学习笔记(七)—Elasticsearch分析器与映射 一、映射介绍数据库中的表,我们一般在DDL语句中为每个字段指定存储类型,例如:varchar,int,datetime等等,目的很明确,就是更精确的存储数据,防止数据类型格式混乱类比数据库,ES的索引字段也需要为其指定类型,这种方式在ES称为映射(mapping)映射是定义一个文档及其包含的字段如何存储和索引的过程,可以从以下几个方面理解:将哪些字符串字段视为全文字段哪些字段包含数字,...
Kafka具体应用场景介绍 网站活动跟踪成功的网站运营都会非常关注站点的用户行为并进行分析。通过消息队列 for Apache Kafka,您可以实时收集网站活动数据(包括用户浏览页面、搜索及其他行为等),并通过“发布/订阅”模型实现:根据不同的业务数据类型,将消息发布到不同的 Topic;通过订阅消息的实时投递,将消息流用于实时监控与业务分析或者加载到 Hadoop、ODPS 等离线数据仓库系统进行离线处理与业务报...
线程池的异常处理 一、Java线程异常机制在java多线程程序中,所有线程都不允许抛出未捕获的checked exception,也就是说各个线程需要自己把自己的checked exception处理掉,run方法上面进行了约束,不可以抛出异常(throws Exception)public class Task implements Runnable { @Override public vo...
Elasticsearch学习笔记(五)—Elasticsearch写入流程解读 假设一个写入请求发到node1node1接收到请求,根据_routing或_id来计算数据该写到哪个分片上,并且根据集群状态中的信息找到该分片的主分片在哪个节点上。这里发送到node3node3接收到请求的时候,开始往主分片里写数据主分片写入完成后,转发请求到该分片的副本分片所在节点(node1、node2),并等待返回结果副本分片接收到请求后,开始写入,写入成功后会返回结果给主分片节点...