- 博客(56)
- 资源 (1)
- 收藏
- 关注
原创 LangChain框架实战指南
本文为Java程序员提供Python AI开发入门指南,重点介绍LangChain框架。主要内容包括:1)LangChain的核心定位与生态全景,作为连接大语言模型与真实世界的桥梁;2)Java程序员快速掌握Python的语法对比与环境搭建;3)深入解析LangChain核心概念如Models、Chains、Agents等;4)LCEL(LangChain Expression Language)的语法与应用;5)RAG(检索增强生成)和Agent的实战案例;6)生产级AI应用的最佳实践。通过模块化设计和丰
2025-12-22 11:22:24
857
原创 LangChain4j框架实战指南
LangChain4j就像是Java开发者的AI瑞士军刀,它把复杂的AI能力封装成了熟悉的Java API,让传统Java开发者也能快速构建AI应用。
2025-12-22 10:58:45
712
原创 Spring AI Alibaba 框架实战指南
Spring AI Alibaba是阿里云基于Spring AI构建的开源AI框架,为Java开发者提供完整的AI应用开发解决方案。该框架具有三大核心特点:简化AI开发复杂度,通过高层抽象ChatClient实现开箱即用;支持多模型无缝切换,统一接口适配通义千问、GPT-4等多种模型;提供丰富的AI能力,涵盖对话聊天、图像生成、语音合成等场景。采用三层架构设计(模型服务层、增强LLM层、智能体框架层),支持声明式编程和企业级集成。相比原生API调用和LangChain4j,Spring AI Alibaba
2025-12-22 10:05:08
870
原创 AI Coding工具实战指南:Claude Code & Cursor深度实践
《AI辅助开发转型指南》摘要 本文系统介绍了从传统编程向AI辅助开发的转型路径。通过对比分析AI Coding与传统编程在效率、学习曲线等方面的显著差异(效率提升3-5倍),详细解读了Claude Code和Cursor等主流AI编程工具的核心功能和技术特点。文章提供工具选择决策树,建议组合使用Cursor(日常开发)和Claude Code(复杂任务),并包含Spring Boot实战案例。最后总结了AI辅助开发的最佳实践,包括需求描述技巧、代码审查流程等关键环节的操作指南,帮助开发者实现高效转型。
2025-12-22 09:09:45
664
原创 AI工程化实践指南:从入门到落地
2022年11月,ChatGPT的发布标志着我们进入了大模型时代。作为Java开发者,我们正处于一个历史性的转折点:作为Java开发者,我们在AI工程化落地方面有天然优势:Java开发者优势企业级开发经验工程化思维成熟的生态系统大型项目架构能力高并发处理经验代码规范测试驱动DevOps实践Spring生态微服务框架中间件集成2. AI发展历程:从理论to实践的演进2.1 AI发展时间线特征:典型代表:特征:关键技术:深度学习技术栈卷积神经网络 CNN循环神经网络 RNN/LSTMTransforme
2025-12-21 18:25:28
917
原创 MySQL底层原理
MySQL支持两种方式的排序filesort和index,Using index是指MySQL扫描索引本身完成排序,index效率高,filesort效率低。order by满足两种情况会使用Using index。order by语句使用索引最左前列。使用where子句与order by子句条件列组合满足索引最左前列。尽量在索引列上完成排序,遵循索引建立(索引创建的顺序)时的最左前缀法则。如果order by的条件不在索引列上,就会产生Using filesort。
2025-12-21 16:36:12
1138
1
原创 RabbitMQ核心技术深度解析
RabbitMQ是一个基于AMQP协议的开源消息代理系统,采用Erlang开发,具有灵活路由、高可靠性等优势。其核心架构包含生产者、交换机、队列和消费者等组件,支持多种交换机类型(Direct、Fanout、Topic、Headers)和消息路由方式。RabbitMQ提供丰富的功能特性,如持久化、手动ACK、死信队列等,确保消息可靠传递。消费者可采用Push或Pull模式接收消息,并支持手动确认机制。通过虚拟主机、绑定规则和队列属性配置,RabbitMQ能够满足微服务架构中的异步通信需求。
2025-12-23 16:55:08
467
原创 RocketMQ核心技术深度解析
本文深入解析了Apache RocketMQ的架构设计与存储机制。RocketMQ作为分布式消息中间件,其核心架构由Producer、NameServer、Broker和Consumer四大组件构成,采用Topic与MessageQueue的逻辑模型实现消息并行处理。存储设计采用CommitLog+ConsumeQueue+IndexFile三层结构,通过顺序写、内存映射等技术实现高性能。NameServer作为轻量级路由中心,Broker负责消息存储与转发,支持主从复制保证高可用。RocketMQ在金融级
2025-12-23 15:39:59
786
原创 Kafka核心技术深度解析
Apache Kafka是一个高吞吐量的分布式流处理平台,核心架构包括生产者、Broker集群、消费者组和ZooKeeper协调服务。其高性能源于顺序写入、零拷贝和PageCache等技术,通过分区机制实现水平扩展。Kafka提供副本机制和ISR保障高可用,支持多种消息语义。典型应用场景包括消息解耦、日志聚合和实时流处理,具有持久化存储、百万级TPS和顺序保证等优势。
2025-12-23 14:32:53
766
原创 MongoDB核心技术深度解析题
本文深入解析MongoDB的核心技术与实现原理,涵盖数据模型、存储引擎、索引优化、集群架构等关键内容。主要内容包括:MongoDB的BSON数据格式与ObjectId结构,WiredTiger存储引擎工作机制,索引原理与查询优化策略,复制集与分片集群的高可用架构设计,多文档事务实现机制,以及Java集成与生产环境优化建议。文章通过对比分析、架构图解和代码示例,系统阐述了MongoDB作为文档型数据库的核心优势与适用场景,为开发者提供全面的技术参考和实践指导。
2025-12-23 13:53:44
901
原创 Elasticsearch核心技术深度解析
本文深入解析Elasticsearch(ES)的核心技术与架构。作为基于Lucene的分布式搜索引擎,ES具备分布式扩展、近实时搜索、RESTful API等特性。文章详细介绍了ES的核心概念,包括索引(逻辑数据容器)、文档(基本数据单元)和分片(物理存储单元),并配以示例代码和架构图说明。重点讲解了分片的路由算法和规划策略,以及ES集群中不同节点角色的职责。通过系统性的技术剖析,帮助读者全面理解Elasticsearch的工作原理和最佳实践。
2025-12-23 12:25:35
745
原创 Redis核心技术深度解析
Redis凭借其卓越性能成为互联网架构中的关键组件,其高性能源于四大设计支柱:内存存储提供接近硬件极限的速度;单线程模型避免线程切换和锁竞争;I/O多路复用技术实现单线程管理高并发连接;精心优化的数据结构确保操作高效。Redis采用全局哈希表存储所有键值对,通过dict结构实现灵活的数据管理。这些设计协同作用,使Redis能够轻松达到10万+QPS的吞吐量,成为现代应用不可或缺的基础设施。
2025-12-22 19:17:35
740
原创 Spring IoC容器
Spring IoC容器依赖反转(依赖注入):IoC亦称“依赖倒置原理”( Dependency Inversion Principle)对象的引用或依赖关系的管理由具体的对象来完成,会导致代码的高度耦合和可测试性降低对象封装了数据和对数据的处理,对象的依赖关系常常体现在对数据和方法的依赖上控制反转是关于一个对象如何获取它所依赖的对象的引用,反转是指责任的反转。通过使用IoC容器,对象依赖关系的管理被反转了,转到IoC容器中来了,对象之间的相互依赖关系由IoC容器进行管理,并由Ioc容器完
2020-09-22 07:20:33
334
原创 运行Mysql 镜像
启动mysql实例docker run --name some-mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tagsome-mysql: 容器别名my-secret-pw:初始化设置的root用户的密码tag:mysql的版本,不写默认使用最新版-p 3306:3306:表示在这个容器中使用3306端口...
2019-04-25 17:57:58
826
原创 Docker常用命令
停用全部运行中的容器:docker stop $(docker ps -q)删除全部容器:docker rm $(docker ps -aq)一条命令实现停用并删除容器:docker stop $(docker ps -q) & docker rm $(docker ps -aq)...
2019-04-25 15:03:21
324
原创 Java 线程的基本API
线程的基本操作进行Java 并发设计的第一步要了解Java中为线程提供的API。比如如何新建、启动、终止、中断、等待、通知等。首先了解一下一个线程的几种状态线程状态线程状态在Java中是通过一个Thread的内部枚举State标识的。NEW---->RUNNABLE---->BLOCKED---->WAITING---->TIMED_WAITING----&gt...
2018-09-19 13:35:42
977
原创 Netty事件注册过程
Netty是对NIO的封装,通过事件驱动的网络编程框架,自然是要实现NIO中的事件注册与监听。在NIO中我们都是显式的注册每一个事件,但是Netty为开发人员封装了这些细节,提供了简单易用的API,底层是如何实现的呢,这就是本篇文章要讨论的问题。NIO的SelectionKey中有四种事件,可读、可写、连接、接收连接public abstract class SelectionKey {...
2018-09-17 15:11:46
2842
2
原创 JDK动态代理的原理与底层实现
动态代理是许多框架底层实现的基础,比如Spirng的AOP、RPC框架Dubbo等,其实弄清楚了动态代理的实现原理,它就没那么神奇了,下面就来通过案例和分析JDK底层源码来揭秘她的神秘面纱。代理模式定义这里只是简单说明一下代理模式,代理模式是指存在一个代理对象,并且这个代理对象持有真实对象的引用,以实现对真实对象的访问控制。代理模式的分类静态代理该代理对象持有被代理...
2018-09-14 11:19:40
569
原创 TCP粘包、拆包与通信协议
在TCP编程中,通常Sever端与Client通信时的消息都有着固定的消息格式,称之为协议(protocol),例如FTP协议、Telnet协议等,有的公司也会自己开发协议。那么协议到底是干什么的呢?说白了,协议了就是定义了数据通信的格式。主要是为了解决TCP编程中的粘包和半包问题。由于TCP(transport control protocol,传输控制协议)是面向连接的,面向流的,提供...
2018-09-13 12:44:53
3332
原创 Java序列化
Java序列化按照序列化后的数据格式,主流的序列化框架主要可以分为四大类:JSON、二进制、XML、RPC。JSON类 非常流行的JacksonGoogle的Gson类JSON的MessagePack阿里的FastJSON二进制类 老牌劲旅Hessian功能全面而强大的FST后起之秀KryoXML类 StAX(Streaming API for XML)Tho...
2018-09-11 09:29:33
236
原创 Java泛型
Java泛型 对于常见的泛型模式,推荐的名称是: K ——键,比如映射的键。 V ——值,比如 List 和 Set 的内容,或者 Map 中的值。 E ——异常类。 T ——泛型。 泛型不是协变的 什么是java泛型?泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类...
2018-09-10 19:12:29
181
原创 equals和hashCode
@(java_group)equals和hashCodehttps://blog.youkuaiyun.com/basycia/article/details/52081111equals()的所属以及内部原理(即Object中equals方法的实现原理)说起equals方法,我们都知道是超类Object中的一个基本方法,用于检测一个对象是否与另外一个对象相等。而在Object类中这...
2018-09-10 19:08:39
185
原创 Netty服务端启动
Netty服务端启动 ServerBootstrapEventLoopGroup boss = new NioEventLoopGroup(1);EventLoopGroup work = new NioEventLoopGroup();try { ServerBootstrap server = new ServerBootstrap().group(boss, work...
2018-09-10 18:02:22
1568
原创 Java Object类
Object类是Java中最基础的一个类了,但是有人问题知道Object中有哪些方法时,你能说出几个?public class Object { private static native void registerNatives(); static { registerNatives(); } public final native Class<?&...
2018-09-10 17:57:18
189
原创 Netty整体架构
每学习一门语言或者一种框架,写一个Hello World都是一个不错的入门,上一篇我们用Netty实现了一个简单的Hello World,简单粗暴直接上代码,这篇文章将从Netty整体结构上介绍。本人文笔不好,平时记云笔记只需自己能看懂,写这种公开博客功力尚浅,望看到博客的朋友见谅。Netty概述Netty是一个高性能、异步事件驱动的NIO框架,它提供了对TCP、UDP和文件传输的支持。作...
2018-09-10 15:24:14
12597
6
原创 Netty 学习之Hello World
总结一下自己学习一个新事物(技术层面的)的心得体会,首先了解它是做什么的(what),其次学习使用它(how),最后了解它内部如何实现(why)。当然这个是需要一个漫长的过程的,顺序也是循序渐进的。学习Netty之前需要有一定的网络编程基础,如果对网络编程不太熟悉的,可以先看看Java网络编程系列Netty简介Netty是由JBOSS提供的一个开源的java网络编程框架,主要是...
2018-09-06 16:10:18
835
原创 NIO Buffer、Channel、Selector分析
Bufferpublic abstract class Buffer { ... // Invariants: mark &amp;lt;= position &amp;lt;= limit &amp;lt;= capacity private int mark = -1; private int position = 0; private int limi...
2018-09-06 14:52:12
308
原创 Java NIO原理与简单实现
Java NIO 简介JAVA NIO有两种解释:一种叫非阻塞IO(Non-blocking I/O),另一种也叫新的IO(New I/O),其实是同一个概念。它是一种同步非阻塞的I/O模型,也是I/O多路复用的基础,已经被越来越多地应用到大型应用服务器,成为解决高并发与大量连接、I/O处理问题的有效方式。NIO是一种基于通道和缓冲区的I/O方式,它可以使用Native函数库直接分配堆外内...
2018-09-05 16:52:36
48502
16
原创 IO原理理解与IO模型
基本概念Linux内核将所有外部设备都看做一个文件来操作。那么我们对与外部设备的操作都可以看做是对文件进行操作。我们对一个文件的读写,都通过调用内核提供的系统调用;内核给我们返回一个file descriptor(fd,文件描述符),对一个socket的读写也会有相应的描述符,称为socketfd(socket描述符)。描述符就是一个数字(可以理解为一个索引),指向内核中一个结构体(文件路径...
2018-09-05 11:16:54
7082
原创 Java Socket编程及源码解析
Java Socket示例ServerSocketpublic class BioServer { private int port; private ExecutorService service = Executors.newFixedThreadPool(3); public BioServer(int port) { this.port...
2018-09-04 16:47:42
6451
1
原创 Socket 编程原理
socket简介IP层的ip地址可以唯一标示主机,而TCP层协议和端口号可以唯一标示主机的一个进程,这样我们可以利用ip地址+协议+端口号唯一标示网络中的一个进程。socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信。 socket起源于UNIX,在Unix一切皆文件哲学的思想下,socket是一种”打开—读...
2018-09-04 16:08:20
672
原创 TCP/IP简单理解
TCP/IP协议簇应用层:TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 等等传输层:TCP,UDP网络层:IP,ICMP,OSPF,EIGRP,IGMP数据链路层:SLIP,CSLIP,PPP,MTU每一抽象层建立在低一层提供的服务上,并且为高一层提供服务,看起来大概是这样子的 首先来看看在网络中,一帧以太网数据包的格式: 在Linux 操作系...
2018-09-04 13:36:31
1108
原创 Spring 组件概述
Spring 概述Spring 基本知识简介 Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。Spring的核心是控制反转(IoC)和面向切面(AOP)。Spring IoC(Inversion of Control):控制反转,是关于一个对...
2018-09-04 11:38:15
7670
原创 tomcat源码系列---HTTP请求处理过程
tomcat源码系列—HTTP请求处理过程分析tomcat对HTTP请求的处理过程得从Connector的架构说起,前面说过Connector是用于接收请求,并将请求封装成Request和Response,然后交给Container处理,处理完之后再由Connector将处理结果返回给客户端。 Connector的结构图 Connector使用ProtocolHandler来处理请求的...
2018-09-03 22:10:15
4727
原创 tomcat源码系列---启动分析之webapp
tomcat源码系列—启动分析(四)webapp前言上一篇文章中我们分析了 Service、Engine、Host、Pipeline、Valve 组件的启动逻辑,在 HostConfig 中会实例化 StandardContext,并启动 Context 容器,完成 webapp 应用程序的启动,这一块是最贴近我们开发的应用程序。在这一篇文章中,我们将要分析 tomcat 是如何解析并...
2018-09-03 22:07:34
593
原创 tomcat源码系列---启动分析之Catalina启动
tomcat源码系列—启动分析之Catalina启动tomcat的初始化过程,是由Bootstrap反射调用Catalina的load方法完成tomcat的初始化,包括server.xml的解析、实例化各大组件、初始化组件等逻辑。那么tomcat又是如何启动webapp应用,又是如何加载应用程序的ServletContextListener,以及Servlet呢? tomcat整体的启动逻辑...
2018-09-03 22:06:24
1546
1
原创 tomcat源码系列---启动分析之Catalina初始化
tomcat源码系列—启动分析之Catalina初始化Bootstraptomcat运行是通过Bootstrap的main方法启动的,Bootstrap是tomcat的入口,它会完成初始化ClassLoader,实例化Catalina以及load、start动作。 静态代码块中设置和加载tomcat的运行环境。main方法public static void main(S...
2018-09-03 22:04:04
447
原创 tomcat源码系列---启动分析之Lifecycle
tomcat源码系列—启动分析(一)LifecycleLiftcycleLiftCycle接口是一个公用的接口,定义了组件生命周期的一些方法,用于启动、停止Catalina组件。组件的生命周期包括:init、start、stop、destory,以及定义了各种事件的常量,操作LifecycleListener的API,是一个典型的观察者模式。各大组件均实现了Lifecycle接口,如 ...
2018-09-03 22:01:46
441
原创 Tomcat框架设计
总体架构 Tomcat最顶层的容器是Server,代表着整个服务,控制着整个Tomcat的生命周期。一个Server可以包含至少一个Service,用于具体提供服务。 Service主要包含两个部分:Connector和Container。从上图中可以看出 Tomcat 的心脏就是这两个组件,他们的作用如下: - Connector用于处理连接相关的事情,并提供Socket与Reques...
2018-08-21 20:26:55
616
原创 tomcat源码系列---环境搭建
使用Idea + Maven搭建Tomcat源码的开发环境。使用的Tomcat是8.5.23版本,Tomcat是用Ant构建的,基于本人或大部分开发习惯于Maven,所以采用Maven来构建Tomcat源码项目。下载Tomcat源码包和软件包 https://tomcat.apache.org/download-80.cgi 由于源码中没有Tomcat启动需要的lib和其他配置,其实软件...
2018-08-20 09:57:17
2953
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅