- 博客(204)
- 收藏
- 关注
原创 告别束缚,自由飞翔:copilot-local 让 GitHub Copilot CLI 用上你自己的模型
这篇文章介绍了一个名为copilot-local的开源工具,它能让用户在使用GitHub Copilot CLI时摆脱官方模型的限制。该工具支持接入任意OpenAI兼容的第三方模型,包括国内API端点,解决了网络不稳定、数据安全和成本控制等问题。copilot-local通过环境变量配置实现模型切换,不修改原系统文件,保持轻量简洁。文章详细介绍了其核心功能、安装使用方法和技术原理,特别适合国内开发者、企业团队和对成本敏感的用户。项目采用MIT协议开源,为用户提供了更自由灵活的AI编程助手选择方案。
2026-05-06 21:59:21
139
原创 告别重复输入密码:SSK — 一行命令搞定 SSH 免密登录
SSK是一款开源的SSH密钥自动安装工具,旨在简化SSH免密登录配置流程。它通过一条命令自动完成密钥生成、公钥安装和连接配置,支持Windows、Linux和macOS全平台。核心功能包括智能识别Dropbear服务器、自动管理连接配置、采用Ed25519加密算法等。相比传统手动配置,SSK只需输入一次密码即可实现永久免密登录,大幅提升运维效率。适用于批量部署服务器、日常运维、嵌入式开发等场景。项目已在GitHub开源,支持一键安装使用。
2026-05-06 21:58:52
292
原创 Claude Desktop App 连接本地 LLM 完整配置指南
本文介绍如何配置Claude桌面应用连接本地LLM模型的全套解决方案。该方案采用三层架构:Claude桌面应用通过HTTP连接ccr-compat-proxy代理层,后者补充必要端点并处理请求头;中间层Claude Code Router实现协议转换;底层LM Studio提供本地模型推理服务。文章详细说明了环境准备、ccr路由器的安装配置、代理层的搭建方法,以及各组件的作用原理。配置过程涉及创建启动脚本、设置JSON配置文件、处理模型切换等关键步骤,最终实现在Claude桌面应用中无缝使用本地大语言模型
2026-05-06 21:58:09
510
1
原创 Claude Code + 本地 LLM 的 KV Cache 复用失效问题排查全记录
Claude Code + 本地 LLM KV Cache 复用失效排查总结 问题现象:Claude Code 连接本地 LLM 时,每轮对话都触发全量 prompt 重处理(24K tokens 耗时55秒),KV Cache 完全未复用。 根本原因: Claude Code 自动注入的 Attribution Header(含时间戳)导致每次请求的前几个 token 不同 llama.cpp 的 LCP 相似度匹配因此失败(common_prefix=0)
2026-05-06 01:04:43
847
原创 将 无官方订阅的Claude Code 接入飞书:cc-connect 配置踩坑全记录
Claude Code 是 Anthropic 推出的终端 AI 编程助手,能力很强,但只能通过本地终端使用(Remote Control和Channels都需要订阅)。cc-connect 是一个开源工具,能将 Claude Code(以及 Cursor、Gemini CLI 等)桥接到飞书、钉钉、Telegram 等即时通讯平台,实现手机远程调用 Claude Code。本文记录了使用将本地 Claude Code 接入飞书群聊的完整过程,包括第三方 API 代理的认证配置和实际踩坑经验。
2026-05-06 01:03:06
334
原创 【GaussDB】浅浅说下GaussDB中视图依赖关系的一个处理逻辑
文章摘要: GaussDB在处理视图依赖关系时采用了独特的设计思路。当视图依赖包中的函数时,允许直接删除被依赖的包(与PostgreSQL不同),并通过gs_dep_source系统表记录视图原始SQL。在包重建后,视图能自动恢复有效性,无需手动编译(与Oracle不同)。测试发现这种机制能处理简单依赖,但在嵌套依赖场景下(如包中使用其他包的subtype)会出现依赖追踪断裂,甚至导致数据库崩溃。GaussDB的设计在常规场景下更友好,但在复杂依赖关系中可能存在问题,体现了数据库系统在处理对象依赖时的权衡取
2026-05-06 00:15:04
496
原创 【GaussDB】 存储过程中使用自治事务记录日志的性能优化方案测试及评估
GaussDB自治事务日志优化方案对比 摘要 本文对比了GaussDB中四种记录自治事务日志的方案性能表现: 逐条INSERT:传统方式,性能最差(31.8秒/1000条) unnest批量插入:通过嵌套表变量+unnest_table函数批量写入,性能提升225倍(141ms) C函数文件写入:最优方案,非fenced模式达7.32ms(提升4344倍) DBE_FILE内置包:免部署方案,性能136ms(提升234倍) 测试表明,采用C标准库文件I/O的非fenced模式性能最优,比传统逐条INSERT
2026-05-06 00:08:04
654
原创 美式期权二叉树算法 — 七语言实现与交叉验证报告
本文介绍了美式期权二叉树算法的多语言实现与验证。采用Cox-Ross-Rubinstein (CRR) 二叉树模型,对比分析了欧式与美式期权的区别,重点阐述了美式期权提前行权的特性。报告详细记录了7种编程语言(Python、C、Java、Go、Rust、Oracle PL/SQL、GaussDB PL/pgSQL)的实现方案,并特别比较了Oracle与GaussDB在存储过程语法上的关键差异,包括REVERSE循环的参数顺序和变量声明格式的不同。所有实现代码已在GitHub和Gitee开源,为金融衍生品定价
2026-05-04 21:54:50
401
原创 【YaShanDB】应用适配实战-Halo博客系统适配崖山数据库
本文记录了将Halo博客系统适配崖山数据库(YaShanDB)的实战过程。作者通过AI辅助开发了崖山数据库的R2DBC驱动后,进一步使用GitHub的AI代理完成Halo系统的适配工作。文章展示了如何通过Docker Compose一键启动带崖山数据库的Halo服务,并验证了基本功能正常运行。适配过程中遇到了Spring R2DBC方言支持限制等技术难点,最终成功解决。虽然修改较粗暴且可能无法合入Halo主项目,但验证了R2DBC驱动的实用性,为政务系统等场景的应用提供了参考价值。
2026-05-04 20:22:21
396
原创 【YaShanDB】给YaShanDB开发R2DBC驱动
本文介绍了使用AI辅助开发YaShanDB的R2DBC驱动的过程。作者利用CodeBuddy的PLAN模式制定了详细开发计划,包括项目搭建、配置实现、连接管理、结果集处理等核心模块。通过复用YaShanDB JDBC驱动中的协议层和配置层,结合Reactor的异步调度机制,将同步调用包装为响应式流。技术栈采用Java 17+Maven 3.8+,实现了R2DBC SPI规范要求的连接管理、SQL执行、事务控制等功能,为YaShanDB提供了响应式数据库访问能力。
2026-05-04 20:19:41
531
原创 万字长文-国产关系型数据库生态深度分析
国产数据库生态呈现多元化发展格局,主要包括云数据库模式(阿里云、腾讯云等)、分布式数据库(OceanBase、TiDB等)、传统老四家(达梦、金仓等)以及openGauss生态。不同厂商采取差异化竞争策略:云厂商依托平台优势,分布式数据库专注全球化布局,传统厂商深耕政企市场。当前行业面临信创认证门槛、Oracle兼容性挑战和开源生态建设等关键问题。整体来看,国产数据库在技术实力和生态建设上已取得显著进步,但与国际领先产品仍存在差距。
2026-03-15 01:40:37
637
原创 【ESXI】断电重启后NFS存储无法识别的修复方案
摘要 本文记录了ESXI 7.0.3主机在断电恢复后无法识别NFS存储的解决方案。当ESXI先于NFS存储启动时,会导致存储连接失败且不会自动恢复。解决方法包括:1)检查存储状态;2)查询NFS挂载信息;3)验证网络连通性;4)移除并重新添加NFS配置。整个过程仅需6条命令,无需重启主机,实现不停机维护。方案验证了NFS服务器连接状态和文件系统挂载状态,最终恢复了管理界面的正常显示。该方案标准化且成熟,适用于类似时序问题导致的NFS连接故障。
2026-03-15 01:35:47
464
1
原创 GaussDB图形化开发工具深度评测
本文评测了三款主流图形化工具对华为云GaussDB的适配情况。Navicat On-Prem Server 3.0.0安装配置繁琐,功能适配度极低,基本无法使用;Navicat 17 Premium支持包管理和过程调试,但操作不直观且存在参数处理缺陷;DBeaver 25.2.0虽为开源工具,但对GaussDB的支持最为完善,功能全面且免费。综合来看,DBeaver是目前最适合GaussDB开发的图形化工具。
2026-03-08 22:38:48
659
原创 【GaussDB】排查ARM64环境上gaussdb的python驱动(psycopg3)coredump的问题
文章摘要:本文记录了在ARM64环境下排查GaussDB Python驱动(psycopg3)导致coredump问题的过程。作者通过对比测试发现,在x86_64环境运行正常的代码在ARM64环境会出现段错误,而直接使用C语言调用libpq则无此问题。通过华为云开发容器复现问题后,作者编写了最小化测试用例,发现无论是通过SQLAlchemy还是直接使用Python驱动连接GaussDB都会导致coredump。初步分析表明CPU架构差异可能是关键因素,并进一步借助AI工具进行深入分析。
2026-03-08 19:59:33
556
原创 【GaussDB】开发gaussdb(psycopg3)的sqlalchemy方言以支持airflow
本文介绍了为GaussDB开发基于psycopg3的SQLAlchemy方言的过程。作者在之前适配psycopg2和async-gaussdb方言的基础上,通过分析SQLAlchemy自带的postgresql.psycopg实现,新增了对gaussdb驱动的支持。主要工作包括:创建gaussdb方言模块、注册新的SQLAlchemy驱动名、更新配置文件及补充测试用例。最终实现了通过"gaussdb+gaussdb"连接串使用GaussDB驱动的功能,并成功在airflow中使用。
2026-03-02 10:05:17
799
原创 【GaussDB】安装测试GaussDB基于psycopg3修改的python驱动
本文介绍了在GaussDB数据库上安装和测试基于psycopg3修改的Python驱动的过程。主要内容包括:按照官方文档步骤安装libpq驱动库;解决在uv虚拟环境下安装isort-gaussdb插件时的版本解析问题;通过示例代码测试驱动连接功能;最后说明如何打包生成whl安装文件。文章详细记录了安装过程中遇到的问题及解决方法,并验证了驱动的基本功能正常可用。
2026-03-02 09:58:47
654
原创 【GaussDB】调整sqlalchemy方言支持async_gaussdb以适配aiflow3.1.7
本文记录了为适配Airflow 3.1.7版本对GaussDB所做的异步驱动支持改造。主要内容包括:1) Airflow 3.1.7需要同时支持同步(psycopg2)和异步(asyncpg)驱动;2) 使用华为官方发布的async-gaussdb异步驱动;3) 修改sqlalchemy方言,包括添加无模式pg_catalog支持、注册async-gaussdb适配器、更新隔离级别处理等;4) 解决了GaussDB特有语法限制问题。最终实现了Airflow 3.1.7对GaussDB的完整支持。
2026-03-02 09:55:09
736
原创 【GaussDB】用AI解析UGO中的SQL审核模块的实现
本文探讨了GaussDB UGO工具中SQL审核模块的实现机制。该模块基于Spring Boot框架构建,采用分层架构设计,包含控制层、服务层和数据访问层。核心功能包括任务创建、SQL审核执行、结果查询导出等,支持GaussDB和MySQL两种数据库的规则审核。系统通过规则模板(xml文件)定义数百条审核规则,结合语法树分析和依赖关系检查实现SQL质量评估。数据持久化采用MyBatis映射多张审核结果表,并提供Kafka集成和PL/SQL解析等扩展功能。该实现为第三方工具解析GaussDB SQL提供了参考
2026-02-03 14:58:36
880
原创 【GaussDB】排查创建索引后查询数据行数发生变化的问题
摘要 GaussDB数据库在创建索引后出现查询结果行数不一致的问题。经排查发现,当使用索引跳扫(IndexSkipScan)时,查询结果比全表扫描少2行。该问题在特定数据量(134行以上)和复合索引条件下可复现。通过简化测试用例,最终定位到在9字段复合索引场景下,索引跳扫可能漏掉部分符合条件的数据行。已提交最小复现案例,涉及USTORE存储引擎和特定数据组合。
2026-02-03 14:01:00
684
原创 大表数据高效切片:基于主键的无排序Where条件生成算法
摘要 本文提出了一种基于主键的无排序分片算法,适用于异构数据库迁移中的大表数据比对。算法核心思路: 对于单列主键:采用采样分位点法,利用数据库统计信息或抽样计算分位点生成范围条件 2.对于复合主键:采用"主列范围+次列范围"策略,通过以下步骤实现: 先按主键顺序计算分界点 构造包含多个条件的WHERE子句 确保各分片条件无重叠无遗漏 算法特点: 不依赖排序操作 充分利用主键有序性和唯一性 条件构造巧妙,能处理前导列区分度低的情况
2026-01-30 23:22:39
979
原创 【GaussDB】手动编译不同python版本的psycopg2驱动以适配airflow
文章摘要: 本文记录了在Kylin v10 ARM64环境下,为解决Python 3.10调用GaussDB官方psycopg2驱动时出现的兼容性问题而进行的探索。由于华为提供的驱动仅支持Python 3.7.9,作者通过修改openGauss的psycopg2源码,适配GaussDB的libpq库,解决了核心转储问题。
2026-01-30 23:16:12
706
原创 【GaussDB】GaussDB506版本A模式中的date类型
GaussDB 506版本引入了新的datea数据类型以更好兼容Oracle的date类型。此前版本将date映射为timestamp(0),但存在行为差异问题。datea类型解决了这些问题,包括:SQL语义识别、默认输出格式、系统函数映射(如sysdate和current_date)、表达式解析规则、操作符行为(如日期相减返回numeric类型)以及数据导入格式要求等。虽然datea存储格式仍与timestamp相同,但提供了更接近Oracle date类型的行为特性。
2026-01-25 19:38:49
964
原创 【GaussDB】合入原生PG的PR来修复CVE-2025-1094漏洞后产生的严重隐患
近期有应用开发人员发现,自己编写的C程序使用GaussDB 506.0SPC0100的libpq往GaussDB数据库插入数据时,原本有值,但是到了数据库里就变成了null。经过多方排查后,定位到可能与GaussDB 506.0SPC0100版本合入了原生PG的一个漏洞修复导致,漏洞编号为CVE-2025-1094
2026-01-25 19:34:15
1230
原创 【GaussDB】UNION结果顺序探索
摘要 GaussDB和Oracle在处理UNION操作时存在结果顺序差异。在报表类SQL中,开发人员常使用UNION合并明细和汇总行,但未充分理解UNION与UNION ALL的区别。测试显示:Oracle 19.13会默认对UNION结果排序,而GaussDB 506.0默认采用哈希聚合,不保证顺序一致性。分析表明,UNION的去重操作在Oracle中会触发排序(SORT UNIQUE),而GaussDB则优先使用更高效的哈希聚合(HashAggregate)。
2026-01-21 21:58:07
692
原创 【GaussDB】分析函数性能优化案例-row_number改写
文章摘要 本文通过一个实际案例对比Oracle和GaussDB在执行分组top-N查询时的性能差异。案例使用row_number分析函数实现分组排序,在Oracle 19.13上执行仅需0.928秒,而在GaussDB 506.0上性能显著下降。文章展示了测试数据构造方法(包含50万条记录和多种平局情况),并提供了原始SQL查询语句。该案例旨在通过SQL改写来优化GaussDB上分析函数的性能问题,为解决Oracle迁移到GaussDB时的性能瓶颈提供参考。
2026-01-21 21:48:09
1067
原创 【GaussDB】解析GaussDB热补丁机制
GaussDB热补丁机制解析 GaussDB的热补丁技术允许在不重启数据库的情况下动态修复内核问题。热补丁通过生成包含修复函数的补丁文件,动态加载到运行中的数据库进程地址空间,通过重定向函数调用实现代码更新。补丁文件包含目标函数地址和补丁代码,加载后会原子替换函数入口地址指向补丁代码。该技术基于openGauss源码中的hotpatch模块实现,通过pg_ctl工具触发加载过程。热补丁优势在于业务零中断,能快速响应紧急问题,提高客户满意度。补丁包通常包含二进制补丁文件和相关元数据,通过gs_ctl或gs_o
2026-01-14 19:33:30
906
原创 【GaussDB】执行索引跳扫时如果遇到该索引正在执行autovacuum,可能会导致数据查询不到
【摘要】GaussDB数据库在执行索引跳扫时,若索引正进行autovacuum维护,可能导致查询结果为空。问题复现步骤:1)删除表数据后批量插入;2)执行skip index scan查询时偶发空结果集。通过日志分析发现报错时间与自动分析时间一致,且观察到autovacuum索引维护日志。模拟测试中,通过调整autovacuum频率并循环执行删除-插入-查询操作,成功复现该问题。问题可能与506.0.0SPC0100版本引入的索引跳扫新特性有关。
2026-01-14 19:27:01
1145
原创 【ORACLE】分区表数据倾斜会发生什么
摘要 本文演示了Oracle分区表数据倾斜导致的性能问题,说明统计信息无论是正确还是错误的情况下,都可能会导致执行计划不是最快的问题。
2026-01-10 20:40:02
835
原创 【GaussDB】数据静止状态下同一个SQL或同一个存储过程执行第6次报错的问题排查
摘要 GaussDB数据库中出现一个特殊问题:同一个SQL或存储过程在执行第6次时会报错"invalid input syntax for type numeric"。经排查发现,这是PG/OG系数据库的特性导致的 - 同一个SQL在前5次执行时会根据实际参数生成计划(cplan),第6次转为通用计划(gplan)后会对所有分支进行判断,即使某些分支实际不会执行。通过强制使用cplan或gplan的hint可以复现或避免该问题。
2026-01-10 20:34:08
935
原创 【ORACLE】分析一个全局临时表drop报错不合理的问题
摘要 在Oracle数据库中使用全局临时表时,发现一个异常现象:即使只有一个会话操作临时表,尝试删除表仍会报错ORA-14452(表正在使用中)。通过测试复现发现: 当临时表包含数据时无法直接删除 必须先执行TRUNCATE操作才能成功删除 跟踪日志显示Oracle内部会检查VPD(虚拟私有数据库)策略 报错信息提到索引操作,但实际表上并无索引 这表明Oracle对临时表的删除操作存在特殊处理机制,可能与数据段状态或内部锁管理有关。解决方法是在删除前先执行TRUNCATE操作清除临时表数据。
2026-01-04 22:29:35
497
原创 【openGauss】用Qoder修复openGauss的一处BUG
文章摘要: openGauss数据库在connect by语句中使用视图时出现"文件不存在"错误,而使用表或子查询则正常。作者通过gdb调试发现错误源于视图展开时机问题,内核代码未正确展开视图而是直接查找filenode。为解决该问题,作者尝试使用Qoder AI工具进行修复,展示了AI辅助修复数据库内核BUG的可能性。
2026-01-03 21:41:44
986
原创 【GaussDB】跨用户调用已授权的存储过程,可能会在存储过程内SQL的自定义函数表达式里报错没有权限
摘要:本文分析了GaussDB在开启plsql_security_definer参数时出现的跨用户存储过程调用权限异常问题。当用户user_b调用user_a的存储过程时,发现权限检查不稳定:参数为空时报权限错误,非空时正常执行。通过复现测试发现,该问题与执行计划优化(可能涉及opfusion功能)和参数取值相关,在简单查询场景下函数权限检查失效。测试表明问题具有不稳定性,可能与执行计划缓存有关。
2026-01-03 21:36:24
985
原创 【DuckDB】duckdb和postgresql对于unnest函数的区别
摘要 DuckDB和PostgreSQL在unnest函数处理上存在显著差异。PostgreSQL的unnest能根据位置决定展开层级,而DuckDB需要显式参数控制展开行为:必须指定recursive := true或max_depth参数才能展开嵌套字段。测试显示DuckDB默认不展开结构体字段,对JSON类型支持自动展开,且在FROM子句中不支持参数化调用。相比Oracle的table函数或PG的unnest,DuckDB需要更明确的展开指令才能实现类似功能。
2026-01-02 18:42:27
862
原创 【DuckDB】探索函数调用新范式:点操作符链式调用
DuckDB的点操作符链式调用功能为SQL查询提供了更简洁直观的函数调用方式。文章首先介绍了基础语法,说明点操作符将前表达式结果作为后函数入参的特性,并指出常见误区及解决方案。随后探讨了高级用法,包括连续链式调用和字段别名作用域扩展。文章还展示了自定义类型和变量的点操作符应用,以及为自定义类型创建函数的方法。最后分析了点操作符的语法实现原理,指出扩展支持的复杂性。与传统嵌套调用相比,链式调用从左到右的阅读顺序显著提升了代码可读性,使数据处理逻辑更加流畅自然。
2026-01-02 18:37:27
828
原创 【DOCKER+ORACLE】使用docker-compose一键拉起一个ORACLE-ADG一主一备环境
本文介绍了使用Docker Compose一键部署Oracle ADG(Active Data Guard)主备环境的方法。作者通过AI辅助开发,解决了传统搭建Oracle ADG环境复杂的问题,实现了主备库秒级同步。项目采用分层镜像构建策略,包含基础系统镜像和Oracle软件镜像,支持主库创建、备库克隆和DG配置全自动化。文档详细说明了环境要求、部署步骤、连接信息和状态检查方法,并提供了主备切换脚本。该项目显著降低了Oracle ADG环境搭建的技术门槛,为数据库工具开发和迁移验证提供了便利的测试环境。
2026-01-01 21:54:10
1234
原创 【GaussDB】从 sqlplus 到 gsql:Shell 中执行 SQL 文件方案的迁移与改造
摘要:本文介绍了Oracle数据库迁移至GaussDB时,shell脚本执行SQL文件的改造方案。重点分析了Oracle与GaussDB在存储过程定义、shell脚本传参、日志重定向、错误处理等方面的差异,并提供了具体改造方法。针对GaussDB不支持sqlcode数字类型、变量传递方式不同等问题,提出了创建转换函数、使用自定义变量等解决方案。最终给出了整合后的存储过程定义和shell脚本示例,实现了业务逻辑的无缝迁移。
2026-01-01 21:48:58
944
原创 【Oracle】两个关于Hint的问题
摘要 本文探讨了Oracle数据库中USE_HASH提示的正确使用方法。通过实验发现,将多个表名放入USE_HASH提示中的常见做法实际上是不正确的,尽管这种写法仍能导致哈希连接。
2025-11-30 16:00:14
1039
原创 【Oracle/GaussDB/MogDB】统一权限查询
文章摘要: 本文针对客户数据库账号权限管理需求,分析了Oracle、GaussDB和MogDB三种数据库的权限查询方法。Oracle通过dba_tab_privs、dba_role_privs和dba_sys_privs视图查询;GaussDB/MogDB则需从pg_roles、gs_db_privilege等基表获取权限信息,并详细列出了包含acl字段的关键表。文章提供了系统用户过滤方案,整合了统一的SQL查询语句,特别考虑了对象权限的获取方式,确保跨数据库权限信息的一致性,帮助客户在账号下线前准确掌握权
2025-11-30 15:55:44
809
原创 【YashanDB】数据迁移工具YMP安装测试
本文记录了YashanDB数据迁移工具YMP的安装测试过程。测试发现必须严格按照官方文档操作,使用root用户安装会导致启动失败并报"Password decryption failed"错误。正确做法是新建ymp用户进行操作,使用内置库安装命令sh bin/ymp.sh install并指定数据库包和Oracle客户端路径即可成功安装。测试表明YMP工具对安装环境要求严格,必须遵循文档规范操作才能确保安装成功。
2025-11-25 21:52:47
822
原创 【YashanDB】ORACLE-SQL/PLSQL兼容性测试记录
本文内容比较零散,正常兼容的就不提了,仅记录测试过程中一些需要注意的点,不代表产品本身整体的好坏。
2025-11-25 21:45:42
896
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅