【HBase整合Hive】HBase-1.4.8整合Hive-2.3.3过程
HBase-1.4.8整合Hive-2.3.3过程
- 一、摘要
- 二、整合过程
- 三、注意事项
一、摘要
-
HBase集成Hive,由Hive来编写SQL语句操作HBase有以下好处:
- 简化操作:Hive提供了类SQL的查询语言HiveQL,对于熟悉SQL的用户来说,无需学习HBase的原生Java API或其他复杂的操作方式,就可以方便地对HBase中的数据进行查询、插入、更新等操作。这大大降低了开发和使用的门槛,提高了数据操作的效率。
- 支持复杂查询:Hive具有强大的查询处理能力,能够支持复杂的SQL查询,如多表关联、分组、聚合等操作。而HBase本身主要是一个列存储的NoSQL数据库,对于复杂查询的支持相对有限。通过Hive集成,可以利用Hive的查询优化器和执行引擎来处理这些复杂查询,方便用户从HBase中获取更有价值的信息。
- 数据处理和分析:Hive通常与Hadoop生态系统中的其他组件紧密集成,如HDFS、MapReduce等,这使得它能够方便地进行大规模数据的处理和分析。当Hive与HBase集成后,可以将HBase中的数据与Hadoop生态系统中的其他数据结合起来进行综合分析,充分发挥Hadoop生态系统的优势。
- 数据抽象和统一管理:Hive为HBase数据提供了一种抽象层,将HBase表映射为Hive表,使得用户可以将HBase数据视为传统的关系型表进行管理和操作。这样可以在一定程度上统一数据的管理和访问方式,方便用户在不同的应用场景中使用HBase数据。
- 支持数据仓库功能:Hive最初是为数据仓库应用而设计的,它支持数据的ETL(提取、转换、加载)操作、数据分区、数据存储格式管理等功能。通过集成HBase,可以将HBase作为数据仓库的底层存储之一,利用Hive的数据仓库功能来管理和维护HBase中的数据,实现更高效的数据管理和分析。
-
HBase集成Hive,由Hive编写SQL语句操作HBase也存在一些弊端,主要体现在以下几个方面:
- 性能损耗
- Hive在执行SQL语句时,通常会将其转换为MapReduce任务或其他计算框架的任务来执行,这中间涉及到复杂的解析、优化和任务调度过程,会带来一定的性能开销。而HBase本身具有高效的实时读写能力,集成Hive后,可能无法充分发挥HBase的实时性优势,对于一些对实时性要求较高的查询,性能可能不如直接使用HBase原生API。
- Hive的查询优化器主要是针对传统的关系型数据模型和磁盘存储设计的,对于HBase这种列存储、基于内存和分布式文件系统的存储结构,优化效果可能不理想。例如,Hive可能无法很好地利用HBase的列族、数据块缓存等特性来提高查询性能。
- 功能限制
- Hive的SQL语法虽然功能强大,但并不能完全覆盖HBase的所有功能。例如,HBase的一些高级特性,如协处理器、分布式计数器等,很难通过Hive SQL来直接使用。如果应用程序需要使用这些特性,就需要在Hive和HBase之间进行切换,增加了开发和维护的复杂性。
- Hive对HBase数据类型的支持存在一定限制。HBase的数据类型较为灵活,而Hive有自己固定的数据类型体系,在数据集成时可能会出现类型转换问题,导致数据精度丢失或查询结果不准确。
- 架构复杂性
- 集成Hive和HBase增加了系统架构的复杂性。需要同时维护Hive和HBase两个系统的正常运行,包括它们各自的配置、版本兼容性、集群资源管理等。任何一个组件出现问题,都可能影响到整个系统的正常运行,增加了运维的难度和成本。
- 在数据处理流程中,数据可能需要在Hive和HBase之间进行多次转换和传输,这不仅增加了数据处理的时间和网络开销,还可能导致数据一致性问题。如果在集成过程中没有合理设计数据同步和一致性维护机制,可能会出现数据不一致的情况,影响数据分析的准确性。
- 性能损耗
-
尽管HBase集成Hive存在一些弊端,但两者进行集成仍然具有重要意义,主要原因如下:
- 技术互补
- HBase擅长处理大规模的实时数据存储和随机读写,能够在海量数据中快速定位和查询数据,适用于对实时性要求高的场景,如实时监控、金融交易等。而Hive在处理复杂的SQL查询、数据仓库管理和批处理分析方面具有优势,能够方便地进行数据汇总、统计分析和报表生成。通过集成,可将HBase的实时数据处理能力与Hive的数据分析能力相结合,满足不同业务场景下的需求。
- Hive可以将结构化的数据以表的形式进行管理,提供了一种类似于关系型数据库的操作方式,方便用户进行数据定义、查询和管理。HBase则以其灵活的列存储结构和分布式架构,能够存储半结构化或非结构化数据。两者集成后,可以在Hive中对HBase中的半结构化或非结构化数据进行处理和分析,拓展了数据处理的范围。
- 保护投资和技术栈整合
- 许多企业已经在Hadoop生态系统上进行了大量投资,Hive是Hadoop生态中常用的数据仓库工具,而HBase作为高性能的分布式数据库也被广泛应用。集成两者可以充分利用企业现有的技术栈和基础设施,避免重复建设和资源浪费,保护企业在大数据领域的前期投资。
- 对于已经熟悉Hive SQL的开发人员和数据分析师来说,通过集成HBase和Hive,他们可以在不学习新的复杂API的情况下,利用现有的技能和知识来处理HBase中的数据,降低了学习成本和开发难度,提高了工作效率。
- 支持多样化的业务需求
- 在实际业务中,往往既需要对实时数据进行快速查询和处理,又需要对历史数据进行复杂的分析和挖掘。HBase集成Hive可以同时满足这两类需求,为企业提供更全面的数据处理和分析解决方案。例如,在电商领域,HBase可以用于实时记录用户的行为数据,如点击、购买等,而Hive可以对这些数据进行分析,挖掘用户的消费习惯、购买趋势等,为企业的营销策略提供支持。
- 随着业务的发展,数据量和数据类型不断增加,对数据处理的要求也越来越多样化。集成HBase和Hive可以更好地应对这些变化,提供更灵活的数据处理和分析能力,帮助企业更好地利用数据资产,提升竞争力。
- 技术互补
二、整合过程
HBase1.4.8和Hive-2.3.3各种的安装步骤请参考基于OpenEuler国产操作系统大数据实验环境搭建。两者集成的步骤如下:
- 修改hive-site.xml
添加zookeeper的连接配置项:<!-- 与HBase集成 --><!-- 指定zookeeper集群地址 --><property><name>hive.zookeeper.quorum</name><value>s1,s2,s3</value></property><property><name>hive.zookeeper.client.port</name><value>2181</value></property>
- 将hbase-site.xml复制到$HIVE_HOME/conf/目录
cp $HBASE_HOME/conf/hbase-site.xml $HIVE_HOME/conf/
- 验证
- 确保zookeeper和hbase处于启动状态
- 执行hive 命令,进程hive的CLI界面中
[root@s1 hive]# hive …… Logging initialized using configuration in jar:file:/mysoft/hive/lib/hive-common-2.3.3.jar!/hive-log4j2.properties Async: true Hive-on-MR is deprecated in Hive 2 and may not be available in the future versions. Consider using a different execution engine 1.X releases. hive>
- 在hive的CLI中创建一张表:
执行上述SQL,结果如下:create table hive_to_hbase_emp_table( empno int, ename string, job string, mgr int, hiredate string, sal double, comm double, deptno int) stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' with serdeproperties ("hbase.columns.mapping"=":key,info:ename,info:job,info:mgr,info:hiredate,info:sal,info:comm,info:deptno") tblproperties("hbase.table.name"="hive_to_hbase_emp_table");
说明Hive与HBase集成已经正常。hive> create table hive_to_hbase_emp_table(> empno int,> ename string,> job string,> mgr int,> hiredate string,> sal double,> comm double,> deptno int)> stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' with serdeproperties ("hbase.columns.mapping"=":key,info:ename,info:job,info:mgr,info:hiredate,info:sal,info:comm,info:deptno") tblproperties("hbase.table.name"="hive_to_hbase_emp_table"); OK Time taken: 4.958 seconds hive>
- 在hbase shell中查看是否由hive创建的表:
hbase(main):001:0> list TABLE hive_to_hbase_emp_table 1 row(s) in 0.8890 seconds => ["hive_to_hbase_emp_table"] hbase(main):002:0>
- 在hive的cli中,创建一张hive的内部表hive_inner_emp,用于将本地文件的数据加载到该表,为后面往hbase中的表做准备(这里仅仅学习和测试演示使用):
执行上述SQL完成hive_inner_emp表创建。create table hive_inner_emp( empno int, ename string, job string, mgr int, hiredate string, sal double, comm double, deptno int) row format delimited fields terminated by ',';
然后加载将本地的emp.csv文件的数据到该表中:
命令执行正常时,数据已经添加到hive_inner_emp表中:load data local inpath '/tools/emp.csv' into table hive_inner_emp;
hive> select * from hive_inner_emp; OK 7369 SMITH CLERK 7902 1980/12/17 800.0 NULL 20 7499 ALLEN SALESMAN 7698 1981/2/20 1600.0 300.0 30 7521 WARD SALESMAN 7698 1981/2/22 1250.0 500.0 30 7566 JONES MANAGER 7839 1981/4/2 2975.0 NULL 20 7654 MARTIN SALESMAN 7698 1981/9/28 1250.0 1400.0 30 7698 BLAKE MANAGER 7839 1981/5/1 2850.0 NULL 30 7782 CLARK MANAGER 7839 1981/6/9 2450.0 NULL 10 7788 SCOTT ANALYST 7566 1987/4/19 3000.0 NULL 20 7839 KING PRESIDENT NULL 1981/11/17 5000.0 NULL 10 7844 TURNER SALESMAN 7698 1981/9/8 1500.0 0.0 30 7876 ADAMS CLERK 7788 1987/5/23 1100.0 NULL 20 7900 JAMES CLERK 7698 1981/12/3 9500.0 NULL 30 7902 FORD ANALYST 7566 1981/12/3 3000.0 NULL 20 7934 MILLER CLERK 7782 1982/1/23 1300.0 NULL 10 Time taken: 0.668 seconds, Fetched: 14 row(s)
- 将
hive_inner_emp
表数据插入到hive_to_hbase_emp_table
表中:
正常执行结果如下所示:insert into hive_to_hbase_emp_table select * from hive_inner_emp;
hive> insert into hive_to_hbase_emp_table select * from hive_inner_emp; WARNING: Hive-on-MR is deprecated in Hive 2 and may not be available in the future versions. Consider using a different execution engine (i.e. spark, tez) or using Hive 1.X releases. Query ID = root_20250513134124_d0a93e1f-e852-405e-ad52-2ddaae763d9f Total jobs = 1 Launching Job 1 out of 1 Number of reduce tasks is set to 0 since there's no reduce operator Starting Job = job_1747100297537_0014, Tracking URL = http://s1:8088/proxy/application_1747100297537_0014/ Kill Command = /mysoft/hadoop/bin/hadoop job -kill job_1747100297537_0014 Hadoop job information for Stage-3: number of mappers: 1; number of reducers: 0 2025-05-13 13:41:56,018 Stage-3 map = 0%, reduce = 0% 2025-05-13 13:42:17,910 Stage-3 map = 100%, reduce = 0%, Cumulative CPU 4.98 sec MapReduce Total cumulative CPU time: 4 seconds 980 msec Ended Job = job_1747100297537_0014 MapReduce Jobs Launched: Stage-Stage-3: Map: 1 Cumulative CPU: 4.98 sec HDFS Read: 5951 HDFS Write: 0 SUCCESS Total MapReduce CPU Time Spent: 4 seconds 980 msec OK Time taken: 55.57 seconds hive>
- 在hbase shell中执行scan命令查看该表数据:
hbase(main):002:0> scan 'hive_to_hbase_emp_table' ROW COLUMN+CELL7369 column=info:deptno, timestamp=1747114968171, value=207369 column=info:ename, timestamp=1747114968171, value=SMITH7369 column=info:hiredate, timestamp=1747114968171, value=1980/12/177369 column=info:job, timestamp=1747114968171, value=CLERK7369 column=info:mgr, timestamp=1747114968171, value=79027369 column=info:sal, timestamp=1747114968171, value=800.07499 column=info:comm, timestamp=1747114968171, value=300.07499 column=info:deptno, timestamp=1747114968171, value=307499 column=info:ename, timestamp=1747114968171, value=ALLEN7499 column=info:hiredate, timestamp=1747114968171, value=1981/2/207499 column=info:job, timestamp=1747114968171, value=SALESMAN7499 column=info:mgr, timestamp=1747114968171, value=76987499 column=info:sal, timestamp=1747114968171, value=1600.07521 column=info:comm, timestamp=1747114968171, value=500.07521 column=info:deptno, timestamp=1747114968171, value=307521 column=info:ename, timestamp=1747114968171, value=WARD7521 column=info:hiredate, timestamp=1747114968171, value=1981/2/227521 column=info:job, timestamp=1747114968171, value=SALESMAN7521 column=info:mgr, timestamp=1747114968171, value=76987521 column=info:sal, timestamp=1747114968171, value=1250.07566 column=info:deptno, timestamp=1747114968171, value=207566 column=info:ename, timestamp=1747114968171, value=JONES7566 column=info:hiredate, timestamp=1747114968171, value=1981/4/27566 column=info:job, timestamp=1747114968171, value=MANAGER7566 column=info:mgr, timestamp=1747114968171, value=78397566 column=info:sal, timestamp=1747114968171, value=2975.07654 column=info:comm, timestamp=1747114968171, value=1400.07654 column=info:deptno, timestamp=1747114968171, value=307654 column=info:ename, timestamp=1747114968171, value=MARTIN7654 column=info:hiredate, timestamp=1747114968171, value=1981/9/287654 column=info:job, timestamp=1747114968171, value=SALESMAN7654 column=info:mgr, timestamp=1747114968171, value=76987654 column=info:sal, timestamp=1747114968171, value=1250.07698 column=info:deptno, timestamp=1747114968171, value=307698 column=info:ename, timestamp=1747114968171, value=BLAKE7698 column=info:hiredate, timestamp=1747114968171, value=1981/5/17698 column=info:job, timestamp=1747114968171, value=MANAGER7698 column=info:mgr, timestamp=1747114968171, value=78397698 column=info:sal, timestamp=1747114968171, value=2850.07782 column=info:deptno, timestamp=1747114968171, value=107782 column=info:ename, timestamp=1747114968171, value=CLARK7782 column=info:hiredate, timestamp=1747114968171, value=1981/6/97782 column=info:job, timestamp=1747114968171, value=MANAGER7782 column=info:mgr, timestamp=1747114968171, value=78397782 column=info:sal, timestamp=1747114968171, value=2450.07788 column=info:deptno, timestamp=1747114968171, value=207788 column=info:ename, timestamp=1747114968171, value=SCOTT7788 column=info:hiredate, timestamp=1747114968171, value=1987/4/197788 column=info:job, timestamp=1747114968171, value=ANALYST7788 column=info:mgr, timestamp=1747114968171, value=75667788 column=info:sal, timestamp=1747114968171, value=3000.07839 column=info:deptno, timestamp=1747114968171, value=107839 column=info:ename, timestamp=1747114968171, value=KING7839 column=info:hiredate, timestamp=1747114968171, value=1981/11/177839 column=info:job, timestamp=1747114968171, value=PRESIDENT7839 column=info:sal, timestamp=1747114968171, value=5000.07844 column=info:comm, timestamp=1747114968171, value=0.07844 column=info:deptno, timestamp=1747114968171, value=307844 column=info:ename, timestamp=1747114968171, value=TURNER7844 column=info:hiredate, timestamp=1747114968171, value=1981/9/87844 column=info:job, timestamp=1747114968171, value=SALESMAN7844 column=info:mgr, timestamp=1747114968171, value=76987844 column=info:sal, timestamp=1747114968171, value=1500.07876 column=info:deptno, timestamp=1747114968171, value=207876 column=info:ename, timestamp=1747114968171, value=ADAMS7876 column=info:hiredate, timestamp=1747114968171, value=1987/5/237876 column=info:job, timestamp=1747114968171, value=CLERK7876 column=info:mgr, timestamp=1747114968171, value=77887876 column=info:sal, timestamp=1747114968171, value=1100.07900 column=info:deptno, timestamp=1747114968171, value=307900 column=info:ename, timestamp=1747114968171, value=JAMES7900 column=info:hiredate, timestamp=1747114968171, value=1981/12/37900 column=info:job, timestamp=1747114968171, value=CLERK7900 column=info:mgr, timestamp=1747114968171, value=76987900 column=info:sal, timestamp=1747114968171, value=9500.07902 column=info:deptno, timestamp=1747114968171, value=207902 column=info:ename, timestamp=1747114968171, value=FORD7902 column=info:hiredate, timestamp=1747114968171, value=1981/12/37902 column=info:job, timestamp=1747114968171, value=ANALYST7902 column=info:mgr, timestamp=1747114968171, value=75667902 column=info:sal, timestamp=1747114968171, value=3000.07934 column=info:deptno, timestamp=1747114968171, value=107934 column=info:ename, timestamp=1747114968171, value=MILLER7934 column=info:hiredate, timestamp=1747114968171, value=1982/1/237934 column=info:job, timestamp=1747114968171, value=CLERK7934 column=info:mgr, timestamp=1747114968171, value=77827934 column=info:sal, timestamp=1747114968171, value=1300.0 14 row(s) in 0.9040 secondshbase(main):003:0>
- 在hive的cli中向hive_to_hbase_emp_table表中写入一条数据,验证是否正常写入:
hive> INSERT INTO TABLE hive_to_hbase_emp_table VALUES (7935, 'Alice', 'Engineer', null, '2023-01-01', 10000.0, null, 10); WARNING: Hive-on-MR is deprecated in Hive 2 and may not be available in the future versions. Consider using a different execution engine (i.e. spark, tez) or using Hive 1.X releases. Query ID = root_20250513134721_628fd4af-a8f7-4c6e-b9c1-9e8f22e78c03 Total jobs = 1 Launching Job 1 out of 1 Number of reduce tasks is set to 0 since there's no reduce operator Starting Job = job_1747100297537_0015, Tracking URL = http://s1:8088/proxy/application_1747100297537_0015/ Kill Command = /mysoft/hadoop/bin/hadoop job -kill job_1747100297537_0015 Hadoop job information for Stage-3: number of mappers: 1; number of reducers: 0 2025-05-13 13:47:49,256 Stage-3 map = 0%, reduce = 0% 2025-05-13 13:48:06,096 Stage-3 map = 100%, reduce = 0%, Cumulative CPU 6.2 sec MapReduce Total cumulative CPU time: 6 seconds 200 msec Ended Job = job_1747100297537_0015 MapReduce Jobs Launched: Stage-Stage-3: Map: 1 Cumulative CPU: 6.2 sec HDFS Read: 6082 HDFS Write: 0 SUCCESS Total MapReduce CPU Time Spent: 6 seconds 200 msec OK Time taken: 47.183 seconds hive>
- 在hbase shell中执行get命令查看该条数据:
到此,说明Hive-2.3.3和HBase-1.4.8集成完毕。hbase(main):006:0> get 'hive_to_hbase_emp_table','7935' COLUMN CELLinfo:deptno timestamp=1747115316165, value=10info:ename timestamp=1747115316165, value=Aliceinfo:hiredate timestamp=1747115316165, value=2023-01-01info:job timestamp=1747115316165, value=Engineerinfo:sal timestamp=1747115316165, value=10000.0 5 row(s) in 0.1260 seconds
三、注意事项
- Hive和HBase的版本务必兼容,请查看官网获取HBase和Hive的兼容版本。否则,会有各种意想不到的错误产生。
- 在hive创建的
hive_to_hbase_emp_table
表,hive只保存该表的元信息,该表所在hdfs上的路径为:
真实数据是存储在hbase路径下:drwxr-xr-x - root supergroup 0 2025-05-13 15:47 /user/hive/warehouse/hive_to_hbase_emp_table
[root@s1 conf]# hdfs dfs -ls -R /hbase/data/default/hive_to_hbase_emp_table drwxr-xr-x - root supergroup 0 2025-05-13 15:26 /hbase/data/default/hive_to_hbase_emp_table/.tabledesc -rw-r--r-- 3 root supergroup 303 2025-05-13 15:26 /hbase/data/default/hive_to_hbase_emp_table/.tabledesc/.tableinfo.0000000001 drwxr-xr-x - root supergroup 0 2025-05-13 15:26 /hbase/data/default/hive_to_hbase_emp_table/.tmp drwxr-xr-x - root supergroup 0 2025-05-13 15:26 /hbase/data/default/hive_to_hbase_emp_table/14a4000780edafd6a8b46b52f046f863 -rw-r--r-- 3 root supergroup 58 2025-05-13 15:26 /hbase/data/default/hive_to_hbase_emp_table/14a4000780edafd6a8b46b52f046f863/.regioninfo drwxr-xr-x - root supergroup 0 2025-05-13 15:26 /hbase/data/default/hive_to_hbase_emp_table/14a4000780edafd6a8b46b52f046f863/info drwxr-xr-x - root supergroup 0 2025-05-13 15:26 /hbase/data/default/hive_to_hbase_emp_table/14a4000780edafd6a8b46b52f046f863/recovered.edits -rw-r--r-- 3 root supergroup 0 2025-05-13 15:26 /hbase/data/default/hive_to_hbase_emp_table/14a4000780edafd6a8b46b52f046f863/recovered.edits/2.seqid [root@s1 conf]#
相关文章:
【HBase整合Hive】HBase-1.4.8整合Hive-2.3.3过程
HBase-1.4.8整合Hive-2.3.3过程 一、摘要二、整合过程三、注意事项 一、摘要 HBase集成Hive,由Hive来编写SQL语句操作HBase有以下好处: 简化操作:Hive提供了类SQL的查询语言HiveQL,对于熟悉SQL的用户来说,无需学习HBas…...
AI智能分析网关V4助力工厂/工地/车间/能源矿山场景玩手机行为精准检测与安全生产智能化监管
一、方案概述 在数字化时代,智能手机的广泛使用给特定场景带来诸多管理挑战。在工业生产、教育教学、危化品作业等场所,人员玩手机易引发安全隐患。AI智能分析网关V4凭借先进的AI视频分析技术与强大的边缘计算能力,精准识别玩手机行为&…...
云手机服务器搭建
云手机服务器搭建的核心要点及实施指南: 一、硬件与网络基础要求 服务器硬件 需配置至少2核4GB内存的云服务器(推荐华为云、雨云等支持KVM虚拟化的服务商) 必须支持KVM虚拟化技术(需通过CPU虚拟化检测) 建议选择大…...
软考 系统架构设计师系列知识点之杂项集萃(58)
接前一篇文章:软考 系统架构设计师系列知识点之杂项集萃(57) 第95题 RIPv2对RIPv1协议的改进之一为路由器必须有选择地将路由表中的信息发送给邻居,而不是发送整个路由表。具体地说,一条路由信息不会被发送给该信息的…...
【Pandas】pandas DataFrame cumprod
Pandas2.2 DataFrame Computations descriptive stats 方法描述DataFrame.abs()用于返回 DataFrame 中每个元素的绝对值DataFrame.all([axis, bool_only, skipna])用于判断 DataFrame 中是否所有元素在指定轴上都为 TrueDataFrame.any(*[, axis, bool_only, skipna])用于判断…...
Vue.js---分支切换与cleanup
4.2 分支切换与cleanup 1、分支切换 01 const data { ok: true, text: hello world } 02 const obj new Proxy(data, { /* ... */ }) 03 04 effect(function effectFn() { 05 document.body.innerText obj.ok ? obj.text : not 06 })什么是分支切换?就是 d…...
数据集-目标检测系列- 杨桃 数据集 Starfruit>> DataBall
数据集-目标检测系列- 杨桃 数据集 Starfruit>> DataBall * 相关项目 1)数据集可视化项目:gitcode: https://gitcode.com/DataBall/DataBall-detections-100s/overview 2)数据集训练、推理相关项目:GitH…...
专题三:穷举vs暴搜vs深搜vs回溯vs剪枝(全排列)决策树与递归实现详解
题目分析: 给一个数组,列出它的全排列 算法原理分析: 这里就是一个穷举/枚举的原理,就是罗列所有的可能情况 第一步:画决策树(越详细越好) 就是你如何暴力穷举每一种情况,把你的…...
1.3 不确定性分析
3.1 盈亏平衡分析 3.1.1 盈亏平衡分析的概念和分类 1.概念 销售收入总成本总成本固定成本可变成本(单位可变成本、单位税金及附加) 2.分类 线性盈亏平衡分析、非线性盈亏平衡分析通常只求线性盈亏平衡分析 3.1.2 线性盈亏平衡分析 1.前提条件 产量等于销售量、当年生产…...
端侧智能重构智能监控新路径 | 2025 高通边缘智能创新应用大赛第三场公开课来袭!
2025 高通边缘智能创新应用大赛初赛激战正酣,系列公开课持续输出硬核干货! 5月20日晚8点,第三场重磅课程《端侧智能如何重构下一代智能监控》将准时开启,广翼智联高级产品市场经理伍理化将聚焦智能监控领域的技术变革与产业落地&…...
SAP-12-1
1.描述列事务码的作用: su01:修改密码 se11:创建数据元素,数据表,域 se14:删除数据库的所有数据 se16:数据库查询,插入 se16n:数据删除 se21:创建包 se38:创建程序 se80:对象管理 2.解释下述ABAP基本数据类型的存储数据 I:整型 F:…...
【认知思维】过度自信效应:高估自我能力的认知偏差
什么是过度自信效应 过度自信效应(Overconfidence Effect)是指人们对自己的知识、能力和判断准确性的信心程度系统性地高于实际表现的心理现象。这种认知偏差表现为人们倾向于高估自己的知识水平、预测能力、决策质量和控制感,而低估任务难度…...
【图像处理基石】如何入门AI计算机视觉?
入门AI计算机视觉需要从基础理论、工具方法和实战项目三个维度逐步推进,以下是系统化的学习路径和建议: 一、夯实基础:核心知识储备 1. 数学基础(必备) 线性代数:矩阵运算、特征值分解、奇异值分解&…...
FFmpeg3.4 libavcodec协议框架增加新的decode协议
查看ffmepg下面的configure文件发现,config.h文件;解码协议的配置是通过libavcodec/allcodecs.c文件,通过查找DEC关键字生成的。 1、在libavcodec/allcodecs.c 新增REGISTER_ENCODER(MYCODE, mycode); REGISTER_ENCODER(VP8_VAAPI, vp8_vaapi); …...
C++中的各式类型转换
隐式转换: 基本类型的隐式转换: 当函数参数类型非精确匹配,但是可以转换的时候发生 如: void func1(double x){cout << x << endl; }void func2(char c){cout << c << endl; }int main(){func1(2);//…...
转发多台px4仿真UDP数据到地面站
转发脚本的任务需求 仿真采用UDP通信方式,在 wsl 中仿真三台飞机,项目需要将一台电脑中的三台飞机的数据打包发送到另一台飞机的地面站,但地面站是无法直接访问另一台主机的 wsl 中的端口的,wsl 中的端口需要本机才能访问&#x…...
polarctf-web-[简单rce]
考点: (1)RCE(eval函数) (2)执行函数(passthru函数) (3)/顶级(根)目录查看 (4)sort排序查看函数 题目来源:Polarctf-web-[简单rce] 解题: 代码审计 <?php/*PolarD&N CTF*/highlight_file(__FILE__);function no($txt){ # …...
Deno、Bun、Node.js 性能对比与选型指南
Deno、Bun、Node.js 性能对比与选型指南 一、背景介绍 在现代 JavaScript/TypeScript 开发中,运行时(Runtime)已经不仅仅是 Node.js 一家独大。随着 Deno 和 Bun 的崛起,开发者拥有了更多选择。那么这三者在性能、兼容性、生态和…...
如何优化MCU中断响应时间
目录 1、硬件层优化策略 1.1、中断控制器配置优化 1.2、DMA协同中断优化 1.3、中断向量表重映射技术 2、软件层优化技术 2.1、中断服务程序优化准则 2.2、编译器优化策略 3、系统架构级优化 中断响应时间由硬件延迟和软件延迟共同构成。硬件延迟包括中断信号传输时间、…...
当java进程内存使用超过jvm设置大小会发生什么?
当 Java 进程的内存使用超过 JVM 设置的最大内存限制时,具体会发生以下情况,取决于内存溢出的区域和配置: 1. 堆内存溢出(Heap Memory Exhaustion) 触发条件:对象分配请求超过 -Xmx(最大堆内存…...
FFmpeg多路节目流复用为一路包含多个节目的输出流
在音视频处理领域,将多个独立的节目流(如不同频道的音视频内容)合并为一个包含多个节目的输出流是常见需求。FFmpeg 作为功能强大的多媒体处理工具,提供了灵活的流复用能力,本文将通过具体案例解析如何使用 FFmpeg 实现…...
MongoDB与PostgreSQL两个数据库的特点详细对比
MongoDB 和 PostgreSQL 是两种不同类型的数据库,分别属于 NoSQL(文档型) 和 关系型(SQL) 数据库。它们在数据模型、查询语言、扩展性、事务支持等方面有显著差异。以下是详细对比: 1. …...
IDEA查看类结构视图窗口,接口的所有的实现类图
在IntelliJ(idea)中,可以通过以下步骤查看类结构窗口: 打开IntelliJ IDEA,并打开你的项目。在顶部菜单栏中,选择"View"(视图)选项。在下拉菜单中,选择"To…...
一文辨析Java基本数据类型与包装类
Java 基本数据类型与包装类深度解析 前言一、Java 基本数据类型详解1.1 数值型1.1.1 整型1.1.2 浮点型 1.2 字符型1.3 布尔型 二、Java 包装类详解2.1 包装类与基本数据类型的对应关系2.2 包装类的常用方法 三、基本数据类型与包装类的转换3.1 装箱(Boxingÿ…...
MapReduce 模型
引言 MapReduce 是分布式计算领域的里程碑式模型,由 Google 在 2004 年论文中首次提出,旨在简化海量数据处理的复杂性。其核心思想是通过函数式编程的 Map (映射)和 Reduce (归约)阶段&#x…...
中国人工智能智能体研究报告
中国人工智能智能体研究报告 I. 引言:定义人工智能智能体及其在中国的兴起 人工智能智能体,作为一种能够自主感知环境、做出决策并执行行动以达成特定目标的智能实体,正日益受到关注。与需要明确指令才能执行任务的传统人工智能系统不同&am…...
2025年PMP 学习十 -第8章 项目质量管理(8.1,8.2)
第8章 项目质量管理(8.1,8.2) 1. 质量的概念 反映实体满足主体明确和隐含需求的能力的特性总合 —— ISO;一组固定特性满足需求的程度 —— GB/T 19000-2008; 2. 质量 vs 等级 低等级 高质量 低等级、高质量的产品&…...
使用 IntelliJ IDEA 和 Maven 创建 Spark 项目
以下是使用 IntelliJ IDEA 和 Maven 创建 Spark 项目的详细步骤: 环境准备 安装 IntelliJ IDEA:从 IntelliJ IDEA 官网 下载并安装最新版本。安装 Maven:从 Maven 官方网站 下载并安装 Maven,安装后确保在命令行中可通过 mvn -v…...
解锁生命周期评价密码:OpenLCA、GREET 与 R 语言的融合应用
技术点目录 生命周期评价理论及常用指标与分析方法OpenLCA生命周期评估模型构建与分析基于GREET气体排放、能源消耗计算及生命周期评估模型构建方法生物质碳排放评估构建及基于R语言结果分析了解更多 ————————————————————————————————————…...
LeetCode 热题 100_多数元素(97_169_简单_C++)(哈希表;排序)
LeetCode 热题 100_多数元素(97_169_简单_C) 题目描述:输入输出样例:题解:解题思路:思路一(哈希表):思路二(排序): 代码实现代码实现&…...
【C++】【设计模式】生产者-消费者模型
生产者-消费者模型(Producer-Consumer Model)是一种经典的并发编程模式,用于解决多线程或多进程环境下的数据共享和任务协作问题。以下是对该模型的详细介绍: 一、核心概念 生产者(Producer):…...
第五十七篇 Java接口设计之道:从咖啡机到智能家居的编程哲学
目录 引言:生活中的接口无处不在一、咖啡机与基础接口:理解抽象契约1.1 咖啡制作的标准接口 二、智能家居与策略模式:灵活切换实现2.1 温度调节策略场景 三、物流系统与工厂模式:标准接口下的多样实现3.1 快递运输接口设计 四、健…...
centos9安装docker 配置docker代理
设置docker库 sudo dnf -y install dnf-plugins-core sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo 安装 Docker 包 sudo dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin …...
OpenAI for Countries:全球AI基础设施的“技术基建革命”
2025年5月7日,OpenAI宣布启动“OpenAI for Countries”计划,目标是为全球各国构建本土化的AI基础设施,提供定制化服务。这一计划被视为其“星际之门”项目的全球化延伸,以技术合作为核心,覆盖数据中心建设、模型适配与…...
手风琴效果
图示: 目的:这段HTML代码展示了一个简单的图片展示效果。通过使用Flexbox布局,创建了一个包含多个图片的容器,每张图片的宽度默认为120px,并在鼠标悬停时扩展至400px。代码中,图片路径通过JavaScript动态生…...
idea Maven 打包SpringBoot可执行的jar包
背景:当我们需要坐联调测试的时候,需要对接前端同事,则需要打包成jar包直接运行启动服务 需要将项目中的pom文件增加如下代码配置: <build><plugins><plugin><groupId>org.springframework.boot</gr…...
Visual Studio 项目 .gitignore 文件指南
Visual Studio 项目 .gitignore 文件指南 什么是 .gitignore? .gitignore 是一个特殊的文件,用于告诉 Git 哪些文件或文件夹不需要纳入版本控制。这对于 Visual Studio 项目尤其重要,因为 Visual Studio 会生成很多你不需要手动管理的文件。…...
使用ADB命令操作Android的apk/aab包
keystore文件转换jks文件 操作步骤: 步骤1,生成P12文件: keytool -importkeystore -srckeystore [文件名].keystore -srcstoretype JKS -deststoretype PKCS12 -destkeystore [文件名].p12 步骤2,生成jks文件: keytool…...
Ansys 计算刚柔耦合矩阵系数
Ansys 计算刚柔耦合系数矩阵 文章目录 Ansys 计算刚柔耦合系数矩阵卫星的刚柔耦合动力学模型采用 ANSYS 的 APDL 语言的计算方法系统转动惯量的求解方法参考文献 卫星的刚柔耦合动力学模型 柔性航天器的刚柔耦合动力学模型可以表示为 m v ˙ B t r a n η F J ω ˙ ω J…...
原生小程序+springboot+vue医院医患纠纷管理系统的设计与开发(程序+论文+讲解+安装+售后)
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,我会一一回复,希望帮助更多的人。 系统背景 在医疗行业快速发展的当下,医患关系已成为社会各界关注的焦点。近年来&#…...
django扩展练习记录
一、Django 中使用 django-apscheduler 实现定时任务 可以方便地管理周期性任务(如每天清理缓存、定时发送邮件等) 1. 安装 pip install django-apscheduler -i https://pypi.tuna.tsinghua.edu.cn/simple #0.7.02.添加到应用,python m…...
Android Exoplayer多路不同时长音视频混合播放
在上一篇Android Exoplayer 实现多个音视频文件混合播放以及音轨切换中我们提到一个问题,如果视频和音频时长不一致,特别是想混合多个音频和多个视频时就会出问题,无法播放。报错如下: E/ExoPlayerImplInternal(11191): Playback…...
第一章:HTML基石·现实的骨架
教学目标: • 理解 HTML 的整体结构(<!DOCTYPE>, <html>,<head>, <body>) • 掌握基础标签(<h1>, <p>, <a>, <img>, <ul>/<ol>/<li>, <div>, <span&…...
按键精灵ios脚本新增元素功能助力辅助工具开发(二)
元素节点功能(iOSElement) 在按键精灵 iOS 新版 APP v2.2.0 中,新增了元素节点功能 iOSElement,该功能包含共 15 个函数。这一功能的出现,为开发者在处理 iOS 应用界面元素时提供了更为精准和高效的方式。通过这些函…...
【源码+文档+调试讲解】党员之家服务系统小程序1
摘 要 本毕业设计的内容是设计并且实现一个基于springboot的党员之家服务系统小程序。它是在Windows下,以MYSQL为数据库开发平台,java技术和Tomcat网络信息服务作为应用服务器。党员之家服务系统小程序的功能已基本实现,主要包括首页、个人…...
《ffplay 读线程与解码线程分析:从初始化到 seek 操作,对比视频与音频解码的差异》
1 read-thread 1.1 初始化部分 1.分配. avformat_alloc_context 创建上下⽂ ic avformat_alloc_context();if (!ic) {av_log(NULL, AV_LOG_FATAL, "Could not allocate context.\n");ret AVERROR(ENOMEM);goto fail;}2 ic->interrupt_callback.callback deco…...
AI+可视化:数据呈现的未来形态
当AI生成的图表开始自动“美化”数据,当动态可视化报告能像人类一样“讲故事”,当你的眼球运动直接决定数据呈现方式——数据可视化的未来形态,正在撕裂传统认知。某车企用AI生成的3D可视化方案,让设计师集体失业;某医…...
Spring Boot 整合 Redis 实战
一、整合准备:环境与依赖 1. 技术栈说明 Spring Boot 版本:3.1.2(兼容 Java 17) Redis 服务器:Redis 7.0(本地部署或 Docker 容器) Maven 依赖: <dependency><…...
pdf url 转 图片
背景:vue2.0需要把pdf转成图片,显示在url里面,使用pdfjs-dist来解决 步骤: 1、安装依赖包(我的项目是node12,安装太高版本会报错) npm i pdfjs-dist2.16.105 2、vue代码 <template><div class"main…...
JPG与PDF格式转换器
该插件可实现JPG与PDF格式的互转。 MainForm.Designer.cs using System.Windows.Forms; namespace JpgToPdfConverter {partial class MainForm{private System.ComponentModel.IContainer components null;protected override void Dispose(bool disposing){if (disposing &…...