主页

辣评系统筛选功能统一优化(十六)

筛选功能优化概述 在辣评平台的使用过程中,我们发现筛选功能存在交互不一致、用户体验不佳等问题。本次优化统一了全站筛选器的交互方式,提升了用户体验。 优化目标 统一筛选器交互方式 实现下拉选择替代输入框 添加筛选记忆功能 优化防抖处理 提升响应速度 问题分析 原有问题 交互不一致 有的筛选器需要手动点击”查询”按钮 有的筛选器自动触发查询 用户体验混乱 输入方式不友好 届数筛选使用输入框,容易输入错误 没有提示可选值 需要记忆届数 性能问题 频繁触发查询 没有防抖处理 ...

阅读更多

MySQL 数据误删除恢复指南:利用 Binlog 日志逆转 DELETE 操作

MySQL 数据误删除恢复指南:利用 Binlog 日志逆转 DELETE 操作 今天我们来探讨一个常见的数据库问题:误删除数据。MySQL 作为广泛使用的关系型数据库,启用了二进制日志(Binlog)后,我们可以通过它恢复误删除的数据。本文将从如何获取删除部分的 Binlog 日志开始,逐步指导你将 DELETE 操作转换为 INSERT 语句,实现数据恢复。整个过程使用一个简单的 Bash 脚本,高效且易于操作。 本文以一个虚构的测试表 test_db.test_table 为例,模拟误删除记录的恢复过程。注意:恢复前,请确保 MySQL 已启用 Binlog(log_bin 参数),并备份数据库以防万一。 为什么用 Binlog 恢复数据? Binlog 是 MySQL 的...

阅读更多

辣评前端性能优化与构建(十五)

概述 随着辣评前端功能的不断增加,特别是引入了 Element Plus UI 框架、ECharts 图表库和 html2canvas 等大型依赖库,前端应用的构建产物体积和运行时性能面临了严峻挑战。本文档详细记录了 2025 年 9 月进行的前端性能优化工作,包括 Vite 构建优化、Element Plus 循环依赖问题解决、代码分割策略、打包产物优化和开发体验改进等方面的工作。 一、Vite 构建系统概述 1.1 Vite 配置架构 辣评前端采用 Vite 作为构建工具,相比 Webpack 具有以下优势: // admin-vue/vite.config.ts import { defineConfig } from 'vite' import vue from '@...

阅读更多

MySQL 删除重复数据:使用存储过程高效处理

使用存储过程删除表重复数据 概述 本文件提供指导,说明如何使用两个 MySQL 存储过程 DeleteDuplicatesSingleTable 和 BatchDeleteDuplicates 来删除数据库表中的重复记录。这两个存储过程设计用于高效处理单个或多个表,包含错误处理和分批处理功能,以最小化性能影响。 前提条件 MySQL 版本:5.7 或更高版本 用户权限:用户需具备目标数据库的 CREATE、ALTER、DELETE、SELECT 和 EXECUTE 权限。 表结构:表必须包含一个 id 列作为主键或唯一标识符。 备份:在执行删除操作前,始终备份目标数据表。 存储过程 1. D...

阅读更多

辣评后端安全与性能优化(十四)

概述 在辣评项目的发展过程中,随着用户数量的增加和功能的复杂化,后端系统面临着越来越多的安全和性能挑战。本文档详细记录了我们在 2025 年 8 月进行的后端安全与性能优化工作,包括数据库连接池优化、SQL 查询优化、权限验证机制、错误处理与日志系统,以及性能监控等方面的改进。 一、数据库连接池优化 1.1 连接池配置 在 Go + GORM 的架构中,数据库连接池是性能的关键。我们对 SQLite 数据库的连接进行了优化: // cmd/server/database/database.go func InitDB() error { // 配置 SQLite 连接 db, err := gorm.Open(sqlite.Open(dbPath), &...

阅读更多

LCR170-优化逆序对计数算法:从暴力解法到归并排序

优化逆序对计数算法:从暴力解法到归并排序 问题背景 在数组中,逆序对是指满足 i < j 且 record[i] > record[j] 的下标对 (i, j)。给定一个整数数组 record,我们需要计算其逆序对的数量。例如,对于数组 [3, 1, 2],逆序对有 (3, 1) 和 (3, 2),总数为 2。然而,当数组规模较大时,简单的暴力解法会导致“时间超限”(Time Limit Exceeded)。本文将探讨如何从 O(n²) 的暴力解法优化到 O(n log n) 的归并排序解法。 暴力解法及其瓶颈 最初的解法使用两层循环,检查每一对 (i, j)(其中 j < i),如果 record[j] > record[i],则计数加 1。代码如下: ...

阅读更多

91-解码方法的动态规划解法:从字符串到字母序列

解码方法的动态规划解法:从字符串到字母序列 问题背景 给定一个只包含数字的字符串 s,我们需要计算它可以被解码为字母序列的不同方式数量。每个数字或数字组合对应一个字母:1 对应 ‘A’,2 对应 ‘B’,…,26 对应 ‘Z’。例如,字符串 “12” 可以解码为 “AB”(1, 2)或 “L”(12),共 2 种方式。然而,字符串可能包含前导零(例如 “06” 无法解码),且输入长度在 1 到 100 之间,答案保证是 32 位整数。本文将详细介绍如何使用动态规划高效解决这一问题。 为什么用动态规划? 这个问题具有明显的子问题重叠和最优子结构特性: 子问题:字符串 s[0:i] 的解码方式依赖于 s[0:i-1] 和 s[0:i-2] 的解码方式。 最优子结构:通过组合子...

阅读更多

辣评排行榜与星级评定功能(十三)

排行榜系统概述 排行榜系统是辣评平台的重要功能,用于展示用户的评论质量和活跃度排名。通过星级评定机制,系统能够识别和奖励高质量的评论者。 系统目标 提供公平的排名机制 实现灵活的排序功能 支持多维度的筛选 激励用户参与评论 排行榜数据模型 核心数据结构 // Leaderboard 排行榜模型 type Leaderboard struct { ID uint `gorm:"primaryKey"` UserID uint `gorm:"uniqueIndex:idx_user_competition"` CompetitionID uint `gor...

阅读更多