首页/新闻资讯/正文详情

openGauss数据库实验全攻略:从环境搭建到课设答辩

发布时间:2026/9/25 3:57:34 来源:云帆数科 栏目:资讯中心
openGauss数据库实验全攻略:从环境搭建到课设答辩
简介面向广东工业大学数据库课程的一套实验与课设资料以openGauss实验平台为主线并配有一个JDBC课设项目适合正在做实验报告或需要参考数据库课设代码的学生。实验部分覆盖基本表建立、查询、索引与视图、存储过程、触发器五个环节每项都给出了可运行的代码和相关说明能帮助对照openGauss的语法特点完成实验。课设部分是一个Java项目包含Java源码、class编译产物、mysql-connector-java驱动和运行截图演示了通过JDBC连接数据库并执行操作的完整流程日志文件也便于排查问题。压缩包共64个文件主要类型为Java源码和class文件另外有xml配置、图片、jar驱动、log日志等整体大小6.93MB目录按源码、编译、配置和图片分开查找方便。已有2930人学习下载对同校学生来说既能借鉴实验思路也能直接利用课设代码是完成数据库课程任务的高效参考。1. openGauss成为广工数据库实验平台不只是换一个安装包那么简单数据库实验在广工的课程体系里是一项需要写报告、答辩并留档的硬任务近年以openGauss作为实验平台之后学生首先要面对的是安装不再靠“下一步下一步”而是一整套用户、目录、权限、初始化参数的操作链存储过程、触发器、事务隔离这些原本只出现在试卷里的考点也变成了必须在命令行里亲手跑出来的结果。这篇笔记不按实验题号逐条讲只围绕“2022年广工数据库实验openGauss课设”这条主线把从零搭建实验环境、完成常见实验、写完课程设计并顺利答辩的路径走一遍。适合正在被实验报告和课设两头夹击的同学也适合带实验的助教参考。2. 本地搭建openGauss实验环境从依赖、用户、初始化到gsql能跑通2.1 为什么不要用root装实验前先建一个专属用户openGauss的安装脚本一直坚持不能用root直接跑。这不是玄学而是数据库实例一旦以root启动数据目录和日志文件的属主就难以约束后续任何一处权限放得过宽都会成为隐患。实验机通常是自己一个人用很多同学图省事直接在主目录解压结果预安装脚本第一步就退出。常见做法是先新建一个专用系统用户例如omm同时建好同名组dbgrp# 建组和用户后面所有安装操作都用 omm 执行 groupadd dbgrp useradd -m -g dbgrp omm echo Lab_2022_pass | passwd --stdin omm参数说明-m表示创建用户主目录-g指定初始用户组。这里把窗口期需要的实验密码写成了“Lab_2022_pass”你可以换成自己的但建议只用字母数字加下划线避免特殊符号在后续命令行里总是要转义。第二步是把openGauss的环境变量写进omm的bash配置echo export GAUSSHOME/opt/software/openGauss/app /home/omm/.bashrc echo export PATH\$GAUSSHOME/bin:\$PATH /home/omm/.bashrc echo export LD_LIBRARY_PATH\$GAUSSHOME/lib:\$LD_LIBRARY_PATH /home/omm/.bashrc source /home/omm/.bashrc这一段的意义在于不配置PATHgsql、gs_ctl这些命令根本找不到安装完以后连“gsql不是内部或外部命令”这种低级报错都排查半天。实验环境刚搭时我一般会把这三行当成固定动作先配好再继续。2.2 下载解压与配置文件cluster_config.xml里最容易错的两个参数到openGauss官方网站按操作系统和架构下载对应版本的企业版或轻量版安装包实验电脑建议用CentOS 7.6及以上或openEuler虚拟机资源不低于2核4GB内存不够的话gs_install阶段容易被OOM杀掉。下载后解压# 切换到 omm 用户目录统一放在 /opt/software 下 su - omm mkdir -p /opt/software/openGauss cd /opt/software/openGauss tar -zxvf /your_download_path/openGauss-x.x.x-CentOS-64bit.tar.gz解压后根目录下会有gs_preinstall、gs_install两个脚本和一个cluster_config.xml模板。单机实验只需要把cluster_config.xml里的节点名改对。最容易翻车的两个参数是nodeNames和DEVICE里的name这两个值必须和系统的hostname一致而不是随便取一个“db1”。检查hostname用命令hostname不要让它返回localhost.localdomain。配置文件修改后大致是这样?xml version1.0 encodingUTF-8? ROOT CLUSTER PARAM nameclusterName valuedbCluster/ PARAM namenodeNames valueopengauss01/ PARAM namegaussdbAppHome value/opt/software/openGauss/app/ PARAM namegaussdbLogHome value/opt/software/openGauss/log/ PARAM nametmpMoc value/tmp/ PARAM namegaussdbToolPath value/opt/software/openGauss/tool/ PARAM namecorePath value/opt/software/openGauss/corefile/ /CLUSTER DEVICELIST DEVICE sn1000001 PARAM namename valueopengauss01/ PARAM nameazName valueAZ1/ PARAM nameazPriority value1/ PARAM namebackIp1 value192.168.1.11/ /DEVICE /DEVICELIST /ROOT参数说明nodeNames与DEVICE的name必须等于hostname输出backIp1填本机内网或虚拟机NAT的IP。如果虚拟机用NAT模式IP没固定建议先在虚拟机设置里改成静态IP或DHCP保留否则重启后IP漂移找半天原因。2.3 预安装与初始化一次跑完最少踩两个坑预安装脚本的作用是检查依赖、初始化运行环境、做目录规划。常见做法是全自动模式cd /opt/software/openGauss ./gs_preinstall -U omm -G dbgrp -X /opt/software/openGauss/cluster_config.xml --non-interactive参数说明-U指定运行用户-G指定用户组-X指定配置文件--non-interactive跳过交互问答。预安装阶段如果报缺libaio-devel、flex、bison先补齐再重跑yum -y install libaio-devel flex bison python3。缺依赖硬跑后面gs_install会以“初始化数据库失败”这种模糊话术崩掉特别浪费时间。预安装成功后执行初始化./gs_install -X /opt/software/openGauss/cluster_config.xml这一步会初始化数据目录、生成postgresql.conf和pg_hba.conf、设置初始用户omm的密码。初始化完成后启动单机实例并检查状态gs_ctl start -Z single_node -D /gaussdb/data gs_ctl status -Z single_node -D /gaussdb/data-Z single_node表示部署形态为单节点-D指向gs_install输出中显示的数据目录通常为/gaussdb/data。看到“online”状态就说明实例起来了。然后第一件事是用gsql登录默认数据库postgresgsql -d postgres -U omm -h 127.0.0.1 -p 5432 -W参数说明-d指定数据库名-U指定用户名-h指定监听地址-p指定端口号openGauss默认端口是5432-W表示交互输入密码。连不上时先看gs_ctl status再看5432端口是否有监听ss -lntp | grep 5432。这一步能过滤出八成安装问题。2.4 建实验库和实验账号分清系统库和你自己要用的库默认只有一个postgres库所有实验都堆在里面后面做权限实验时会互相干扰。我一般会在第一周实验就固定好一套命名CREATE DATABASE labdb ENCODING UTF8 TEMPLATE template0; CREATE USER lab_user WITH PASSWORD Lab_123456; GRANT ALL PRIVILEGES ON DATABASE labdb TO lab_user;参数说明ENCODING显式写成UTF8并且用TEMPLATE template0是因为template1的默认编码不一定是UTF8直接建库容易得到中文乱码。GRANT ALL PRIVILEGES只授权到数据库级别模式级别的授权后面做权限实验时再单独练。至此实验环境已经能跑起来下一步进入实验本身的拆解。3. 数据库实验的四个必考层次建表、增删改查、视图与事务的落地写法3.1 建表与约束主键、外键、CHECK约束各自的实验目的广工数据库实验的第一个层次围绕表结构设计。不是拿一个CREATE TABLE模板复制就完事重点是每种约束要解释清楚为什么存在。历年实验任务里出现频率最高的就是学生、课程、成绩三张表一个能直接跑的表结构CREATE TABLE students ( sid CHAR(8) PRIMARY KEY, name VARCHAR(32) NOT NULL, dept VARCHAR(64) DEFAULT 计算机学院, grade INT CHECK (grade BETWEEN 2000 AND 2050) ); CREATE TABLE courses ( cid CHAR(8) PRIMARY KEY, cname VARCHAR(64) NOT NULL, credit NUMERIC(2,1) CHECK (credit 0 AND credit 10) ); CREATE TABLE sc ( sid CHAR(8), cid CHAR(8), score NUMERIC(5,1) CHECK (score 0 AND score 100), PRIMARY KEY (sid, cid), FOREIGN KEY (sid) REFERENCES students(sid) ON DELETE CASCADE, FOREIGN KEY (cid) REFERENCES courses(cid) ON DELETE CASCADE );逻辑说明PRIMARY KEY既是实体唯一标识也是查询的入口openGauss建主键时会自动建唯一索引CHECK约束把非法数据挡在数据库层之外。外键的ON DELETE CASCADE是高频考点——如果不指定ON DELETE外键默认动作会阻止删除被引用的行实验报告里要把CASCADE和RESTRICT的差别讲清楚。注意主键在单机部署下生成btree索引将来如果接触分布式部署表还要考虑分布列实验阶段不用管。3.2 DML增删改查批量插入、UPDATE子查询和分组统计的写法差异第二个层次是DML。很多课设只做到“单表插入、单表查询”的程度太浅。课堂实验想拿高分至少要写批量插入INSERT INTO courses (cid, cname, credit) VALUES (C001, 数据库原理, 3.0), (C002, 操作系统, 3.5), (C003, 计算机网络, 2.5);批量插入比逐行INSERT的优势不只是语句短多条VALUES在一条语句内是原子性的要么全部插入要么全部回滚这个特性在实验报告里值得写一笔。大规模造数据可以配合generate_series把学生表扩到几百行INSERT INTO students (sid, name, dept, grade) SELECT 2022 || lpad(i::text, 4, 0), 测试学生 || i, 计算机学院, 2022 FROM generate_series(1, 200) i;这里的lpad函数把数字i补成四位再拼上前缀“2022”得到“20220001”这种定长学号避免主键不统一。UPDATE带子查询也是实验爱考的写法比如把所有平均分低于60的学生成绩提到60UPDATE sc SET score 60 WHERE sid IN ( SELECT sid FROM ( SELECT sid, AVG(score) avg_score FROM sc GROUP BY sid HAVING AVG(score) 60 ) t );子查询套在UPDATE的条件里是openGauss和PostgreSQL风格的标准解法。分组统计更是必考尤其注意GROUP BY和HAVING的分工SELECT s.dept, c.cid, COUNT(*) AS cnt, ROUND(AVG(sc.score),2) AS avg_score FROM students s JOIN sc ON s.sid sc.sid JOIN courses c ON sc.cid c.cid WHERE c.credit 2.5 GROUP BY s.dept, c.cid HAVING COUNT(*) 10 ORDER BY avg_score DESC;GROUP BY的列必须和SELECT里的非聚合列严格一致这是数据库原理课扣分最狠的地方HAVING里过滤的是聚合后的结果WHERE过滤的是原始行——这两个区别每学期都有人搞反。3.3 视图与索引这对实验要展示的是“为什么调优不是玄学”第三层次常见任务是创建视图和索引再做执行计划对比。视图侧重点在于看出它不占物理存储CREATE VIEW v_score_overview AS SELECT s.sid, s.name, s.dept, c.cname, sc.score FROM students s LEFT JOIN sc ON s.sid sc.sid LEFT JOIN courses c ON sc.cid c.cid;视图本质是保存一段SQL定义不是复制数据。实验报告里要强调“基表数据变化时视图内容实时跟着变”这是它与物化视图的核心区别。索引部分最好用EXPLAIN ANALYZE验证先看没索引的情况再建索引EXPLAIN ANALYZE SELECT * FROM sc WHERE cid C001; CREATE INDEX idx_sc_cid ON sc(cid); EXPLAIN ANALYZE SELECT * FROM sc WHERE cid C001;第一次执行计划是Seq Scan建索引后变成Index Scan或Bitmap Index Scan。实验报告里把两次执行计划中“actual time”的差距贴出来比空写“索引能加速查询”有说服力得多。还需要说明一个观察结论数据量只有几百行时优化器可能放弃索引走全表扫描数据量几万行时索引优势才明显。3.4 事务与并发两个gsql窗口能说明隔离级别的大部分问题第四层次是事务。实验机开两个终端一个终端begin另一个终端查询最能体现隔离级别-- 终端A BEGIN; UPDATE sc SET score score 1 WHERE sid 20220001; -- 终端B SELECT * FROM sc WHERE sid 20220001;逻辑说明终端A更新但不提交终端B的SELECT会被阻塞住这是行级锁的正常表现不是系统卡死。接着把事务隔离级别设置为可重复读观察快照差异BEGIN TRANSACTION ISOLATION LEVEL REPEATABLE READ; SELECT * FROM sc WHERE sid 20220001;openGauss默认隔离级别是读已提交每条语句取最新快照可重复读下整个事务使用同一快照所以事务开始后其他会话提交的数据看不到。实验报告里把这两个级别在同一个业务场景下的表现对比清楚事务这一章就稳了。注意不要在终端A事务未提交时又在同一窗口里把事务改成其他模式自锁会把自己卡死。4. openGauss存储过程与触发器从MySQL习惯迁移过来的三个关键差别4.1 为什么openGauss的存储过程和MySQL不是一回事很多同学先在MySQL里写了存储过程再来openGauss里交实验最容易踩的坑就是把MySQL的DELIMITER习惯带过来。在MySQL里必须用DELIMITER把分号冲突绕开但openGauss的SQL解析器对CREATE FUNCTION和CREATE PROCEDURE是整体处理的函数体内直接写BEGIN END每条语句以分号结束不会被提前执行。所以在openGauss里写“DELIMITER $$”反而直接报语法错误。第二个关键差别是过程语言。openGauss与PostgreSQL同源过程语言是PL/pgSQL赋值用“:”或SELECT INTO日志输出用RAISE NOTICE异常抛出用RAISE EXCEPTION。第三个差别是返回方式函数必须有RETURNS类型声明存储过程则用IN/OUT参数来交换结果。这些差别整理成一张表实验报告可以直接参考对比点MySQL 存储过程openGauss 存储过程定界符DELIMITER $$不需要直接CREATE赋值方式SET var ...var : ... / SELECT INTO日志输出SELECT textRAISE NOTICE text抛异常SIGNAL SQLSTATERAISE EXCEPTION条件/循环IF...END IF、LOOP...END LOOP关键字基本一致4.2 出题频率最高的函数按系部统计平均分一个能作为实验作业直接提交的函数是输入系部名返回该系学生的选课平均分同时用COALESCE处理没有成绩数据的情况。可执行版本如下CREATE OR REPLACE FUNCTION dept_avg_score(dept_name IN VARCHAR) RETURNS NUMERIC(5,1) LANGUAGE plpgsql AS $$ DECLARE v_avg NUMERIC(5,1); BEGIN SELECT ROUND(AVG(sc.score),1) INTO v_avg FROM sc JOIN students s ON sc.sid s.sid WHERE s.dept dept_name; IF v_avg IS NULL THEN RAISE NOTICE 该系暂无选课成绩; RETURN 0; END IF; RETURN v_avg; END; $$;逻辑说明INTO子句是PL/pgSQL的关键赋值方式把SELECT结果写进变量。如果查询返回多行PL/pgSQL会直接报错因此这里必须先聚合保证只有一行返回。RAISE NOTICE是openGauss的控制台输出手段实验报告里建议把“用SELECT打印日志”的习惯改掉。参数说明dept_name IN VARCHAR定义了输入参数调用时传入系名RETURNS NUMERIC(5,1)声明返回类型RETURN 0把NULL转成0避免前端拿到空值还要判空。调用时直接SELECT dept_avg_score(计算机学院);4.3 触发器BEFORE UPDATE日志表的完整套路触发器实验第一步是建日志表记录成绩表的改动然后写触发器函数和触发器本身CREATE TABLE sc_log ( log_id BIGSERIAL PRIMARY KEY, sid CHAR(8), cid CHAR(8), old_score NUMERIC(5,1), new_score NUMERIC(5,1), op_type VARCHAR(8), op_time TIMESTAMP DEFAULT current_timestamp ); CREATE OR REPLACE FUNCTION trg_fn_sc_update_log() RETURNS TRIGGER LANGUAGE plpgsql AS $$ BEGIN INSERT INTO sc_log(sid, cid, old_score, new_score, op_type) VALUES (NEW.sid, NEW.cid, OLD.score, NEW.score, UPDATE); RETURN NEW; END; $$; CREATE TRIGGER trg_sc_update_log BEFORE UPDATE ON sc FOR EACH ROW EXECUTE FUNCTION trg_fn_sc_update_log();逻辑说明BEFORE UPDATE使触发器在数据修改前执行INSERT操作时只有NEW记录UPDATE操作时NEW和OLD同时存在RETURN NEW表示让原修改继续执行如果把RETURN NEW改成RETURN NULL原UPDATE会被取消。FOR EACH ROW是行级触发器——实验里如果误写成FOR EACH STATEMENT一条UPDATE只触发一次日志表里只会出现一条记录很多人检查日志发现数量不对问题就出在这里。验证触发器是否生效UPDATE sc SET score score 1 WHERE sid 20220001; SELECT * FROM sc_log;注意即使UPDATE把score加0行数据没有实际变化只要行被更新行级触发器也会激活日志表会多一行冗余记录。想避免这个现象可以在函数里加一个IF NEW.score IS DISTINCT FROM OLD.score的判断这属于加分项。老版本里触发器的EXECUTE FUNCTION写法需要改成EXECUTE PROCEDURE按实际安装版本的兼容提示调整即可。5. 实验与课设路上绕不过去openGauss安装与使用中的五类报错排查5.1 预安装脚本在check OS version时退出主机名解析的锅现象执行gs_preinstall时还没进入依赖检查就报“Checking OS version... failed”或直接报权限类错误。原因脚本会解析cluster_config.xml里的nodeNames再用hostname命令得到的机器名去/etc/hosts里做解析。很多实验机的机器名是localhost.localdomain或者hosts里没有把IP和机器名关联在一起解析失败就退出了。解决先把hostname改成一个唯一标识再编辑hosts文件hostnamectl set-hostname opengauss01 vi /etc/hosts在hosts里追加一行把本机IP和主机名对应起来例如“192.168.1.11 opengauss01”。改完重新登录确认hostname已经生效再重跑预安装。这是安装阶段最常见的翻车点先查这一条能救回半小时。5.2 gsql用127.0.0.1连不上pg_hba.conf默认没有放行TCP现象gs_ctl status显示实例已online但gsql -h 127.0.0.1连接时报“FATAL: no pg_hba.conf entry for host 127.0.0.1”。原因openGauss初始化后的pg_hba.conf默认只允许本机Unix socket访问TCP连接需要显式授权。很多同学习惯用localhost表面看都是本机但TCP走的是独立认证条目没有放行就拒绝连接。解决编辑数据目录下的pg_hba.conf加上两行host all all 127.0.0.1/32 sha256 host all all 192.168.1.0/24 sha256保存后用gs_ctl reload让配置生效。注意不要为图方便改成trust认证哪怕是实验环境也别交这种报告数据库安全章节里认证方式对比就彻底没法写了。5.3 gsql里中文变成乱码client_encoding和server不一致现象向表里插入‘计算机学院’查出来变成“¤Æ”或类似的乱码。原因服务端数据库字符集是UTF8客户端工具默认使用操作系统locale比如LANGzh_CN.GB18030两边编码不一致写入和读取都错位。解决在gsql里执行SET client_encoding TO UTF8;或者在启动gsql之前先设置环境变量export PGCLIENTENCODINGUTF8这个坑很容易被误写成“openGauss对中文支持不好”实际是客户端编码没对齐。做实验时把客户端固定成UTF8中文相关的实验就不会再出幺蛾子。5.4 普通用户建表报permission denied for schema public授权只给到数据库不够现象用lab_user连接labdb后执行CREATE TABLE报“permission denied for schema public”。原因在openGauss里public schema的可写权限默认不向普通用户开放。很多实验手册只写了CREATE USER和GRANT ALL PRIVILEGES ON DATABASE但这个授权并不包含schema级的写权限。解决用omm管理员在labdb里执行GRANT CREATE, USAGE ON SCHEMA public TO lab_user;这行授权要和建库时的GRANT区分开一个是数据库级权限一个是模式级权限。实验报告里把这两个层级分别写清楚权限章节的分不会低。如果不想开放public也可以让lab_user建自己的schema再设置search_path但课设时间紧张时别折腾这个。5.5 DROP DATABASE总是失败还有活动连接占着库现象执行DROP DATABASE labdb报“database labdb is being accessed by other users”。原因自己或助教在另一个窗口开着连到labdb的会话openGauss不会在DROP时自动断开所有连接必须手动终止。解决先查占用连接并终止再删库SELECT pid, usename, application_name, state FROM pg_stat_activity WHERE datname labdb; SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname labdb AND pid pg_backend_pid(); DROP DATABASE labdb;注意第二条一定要带pid pg_backend_pid()否则连自己执行命令的会话也kill掉了DROP会跟着断开。这是比较典型但很尴尬的低级错误排查顺序记牢先查连接再终止最后删。6. 课程设计怎么从“能跑”到“能答辩”一个可复用的学生选课项目样板课设题目五花八门但评审最看重的就三件事表结构有没有冗余、事务和存储过程有没有真实场景、性能分析是不是自己跑出来的。我一般建议用“学生选课成绩分析”作为载体体量不大但能把数据库课程的考点全部带出来。选题后按四个步骤搭第一步关系模式落地学生表、课程表、选课表之外加一个院系表消掉students表里的冗余字段所有外键按逻辑加上答辩时被问实体完整性和参照完整性就不慌第二步存储过程用真实业务比如按系部统计平均成绩把第4章的dept_avg_score原样扩展成“补考名单统计”第三步触发器放在成绩表上做成绩修改自动写日志演示时直接UPDATE一行再查sc_log第四步性能验证用数据说话把选课表扩到几万行在有无索引下各跑一次EXPLAIN ANALYZE打印两张执行计划把“actual time”的差值写进PPT。答辩验证建议准备一张自检表维度演示内容必说出口的术语表设计ER图到关系模式转换范式、主外键、引用完整性事务两个gsql窗口同时改数据原子性、读已提交、锁存储过程CALL一次带参数的过程IN参数、RAISE NOTICE触发器UPDATE后查日志表ROW级触发、NEW/OLD性能索引前后EXPLAIN对比Seq Scan、Index Scan、执行计划最后给自己留一句“技术边界”的话单机部署只能演示锁等待和隔离级别观察做不了真正的分布式扩展。这不算扣分项反而能显示你清楚实验平台边界。做了几年实验指导后我把一个习惯带进了所有数据库实践每次在openGauss里操作前先想清楚要不要包事务出问题回滚得比删数据快每次写存储过程都顺手加一条RAISE NOTICE输出排错时少很多黑盒猜测每次建索引都要跑EXPLAIN验证效果再收工。这三个习惯帮我少踩了很多坑希望帮到你。本文还有配套的精品资源点击获取

相关推荐

网上订餐系统毕设实战:Spring Boot+Vue全栈开发与答辩指南
网上订餐系统毕设实战:Spring Boot+Vue全栈开发与答辩指南

做毕设选这个题目,我先说个结论:网上订餐系统这个选题,放在Spring Boot Vue这套组合里,是当前性价比最高的方向之一。原因很简单,它不属于那种冷门小众的偏题,业务流程完整、角色划分清晰、技术栈主流&… · 2026/9/25 3:57:34

高校选课系统开题答辩全攻略:从选题到防坑指南
高校选课系统开题答辩全攻略:从选题到防坑指南

开题答辩这件事,很多同学把它当成“走过场”——PPT念一遍,评委随便问两句,半小时就结束了。但等你真正站在讲台上,面对三位评委老师齐齐看向你的目光,才发现那些“随便问”的问题,每一条都踩在你的项目软肋… · 2026/9/25 3:57:34

Winhance优化设置详解:UAC、电源计划与Windows更新怎么调
Winhance优化设置详解:UAC、电源计划与Windows更新怎么调

Winhance优化设置详解:UAC、电源计划与Windows更新怎么调 【免费下载链接】Winhance-zh_CN A Chinese version of Winhance. C# application designed to optimize and customize your Windows experience. 项目地址: https://gitcode.com/gh_mirrors/wi/Winhance… · 2026/9/25 3:57:28

ODAC1120320Xcopy_32bit:可复位Oracle连接基线环境详解
ODAC1120320Xcopy_32bit:可复位Oracle连接基线环境详解

简介:本资源是面向.NET开发者与Oracle数据库运维人员的32位ODAC远程连接环境配置包,专为解决Windows平台下C#、ASP.NET等应用稳定连接Oracle数据库的部署难题。包内含ODAC 11.2.0.3.20核心组件(OLEDB、Oracle Managed Data Access、ASP.NET适… · 2026/9/25 4:23:47

J-Link隐藏技能:用VCOM虚拟串口一根线搞定调试与日志
J-Link隐藏技能:用VCOM虚拟串口一根线搞定调试与日志

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 4:23:47

videocache4cj LRU缓存清理策略详解:TotalSize与TotalCount怎么选
videocache4cj LRU缓存清理策略详解:TotalSize与TotalCount怎么选

videocache4cj LRU缓存清理策略详解:TotalSize与TotalCount怎么选 【免费下载链接】videocache4cj 一个支持边播放边视频缓存库,输入视频的URL就可方便快捷的实现视频边下边播功能 项目地址: https://gitcode.com/Cangjie-TPC/videocache4cj video… · 2026/9/25 4:23:41

ExternalDNS Node Source 实战:将 Kubernetes 节点 IP 自动同步到 DNS 托管区
ExternalDNS Node Source 实战:将 Kubernetes 节点 IP 自动同步到 DNS 托管区

云原生 【免费下载链接】external-dns Configure external DNS servers dynamically from Kubernetes resources 项目地址: https://gitcode.com/gh_mirrors/ex/external-dns 点击查看 免费下载 本文讲解如何在 ExternalDNS 中启用节点(Node&#xff09… · 2026/9/25 4:23:41

Cobalt Strike 4.5部署配置与红队实战避坑指南
Cobalt Strike 4.5部署配置与红队实战避坑指南

简介:Cobalt Strike 4.5是面向渗透测试、红队评估与安全研究的C2框架,支持HTTP/HTTPS/DNS/SMB等多种协议上线主机,内置提权、凭据导出、端口转发、Socket代理、Office攻击、文件捆绑、钓鱼等功能,并可调用Mimikatz等外部工具完成内… · 2026/9/25 4:23:35

宇树G1机器人SSH远程连接与网络调试实战指南
宇树G1机器人SSH远程连接与网络调试实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 4:23:29

数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)
数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:37

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码