Kafka实战笔记
关于这份笔记,为了不影响大家的阅读体验,我只能在文章中展示部分的章节内容和核心截图
- Kafka入门
- 为什么选择Kafka
- Karka的安装、管理和配置
- Kafka的集群
- 第一个Kafka程序
afka的生产者
- Kafka的消费者
- 深入理解Kafka
- 可靠的数据传递
- Spring和Kalka的整合
- Sprinboot和Kafka的整合
- Kafka实战之削峰填谷
- 数据管道和流式处理(了解即可)
- Kafka实战之削峰填谷
三、运算符
Java支持多种运算符,包括算术运算符、关系运算符、逻辑运算符、位运算符等。
3.1. 算术运算符
Java的算术运算符包括加、减、乘、除等。例如,可以使用+运算符将两个数相加,使用-运算符将两个数相减。
示例代码:
int a = 10;
int b = 5;
int sum = a + b; // 15
int difference = a - b; // 5
3.2. 关系运算符
Java的关系运算符包括等于、不等于、大于、小于等。例如,可以使用==运算符判断两个数是否相等,使用<运算符判断一个数是否小于另一个数。
示例代码:
int a = 10;
int b = 5;
boolean isEqual = (a == b); // false
boolean isLessThan = (a < b); // false
3.3. 逻辑运算符
Java的逻辑运算符包括与、或、非等。例如,可以使用&&运算符实现逻辑与操作,使用||运算符实现逻辑或操作。
示例代码:
boolean isTrue1 = true;
boolean isTrue2 = false;
boolean result1 = (isTrue1 && isTrue2); // false
boolean result2 = (isTrue1 || isTrue2); // true
3.4. 位运算符
Java的位运算符包括与、或、异或、左移、右移等。例如,可以使用&运算符实现位与操作,使用|运算符实现位或操作。
示例代码:
int a = 5; // 0101
int b = 3; // 0011
int result1 = (a & b); // 0001 (位与)
int result2 = (a | b); // 0111 (位或)
四、控制流
Java的控制流语句包括if语句、switch语句、for循环、while循环等。
4.1. if语句
if语句用于根据条件执行不同的代码块。例如,可以使用if语句判断一个数是否为正数,如果是则执行某个代码块。
示例代码:
int num = 10;
if (num > 0) {
System.out.println("The number is positive");
} else if (num < 0) {
System.out.println("The number is negative");
} else {
System.out.println("The number is zero");
}
4.2. switch语句
switch语句用于根据不同的情况执行不同的代码块。例如,可以使用switch语句根据用户的输入选择执行不同的操作。
示例代码:
int choice = 1;
switch (choice) {
case 1:
System.out.println("You selected option 1");
break;
case 2:
System.out.println("You selected option 2");
break;
default:
System.out.println("Invalid choice");
}
4.3. for循环
for循环用于重复执行一段代码块。例如,可以使用for循环输出从1到10的数字。
示例代码:
for (int i = 1; i <= 10; i++) {
System.out.println(i);
}
4.4. while循环
while循环用于重复执行一段代码块,直到指定的条件不再满足为止。例如,可以使用while循环判断一个数是否为质数。
示例代码:
int num = 7;
boolean isPrime = true;
int i = 2;
while (i <= num / 2) {
if (num % i == 0) {
isPrime = false;
break;
}
i++;
}
if (isPrime) {
System.out.println(num + " is a prime number");
} else {
System.out.println(num + " is not a prime number");
}
五、方法和函数
在Java中,方法用于定义可重复使用的代码块。方法可以接受输入参数并返回一个值。在Java中,函数是方法的一种特殊形式,可以独立于类存在。
示例代码:
// 定义一个方法,接受两个整数参数,并返回它们的和
public int add(int a, int b) {
return a + b;
}
// 调用add方法,并打印返回结果
int result = add(5, 3);
System.out.println(result); // 输出:8
// 定义一个函数,独立于类存在,接受两个整数参数,并返回它们的差
public static int subtract(int a, int b) {
return a - b;
}
// 调用subtract函数,并打印返回结果
int result = subtract(5, 3);
System.out.println(result); // 输出:2
在上述示例代码中,定义了一个名为add的方法和一个名为subtract的函数。add方法接受两个整数参数a和b,通过return语句返回它们的和。subtract函数也接受两个整数参数a和b,通过return语句返回它们的差。在调用方法和函数时,需要提供参数,并将返回值存储在变量中或直接使用。
六、类和对象
Java是一种面向对象的编程语言,类和对象是Java编程的核心概念。类是对象的模板,用于定义对象的属性和行为。对象是类的实例,可以根据类的定义创建多个对象。
// 定义一个类
public class Person {
// 定义类的属性
private String name;
private int age;
// 定义类的构造方法
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// 定义类的方法
public void sayHello() {
System.out.println("Hello, my name is " + name + " and I am " + age + " years old.");
}
}
// 创建对象并调用方法
Person person1 = new Person("Alice", 25);
person1.sayHello(); // 输出:Hello, my name is Alice and I am 25 years old.
Person person2 = new Person("Bob", 30);
person2.sayHello(); // 输出:Hello, my name is Bob and I am 30 years old.
在上述示例代码中,定义了一个名为Person的类,包含了两个私有属性name和age,以及一个公有的构造方法和一个公有的方法sayHello。构造方法用于创建对象时初始化对象的属性,而方法用于执行对象的行为。在创建对象时,使用new关键字和构造方法来实例化对象。然后,通过对象名和点操作符来调用对象的方法。在调用sayHello方法时,会输出对象的属性值。
需要注意的是,类定义了对象的模板,而对象则是类的实例。可以根据同一个类的定义创建多个不同的对象,每个对象具有独立的属性和行为。
七、继承和多态
继承是一种机制,允许子类继承父类的属性和方法。多态是指不同类型的对象对相同的方法可以有不同的实现。
// 定义一个父类 Animal
public class Animal {
// 定义父类的方法
public void makeSound() {
System.out.println("The animal makes a sound.");
}
}
// 定义一个子类 Dog,继承自 Animal
public class Dog extends Animal {
// 子类可以继承父类的方法,也可以重写父类的方法
@Override
public void makeSound() {
System.out.println("The dog barks.");
}
}
// 定义一个子类 Cat,继承自 Animal
public class Cat extends Animal {
// 子类可以继承父类的方法,也可以重写父类的方法
@Override
public void makeSound() {
System.out.println("The cat meows.");
}
}
// 创建父类对象和子类对象,并调用相同的方法
Animal animal1 = new Animal();
animal1.makeSound(); // 输出:The animal makes a sound.
Animal animal2 = new Dog();
animal2.makeSound(); // 输出:The dog barks.
Animal animal3 = new Cat();
animal3.makeSound(); // 输出:The cat meows.
在上述示例代码中,定义了一个父类Animal和两个子类Dog和Cat。子类继承了父类的属性和方法,同时也可以重写父类的方法。在创建对象时,可以使用父类的引用指向子类的对象。这就是多态的体现,同一个方法名可以根据不同的对象类型调用不同的实现。
通过创建父类对象animal1,调用makeSound方法,输出了父类的实现。创建子类对象dog和cat,并将其赋值给父类引用animal2和animal3,然后调用makeSound方法。由于animal2和animal3指向的对象是子类对象,所以调用的是子类的实现。这样就实现了多态,同一个方法名根据不同的对象类型调用了不同的实现。
八、异常处理
Java提供了异常处理机制,用于捕获和处理程序中的异常。通过使用try-catch语句块,可以在程序出错时执行特定的操作,以防止程序崩溃。
try {
// 可能会产生异常的代码块
// 例如,读取文件、连接数据库等
} catch (Exception e) {
// 异常捕获后的处理代码块
// 这里可以对异常进行处理,或者输出异常信息
} finally {
// 无论是否发生异常,都会执行的代码块
// 例如,关闭文件、释放资源等
}
在上述代码中,try块是用来包裹可能会产生异常的代码块。当try块中的代码发生异常时,会被catch块捕获。catch块中的代码用于处理异常,可以根据需要进行相应的操作,比如输出异常信息、记录日志等。
catch块中的参数e是用来接收捕获到的异常对象,它可以提供异常的详细信息,比如异常类型、发生的位置等。可以使用e.getMessage()方法获取异常的消息。
finally块是可选的,用于定义无论是否发生异常都会执行的代码块。一般情况下,finally块用于释放资源、关闭连接等必要的清理操作。
以下是一个示例代码,演示了如何使用异常处理机制:
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class ExceptionHandlingExample {
public static void main(String[] args) {
try {
File file = new File("example.txt");
Scanner scanner = new Scanner(file);
System.out.println("File found!");
} catch (FileNotFoundException e) {
System.out.println("File not found: " + e.getMessage());
} finally {
System.out.println("Program completed.");
}
}
}
在上述示例代码中,尝试打开一个名为example.txt的文件。如果文件不存在,会抛出FileNotFoundException异常。在catch块中,输出异常信息,提示文件未找到。最后,无论是否发生异常,都会在finally块中输出"Program completed."。
九、输入输出
Java提供了丰富的输入输出类和方法,用于读取和写入数据。可以使用标准输入输出流、文件输入输出流、网络输入输出流等进行数据的输入输出操作。
标准输入输出流:
标准输入流使用System.in进行读取用户的输入,标准输出流使用System.out进行输出。
import java.util.Scanner;
public class IOExample {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入一个整数:");
int num = scanner.nextInt();
System.out.println("您输入的整数是:" + num);
System.out.print("请输入一个字符串:");
String str = scanner.nextLine();
System.out.println("您输入的字符串是:" + str);
scanner.close();
}
}
总结
面试难免让人焦虑不安。经历过的人都懂的。但是如果你提前预测面试官要问你的问题并想出得体的回答方式,就会容易很多。
此外,都说“面试造火箭,工作拧螺丝”,那对于准备面试的朋友,你只需懂一个字:刷!
给我刷刷刷刷,使劲儿刷刷刷刷刷!今天既是来谈面试的,那就必须得来整点面试真题,这不花了我整28天,做了份“Java一线大厂高岗面试题解析合集:JAVA基础-中级-高级面试+SSM框架+分布式+性能调优+微服务+并发编程+网络+设计模式+数据结构与算法等”
且除了单纯的刷题,也得需准备一本【JAVA进阶核心知识手册】:JVM、JAVA集合、JAVA多线程并发、JAVA基础、Spring 原理、微服务、Netty与RPC、网络、日志、Zookeeper、Kafka、RabbitMQ、Hbase、MongoDB、Cassandra、设计模式、负载均衡、数据库、一致性算法、JAVA算法、数据结构、加密算法、分布式缓存、Hadoop、Spark、Storm、YARN、机器学习、云计算,用来查漏补缺最好不过。
14920437616)]
且除了单纯的刷题,也得需准备一本【JAVA进阶核心知识手册】:JVM、JAVA集合、JAVA多线程并发、JAVA基础、Spring 原理、微服务、Netty与RPC、网络、日志、Zookeeper、Kafka、RabbitMQ、Hbase、MongoDB、Cassandra、设计模式、负载均衡、数据库、一致性算法、JAVA算法、数据结构、加密算法、分布式缓存、Hadoop、Spark、Storm、YARN、机器学习、云计算,用来查漏补缺最好不过。
[外链图片转存中…(img-cOE7pI23-1714920437617)]