- 博客(153)
- 收藏
- 关注
原创 Java Boy 的 Python 历险记:为什么我的代码顺序这么重要?
特性JavaPython代码执行方式编译后执行解释执行顺序重要性不重要(编译器扫描)重要(逐行执行)前向引用自动处理需要技巧类型注解检查编译时定义时(可延迟)# 为什么 Python 不能像 Java 一样?# 为什么需要这么多技巧?# 为什么同一个文件里规则还不一样?
2025-11-08 11:47:38
363
原创 如何理解Java Map 中的 Entry
Map.EntryMap.Entry是Map中键值对的抽象表示,提供了一种方便的方式来访问和操作键值对。通过entrySet()获取所有Map.Entry,可以高效地遍历和修改Map的内容。理解Map.Entry的关键是将其看作键值对的“最小单元”,它让Map的操作更直观和灵活。
2025-07-25 09:26:29
553
原创 浅谈MySQL SQL优化的底层原理
方面原理优化建议索引原理B+树结构,按页存储(16KB)合理设计联合索引,覆盖索引,避免函数索引访问路径全表扫描 vs 索引扫描关注执行计划type和key字段Join 执行嵌套循环连接,驱动表选择影响大小表驱动大表,有合适索引排序原理使用堆排序,可能写磁盘临时表建索引支持ORDER BY分页原理OFFSET 越大越慢游标分页替代深分页临时表机制内存表(max_heap_table_size) vs 磁盘表避免大规模排序/分组缓存命中。
2025-07-18 11:38:38
734
原创 macOS 字体管理全攻略:如何查看已安装字体及常见字体格式区
🍎 macOS 字体管理简明指南 本文介绍在 macOS 中查看、管理字体的方法及常见字体格式区别: 查看字体 图形界面:使用「字体册」App(Font Book) 终端命令:通过 ls 或 find 查找 /Library/Fonts 等目录 字体格式对比 .ttf:兼容性强,适合日常使用 .otf:支持高级排版功能,适合设计/印刷 .ttc:多字体集合(如系统内置字体) 安装/卸载 双击安装或通过终端复制到 ~/Library/Fonts/ 卸载通过字体册右键移除 总结:字体册适合普通用户,终端适合开
2025-07-17 18:30:52
2183
原创 详解彩信 SMIL规范
以下内容将系统地讲解彩信 MMS(Multimedia Messaging Service)中使用的 SMIL(Synchronized Multimedia Integration Language)规范,涵盖历史、语法结构、在彩信中的裁剪与扩展、常见实现细节以及最佳实践。• SMIL 是 W3C 发布的 XML-based 标记语言,用于“时间轴 + 版面”方式集成多媒体(图⽚、⾳频、视频、文字)。• 原生规范:SMIL 1.0(1998)、2.0(2001)、3.0(2008)。
2025-07-14 15:45:06
698
原创 Microsoft Word 中 .doc 和 .docx 的区别
解释 Microsoft Word 中 .doc 和 .docx 文件格式的区别。这些格式都是 Word 处理文档的标准,但它们在结构、兼容性和功能上存在显著差异。另外,您可以使用在线工具(如 Adobe Acrobat)将两者转换为 PDF,以保留格式并提高兼容性。
2025-07-11 17:14:39
6498
原创 MySQL 事务四大特性
MySQL事务遵循ACID四大特性: 1)原子性:事务要么完全执行,要么全部回滚; 2)一致性:事务前后数据库保持合法状态; 3)隔离性:支持4种隔离级别控制事务间影响(默认REPEATABLE READ); 4)持久性:提交后数据永久保存,通过日志机制保障。这些特性共同确保了数据的可靠性和完整性,典型应用如银行转账需同时满足所有特性。
2025-07-09 13:50:25
338
原创 受检异常 (Checked Exceptions)和非受检异常 (Unchecked Exceptions)的区别
Java中的异常分为受检异常(Checked Exceptions)和非受检异常(Unchecked Exceptions)。受检异常必须在编译时处理,继承自Exception类,代表外部资源问题(如IOException);非受检异常在运行时处理,继承自RuntimeException,通常由程序逻辑错误引发(如NullPointerException)。主要区别在于处理时机和继承层次,正确使用异常处理能提升程序健壮性。
2025-07-04 11:02:04
397
原创 通俗理解 QPS 和 TPS
QPS和TPS是衡量系统性能的两个关键指标。QPS(每秒查询数)反映系统接收的请求量,如1秒500次接口访问;TPS(每秒事务数)表示成功处理的事务量,如1秒完成200笔支付。两者区别在于:QPS统计请求数(不一定成功),TPS只计成功事务。典型场景中,Web接口关注QPS,数据库和支付系统更重视TPS。通过奶茶店类比:顾客下单速度是QPS,实际完成订单数是TPS。开发时应同时监控这两个指标,QPS评估系统承压能力,TPS识别处理瓶颈。
2025-07-01 17:38:57
809
原创 为什么Netty 性能高
零拷贝是指在网络传输数据时,避免了 CPU 将数据从一个内存区域复制到另一个内存区域的过程,从而减少了不必要的上下文切换和内存复制,提高了数据传输效率。:Netty 提供了高度可定制和可扩展的协议栈,通过 ChannelPipeline 机制,用户可以轻松地添加或删除编解码器、处理器等,以支持各种网络协议,而无需修改核心代码。这种分离的设计使得各个线程职责单一,互不干扰,提高了并发处理能力。它重用了缓冲区,减少了垃圾回收的压力,并避免了频繁的内存分配和释放,这对于高性能网络应用至关重要。
2025-07-01 16:29:40
332
原创 CMPP 状态报告详解:如何精准匹配每一条短信回执
CMPP协议状态报告匹配机制解析:通过Sequence_Id同步匹配请求响应,再以Msg_Id异步关联投递状态。Sequence_Id确保即时响应精准对应,全局唯一的Msg_Id则连接原始请求与最终投递结果,形成完整闭环。二者协同保障短信全生命周期的可靠追踪,是短信业务数据完整性的关键。系统需正确处理这两个标识符,才能实现精准的状态报告匹配。
2025-07-01 15:35:27
1094
原创 EasyExcel实现Excel复杂格式导出:合并单元格与样式设置实战
本文介绍了使用EasyExcel实现复杂格式Excel导出的技术方案。项目基于Spring Boot 3.2.0和EasyExcel 3.3.4,需要导出包含合并单元格和多级样式的Excel文件。关键实现包括:禁用默认表头机制,分层写入标题、表头、说明和数据行;通过SheetWriteHandler接口解决单元格合并冲突;预设固定列宽替代autoSizeColumn;在afterRowDispose中设置样式。文中详细分析了技术难点及解决方案,如合并区域冲突、列宽自适应失败等问题,并提供了完整的代码示例。该
2025-07-01 14:39:06
2338
原创 GPX、TCX、FIT:三种主流运动数据格式的全面解析
GPX、TCX和FIT是三种主流的运动数据格式,各有特点。GPX为XML格式,兼容性最佳,适合路线分享但数据单一;TCX同样采用XML,在GPX基础上增加了心率、踏频等训练数据,文件较大;FIT采用二进制格式,数据最全面且文件最小,但专属性强。GPX适合路线规划,TCX适合基础训练分析,FIT则是现代运动设备的首选,能完整保存各类运动数据。根据需求选择合适的格式,GPX用于导航分享,TCX查看基本训练指标,FIT进行深度数据分析。
2025-06-24 16:31:08
3210
原创 数学基础不好,三阶段 “精通” 法如何学好算法。
心态建设:告诉自己“我不是笨,只是缺少练习和方法”。工具准备:注册LeetCode,创建一个GitHub仓库。起步执行 (未来一个月)本周:专注“数组”主题的“简单”题。每天完成2-3道。严格执行“15分钟思考 -> 看题解 -> 独立复现 -> 写注释”的流程。下周:专注“字符串”和“链表”。…以此类推。忘掉你的数学,忘掉你“笨”的念头。从今天起,你就是一名算法的“运动员”,你要做的,就是日复一日,用正确的方法,完成你的“训练计划”。
2025-06-24 10:52:52
1810
原创 初探 Nacos 原理
Nacos 作为阿里巴巴开源的服务发现、配置和管理平台,其服务注册与发现功能是微服务架构中的核心组件。理解其底层原理对于构建稳定、高可用的微服务体系至关重要。其核心设计围绕着心跳机制、数据一致性协议、事件推送以及客户端与服务端的协同工作展开。Nacos 服务注册与发现的底层原理剖析。一、 核心架构与角色。
2025-06-23 23:13:22
795
原创 ReentrantLock详解
ReentrantLock是Java并发包JUC下的可重入锁类,实现了Lock接口,比synchronized更灵活强大。其主要特性包括: 可重入性:同一线程可多次获取已持有的锁,通过计数器实现。 与synchronized对比: 手动释放锁(需在finally中调用unlock) 支持公平/非公平锁、可中断锁获取、定时锁尝试等高级功能 性能与优化后的synchronized接近 核心用法: 标准范式需在finally中释放锁 可配置公平锁(性能较低但避免饥饿) 提供lockInterruptibly()响
2025-06-23 15:51:33
1478
原创 Java Thread中 join 方法详解
摘要:Java中的join()方法用于线程同步,让调用线程等待目标线程执行完毕。该方法有三个重载版本:无限等待、带超时等待和精确时间控制。其底层通过synchronized和wait()/notifyAll()机制实现,适用于协调线程执行顺序的场景,如数据初始化、分块处理等。使用时需处理可能抛出的InterruptedException。示例展示了等待单个或多个线程完成的用法,体现了该方法在多线程编程中的重要性。
2025-06-22 12:23:47
1709
原创 CMPP协议深度解析:网关消息幂等性保障与客户端状态报告匹配机制
本文深入解析CMPP协议中保障消息幂等性和状态报告匹配的关键机制。CMPP网关通过Msg_Id实现消息发送的幂等性,当SP重试相同请求时,网关会返回原始Msg_Id而非创建新记录,确保用户只收到一次短信。状态报告匹配方面,SP需将发送时获取的Msg_Id与业务信息关联存储,在收到异步状态报告后通过提取的Msg_Id进行精准匹配,更新短信投递状态。Msg_Id作为贯穿CMPP消息生命周期的核心标识符,既是网关实现幂等性的关键,也是客户端完成状态报告匹配的纽带,保障了整个短信系统的可靠运行。
2025-06-22 11:13:47
1024
原创 Java 锁升级的过程详解
Java锁升级过程包括从无锁状态到偏向锁、轻量级锁最终升级为重量级锁。偏向锁适用于单线程重复访问场景,通过标记线程ID减少同步开销;当出现竞争时升级为轻量级锁,使用CAS和自旋避免阻塞;若竞争激烈则升级为重量级锁,依赖操作系统互斥量实现,涉及线程阻塞和唤醒。锁升级是单向不可逆的,JVM会根据并发程度自动选择最优锁机制,其中偏向锁和轻量级锁是性能优化的关键。理解该机制有助于编写高效并发程序。
2025-06-22 10:49:30
605
原创 如何理解 CMPP网关的作用
CMPP网关是中国移动短信业务的核心接入点,负责连接短信服务商(SP/CP)与移动网络。它基于CMPP协议实现短信提交、下发、状态查询等功能,充当协议转换和数据路由的枢纽。CMPP网关通过认证接入、流量控制、计费统计等机制,确保短信业务的安全稳定运行。在通信流程中,它既是SP/CP发送短信的出口,也是接收用户回复和状态报告的入口,相当于中国移动短信网络与外部服务商之间的"门户"。这种架构设计保证了大规模短信业务的高效处理和可靠传输。
2025-06-21 18:53:49
856
原创 自定义 Spring starter 的原理详解
它首先通过【模块化】约定来组织代码和依赖,然后利用【自动发现机制】让 Spring Boot 找到你的配置,接着通过【条件化配置】智能地决定是否应用这些配置,同时使用【类型安全的属性绑定】来优雅地处理外部化配置,最后通过【元数据生成】为最终用户提供顶级的开发体验。这套组合拳共同构成了 Spring Boot 强大而灵活的生态系统基石。
2025-06-21 15:26:01
948
原创 自定义 Spring starter
模块:这是核心模块,包含了所有自动配置的代码、属性类和的实现。例如。starter模块:这是一个“空壳”模块,它唯一的职责就是通过pom.xml依赖模块和其他需要的库。这是提供给最终用户使用的模块。例如。这种分离是最佳实践,因为它可以避免不必要的依赖传递,并清晰地划分了职责。构建:在父项目 () 的根目录下运行,将你的 Starter 安装到本地 Maven 仓库。使用:创建一个全新的 Spring Boot 项目来测试你的 Starter。添加依赖:在测试项目的pom.xml。
2025-06-21 15:16:36
943
原创 Spring 的IoC 和 AOP
展现了从思想 -> 技术 -> 实践的完整知识体系。秀出了你对底层原理(BeanDefinition, 动态代理)的了解。表达了你对最佳实践(构造函数注入)的思考。证明了你对框架整体性(IoC与AOP的协同)的理解。
2025-06-20 22:36:34
1159
原创 Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘c
嘻嘻哈哈学技术
2023-09-12 21:54:42
394
原创 java.lang.IllegalStateException: Unable to find a @SpringBootConfiguration, you need to use @Context
嘻嘻哈哈学技术
2023-09-12 21:28:25
517
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅