logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

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
【Redis场景题 | 第一篇】使用 Redis 的 List 实现缓存分页信息(模拟 limit offset 的 SQL 语句)

Redis List分页基于双向链表实现,通过LRANGE命令快速查询指定范围元素,适用于热点数据和小范围分页场景。核心优势包括性能稳定(微秒级响应)、实现简单和有序性保障,特别适合最新文章、评论等按时间排序的分页需求。实现时需注意分页索引计算(start=(pageNum-1)pageSize, stop=pageNumpageSize-1)和辅助命令如LLEN获取总页数。但List分页存在索引

文章图片
#缓存#redis#list +1
如何解决 CAS 的 ABA 问题:从版本号机制到 AtomicStampedReference 深度解析

本文深入探讨了CAS机制中的ABA问题及其解决方案。ABA问题指变量值从A变为B又变回A时,CAS无法识别中间状态变化,可能导致逻辑错误。文章指出加锁会违背无锁编程初衷,推荐通过版本号机制解决。Java的AtomicStampedReference将值和版本号封装为Pair对象,利用原子指令保证两者同时更新,有效拦截ABA问题。文末还介绍了更轻量的AtomicMarkableReference作为

文章图片
#jvm#java#后端
JVM 冷门面试题:Java 中所有的对象都在「堆」上分配吗?

摘要: 传统认知认为Java对象都在堆上分配,但随着JIT编译器优化技术的发展,这一结论不再绝对。通过逃逸分析,JIT能识别未逃逸对象(仅方法内部使用),并采用标量替换技术将其拆解为基本数据类型,直接分配在栈帧或寄存器中,避免堆内存分配和GC压力。HotSpot实际实现中并未真正进行栈上分配,而是通过标量替换优化。此外,需注意: DirectByteBuffer对象本身在堆,数据在堆外; JDK8

文章图片
#jvm#java
【MySQL | 第13篇】Redo Log、Binlog 之间的联系与「两阶段提交」的底层逻辑

本文深入解析MySQL中redo log和binlog的核心差异与协作机制。redo log采用循环写入方式,确保事务持久性,数据落盘后即可覆盖旧日志;binlog则采用追加写入,完整记录所有历史变更以支持主从同步和数据恢复。关键的两阶段提交协议通过XID标识事务,确保redo log和binlog的原子性,防止主从不一致:prepare阶段写入redo log,然后写入binlog,最后comm

文章图片
#mysql#数据库#后端 +1
网页端 AI 对话的“打字机”式输出效果,为什么首选 SSE 协议?

摘要: AI流式输出场景(如ChatGPT逐字显示)首选SSE协议,因其单向推送特性完美契合需求。相比HTTP轮询(含HTTP/2)的无效请求和延迟问题,SSE通过单次HTTP连接实现实时低开销推送;而WebSocket的双向通信能力在此场景属过度设计,维护成本高。SSE基于原生HTTP,开发简单,是性能与架构的最优解。

文章图片
#后端#网络协议#http +1
【计算机网络 | 第八篇】循环冗余校验(CRC)

摘要:循环冗余检验(CRC)是数据链路层广泛使用的差错检测技术。其原理是在数据M后添加n位冗余码(FCS),通过模2除法计算得出。接收端用相同除数P校验,若余数为0则接受帧,否则丢弃。CRC能实现无差错接受,但需配合确认和重传机制才能达到可靠传输。常用生成多项式包括CRC-16、CRC-CCITT和CRC-32等。CRC算法虽不能定位具体错误,但通过合理选择P可确保极低的漏检率。

文章图片
#计算机网络#网络
    共 32 条
  • 1
  • 2
  • 3
  • 4
  • 请选择