自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 在后端项目种filter,interceptor,Aspect包的职责都是什么

Filter 是 Servlet 容器层,面向所有 HTTP 请求,能拿原始 request / response。Interceptor 是 Spring MVC 层,面向 Controller 前后,知道目标 HandlerMethod。Aspect 是 Spring AOP 方法层,面向 Bean 方法调用,能拿参数、返回值、异常。它们不是替代关系,而是同一条请求链上从外到内、从粗到细的横切机制。最终记忆图:-> Filter # 容器层,全量横切。

2026-10-13 18:55:29 150

原创 简单讲解Java后端项目中properties包和config包,以及配置属性类相关的知识

在 Java 项目中,properties 包用于集中存放配置属性类,将 application.yml 等配置文件中的数据绑定为强类型 Java 对象。通过 @ConfigurationProperties 注解实现批量绑定,支持校验、松散绑定、IDE 提示和多环境配置。相比 @Value,它更安全、可维护性更强。推荐使用 @ConfigurationPropertiesScan 或 @EnableConfigurationProperties 启用,避免冗余注解。配置类本身是 Spring Bean,仅

2026-10-09 21:57:17 130

原创 简单讲解在Java中有关异常的相关知识(Error,Exception, RuntimeException ,BaseException )

Java异常体系以Throwable为根,分为Error(系统级严重问题,通常不捕获)和Exception(可处理的运行时异常)。Exception又分受检(checked)与非受检(unchecked),后者包括RuntimeException及自定义异常。unchecked仅表示编译器不强制处理,而非不可抛或不可捕。实际应用中,应合理使用try-with-resources、异常链、全局异常处理器,并在合适层级捕获异常,记录日志、回滚事务或返回统一错误响应。catch Error仅限顶层优雅关闭,避免尝

2026-10-09 10:02:02 227

原创 ThreadPoolExecutor 提交任务时的两条主要派发路径

作为新 Worker 的firstTask:新线程启动后,runWorker先执行firstTask,所以任务一开始就被这个新 Worker 执行。先放入workQueue:之后由存活 Worker 在runWorker循环中调用getTask(),从阻塞队列里取出来执行;如果没有 Worker,则补一个的 Worker,让它通过getTask()取。所以这两句话并不矛盾,它们分别对应execute()中的不同分支:核心线程未满或队列满但还能扩容时,走 firstTask;

2026-09-23 08:46:57 206

原创 Java中如何规范的使用ThreadLocal?

ThreadLocal的核心是实现线程隔离,为每个线程提供独立的变量副本,而非单纯“携带Context”。它通过线程本地的ThreadLocalMap存储数据,以ThreadLocal实例为键,值为线程专属数据。使用时需显式set,且仅在同一线程内有效,跨线程或线程池复用时需手动clear以防内存泄漏。正确做法是定义Holder类统一管理ThreadLocal,结合try-finally确保清理,避免上下文污染。

2026-09-21 09:25:21 104

原创 简单讲解线程池的4种拒绝策略

线程池拒绝策略在任务无法入队且无法创建新线程(或线程池已关闭)时触发。核心误区在于:非核心线程并非因“核心线程忙”而创建,而是队列满后才尝试创建;拒绝条件是“队列满且无法扩容”。四种内置策略各有适用场景:AbortPolicy抛异常,适合必须感知失败的场景;CallerRunsPolicy让提交线程执行,形成背压;DiscardPolicy静默丢弃,适用于可丢失任务;DiscardOldestPolicy丢弃旧任务保新任务,适合高优先级任务。选择应基于业务对任务丢失、系统稳定性与上游压力的权衡。

2026-09-18 20:28:11 312

原创 4个提问,deepseek讲解Java中的线程池

线程池避免频繁创建销毁线程带来的性能损耗与资源耗尽风险。直接new Thread()会导致内存溢出、上下文切换开销大、系统失控。线程池通过复用线程、限制并发数、任务队列缓冲和拒绝策略,实现高效、稳定、可监控的并发处理。不同项目需根据任务类型(CPU/IO密集)、流量特征、业务重要性及下游依赖,合理配置核心/最大线程数、有界队列、拒绝策略,并实现线程命名、隔离、监控与优雅关闭。虽参数各异,但设计原则一致:有界队列、明确拒绝策略、隔离故障、可观测、可调优。关键在于以工程思维回答“谁用、多少、怎么控、出错怎么办”

2026-09-16 21:08:04 296

原创 简单讲解Java并发中的ThreadLocal

出现的原因是:多线程中有些数据需要按线程隔离,又希望跨方法方便访问,同时不想加锁。它解决的是:线程安全问题,通过“每线程一份副本”避免共享;上下文传递问题,通过隐式绑定当前线程;非线程安全对象的线程封闭问题。没有它之前,人们主要靠:局部变量和显式传参;Lock;每线程 new 对象;自定义;自定义Thread子类字段。把这些模式标准化了,但它不是银弹:线程池场景一定要remove(),异步场景要注意上下文传递。通常放在:例如用户上下文:是全局工具类;

2026-09-16 16:51:38 363

原创 简单了解Mcp

实体层面:包含官方提供的SDK开发包(Python/TS),以及一个独立运行的后台进程(占用内存/CPU),通过stdio或Streamable HTTP与Agent实时收发数据。· 核心功能模块:工具(Tools,可执行的函数)、资源(Resources,只读数据)、提示模板(Prompts,可复用模板),三者按需提供。· 本地(stdio):服务器跑在你电脑上,操作本地文件/进程,数据不出屋,隐私安全。· MCP协议:唯一的、写在纸面上的接口蓝图(定义JSON-RPC格式、握手流程)。

2026-09-04 12:21:07 227

原创 简单讲解Java中的synchronized

在真正的互联网高并发业务代码中,我们其实很少直接用处理业务逻辑synchronized 是 Java 内置的互斥锁,通过锁住对象来保证代码块或方法在并发环境下的原子性、可见性和有序性,是解决线程安全问题最直接、最可靠的手段之一。分布式场景:现在的服务大多是分布式部署(多台机器),只能锁单台机器的JVM进程,跨机器无效。我们通常用Redis分布式锁或ZooKeeper。单机高性能场景:如果是单机高并发计数器、累加器,我们通常直接用 AtomicInteger(CAS无锁)或 LongAdder。

2026-08-26 19:38:15 188

原创 通过4个问题简单讲解:Java 集合中的 fail-fast 和 fail-safe 是什么?

fail-fast(快速失败):是“严父”。它在单线程或低并发下,用异常来教育程序员,“别乱动正在遍历的东西!,保证代码逻辑的绝对严谨。fail-safe(安全失败):是“慈母”。它在高并发下,宁可给你看旧数据(快照),也不让系统崩溃,“天塌下来也要先把响应返回给用户”,保证服务的高可用。在Java中,ArrayList和都不是用链表实现的,它们内部维护的就是一个普通的 JavaObject[]数组。你可以把它想象成一个“装对象的连续格子”。// 在 ArrayList 中// 这就是底层数组。

2026-08-16 22:10:47 390

原创 Java中常见的三个Queue的一些简单讲解

queue是一个很受重视的知识点,因为它不仅是Java集合框架的一部分,更是解决、实现和的核心基础。

2026-08-15 17:01:37 340

原创 简单讲解Java--queue--三组成对出现的方法的区别

操作类型异常派(失败抛异常)特殊值派(失败返null/false)核心选型原则插入add(e)offer(e)生产者:优先用offer做流控;初始化填充用add做断言取出remove()poll()消费者:永远用pollnull判断;原子操作且确定非空时才用remove查看element()peek()只读场景:99%情况用peek;需要强制非空前置条件时用element终极避坑指南不要用remove()element()做轮询——异常栈生成代价极高(填充StackTrace),比if。

2026-08-15 16:20:58 397

原创 与deepseek-flsah 网页版的对话,比geminni强太多了:4个问题,带你简单了解,接口与抽象类的区别,多态的概念

对比维度子类继承(类继承)接口实现(接口继承)关键词extendsimplements核心目的代码复用(少写代码)能力约定(规范约束)继承数量单继承(只能有一个父类)多实现(可以有多个接口)能否继承状态能(继承成员变量、属性)不能(接口不允许实例变量)能否继承行为能(直接拥有父类方法逻辑)不能(早期是纯抽象,默认方法需特殊处理)耦合程度强耦合(父类改动直接影响子类)弱耦合(只依赖抽象,不依赖实现)逻辑关系is-a(纵向的、树状的)can-do(横向的、标签式的)抽象类:就是用。

2026-08-13 08:45:26 342

原创 简单讲解Java中静态方法与 实例方法

是否有对象实例状态 (Field)?/ \是 否/ \使用【实例方法】 是否依赖形参以外的全局状态?/ \是 否/ \谨慎使用静态方法 使用【静态方法】(注意线程安全) (工具函数/静态工厂)

2026-08-12 16:44:07 352

原创 简单讲解Java中:行为型设计模式之---策略模式

策略模式(Strategy Pattern):定义一系列算法,将每一个算法封装起来,并使它们可以相互替换。策略模式让算法独立于使用它的客户端而变化。/*** 折扣策略接口(抽象策略角色)*//*** 计算折后价格* @param originalPrice 原价* @return 折后价*/“策略定义一族算法,抽象接口统一规;“具体实现各不同,上下文里传引用;“消除分支开闭好, Spring 注入更高效。

2026-08-12 11:28:12 167

原创 简单讲解Java中的重写与重载

统一性与多样性的完美平衡: 重载保证了同一类内部接口调用的“简单性与一致性”;重写保证了继承树上下级行为演化的“灵活性与扩展性”。自然映射现实世界: 现实生活中,“吃”这个动作可以针对不同的食物(重载:吃苹果、吃米饭);而不同动物对“发声”这个动作的实现各不相同(重写:狗汪汪、猫喵喵)。Java 这种设计完美符合人类对现实世界的抽象思维习惯。支持大型企业级框架的构建: 无论是 Standard JDK 类库(如Collection体系、IO。

2026-08-12 10:07:24 229

原创 简单讲解Java中的自动装箱与自动拆箱

他是连接基本类型与面向对象体系的“超级胶水”装箱,拆箱是针对Java中的基本类型设计的,:将基本数据类型转换为对应的包装类对象:将包装类对象转换为对应的基本数据类型。

2026-08-11 22:00:05 332

原创 简单讲解Java中包装类和基本类

语言设计:Java 采用基本类型 + 包装类的“双轨制”,是 1990 年代为了极致性能和C/C++兼容性做出的折中选择;而现代很多语言则选择在语法层面统一为“一切皆对象”,由编译器在底层做性能优化。包装类意义:包装类是基本类型通往面向对象世界的通行证,没有它,泛型集合、数据库 Null 表达、动态框架反射都将寸步难行。栈堆差异:局部变量表快、轻、随用随销;堆内存大、重、支持共享但需 GC。Java 程序员应当尽量在方法局部使用基本类型,享受栈带来的极致性能。

2026-08-11 20:46:01 322

原创 JVM vs JRE vs JDK应届生面试真题与连招解析

定义:由0和1组成的二进制指令,是CPU 唯一能直接识别并执行的语言(比如 x86 指令集或 ARM 指令集)。对比字节码.class):是 JVM 的指令,CPU 看不懂,必须由 JVM 翻译。机器码:是 CPU 的指令,CPU 拿到后可以直接在硬件层面砸向晶体管执行。定义:在程序运行过程中,被频繁调用的方法或者频繁执行的循环体(比如一个执行了 10 万次的for循环)。原理:根据计算机科学中的“二八定律”,80% 的系统资源消耗在 20% 的核心代码上。

2026-08-08 20:16:56 323

原创 RocketMQ中--Producer三种发送模式与事务机制全解析

维度同步发送 (Sync)异步发送 (Async)单向发送 (Oneway)阻塞方式阻塞当前线程非阻塞 (基于回调)非阻塞 (Fire-and-Forget)发送延迟高 (受限于网络 RT + Broker 磁盘 IO)低 (仅网络发送耗时)极低 (微秒级)系统吞吐量中 / 低高极高可靠性最高 (带 Ack 及重试)高 (带 Ack 及回调重试)最低 (无 Ack,无重试)消息丢失风险极低极低存在丢失风险典型适用场景金融交易、订单状态修改RT 敏感的主业务、高并发通知。

2026-08-06 20:27:28 327

原创 以“包结构演进”为切入点:深度剖析 RocketMQ 在高并发微服务中的落地实践

本文以医疗体征微服务为例,深入剖析了RocketMQ在高并发场景下的架构实践。传统HTTP服务与消息驱动服务的核心差异体现在:1)流量入口从Controller转向Consumer;2)数据出口从同步RPC变为异步Producer;3)需建立独立的MQ传输契约(dto.mq)。通过消费模式划分(集群/广播)、胖瘦报文设计、本地缓存协同等方案,实现了每天千万级数据的异步处理。文章对比了RocketMQ与OpenFeign的适用场景,提出"强依赖查主序用Feign,高吞吐广播用MQ"的选型原

2026-08-05 17:50:48 370

原创 简单讲解微服务向的RocketMQ的重要概念。

在构建复杂的微服务架构时,服务间的通信和解耦是至关重要的环节。Apache RocketMQ 作为一款高性能、高可靠、分布式、开源的消息中间件,在微服务生态系统中扮演着举足轻重的角色。本文将详细讲解 RocketMQ 在微服务中的作用、核心概念以及常见应用场景。

2026-07-17 10:51:23 256

原创 Claude code 搭配 deepseekAPI

DeepSeek通过API兼容层实现与Anthropic生态的无缝对接,其智能映射机制能自动将Claude格式的模型请求转换为对应的DeepSeek模型:claude-opus前缀对应deepseek-v4-pro,claude-sonnet/haiku前缀对应deepseek-v4-flash。该方案既规避了客户端限制,又保持1M上下文支持,用户可通过重命名功能直观区分模型。配置逻辑精准匹配接口设计,实现高效透明的模型调用体验。

2026-07-11 19:43:28 273

原创 Claude code 桌面端 code 模式 进阶使用技巧--沙盒无风险修改代码

Claudecode桌面端的code模式提供了一个实用的Fork功能,点击后能复制当前对话框的所有历史记录,生成带"(fork)"标识的新对话框。用户可在新对话框开启沙箱环境进行功能测试和代码修改,无需担心影响主路径文件。测试完成后可安全删除沙箱。该功能还提供zip下载指导,帮助用户学习使用claudecode的这项特性,实现安全便捷的代码实验环境。(99字)

2026-07-11 19:36:49 294

原创 简单讲解Spring DI 以及 相关注解

本文深入解析了Spring依赖注入(DI)的核心机制和工作原理。文章通过"管家管理工人"的生动比喻,详细阐述了Spring IoC容器如何通过类型匹配和名称匹配来查找并注入依赖对象。重点讲解了@Autowired的完整查找逻辑:先按类型匹配,若发现多个候选对象则依次检查@Primary优先级、@Qualifier指定名称,最后尝试变量名匹配。同时对比了@Resource注解的不同查找策略(先名称后类型)。文章还全面介绍了Spring DI体系中的关键注解:组件注册注解(@Componen

2026-06-16 15:31:33 216

原创 简单讲解前后端分离项目中 的 SpringMVC

在讲解三大板块之前,先来了解一个东西,Handler(处理器)与controller(控制器,项目中的具体类,如UserController)与 HandlerMethod(处理器)之间的关系。参数拼凑好之后,助理(HandlerAdapter)就会拿着准备好的 Java 参数,利用 Java 的反射机制,去真正调用HandlerMethod指向的那个方法,执行你写的业务逻辑。这就好比一个总机,负责把前端的诉求统一接收下来,然后再分配给具体的部门处理(具体的部门,以及分配的过程会详细的讲解)。

2026-06-15 20:51:03 203

原创 简单讲解Spring-AOP

在细讲之前先理解一句话:你把自定义注解写在 Mapper 接口上,你的 AOP 大概率会直接失效Spring AOP和。

2026-06-14 19:44:24 239

原创 简单了解Spring IOC(控制反转)

本文通过“买车换引擎”的比喻,形象讲解Java开发中控制反转(IoC)和依赖注入(DI)的核心思想。传统开发中,Service层与Dao层强耦合(如直接new具体实现类),导致切换数据库需修改源码,维护成本高。而IoC/DI模式通过: 接口抽象(定义引擎标准) 依赖注入(setter/构造器传参) 控制权反转(由调用方决定实现类) 实现组件解耦,使程序更灵活。文中对比了支付接口(多业务逻辑需手写实现类)与MyBatis Mapper(固定套路可自动生成实现)的差异,并分析XML配置相比Java实现类的三大优

2026-06-13 19:08:05 197

原创 deepseek详细讲解KMP算法中的next数组

摘要:KMP算法中j=b[j-1]的核心在于利用已构建的next数组信息进行高效回溯。当模式串在位置j失配时,b[j-1]存储的是前j-1个字符子串的最长相等前后缀长度,这表示可以跳过这部分已匹配的前缀。通过j-1索引访问next数组,算法能够快速回退到更短的匹配前缀继续比较,避免了从头开始的低效匹配。这种利用部分匹配信息的回溯机制正是KMP算法相比暴力匹配高效的关键所在。

2026-03-02 20:30:52 527

原创 人工高级生物智能--人类智能时代,简单畅想

所以为了实现智能需求,矿物的需求不会消失,在美好的社会,这种需求反而会更大。那么为了实现智能需求,交换活动还会存在,只不过由原先的人类智能交换矿物,变为人工人类智能的交换矿物。在初始时代,我们通过交换自身的高级生物智能,来满足自身的需求(讨论前提:需求之间的交换创造社会规则)。我们可以通过自身的高级生物智能(人类智能),来满足社会中明码标价的需求和未被发现的需求,从中获取货币。我认为是需求的交换,如果需求交换的越频繁,需求越大,那么黄金的价值越大。那么如何高效的,跨区域的,跨时间的完成这种需求交换活动。

2026-01-03 13:48:07 265

原创 儒学:君子不器

文章探讨"君子不成大器"的深层含义,指出过度追求"大器"反而会被外物所困。作者认为所谓"大器"常被错误地定义为权力、财富等外在力量,这种追逐容易使人迷失本心。文章强调,追求"力"本身无可厚非,但关键在于如何运用这些力量。真正的君子不应以外在成就为目标,而应保持内心的独立与灵性。

2025-11-23 16:40:48 143

原创 简单了解:大模型开发的4种方式

大模型接受到提示词后,会根据提示词调用外部工具,从中得到信息,整合后在回答。不同于RAG的外挂知识库,微调是将知识库融合进大模型中。第四种:工具 + 知识库 + 微调大模型参数。对大模型动刀,成本高,风险高(效果可能变差)第三种:调用工具 和 知识库。智能客服应用的非常广泛。

2025-10-26 12:27:35 242

原创 简单阐述我(初学者)对于基于Agent架构开发的理解

基于Agent架构的开发:假设这个世界的主人是AI,它们自己开发工具,完成工作。有一天AI创造了人类,并且可以通过训练人类,使他们掌握并记忆那些知识,技巧。然后人类可以根据AI的指示,使用AI给的工具,去代替AI完成一些工作,这叫基于人类开发。会不会使用工具:deep seek:只进行深度思考--> 大模型;假设:AI对人类下达命令:使用langchain 开发一个Agent应用,解决一个工程问题。智能体 = 大脑 + 记忆 + 工具 + 计划 + 行动。2.我们有相关的开发经验,并且了解工程问题。

2025-10-25 21:37:23 212

原创 langchain: 基于RAG架构的开发的简单讲解

本文概述了文本处理与检索增强生成(RAG)的流程:1)通过切割器将文档分块;2)用嵌入模型将文本块向量化后存入向量数据库;3)用户提问时,先将问题向量化,再从数据库中检索相似内容。文章重点讨论了技术难点:文件解析(处理图片/表格)、切割策略(按字数/语义/字符等)、检索方式(相似度/MMR)和知识重排序(提升专业回答精度)。向量化的核心作用是为文本块建立语义标签,便于精准匹配用户问题。整个流程体现了"检索-增强-生成"的技术逻辑,其中重排序环节能显著提升回答的专业性。

2025-10-25 21:02:45 262

原创 弱者的中庸

还未面对琐事,在你的情绪未泵发出来时,在你平静之时,是”中“,面对琐事之后,你的情绪泵发了,所产生的想法,付出的行动”中“(这里是河南话--行,可以,正面评价),那就是和--与道和。和也者,天下之达道也。不睹,不问,指的是外部的琐事。我恐惧,我戒慎,因为我不想让那些没有见面的琐事打击我,我想当一个瞎子,自欺欺人的瞎子,因为我是弱者,因为我想逃避那种害怕,厌烦,恐惧,种种的负面。天命:客观内容,你的长相,你的原生家庭,社会环境,你的智商,你的身体是否强壮,你是否认知敏感,这并不是你能决定的,这是天命--性。

2025-07-20 01:46:54 143

原创 无题 字数不够

建议提升处:若将"风木"改为"风树",既合《诗经》"南山有树"的古雅,又能与末句"无泪"形成"树-木"的隐喻呼应(古乐府有"木犹如此,人何以堪"之叹)。忆而不能,故追逐,最终却跌入"无泪"的绝对虚空,比之老杜"涕泪满衣裳"更显绝望。"空门风木"的意象组合极妙:佛门本应"空",却以"独守"强化孤绝;"风木"典出《左传》"树欲静而风不止",暗含子欲养而亲不待的悲恸。"闭目无泪"的肢体语言胜过千言万语,较之李商隐"此情可待成追忆"更为决绝,与王维"闭门著书多岁月"的闲适形成强烈反差。deepseek 吹牛大王。

2025-06-18 20:43:49 240

原创 学志 题目字数不够

雪飘(飘雪)寒衣上(寒夜冷,中),灯照我心明。几万里学途,今我抬头望。多少载风霜,又能有几许。余生尽心学,学途死为终。

2025-06-18 20:34:42 157

原创 正则化项(特别是前面的学习率) 对 偏差 方差的影响

然后我就开始了瞎猜,得出了一个结论,就命名其为--无敌的结论1:特征前的参数越大,函数就越容易受到该特征数据的拉扯,从而使函数图像产生强烈的形变,当然,函数图像也会更加契合这个特征数据,当特征数量多的时候,形变就会变得很剧烈(过拟合,正则化代价函数可以弱化过拟合)(我们可以不恰当的称呼它们为正则化项,前面的系数就是学习率),使他们暴露在代价函数中,让代价函数审判它们,并对他们进行缩小,(这正则化项做的事,只不过,正则化项,包含所有参数,使他们全部暴漏在代价函数中,下面会解释原因)从左到右,学习率 再减小。

2025-06-04 15:04:36 343

原创 不同的多项式次数 如何影响 模型的偏差和方差

(这个规律发现的是不是有点草率了),我们接下来会仔细探讨,当d 在改变时,J-train J-cv是如何改变的,是否如我们 草率发现的规律一样。出现第三种情况的愿意是,有一部分的输入是过拟合,另一部分的输入是欠拟合(这看起来很奇怪,但这是小概率事件,我们主要关注前两种问题,而不是两者都发生)。左边的是过拟合,右边的是欠拟合。先了解一下:左边的是高偏差--欠拟合 右边的是高方差--过拟合,接下来便是 如何判断它们。3.J-cv 远大于 J-train 时,并且J-train也很高,则是高方差,高偏差。

2025-06-04 11:07:02 294

空空如也

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

TA关注的人

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