当前位置: 首页 > news >正文

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 {// 获取adminAdmin 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();}// 关闭adminadmin.close();}/*** 判断表格是否存在** @param namespace 命名空间* @param tableName 表名* @return true 存在 false 不存在**/public static boolean isTableExists(String namespace, String tableName) throws IOException {//获取adminAdmin 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));// 设置列族的最大版本数,这里假设默认设置为3columnFamilyDescriptorBuilder.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 {// 获取指定命名空间和表名称的TableDescriptorTableDescriptor descriptor = admin.getDescriptor(TableName.valueOf(namespace, tableName));// 创建TableDescriptorBuilder,并初始化为当前表的描述TableDescriptorBuilder tableDescriptorBuilder = TableDescriptorBuilder.newBuilder(descriptor);// 从TableDescriptor中获取指定列族的ColumnFamilyDescriptorColumnFamilyDescriptor 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. 关于修改
    修改必须先获取对原有表的描述,才能进行,结构如下
    在这里插入图片描述

相关文章:

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

HBase DDL操作 DDL操作主要是关于命名空间和表格的内容增删改查。 注&#xff1a;如果出现无法连接到zookeeper等的相关错误&#xff0c;可以将以下代码打jar包&#xff0c;在HMaster节点上执行 错误提示&#xff1a; Exception in thread “main” java.net.SocketTimeoutExc…...

关于TCP的基础知识

关于TCP的基础知识 TCP 是 Transmission Control Protocol 的缩写&#xff0c;中文意思是传输控制协议。 TCP 是一种面向连接的、可靠的、基于字节流的传输层通信协议&#xff0c;它位于 OSI 模型的第四层&#xff08;传输层&#xff09;。TCP 协议通过建立连接、维护连接状态、…...

MyBatis 中的类型别名配置详解

目录 1. 什么是类型别名&#xff1f; 2. 类型别名的配置方法 2.1 使用单个标签 2.2 使用标签批量扫描 2.3 使用Alias注解 3. 注意事项 4. 相关知识拓展 4.1 MyBatis的映射文件 4.2 MyBatis的动态SQL 4.3 MyBatis与Spring的整合 4.4 性能优化 5. 结论 在现代Java开发…...

如何提高UI自动化的稳定性

用例层面&#xff1a; 1. 将用例设计成参数化&#xff0c;将测试数据通过参数进行传递 2. 对于一些可能会变化的参数&#xff0c;将其设计成全局变量&#xff0c;减少维护用例的成本 3. 对用例之间避免产生依赖&#xff0c;可以独立执行 框架层面&#xff1a; 1. 使用PO设…...

ubuntu如何开启和关闭图形界面

在Ubuntu中&#xff0c;你可以根据需要开启或关闭图形界面。以下是具体的方法&#xff1a; 关闭图形界面 方法一&#xff1a;使用 systemctl 命令 打开终端。输入以下命令切换到多用户目标&#xff08;相当于关闭图形界面&#xff09;&#xff1a;sudo systemctl set-defaul…...

从博客到ICT社区:深化学习与交流的桥梁

大家好&#xff0c;我是你们熟悉的云途-CloudJourney。在这个信息爆炸的时代&#xff0c;我一直致力于通过博客、公众号等平台&#xff0c;与大家分享关于Linux、K8S、Docker、网络、服务器以及OpenStack等前沿技术的见解与心得。然而&#xff0c;随着交流的深入&#xff0c;我…...

基于python+django+vue的旅游景点数据分析系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码 精品专栏&#xff1a;Java精选实战项目…...

C++简单缓冲区类设计

目录 1.引言 2.静态缓冲区 3.动态缓冲区 4.数据引用类 5.自动数据引用类 6.几种缓冲区的类关系图 7.注意事项 8.完整代码 1.引言 在C中&#xff0c;设计静态和动态缓冲区类时&#xff0c;需要考虑的主要差异在于内存管理的方式。静态缓冲区类通常使用固定大小的内存区域…...

MySQL 数据库

1. MySQL 数据库的基础知识 这一部分将带你了解 MySQL 数据库的核心概念。无论你是初学者还是想要巩固基础&#xff0c;这部分内容将帮助你打下扎实的基础。 数据库的定义与作用&#xff1a;什么是数据库&#xff1f;MySQL 与其他数据库系统的比较。MySQL 安装与配置&#xf…...

基于单片机的智能校园照明系统

由于校园用电量较大&#xff0c;本设计可以根据实际环境情况的改变&#xff0c;实现实时照明的控制。本设计以单片机芯片为控制芯片&#xff0c;热释电传感器采集教室中学生出入的信息&#xff0c;并把信息传递给单片机芯片&#xff0c;单片机芯片根据传感器传递过来的信息来控…...

高性能分布式搜索引擎Elasticsearch详解

♥️作者&#xff1a;小宋1021 &#x1f935;‍♂️个人主页&#xff1a;小宋1021主页 ♥️坚持分析平时学习到的项目以及学习到的软件开发知识&#xff0c;和大家一起努力呀&#xff01;&#xff01;&#xff01; &#x1f388;&#x1f388;加油&#xff01; 加油&#xff01…...

连锁收银系统的五大功能 选择开源收银系统三要素

连锁收银系统的五大功能&#xff0c;很多新手是不清楚的&#xff0c;老手也只是知道一些大概&#xff0c;今天&#xff0c;商淘云为大家分享收银系统的五大功能&#xff0c;尤其是第五个&#xff0c;大部分人不清楚&#xff0c;有的企业前面选了不合适的收银系统&#xff0c;导…...

虚幻引擎解决构建问题

1.Intermediate 文件夹 在 Unreal Engine中&#xff0c;Intermediate 文件夹扮演着构建过程中的临时存储角色。具体来说&#xff0c;Intermediate 文件夹用于存放在编译和构建项目过程中生成的中间文件&#xff0c;这些文件包括但不限于&#xff1a; 编译中间文件&#xff1a;…...

C++基础知识:C++中读文件的四种简单方式

1.读取文件的步骤&#xff1a; 读文件步骤如下: 1.包含头文件 #include <fstream> 2.创建流对象 ifstream ifs; 3.打开文件并判断文件是否打开成功 ifs.open(“文件路径”,打开方式); 4. 读数据 四种方式读取 5.关闭文件 ifs.close(); 读取方法一&#xff1a; #include…...

【人工智能】多模态AI:如何通过融合文本、图像与音频重塑智能系统未来

1. 引言 在人工智能领域&#xff0c;多模态AI 是一项令人兴奋的新兴技术&#xff0c;旨在通过结合文本、图像和音频等多种数据模态&#xff0c;打造更加智能化和人性化的系统。随着深度学习和自然语言处理&#xff08;NLP&#xff09;的飞速发展&#xff0c;多模态AI正在为下一…...

通过重写QStyle控制QT控件样式

文章目录 创建自定义 QStyle 子类重写绘制方法调整大小和边距使用自定义样式在Qt应用程序中,QStyle类是负责所有控件(如按钮、滚动条、复选框等)的外观和行为的基类。重写QStyle允许你自定义控件的外观和感觉,实现独特的界面设计。下面介绍一下如何通过重写QStyle控制QT控件的…...

WPF入门教学十八 动画入门

WPF&#xff08;Windows Presentation Foundation&#xff09;是微软推出的一种用于创建Windows客户端应用程序的用户界面框架。WPF 提供了丰富的动画支持&#xff0c;可以通过XAML或者代码来实现各种动画效果。以下是一个简单的WPF动画入门教学&#xff0c;我们将使用XAML来创…...

电信光猫破解记录

设置桥接上网什么的都需要光猫超级管理员密码&#xff0c;记录一下自己破解电信光猫超级管理员密码的过程 1、MAC转初始密码串 记录MAC地址 MAC地址在光猫背后 生成密码串 把MAC地址中的横杠删除&#xff0c;得到一个密码串 2、windows开启 tel功能 打开控制面板 进入程序和…...

鸿蒙界面开发(九):列表布局 (List)

列表布局 当列表项达到一定数量&#xff0c;内容超过屏幕大小时&#xff0c;可以自动提供滚动功能。它适合用于呈现同类数据类型或数据类型集&#xff0c;例如图片和文本。在列表中显示数据集合是许多应用程序中的常见要求&#xff08;如通讯录、音乐列表、购物清单等&#xf…...

微服务远程调用(nacos及OpenFeign简单使用)

问题&#xff1a;在微服务中&#xff0c;每个项目是隔离开的&#xff0c;当有一个项目请求其他项目中的数据时&#xff0c;必须发起网络请求&#xff0c;本文即对此问题展开讨论。 1.使用restTemplate发送请求 //发送请求ResponseEntity<List<ItemDTO>> response …...

<6>-MySQL表的增删查改

目录 一&#xff0c;create&#xff08;创建表&#xff09; 二&#xff0c;retrieve&#xff08;查询表&#xff09; 1&#xff0c;select列 2&#xff0c;where条件 三&#xff0c;update&#xff08;更新表&#xff09; 四&#xff0c;delete&#xff08;删除表&#xf…...

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql

智慧工地管理云平台系统&#xff0c;智慧工地全套源码&#xff0c;java版智慧工地源码&#xff0c;支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求&#xff0c;提供“平台网络终端”的整体解决方案&#xff0c;提供劳务管理、视频管理、智能监测、绿色施工、安全管…...

java 实现excel文件转pdf | 无水印 | 无限制

文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...

渲染学进阶内容——模型

最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...

前端开发面试题总结-JavaScript篇(一)

文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包&#xff08;Closure&#xff09;&#xff1f;闭包有什么应用场景和潜在问题&#xff1f;2.解释 JavaScript 的作用域链&#xff08;Scope Chain&#xff09; 二、原型与继承3.原型链是什么&#xff1f;如何实现继承&a…...

QT: `long long` 类型转换为 `QString` 2025.6.5

在 Qt 中&#xff0c;将 long long 类型转换为 QString 可以通过以下两种常用方法实现&#xff1a; 方法 1&#xff1a;使用 QString::number() 直接调用 QString 的静态方法 number()&#xff0c;将数值转换为字符串&#xff1a; long long value 1234567890123456789LL; …...

ip子接口配置及删除

配置永久生效的子接口&#xff0c;2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...

使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度

文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...

2025季度云服务器排行榜

在全球云服务器市场&#xff0c;各厂商的排名和地位并非一成不变&#xff0c;而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势&#xff0c;对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析&#xff1a; 一、全球“三巨头”…...