Java基础 8.17

1.接口快速入门

接口这样的设计需求在Java编程/php/.net/go中也是会大量存在的 一个程序就是一个世界 在现实世界存在的情况 在程序中也会出现 我们用程序来模拟一下

package com.logic.interface_;

public interface USB {
    public void start();

    public void stop();
}
package com.logic.interface_;

public class Phone implements USB {
    @Override
    public void start() {
        System.out.println("手机开始工作...");
    }

    @Override
    public void stop() {
        System.out.println("手机停止工作...");
    }
}
package com.logic.interface_;

public class Camera implements USB {//实现接口本质就是把接口方法实现

    @Override
    public void start() {
        System.out.println("相机开始工作...");
    }

    @Override
    public void stop() {
        System.out.println("相机停止工作...");
    }
}
package com.logic.interface_;

public class Computer {
    public void work(USB usb) {
        //通过接口来调用方法
        usb.start();
        usb.stop();
    }
}
package com.logic.interface_;

public class Interface01 {
    public static void main(String[] args) {
        Camera camera = new Camera();
        Phone phone = new Phone();

        //创建计算机
        Computer computer = new Computer();
        computer.work(phone);
        computer.work(camera);
    }
}

2.接口基本介绍

接口就是给出一些没有实现的方法封装到一起 到某个类要使用的时候 再根据具体情况把这些方法写出来

语法

interface 接口名 {
//属性
//方法(抽象方法 默认实现方法 静态方法)
}
class 类名 implements 接口 {
//自己的属性
//自己的方法
//必须实现的接口的抽象方法
}

小结

在jdk7.0前 接口里的所有方法都没有方法体 即都是抽象方法

jdk8.0后接口可以有静态方法,默认方法,也就是说接口中可以有方法的具体实现

3.接口应用场景

实际应用

现在有一个项目经理,管理三个程序员,功能开发一个软件,为了控制和管理软件,项目经理可以定义一些接口,然后由程序员具体实现。

实际要求:3个程序员,编写三个类,分别完成对Mysql,Oracle,DB2数据库的连接

package com.logic.interface_;

public interface DBInterface {
    public void connect();//连接方法

    public void close();//关闭连接
}
package com.logic.interface_;

public class Interface03 {
    public static void main(String[] args) {
        MysqlDB mysqlDB = new MysqlDB();
        t(mysqlDB);
        OracleDB oracleDB = new OracleDB();
        t(oracleDB);
    }

    public static void t(DBInterface db) {
        db.connect();
        db.close();
    }
}


package com.logic.interface_;

public class MysqlDB implements DBInterface {

    @Override
    public void connect() {

    }

    @Override
    public void close() {

    }
}
package com.logic.interface_;

public class OracleDB implements DBInterface {
    @Override
    public void connect() {
        System.out.println("连接oracle");
    }

    @Override
    public void close() {
        System.out.println("关闭oracle");
    }
}
### 如何设置 EFk 堆栈版本 8.17 #### 配置 Docker Compose 文件 为了安装和配置 EFK (Elasticsearch, Fluentd 和 Kibana) 版本 8.17 的堆栈,创建 `docker-compose.yml` 文件如下所示: ```yaml version: '3' services: elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:8.17.0 container_name: elasticsearch environment: - discovery.type=single-node - ES_JAVA_OPTS=-Xms512m -Xmx512m volumes: - esdata:/usr/share/elasticsearch/data ports: - "9200:9200" - "9300:9300" fluentd: image: fluent/fluentd:v1.16-debian-4.0 container_name: fluentd depends_on: - elasticsearch volumes: - ./fluentd/conf/:/fluentd/etc/ ports: - "24224:24224" - "24224:24224/udp" - "9880:9880" kibana: image: docker.elastic.co/kibana/kibana:8.17.0 container_name: kibana environment: ELASTICSEARCH_HOSTS: http://elasticsearch:9200 ports: - "5601:5601" depends_on: - elasticsearch volumes: esdata: ``` 此文件定义了三个服务:Elasticsearch、Fluentd 和 Kibana。每个组件都被指定为特定的容器,并设置了必要的环境变量和其他参数来确保它们能够协同工作。 对于 **Elasticsearch**[^1],指定了单节点发现模式并分配了一定数量的内存给 JVM;还挂载了一个持久化卷用于保存数据以防重启丢失信息。端口映射允许外部访问 REST API 接口以及集群通信接口。 针对 **Fluentd**[^5],选择了官方提供的 Debian 发行版作为基础镜像,并将其配置文件夹挂载到了主机上以便于自定义输入源和输出目的地等设置。开放了一些监听端口供其他应用程序发送日志消息进来处理。 最后是 **Kibana**,它依赖于前面启动好的 Elasticsearch 实例并通过设定环境变量的方式连接起来。同样也暴露出了 Web UI 所需的服务端口号让用户可以通过浏览器查看分析结果。 #### 设置 Fluentd 配置文件 在项目根目录下新建名为 `conf` 的子文件夹,在其中放置至少两个 XML 或者 TD 格式的配置片段——一个是用来描述来源的数据流路径 (`source`) 另外则是目标位置即最终要写入的地方(`match`) 。例如下面是一个简单的例子: ```xml <source> @type forward </source> <match **> @type copy <store> @type elasticsearch host elasticsearch port 9200 logstash_format true </store> </match> ``` 这段脚本告诉 Fluentd 转发接收到的日志条目至本地网络上的另一个地址(默认情况下就是自己),并且复制一份副本存放到已命名的目标里去 —— 这里的意思是把所有匹配到的内容都送往同一个地方也就是我们之前提到过的那个叫做 “elasticsearch”的服务器实例那里[^4]. 完成以上步骤后就可以利用命令行工具执行 `docker compose up --build` 来构建整个系统并让各个部分按照预期那样开始运作起来了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值