数独有感
基本策略 使用set解决重复,使用回溯法解决,验证数独是否有效是关键函数 下面是一个使用JavaScript实现的数独验证和求解算法,展示了解题的核心思路: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253// 验证数独是否有效的函数function isValidSudoku(board) { const boxes = Array(9).fill().map(() => new Set()); for (let i = 0; i < 9; i++) { let rolSet = new Set() let colSet = new Set() for (let j = 0; j < 9; j++) { if (board[i][j] !== '.') { ...
反转数组k个元素
问题描述给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。 示例: 123456输入: nums = [1,2,3,4,5,6,7], k = 3输出: [5,6,7,1,2,3,4]解释:向右旋转 1 步: [7,1,2,3,4,5,6]向右旋转 2 步: [6,7,1,2,3,4,5]向右旋转 3 步: [5,6,7,1,2,3,4] 解决方案方法一:循环移动这是一个直观的解决方案,通过循环k次,每次将数组最后一个元素移到开头。不过leetcode上提交超时了 1234567891011121314function rotate1(nums, k) { if (k % nums.length === 0) { return } let n = nums.length for (let i = 0; i < k; i++) { let temp = nums[n - 1] for (let j = n - 2; j >= 0; j--)...
博客复活
前言时隔多年,终于决定重新启用我的个人博客。 技术栈 Hexo: 静态博客框架 GitHub Pages: 网站托管 Butterfly: 主题 js.org: 免费域名 搭建过程1. 环境准备 Node.js 环境配置 Git 安装与配置 2. Hexo 安装与配置 Hexo 框架安装 基本配置调整 主题选择与安装 3. 部署相关 GitHub Pages 配置 自动部署流程 域名设置 遇到的问题与解决方案后续计划 完善博客功能 添加评论系统 优化SEO 编写更多技术文章 总结博客重启之旅时隔两年重启博客,面临着许多挑战。最初的 Hexo 环境已经无法找到,但这反而给了我一个重新开始的机会。在这个过程中,我深刻体会到了技术发展的日新月异,特别是 AI 技术的突飞猛进。 AI 辅助开发的新体验从最初使用 ChatGPT 到现在的 AI 编辑器,这种变化令人惊叹: 早期 AI 辅助体验 需要手动复制代码到 OpenAI 网页 虽然比传统搜索引擎效率高,但交互过程仍然繁琐 需要非常精确的问题描述才能获得准确答案 AI...
React 开发实践与组件设计思考
项目实践在开发内部管理平台时,主要使用了以下技术栈: React Hooks (useState, useEffect, useRef) Ant Design 组件库 MobX 状态管理 组件设计经验状态管理对于简单的父子组件通信,使用 props 和 ref 就足够了。但在以下情况需要考虑使用状态管理工具: 组件层级过深 状态需要共享 状态变化复杂 组件拆分原则 功能独立 复用性高 维护方便 职责单一 实际案例12345678910111213141516171819202122// 日期范围选择组件const RangePickCondition = ({ onChange }) => { const [dates, setDates] = useState([]); const pickerRef = useRef(null); useEffect(() => { // 初始化逻辑 }, []); const handleChange = (values) => { ...
Docker MongoDB 异常崩溃处理指南
问题背景测试环境的平台突然无法访问,经排查发现是 MongoDB 数据库连接异常。通过日志发现是磁盘空间不足导致的崩溃。 问题排查1. 检查磁盘空间1df -h 输出显示存放 MongoDB 数据的根目录空间已满: 123Filesystem Size Used Avail Use% Mounted on/dev/sda1 20G 19G 1G 95% //dev/sdb1 100G 30G 70G 30% /data 2. 分析原因 MongoDB 数据默认存储在系统盘 之前的数据备份占用大量空间 日志文件未及时清理 缺乏磁盘监控预警 解决步骤1. 迁移数据目录12# 移动数据到数据盘mv /db/* /w/db 2. 修复数据库由于非正常关闭,需要删除锁文件并修复: 1234567891011# 删除锁文件rm -rf mongo.lock# Docker 环境下修复数据库sudo docker run -d \ -v /x/db:/data/db \ -p x:27017 \ ...
上海疫情
...
后端开发的一些想法
...
宝宝百日
宝宝百日啦,希望宝宝身体健康,期望是能够健康成长。
Redis + TypeScript 实现日志分析系统
项目背景在开发运维平台时,需要实现日志分析功能。最初采用 MongoDB 直接查询的方式,但随着数据量增长,性能问题逐渐显现。本文记录了使用 Redis 缓存优化查询性能的实践经验。 性能问题分析MongoDB 查询瓶颈 跨日期查询耗时长(几十秒) 日志数据量达到千万级 lookup 联表查询性能差 索引优化效果有限 优化思路 使用 Redis 缓存热点数据 优化 MongoDB 查询方式 合理设置数据过期策略 实现方案Redis 缓存实现12345678910// Redis 扫描实现let uuidList = [];var stream = RedisStore.redis.scanStream({ match: `*${currentDay}:${this.radioValue}`, count: 1000});for await (const resultKeys of stream) { // 处理扫描结果} MongoDB 查询优化12345const allTask =...
Egg.js + UmiJS 开发总结
前言从 Koa 到 Egg.js 的转变让我深刻体会到框架的重要性。框架不仅提供了规范化的开发方式,还解决了日志、定时任务等通用业务问题。本文记录使用 Egg.js + UmiJS 开发过程中的经验总结。 技术栈选择后端框架 Egg.js: 企业级 Node.js 框架 NATS: 微服务通信 HTTP: 前后端通信 前端框架 UmiJS: 可插拔的企业级 React 应用框架 Ant Design: UI 组件库 项目优化经验1. 打包优化UmiJS 配置示例: 123456789101112131415161718192021222324252627282930313233343536373839404142// .umirc.tsexport default defineConfig({ nodeModulesTransform: { type: 'none' }, hash: true, exportStatic: {}, dynamicImport: {}, ...


