自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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

原创 JMeter 性能测试实战笔记

线程组”是用来模拟并发用户的核心元件。它决定了有多少个“虚拟用户”同时去请求您的服务。

2025-07-24 18:33:35 1058

原创 浅谈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

原创 在 macOS 上安装和测试 LibreOffice

在 macOS 上安装和测试 LibreOffice 非常简单。.dmg。

2025-07-07 17:11:02 1668

原创 受检异常 (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

原创 mac 终端 code 命令打开 vscode,修改 cursor占用

cursor 太不要 face 了,小三都想霸占正主的地位!

2025-04-11 10:12:19 895

原创 Spring Boot启动时打印所有容器信息

【代码】Spring Boot启动时打印所有容器信息。

2025-04-08 15:33:24 237

原创 git 统计指定时间后,指定作者提交的代码行数

origin/dev替换为自己的分支名,如果经常统计不同的分支,这个命令也可设置成参数。

2024-12-06 14:52:10 778

原创 @Order详解 | Spring

@Order注解中,值越小优先级越高,越先执行默认值Integer.MAX_VALUE

2024-11-06 11:02:27 1099 1

原创 Java生成指定范围的随机数 | Random

【代码】Java生成指定范围的随机数 | Random。

2024-07-24 16:31:39 252 1

原创 一台电脑生成两个ssh,绑定两个GitHub账号

一台电脑生成两个ssh,绑定两个GitHub账号

2023-11-08 22:31:17 711 2

原创 Git要提交到B分支。但是误提交到A分支,然后推送到远程仓库。然后撤回并重新提交到B分支。

嘻嘻哈哈学技术

2023-10-19 18:14:08 900

原创 Tomcat历史版本下载地址(Tomcat7或更早)

Tomcat历史版本下载,图文并茂

2023-10-09 09:47:54 6760 1

原创 PostMan、ApiFox等工具Post请求中@RequestParam和@RequestBody的混合使用如何传参

嘻嘻哈哈学技术

2023-09-27 14:37:36 4484 1

原创 Java函数式接口(Consumer、Function、Predicate、Supplier)详解及代码示例

Java函数式接口详解

2023-09-25 22:08:47 688

原创 [No tests were found] Spring Boot单元测试报错

嘻嘻哈哈学技术

2023-09-19 16:11:18 289

原创 Spring Cloud Alibaba(Nacos+Open Feign)微服务项目如何在本地调试,每次都调用本地的服务?

嘻嘻哈哈学技术

2023-09-18 21:22:56 1366

原创 Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘c

嘻嘻哈哈学技术

2023-09-12 21:54:42 394

原创 Spring Boot @Value读不到Nacos配置中心的值。(properties配置文件)

嘻嘻哈哈学技术

2023-09-12 21:37:09 1665

原创 java.lang.IllegalStateException: Unable to find a @SpringBootConfiguration, you need to use @Context

嘻嘻哈哈学技术

2023-09-12 21:28:25 517 1

空空如也

空空如也

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

TA关注的人

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