人大金仓国产数据库与PostgreSQL
一、简介
在前面项目中,我们使用若依前后端分离整合人大金仓,在后续开发过程中,我们经常因为各种”不适配“问题,但可以感觉得到大部分问题,将人大金仓视为postgreSQL就能去解决大部分问题。据了解,Kingbase 是基于 开源数据库 PostgreSQL 开发的,大部分功能与 PostgreSQL兼容。Kingbase 8 是基于 PostgreSQL 9.6 的。那么下面我们来分析下具体哪些不同,也方便程序猿们在开发中更高效的去解决业务场景中出现的问题
二、具体差异
2.1 进程结构基本一致
KingbaseES和PostgreSQL启动后的后台进程
Kingbase:
postgreSQL:
和pg(9.6版本)相比,除了kinbaseES多了一个logger process和一个bgworker:sysloglical supervisor外,其他的后台进程完全是一模一样的,连名字都没变。
在更高一点的版本中,对比就会发现,几乎完全一致。这里也不难理解为什么使用navicat中postgreSQL的连接方式能够管理人大金仓数据库了。
2.2 JDBC
postgresql 9.6
kingbase 8
driver_class
org.postgresql.Driver
com.kingbase8.Driver
url
jdbc:postgresql://127.0.0.1:5432/postgres
jdbc:kingbase8://127.0.0.1:54321/kingbase
jdbc 的 jar
postgresql.jdbc-9.0.jar
org.postgresql
postgresql.jdbc
9.0
kingbase8-8.2.0.jar
com.kingbase8
kingbase8-jdbc
8.2.0
hibernate 的jar
hibernate-5.0.12.jar
org.hibernate
hibernate
5.0.12
hibernate-3.6.0-dialect-1.0.jar
com.kingbase
hibernate-3.6.0-dialect
1.0
hibernate方言
org.hibernate.dialect.PostgreSQL9Dialect
org.hibernate.dialect.Kingbase8Dialect
引用资料:PostgreSQL 与 Kingbase 的差异对比 - 草色青青送马蹄 - 博客园 (cnblogs.com)
这里127.0.0.1 表示本地的ip地址。
5432 是postgresql的默认端口;54321则是人大金仓的的默认端口。
postgres 是postgresql默认的数据库名,kingbase是Kingbase默认的数据库名。
从这一部分来说,发现的是url以及等等上面有明显不同,但是在开发的过程中,将驱动改为PostgreSQL依旧能够驱动,很是耐人寻味,我们接着往下看。
2.3 数据目录结构和组成基本一致。
命令程序
postgresql 9.6
kingbase 8
pgbench
kbbench
postgres
kingbase
psql
ksql
pg_archivecleanup
sys_archivecleanup
pg_basebackup
sys_basebackup
pg_bulkload
sys_bulkload
pg_config
sys_config
pg_controldata
sys_controldata
pg_ctl
sys_ctl
pg_dump
sys_dump
pg_dumpall
sys_dumpall
pg_hm
sys_hm
pg_isready
sys_isready
pglogical_create_subscriber
syslogical_create_subscriber
pg_receivexlog
sys_receivexlog
pg_recvlogical
sys_recvlogical
pg_resetxlog
sys_resetxlog
pg_restore
sys_restore
pg_rewind
sys_rewind
pg_rman
sys_rman
pg_test_fsync
sys_test_fsync
pg_test_timing
sys_test_timing
pg_upgrade
sys_upgrade
pg_xlogdump
sys_xlogdump
系统表和视图
postgresql 9.6
kingbase 8
pg_aggregate
sys_aggregate
pg_am
sys_am
pg_amop
sys_amop
pg_amproc
sys_amproc
pg_attrdef
sys_attrdef
pg_attribute
sys_attribute
pg_authid
sys_authid
pg_auth_members
sys_auth_members
pg_cast
sys_cast
pg_class
sys_class
pg_collation
sys_collation
pg_constraint
sys_constraint
pg_conversion
sys_conversion
pg_database
sys_database
pg_db_role_setting
sys_db_role_setting
pg_default_acl
sys_default_acl
pg_depend
sys_depend
pg_description
sys_description
pg_enum
sys_enum
pg_event_trigger
sys_event_trigger
pg_extension
sys_extension
pg_foreign_data_wrapper
sys_foreign_data_wrapper
pg_foreign_server
sys_foreign_server
pg_foreign_table
sys_foreign_table
pg_index
sys_index
pg_inherits
sys_inherits
pg_init_privs
sys_init_privs
pg_language
sys_language
pg_largeobject
sys_largeobject
pg_largeobject_metadata
sys_largeobject_metadata
pg_namespace
sys_namespace
pg_opclass
sys_opclass
pg_operator
sys_operator
pg_opfamily
sys_opfamily
pg_partitioned_table
sys_partitioned_table
pg_pltemplate
sys_pltemplate
pg_policy
sys_policy
pg_proc
sys_proc
pg_publication
sys_publication
pg_publication_rel
sys_publication_rel
pg_range
sys_range
pg_replication_origin
sys_replication_origin
pg_rewrite
sys_rewrite
pg_seclabel
sys_seclabel
pg_sequence
sys_sequence
pg_shdepend
sys_shdepend
pg_shdescription
sys_shdescription
pg_shseclabel
sys_shseclabel
pg_statistic
sys_statistic
pg_statistic_ext
sys_statistic_ext
pg_subscription
sys_subscription
pg_subscription_rel
sys_subscription_rel
pg_tablespace
sys_tablespace
pg_transform
sys_transform
pg_trigger
sys_trigger
pg_ts_config
sys_ts_config
pg_ts_config_map
sys_ts_config_map
pg_ts_dict
sys_ts_dict
pg_ts_parser
sys_ts_parser
pg_ts_template
sys_ts_template
pg_type
sys_type
pg_user_mapping
sys_user_mapping
System Views
sysstem Views
pg_available_extensions
sys_available_extensions
pg_available_extension_versions
sys_available_extension_versions
pg_config
sys_config
pg_cursors
sys_cursors
pg_file_settings
sys_file_settings
pg_group
sys_group
pg_hba_file_rules
sys_hba_file_rules
pg_indexes
sys_indexes
pg_locks
sys_locks
pg_matviews
sys_matviews
pg_policies
sys_policies
pg_prepared_statements
sys_prepared_statements
pg_prepared_xacts
sys_prepared_xacts
pg_publication_tables
sys_publication_tables
pg_replication_origin_status
sys_replication_origin_status
pg_replication_slots
sys_replication_slots
pg_roles
sys_roles
pg_rules
sys_rules
pg_seclabels
sys_seclabels
pg_sequences
sys_sequences
pg_settings
sys_settings
pg_shadow
sys_shadow
pg_stats
sys_stats
pg_tables
sys_tables
pg_timezone_abbrevs
sys_timezone_abbrevs
pg_timezone_names
sys_timezone_names
pg_user
sys_user
pg_user_mappings
sys_user_mappings
pg_views
sys_views
这两张表都是能找到的,具体来源我也不太确定,kingbase只是将postgresql 的表的前缀从 pg 改成了 sys…数据目录结构和组成基本一致。
2.4 集群方面
图中各组件的介绍和作用:
- postgresql 官方的数据库系统, 内置了副本机制, 复制模式支持全同步、半同步、全异步模式。同时还支持级联复制.
- citus 它是postgresql的一个扩展, 为 postgresql 提供了分布式能力, 它和Mysql生态中的Mycat的作用类似.
- 它不入侵 Postgresql 代码, 而是依托于 Postgresql 而不是改造 Postgresql, 因此可以使用postgresql最新版本的功能、工具和生态系统。
- 它将 Postgresql 从单个节点扩展到大型分布式数据库集群, 可以随意水平扩展以支持更大的数据量、更大的写入和查询性能。
- citus将节点分为协调器节点和工作节点, 协调器节点除了集群元数据外不存储任何数据分片。应用程序将查询发送到协调器节点,协调器将其发送给相关工作节点并行执行, 最后协调器汇集结果后返回给应用程序。工作节点接收协调器发送过来的指令,执行命令,存储分片数据,并将执行结果返回给协调器等, 客户端只需连接到协调器即可, 工作节点对于客户端而言是透明的.
- 但它不具备高可用和自动故障切换的能力, 高可用完全依赖postgresql自身提供功能.
- patroni 它为 postgresql 提供了自动化配置和自动故障转移能力, patroni内置对citus的集成. Patroni 接管了 Postgresql 的配置和启停管理, 同时自动化执行数据同步. 它依赖DCS(分布式配置存储)系统来实现配置共享和自动故障切换. 它利用DCS的分布式锁实现只有一个Leader. 主备及数据同步则调用Postgresql内置的功能实现(流复制).
- etcd-server 它作为 Patroni 的 DCS(分布式配置存储)系统, patroni也支持的其它的DCS: consul,zookeeper,kubernetes等.
- vip-manager 它为citus的协调器组提供了 VIP 漂移功能, 它根据 DCS 中的 leader 的键来决定本机是否应该获取 VIP, 因此能很好的配合 patroni, 虽然keepalived也提供类似的功能, 但keepalived无法根据服务状态漂移VIP, 只能根据机器决定是否漂移VIP, 这可能会导致VIP和Leader不一致的问题. 另外, patroni可以手动切换主备. keepalived无法支持, 当然还有其它一些问题不展开了.
- 该部分引用:PostgreSQL 分布式高可用集群方案 - 知乎 (zhihu.com)
kingbase集群:
KingbaseES R6 集群修改物理IP和VIP案例-CSDN博客
这里直接引用一篇文章,postgresql高可用的解决方案,然后看看kes86的集群管理,总有对的上号的,比如repmgr。
三、总结
人大金仓与PostgreSQL集群之间的差别主要体现在以下几个方面:
首先,人大金仓的核心产品金仓交易型数据库KingbaseES具备高兼容、高可靠、高性能、高扩展、高安全、易使用和易管理的特点。它是唯一入选国家自主创新产品目录的数据库产品,并在国家级、省部级实际项目中得到广泛应用。特别地,KingbaseES提供了容错功能体系,通过数据备份、恢复、同步复制、多数据副本等高可用技术,确保数据库能够7×24小时不间断地提供服务。此外,它还提供了全新设计的集成开发环境(IDE)和集成管理平台,以及基于并行计算、索引覆盖等技术在内的多种性能优化手段。
而PostgreSQL作为最先进的开源数据库,自诞生之初就带有许多高级特性,如丰富的函数和高级扩展包等。PostgreSQL的集群模式是将多个单机数据库以集群化的方式对外提供服务,主备之间保持数据同步。其高级特性包括主备切换、故障自动切换、负载均衡、备份恢复、慢日志、审计日志等,这些高级特性通常需要结合插件或第三方中间件如pgbouncer、pgpool来实现。
其次,从产品架构上看,Kingbase 8是基于PostgreSQL 9.6的,尽管两者有一些相似之处,但在一些关键细节上存在差异。例如,在JDBC连接方面,PostgreSQL的默认端口是5432,而人大金仓的默认端口是54321。在命令程序方面,Kingbase只是将PostgreSQL的表的前缀从pg改成了sys或者kb。
最后,从市场定位和应用场景来看,国产数据库如人大金仓的产品目前处在起步阶段,尽管有一定的市场规模,但在整个大的市场份额和市场定位中,其影响力相对较弱,还没有撼动国外产品的垄断地位。而PostgreSQL作为开源数据库,已经在全球范围内得到了广泛的应用和认可。只能说完美兼容pg…
相关文章:
人大金仓国产数据库与PostgreSQL
一、简介 在前面项目中,我们使用若依前后端分离整合人大金仓,在后续开发过程中,我们经常因为各种”不适配“问题,但可以感觉得到大部分问题,将人大金仓视为postgreSQL就能去解决大部分问题。据了解,Kingba…...
Python的imutils库详细介绍
imutils 是一个专为简化OpenCV(计算机视觉库)常见操作而设计的Python工具库,提供了一系列便捷函数,使图像和视频处理更加高效和简洁。以下是对其功能、安装及用法的详细介绍: 1. 安装方法 通过pip安装: p…...
【ISO 14229-1:2023 UDS诊断全量测试用例清单系列:第三节】
ISO 14229-1:2023 UDS诊断服务测试用例全解析(安全访问0x27服务) 作者:车端域控测试工程师 更新日期:2025-02-12 关键词:UDS安全访问、0x27服务、ISO 14229-1:2023、ECU安全验证 一、服务概述 安全访问服务࿰…...
DeepSeek与医院电子病历的深度融合路径:本地化和上云差异化分析
一、引言 1.1 研究背景与意义 在医疗信息化快速发展的当下,电子病历系统已成为医院信息管理的核心构成。电子病历(EMR)系统,是指医务人员在医疗活动过程中,使用医疗机构信息系统生成的文字、符号、图标、图形、数据、影像等数字化信息,并能实现存储、管理、传输和重现的…...
⚡️《静电刺客的猎杀手册:芯片世界里的“千伏惊魂“》⚡️
前言: 在这个电子产品无孔不入的时代,我们每天都在与一群隐形刺客打交道——它们身怀数千伏特的高压绝技,能在0.1秒内让价值百万的芯片灰飞烟灭。这就是静电放电(ESD),电子工业界最令人闻风丧胆的"沉默…...
GPU 英伟达GPU架构回顾
1999 年,英伟达发明了 GPU(graphics processing unit),本节将介绍英伟达 GPU 从 Fermi 到 Blackwell 共 9 代架构,时间跨度从 2010 年至 2024 年,具体包括费米(Feimi)、开普勒&#…...
Git 分布式版本控制
Git 是分布式版本控制 文章目录 前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据 总结 前言 git基本流程 本地git安装并将bin目录配置到环境变量path中,右键git bash后配置本地用户名与邮箱 git congig --global user.name "" || …...
【网络】协议与网络版计算器
协议与网络版计算器 文章目录 1.协议的概念 1.1序列化与反序列化 2.网络版计算器 2.1封装套接字2.2协议定制 2.2.1Jsoncpp2.2.2报文处理 2.3会话层:TcpServer2.4应用层:Calculate2.5表示层:Service2.6应用层、表示层和会话层->应用层 …...
AI语言模型的技术之争:DeepSeek与ChatGPT的架构与训练揭秘
云边有个稻草人-CSDN博客 目录 第一章:DeepSeek与ChatGPT的基础概述 1.1 DeepSeek简介 1.2 ChatGPT简介 第二章:模型架构对比 2.1 Transformer架构:核心相似性 2.2 模型规模与参数 第三章:训练方法与技术 3.1 预训练与微调…...
【Python爬虫(5)】HTTP协议:Python爬虫的基石
【Python爬虫】专栏简介:本专栏是 Python 爬虫领域的集大成之作,共 100 章节。从 Python 基础语法、爬虫入门知识讲起,深入探讨反爬虫、多线程、分布式等进阶技术。以大量实例为支撑,覆盖网页、图片、音频等各类数据爬取ÿ…...
机器学习数学基础:24.随机事件与概率
一、教程目标 本教程致力于帮助零基础或基础薄弱的学习者,全面掌握概率论与数理统计的基础公式,透彻理解核心概念,熟练学会应用解题技巧,最终能够轻松应对期末或考研考试。 二、适用人群 特别适合那些对概率论与数理统计知识了…...
Mongodb数据管理
Mongodb数据管理 1.登录数据库,查看默认的库 [rootdb51~]# mongo> show databases; admin 0.000GB config 0.000GB local 0.000GB> use admin switched to db admin > show tables system.version > admin库:admin 是 MongoDB 的管理…...
vue3响应式丢失解决办法(三)
vue3的响应式的理解,与普通对象的区别(一) vue3 分析总结响应式丢失问题原因(二) 经过前面2篇文章,知道了响应式为什么丢失了,但是还是碰到了丢失情况,并且通过之前的内容还不能解…...
Django中数据库迁移命令
在 Django 中,数据库迁移是确保数据库结构与 Django 模型定义保持一致的重要过程。以下是 Django 中常用的数据库迁移命令: 1. python manage.py makemigrations 功能:此命令用于根据 Django 项目的模型文件(models.pyÿ…...
LLM之循环神经网络(RNN)
在人工智能的领域中,神经网络是推动技术发展的核心力量。今天,让我们深入探讨循环神经网络(RNN) 一、神经网络基础 (1)什么是神经网络 神经网络,又称人工神经网络,其设计灵感源于人…...
TDengine 客户端连接工具 taos-Cli
简介工具获取运行命令行参数 基础参数高级参数 数据导出/导入 数据导出数据导入 执行 SQL 脚本使用小技巧 TAB 键自动补全设置字符列显示宽度其它 错误代码表 简介 TDengine 命令行工具(以下简称 TDengine CLI)是用户操作 TDengine 实例并与之交互最简…...
Express 路由路径正则详解
在 Express 中,使用正则表达式可以定义更加灵活和复杂的路由。 1. 基本语法 在 Express 中,路由路径可以是一个字符串、字符串模式或者正则表达式。当使用正则表达式时,将其作为路由路径传入 app.METHOD() 方法(METHOD 可以是 g…...
快速设置 Docker 网络代理配置
Docker Client - 代理访问远程的 Docker Daemon 在 Client 端设置代理其实就是设置 Linux 系统的代理,从而让系统的命令行可以通过代理连接到外部的网络。一般只需要配置 HTTP_PROXY 与 HTTPS_PROXY 这两个即可。 临时生效: 在命令行中执行下面的命令&…...
JVM ②-双亲委派模型 || 垃圾回收GC
这里是Themberfue 在上节课对内存区域划分以及类加载的过程有了简单的了解后,我们再了解其他两个较为重要的机制,这些都是面试中常考的知识点,有必要的话建议背出来,当然不是死记硬背,而是要有理解的背~~~如果对 JVM …...
内容中台驱动企业数字化内容管理高效协同架构
内容概要 在数字化转型加速的背景下,企业对内容管理的需求从单一存储向全链路协同演进。内容中台作为核心支撑架构,通过统一的内容资源池与智能化管理工具,重塑了内容生产、存储、分发及迭代的流程。其核心价值在于打破部门壁垒,…...
人工智障的软件开发-自动流水线CI/CD篇-docker+jenkins部署之道
指令接收:「需要自动构建系统」 系统检测:目标开发一个软件已完成代码仓库-轻盈的gitea,开始添加自动流水线 启动应急冷却协议:准备承受Java系应用的资源冲击 核心组件锁定:构建老将军Jenkins(虽然年迈但依…...
数字人技术之LatentSync Win11本地部署
#LatentSync技术原理 字节跳动开源的基于音频条件潜在扩散模型的端到端唇同步框架,基于潜在扩散模型,以音频条件潜在扩散模型为基础,利用 Stable Diffusion 强大能力,直接建模复杂的音频与视觉之间的关系,实现高质量的唇形同步. 从而制作虚拟…...
Llama3.0论文学习笔记: The Llama 3 Herd of Models
1. 写在前面 今天分享Llama3.0的论文,2024.7月来自Meta的Llama团队,2025年1月DeepSeek R1出现之后,其风头显然已经盖住了Llama3,这时候整理Llama3感觉有点赶不上潮流了,但是我还是想整理下Llama3.0,原因是…...
C#学习之数据转换
目录 一、创作说明 二、数据类型之间的转换 1.数据类型之间的转换表格 2.代码示例 三、进制之间的转换 1.进制之间的转换表格 2.代码示例 四、ASCII 编码和字符之间的转换 1.ASCII 编码和字符之间的转换表格 2.代码示例 五、总结 一、创作说明 C#大多数时候都是和各…...
POI 和 EasyExcel
前言 将表格信息导出为Excel表格(导出数)将Excel表格信息录入到数据库(导入数据) 操作Excel目前比较流行的就是 Apache POI 和阿里巴巴的 EasyExcel Apache POI Apache POI 官网:https://poi.apache.org/ HSSF&am…...
分布式光纤传感:为生活编织“感知密网”
分布式光纤测温技术虽以工业场景为核心,但其衍生的安全效益已逐步渗透至日常生活。 分布式光纤测温技术(DTS)作为一种先进的线型温度监测手段,近年来在多个领域展现了其独特的优势。虽然其核心应用场景主要集中在工业、能源和基础…...
Web后端 - Maven管理工具
一 Maven简单介绍 Maven是apache旗下的一个开源项目,是一款用于管理和构建java项目的工具。 Maven的作用 二 Maven 安装配置 依赖配置 依赖传递 依赖范围 生命周期 注意事项:在同一套生命周期中,当运行后面的阶段时,前面的阶段都…...
聊一聊vue如何实现角色权限的控制的
大家好,我是G探险者。 关于角色与权限控制,通常是分为两大类:一种是菜单权限;一种是操作权限。 菜单权限是指,每个角色对应着可以看到哪些菜单,至于每个菜单里面的每个按钮,比如增删改查等等这类…...
Java中使用EasyExcel
Java中使用EasyExcel 文章目录 Java中使用EasyExcel一:EasyExcel介绍1.1、核心函数导入数据导出数据 1.2、项目实际应用导入数据导出数据 1.3、相关注解ExcelProperty作用示例 二:EasyExcel使用2.1、导入功能2.2、导出功能 三:EasyExcel完整代…...
LLM:GPT 系列
阅读原文: LLM:Qwen 系列 GPT(Generative Pre-trained Transformer)是生成式预训练语言模型,基于 Transformer 架构,专注于通过自回归的方式生成自然语言文本,即给定一个输入序列 x { x 1 , …...
【已解决】TypeError: AsyncConnectionPool.__init__(), new install bug, httpx==0.24.1
1,参考社区链接,首先降低gradio版本,降低到4以下,但是也不能降太低,也不能太高,要适中,推荐版本3.39.0 pip install gradio3.39.0 2,下载正确的httpx版本 参考社区链接࿰…...
Linux:深入了解进程信号(上)
目录 1. 什么是信号 1.1 引入 1.2 概念 1.3 特性 1.4 信号的三个方面 2. 信号的产生 2.1 键盘按键产生 2.2 signal捕捉信号函数 2.3 发送信号原理 2.4 硬件中断 2.5 指令和函数接口 2.5.1 kill指令 2.5.2 kill函数 2.5.3 raise与abort函数 2.6 软件条件 2.7 异…...
Java小白入门基础知识(二)
1.标识符 概念: 在程序中给类,方法,变量取的名称叫做标识符 规范: 字母,数字,下划线,$符号 注意: 不能以数字开头,也不能是关键字,严格区分大小写(一般定义常量就是大写) 软性建议: 1)类名:每个单词首字母大写(大驼峰) 2)方法名:首字母小写,后面每个单词首字母大写(小驼…...
Servlet中,WebServlet注解的使用方法
案例:声明abc接口,在接口内部获取配置信息 WebServlet(urlPatterns"/abc",loadOnStartup6,initParams {WebInitParam(name"username", value"mmm", description"this is username"),WebInitParam(name"a…...
重新出发的LLM本地部署——DeepSeek加持下的Ollama+OpenWebUI快速部署
DeepSeek 这真的是太惊艳了,发布出来的模型这么能打,在线的版本使用起来也是丝滑连招,感觉效果比起之前一直用智谱 chatglm4 更好用,想着本地化部署一下。 本来以为,会和之前在开发测试 transformers 的模型和代码一样…...
【Python爬虫(1)】专栏开篇:夯实Python基础
【Python爬虫】专栏简介:本专栏是 Python 爬虫领域的集大成之作,共 100 章节。从 Python 基础语法、爬虫入门知识讲起,深入探讨反爬虫、多线程、分布式等进阶技术。以大量实例为支撑,覆盖网页、图片、音频等各类数据爬取ÿ…...
低代码组态软件-BY组态
引言 在工业4.0与智能制造浪潮的推动下,组态软件作为工业自动化的核心工具,正逐步从传统单机模式向Web化、智能化方向演进。BY组态作为一款基于Web的嵌入式组态插件工具,凭借其低代码、高灵活性和跨平台特性,成为工业物联网&#…...
【计算机网络】数据链路层数据帧(Frame)格式
在计算机网络中,数据帧(Frame) 是数据链路层的协议数据单元(PDU),用于在物理介质上传输数据。数据帧的格式取决于具体的链路层协议(如以太网、PPP、HDLC 等)。以下是常见数据帧格式的…...
[特殊字符] C语言中打开和关闭文件的两种方法:标准库 VS 系统调用
C语言中对文件打开关闭操作 前言方法一:标准输入输出库(stdio.h)—— 高级文件操作的利器打开文件💡 关闭文件:fclose示例代码📝 个人见解 方法一:系统调用(fcntl.h 和 unistd.h&…...
如何将ubuntu下的一个目录,保存目录结构为一个git仓库并上传
目录 1. 初始化本地Git仓库 2. 添加文件到仓库 3. 提交更改 4. 创建并关联远程仓库 5. 推送代码到远程仓库 完整流程总结 要将Ubuntu下的一个目录(例如rpc)保存为一个Git仓库并上传到远程仓库,您可以遵循以下步骤: 1. 初始…...
应用分层、三层架构和MVC架构
前言 在前面中,我们已经学习了Spring MVC 的一些基础操作,那么后面就用一些简单的案例来巩固一下。 在开始学习做案例之前,我们先来了解一下在软件开发中常见的设计模式和架构。 应用分层 含义 应用分层是一种软件开发设计思想࿰…...
前端实现防抖功能的详细解读
在前端开发中,防抖(Debounce) 是一种优化技术,用于限制某个函数在短时间内被频繁调用的次数。它的核心思想是:在一定时间内,无论触发多少次事件,只执行最后一次操作。防抖通常用于处理用户输入、…...
VUE3环境搭建
最近准备用Vue编写一点前端页面,我在前端一直是个小白,之前用的Vue2写了几个页面,现在已经是VUE3了,重新安装下环境开始。 1.npm安装 Vue需要用npm安装,npm是nodejs的package manager,这里我们安装下node…...
1-16 tortoiseGit分支与Git操作
1-1 创建分支 什么时候需要开分支? - 隔离线上版本和开发版本 - 大功能开发,不想影响到其他人,自己独立开个分支去开发 SVN经典目录结构: - trunk-------------------------开发中的文件 - bran…...
【VB语言】EXCEL中VB宏的应用
【VB语言】EXCEL中VB宏的应用 文章目录 [TOC](文章目录) 前言一、EXCEL-VB1.实验过程2.代码 二、EXCEL-VB 生成.c.h文件1.实验过程2.代码 四、参考资料总结 前言 1.WPS-VB扩展包 提示:以下是本篇文章正文内容,下面案例可供参考 一、EXCEL-VB 1.实验过…...
前端优化可以从哪些方面下手及优化方案
前端优化是提升网页性能、提升用户体验和降低服务器负担的重要手段。可以从多个角度入手,以下是一些常见的优化方向和方案: 1. 性能优化 减少请求数量:尽量减少页面加载时发起的 HTTP 请求,例如使用合并文件(CSS 和 …...
类和对象(5)——抽象类和接口
目录 1. 抽象类 1.1 抽象类的概念 1.2 抽象类语法:abstract关键字 1.3 抽象类的特性 1.4 抽象类的作用 2. 接口 2.1 接口的概念 2.2 接口语法:interface关键字 2.3 接口的实现:implements关键字 2.4 接口的特性 2.5 实现多个接口 …...
海康摄像头IPV6模式,手动,自动,路由公告
海康摄像头DS-2DC7220IW-A 网络设置中的IPv6配置选项。IPv6是互联网协议(IP)的第六版,用于替代IPv4,提供更多的IP地址和改进的网络功能。图片中的选项允许用户选择如何配置设备的IPv6网络连接: 手动:用户可…...
LabVIEW与USB设备开发
开发一台USB设备并使用LabVIEW进行上位机开发,涉及底层驱动的编写、USB通信协议的实现以及LabVIEW与设备的接口设计。本文将详细介绍如何开发USB设备驱动、实现LabVIEW与USB设备的通信以及优化数据传输,帮助用户顺利完成项目开发。下面是一个详细的说明&…...
BY组态:工业自动化的未来,触手可及
在工业4.0的浪潮下,智能化、数字化已成为制造业发展的核心驱动力。作为工业自动化领域的重要工具,组态软件在实现设备监控、数据采集、流程控制等方面发挥着不可替代的作用。然而,传统的组态软件往往存在开发周期长、学习成本高、灵活性不足等…...