iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >如何进行JDBC的分析
  • 702
分享到

如何进行JDBC的分析

2023-06-22 00:06:46 702人浏览 安东尼
摘要

这篇文章给大家介绍如何进行JDBC的分析,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1. 数据库编程的基础条件如果你想实现代码操作数据库,那么以下条件是你实现它的前提编程语言:例如 Java、c++、python 等

这篇文章给大家介绍如何进行JDBC的分析,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

1. 数据库编程的基础条件

如果你想实现代码操作数据库,那么以下条件是你实现它的前提

编程语言:

例如 Java、c++python 等等,这些语言都能够实现操作数据库

某个数据库的操作:

例如我在前面章节就介绍了关于 MySQL 的操作,实现其它数据库如 oracleSQL Server 等等也要学会对应数据库的一些操作

安装数据库驱动包:

不同的数据库对应不同的编程语言提供了不同的数据库驱动包,这些驱动包内实现了操作对应数据库的 api

2. Java 的数据库编程:JDBC

由于不同数据库的厂商实现数据库的 API 其实是不太一样的,因此很多语言就把这些数据库的 API 进行再一次的封装,封装出了一套统一的 API。这样就可以通过一套代码来操作多个不同的数据库了

在 Java 中,这样的封装就是由 Java 标准库来完成的,封装出了一套统一的数据库 API 称为 JDBC

拓展:

Java 本身是跨平台语言,虽然不同操作系统提供了不同的 API,但是 Java 本身也把这些 API 封装了起来,在标准库中提供了统一的接口,因此 Java 就可以一次编译,到处运行

JDBC 介绍:

  • JDBC,即 Java Database Connectivity,是指 Java 数据库连接。是一种用于执行 sql 语句的 Java API,它是 Java 中的数据库连接规范。

  • 这个 API 由 java.sql javax.sql 包中的一些类和接口组成,它为 Java 开发人员操作数据库提供了一个标准的 API,可以为多种关系数据库提供统一访问

注意:

  • JDBC API 是 Java 标准库自带的,可以直接用,但是 Mysql 的 JDBC 驱动不是系统自带的,因此需要额外进行下载安装

  • mysql 的 JDBC 驱动其实就是对 JDBC API 里面一些类和接口的具体实现

3. JDBC 访问数据库的层次结构

如何进行JDBC的分析

4. MySQL 数据库操作介绍

5. MySQL 驱动包的下载及添加到项目

由于 MySQL 的 JDBC 驱动不是系统自带的,因此需要额外进行下载安装

大数据库的官网就有对应数据库的 JDBC 驱动,但这里我推荐使用一些中央仓库来进行下载,例如 mvnrepository

驱动包下载步骤:

进入 mvnrepository 网站,在搜索栏搜索 MySQL,就可以查询到以下结果

如何进行JDBC的分析

选择第一个 MySQL Connector/J,就可以跳转到下载版本选择的页面

如何进行JDBC的分析

选择好自己对应的数据库版本的驱动(大版本一定要对应,小版本区别不大可以随意选),由于我自己是 5.x 系列的MySQL,因此,我选择大版号是5的就行。选择后就跳到了最终下载的页面

如何进行JDBC的分析

点击 jar 就开始下载了(这个 jar 包就是将这个驱动包中的一些 .class 文件以压缩包的形式进行打包了)

下载完成后,这个驱动包就已经下载到你本地了,只再将它引入到你的项目就可以是用了

驱动包添加到项目步骤(以下介绍一种方法):

  • 首先用自己的编译器创建一个项目(我个人用的 idea,但是其它编译器方式也一样)

  • 在你的项目里面新建一个目录,目录名随意(我个人起的是 lib)

如何进行JDBC的分析

  • 将下载的驱动包添加到这个目录中,直接 CV 就行,添加成功后就会出现

如何进行JDBC的分析

让我们新建的这个添加了驱动包的目录成为一个库(IDEA 中右键该目录,选择 add as Library… 就可以)

如何进行JDBC的分析

将这个库加好之后,就可以使用驱动包中的类和方法了,此时就可以进行数据库编程了

6. JDBC 使用步骤

6.1 创建数据库源,连接 Connection

创建一个数据库源:

DataSource dataSource=new MysqlDataSource();// DataSource 是来自于 Java 标准库的一个接口,它用来表示“数据库在哪”// MysqlDataSource 是来自于 MySQL 的驱动包,它是实现了 DataSource 接口的类

数据库就是一个服务器程序,可以通过 DataSource 来描述服务器的 地址、端口、用户名、密码、要访问的数据库名等

把数据库的位置信息,设置到 DataSource

// 1)通过一个 URL 来表示连接的数据库、数据库的 ip、端口、数据库名、编码方式、是否加密((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&setSSL=false");// 2)设置登录数据库的用户名((MysqlDataSource)dataSource).setUser("root");// 3)设置登录数据库的密码((MysqlDataSource)dataSource).setPassword("1234");

由于 setURLsetUsersetPassWord 都是 MysqlDataSource 实现的,所以使用时需要向下转型
上述 URL 是一种固定的写法,例如:jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&setSSL=false

  • jdbc 表示使用 JDBC 访问数据库

  • mysql 表示访问的数据库是 MySQL

  • 172.0.0.1 是 IP 地址,IP 地址是用来区分是哪个主机,172.0.0.1 这个 IP 地址表示当前使用的主机自身,因为我的 MySQL 服务器也装在自己电脑上,自行修改

  • 3306 是端口号,这是安装数据库服务器时手动设置的,一般默认是3306,它是用来区分主机上的某个程序

  • test 是要访问的数据库名,这是我数据库里面的,自行修改

  • characterEncoding=utf8 是用来指定编码方式的,此处是使用 utf8,需要和使用的数据库便方式对应,自行修改

  • useSSL=false 是用来表示是否加密的,此处表示不加密,自行修改

连接数据库,进行真正的网络通信:

Connection connection=dataSource.getConnection();

Connection 是 Java 标准库里的,虽然 MySQL 驱动里面也有。它是用来进行和数据库服务器进行网络连接的
getConnection 用于获得试图建立到指定数据库 URL 的连接,如果连接成功就返回一个 Connection 对象,如果失败就抛出异常
由于 getConnection 可能会连接失败(例如 IP 地址、端口等输入错误),因此就需要在方法声明时通过 throws 给上层调用者抛出异常或者使用 try-catch 去处理异常

6.2 构造 SQL 语句,为执行的操作做准备

通过字符串,构造一个要执行的 sql

// 例如要执行新增元素操作(表名为 student,有两列 id 和 studentScanner scanner=new Scanner(System.in);System.out.print("请输入 id:");int id=scanner.nextInt();System.out.print("请输入 姓名:");String name=scanner.next();String sql="insert into student values(?,?)";
  1. sql 就是构造的 SQL 语句,里面就是要执行的具体操作

  2. sql 语句中可以不用加分号

  3. 表示通配符,可以通过它对 sql 语句里的内容进行动态替换,需要替换的内容用 ?代替,后续再使用 PreparedStatement 对象的一些方法将其再替换成具体要更改的值

例如:

void setInt(int paramenterIndex, int x) :paramenterIndex 表示 sql 语句中要替换通配符的具体位置(从1开始),x 表示要替换掉具体值
void setString(int parameterIndex, String x) :paramenterIndex 表示 sql 语句中要替换通配符的具体位置(从1开始),x 表示要替换掉具体值
通过 prepareStatement(sql) 方法,将构造的字符串 sql 转化成真正的数据库底层的 SQL 语句

PreparedStatement statement=connection.prepareStatement(sql);// 通过 setInt 方法,将 SQL 语句中的第一处通配符进行具体值的替换statement.setInt(1,id);// 通过 setString 方法,将 SQL 语句中的第二处通配符进行具体值的替换statement.setString(2,name);

JDBC 中,使用 Connection 和数据库建立了连接对象 connection,那么 connection 就可以调用 prepareStatement(String sql) 方法对参数 sql 指定的 SQL 语句进行编译预处理,生成该数据库底层的内部命令,并将该命令封装在 PreparedStatement 对象中

6.3 执行 SQL,并处理结果集

通过 PreparedStatement 对象的 executeQuery 或者 executeUpdate 方法来执行 SQL

如果是执行内容变更的操作(增加、修改、删除),就使用 int executeUpdate() 方法

int ret=statement.executeUpdate();// executeUpdate 的返回结果是执行该操作后影响的行数// 可以通过打印返回值来显示影响的行数System.out.println("ret: "+ret);

如果要是要执行查询操作,就使用 ResultSet executeQuery() 方法

ResultSet resultSet=statement.executeQuery();// executeQuery 的返回结果是执行该操作后查询到的类似于临时表的结构,存放在 ResultSet 对象中// 接下来我们可以对它进行遍历,类似于迭代器的遍历,方法如下while(resultSet.next()){    // 假设有两列 id 和 name    int id=resultSet.getInt(id);    String name=resultSet.getString(name);    System.out.println("id="+id+", name="+name);}

SQL 查询语句对数据库的查询操作将返回一个 ResultSet 对象,ResultSet 对象由按列(字段)组织的数据行构成
ResultSet 对象一次只能看到一行数据,使用 next() 方法,可以移到下一个数据行(类似于 i++)
可以使用 ResultSet 对象的 getXxx() 方法,去获得字段。常用方法后面讲将介绍

6.4 释放资源

当我们执行完了我们的 SQL 语句后,如果不再使用某些对象,就需要把连接关闭,释放掉对应的资源

// 如果有 ResultSet 对象不需要使用后,需要关闭这个连接resultSet.close();// Connection 不需要使用后,需要关闭这个连接connection.close();// PreparedStatement 不需要使用后,需要关闭这个连接statement.close();

ResultSetConnectionPreparedStatement 这些对象都对应着一些及机器的硬件资源,如果不使用的话就要及时还回去。就类似于借书,如果大家在图书馆只借书,不还书,那么图书馆的书籍资源就会一直减少
这些对象可以使用 close() 方法,来关闭和客户端与服务器建立的连接,以此释放占用的资源

6.5 JDBC 编程模板

通过上面五步,就可以进行基础的 Java 的 JDBC 编程了,虽然方法不止这一种,但如果你还不会的话,掌握这个方法就行了。最后再总结下整个的模板,依据它,我们就可以用 Java 语言对 MySQL 数据库进行各种操作

public static void test(){    // 1. 创建数据库源,连接 Connection DataSource dataSource=new MysqlDataSource();    ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&useSSL=false");    ((MysqlDataSource)dataSource).setUser("root");    ((MysqlDataSource)dataSource).setPassword("1234");    Connection connection=dataSource.getConnection();    // 2. 构造一个 SQL 语句,为要进行的操作做准备    String sql="";    PreparedStatement statement=connection.prepareStatement(sql); // 3. 执行 SQL,并处理结果集    int ret=statement.executeUpdate();    // 4. 执行完成,释放资源    statement.close();    connection.close();}

7. JDBC 常用接口和类

上述 JDBC 编程步骤中已经将以下接口和类介绍了很多,所以可以互相补充漏洞

7.1 DataSource 和 MysqlDataSource

补充:

上述代码也可以直接使用 MysqlDataSource 来创建一个数据源,这样就可以不用使用向下转型了。但是如果使用 DataSource 的话,那么代码中其它代码其实都是使用 DataSource 这个类型的,这是和具体数据库类型无关的类,当你需要切换数据库时,就不需要大幅度修改代码

7.2 Connection

Connection 接口实现类由数据库提供,获取 Connection 对象通常有两种方式:

方式一: 通过 DataSource(数据源)对象获取

// 创建一个数据库源DataSource dataSource=new MysqlDataSource();// 设置数据库具体信息((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&useSSL=false");((MysqlDataSource)dataSource).setUser("root");((MysqlDataSource)dataSource).setPassword("1234");// 创建数据库连接Connection connection=dataSource.getConnection();

方式二: 通过 DriverManager(驱动管理类)的静态方法获取

// 加载 JDBC 驱动程序Class.forName("com.mysql.cj.jdbc.Driver");// 创建数据库连接Connection connection=DriverManager.getConnection(url);

MySQL 数据库驱动程序被封装在 Driver 类中,该类的包名是 com.mysql.cj.jdbc,该类不是 Java 运行环境类库中的类

上述两种方式的区别:

  • DriverManager 类来获取的 Connection 连接,是无法重复利用的,每次使用完以后释放资源时,通过 connection.close() 都是关闭物理连接

  • DataSource 提供连接池的支持。连接池在初始化时创建一定数量的数据库连接,这些连接是可以重复利用的,每次使用完数据库连接,通过 connection.close() 释放资源,都是将 Connection 连接对象回收

7.3 PreparedStatement

PreparedStatement 是 JDBC API 提供的三种可以将 SQL 语句发送到数据库的对象之一。这里对这三种做一个简单介绍

  • Statement: 用于执行不带参数的简单 SQL

  • PreparedStatement

  1. 用于执行带或者不带参数的 SQL 语句

  2. SQL 语句会预编译在数据库系统

  3. 执行速度快于 Statement 对象

  • CallableStatement: 用于执行数据库存储过程的调用

7.4 ResultSet

ResultSet 对象它被称为结果集,它代表符合 SQL 语句条件的所有行,并且它通过一套 getXxx() 方法提供了对这些行中数据的访问
ResultSet 里的数据是一行一行排列的,每当有多个字段,并且有一个记录指针,指针所指的数据行叫做当前数据行,我们只能来操作当前的数据行。我们如果想要取得某一条记录,就要使用 ResultSet next() 方法,可以通过结合 while 循环来遍历 ResultSet 里的所有记录

常见 ResultSet 对象方法:

如何进行JDBC的分析

注意:

ResultSet 对象和数据库连接对象 Connection 实现了紧密连接,一旦连接对象被关闭,ResultSet 对象中的数据就会立刻消失

8. Java 操作数据库实例

8.1 往表中新增数据

在 student 表中新增学生 id 和 name:

public static void testInsert() throws SQLException {    DataSource dataSource=new MysqlDataSource();    ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&useSSL=false");    ((MysqlDataSource)dataSource).setUser("root");    ((MysqlDataSource)dataSource).setPassword("1234");    Connection connection=dataSource.getConnection();    Scanner scanner=new Scanner(System.in);    System.out.print("请输入id:");    int id=scanner.nextInt();    System.out.print("请输入姓名:");    String name=scanner.next();    String sql="insert into student values(?,?)";    PreparedStatement statement=connection.prepareStatement(sql);    statement.setInt(1,id);    statement.setString(2,name);    int ret=statement.executeUpdate();    System.out.println("ret: "+ret);    statement.close();    connection.close();}

8.2 删除表中的数据

在表名为 student 的表中,删除学生表中符合 id 条件的记录:

public static void testDelete() throws SQLException {    DataSource dataSource=new MysqlDataSource();    ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&useSSL=false");    ((MysqlDataSource)dataSource).setUser("root");    ((MysqlDataSource)dataSource).setPassword("1234");    Connection connection=dataSource.getConnection();    Scanner scanner=new Scanner(System.in);    System.out.print("请输入要删除的 id:");    int id=scanner.nextInt();    String sql="delete from student where id=?";    PreparedStatement statement=connection.prepareStatement(sql);    statement.setInt(1,id);    int ret=statement.executeUpdate();    System.out.println("ret: "+ret);    statement.close();    connection.close();}

8.3 修改表中的数据

在表名为 student 的表中,将符合 id 条件的学生姓名进行修改:

public static void testUpdate() throws SQLException {    DataSource dataSource=new MysqlDataSource();    ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&useSSL=false");    ((MysqlDataSource)dataSource).setUser("root");    ((MysqlDataSource)dataSource).setPassword("1234");    Connection connection=dataSource.getConnection();    Scanner scanner=new Scanner(System.in);    System.out.print("情输入你要更改的学生 id:");    int id=scanner.nextInt();    System.out.print("请输入你要更改后的学生姓名:");    String name=scanner.next();    String sql="update student set name=? where id=?";    PreparedStatement statement=connection.prepareStatement(sql);    statement.setString(1,name);    statement.setInt(2,id);    int ret=statement.executeUpdate();    System.out.println("ret: "+ret);    statement.close();    connection.close();}

8.4 查找表中的数据

查找表名为 student 的表中的所有数据:

public static void testSelect() throws SQLException {    DataSource dataSource=new MysqlDataSource();    ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&useSSL=false");    ((MysqlDataSource)dataSource).setUser("root");    ((MysqlDataSource)dataSource).setPassword("1234");    Connection connection=dataSource.getConnection();    String sql="select * from student";    PreparedStatement statement=connection.prepareStatement(sql);    ResultSet resultSet=statement.executeQuery();    while(resultSet.next()){        int id=resultSet.getInt("id");        String name=resultSet.getString("name");        System.out.println("id = "+id+", name = "+name);    }    resultSet.close();    statement.close();    connection.close();}

关于如何进行JDBC的分析就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

--结束END--

本文标题: 如何进行JDBC的分析

本文链接: https://www.lsjlt.com/news/301540.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何进行JDBC的分析
    这篇文章给大家介绍如何进行JDBC的分析,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1. 数据库编程的基础条件如果你想实现代码操作数据库,那么以下条件是你实现它的前提编程语言:例如 Java、C++、Python 等...
    99+
    2023-06-22
  • 怎么进行JDBC的分析
    这期内容当中小编将会给大家带来有关怎么进行JDBC的分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。JDBC是一种可用于执行SQL语句的JavaAPI(ApplicationProgrammingInt...
    99+
    2023-06-17
  • SpringBoot 如何使用sharding jdbc进行分库分表
    目录基于4.0版本,Springboot2.1在pom里确保有如下引用里面我profiles.active了另一个之后手工把表都建好写个测试代码需要注意一个坑基于4.0版本,Spri...
    99+
    2024-04-02
  • 如何进行Request的分析
    如何进行Request的分析,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。介绍Request类是一个http请求的类,对于爬虫而言是一个很重要的类。通常在Spider中创建这样...
    99+
    2023-06-17
  • 如何进行asmcmd的分析
    如何进行asmcmd的分析,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。在ASM实例中,所有的存储于ASM磁盘组中的文件对于操作系统命令而言是...
    99+
    2024-04-02
  • 如何进行abstract的分析
    这篇文章将为大家详细讲解有关如何进行abstract的分析,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。抽象类: abstract抽象:不具体,看不明白。抽象类表象体现。在不断抽取过程中,将...
    99+
    2023-06-02
  • 如何进行SAP CPI的分析
    本篇文章为大家展示了如何进行SAP CPI的分析,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。最近Jerry由于项目需要,又得学习一个新工具:SAP Cloud Platform Integrati...
    99+
    2023-06-04
  • 如何进行MV-Sketch的分析
    如何进行MV-Sketch的分析,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。网络测量是对网络行为进行特征化、对各项指标进行量化并充分理解与正确认识互联网的最基本手段,支持...
    99+
    2023-06-03
  • 如何进行Django Celery分析
    本篇文章为大家展示了如何进行Django Celery分析,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。对于任务调度的实现方案,其实开源的项目有很多。我先说说对于任务调度的认识,如果从数据库层面来说...
    99+
    2023-06-04
  • 如何进行网站分析
    这篇文章给大家分享的是有关如何进行网站分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。  一、网站分析应从哪里开始  一个完整的网站分析应用过程是这样的: 分析目标 → 插码 &rar...
    99+
    2023-06-10
  • 如何进行Linux命令行分析
    如何进行Linux命令行分析,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1、命令行真的好吗程序员的使命维基百科的解释:命令行界面(英语:command-line inte...
    99+
    2023-06-28
  • 如何进行ogg的字符分析
    今天就跟大家聊聊有关如何进行ogg的字符分析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。 我们所熟知oracle的字符...
    99+
    2024-04-02
  • 如何进行JSON来历的分析
    如何进行JSON来历的分析,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。本篇文章介绍JSON来历,以及JSON来历的说明介绍,即我们可以把想要...
    99+
    2024-04-02
  • 如何进行Iptables的脚本分析
    这篇文章给大家介绍如何进行Iptables的脚本分析,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。环境:redhat9 加载了string time等模块,加载方法参照 http://bbs.chinaunix.net...
    99+
    2023-06-13
  • 如何进行dedecms注入的分析
    如何进行dedecms注入的分析,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。漏洞文件: plus\feedback.php。存在问题的代码:...if($comtype ...
    99+
    2023-06-17
  • 如何进行CitizenMe的应用分析
    如何进行CitizenMe的应用分析,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。审核服务条款与性格测试第一个功能是跟踪记录用...
    99+
    2024-04-02
  • 如何进行null与index的分析
    这期内容当中小编将会给大家带来有关如何进行null与index的分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。 今天在测试过程中遇到一问...
    99+
    2024-04-02
  • 如何进行WSRP的示例分析
    今天就跟大家聊聊有关如何进行WSRP的示例分析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。这周除了继续思考数据权限模型的建模和实现以外,主要还研究了一下WSRP(Web Servi...
    99+
    2023-06-03
  • 如何进行Collection接口的分析
    如何进行Collection接口的分析,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。###15Collection-List-ArrayList/LinkedL...
    99+
    2023-06-02
  • 如何进行zookeeper端口的分析
    如何进行zookeeper端口说明,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、zookeeper有三个端口(可以修改)    1、218...
    99+
    2023-06-03
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作