springboot第43集:知道你很强但你不懂kafka,79眉笔你照样买不起

在Spring Boot中,"bean" 是一个非常重要的概念,它代表了一个由Spring容器管理的对象实例。这些对象通常用于组成应用程序的各个部分,并且可以在整个应用程序中共享和重用。Spring Boot的Bean管理是基于Spring框架的IoC(控制反转)和DI(依赖注入)原理构建的。

以下是Spring Boot中Bean的一些关键特性和用途:

  1. 组件管理: Bean管理允许您创建、配置和管理应用程序中的各种组件,例如服务、数据访问对象(DAO)、控制器等。这些组件可以通过Spring容器进行实例化和初始化,然后在需要的地方进行注入。

  2. 依赖注入: Spring Boot容器负责管理Bean之间的依赖关系。通过依赖注入,一个Bean可以将它所依赖的其他Bean注入到它自己的属性或构造函数中,从而实现了组件之间的解耦和松散耦合。

  3. 单例管理: 默认情况下,Spring Boot将Bean配置为单例(Singleton)。这意味着容器只会创建一个Bean实例,并在需要时重用它。这有助于减少资源消耗和提高性能。

  4. 配置管理: Spring Boot允许您使用注解或XML配置文件来定义Bean及其依赖关系。您可以在应用程序的配置文件中声明哪些类应该被实例化为Bean,并且可以配置它们的属性和行为。

  5. 生命周期管理: Spring容器管理Bean的生命周期,包括实例化、初始化、使用和销毁。您可以定义初始化和销毁方法,以便在Bean的生命周期中执行自定义逻辑。

  6. AOP(面向切面编程) : Spring Boot支持AOP,允许您定义横切关注点,如日志记录、性能监控等,并将它们应用于Bean的方法。

  7. 测试: Spring Boot的Bean管理使单元测试和集成测试变得更容易,因为您可以轻松地模拟或替换Bean的依赖关系。

总之,Spring Boot中的Bean是一种灵活且强大的机制,用于组织和管理应用程序的各个组件,使应用程序更易于维护、测试和扩展。通过Spring容器的帮助,Bean可以以一种高度可配置的方式进行管理,从而实现了松散耦合、可维护性和可测试性。

DruidDataSource dataSource = new DruidDataSource(): 在这里,创建了一个 Druid 数据源对象。Druid 是一个流行的数据库连接池,用于管理数据库连接。

扫描二维码关注公众号,回复: 17195185 查看本文章
cd26e74c734cd596bbe8eaa181351984.png
image.png
4a2ab2e014246a8b1fca5855205f9918.png
image.png
d265d984da76ffb1936f16989f4dd30a.png
image.png
a57a7628ff8137c31f3c00bba2c9c324.png
image.png

kubectl kubelet kubeadm版本: 1.23.1 操作系统版本: CentOS 8.2 64位

外网放开30000端口,后续浏览器登陆k8s dashboard看板使用。并检查ssh服务端口22是否正常开启。

eed9a888f5cae82fc33d1a7253178179.jpeg

安装常用工具:

yum install -y yum-utils device-mapper-persistent-data lvm2 iproute-tc

国内存在墙的问题,添加阿里源加速:

yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

要创建一个定时任务,你可以使用@Scheduled注解来标记一个方法,并指定任务的触发时间。以下是一个示例:

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

@Component
public class ScheduledTask {

    @Scheduled(fixedRate = 5000) // 每隔5秒执行一次
    public void performScheduledTask() {
        // 执行定时任务的逻辑
        // 这里可以是任何你需要定期执行的代码
    }
}

在上面的示例中,performScheduledTask方法使用@Scheduled注解标记为定时任务,fixedRate参数指定了任务的触发时间,这里是每隔5秒执行一次。

4. 配置异步任务和定时任务

确保在你的Spring Boot应用程序的配置类上添加@EnableAsync@EnableScheduling注解,以启用异步任务和定时任务的支持。例如:

import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;

@Configuration
@EnableAsync
@EnableScheduling
public class TaskConfig {
    // 配置类
}

对文本搜索一般可以分为三种类型:模糊搜索、精确搜索、分词搜索。

  • 模糊搜索:如sql中的like查询语句,匹配包含搜索关键字的内容。

  • 精确搜索:文本内容与搜索关键字一致。

  • 分词搜索:将文本先进行分词,包括搜索关键字分词和搜索内容进行分词,再匹配相关内容。

#!/bin/bash

# 定义要关闭的应用程序的名称
APP_NAME=""

# 查找应用程序的进程ID(PID)
PID=$(ps -ef | grep "$APP_NAME" | grep -v grep | awk '{ print $2 }')

if [ -z "$PID" ]; then
  echo "应用程序已经停止"
else
  echo "正在关闭应用程序 $APP_NAME (PID: $PID) ..."
  kill -9 "$PID"
  echo "应用程序已成功关闭"
fi
30c85e1f2482e4c72170559f55b5ddf7.png
image.png

/ect/profile 用来设置环境变量,内容样例如下

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi
export JAVA_HOME=/usr/share/jdk1.8.0_14
export PATH=$JAVA_HOME/bin:.....
5c9f84044abd3fc24a7ef859bd0e79b6.png
image.png
71b8b4294df094a06602db118590de07.png
image.png

MySQL 索引是一种用于提高数据库查询性能的数据结构。它们通过创建存储在表中数据的副本,以加速检索和查询操作。索引的主要目的是减少数据库系统需要扫描的数据量,从而加快数据检索的速度。

以下是一个示例数据库和示例代码,用于说明 MySQL 索引的作用和使用方式:

示例数据库:

假设我们有一个简单的学生信息数据库,其中包含一个名为 students 的表,用于存储学生的信息,包括学生ID、姓名、年龄和课程。这是一个示例的数据库表结构:

CREATE TABLE students (
    student_id INT PRIMARY KEY,
    name VARCHAR(50),
    age INT,
    course VARCHAR(50)
);

表中包含以下示例数据:

student_id name age course
1 John 20 Math
2 Alice 22 History
3 Bob 21 Chemistry
4 Sarah 23 Biology
5 Michael 22 Math
... ... ... ...

示例代码:

以下是一些示例代码,演示如何使用 MySQL 索引来优化查询操作。

  1. 创建索引:

    students 表的 name 列上创建一个索引:

    CREATE INDEX idx_name ON students (name);
  2. 查询优化:

    查询所有年龄为 22 岁的学生:

    SELECT * FROM students WHERE age = 22;

    使用索引后,查询将更加高效,因为 MySQL 可以快速定位到年龄为 22 岁的学生。

  3. 覆盖索引:

    如果只需要查询学生的姓名而不需要其他信息,可以使用覆盖索引:

    SELECT name FROM students WHERE age = 22;

    这将减少数据的读取量,因为只需要访问索引而不需要访问实际数据行。

  4. 联合索引:

    创建一个联合索引,以优化多个列的查询:

    CREATE INDEX idx_age_course ON students (age, course);

    查询年龄为 22 岁且课程为 "Math" 的学生:

    SELECT * FROM students WHERE age = 22 AND course = 'Math';

    联合索引可以加速复合条件的查询。

总之,MySQL 索引是用来提高数据库查询性能的重要工具。通过创建适当的索引,可以加速常见查询操作,减少数据扫描的时间,从而提高数据库的响应速度。但是,需要谨慎使用索引,因为不当使用索引可能会导致性能下降。在设计数据库时,需要根据具体的查询需求和数据分布情况来选择创建哪些索引。

在MySQL中,有多种类型和方法的索引可供选择,每种类型和方法都有其适用的场景和特点。以下是一些常见的MySQL索引类型和方法以及如何使用它们的示例:

1. B-Tree 索引: B-Tree(平衡树)索引是最常见的索引类型,用于支持等值查询、范围查询和排序操作。

示例: 创建一个B-Tree索引来优化students表中的student_id列:

CREATE INDEX idx_student_id ON students (student_id);

2. 哈希索引: 哈希索引是用于等值查询的特殊索引类型,适用于只需要精确匹配的情况。

示例: 创建一个哈希索引来优化users表中的user_id列:

CREATE INDEX idx_user_id ON users (user_id) USING HASH;

3. 全文索引: 全文索引用于支持全文搜索,通常在文本列上使用。

示例: 创建一个全文索引来优化articles表中的content列:

CREATE FULLTEXT INDEX idx_content ON articles (content);

4. 空间索引: 空间索引用于地理空间数据,支持地理空间查询。

示例: 创建一个空间索引来优化locations表中的coordinates列:

CREATE SPATIAL INDEX idx_coordinates ON locations (coordinates);

5. 联合索引: 联合索引是在多个列上创建的索引,用于优化多条件的查询。

示例: 创建一个联合索引来优化orders表中的customer_idorder_date列:

CREATE INDEX idx_customer_order ON orders (customer_id, order_date);

6. 前缀索引: 前缀索引是在列的一部分上创建的索引,用于减少索引大小。

示例: 创建一个前缀索引来优化products表中的product_name列的前5个字符:

CREATE INDEX idx_product_name ON products (product_name(5));

7. 自定义索引方法: MySQL允许您创建自定义索引方法,以满足特定的查询需求。

sudo rm /usr/local/mysql

sudo rm -rf /usr/local/mysql*

sudo rm -rf /Library/StartupItems/MySQLCOM

sudo rm -rf /Library/PreferencePanes/My*

sudo rm -rf /Library/Receipts/mysql*

sudo rm -rf /Library/Receipts/MySQL*

sudo rm -rf /var/db/receipts/com.mysql.*
cd4e1dab2abc2f66c66837577bdfd297.png 49d4bda6d51aa071a1948475d39ee964.png 7f63a666198a67029071da39c030f5af.png fc89639e780df46934ec58d16ccfb321.png f6ca280612223bad8d4664fab0b7fa7d.png 76cfcd4bb252cb6886f3f6da978f4bd3.png c38b9ceff5122d8f37cfe88e816a63eb.png 7bcb1e8ced832e9cdb8cee0fb5459f81.png e19f163f413a24b561a166096baa8171.png 2ae519607d35801839fe8020b643ee46.png c84e69f62c7858d18077104b41eed036.png a09b1630210b9a8cb06d615c1124dcaf.png 40c2ff4e1efe82f4c002295010744a0b.png 9ef396927e2ee8f5e64208c028c7eb7d.png cbe97796b5f9539b3c699fc03408b73e.png d887a88978bea272e8f3f7f44972778a.png 5729b0c0356d7225995cf2cef9d1024b.png 03eb63a6d485d34f7e4ed9618ee689e4.png 25dea76df78a0c4e56c0134a94b2f05f.png c21a4093086f9b6b7782d66c3570655b.png af3d82c75023576a3ce8829725a2f0c7.png 3f8f227c632af149186c262c32981288.png a04bc91dff780e64b82ea37a7184113b.png 585decf3d1e855f9413c1875217dfe1b.png 7b31b8c418d04730cc48b96987417e71.png 0afe2dbec4dd58a7075ee2b2abd74f32.png 516f5b6dd5d6a0ed0e59e1a387002f17.png 515d975c8b1fdf92e9333f6d6bbb5655.png 1638c088914f56c8640c323b361c24aa.png

启动kafka之前必须启动zookeeper

zookeeper集群,查看进程

60e8622576dd2059a2b57ac9b3cf9d48.png

启动kafka

da8f47b14a19109a8bf9619979634829.png 69f0d9512e84b02f4dd58bc3c67b517d.png 4245c75dc18529851016f94296bdef36.png

启动脚本

6f5024c5ba7b56643ce28b316b956041.png a17b28809abd69001938cc28973c09af.png 9ad191c73bc94c1bf57111dfc8cd981e.png c4e1b46f4e00e9c8c3a0f58233dd47e3.png 85aea72bc24f04e3393084ce1bb181c9.png a3c3d786f89f36bf713ec3fe085cca2f.png 83f4c13f12ebc3be5d2417e9f965aac3.png 8eab5c6515ee384119b39e0ba9d52df6.png 996e529ca678adcd4db18e7ec538ba27.png 3634e79716de3bf8b7c21dd281daa39e.png e8edee94b3fa1668f400d6fec2308cc5.png ffcda37bc29f18e15b27d0d30830b288.png

不能通过命令行的方式去修改副本

ed09a771d2a4f88e3c7cde962a9b3532.png ced7274f709c4aa529e233a79bc47993.png 2df15c2bbef69edd7dfdc91cceba725d.png 2f381a39fd345392eecc792fd2acd406.png

0:生产者发送过来的数据,不需要等数据落盘应答。

1:生产者发送过来的数据,Leader收到数据后应答。

-1(all):生产者发送过来的数据,Leader和ISR队列里面的所有节点收齐数据后应答。-1和all等价。

49d7d736120730c5c81a229e1a8b361d.png 0d554210bce353b14d8282f435d1d44a.png c3f20f4b14c5ddcf11223b41822e11e9.png

双端队列

a7dc4dabb035000be7ccdf1efb0af283.png cfdb36751257b9f0d43514f1550fe431.png a694a313b2e7b96dc7db38758e108f1f.png

发送流程

4bf7e9c70a904728c73379b59e1ed07c.png fa3d3dad94b8884896b359b9d15a4e40.png 663d9cf2997d83758912567b77b8373f.png eb262773f65ff2d055559056adddaed2.png a3d6d72367bf449ba6d8e25acbfded74.png 0a6dfbe8e2715ad9fd6e1eccb3c6f259.png 64de9e4576234f4ea710cc4cbe0233d6.png 4533fe7bbd78f42592aaa1131f50501e.png eeaec9d07995c7549622e4d89e18cdf6.png c4ddf665544109802d196d5895ccd845.png 51195077acce21f7fc89f0516203bfec.png 0e3bcce1cf812dbc89a2c9df79e8d246.png
SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMddHHmmss");
String dateTime=sdf.format(new Date());
sysRole.setUpdateT(dateTime);
4bb63ef906401ce7eb8fc8ac5497bbd1.png e53cfe10d545be173b2b8fc1ced54289.png e3a73a63629b35caedcf1d524b217473.png 9da59726bc281738ffe06357548a9559.png 9541faae8475d18e0d57e8cb34f64c15.png c662645565fc6847e1973b5b7c0cb4f3.png a21b65f7fd7ceba88f206344caa24274.png 8bf9ac54f842c83307e83abdf90e7e85.png b522621facb28b8060263d4f01562983.png aa485c3f8cd745dfb54a956f48ad1a8f.png 303bbe0d9ff0eb78127cbf3baa008381.png 2eb4d4a333372e843faefbf0f8acb396.png 85023c5340f1227547dda5fd931bcc98.png 051d3ab7a6a712e740698d867b432a78.png 57c391971c551215c076cf2de17a8991.png 19a557a085cef31784c7697ef617d904.png 7ecad87f4bc919001189959253ac950f.png

生产经验,数据有序

2dca45990051f7e0e4e339c10eec2e58.png 6bb36544c0e3e771f921a4ea529fb766.png 3924e89a45b098628ddc04c02b096bd9.png 2aa8045c09c08c847dcb4d97caf76a5e.png bb9b10ac068fb387d416269d4c591d5e.png b62c9a18ee7b3388eaeb308ec0c00ce4.png f613a63b174aaa7651d26bb32caa6946.png 46d3792ddd345493ea97c8268ebf413b.png 37b62e958515b78e37451748f64c8504.png fd9a96f8ecfdd33cb4e2f8eeb7bcdc6e.png c12022177caf8e7f35b152d81ef8cbb7.png 833afec02251d3300e784d9bca0392ef.png 438151e8e1b817d67ffb7a1382f1904d.png 77f371dfcb6f931e84280ac56865e1df.png 76568b06ef10ed9f30e15d1d7905a95d.png fe73a7f3a6869c55cd12855808395b2d.png a7d24ffe50d04d26dcc251b3db79aa6a.png
#!/bin/bash

# 定义要关闭的应用程序的名称
APP_NAME="admin-gateway-1.0-SNAPSHOT.jar"

# 查找应用程序的进程ID(PID)
PID=$(ps -ef | grep "$APP_NAME" | grep -v grep | awk '{ print $2 }')

if [ -z "$PID" ]; then
  echo "应用程序已经停止"
else
  echo "正在关闭应用程序 $APP_NAME (PID: $PID) ..."
  kill -9 "$PID"
  echo "应用程序已成功关闭"
fi
25754d4854b0ecaa84d43f940a2b135b.png 457dc312bebcc4ca9c7ebc55d25e047c.png af399edd8854297821ca77edcaf015ce.png 650a5b3338a04d5a764eb014fa4bfdfd.png f1664f5017d73bc1c39306ad3b3195aa.png

加群联系作者vx:xiaoda0423

仓库地址:https://github.com/webVueBlog/JavaGuideInterview

猜你喜欢

转载自blog.csdn.net/qq_36232611/article/details/133723852