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/
其他说明
- 关于修改
修改必须先获取对原有表的描述,才能进行,结构如下

相关文章:
HBase DDL操作代码汇总(namespace+table CRUD操作)
HBase DDL操作 DDL操作主要是关于命名空间和表格的内容增删改查。 注:如果出现无法连接到zookeeper等的相关错误,可以将以下代码打jar包,在HMaster节点上执行 错误提示: Exception in thread “main” java.net.SocketTimeoutExc…...
关于TCP的基础知识
关于TCP的基础知识 TCP 是 Transmission Control Protocol 的缩写,中文意思是传输控制协议。 TCP 是一种面向连接的、可靠的、基于字节流的传输层通信协议,它位于 OSI 模型的第四层(传输层)。TCP 协议通过建立连接、维护连接状态、…...
MyBatis 中的类型别名配置详解
目录 1. 什么是类型别名? 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自动化的稳定性
用例层面: 1. 将用例设计成参数化,将测试数据通过参数进行传递 2. 对于一些可能会变化的参数,将其设计成全局变量,减少维护用例的成本 3. 对用例之间避免产生依赖,可以独立执行 框架层面: 1. 使用PO设…...
ubuntu如何开启和关闭图形界面
在Ubuntu中,你可以根据需要开启或关闭图形界面。以下是具体的方法: 关闭图形界面 方法一:使用 systemctl 命令 打开终端。输入以下命令切换到多用户目标(相当于关闭图形界面):sudo systemctl set-defaul…...
从博客到ICT社区:深化学习与交流的桥梁
大家好,我是你们熟悉的云途-CloudJourney。在这个信息爆炸的时代,我一直致力于通过博客、公众号等平台,与大家分享关于Linux、K8S、Docker、网络、服务器以及OpenStack等前沿技术的见解与心得。然而,随着交流的深入,我…...
基于python+django+vue的旅游景点数据分析系统
作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码 精品专栏:Java精选实战项目…...
C++简单缓冲区类设计
目录 1.引言 2.静态缓冲区 3.动态缓冲区 4.数据引用类 5.自动数据引用类 6.几种缓冲区的类关系图 7.注意事项 8.完整代码 1.引言 在C中,设计静态和动态缓冲区类时,需要考虑的主要差异在于内存管理的方式。静态缓冲区类通常使用固定大小的内存区域…...
MySQL 数据库
1. MySQL 数据库的基础知识 这一部分将带你了解 MySQL 数据库的核心概念。无论你是初学者还是想要巩固基础,这部分内容将帮助你打下扎实的基础。 数据库的定义与作用:什么是数据库?MySQL 与其他数据库系统的比较。MySQL 安装与配置…...
基于单片机的智能校园照明系统
由于校园用电量较大,本设计可以根据实际环境情况的改变,实现实时照明的控制。本设计以单片机芯片为控制芯片,热释电传感器采集教室中学生出入的信息,并把信息传递给单片机芯片,单片机芯片根据传感器传递过来的信息来控…...
高性能分布式搜索引擎Elasticsearch详解
♥️作者:小宋1021 🤵♂️个人主页:小宋1021主页 ♥️坚持分析平时学习到的项目以及学习到的软件开发知识,和大家一起努力呀!!! 🎈🎈加油! 加油!…...
连锁收银系统的五大功能 选择开源收银系统三要素
连锁收银系统的五大功能,很多新手是不清楚的,老手也只是知道一些大概,今天,商淘云为大家分享收银系统的五大功能,尤其是第五个,大部分人不清楚,有的企业前面选了不合适的收银系统,导…...
虚幻引擎解决构建问题
1.Intermediate 文件夹 在 Unreal Engine中,Intermediate 文件夹扮演着构建过程中的临时存储角色。具体来说,Intermediate 文件夹用于存放在编译和构建项目过程中生成的中间文件,这些文件包括但不限于: 编译中间文件:…...
C++基础知识:C++中读文件的四种简单方式
1.读取文件的步骤: 读文件步骤如下: 1.包含头文件 #include <fstream> 2.创建流对象 ifstream ifs; 3.打开文件并判断文件是否打开成功 ifs.open(“文件路径”,打开方式); 4. 读数据 四种方式读取 5.关闭文件 ifs.close(); 读取方法一: #include…...
【人工智能】多模态AI:如何通过融合文本、图像与音频重塑智能系统未来
1. 引言 在人工智能领域,多模态AI 是一项令人兴奋的新兴技术,旨在通过结合文本、图像和音频等多种数据模态,打造更加智能化和人性化的系统。随着深度学习和自然语言处理(NLP)的飞速发展,多模态AI正在为下一…...
通过重写QStyle控制QT控件样式
文章目录 创建自定义 QStyle 子类重写绘制方法调整大小和边距使用自定义样式在Qt应用程序中,QStyle类是负责所有控件(如按钮、滚动条、复选框等)的外观和行为的基类。重写QStyle允许你自定义控件的外观和感觉,实现独特的界面设计。下面介绍一下如何通过重写QStyle控制QT控件的…...
WPF入门教学十八 动画入门
WPF(Windows Presentation Foundation)是微软推出的一种用于创建Windows客户端应用程序的用户界面框架。WPF 提供了丰富的动画支持,可以通过XAML或者代码来实现各种动画效果。以下是一个简单的WPF动画入门教学,我们将使用XAML来创…...
电信光猫破解记录
设置桥接上网什么的都需要光猫超级管理员密码,记录一下自己破解电信光猫超级管理员密码的过程 1、MAC转初始密码串 记录MAC地址 MAC地址在光猫背后 生成密码串 把MAC地址中的横杠删除,得到一个密码串 2、windows开启 tel功能 打开控制面板 进入程序和…...
鸿蒙界面开发(九):列表布局 (List)
列表布局 当列表项达到一定数量,内容超过屏幕大小时,可以自动提供滚动功能。它适合用于呈现同类数据类型或数据类型集,例如图片和文本。在列表中显示数据集合是许多应用程序中的常见要求(如通讯录、音乐列表、购物清单等…...
微服务远程调用(nacos及OpenFeign简单使用)
问题:在微服务中,每个项目是隔离开的,当有一个项目请求其他项目中的数据时,必须发起网络请求,本文即对此问题展开讨论。 1.使用restTemplate发送请求 //发送请求ResponseEntity<List<ItemDTO>> response …...
web vue 项目 Docker化部署
Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage):…...
Unity3D中Gfx.WaitForPresent优化方案
前言 在Unity中,Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染(即CPU被阻塞),这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案: 对惹,这里有一个游戏开发交流小组&…...
MongoDB学习和应用(高效的非关系型数据库)
一丶 MongoDB简介 对于社交类软件的功能,我们需要对它的功能特点进行分析: 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具: mysql:关系型数据库&am…...
Day131 | 灵神 | 回溯算法 | 子集型 子集
Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣(LeetCode) 思路: 笔者写过很多次这道题了,不想写题解了,大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...
家政维修平台实战20:权限设计
目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系,主要是分成几个表,用户表我们是记录用户的基础信息,包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题,不同的角色…...
sqlserver 根据指定字符 解析拼接字符串
DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...
leetcodeSQL解题:3564. 季节性销售分析
leetcodeSQL解题:3564. 季节性销售分析 题目: 表:sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...
汇编常见指令
汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX(不访问内存)XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...
【HTTP三个基础问题】
面试官您好!HTTP是超文本传输协议,是互联网上客户端和服务器之间传输超文本数据(比如文字、图片、音频、视频等)的核心协议,当前互联网应用最广泛的版本是HTTP1.1,它基于经典的C/S模型,也就是客…...
ABAP设计模式之---“简单设计原则(Simple Design)”
“Simple Design”(简单设计)是软件开发中的一个重要理念,倡导以最简单的方式实现软件功能,以确保代码清晰易懂、易维护,并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计,遵循“让事情保…...
