Ubuntu 上 JavaScript 如何实现数据持久化:从 LocalStorage 到 MongoDB 的选型梳理

在 Ubuntu 上用 JavaScript 做数据持久化,关键不是“能不能存”,而是先分清运行环境和数据规模。本文按浏览器端与 Node.js 端拆解 LocalStorage、IndexedDB、文件系统、SQLite、MongoDB 的适用边界,帮助你快速选型。 在 Ubuntu 里写 JavaScript 应用时,数据持久化最容易踩坑的地方,不是“怎么存”,而是没有先按运行环境和数据规模做判断。

Ubuntu 上 JavaScript 如何实现数据持久化:从 LocalStorage 到 MongoDB 的选型梳理

ThinkPHP 如何进行数据库设计

这篇文章把 ThinkPHP 项目里的数据库设计流程拆成可落地的几步:先理清需求,再完成建模、表结构、Model 映射、迁移、连接配置与性能优化。文中还用一个用户表示例串起从 ER 思路到 SQL 和实体类配置的完整过程。

ThinkPHP 如何进行数据库设计

Go 语言计算向量相似度的三种常见方案

在 Go 里计算向量相似度,常见路径并不止一种。小规模数据可以直接手写余弦、点积和欧氏距离;需要批量计算和更高性能时,适合交给 gonum 这类数值库;当规模进入十万到百万级,并且要做 ANN 检索时,更实际的做法是接入向量数据库。

Go 语言计算向量相似度的三种常见方案

CentOS 上 Rust 项目如何备份与恢复

在 CentOS 上备份 Rust 项目,重点不在“打一个压缩包”,而在同时保住代码、依赖版本、数据库和配置文件四类关键资产。本文按备份、恢复和实战注意事项梳理命令与检查点,方便你建立一套可真正落地的项目回滚方案。

CentOS 上 Rust 项目如何备份与恢复

SQL 批量 INSERT 数据时,如何避免主键冲突

批量插入遇到主键或唯一键重复时,核心不是“怎么不报错”,而是按数据库方言选择真正的跳过写法。MySQL、PostgreSQL 和 SQL Server 的语义、锁行为与开销差异很大,用错语句往往会把简单去重变成阻塞和死锁问题。

SQL 批量 INSERT 数据时,如何避免主键冲突

Go 语言中解决浮点数精度问题的最佳实践

Go 里的浮点数精度问题并不是语言缺陷,而是 IEEE 754 二进制表示的天然结果。本文从 0.1 + 0.2 为什么失真讲起,再结合金额计算、精确比较和数据库设计,梳理整数、decimal、math/big 与误差比较四种常见方案的适用边界。

Go 语言中解决浮点数精度问题的最佳实践

Oracle 19c 如何使用 SQL 复合触发器避开 ORA-04091

在 Oracle 19c 里,行级触发器一旦直接查询或修改当前触发表,通常就会撞上 ORA-04091。解决思路不是绕事务,而是改用 COMPOUND TRIGGER,把数据收集和表访问拆到不同阶段,尤其把真正的查询、更新和汇总后移到 AFTER STATEMENT。

Oracle 19c 如何使用 SQL 复合触发器避开 ORA-04091

SQL 如何对 JSON 字段进行分组聚合

JSON 字段里的数组或对象,不能直接拿来做 `GROUP BY`。这篇文章把 MySQL 8.0+ 的 `JSON_TABLE()` 和 PostgreSQL 的 `jsonb_array_elements()` 拆开说明,并补上类型转换、空值过滤、分组维度选择这些最容易把统计结果做错的关键点。 JSON 字段里有数组或对象时,不能直接 GROUP BY 。正确做法是先展开成行,再按主键或提取字段分组。

SQL 如何对 JSON 字段进行分组聚合

PostgreSQL 16 中 UPDATE FROM 如何正确关联

PostgreSQL 16 里的 `UPDATE ... FROM` 很好用,但几个细节处理错了,结果往往不是报错,而是“看起来执行成功,实际改错数据”。这篇文章把目标表声明规则、显式关联条件、子查询别名和更新前验证方法拆开说明,帮助你在写更新语句前先判断风险。

PostgreSQL 16 中 UPDATE FROM 如何正确关联