自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java 接口多态与注解生命周期

接口是运行时多态的契约,通过implements实现,由JVM动态分派;注解是元数据标签,不主动执行逻辑,需编译器、APT或框架读取后才生效。RetentionPolicy分为SOURCE(编译期)、CLASS(字节码级)、RUNTIME(反射可用),默认为CLASS,若需反射读取必须显式声明RUNTIME。选型口诀:编译用SOURCE,构建用CLASS,运行用RUNTIME。

2026-10-20 11:03:47 191

原创 Redis 缓存设计理解

本文系统阐述Redis缓存设计方法论,强调“业务容忍不一致”为设计起点。从读写双维度解析穿透、击穿、雪崩、热Key等核心问题,提出“afterCommit删缓存+binlog兜底+TTL上限”的三层一致性架构,并明确一致性等级(L0~L3)需前置定义。重点强调:缓存是副本、必会丢失、操作可能失败、默认配置不可靠。通过互斥锁重建、空值占位符、Lua原子释放等实战方案,结合工程落地坑与监控清单,构建高可用缓存体系。核心信条:始终预设失败,显式处理异常路径。

2026-09-23 15:00:12 316

原创 CountDownLatch与CyclicBarrier到底底层是个啥?

<think>我们根据要求生成摘要。用户要求“根据以下内容,生成≤150字的文章摘要”。给定的内容是一篇技术文章,深入剖析CountDownLatch和CyclicBarrier的底层实现原理。我们需要生成一个简洁的摘要,不超过150字。 注意:摘要应涵盖文章的主要内容和核心观点。文章开篇有摘要部分,但我们需要根据全文生成。原文的摘要部分已经存在,但可能需要我们重新概括。用户输入是完整的文章内容,包括开头的“> 摘要:...”段落,以及后面的详细分析。因此,我们需要提炼。 要求:≤150字。需要控制字数。

2026-09-08 11:18:45 351

原创 MCP 工具调用中的常见问题与实战解决方案

MCP工具调用优化指南 核心问题:工具描述和参数Schema信息不足导致模型决策困难 解决方案: 工具区分: 明确描述使用场景和替代工具 利用annotations字段添加元数据 合并相似工具,用参数区分功能 采用动词前缀命名规范 参数优化: 枚举值必须完整列出 参数描述需包含来源和格式 设计"搜索→选择→操作"工具链 提供万能查询工具兜底 最佳实践: 工具描述需包含功能、使用场景和替代方案 参数说明应明确取值范围、来源和示例 建立清晰的工具调用链路 错误信息需指导模型修正 关键原则:工

2026-04-24 10:20:54 243

原创 大模型调用 MCP / Function Calling 全流程高频坑总表

大模型调用MCP/Function Calling高频问题摘要 本文总结了7大模块常见问题及解决方案: 工具定义层(90%问题根源) 接口语义混淆:通过差异化命名和明确场景描述解决 参数传递问题:规范参数描述格式(来源+约束+示例) 描述冗余/缺失:精简描述但保留关键信息 类型定义错误:严格校验Schema类型和必填项 枚举值缺失:强制定义enum并解释含义 默认值问题:非必填参数设置合理默认值 其他模块包括模型调用、业务逻辑、协议通信等,每个问题提供「现象+根因+解法+示例」的完整解决方案。 文章可作为上

2026-04-24 09:09:22 463

原创 Java 常见开发安全漏洞整理

本文总结了Java开发中常见的安全漏洞及解决方案,重点针对注入类漏洞(SQL注入、命令注入、XXE、表达式注入、LDAP注入、NoSQL注入)和XSS漏洞。对于每种漏洞,首先分析其产生原因,如SQL注入源于字符串拼接SQL语句、命令注入由于直接执行用户输入的系统命令等。随后提供具体的代码解决方案,如使用预编译语句防止SQL注入、ProcessBuilder替代Runtime.exec()避免命令注入、配置XML解析器防御XXE等。文章强调输入验证、最小权限原则等安全编码实践,并推荐使用安全框架和工具(如OW

2026-04-16 16:09:09 492

原创 SSE(Server-Sent Events)原理详解(二)

SSE(Server-Sent Events)是一种基于HTTP的服务端推送技术,允许服务端通过保持打开的连接持续向客户端发送文本数据。其核心是HTTP长连接与分块传输,上层定义了简单的事件流格式。客户端通过EventSource API或Fetch API接收数据,支持自动断线重连和心跳保活机制。SSE适用于实时数据推送场景,具有低延迟和浏览器原生支持的优势。

2026-03-30 12:43:51 303

原创 深入拆解:为什么 JAVA中AI 流式对话需要 SSE(一)

SSE:AI流式响应的最优解 SSE(Server-Sent Events)基于HTTP/1.1的分块传输编码机制,实现了标准化的实时数据推送。相比传统HTTP请求-响应模式(用户需等待完整响应),SSE允许服务端生成内容时立即推送每个token,显著提升用户体验。其优势包括: 协议轻量:复用HTTP连接,避免WebSocket的握手和帧头开销 标准化:内置消息边界、事件类型、自动重连等机制 单向高效:专为服务端→客户端推送场景优化 兼容性好:主流浏览器原生支持EventSource API 对比轮询/长轮

2026-03-30 12:42:21 254

原创 JVM中虚方法表是什么?

虚方法表(vtable)是JVM实现多态的核心机制,每个类在内存中维护一个方法地址表。当调用多态方法时,JVM通过对象头部的类指针找到对应的虚方法表,按声明顺序查找方法地址并执行。例如Dog类继承Animal时,虚方法表中会覆盖父类的speak()方法地址,保留未覆盖的eat()方法地址。这种机制使得animal.speak()这样的调用能在运行时动态绑定到实际对象类型(如Dog)的方法实现,而无需在编译时确定具体方法。

2026-03-26 10:19:39 287

原创 Java 核心原理汇总

本文总结了Java核心原理的三大关键部分:JVM架构、内存模型(JMM)和类加载机制。JVM架构包含类加载子系统、运行时数据区和执行引擎三大模块,详细说明了内存布局中的线程私有和共享区域。JMM解决了多线程环境下的原子性、可见性和有序性问题,重点讲解了volatile关键字的作用。类加载机制则描述了从加载到初始化的7个阶段过程,包括验证、准备和解析等关键步骤。这些核心原理构成了Java程序运行的基础框架。

2026-03-26 10:13:24 58

原创 Git Commits 类型详细指南

本文介绍了Git提交信息的10种标准类型及其使用场景: feat:新增功能或特性 fix:修复错误或问题 docs:仅文档更新 style:代码格式调整 refactor:代码重构 perf:性能优化 test:测试相关变更 build:构建系统修改 ci:CI/CD配置变更 chore:维护性工作 每种类型都包含明确的使用场景、示例和判断标准,帮助开发者规范提交信息。

2026-03-25 14:23:14 412

原创 多线程批量插入数据库:@Transactional失效原因与手动事务解决方案

摘要:本文针对Spring框架中@Transactional注解在多线程环境下失效的问题展开分析。当主线程执行前置操作后通过多线程批量插入数据时,由于事务上下文与线程绑定,子线程异常无法触发主线程事务回滚,导致数据不一致。文章通过典型失败案例(如子线程异常无法回滚主线程操作、共享连接未关闭自动提交、子线程创建新连接脱离事务控制等),揭示了事务失效的根本原因,并提出优化方案,为解决多线程事务一致性问题提供实践指导。

2026-01-29 10:26:09 693

原创 Java开发中基于IP(内网_外网)控制功能的工具与实现方案

摘要:本文介绍Java开发中基于IP控制功能的10种工具与实现方案,涵盖从基础到进阶的不同场景需求。基础工具部分包括JDK原生InetAddress类和Apache Commons Net,适合简单IP判断和子网匹配;进阶组件推荐ip2region用于精准IP归属地解析,以及Spring Cloud Config/Nacos实现动态IP规则配置。文章提供了详细的代码示例,并针对每种工具的使用场景和注意事项进行了说明,帮助开发者根据项目需求选择合适的技术方案实现内网/外网IP控制功能。

2025-12-02 09:01:37 1067

原创 产品经理一插队,我 3 小时的活干了 3 天|IT 人血泪教训

IT人常被临时任务打断工作,导致效率低下。本文分析插队任务的四大痛点:上下文切换消耗、优先级混乱、沟通内耗和资源冲突,并提出五大应对策略:1)统一派单渠道拒绝口头插队;2)设置专注时段减少干扰;3)建立任务优先级标准;4)善用工具自动化管理;5)学会温柔拒绝非紧急需求。通过规范流程、明确边界和善用工具,可将无效工作时间减少30%-50%,从被动应付转为主动掌控。

2025-12-02 08:50:27 714

原创 MySQL索引失效场景及原因总结

MySQL索引失效常见于三类场景:1.语法逻辑问题,如类型转换、左模糊查询、不等于操作、OR条件含无索引列等破坏索引有序性;2.索引设计缺陷,如联合索引不满足最左前缀、索引列参与计算;3.优化器选择,如数据量小时全表扫描更高效、SELECT*导致回表成本高、排序/分组与索引顺序不匹配等。合理设计查询语句和索引结构可有效避免索引失效。

2025-10-20 09:54:06 766

原创 MySQL中组织机构表转换为闭包表

【代码】MySQL中组织机构表转换为闭包表。

2025-04-08 09:03:28 362

原创 java项目程序正常启动没问题,debug模式报错:long time none received connection

当 Java 项目在正常启动模式下工作良好,但在调试(debug)模式下遇到 long time none received connection 错误时,这可能是由于调试模式下的某些特性或行为引起的。清除之前断点,debug模式重启。

2025-01-08 17:15:07 395

原创 记录MySQL获取分组后的第一条数据

PARTITION BY 子句定义了分组的依据,而 ORDER BY 子句指定了每组内排序的规则(例如,按 id 排序以获取最早的记录)。这个方法是先找出每个分组中的最小(或最大)主键值,然后再将这些值与原始表进行连接,以获取完整的行信息。如果找不到这样的行(即 t2.id IS NULL),那么就意味着当前行是该分组中的第一条记录。内部的子查询 subq 找到了每个分组内的最小 id 值,然后外部查询通过 JOIN 操作将这些 id 与原表中的所有列关联起来,从而返回完整的行数据。

2025-01-03 16:27:15 534

原创 2025亲测可用!docker镜像源配置记录

【代码】docker镜像源配置记录。

2024-12-25 14:01:02 721 1

原创 Java项目单体项目中事务与分布式事务的记录

就是找一个统一的事务协调者,与多个分支事务通信,检测每个分支事务的执行状态,保证全局事务下的每一个分支事务同时成功或失败即可。其中,TM和RM可以理解为Seata的客户端部分,引入到参与事务的微服务依赖中即可。将来TM和RM就会协助微服务,实现本地分支事务与TC之间交互,实现事务的提交或回滚。分布式事务产生的一个重要原因,就是参与事务的多个分支事务互相无感知,不知道彼此的执行状态。,都可以满足ACID特性,但全局事务跨越多个服务、多个数据库,是否还能满足呢?每个微服务的本地事务,也可以称为。

2024-12-16 10:28:44 503

原创 IOT-开源物联网平台整理汇总全集!!!

应用层提供了设备接入与管理、数据存储与转发、告警通知、规则引擎、多租户等核心物联网能力,满足物联网99%的碎片化需求,基于SANSAN,开发者能快速搭建可交付的物联网应用系统。禹霖科技(原铱塔智联)iot-iita物联网平台,包含了品类、物模型、消息转换、插件管理(mqtt插件、EMQX插件、http插件、tcp插件、modbus插件等)、设备管理、设备分组、规则引擎、第三方平台接入、数据流转(http/mqtt/kafka)、数据可视化、告警中心等模块,支持es/td等多种时序数据库。

2024-12-09 15:59:06 17937 2

原创 @Validated注解详解,分组校验,嵌套校验,@Valid和@Validated 区别,Spring Boot @Validated

@Validated注解详解,分组校验,嵌套校验,@Valid和@Validated 区别,Spring Boot @Validated

2024-02-27 09:30:53 633 1

原创 Java通过文件名后缀确定Content-Type中的MIMEType(媒体文件类型)

【代码】Java通过文件名后缀确定Content-Type中的MIMEType(媒体文件类型)

2023-11-18 02:19:37 551 1

原创 Java集成MinIO上传、删除、查询

【代码】Java集成MinIO上传、删除、查询。

2023-11-18 02:19:11 480 1

原创 Mybatis-ResultMap

【代码】Mybatis-ResultMap。

2023-11-18 02:18:34 199 1

原创 java后端接收localdate

【代码】java后端接收localdate。

2023-11-18 02:00:36 342 1

原创 PhpMyWind数据库常用操作

dosql->GetArray(1)){} 获取记录总数 $dosql->GetTotalRow(1)$dosql->GetLastID() 获取最近一条插入数据的ID号;sql,1) select 读取多条数据 同时跟while(sql) 执行upate,delete数据库方法,无返回值。sql) 执行upate,delete数据库方法,有返回值。sql) select 读取一条数据,带回调函数。

2023-07-17 13:50:51 328 1

原创 PHPMyWind开发说明

*

2023-07-17 09:52:39 845 1

原创 联查嵌套子查询

【代码】联查嵌套子查询。

2023-05-11 09:28:28 112

原创 sql定时任务

【代码】sql定时任务。

2023-05-11 09:26:50 262

原创 Mysql索引

3.尽量使用联合索引(覆盖索引),不用回表查询。4.控制索引的数量(增删改的时候维护成本大)1.在使用了联合索引时,违反了最左匹配原则。2.在where条件、排序、分组字段添加。4.字符串不加单引号,自动类型转换。1.数据量大时,10万左右;3.在索引上面做运算。

2023-05-11 09:25:53 86

原创 分类的sql递归写法

MySQL为了防止无限递归,默认递归1000次;如果递归超过1000次。MAX_EXECUTION_TIME:设置全局的递归时间。= 1000000;这样子就对全局的递归都有限制。当然也可以设置为global,也就是。

2023-05-11 09:25:41 194

原创 sql语句将查询结果置空

sql语句将查询结果置空

2023-02-03 16:21:37 1163

原创 Sring Cloud--Nacos

1.临时实例(默认)2. 持久化实例(永久实例)通过设置属性来确定它是临时还是永久临时实例和永久实例的区别- 临时实例默认情况下,启动服务后,每隔5秒会向Nacos发送一个"心跳包",这个心跳包中包含了当前服务的基本信息;Nacos收到这个"心跳包"如果发现这个服务的信息不在注册列表中,就进行注册,如果这个服务的信息在注册列表中就表明这个服务还是健康的;如果Nacos 在15秒内没接收到某个服务的“心跳包”,Nacos会将这个服务标记为不健康的状态;如果30秒内没有接收到这个服务的”心跳包”,Nacos

2022-06-21 22:40:35 624 1

空空如也

空空如也

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

TA关注的人

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