logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

【设计模式笔记13】:工厂方法模式示例代码

本文通过电视机生产示例展示了工厂方法模式的实现。模式包含四个核心角色:抽象产品(Product)、具体产品(ConcreteProduct)、抽象工厂(Creator)和具体工厂(ConcreteCreator)。客户端可通过两种方式创建产品:直接实例化具体工厂(存在耦合)或采用XML配置+Java反射机制(推荐方式)。后者通过读取配置文件动态创建工厂实例,真正实现了"对修改关闭,对扩展

文章图片
#设计模式#工厂方法模式#java +1
【OS笔记11】:进程和线程9-死锁及其概念

本文摘要:死锁是指多个进程因竞争有限资源而陷入无限等待的状态。文章通过两个实例分析死锁的产生过程:1)进程A和B分别占用CD-ROM和打印机后互相请求对方资源;2)进程P1和P2通过不当的P/V操作占用信号量形成循环等待。死锁的根本原因是资源不足,直接原因是进程执行顺序不当。文中用进程推进图形象展示了危险区域,说明不当的推进顺序会导致系统进入死锁状态,而合理的资源分配可以避免这种情况。

文章图片
#操作系统
leetcode189:轮转数组(原地后移数组的最佳实践解法)

本文介绍了LeetCode 189题"轮转数组"的最佳解法——三次翻转法。该方法通过三次局部或整体的翻转,实现数组原地向右移动k个位置,空间复杂度为O(1)。具体步骤为:1)整体翻转数组;2)翻转前k个元素;3)翻转剩余元素。相比传统解法,该方法避免了使用额外空间且时间复杂度为O(N)。文章通过示例演示了翻转过程,并提供了Java代码实现,强调了预处理k值的重要性。该解法巧妙高

文章图片
#算法#数据结构#leetcode +1
leetcode102:二叉树的层序遍历(队列实现)

本文介绍了二叉树层序遍历(BFS)的实现方法。与深度优先遍历不同,层序遍历使用队列按层次访问节点:首先将根节点入队,然后循环处理队列中的节点,在每层开始时记录当前层节点数,依次将子节点入队。该方法时间复杂度为O(N),空间复杂度为O(W),其中N为节点数,W为树的最大宽度。关键点在于通过队列实现BFS,并通过固定当前层节点数来确保分层输出。代码使用Java实现,利用LinkedList作为队列,最

文章图片
#leetcode#算法#java
【MySQL篇10】:四种分库分表详解

分库分表是应对海量数据的有效方案,主要分为垂直和水平两种方式。垂直拆分按业务或字段划分,分别形成独立数据库或表,适用于业务模块清晰或字段访问频率差异大的场景。水平拆分依据数据行规则分散数据到多个库表,适合处理海量数据。两种方式各有优缺点:垂直拆分隔离性好但跨库操作复杂,水平拆分扩展性强但分片规则设计难度大。实际应用中常将两种方式结合使用,根据业务特点选择最合适的分片策略,以提升系统吞吐量和可扩展性

文章图片
#mysql#oracle#数据库 +3
leetcode11:盛最多水的容器(木桶效应启发的贪心思路与双指针实现)

摘要:LeetCode 11题要求找到两条垂线构成的最大容器面积。通过木桶效应启发,将问题转化为寻找最优左右边界组合。采用双指针算法,初始时左右指针分别指向数组首尾,每次移动较短边的指针以寻求可能的更大面积,确保O(n)时间复杂度。关键点在于移动长边不会增加面积,而移动短边可能获得更大面积。代码实现简洁高效,空间复杂度为O(1),相比暴力枚举的O(n²)有显著优化。

文章图片
#leetcode#算法#数据结构 +1
ReentrantLock 的 lock() 和 tryLock() 方法区别

本文对比了ReentrantLock的lock()和tryLock()方法的核心区别:lock()会阻塞线程直到获取锁,无返回值;tryLock()非阻塞,立即返回获取状态。从实现上看,lock()通过AQS队列等待,而tryLock()仅尝试一次CAS操作。使用场景上,lock()适合必须获得锁的情况,tryLock()适合可选锁的高并发环境。注意事项包括:tryLock()必须检查返回值,lo

文章图片
#java
【深度剖析】:结合 Spring Bean 的生命周期理解 @PostConstruct 的原理

本文深入解析了Spring开发中常用的@PostConstruct注解。首先指出它是JSR-250规范的一部分,而非Spring原生注解。重点分析了其与构造函数的区别:构造函数执行时依赖注入尚未完成,而@PostConstruct方法执行时所有依赖已就绪。文章详细阐述了Spring Bean的生命周期,说明@PostConstruct在初始化阶段由CommonAnnotationBeanPostP

文章图片
#spring#java#后端
【分布式 | OAuth2.0】以微信登录小红书为例理解 OAuth2.0 全流程

OAuth 2.0是一种安全授权协议,通过令牌机制实现第三方应用在有限权限和时间内访问用户资源。以微信登录小红书为例,OAuth 2.0流程包括:用户授权→微信发放临时授权码→小红书换取访问令牌→获取用户信息。该协议的核心是用临时令牌代替密码,确保权限可控且安全。主要优势包括避免密码泄露、权限限制和临时访问,解决了传统密码共享的安全隐患。OAuth 2.0本质是授权而非认证协议,实现了"

文章图片
#分布式#后端#安全架构
【MySQL | 第11篇】一条SQL查询语句的执行全流程简析

这篇笔记详细解析了一条SQL查询语句在MySQL内部的完整执行流程。从宏观架构上,MySQL分为Server层和存储引擎层两大模块。具体执行过程包括:1)连接器建立TCP连接并验证权限;2)查询缓存检查(MySQL 8.0已移除该功能);3)解析器进行词法和语法分析;4)优化器基于成本评估选择最优执行计划;5)执行器调用存储引擎接口获取数据;6)存储引擎(如InnoDB)通过索引或全表扫描检索数据

文章图片
#mysql#sql#数据库 +1
    共 38 条
  • 1
  • 2
  • 3
  • 4
  • 请选择