Kafka实战笔记
关于这份笔记,为了不影响大家的阅读体验,我只能在文章中展示部分的章节内容和核心截图
- Kafka入门
- 为什么选择Kafka
- Karka的安装、管理和配置
- Kafka的集群
- 第一个Kafka程序
afka的生产者
- Kafka的消费者
- 深入理解Kafka
- 可靠的数据传递
- Spring和Kalka的整合
- Sprinboot和Kafka的整合
- Kafka实战之削峰填谷
- 数据管道和流式处理(了解即可)
- Kafka实战之削峰填谷
peek(); // 查看栈顶元素, 返回值为栈顶元素e — O(1)
- isEmpty
isEmpty() // 若栈空返回true, 否则返回false — O(1)
- size
size() // 返回栈中元素个数 — O(1)
队列s是一种先进先出的结构,在Java中的接口定义是Queue
,具体实现还是我们的老朋友LinkedList
。
- 构造
Queue q = new LinkedList<>();
- offer
offer(E e); // 队尾加入元素e。 若成功入队返回值true,否则返回false — O(1)
- poll
poll(); // 出队头,返回出队元素e — O(1)
- peek
peek(); // 查看队头元素, 返回值队首元素e — O(1)
- isEmpty
isEmpty() // 若队空返回true, 否则返回false — O(1)
- size
size() // 返回队中元素个数 — O(1)
Queue
有一个子接口Dueue
,即双向队列,和单向队列不同,它的出队入队可以从两个方向。
- 构造
Dueue q = new LinkedList<>();
- offFirst
offFirst(Object e) // 将指定元素添加到双端队列的头部 — O(1)
- offLast
offLast(Object e) //将指定元素添加到双端队列的尾部 — O(1)
- pollFirst
pollFirst() //获取并删除双端队列的第一个元素 — O(1)
- pollLast
pollLast() //获取并删除双端队列的最后一个元素 — O(1)
- peekFirst
peekFirst() //获取但不删除双端队列的第一个元素 — O(1)
- peekLast
peekLast() //获取但不删除双端队列的最后一个元素 — O(1)
优先队列是一种比较特殊的队列,保存队列元素的顺序不是按照元素添加的顺序来保存的,而是在添加元素的时候对元素的大小排序后再保存。
所以在队头的元素不是按照先后顺序,而是按照大小顺序。
在Java中的实现是PriorityQueue
,底层是一棵树, 以小根堆为例。对于任意结点来说,该节点的值比其左右孩子的值都要小。 (就是最上面的结点最小)。 大根堆类似,最上面结点最大
-
构造
-
小根堆
Queue minH = new PriorityQueue<>(); // 小根堆,默认大小为11 相当于 new PriorityQueue<>(11)
Queue minH = new PriorityQueue<>(100); // 定义一个默认容量有100的小根堆。在当中增加元素会扩容,只是开始指定大小。不是size,是capacity
-
- 大根堆
Queue maxH = new PriorityQueue<>((i1, i2) -> i2 - i1); // 大根堆,默认大小为11 相当于 new PriorityQueue<>(11, (i1, i2) -> i2 - i1)
Queue maxH = new PriorityQueue<>(100, (i1, i2) -> i2 - i1); // 定义一个默认容量有100的大根堆。在当中增加元素会扩容,只是开始指定大小
- offer
offer(E e); // 在堆中加入元素e,并调整堆。若成功入堆返回值true,否则返回false — O(logN)
- poll
poll(); // 弹出堆顶元素,并重新调整堆,返回出队元素e — O(logN)
- peek
peek(); // 查看堆顶元素, 返回值堆顶元素e — O(1)
散列表示一种<key,value>型的数据结构,在Java中的实现是HashMap
。
- 构造
Map<Characters, Integer> map = new HashMap<>();
- put
put(K key, V value); // 在Map中加入键值对<key, value>。返回value值。如果Map中有key,则replace旧的value — O(1)
- get
get(K key); // 返回Map中key对应的value。若Map中没有该key,则返回null — O(1)
- getOrDefault
getOrDefault(K key, V defaultValue); // 返回Map中key对应的value。若Map中没有该key,则返回defaultValue — O(1)
// For example:
// Map<Character, Integer> map = new HashMap<>();
// if (…) // 如果发现k,则k在Map中的值加1。没一开始没有k,则从0开始加1。(相当于给了key在Map中的一个初试值)
map.put(‘k’, map.getOrDefault(‘k’, 0) + 1);
- containsKey
containsKey(Key key); // 在Map中若存在key,则返回true,否则返回false — O(1)
get(x) == null // 可以代替改用法
- keySet
keySet(); // 返回一个Set,这个Set中包含Map中所有的Key — O(1)
// For example:
// We want to get all keys in Map
// Map<Character, Integer> map = new HashMap<>();
for (Character key : map.keySet()) {
// Operate with each key
}
- values
values(); // 返回一个Collection,里面全是对应的每一个value — O(1)
// For example:
// We want to get all values in Map
// Map<Character, Integer> map = new HashMap<>();
for (Integer value : map.values()) {
// Operate with each values
}
- isEmpty
isEmpty() // 若Map为空返回true, 否则返回false — O(1)
- size
.size() // 返回Map中中键值对<K, V>的个数 — O(1)
Set是一种没有重复元素的集合,常用的实现是HashSet
。
- 构造
Set set = new HashSet<>();
List list = new ArrayList<>…;
Set set = new HashSet<>(list);
- add
.add(E e); // 在集合中添加元素E e, 若成功添加则返回true,若集合中有元素e则返回false — O(1)
- remove
remove(E e); // 在集合中删除元素e,若删除成功返回true;若集合中没有元素e,返回false — O(1)
- contains
contains(E e); // 若存在元素e,则返回true,否则返回false — O(1)
- isEmpty
isEmpty() // 若集合为空返回true, 否则返回false — O(1)
- size
size() // 返回集合中中元素个数 — O(1)
- first
first() // 返回集合里的最小值(若给了比较器从大到小则是返回最大值)
- last
last() // 返回集合里的最大值(若给了比较器从大到小则是返回最小值)
String
不可变量(相当于只读final修饰),每个位置元素是个char。
- 初始化
字符串复制初始化
String s = "abc"
;
基于另外一个字符串
// s = "abc"String s2 =
new
String(s);
基于char[]
// s = “abc”;
// char[] c = s.toCharArray();
String s3 = new String©;
// 可以偏移
// public String(char value[], int offset, int count)
String s4 = new String(c, 1, 2); // [offset, offset + count) [)
// 把char[] 变成字符串
char[] ch = {‘a’, ‘b’, ‘c’};
String.valueOf(ch);
- charAt
charAt(int index); // 返回index位置的char — O(1)
- length
length(); // 返回字符串长度 — O(1)
- substring
substring(int beginIndex, int endIndex); // 返回字符片段[beginIndex, endIndex) — O(n)
substring(int beginIndex); // 返回字符片段[beginIndex, end_of_String) 就是从beginIndex开始后面的 ---- O(n)
- indexOf
indexOf(String str) // 返回str第一个出现的位置(int),没找到则返回-1。 — O(m * n) m为原串长度, n为str长度
// (假如要找一个字符char c,str可以表示成String.valueOf©,然后作为参数传进去.
s.indexOf(String str, int fromIndex); // 同上,但从fromIndex开始找 — O(m * n)
- lastIndexOf
lastIndexOf(String str); // 返回str最后出现的位置(int),没找到则返回-1。 — O(m * n) m为原串长度, n为str长度
// (假如要找一个字符char c,str可以表示成String.valueOf©,然后作为参数传进去.
lastIndexOf(String str, int fromIndex); // 同上,
//但从fromIndex开始从后往前找 [0 <- fromIndex] — O(m * n)
- replace
replace(char oldChar, char newChar); // 返回一个新字符串String,其oldChar全部变成newChar — O(n)
- toCharArray
toCharArray(); // 返回char[] 数组。 把String编程字符数组 — O(n)
- trim
trim(); // 返回去除前后空格的新字符串 — O(n)
- split
split(String regex); // 返回 String[],以regex(正则表达式)分隔好的字符换数组。 ---- O(n)
// For example
// 从非"/“算起 若”/a/c" -> 会变成"" “a” “c”
String[] date = str.split(“/”); // date[0]:1995 date[1]:12 date[2]:18 — O(n)
- toLowerCase, toUpperCase
s = s.toLowerCase(); // 返回一个新的字符串全部转成小写 — O(n)
s = s.toUpperCase(); // 返回一个新的字符串全部转成大写 — O(n)
StringBuilder
由于String是所谓的不可变类,使用 str+
这种形式拼接字符串实际上,是JVM帮助循环创建StringBuilder来拼接,所以拼接字符串最好用StringBuilder。
- 构造
最后
分享一些系统的面试题,大家可以拿去刷一刷,准备面试涨薪。
这些面试题相对应的技术点:
- JVM
- MySQL
- Mybatis
- MongoDB
- Redis
- Spring
- Spring boot
- Spring cloud
- Kafka
- RabbitMQ
- Nginx
- …
大类就是:
- Java基础
- 数据结构与算法
- 并发编程
- 数据库
- 设计模式
- 微服务
- 消息中间件
`这种形式拼接字符串实际上,是JVM帮助循环创建StringBuilder来拼接,所以拼接字符串最好用StringBuilder。
- 构造
最后
分享一些系统的面试题,大家可以拿去刷一刷,准备面试涨薪。
这些面试题相对应的技术点:
- JVM
- MySQL
- Mybatis
- MongoDB
- Redis
- Spring
- Spring boot
- Spring cloud
- Kafka
- RabbitMQ
- Nginx
- …
大类就是:
- Java基础
- 数据结构与算法
- 并发编程
- 数据库
- 设计模式
- 微服务
- 消息中间件
[外链图片转存中…(img-BCYYoJNc-1715618179671)]
[外链图片转存中…(img-exKZpGDk-1715618179671)]
[外链图片转存中…(img-G7nClO7d-1715618179671)]
[外链图片转存中…(img-CXeIFbdy-1715618179671)]
[外链图片转存中…(img-di8RDfNs-1715618179672)]
[外链图片转存中…(img-VjGFYGLX-1715618179672)]
[外链图片转存中…(img-gaRwUOey-1715618179672)]
[外链图片转存中…(img-rS7NB16t-1715618179673)]
[外链图片转存中…(img-iA2wRRNJ-1715618179673)]