自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(61)
  • 收藏
  • 关注

原创 Redis热Key——大厂是怎么解决的

本文探讨了高并发场景下的热Key问题解决方案。热Key问题具有突发性和动态变化特点,传统扩容和全节点冗余成本高。解决方案主要包含两个组件:热点识别和本地缓存。本地缓存的优势在于源头解决、速度快且节省带宽。难点在于实时识别、资源效率、内存限制和数据一致性。京东采用全局热点情报局方案,精度高但复杂度高;得物改造Redis内核实现零侵入性方案;B站采用客户端探测方案成本低但全局视野有限。方案选型需权衡准确性、实时性、一致性和成本,本质是解决集中式存储与分布式流量的不匹配问题。

2026-01-08 17:26:28 1051

原创 JavaSE——Object

2025-07-11 18:55:46 232

原创 JavaSE——面向对象基础

2025-07-11 17:45:58 301

原创 JavaSE——数据类型

2025-07-11 12:36:18 313

原创 JavaSE——Java特点

2025-07-11 11:42:13 148

原创 MySQL——常用程序and主从复制

2025-07-11 10:51:38 207

原创 ubuntu22上安装redis6

本文详细介绍了在Ubuntu 22.04系统中通过Docker 26安装Redis 6.2.6的完整步骤。首先创建持久化目录和配置文件,设置访问密码和AOF持久化。当出现Docker未安装问题时,提供了完整的Docker安装方案。在拉取Redis镜像时遇到网络超时,通过配置腾讯云镜像加速器解决。启动容器后发现配置文件语法错误,修正后成功运行。最后通过Redis-cli测试验证安装,并给出内存限制、安全加固等优化建议,确保Redis服务具备数据持久化、密码认证等生产环境所需特性。

2025-06-27 17:09:25 1005

原创 连续子数组动态和(最大子数组和)

摘要:动态规划解法(Kadane算法)的核心思想是使用dp表记录以当前元素结尾的子数组最大和,同时用ret变量记录全局最大值。通过比较当前元素与前一个dp值的大小关系,逐步更新dp表和ret,最终得到整个数组的最大子数组和。这种解法时间复杂度为O(n),空间复杂度为O(1)。

2025-06-26 22:01:09 169

原创 事件循环(Event Loop)机制对比:Node.js vs 浏览器​

浏览器与Node.js事件循环机制对比 两者均采用“任务队列+循环处理”模型,但存在关键差异: 1️⃣ 任务类型 浏览器:宏任务(setTimeout/DOM事件)与微任务(Promise);Node.js:分阶段宏任务(Timers/I/O/Check)和优先级的微任务(process.nextTick>Promise) 2️⃣ 执行顺序 浏览器:执行1个宏任务→清空微任务→渲染→循环 Node.js:6阶段循环(Timers→Poll→Check等),每阶段切换前先处理process.nextTick和

2025-06-26 21:37:17 865

原创 MySQL 锁的分类

MySQL锁机制主要分为全局锁、表级锁和行级锁。全局锁用于备份,表级锁包括普通表锁和元数据锁,行级锁含记录锁、间隙锁等。按兼容性分为共享锁和排他锁,按实现方式有悲观锁和乐观锁。此外还有意向锁、自增锁等特殊锁。InnoDB支持行级锁和表锁,提供良好并发性能,而MyISAM仅支持表锁。死锁由InnoDB自动检测处理。不同存储引擎的锁支持程度直接影响数据库并发性能。

2025-06-26 20:04:50 484

原创 进程和线程的区别?

进程是孤勇者,线程是合伙闯祸。协程像忍者,来无影去无踪!

2025-06-26 19:42:56 1268

原创 详解死锁——你必须知道的一些点

摘要: 死锁指多个线程因互相等待对方释放资源而陷入阻塞的状态。产生死锁需满足四个条件:互斥、请求与保持、不可剥夺、环路等待。通过Java代码演示了synchronized和ReentrantLock两种锁引发的死锁场景。排查死锁可使用JDK工具(如jstack、jconsole、jvisualvm、jmc),其中图形化工具更直观。解决方案包括: 顺序锁:统一线程获取锁的顺序,避免环路等待; 轮询锁:尝试获取锁失败时释放已有锁,通过最大重试次数和随机等待时间优化,防止死循环和线程饿死。 最终强调破坏“请求与保

2025-06-26 16:35:08 910

原创 如何保证 ArrayList 的线程安全

线程安全口诀解析:1)同步包装(synchronizedList)适用于读写均衡场景;2)写时复制(CopyOnWriteArrayList)适合读多写少;3)弃用过时的Vector;4)精细控制时使用手动锁或显式锁。决策要点:读多用复制,均衡用同步包,精细用显式锁,Vector永不使用。根据具体场景选择最优方案,兼顾线程安全和性能。

2025-06-26 15:39:28 388

原创 篇章十 论坛系统——业务开发——板块和帖子

该文介绍了论坛系统中板块管理和帖子发布功能的实现。主要包括:1) 通过Mapper、Service和Controller三层架构实现了板块查询功能,支持按数量查询板块;2) 帖子发布功能包含用户发帖数统计、板块发帖数统计等业务逻辑,使用事务确保数据一致性;3) 各层通过单元测试验证功能,并提供了完整的API接口和前端交互实现。系统采用Spring Boot框架,包含参数校验、异常处理、日志记录等机制,实现了论坛核心功能模块。

2025-06-16 01:42:22 538

原创 篇章九 论坛系统——业务开发——主页结构 AND 个人中心

本文主要介绍了用户管理系统的后端实现方案。系统分为主页结构和个人中心两大模块,重点阐述了用户信息获取的完整流程:从Mapper层数据库查询,到Service层业务逻辑处理,再到Controller层接口实现。通过登录拦截器实现权限控制,拦截未登录请求并重定向到登录页。系统采用分层架构设计,包含参数校验、异常处理、单元测试等环节,同时提供了Swagger接口文档支持。文章详细展示了从持久层到表现层的代码实现,包括XML映射文件、DAO接口、服务层逻辑和控制层接口,体现了完整的后端开发流程和规范。

2025-06-15 15:17:39 508

原创 篇章八 论坛系统——业务开发——登录

本文详细介绍了用户登录功能的实现流程,主要包括:1)接口规范设计,定义DAO层和Service层接口;2)Service层实现,包含用户名查询和登录验证逻辑(参数校验、密码加密比对);3)单元测试示例;4)Controller层API开发;5)前后端联调。系统采用MD5加盐加密存储密码,并通过统一异常处理机制返回错误信息。整个流程遵循分层架构设计,从数据库操作到前端交互形成完整闭环。

2025-06-15 01:10:36 310

原创 篇章七 论坛系统——业务开发——前端

摘要:本文介绍前端开发技术要点,包括Bootstrap和Tabler框架的使用。主要内容涵盖:1)Toast提示组件的用法;2)前端资源集成方法,即将准备好的资源文件复制到项目目录;3)前端代码编写规范;4)前后端数据交互的实现方式。文章提供了Bootstrap 5.3官方文档和Tabler管理模板的参考链接,可作为前端开发的参考资料。

2025-06-14 23:48:17 588

原创 篇章六 论坛系统——业务开发——实现业务功能

本文介绍了基于MyBatis的论坛用户注册功能实现。系统采用分层架构,包含Mapper、Service和Controller三层: Mapper层:使用MyBatis实现数据库操作,重点讲解了: 查询用户信息的SQL配置,包括参数绑定和防SQL注入 ResultMap的作用及复杂对象映射(一对一/一对多) 嵌套结果映射与嵌套查询的对比及优化策略 N+1问题的产生原因及解决方案(JOIN预加载/批量延迟加载) Service层:实现核心业务逻辑,包括: 参数校验、用户名查重 密码加密(MD5加盐) 用户默认值

2025-06-14 20:07:23 1139

原创 篇章六 系统性能优化——资源优化——CPU优化(3)

本文介绍了线程池监控、故障处理及并发优化策略。使用Micrometer监控线程池关键指标(活跃线程数、队列大小等),设置阈值报警规则;通过自定义拒绝策略实现任务拒绝时的日志记录、Kafka转存等处理。针对不同场景提供优化方案:I/O密集型推荐Java21虚拟线程,其轻量级特性适合高并发;CPU密集型建议使用传统线程池、Fork/Join框架或并行流,并优化算法数据结构。文章还介绍了JMeter性能测试工具的使用方法,强调根据任务类型选择合适并发策略可显著提升系统性能。

2025-06-13 18:50:44 1509

原创 篇章五 系统性能优化——资源优化——CPU优化(2)

本文探讨了Java高并发编程中的关键技术与优化策略。第一部分介绍了两种高级并发模式:工作窃取模式通过ForkJoinPool实现任务高效分配,适合任务数量不均的场景;结构化并发模式通过Java19+的StructuredTaskScope简化任务管理,提供统一异常处理。第二部分分析了性能瓶颈突破方案,包括锁优化(LongAdder替代synchronized)、分段锁与无锁编程技术对比,以及各类并发数据结构的特性和适用场景。第三部分深入探讨了对象池、缓存更新的优化方案,以及伪共享问题的原理与解决方案。通过合

2025-06-13 18:24:06 1134

原创 篇章五 系统性能优化——资源优化——CPU优化(1)

本文深入探讨了高并发系统的资源优化策略与技术实现方案。在CPU优化方面,详细解析了线程池参数配置方法,包括核心线程数、最大线程数及任务队列容量的黄金法则,并提供了基于CPU核心数和I/O阻塞时间的计算公式。内存优化重点介绍了内存池技术的应用。网络优化则强调了高效网络协议的选择。 针对异步处理场景,文章对比了WebFlux与传统Servlet3.0异步支持的差异,分析了Netty与Tomcat的核心区别。特别探讨了响应式编程的优势,包括非阻塞I/O、回压机制和复杂数据流处理能力。

2025-06-13 12:42:57 1082

原创 篇章四 系统性能优化

本文探讨了如何优化系统架构以同时管理50个微信账号并实现2秒内的响应延迟。核心方案采用分布式架构,通过以下三个关键组件实现:分布式消息队列(RabbitMQ/Kafka)分布式缓存(Redis)分布式数据库系统通过负载均衡、异步处理和智能缓存策略,实现了高并发处理能力和低延迟响应。监控指标显示,该架构可将热点数据访问速度提升5-10倍,减少70%以上的数据库查询,支持10万+TPS的吞吐量,并保证99.95%的可用性。

2025-06-12 17:32:39 1244

原创 篇章三 对话引擎设计

本文提出了一种基于上下文的多轮对话管理系统实现方案。系统采用对话树结构管理流程,包含DialogueState(存储响应文本和状态转移映射)和DialogueManager(核心处理逻辑)两个核心类。通过哈希表存储对话状态节点,栈结构维护上下文,实现了状态转移、意图解析和对话历史追踪功能。文中提供了完整的Java实现代码,包括对话树初始化、用户输入处理和简单的关键词意图识别逻辑,并展示了JSON格式的配置方案。该系统支持通过配置文件灵活定义对话流程,适用于需要管理复杂分支对话的场景。

2025-06-12 03:09:05 821

原创 篇章二 防微信封号的机制的三种技术策略

摘要:本文介绍了优化微信账号使用的技术策略,包括模拟正常用户行为(如控制操作频率、模拟设备信息)、管理登录环境(更换IP地址、维护账号活跃度)以及合规监控(遵守平台规定、实时监控指标)。通过梯度设置聊天频率、隔离支付行为、定期更新状态等措施降低账号风险,同时建立申诉机制应对封号情况。这些方法旨在确保账号行为符合平台规范,避免被系统识别为异常操作。

2025-06-12 01:32:35 1093

原创 篇章一 实现个人微信登录网页版聚合平台

微信登录接入指南:基于OAuth2.0协议的微信授权登录需先在微信开放平台注册应用并获取AppID和AppSecret。授权流程包括用户扫码授权、获取临时code、换取access_token三个步骤,支持网页跳转和内嵌JS两种实现方式。开发者需注意授权域名匹配、参数编码和安全防护,推荐将敏感数据存储于服务器端。本文详细介绍了授权流程、参数说明、错误处理及第三方SDK集成方案,并强调access_token的刷新机制和用户数据获取范围。

2025-06-12 01:24:06 1177

原创 篇章五 论坛系统——业务开发——前期准备——公共代码

摘要:本文介绍了Java论坛系统开发中的公共代码实现,主要包括:1) 使用枚举类定义统一状态码(ResultCode);2) 封装通用返回结果类(AppResult)实现成功/失败响应;3) 自定义异常处理机制(ApplicationException)及全局异常捕获(GlobalExceptionHandler);4) 集成Springfox Swagger实现API文档自动生成和Postman测试;5) 开发MD5加密、UUID生成等实用工具类。这些公共组件为系统提供了标准化响应格式、统一异常处理和便捷

2025-06-11 12:48:36 1108

原创 篇章四 论坛系统——业务开发——前期准备——公共组件

本文详细介绍了基于SpringBoot和MyBatis的项目开发配置过程。主要内容包括:1.确定SpringBoot版本并配置数据源(Druid);2.通过MyBatis Generator插件自动生成实体类、Mapper接口和XML映射文件;3.配置MyBatis扫描路径和YAML文件;4.进行数据库连接测试和CRUD操作测试。文中提供了完整的POM依赖配置、Generator配置文件模板以及实际应用示例,展示了如何高效搭建MyBatis数据库访问层,并推荐使用MyBatisX插件提升开发效率。

2025-06-11 12:32:04 388

原创 篇章三 论坛系统——环境搭建

本文详细介绍了Java项目开发环境的搭建与配置流程。首先要求确认JDK 1.8、MySQL 5.7.x和Maven 3.8.X+等基础环境,然后逐步完成Maven安装配置、IDEA插件安装(、Gitee仓库创建与克隆。重点说明了项目创建时的Maven工程识别、配置调整、YAML配置文件使用、日志系统配置等关键环节。最后演示了通过git命令行进行代码提交推送的全过程,包含状态查看、文件添加、本地提交和远程推送等操作命令及输出结果。整个流程涵盖了从环境准备到项目部署的完整开发链路。

2025-06-10 16:08:30 998

原创 篇章二 论坛系统——系统设计

本文主要讲了如何从需求文档里或者是现有论坛里分析出设计表所需要的字段,并且编写sql语句创建数据库和表

2025-06-09 23:05:39 682

原创 篇章一 论坛系统——前置知识

本文主要介绍了软件开发需求分析阶段应该做的事情

2025-06-09 18:53:02 1033

原创 篇章十 数据结构——排序

快速排序整体的综合性能和使用场景都是比较好的,所以才敢叫快速排序时间复杂度:O(N*logN)空间复杂度:O(logN)稳定性:不稳定归并的缺点在于需要O(N)的空间复杂度,归并排序的思考更多的是解决在磁盘中的外排序问题。时间复杂度:O(N*logN)空间复杂度:O(N)稳定性:稳定。

2025-06-09 10:44:19 1070

原创 篇章十 数据结构——Java对象的比较

此处讲解了Java种比较对象的三种方式,equals和comparable和comparator

2025-06-07 12:16:58 981

原创 篇章九 数据结构——优先级队列——堆

此文主要讲解了堆及底层数据结构为堆的优先级队列并且为topk问题提供了三种思路

2025-06-07 00:50:52 1069

原创 篇章八 数据结构——二叉树

主要讲解了二叉树相关知识和习题

2025-06-05 21:56:32 822

原创 篇章七 数据结构——栈和队列

此处用前面学过的线性表的知识,模拟实现了栈和队列,并且讲解了Java实现的集合类中与他们相关联的部分,并做了大量练习,以期掌握栈和队列的使用

2025-06-01 21:55:17 1298

原创 篇章六 数据结构——链表(二)

此处主要讲了LinkedList的模拟实现和具体的使用。

2025-05-28 12:06:41 1244

原创 篇章五 数据结构——链表(一)

此处讲解了链表的实现和练习题

2025-05-28 11:46:36 1126

原创 篇章四 数据结构——顺序表

本文主要讲了 ArrayList的用法,重点讲解了扩容

2025-05-26 17:44:18 1063

原创 篇章三 数据结构——前置知识(三)

此处主要介绍了部分JDK17新特性,比如yield关键字,var关键字等。然后还列举出了一些没有具体介绍的新特性,给想细致研究的人一个方向

2025-05-26 11:40:48 1041

原创 篇章三 基础——不可变类

文章主要讲了不可变类是什么,为什么需要不可变类以及怎样设计一个不可变类,还对不可变类进行一些补充,例如嵌套可变对象引用的深拷贝和防御性拷贝,大型对象采用不可变类的优化方案,以及权衡不可变类的应用时机

2025-05-26 10:45:08 1067

空空如也

空空如也

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

TA关注的人

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