- 博客(60)
- 收藏
- 关注
原创 python3基础语法梳理(五)
本文介绍了Python面向对象编程中的类属性与方法、模块与包的使用以及生成随机数和推导式等特性。主要内容包括: 类成员访问控制:私有属性/方法(双下划线开头)只能在类内部访问,公共属性/方法可被外部访问。通过示例演示了私有成员的访问限制。 类的专有方法:如__init__、__del__等特殊方法的功能说明。 模块与包的使用:展示import和from...import两种导入方式,以及包的层级引用方法。 随机数生成:使用random模块的randint()和choice()函数生成随机数和随机选择。 推导
2025-07-29 10:41:25
761
原创 Spring源码解读之 JdbcTemplate源码
Spring的JdbcTemplate是简化JDBC操作的核心工具类,封装了JDBC的繁琐细节,提供统一的数据访问方式。它负责SQL执行、结果处理和异常转换,开发者只需关注SQL定义和结果提取。JdbcTemplate通过回调接口(如PreparedStatementCreator、RowMapper)实现灵活操作,支持连接管理、事务处理等底层细节的自动化。该组件线程安全且可复用,可通过日志记录SQL操作,并允许自定义异常转换。从6.1版本起,推荐使用更现代的JdbcClient作为替代方案。
2025-07-28 23:02:38
81
原创 python3基础语法梳理(三)
摘要:这篇博客分享了几个Python小游戏的代码实现,包括猜数字游戏(随机生成1-10数字,提示大小)、逻辑侦探游戏(判断陈述真假)、比较运算符游戏(判断表达式结果)、重量转换器(kg/lb转换)和虚拟汽车控制游戏。每个游戏都配有完整代码示例和运行效果,适合Python初学者学习基础语法(if判断、循环、逻辑运算符等)。游戏设计注重交互性和趣味性,通过控制台输入输出实现简单互动。(149字)
2025-07-27 16:44:24
871
原创 为什么会有 CompletableFuture?它是为了解决什么痛点的?
CompletableFuture是Java 8引入的异步编程工具,解决了传统Future的诸多痛点。它支持非阻塞回调、链式任务编排、多任务组合和异常处理等特性,适用于微服务调用、任务编排、高并发等场景。通过supplyAsync、thenApply等方法可实现任务流水线,相比Future更灵活高效。源码中广泛用于异步任务执行和结果处理,大幅提升了Java并发编程的便利性。
2025-07-25 19:49:49
854
原创 TreeMap一致性哈希环设计与实现 —— 高可用的数据分布引擎
一致性哈希算法在分布式系统中的应用 核心思想 一致性哈希通过哈希环结构解决分布式系统中节点动态变化导致的数据迁移问题。它将哈希空间视为环形结构,节点和数据项通过哈希函数映射到环上,数据项存储在顺时针方向第一个节点处。当节点增减时,仅影响相邻区域的数据分布,大幅减少数据迁移量。 实现关键 哈希环结构:使用TreeMap实现,支持O(log n)时间复杂度的节点查找 虚拟节点:每个物理节点对应多个虚拟节点,提高数据分布均衡性 顺时针查找:通过tailMap方法快速定位数据所属节点 应用场景 广泛应用于分布式缓存
2025-07-24 23:37:46
948
原创 写出优雅高效的代码:性能与艺术的双重盛宴
本文介绍了代码优化的两个实用技巧:1) 使用Java 8的Optional类消除冗余的null判断,提升代码可读性和健壮性,通过map/flatMap等方法实现函数式编程风格;2) 在Spring AOP中获取目标方法Method对象的优化方案,比较了手动反射与使用Spring AopUtils工具类的不同实现,推荐采用AopUtils.getMostSpecificMethod()方法更优雅地获取实际方法。这些优化方法既能提升代码质量,又能增强系统的稳定性和可维护性,体现了从"能运行"
2025-07-20 13:46:05
544
原创 揭秘 Java 并发核心类:AtomicReference 的底层机制与实现细节
摘要 AtomicReference是Java并发包中的核心原子类,基于CAS(Compare-And-Swap)原理实现无锁并发编程。它解决了多线程环境下共享对象引用的线程安全问题,相比传统加锁方式性能更高。从JDK1.5引入到JDK9优化,AtomicReference通过volatile引用和VarHandle实现原子操作,支持compareAndSet等关键方法。典型应用场景包括线程安全缓存、状态管理、无锁数据结构等,是Java从"加锁"转向"无锁"并发的重要
2025-07-19 11:50:47
1376
原创 你的 Java 源码还原专家,从 JDK8 到 JDK24 全搞定
当你没有源码,但必须看懂代码的时候,反编译就是你的唯一选择。如果你有什么需要帮助的 请给我留言 我也会认真进行回复。
2025-07-18 18:02:27
1056
原创 用Logback实现日志的极速异步写入,告别阻塞,轻松存储数据库
摘要: 2025年业务环境下,日志管理面临合规监管趋严、AI与大数据的结构化需求、分布式系统日志集中化、DevSecOps理念推广、国产化技术替代以及AIOps兴起等挑战。Logback作为Java日志框架,需适配数据库存储以满足结构化、可检索、可审计的要求。由于Logback官方移除了DBAppender,建议通过自定义Appender(如结合HikariCP连接池)实现异步日志入库。示例代码展示了基于HikariCP的MySQL日志存储方案,通过异步Appender提升性能,满足实时分析与合规需求。
2025-07-16 15:56:45
1329
原创 RocketMQ 5.x初体验
RocketMQ 5.0 是一个面向云原生场景设计的实时数据平台,它融合了消息队列、事件驱动、流式处理等能力,能够广泛适用于云、边缘和设备之间协同的数据传输与处理需求。随着我们的电商业务不断增长,消息集群(消息中间件系统)面临的压力也越来越大。在观察和分析了 ActiveMQ 的 IO 模块性能 后,我们发现了一个瓶颈:当队列和虚拟主题数量增加时,性能下降严重。但这些都不能从根本上解决问题。
2025-07-14 12:34:20
1295
原创 MyBatis-Flex:超越传统,体验ORM新境界
经过一番深入了解,我们发现 MyBatis-Flex 确实是一个极具优雅魅力的 ORM 框架。它不仅继承了 MyBatis 的灵活性和高性能,还在 CRUD 操作、多表查询、性能优化等方面进行了全面的升级。性能更优:5-10 倍的性能提升,让它在高并发场景下表现更出色。灵活性更强:支持动态表名、数据脱敏、插件扩展等高级功能,满足各种复杂业务需求。代码更简洁:更少的代码量和更直观的 API 设计,让开发者可以更专注于业务逻辑。
2025-07-11 10:55:48
700
原创 RabbitMQ 4.1.1-Local random exchange体验
摘要: RabbitMQ 4.0+引入的Local Random Exchange(LRE)专为RPC场景设计,通过本地随机路由消息降低延迟。其核心特性包括:仅路由到本地节点队列、多队列时随机选择、避免跨节点通信。建议搭配独占队列使用,但需确保每个节点均有消费者绑定队列,否则消息会被丢弃。负载均衡器会破坏LRE的本地性,导致消息丢失。配置示例展示了Spring Boot中LRE交换机、RPC队列的声明与绑定,并提供了RPC客户端实现,通过临时回调队列和唯一ID实现请求-响应配对。使用时需注意网络拓扑和队列配
2025-07-09 20:02:44
750
原创 ModuleNotFoundError: No module named ‘pip‘解决
摘要:遇到Python嵌入式版本缺少pip的问题时,需手动安装。首先下载get-pip.py并运行安装。若安装失败,需编辑python._pth文件,调整import site的注释状态(添加或删除#),然后重新执行安装命令。成功安装后,通过pip -V验证,必要时将Scripts目录添加到环境变量PATH中。
2025-07-07 10:40:37
239
原创 RabbitMQ 4.1.1初体验-队列和交换机
本文介绍了RabbitMQ的安装与基本使用,重点讲解了交换机和队列的配置。首先说明了启动RabbitMQ前需安装对应版本的Erlang环境,并演示了通过web界面创建虚拟主机。文章详细介绍了三种队列类型(classic、quorum、stream)和四种交换机类型(Fanout、Direct、Topic、Headers),其中Fanout Exchange用于广播模式,Direct Exchange通过路由键精确匹配。通过Spring Boot代码示例展示了如何配置Fanout Exchange及其绑定队列
2025-07-05 23:55:33
1366
原创 RabbitMQ 4.1.1初体验
RabbitMQ应用场景与核心技术解析 RabbitMQ作为成熟的分布式消息中间件,在多个业务场景中展现出独特优势。本文通过四个典型案例,展示了其核心应用价值:1)通过队列解耦通知系统,实现异步处理;2)利用RPC机制构建高并发票务系统;3)使用Stream流式处理视频平台任务;4)支持IoT设备的跨星际通信。文章重点分析了RabbitMQ的互操作性、灵活路由和高可靠性特点,对比了经典队列与Streams的技术差异,为不同业务场景的中间件选型提供了实用参考。
2025-07-04 23:21:37
1224
原创 Kafka4.0初体验
Kafka简介与快速入门指南 Apache Kafka是一个开源的分布式事件流处理平台,由LinkedIn开发并捐赠给Apache软件基金会。超过80%的财富100强公司使用Kafka,它特别适用于高吞吐量、低延迟的大规模实时数据处理场景。 Kafka核心特点包括: 分布式高可用架构 每秒百万级消息处理能力 持久化存储和事件流处理 多语言客户端支持 安装准备: 需要JDK 17+环境 下载最新版Kafka 4.0.0 配置Cluster UUID并格式化日志目录 快速启动步骤: 生成集群ID 格式化存储目录
2025-06-29 23:52:32
1359
原创 error: GH013: Repository rule violations found for refs/heads/main.
摘要:GitHub推送代码时提示"GH013"错误,检测到仓库规则违规(包含密钥等敏感信息)。官方提供两种解决方法:1) 在命令行使用--no-verify选项绕过检查(不推荐);2) 按照提示移除敏感信息后重新提交,或通过网页端临时授权推送(适用于紧急情况)。文档链接提供了更详细的解决步骤,建议优先采用移除敏感信息的合规方案。
2025-06-25 23:43:58
160
原创 remote: Support for password authentication was removed on August 13, 2021. remote: Please see https
GitHub已从2021年8月起禁用密码验证,推送代码时需改用个人访问令牌(PAT)。解决步骤:1)进入GitHub设置→开发者设置→Personal access tokens;2)生成新令牌,勾选所需权限;3)推送时代替密码输入该令牌即可。该方法比SSH更简便,适合HTTPS克隆场景。注意令牌需妥善保管,具有密码同等权限。
2025-06-25 21:37:27
218
原创 解决npm安装依赖报错ERESOLVE unable to resolve dependency tree
npm安装依赖时出现"ERESOLVE"错误通常由依赖版本冲突或解析问题导致。常见解决方法包括:删除package-lock.json文件后重装依赖、改用npm代替yarn、检查版本兼容性、清除npm缓存、使用--legacy-peer-deps参数或手动安装依赖包。处理时需注意维护依赖关系稳定性,yarn用户可尝试添加--check-files参数验证依赖完整性。通过合理运用这些方法可有效解决版本冲突问题,确保项目正常运行。
2025-06-25 21:10:18
663
原创 HashMap扰动函数在分库分表路由中的应用
摘要:HashMap扰动函数通过将原始哈希值高位与低位异或来优化分布,在分库分表中应用显著提升均匀性。该方法利用hashCode()^(hashCode>>>16)混合高低位信息,配合(n-1)&hash的路由算法,有效减少热点问题。实际应用需注意分片数量取2的幂次方、保证哈希质量及算法一致性。这种经过验证的方案能以较小计算代价实现更均衡的数据分布。 (99字)
2025-06-24 07:57:45
300
原创 Docker-MySQL
本文介绍了在Docker中安装和配置MySQL数据库的详细步骤。主要内容包括:通过Docker Hub查看可用MySQL版本,拉取最新版MySQL镜像,使用docker run命令运行容器并设置root密码,以及验证安装是否成功。文章还提供了MySQL 8版本的安装命令和配置远程用户的SQL语句,包括修改root密码和创建具有全部权限的远程用户。整个过程涵盖了从镜像获取到容器运行,再到数据库配置的完整流程,适合开发人员快速部署MySQL服务。
2025-06-20 19:51:46
342
原创 Spring AI之MCP核弹级实战:从入门到架构颠覆!源码解剖与性能狂飙手册(三)
本文分析了Spring AI中MCP Server的核心源码实现。主要内容包括: McpTransport的两种模式(Stdio和Sse)及其对应的Server/Client实现类 核心依赖spring-ai-starter-mcp-server-webmvc的组成 McpServerAutoConfiguration类的详细解析,包括: 自动配置MCP服务器的核心组件 支持同步和异步两种操作模式 通过属性控制服务器类型 包含各种规范接口(Sync/Async)的实现 代码展示了MCP协议相关的主要类和接口
2025-06-20 09:16:43
598
原创 SpringBoot线程池与事务的终极指南:异步任务也能保证数据一致
循环修改整体耗时约 1分54秒,且代码中没有手动事务控制应该是自动事务提交,所以每次操作事务都会提交所以操作比较慢,我们先对代码中添加手动事务控制,看查询效率怎样。添加手动事务操控制后,整体耗时约 24秒,这相对于自动事务提交的代码,快了约5倍,对于大量循环数据库提交操作,添加手动事务可以有效提高操作效率。由于多线程提交时,每个线程事务是单独的,无法保证一致性,我们尝试给多线程添加事务控制,来保证每个线程都是在插入数据完成后再提交事务,对于大批量数据库操作,使用手动事务提交可以很多程度上提高操作效率。
2025-06-19 23:15:06
954
原创 Spring AI之MCP核弹级实战:从入门到架构颠覆!源码解剖与性能狂飙手册(二)
Spring AI自定义MCP Client实现 本文介绍了如何使用Spring AI框架自定义STDIO模式的MCP Client实现。MCP(Model Client Protocol)是一种模型客户端协议,包含Client和Server两部分,常用于AI模型交互。作者在前期博文中已介绍过MCP Server的实现。 关键实现步骤: 引入Spring AI相关依赖,包括spring-ai-starter-model-deepseek和spring-ai-starter-mcp-client 配置POM文
2025-06-19 11:36:53
819
原创 Spring AI之MCP核弹级实战:从入门到架构颠覆!源码解剖与性能狂飙手册(一)
摘要:MCP(模型上下文协议)是由Claude提出的标准化协议,用于规范AI模型与数据源/工具的交互方式(类似USB-C接口)。该协议采用客户端-服务器架构,其中MCP Server提供工具能力(如百度地图API),MCP Client调用这些工具。目前已有1300多个公开的MCP Server,可通过Clien等插件在VSCode中集成使用。Spring AI提供了MCP整合方案,支持STDIO/HTTP/WebFlux等多种传输协议。开发者也可自定义MCP Server,通过标准化协议实现工具能力的共享
2025-06-15 22:50:33
995
原创 Can‘t find master key from keyring, please check in the server log if a keyring is loaded and initi
摘要:MySQL 8.0密钥环插件配置方法:在my.ini的[mysqld]段添加early-plugin-load=keyring_file.dll和keyring_file_data=C:/ProgramData/MySQL/MySQL Server 8.0/keyring两行配置,重启MySQL服务。插件已自带安装,无需下载。配置完成后执行查询命令验证,显示"keyring_file"即表示配置成功。配置文件my.ini通常位于MySQL安装目录下。(99字)
2025-06-14 15:46:17
177
原创 MySQL 究极奥义·动态乾坤大挪移·无敌行列转换术
本文介绍了MySQL中的三种高级数据处理技术:大数据导入优化、动态行列转换和递归查询。首先给出了大批量数据导入时的关键参数配置建议,包括增大缓冲区大小等。其次展示了通过IF函数和动态SQL实现行列转换的方法。最后详细讲解了MySQL 8.0的递归查询语法,包括递归上下文变量设置和递归停止条件,并提供了课程分类树形结构查询的具体实现方案。这些技术可以显著提升MySQL处理复杂数据场景的能力。
2025-06-14 15:31:34
187
原创 Spring AI 1.0.0 Tool Calling 震撼揭秘:手撕源码,玩转AI工具调用,让你的代码拥有“上帝之手”!
例如,可以使用工具为与聊天机器人交互的客户预订航班、填写网页上的表单,或在代码生成场景中基于自动化测试(TDD)实现 Java 类。在这个过程中,还会额外判断returnDirect,如果为true,那么执行完工具后,就会直接return,而不会再去执行internalCall()方法了。Spring AI 提供了便捷的 API 来定义工具、解析模型的工具调用请求以及执行工具调用。工具调用(亦称函数调用)是 AI 应用的常见模式,允许模型通过与一组 API(即工具)交互来扩展其能力。
2025-06-14 09:13:50
1101
原创 Spring AI“脑白金”改造计划:RAG实战注入“记忆”,源码解剖唤醒“灵魂”!
Spring AI 整合 RAG 方案解决 AI 痛点 本文介绍如何通过 RAG(检索增强生成)技术解决 Spring AI 开发中的常见问题。RAG 为 AI 系统添加检索能力,使其在生成回答前能查询最新知识库,确保输出准确性和时效性。 核心技术实现: 使用向量模型将文本转换为高维向量(如通义千问的 text-embedding-v3) 搭建 Elasticsearch 作为向量数据库存储向量数据 通过 Spring AI 的 ElasticsearchStore 实现向量生成、存储和检索 配置 cosi
2025-06-13 08:07:12
902
原创 Spring AI 入门指南:让 Java 应用轻松集成 AI
Spring AI入门指南:快速集成AI到Java应用 本文介绍了Spring AI(1.0.0-M6版本)的基本使用方法,帮助开发者快速将AI能力集成到Spring Boot应用中。主要内容包括:项目配置(添加spring-ai-openai依赖及仓库设置)、API调用示例(通过OpenAIChatClient实现AI对话功能)以及简单的控制器实现。文章提供了完整的pom.xml配置示例,并展示了如何用不到10行代码实现一个AI聊天接口,为Java开发者开启AI应用开发提供简明路径。
2025-06-11 12:27:36
881
原创 AI时代的企业困局和解决思路
技术上,数据中台、隐私计算和微调/小模型是重要抓手;通过这些手段,企业才能真正把手中的“数据金矿”转化为AI生产力,走出“数据有了,AI却饿肚子”的困境。部署数据中台,或通过ETL(抽取、转化、加载)管道,将ERP、CRM等系统的数据汇总到统一的湖仓一体化架构中(如Data Lakehouse)。🔒 数据囚徒困境:80%的高价值业务数据被困在ERP、CRM等本地系统中,像一座座与AI绝缘的"数据孤岛"大多数企业的核心数据(客户信息、订单、财务、生产、医疗记录等)封闭在本地化系统中,无法与AI模型无缝集成。
2025-06-10 12:50:22
317
原创 python3基础语法梳理(二)
在显式类型转换中,用户将对象的数据类型转换为所需的数据类型。从输出中可以看出,整型和字符串类型运算结果会报错,输出 TypeError。有时候,我们需要对数据内置的类型进行转换,数据类型的转换,一般情况下你只需要将数据类型作为函数名即可。在 Python 中,None 是一个单例对象,通常用 is 来检查一个变量是否为 None。How Python Code Gets Executed - 代码执行。但是,Python 为这些类型的情况提供了一种解决方案,称为。(即它们在内存中的地址是否相同)。
2025-06-10 11:07:09
1087
原创 python3基础语法梳理(一)
摘要:Python 3.0(Py3k)是一次重大升级,不向下兼容Python 2。文章介绍了Python 3.13版本的安装方法,并详细讲解了基础语法:标识符规则(支持Unicode字符如中文变量名)、保留关键字分类(33个)及其用途,以及常见数据类型(数字、文本、序列、映射等)的特点。重点对比了可变与不可变类型的底层逻辑,通过id()验证了不可变类型(如整数)在修改时会创建新对象,而可变类型(如列表)直接修改原对象。最后提醒Python 2已停止维护,建议使用Python 3新特性。 (149字)
2025-06-10 00:13:39
1738
1
原创 Prompt Enginering(提示工程)先进技术
在Java中实现CoT(Chain-of-Thought)和ReACT(Reasoning and Acting)需要结合大语言模型(LLM)的API调用、动态Prompt生成以及外部工具集成。CoT(Chain-of-Thought)和 ReACT(Reasoning and Acting)是两种先进的 Prompt Engineering(提示工程) 技术,旨在提升大语言模型(LLM)的推理、规划和执行能力。需要实时信息的任务(如问答)、工具调用(如计算器、数据库查询)、多步骤规划(如订机票+酒店)。
2025-06-08 23:01:11
1174
原创 基于RAG实现下一代的企业智能客服系统
企业智能客服系统搭建方案 本文介绍了如何利用LangChain4j搭建企业智能客服系统的步骤: 问题分析:直接使用通用AI模型无法提供准确的客服答案,因其缺乏企业内部专有数据和政策信息。 数据准备:将企业常见问题(如携程机票退改签政策)整理成文本文件,确保问答格式清晰。 技术实现: 创建Maven工程,引入LangChain4j和相关AI模型(如OpenAI和DeepSeek) 定义CustomerServiceAgent接口作为客服代理 配置多个AI模型供选择使用 知识库导入: 加载解析企业政策文档 使用
2025-06-07 14:51:36
1293
原创 今天测试项目的时候遇到这样一个警告 Found multiple occurrences of org.json.JSONObject on the class path:
摘要:Spring Boot测试中出现了重复的JSONObject类警告,原因是spring-boot-starter-test依赖引入了android-json和org.json两个库。解决方法是在POM文件中通过<exclusions>排除com.vaadin.external.google:android-json依赖,确保只保留一个JSON实现。这样可以避免运行时行为的不确定性。(98字)
2025-06-07 11:49:49
184
原创 颠覆搜索认知!基于Embedding的下一代搜索技术,让Elasticsearch沦为‘古董级’工具!
摘要 文本向量化是构建企业智能知识库系统的关键技术,它将文字信息转化为多维向量,实现语义理解而非简单关键词匹配。典型应用场景包括法律文档关联、电商智能搜索和代码语义检索。通过大模型API(如OpenAI的Embedding模型),可将自然语言文本映射为高维向量空间中的数值表示,如示例中Java代码将中文句子转化为1536维向量。这种技术突破传统搜索局限,使系统能理解用户意图并精准匹配相关内容,为构建智能客服、知识库等企业级AI应用奠定基础。
2025-06-06 12:03:04
1316
原创 编程边界突破:当AI能听懂你的需求时…
大模型的能力扩展:LangChain4j Tools机制解析 大模型虽在理解和决策方面表现优异,但其静态训练数据限制了实时信息获取能力。LangChain4j的Tools机制通过以下方式解决这一局限: 问题本质:大模型的回答基于概率预测,无法获取最新数据(如当前日期、位置) 解决方案:通过@Tool注解定义工具方法,将语言指令转化为实际动作 实现示例:展示如何创建获取实时日期、位置和天气的工具类 技术整合:将工具方法转换为ToolSpecification对象传递给模型,扩展其能力边界 这种机制有效弥补了大
2025-06-05 12:01:40
1069
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人