Clay 的技术空间

用进废退 | 艺不压身

大纲

前言

学习资源

阅读全文 »

大纲

前言

学习资源

阅读全文 »

大纲

前言

学习资源

阅读全文 »

大纲

前言

学习资源

阅读全文 »

大纲

前言

学习资源

阅读全文 »

大纲

算法

算法的基本概念

算法的简介

函数库对数据类型的选择对其可重用性起着至关重要的作用。举例来说,一个求方根的函数,在使用浮点数作为其参数类型的情况下的可重用性肯定比使用整型作为它的参数类性要高。而 C++ 通过模板的机制允许推迟对某些类型的选择,直到真正想使用模板或者说对模板进行特化的时候,STL 就利用了这一点提供了相当多的算法。它是在一个有效的框架中完成这些算法的 —— 可以将所有的类型划分为少数的几类,然后就可以在模板的参数中使用一种类型替换掉同一种类中的其他类型。

阅读全文 »

大纲

前言

学习资源

Kafka 生产者

生产者消息发送流程

生产者消息发送原理

Kafka 的 Producer 发送消息采用的是异步发送的方式。在消息发送的过程中,涉及到了两个线程 — main 线程和 sender 线程。在 main 线程中,会创建一个双端队列 RecordAccumulator。值得一提的是,main 线程将消息发送给 RecordAccumulator 时,sender 线程会不断从 RecordAccumulator 中拉取消息并发送到 Kafka Broker。

阅读全文 »

大纲

函数对象

函数对象的概念

尽管函数指针被广泛用于实现函数回调,但 C++ 还提供了一个重要的实现回调函数的方法,那就是函数对象。重载函数调用操作符 () 的类,其对象常称为函数对象(Function Object),即它们是行为类似函数的对象。一个类对象,表现出一个函数的特征,就是通过 对象名 + (参数列表) 的方式使用一个类对象,如果没有上下文,完全可以把它看作一个函数对待,这是通过重载类的 () 操作符来实现的。在 C++ 标准库中,函数对象被广泛地使用以获得弹性,并且标准库中的很多算法都可以使用函数对象或者函数来作为自定义的回调行为。值得一提的是,函数对象的别名是 仿函数,或者是 伪函数

阅读全文 »

大纲

前言

学习资源

消息队列

目前企业中比较常见的消息队列产品主要有 Kafka、RabbitMQ、RocketMQ、ActiveMQ 等。在大数据场景主要采用 Kafka 作为消息队列,而在 JavaEE 开发中主要采用 RabbitMQ、RocketMQ、ActiveMQ。

消息队列的优势

  • 解耦 - 允许独立地扩展或修改不同业务的处理过程,只要确保它们遵守同样的接口约束

阅读全文 »

大纲

前言

本文将使用多台物理机器(至少三台)搭建 Kafka 集群,适用于 CentOS/Debian/Ubuntu 等发行版。

Zookeeper 集群搭建

本文的 Kafka 集群搭建依赖于 Zookeeper,因此生产环境需要将 Zookeeper 集群提前搭建起来。值得一提的是,从 Kafka 2.8.0 版本开始,Kafka 自身实现了 Raft 分布式一致性机制,这意味着 Kafka 集群是可以脱离 ZooKeeper 独立运行的。

集群规划

节点 IP 地址端口版本号
Zookeeper 节点 1192.168.1.121813.4.10
Zookeeper 节点 2192.168.1.221813.4.10
Zookeeper 节点 3192.168.1.321813.4.10
阅读全文 »