自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

zxs的学习打卡博客

zxs的学习打卡博客,分享学习、实习中的实际问题以及相关业务功能实现

  • 博客(20)
  • 收藏
  • 关注

原创 数据结构第四章:串

摘要:本文系统介绍了数据结构中"串"的基本概念和存储结构。串是由字符组成的有限序列,包括主串、子串和空串三种类型。存储方式主要有定长顺序、堆分配和块链三种,其中堆分配最灵活实用。重点讲解了模式匹配算法,包括暴力匹配法和KMP算法。KMP算法通过next数组避免主串指针回退,时间复杂度为O(m+n),显著优于暴力法。文章还介绍了KMP的优化方法nextval数组构造,并强调手算next数组是考研重点。

2026-01-07 21:40:30 631

原创 数据结构第三章:栈、队列与数组

栈是一种只允许在一端进行插入和删除操作的线性表,遵循原则。栈顶(Top):允许插入/删除的一端栈底(Bottom):固定不变的一端空栈:栈中无元素#define MaxSize 50 //定义栈中元素的最大个数//存放栈中元素int top;//栈顶指针} SqStack;// 栈的链式存储结构//数据域//指针域// 栈类型定义⚠️ 注意:链栈通常不带头节点,头指针指向栈顶。int top1;// 第一个栈的栈顶int top2;// 第二个栈的栈顶队列是一种。

2026-01-07 10:29:50 672

原创 数据结构第二章:线性表

本文系统梳理了线性表的实现方式与核心操作。主要内容包括:1)线性表基本概念与特性;2)顺序表和链表的存储结构实现(含单/双/循环/静态链表);3)各类线性表的基本操作实现(初始化、插入、删除等);4)顺序表与链表的性能对比(访问、插入/删除效率等);5)考研高频考点与典型真题解析。文章通过代码示例详细展示了不同存储结构下的操作实现,并总结了各类线性表的适用场景,为数据结构学习提供了系统性的参考。

2026-01-04 22:45:29 295

原创 数据结构第一章:绪论

本文摘要:数据结构的三要素包括逻辑结构(线性/非线性关系)、存储结构(顺序/链式等实现方式)和数据运算(操作集合)。算法需满足有穷性、确定性等五大特性。算法效率通过时间复杂度和空间复杂度衡量,前者关注执行时间随输入规模的增长趋势(如O(1)、O(n²)等),后者考察额外存储空间使用(如递归为O(n))。备考重点包括逻辑结构分类、存储方式比较、算法特性区分及复杂度计算。理解三要素关系(如栈可用数组或链表实现)和掌握常见操作的效率差异是关键考点。

2026-01-04 10:13:06 694

原创 MySQL 索引真的“失效”了吗?8 大常见场景深度解析

本文剖析了MySQL索引"失效"的8种常见场景,指出所谓"失效"实质是优化器未使用索引。具体包括:使用函数/表达式、隐式类型转换、违反最左前缀原则、使用NOT操作符、LIKE前导通配符、OR条件部分无索引、数据低区分度,以及人为强制忽略。通过EXPLAIN分析执行计划可判断索引使用情况,建议遵循"索引友好"原则编写SQL,确保字段"裸露"、类型匹配、顺序正确。文中针对每种问题提供了优化方案,如改写范围查询、改用UNION等,帮助

2025-11-07 23:25:17 1035

原创 MySQL 超大分页为什么慢?深度解析“先查 ID 再回表”优化原理

本文深入解析MySQL超大分页查询性能瓶颈及优化方案。当执行带大偏移量的LIMIT查询时(如LIMIT 1000000,10),MySQL会按"边扫描边回表"方式处理,导致回表次数高达offset+N次(如上例1000010次),而非仅回表N次。根本原因是MySQL优化器默认不会自动采用"先收集ID再回表"的延迟关联策略。 优化方案是手动实现"延迟关联":先用覆盖索引只查询ID(避免回表),再用少量ID回表获取完整数据,将回表次数从百万级降到个位数

2025-11-05 17:25:46 1101

原创 Redisson + Lock4j 实现分布式锁:快速上手与核心用法

本文介绍了在Java分布式系统中使用Redisson和Lock4j快速实现高效可靠的分布式锁方案。通过简单配置和注解方式即可实现并发控制,支持可重入锁、自动续期等功能。文章详细说明了环境搭建、注解使用、参数配置及异常处理的全流程,并通过并发测试验证了方案的可靠性。该方案具有配置简单、使用灵活、安全可靠等特点,适用于订单处理、库存管理等多种分布式场景,能有效解决资源竞争问题。

2025-10-29 20:51:57 845

原创 基于 Redis Bitmap 实现签到功能

本文介绍了基于Redis Bitmap实现的用户签到系统设计方案。系统采用SpringBoot框架,利用Redis的高效位图操作存储签到记录,支持防止重复签到、统计连续签到天数和奖励积分功能。核心实现包括:1)使用SETBIT记录签到状态;2)通过BitFieldSubCommands批量获取签到数据;3)采用无符号右移运算逐位检查签到状态。该系统具有高效、可扩展的特点,适用于各类需要签到功能的业务场景。

2025-10-26 20:43:39 407

原创 Spring AMQP配置JSON消息转换器:提升消息可读性与幂等性处理

本文介绍了在Spring Boot项目中配置RabbitMQ使用JSON序列化的方法,替代默认的JDK序列化方式。通过引入Jackson依赖并配置Jackson2JsonMessageConverter,实现了更轻量、可读性强的消息传输,同时支持自动生成messageId用于幂等性判断。文章分析了JSON序列化的优势(体积小、跨语言、易调试),详细说明了配置步骤,并强调了在生产者消费者两端统一配置的重要性。最后给出了验证方法和最佳实践建议,包括幂等设计、测试验证等内容,帮助开发者构建更健壮的RabbitMQ

2025-10-25 21:08:32 755

原创 高并发场景下的通用点赞功能设计方案(SpringBoot + Redis + RabbitMQ

《高性能点赞系统设计方案》摘要:本文提出了一种基于SpringBoot+Redis+MySQL+MQ的通用点赞系统架构。核心设计采用高频读写分离策略,通过Redis缓存点赞记录(Set)和业务点赞量(SortedSet),实现毫秒级响应;利用RabbitMQ异步解耦和定时批量同步机制保障数据最终一致性。方案亮点包括:Redis管道化批量查询降低延迟、ZPOPMIN原子操作避免重复消费、批量更新减少数据库压力。该架构已验证支持百万级日活,具有高性能(Redis前置)、高可用(异步解耦)、易扩展(多业务支持)等

2025-10-25 18:05:37 1936

原创 JavaScript 中遍历对象的 6 种方式,你用对了吗?

本文系统梳理了JavaScript中遍历对象的6种方法:for...in(需谨慎使用)、Object.keys()(最常用)、Object.values()(仅需值时)、Object.entries()(推荐首选)、getOwnPropertyNames(包含不可枚举属性)和Reflect.ownKeys()(最全面)。通过对比表格分析各方法特性,指出90%场景推荐使用Object.entries(),因其语义清晰且功能强大。文章还揭示了常见误区(如JSON.stringify忽略Symbol属性)并给出解

2025-10-24 20:12:53 1766

原创 从一次卡顿排查说起:Vue 中 computed 与响应式数据的“死循环”陷阱

本文分析了实现中国行政区三级联动选择器时遇到的数据转换问题。最初使用递归函数直接修改响应式数据,导致computed死循环和"infinite update loop"错误。随后改用纯函数但仍出现高频响应式触发问题,因3000+节点的set拦截导致主线程阻塞。最终采用深拷贝方案,通过createCascaderOptions函数生成新对象而非修改原数据,既解决了性能问题,又保持了原始数据的纯净性,实现了数据展示与存储的完全分离。该方案不依赖Vue内部实现,具有更好的安全性和可预测性。

2025-10-15 21:33:35 705

原创 Vue 3 中修改响应式对象的正确姿势——Object.assign 解决表格数据更新不刷新问题

摘要:文章分析了Vue响应式系统中常见的"数据更新但视图不刷新"问题。当直接替换对象(row={...})时,由于Vue无法监听对象引用的替换,导致视图不更新。正确做法是使用Object.assign修改原对象属性,保持引用不变。Vue3的Proxy实现相比Vue2有显著优势,能自动支持新增/删除属性的响应式监听。文章推荐使用Object.assign批量更新字段,避免对象替换,并对比了不同方案的适用场景,总结了"修改属性而非替换对象"的核心开发原则。

2025-10-15 17:06:11 651

原创 从“拿不到数据”到“自动更新”:我如何用watch或computed解决异步状态同步问题

摘要:在小程序开发中,异步加载用户地址数据时遇到渲染时序问题,导致页面获取空值。通过分析异步加载与页面渲染的时间差,发现传统方案(如标志位、await)存在耦合度高、并发调用不稳定等问题。采用Vue的响应式方案能更好解决:1)使用watch自动响应数据变化,实现解耦和容错;2)更推荐computed方案,具备缓存机制和更低内存开销,适合纯数据展示场景。watch适合有副作用的复杂逻辑,而computed更适合声明式数据映射。最终优化了数据加载稳定性与代码可维护性。

2025-10-14 20:35:28 717

原创 mybatisplus JSON类型处理器

本文介绍了使用MyBatis-Plus的JSON处理器自动转换商品规格数据的方法。在购物车功能中,商品规格(如尺寸、颜色)以JSON格式存储,通过配置@TableField(typeHandler=JacksonTypeHandler.class)注解和autoResultMap=true属性,实现Map与JSON字符串的自动转换,避免了手动序列化操作。文章包含完整的代码实现,包括实体类MemberCart、DTO、Controller、Service及Mapper,展示了如何通过MyBatis-Plus简

2025-10-13 10:51:33 756

原创 mybatisplus枚举类处理器

本文介绍了使用MyBatisPlus实现枚举类型自动转换的方法。通过配置yml文件启用枚举处理器,在实体类中使用枚举类型字段,并用@EnumValue标记数据库存储值、@JsonValue标记前端返回值。以订单状态为例,定义OrderStatus枚举类,实现数据库数值与枚举值的自动映射。该方法使代码更清晰,限制变量取值范围,适用于选项固定的场景如订单状态、支付方式等。其他类似属性如售后状态也可参照此方式定义枚举类,提升代码可读性和安全性。

2025-10-12 20:40:34 462

原创 微信小程序登录功能实现(含前后端代码)

本文介绍了微信小程序登录功能的完整实现流程,分为前端和后端两部分。前端通过uni.login获取临时登录凭证code,并使用按钮获取用户手机号信息。后端实现包括:1.创建会员表结构;2.配置微信小程序参数;3.封装微信API接口;4.实现获取openId、access_token和手机号的方法;5.完成登录业务逻辑,包括用户注册/更新、手机号加密存储和JWT token生成。最后前端调用登录接口并存储返回的token。整个流程遵循微信官方文档规范,使用了hutool工具包处理加密和HTTP请求,实现了安全可

2025-10-08 12:52:02 2682

原创 获取中国行政地区表数据

本文介绍了中国行政区域数据处理的实现方法。系统使用MyBatisamatisPlus框架定义了两个实体类:数据库表实体类(Address)和返回结果实体类(AddressVo)。通过查询所有1级(省)、2级(市)和3级(区县)行政区域数据,使用Java Stream API进行分组处理,构建出树形结构的行政区域数据。数据处理olith将行政区划数据按层级分类,并建立父子关系,最终返回包含省市区三级结构的树形数据。该方法实现了行政区划数据的分类整合和结构化返回,为前端提供了便于展示的树形数据格式。

2025-10-02 21:55:02 239

原创 笛卡尔积算法实现商品规格属性组合

笛卡尔积算法实现商品规格属性组合

2025-09-27 23:23:12 250

原创 IDM插件开发挑战赛全攻略

【代码】IDM插件开发挑战赛全攻略。

2025-09-27 22:53:18 356

获取中国行政地区表sql文件

获取中国行政地区表sql文件

2025-10-02

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除