HBase DDL操作代码汇总(namespace+table CRUD操作)

HBase DDL操作

在这里插入图片描述
DDL操作主要是关于命名空间和表格的内容增删改查。

注:如果出现无法连接到zookeeper等的相关错误,可以将以下代码打jar包,在HMaster节点上执行
错误提示:

Exception in thread “main” java.net.SocketTimeoutException: callTimeout=1200000, callDuration=1200615: java.io.IOException: org.apache.zookeeper.KeeperException C o n n e c t i o n L o s s E x c e p t i o n : K e e p e r E r r o r C o d e = C o n n e c t i o n L o s s f o r / h b a s e / m a s t e r a t o r g . a p a c h e . h a d o o p . h b a s e . c l i e n t . R p c R e t r y i n g C a l l e r I m p l . c a l l W i t h R e t r i e s ( R p c R e t r y i n g C a l l e r I m p l . j a v a : 156 ) a t o r g . a p a c h e . h a d o o p . h b a s e . c l i e n t . H B a s e A d m i n . e x e c u t e C a l l a b l e ( H B a s e A d m i n . j a v a : 2954 ) a t o r g . a p a c h e . h a d o o p . h b a s e . c l i e n t . H B a s e A d m i n . e x e c u t e C a l l a b l e ( H B a s e A d m i n . j a v a : 2946 ) a t o r g . a p a c h e . h a d o o p . h b a s e . c l i e n t . H B a s e A d m i n . c r e a t e N a m e s p a c e A s y n c ( H B a s e A d m i n . j a v a : 2111 ) a t o r g . a p a c h e . h a d o o p . h b a s e . c l i e n t . A d m i n . c r e a t e N a m e s p a c e ( A d m i n . j a v a : 1657 ) a t o r g . h b a s e . H b a s e D D L . c r e a t e N a m e s p a c e ( H b a s e D D L . j a v a : 17 ) a t o r g . h b a s e . H b a s e D D L . m a i n ( H b a s e D D L . j a v a : 24 ) C a u s e d b y : o r g . a p a c h e . h a d o o p . h b a s e . M a s t e r N o t R u n n i n g E x c e p t i o n : j a v a . i o . I O E x c e p t i o n : o r g . a p a c h e . z o o k e e p e r . K e e p e r E x c e p t i o n ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/master at org.apache.hadoop.hbase.client.RpcRetryingCallerImpl.callWithRetries(RpcRetryingCallerImpl.java:156) at org.apache.hadoop.hbase.client.HBaseAdmin.executeCallable(HBaseAdmin.java:2954) at org.apache.hadoop.hbase.client.HBaseAdmin.executeCallable(HBaseAdmin.java:2946) at org.apache.hadoop.hbase.client.HBaseAdmin.createNamespaceAsync(HBaseAdmin.java:2111) at org.apache.hadoop.hbase.client.Admin.createNamespace(Admin.java:1657) at org.hbase.HbaseDDL.createNamespace(HbaseDDL.java:17) at org.hbase.HbaseDDL.main(HbaseDDL.java:24) Caused by: org.apache.hadoop.hbase.MasterNotRunningException: java.io.IOException: org.apache.zookeeper.KeeperException ConnectionLossException:KeeperErrorCode=ConnectionLossfor/hbase/masteratorg.apache.hadoop.hbase.client.RpcRetryingCallerImpl.callWithRetries(RpcRetryingCallerImpl.java:156)atorg.apache.hadoop.hbase.client.HBaseAdmin.executeCallable(HBaseAdmin.java:2954)atorg.apache.hadoop.hbase.client.HBaseAdmin.executeCallable(HBaseAdmin.java:2946)atorg.apache.hadoop.hbase.client.HBaseAdmin.createNamespaceAsync(HBaseAdmin.java:2111)atorg.apache.hadoop.hbase.client.Admin.createNamespace(Admin.java:1657)atorg.hbase.HbaseDDL.createNamespace(HbaseDDL.java:17)atorg.hbase.HbaseDDL.main(HbaseDDL.java:24)Causedby:org.apache.hadoop.hbase.MasterNotRunningException:java.io.IOException:org.apache.zookeeper.KeeperExceptionConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/master
at org.apache.hadoop.hbase.client.ConnectionImplementation M a s t e r S e r v i c e S t u b M a k e r . m a k e S t u b ( C o n n e c t i o n I m p l e m e n t a t i o n . j a v a : 1333 ) a t o r g . a p a c h e . h a d o o p . h b a s e . c l i e n t . C o n n e c t i o n I m p l e m e n t a t i o n . g e t K e e p A l i v e M a s t e r S e r v i c e ( C o n n e c t i o n I m p l e m e n t a t i o n . j a v a : 1400 ) a t o r g . a p a c h e . h a d o o p . h b a s e . c l i e n t . C o n n e c t i o n I m p l e m e n t a t i o n . g e t M a s t e r ( C o n n e c t i o n I m p l e m e n t a t i o n . j a v a : 1388 ) a t o r g . a p a c h e . h a d o o p . h b a s e . c l i e n t . M a s t e r C a l l a b l e . p r e p a r e ( M a s t e r C a l l a b l e . j a v a : 57 ) a t o r g . a p a c h e . h a d o o p . h b a s e . c l i e n t . R p c R e t r y i n g C a l l e r I m p l . c a l l W i t h R e t r i e s ( R p c R e t r y i n g C a l l e r I m p l . j a v a : 102 ) . . . 6 m o r e C a u s e d b y : j a v a . i o . I O E x c e p t i o n : o r g . a p a c h e . z o o k e e p e r . K e e p e r E x c e p t i o n MasterServiceStubMaker.makeStub(ConnectionImplementation.java:1333) at org.apache.hadoop.hbase.client.ConnectionImplementation.getKeepAliveMasterService(ConnectionImplementation.java:1400) at org.apache.hadoop.hbase.client.ConnectionImplementation.getMaster(ConnectionImplementation.java:1388) at org.apache.hadoop.hbase.client.MasterCallable.prepare(MasterCallable.java:57) at org.apache.hadoop.hbase.client.RpcRetryingCallerImpl.callWithRetries(RpcRetryingCallerImpl.java:102) ... 6 more Caused by: java.io.IOException: org.apache.zookeeper.KeeperException MasterServiceStubMaker.makeStub(ConnectionImplementation.java:1333)atorg.apache.hadoop.hbase.client.ConnectionImplementation.getKeepAliveMasterService(ConnectionImplementation.java:1400)atorg.apache.hadoop.hbase.client.ConnectionImplementation.getMaster(ConnectionImplementation.java:1388)atorg.apache.hadoop.hbase.client.MasterCallable.prepare(MasterCallable.java:57)atorg.apache.hadoop.hbase.client.RpcRetryingCallerImpl.callWithRetries(RpcRetryingCallerImpl.java:102)...6moreCausedby:java.io.IOException:org.apache.zookeeper.KeeperExceptionConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/master
at org.apache.hadoop.hbase.client.ConnectionImplementation.get(ConnectionImplementation.java:2208)
at org.apache.hadoop.hbase.client.ConnectionImplementation.access 500 ( C o n n e c t i o n I m p l e m e n t a t i o n . j a v a : 161 ) a t o r g . a p a c h e . h a d o o p . h b a s e . c l i e n t . C o n n e c t i o n I m p l e m e n t a t i o n 500(ConnectionImplementation.java:161) at org.apache.hadoop.hbase.client.ConnectionImplementation 500(ConnectionImplementation.java:161)atorg.apache.hadoop.hbase.client.ConnectionImplementationMasterServiceStubMaker.makeStubNoRetries(ConnectionImplementation.java:1294)
at org.apache.hadoop.hbase.client.ConnectionImplementation M a s t e r S e r v i c e S t u b M a k e r . m a k e S t u b ( C o n n e c t i o n I m p l e m e n t a t i o n . j a v a : 1327 ) . . . 10 m o r e C a u s e d b y : o r g . a p a c h e . z o o k e e p e r . K e e p e r E x c e p t i o n MasterServiceStubMaker.makeStub(ConnectionImplementation.java:1327) ... 10 more Caused by: org.apache.zookeeper.KeeperException MasterServiceStubMaker.makeStub(ConnectionImplementation.java:1327)...10moreCausedby:org.apache.zookeeper.KeeperExceptionConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/master
at org.apache.zookeeper.KeeperException.create(KeeperException.java:102)
at org.apache.zookeeper.KeeperException.create(KeeperException.java:54)
at org.apache.hadoop.hbase.zookeeper.ReadOnlyZKClient$ZKTask$1.exec(ReadOnlyZKClient.java:195)
at org.apache.hadoop.hbase.zookeeper.ReadOnlyZKClient.run(ReadOnlyZKClient.java:340)
at java.lang.Thread.run(Thread.java:748)

1.HBaseConnection

package org.hbase;

import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;
import java.io.IOException;

public class HBaseConnection {
    public static Connection connection =null;
    //public static CompletableFuture<AsyncConnection> asyncConnectionCompletableFuture=null;

    static {
        //创建连接
        //默认使用同步连接
        try {
            //读取本地文件
            connection = ConnectionFactory.createConnection();
        } catch (IOException e) {
            e.printStackTrace();
        }
        //异步连接创建
        //asyncConnectionCompletableFuture= ConnectionFactory.createAsyncConnection();

    }
    public static void closeConnection() throws IOException {
        if(connection!=null){
            connection.close();
        }
    }

    public static void main(String[] args) throws IOException {
        //使用连接
        System.out.println(HBaseConnection.connection);
        //关闭连接
        HBaseConnection.closeConnection();
    }
}

2.hbase-site.xml(请参考自己的配置文件)

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
  <property>
    <name>hbase.rootdir</name>
    <value>hdfs://ns1/hbase</value>
  </property>
  <property>
    <name>hbase.master.info.port</name>
    <value>60010</value>
  </property>
  <property>
    <name>hbase.cluster.distributed</name>
    <value>true</value>
  </property>
  <property>
    <name>hbase.zookeeper.quorum</name>
    <value>bigdata111:2181,bigdata112:2181,bigdata113:2181</value>
  </property>
  <property>
    <name>hbase.zookeeper.property.dataDir</name>
    <value>/root/training/apache-zookeeper-3.7.1-bin/zkdata</value>
  </property>
  <property>
    <name>hbase.zookeeper.property.clientPort</name>
    <value>2181</value>
  </property>
  <property>
    <name>hbase.tmp.dir</name>
    <value>/root/training/hbase-2.4.17/tmp</value>
  </property>
  <property>
    <name>hbase.unsafe.stream.capability.enforce</name>
    <value>false</value>
  </property>
  <property>
    <name>hbase.wal.provider</name>
    <value>filesystem</value>
  </property>
  <property>
    <name>dfs.replication</name>
    <value>2</value>
  </property>
</configuration>

3.pom.xml

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
  <property>
    <name>hbase.rootdir</name>
    <value>hdfs://ns1/hbase</value>
  </property>
  <property>
    <name>hbase.master.info.port</name>
    <value>60010</value>
  </property>
  <property>
    <name>hbase.cluster.distributed</name>
    <value>true</value>
  </property>
  <property>
    <name>hbase.zookeeper.quorum</name>
    <value>bigdata111:2181,bigdata112:2181,bigdata113:2181</value>
  </property>
  <property>
    <name>hbase.zookeeper.property.dataDir</name>
    <value>/root/training/apache-zookeeper-3.7.1-bin/zkdata</value>
  </property>
  <property>
    <name>hbase.zookeeper.property.clientPort</name>
    <value>2181</value>
  </property>
  <property>
    <name>hbase.tmp.dir</name>
    <value>/root/training/hbase-2.4.17/tmp</value>
  </property>
  <property>
    <name>hbase.unsafe.stream.capability.enforce</name>
    <value>false</value>
  </property>
  <property>
    <name>hbase.wal.provider</name>
    <value>filesystem</value>
  </property>
  <property>
    <name>dfs.replication</name>
    <value>2</value>
  </property>
</configuration>

4.HbaseDDL

package org.hbase;

import org.apache.hadoop.hbase.NamespaceDescriptor;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.util.Bytes;

import java.io.IOException;

public class HbaseDDL {
    public static Connection connection = HBaseConnection.connection;


    /**
     * @param namespace 输入的命名空间名称
     **/
    public static void createNamespace(String namespace) throws IOException {

        // 获取admin
        Admin admin = connection.getAdmin();
        //指定buillder用于创建命名空间
        NamespaceDescriptor.Builder builder = NamespaceDescriptor.create(namespace);
        //对builder写入相关参数配置
        builder.addConfiguration("user", "wunaiieq");

        //admin使用builder完成创建
        try {
            admin.createNamespace(builder.build());

        } catch (IOException e) {
            System.out.println("此空间以存在");
            e.printStackTrace();
        }

        // 关闭admin
        admin.close();
    }


    /**
     * 判断表格是否存在
     *
     * @param namespace 命名空间
     * @param tableName 表名
     * @return true 存在 false 不存在
     **/
    public static boolean isTableExists(String namespace, String tableName) throws IOException {
        //获取admin
        Admin admin = connection.getAdmin();

        //使用方法判断
        boolean b = false;
        try {
            b = admin.tableExists(TableName.valueOf(namespace, tableName));
        } catch (IOException e) {
            e.printStackTrace();
        }

        //连接关闭

        admin.close();
        //返回
        return b;
    }


    /**
     * 在HBase中创建一个新的表,并包含至少一个列族。
     *
     * @param namespace   命名空间名称,不能为空。
     * @param tableName   表名称,不能为空。
     * @param columnFamilies 列族名称,可变参数,可以具有多个,但必须至少提供一个列族。
     * @throws IOException 如果命名空间或表已存在,或者发生其他I/O错误。
     *
     * @方法描述:
     * 1. 首先检查列族数量,如果为0,则打印错误消息并返回。
     * 2. 检查表是否已经存在,如果存在,则打印错误消息并返回。
     * 3. 获取HBase的Admin对象,用于管理表。
     * 4. 创建TableDescriptorBuilder,用于构建表的描述。
     * 5. 遍历列族名称数组,为每个列族创建ColumnFamilyDescriptorBuilder,并设置最大版本数等参数。
     * 6. 将每个构建好的列族描述添加到TableDescriptorBuilder中。
     * 7. 使用Admin对象的createTable方法创建表。
     * 8. 如果创建过程中发生IOException,打印错误堆栈并抛出异常。
     * 9. 最后,关闭Admin对象以释放资源。
     *
     * @注意:
     * - 确保在调用此方法之前,HBase连接已经建立且有效。
     * - 如果命名空间不存在,HBase将自动创建它。
     * - 创建表是一个潜在的风险操作,应在执行前进行充分的测试和验证。
     */
    public static void createTable(String namespace, String tableName, String... columnFamilies) throws IOException {
        // 检查列族数量
        if (columnFamilies.length == 0) {
            System.err.println("At least one column family must be specified.");
            return;
        }

        // 检查表是否已经存在
        if (isTableExists(namespace, tableName)) {
            System.err.println("Table " + tableName + " already exists in namespace " + namespace + ".");
            return;
        }

        // 获取HBase的Admin对象
        Admin admin = connection.getAdmin();

        try {
            // 创建TableDescriptorBuilder,用于构建表的描述
            TableDescriptorBuilder tableDescriptorBuilder = TableDescriptorBuilder.newBuilder(TableName.valueOf(namespace, tableName));

            // 遍历列族名称数组,为每个列族创建ColumnFamilyDescriptorBuilder,并设置参数
            for (String columnFamily : columnFamilies) {
                ColumnFamilyDescriptorBuilder columnFamilyDescriptorBuilder = ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes(columnFamily));
                // 设置列族的最大版本数,这里假设默认设置为3
                columnFamilyDescriptorBuilder.setMaxVersions(3);

                // 将构建好的列族描述添加到TableDescriptorBuilder中
                tableDescriptorBuilder.setColumnFamily(columnFamilyDescriptorBuilder.build());
            }

            // 使用Admin对象的createTable方法创建表
            admin.createTable(tableDescriptorBuilder.build());
        } catch (IOException e) {
            // 打印错误堆栈
            e.printStackTrace();
            // 抛出异常,让调用者可以处理
            throw new IOException("Failed to create table " + tableName + " in namespace " + namespace, e);
        } finally {
            // 无论是否发生异常,都确保关闭Admin对象
            admin.close();
        }
    }

    /**
     * 修改指定HBase表中列族的版本数。
     *
     * @param namespace   命名空间名称,不能为空。
     * @param tableName   表名称,不能为空。
     * @param columnFamily 列族名称,不能为空。
     * @param version     要设置的最大版本数。
     * @throws IOException 如果表不存在、列族不存在、命名空间不存在或发生其他I/O错误。
     *
     * @方法描述:
     * 1. 首先获取HBase的Admin对象,用于管理表。
     * 2. 使用Admin对象的getDescriptor方法获取指定命名空间和表名称的TableDescriptor。
     * 3. 创建TableDescriptorBuilder,并初始化为当前表的描述,以确保保留现有配置。
     * 4. 从TableDescriptor中获取指定列族的ColumnFamilyDescriptor。
     * 5. 创建ColumnFamilyDescriptorBuilder,并初始化为当前列族的描述,以确保保留列族的其他配置。
     * 6. 使用ColumnFamilyDescriptorBuilder的setMaxVersions方法设置列族的最大版本数。
     * 7. 使用TableDescriptorBuilder的modifyColumnFamily方法将修改后的列族描述添加到表描述中。
     * 8. 使用Admin对象的modifyTable方法应用修改后的表描述。
     * 9. 如果修改过程中发生IOException,将抛出RuntimeException。
     * 10. 最后,关闭Admin对象以释放资源。
     *
     * @注意:
     * - 确保在调用此方法之前,HBase连接已经建立且有效。
     * - 如果表或列族不存在,将抛出相应的异常。
     * - 修改表结构是一个潜在的风险操作,应在执行前进行充分的测试和验证。
     */
    public static void modifyTable(String namespace, String tableName, String columnFamily, int version) throws IOException {
        // 获取HBase的Admin对象
        Admin admin = connection.getAdmin();
        //判断表格是否存在
        if(isTableExists(namespace,tableName)){
            System.out.println("Table not exists");
            return;
        }
        try {
            // 获取指定命名空间和表名称的TableDescriptor
            TableDescriptor descriptor = admin.getDescriptor(TableName.valueOf(namespace, tableName));

            // 创建TableDescriptorBuilder,并初始化为当前表的描述
            TableDescriptorBuilder tableDescriptorBuilder = TableDescriptorBuilder.newBuilder(descriptor);

            // 从TableDescriptor中获取指定列族的ColumnFamilyDescriptor
            ColumnFamilyDescriptor columnFamilyDescriptor = descriptor.getColumnFamily(Bytes.toBytes(columnFamily));

            // 确保列族存在
            if (columnFamilyDescriptor == null) {
                throw new IllegalArgumentException("列族 " + columnFamily + " 不存在");
            }

            // 创建ColumnFamilyDescriptorBuilder,并初始化为当前列族的描述
            ColumnFamilyDescriptorBuilder columnFamilyDescriptorBuilder = ColumnFamilyDescriptorBuilder.newBuilder(columnFamilyDescriptor);

            // 设置列族的最大版本数
            columnFamilyDescriptorBuilder.setMaxVersions(version);

            // 将修改后的列族描述添加到表描述中
            tableDescriptorBuilder.modifyColumnFamily(columnFamilyDescriptorBuilder.build());

            // 应用修改后的表描述
            admin.modifyTable(tableDescriptorBuilder.build());
        } catch (IOException e) {
            // 抛出RuntimeException,让调用者可以捕获并处理
            throw new RuntimeException("修改表时发生错误", e);
        } finally {
            // 无论是否发生异常,都确保关闭Admin对象
            admin.close();
        }
    }

    /**
     * 删除指定的HBase表。
     *
     * @param namespace 命名空间
     * @param tableName 表名
     * @return true 表示删除成功,false 表示删除失败
     * @throws IOException 如果操作过程中发生IO异常
     */
    public static boolean deleteTable(String namespace,String tableName) throws IOException {
        //判断存在
        if(!isTableExists(namespace,tableName)){
            System.out.println("Table not exists");
            return false;
        }
        Admin admin =connection.getAdmin();
        try {
            //删除表格之前必须标记其未不可用
            TableName tableName1 = TableName.valueOf(namespace, tableName);
            admin.disableTable(tableName1);
            admin.deleteTable(tableName1);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        admin.close();
        return true;
    }

    /**
     * 全部注释,按需使用
     * **/
    public static void main(String[] args) throws IOException {
        //创建空间
        //createNamespace("wunaiieq");
        //判断表存在
        //System.out.println(isTableExists("bigdata", "student"));
        //创建表
        //createTable("wunaiieq", "teachers", "id", "age");
        //modifyTable("wunaiieq","users","age",10);
        //删除表
        System.out.println(deleteTable("wunaiieq", "teachers"));
        HBaseConnection.closeConnection();

    }
}

运行效果

将代码打包部署于HMaster的节点上,运行jar文件即可
具体效果可以通过web端进行查看,端口为60010,ip替换即可

http://192.168.80.113:60010/

其他说明

  1. 关于修改
    修改必须先获取对原有表的描述,才能进行,结构如下
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/885274.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

sql server每天定时执行sql语句

sql server每天定时执行sql语句 1、打开SQL Server Management Studio 2、鼠标右击【SQL Server 代理】&#xff0c;选择【启动(S)】&#xff0c;如已启动&#xff0c;可以省略此步骤&#xff1b; 3、右键&#xff0c;新建-》作业&#xff0c;在作业上-》新建作业&#xff…

TypeScript是基于LLM上层研发的受益者

TypeScript优在哪里 TypeScript是一种由微软开发的开源编程语言&#xff0c;它是JavaScript的一个超集&#xff0c;添加了类型系统和一些其他特性。TypeScript的优势在于&#xff1a; 静态类型检查&#xff1a;TypeScript的最大卖点是它的静态类型系统。这允许开发者在编写代码…

Pytest自动化测试执行环境切换的2种解决方案

一、痛点分析 在实际企业的项目中&#xff0c;自动化测试的代码往往需要在不同的环境中进行切换&#xff0c;比如多套测试环境、预上线环境、UAT环境、线上环境等等&#xff0c;并且在DevOps理念中&#xff0c;往往自动化都会与Jenkins进行CI/CD&#xff0c;不论是定时执行策略…

ELK-03-skywalking监控linux系统

文章目录 前言一、下载node_exporter二、启动node_exporter三、下载OpenTelemetry Collector四、启动OpenTelemetry Collector4.1 将配置文件下载到同级目录4.2 启动 五、查看总结 前言 skywalking安装完成后&#xff0c;开始我们的第一个监控-监控linux系统。 参考官方文档&a…

AI知识库如何重塑电商行业的产品推荐系统

在数字化浪潮的推动下&#xff0c;电子商务行业正经历着前所未有的变革。其中&#xff0c;产品推荐系统作为连接消费者与商品的桥梁&#xff0c;其智能化与个性化水平直接影响着用户体验、转化率乃至整个平台的竞争力。随着人工智能&#xff08;AI&#xff09;技术的飞速发展&a…

灵当CRM index.php接口SQL注入漏洞复现 [附POC]

文章目录 灵当CRM index.php接口SQL注入漏洞复现 [附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现 0x06 修复建议 灵当CRM index.php接口SQL注入漏洞复现 [附POC] 0x01 前言 免责声明&#xff1a;请勿利用文章内的相关技…

Oracle Data Guard备库清理归档脚本

1 说明 我们知道在Oracle Data Guard架构中归档模式是必须打开的&#xff0c;主库将日志传输到备库&#xff0c;最终存放到备库的归档日志文件中。随着系统的运行&#xff0c;归档日志文件会不断累积&#xff0c;如果不及时清理&#xff0c;则会造成归档空间被写满&#xff0c…

java项目之社区智慧养老监护管理平台设计与实现源码(springboot)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的社区智慧养老监护管理平台设计与实现。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; 社区…

Linux工具的使用——yum和vim的理解和使用

目录 linux工具的使用1.linux软件包管理器yum1.1yum的背景了解关于yum的拓展 1.2yum的使用 2.Linux编辑器-vim使用2.1vim的基本概念2.2vim的基本操作2.3命令模式命令集2.3.1关于光标的命令&#xff1a;2.3.2关于复制粘贴的命令2.3.3关于删除的命令2.3.4关于文本编辑的命令 2.4插…

MAC M1 安装brew 配置环境变量,安装dart

一. 下载 brew 1. 终端输入 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" 2. 如遇到下载失败情况&#xff0c;需要VPN/代理 curl: (7) Failed to connect to raw.githubusercontent.com port 443 after 8 m…

【2025】springboot基于微信小程序记账本的设计与实现(源码+文档+调试+答疑)

文章目录 前言一、主要技术&#xff1f;二、项目内容1.整体介绍&#xff08;示范&#xff09;2.运行截图3.系统测试 总结更多项目 前言 时代在飞速进步&#xff0c;每个行业都在努力发展现在先进技术&#xff0c;通过这些先进的技术来提高自己的水平和优势&#xff0c;记账本小…

SpringBoot+Thymeleaf发票系统

> 这是一个基于SpringBootSpringSecurityThymeleafBootstrap实现的简单发票管理系统。 > 实现了用户登录&#xff0c;权限控制&#xff0c;客户管理&#xff0c;发票管理等功能。 > 并且支持导出为 CSV / PDF / EXCEL 文件。 > 本项目是一个小型发票管理系统…

基于SpringBoot的休闲娱乐代理售票系统设计与实现

1.1研究背景 21世纪&#xff0c;我国早在上世纪就已普及互联网信息&#xff0c;互联网对人们生活中带来了无限的便利。像大部分的企事业单位都有自己的系统&#xff0c;由从今传统的管理模式向互联网发展&#xff0c;如今开发自己的系统是理所当然的。那么开发休闲娱乐代理售票…

探索私有化聊天软件:即时通讯与音视频技术的结合

在数字化转型的浪潮中&#xff0c;企业对于高效、安全、定制化的通讯解决方案的需求日益迫切。鲸信&#xff0c;作为音视频通信技术的佼佼者&#xff0c;凭借其强大的即时通讯与音视频SDK&#xff08;软件开发工具包&#xff09;结合能力&#xff0c;为企业量身打造了私有化聊天…

Linux 应用层自定义协议与序列化

文章目录 一、应用层1、协议2、序列化 && 反序列化3、通过Json库进行数据的序列化 && 反序列化Json::Value类Json::Reader类Json::Writer类 二、为什么read、write、recv、send和Tcp支持全双工&#xff1f;发数据的本质&#xff1a;tcp支持全双工通信的原因&am…

docker学习笔记(1.0)

docker命令 下载镜像相关命令 检索&#xff1a;docker search 比如&#xff1a;docker search nginx 是查看有没有nginx镜像 后面的OK表示是不是官方镜像&#xff0c;如果有就是官方镜像&#xff0c;如果没有就是第三方的。 下载&#xff1a;docker pull 比如&#xff1a…

联宇集团:如何利用CRM实现客户管理精细化与业务流程高效协同

在全球化的浪潮中&#xff0c;跨境电商正成为国际贸易的新引擎。作为领先的跨境电商物流综合服务商&#xff0c;广东联宇物流有限公司(以下称“联宇集团”)以其卓越的物流服务和前瞻的数字化战略&#xff0c;在全球市场中脱颖而出。本文将基于联宇集团搭建CRM系统的实际案例&am…

Spring Boot 进阶- Spring Boot如何加载自定义的配置文件?

通过之前的分析,我们知道,在Spring Boot 应用默认启动的时候会自动加载resource目录下的application.yml 或者是加载bootstrap.yml 配置文件。这些都是默认的。 在有些情况下,为了可以更好地区分不同组件的配置文件,我们需要自定义一个配置文件,我们知道,自己创建的配置文…

DDL 超时,应该如何解决 | OceanBase 用户问题集萃

问题背景 在OceanBase的社区问答里常看到有用户发帖提出DDL超时的问题&#xff0c; 如“执行 DDL 超时&#xff0c;为何调大超时时间不生效&#xff1f;” 。但很多帖子的回答都没有完美解决。因此&#xff0c;这里把相关的解决思路在这里分享给大家。 帖子里对这类问题的描述…

Apache DolphinScheduler-1.3.9源码分析(一)

引言 随着大数据的发展&#xff0c;任务调度系统成为了数据处理和管理中至关重要的部分。Apache DolphinScheduler 是一款优秀的开源分布式工作流调度平台&#xff0c;在大数据场景中得到广泛应用。 在本文中&#xff0c;我们将对 Apache DolphinScheduler 1.3.9 版本的源码进…