自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Vue2学习(3)--组件中的通信方式/组件之间的交互

本文总结了Vue组件间通信的多种方式:1. Props:父组件通过props向子组件传递数据,支持类型校验、必填项、默认值和自定义验证器。2. $emit:子组件通过$emit触发事件向父组件传递数据,实现子到父的通信。3. $parent/$children(不推荐):直接访问父/子组件实例,会破坏单向数据流,增加耦合度。4. refs:父组件通过ref属性直接访问子组件实例,调用其方法或读取数据。5. EventBus:通过中央事件总线实现任意组件间通信,需注意及时销毁监听。6. Vuex:全局状态管理

2026-06-15 21:07:09 467

原创 Vue2学习(2)--代码拆成多文件,带你理清 Vue 工程化的核心脉络

本文介绍了Vue2项目的创建、结构分析与核心功能实现: 项目搭建:通过Vue CLI创建项目,安装Vue Router 3.5.2作为路由插件。 项目入口:解析main.js的核心作用,包括Vue实例初始化、根组件挂载到#app节点,以及render函数和$mount方法的实现原理。 页面控制架构: 宏观布局:App.vue定义全局结构和路由出口 路由控制:router/index.js配置路径映射和守卫逻辑 组件实现:.vue文件的三段式开发(template/script/style) 路由进阶功能:

2026-06-15 20:07:41 260

原创 Vue2学习(1)--了解基本方法与概念

本文介绍了Vue.js的基础使用方法,包括开发环境配置、HTML模板规范以及常用指令和方法的详细说明。主要内容包括:1. 开发环境搭建:使用VSCode安装Volar和LiveServer插件,创建HTML文件快速预览Vue效果;2. HTML模板规范:强调文档类型声明、字符编码、语言设置等必备元素;3. Vue核心指令:详细讲解v-bind、v-model、v-if、v-for等指令的用法和场景;4. 常用方法:介绍data、methods、computed、watch等选项的用途和区别;5. 其他注意事

2026-06-09 22:19:57 367

原创 SSeEmitter的基本使用和介绍

摘要:SSE(Server-Sent Events)技术详解 SSE通过SseEmitter实现服务器向客户端的单向实时数据推送,适用于进度更新、AI流式对话、实时通知等场景。核心方法包括构造连接(支持超时设置)、发送数据(支持事件名、ID、重连时间等元数据)、生命周期回调(超时/错误处理)及连接管理。 优点: 长连接降低轮询开销,节省服务器资源。 浏览器自动重连,开发复杂度低于WebSocket。 缺点: 仅支持文本传输,不兼容IE。 需注意代理服务器缓存(如Nginx需关闭缓冲)和分布式环境连接管理(需

2026-06-09 22:04:15 624

原创 Java 日志框架详解:SLF4J + Logback 从入门到实战

本文介绍了SLF4J和Logback日志框架的核心功能与配置方法。SLF4J提供高效的占位符支持、MDC多线程追踪和五种日志级别(TRACE到ERROR)。Logback作为SLF4J实现,具有高性能、自动重载配置、灵活输出方式等特点。重点讲解了Logback配置文件的编写,包括全局变量定义、Appender配置(控制台/文件输出)、滚动策略、异步日志等,并提供了完整配置示例。通过合理配置可实现自定义日志格式、级别过滤和分布式链路追踪,提升系统可观测性。

2026-05-30 14:40:07 357

原创 Windows 批处理语法笔记:从入门到一键部署项目

本文总结了Windows批处理脚本常用命令及使用技巧,主要内容包括:1. 基础命令:echo控制回显、chcp设置编码、set管理变量、%errorlevel%获取状态码、pause暂停执行等;2. 系统操作:net管理服务、timeout延迟、exit退出控制、pushd/popd目录切换;3. 进程控制:start启动新窗口(含参数详解)、cmd命令模式(/k保持打开、/c执行后关闭);4. 高级功能:延迟变量扩展(!var!)、for循环、findstr文本搜索、color颜色设置、标签跳转等;5.

2026-05-30 14:39:17 341

原创 从 Volatile 到 ThreadLocal:Java 线程安全机制备忘

本文系统介绍了Java并发编程中的四种同步机制:1. volatile轻量级同步,保证可见性和有序性但不保证原子性,适用于状态标志和低开销读写策略;2. CAS无锁机制,通过硬件指令实现原子操作,适用于原子类和并发集合,但存在ABA问题;3. 互斥同步包括synchronized和ReentrantLock,前者自动管理锁,后者提供更灵活的锁控制;4. ThreadLocal实现线程隔离,InheritableThreadLocal支持父子线程继承,TransmittableThreadLocal适配线程池

2026-05-21 21:19:12 521

原创 leetcode hot100(4)矩阵

本文总结了四个矩阵相关算法:1. 矩阵置零(73题):利用首行首列标记零元素位置,空间复杂度O(1);2. 螺旋矩阵(54题):通过边界收缩模拟螺旋遍历,时间复杂度O(mn);3. 旋转图像(48题):先上下翻转再对角线翻转实现90度旋转;4. 搜索二维矩阵II(240题):从右上角开始二分搜索,时间复杂度O(m+n)。所有算法均给出了具体实现思路和复杂度分析,重点在于利用矩阵特性优化空间和时间效率。

2026-05-21 21:18:43 138

原创 2026陕西省ICPC省赛补题(前六题)

本文记录了作者参加省赛的解题思路和代码实现。主要包括五道题目:F题通过遍历24小时寻找发送消息时间;L题通过分析数字最高位变化求解;G题构建两种目标串与原串对比找最短子串;E题使用压缩方法处理传送门强度问题;H题通过特殊处理最后一个数优化子序列选择。其中A题未完成,作者表示遗憾未能获得银牌。各题解法均附有详细思路和完整代码实现。

2026-05-17 23:56:51 421

原创 温故知新:Java 线程创建方式与特点总结

Java线程创建方式对比及线程池应用 摘要:本文对比了三种Java线程创建方式:继承Thread类、实现Runnable接口和实现Callable接口。继承Thread类简单直观但受单继承限制;Runnable接口更灵活,支持资源共享;Callable接口可返回结果和抛出异常。线程池通过ThreadPoolExecutor实现线程复用,包含核心线程数、最大线程数等参数配置,提供多种阻塞队列和拒绝策略。虚拟线程(Java 19+)提供轻量级并发方案。ScheduledThreadPoolExecutor支持定

2026-05-14 23:57:53 804

原创 2025ccpc南昌补题笔记(前六题)

这篇文章记录了作者在解决几个编程竞赛题目时的思路和代码实现。主要包括以下几个题目: 羽毛球比赛:简单的if条件判断,根据比分决定胜负。 玻璃碎晶:贪心算法处理,根据n的不同取值情况(n%3等于0、1、2)分别处理。 扭蛋问题:贪心算法模拟最优解,在最坏情况下计算最少需要的扭蛋币数量。 点心分配:贪心处理四种取模情况,优先处理特定情况以避免剩余单个点心。 珍珠链:通过约束条件和后缀计算,确保插入操作最优,避免光彩值超过限制。 虫洞分组:使用滑动窗口和线段树优化,找到满足条件的最长子序列。 每个问题都提供了详细

2026-05-14 23:56:16 468

原创 leetcode hot100(3)子串

本文介绍了三个算法问题的优化解法: 和为K的子数组:通过前缀和与哈希表优化,将时间复杂度从O(n²)降至O(n)。利用哈希表记录前缀和出现次数,快速查找满足pre[j-1]=pre[i]-k的j值。 滑动窗口最大值:使用双端队列维护可能成为窗口最大值的元素索引,保证队列有序且元素在窗口范围内,实现O(n)时间复杂度。 最小覆盖子串:采用滑动窗口和计数数组,通过维护need变量判断窗口是否覆盖目标字符串,在O(m+n)时间内找到最小覆盖子串。窗口扩展时减少计数,收缩时恢复计数,仅当计数大于0时才调整need值

2026-05-11 15:42:45 229

原创 Java集合框架(List/Set/Queue)核心总结与代码示例

Java集合框架摘要 List: ArrayList:动态数组实现,随机访问快(O(1)),中间增删慢(O(n)),默认容量10,扩容50% LinkedList:双向链表实现,增删快(O(1)),随机访问慢(O(n)),适合首尾操作 Vector/Stack:线程安全但性能差,已被CopyOnWriteArrayList和ArrayDeque取代 CopyOnWriteArrayList:写时复制,读无锁写加锁,适合读多写少场景 Set: HashSet:基于HashMap,无序去重,O(1)操作 Lin

2026-05-11 12:06:27 624

原创 leetcode hot100(2)双指针,滑动窗口

本文总结了双指针和滑动窗口两类经典算法题解。双指针部分包括:移动零(交换非零元素)、盛水容器(移动较小端)、三数之和(排序后双指针优化)、接雨水(维护左右最大值)。滑动窗口部分包括:无重复字符子串(哈希表记录位置)、字母异位词(固定窗口比较字母频率)。所有解法均达到O(n)时间复杂度,通过指针移动或窗口滑动高效解决问题,适用于数组/字符串处理场景。

2026-05-08 20:53:08 364

原创 Map常用实现类和常用方法

本文摘要: Java中Map接口的常用实现类包括HashMap、LinkedHashMap、TreeMap、Hashtable和ConcurrentHashMap。HashMap基于哈希表实现,具有无序性、高性能特点;LinkedHashMap通过双向链表维护插入顺序;TreeMap基于红黑树实现自动排序。Hashtable虽线程安全但性能差,已被ConcurrentHashMap取代。ConcurrentHashMap采用CAS+synchronized机制实现高效并发。文章详细介绍了各实现类的底层结构、

2026-05-08 20:46:11 461

原创 String常用方法

本文总结了Java中String类的常用方法及注意事项,主要内容包括:1)String不可变性,所有修改操作都会返回新对象;2)==与equals的区别,以及常量池机制;3)空指针异常防范;4)字符串长度、判空等基础操作;5)查找、截取子串方法;6)大小写转换、去除空格等处理;7)内容比较方法;8)类型转换与编码处理。特别强调了字符串拼接应使用StringBuilder而非+操作符,以及避免空指针的编程技巧。

2026-04-29 23:55:28 201

原创 DAG 学习笔记:从拓扑排序到并行执行

本文介绍了有向无环图(DAG)的基本概念及其在工作流中的应用。DAG具有有向性和无环性特点,能够结构化表达任务依赖关系,支持智能排序和并行执行。文章详细阐述了拓扑排序(Kahn算法)的实现步骤和DFS检测循环依赖的方法,并提供了代码示例。针对DAG的执行过程,说明了如何按依赖顺序执行节点并传递输出结果。最后提出了并行执行的优化方案,通过线程池实现无依赖节点的并发处理。文章还指出了DAG模型在动态任务生成和循环处理方面的局限性。

2026-04-29 15:13:37 505

原创 Spring AI 开发笔记:ChatClient 的创建、配置与工具函数注册

本文介绍了SpringAI框架中ChatClient的核心功能与实现方式。ChatClient作为统一LLM客户端,提供标准化API支持多种大语言模型交互,主要功能包括:1)支持Prompt链式构建;2)通过FunctionCallback实现工具函数注册与调用;3)温度参数控制生成多样性(0.0-1.0范围);4)流式响应与批量请求处理。重点解析了函数调用的实现机制,包括FunctionCallback接口设计、JSON Schema参数定义,以及Consumer回调的传递机制,通过单一事件源和多点触发实

2026-04-24 17:41:09 548

原创 leetcode hot100(1) 哈希

本文展示了三个使用哈希表解决算法问题的案例。1.两数之和:通过哈希表存储数值与下标,在O(n)时间内找到相加等于目标值的两个数。2.字母异位词分组:将排序后的字符串作为哈希表键,实现对同组异位词的高效分组。3.最长连续序列:利用哈希表快速查询特性,通过判断序列起点来找出最长连续数字序列。三个案例均体现了哈希表在降低时间复杂度方面的重要作用,特别是最后一个案例强调了处理重复元素时的注意事项。

2026-04-23 19:14:23 74

原创 LangGraph 工作流引擎执行工作流过程

本文介绍了基于LangGraph4j框架的工作流引擎设计与实现。该引擎通过GraphBuilder构建状态图,NodeAdapter将节点适配为可执行动作,StateManager管理状态传递。核心组件包括:1) AgentState作为状态容器,支持泛型、线程安全和自动合并;2) 异步节点执行机制,通过Lambda表达式实现状态传递;3) 可视化工作流配置,支持节点类型扩展和条件分支。引擎执行流程包含初始化状态、编译图结构、执行节点逻辑、处理结果输出等步骤,实现了从用户输入到业务输出的自动化处理,可应用于

2026-04-23 01:07:47 605

原创 Docker笔记

Docker Compose项目部署与MySQL容器初始化指南摘要:本文详细介绍了使用Docker Compose部署项目时的关键操作流程。重点包括:1)MySQL容器启动时自动执行SQL脚本的原理,通过/docker-entrypoint-initdb.d目录实现数据库初始化;2)常用Docker Compose指令解析,如up/down命令的使用场景和参数作用;3)数据持久化的两种方案对比(绑定挂载与命名卷);4)完整的故障排查方法,涵盖状态检查、日志分析和容器调试技巧。同时提供了Spring Boo

2026-04-15 21:29:59 393

原创 处理用户的聊天消息,通过 AI 生成流式响应

本文描述了一个基于向量检索和LLM的问答系统完整流程:1)构建上下文阶段,将用户问题转化为向量,通过混合搜索(KNN+BM25)从ES中检索相关文档片段;2)API调用阶段,使用WebClient发送HTTP请求,通过回调函数流式处理返回数据并实时推送至前端;3)后续处理包括保存对话历史到Redis(限制20条)和资源清理。系统实现了权限控制、错误重试机制,并通过异步回调实现高效的数据流处理,同时保留时间戳信息以便追踪对话记录。

2026-03-24 18:21:28 65

原创 java面经知识

Java关键版本演进与SpringBoot技术选型分析 摘要:本文系统梳理了Java 8至21版本的核心特性演进,包括Java 8的Lambda表达式、Java 17的Record类和密封类等重大改进。重点分析了SpringBoot 3.x强制要求Java 17+的原因:Spring Framework 6深度集成了Records、模式匹配等新特性,可大幅减少样板代码(如Record类使DTO定义从100+行简化为1行)。同时对比了Stream API与传统循环的优劣,探讨了JVM线程栈分配机制,并详解了R

2026-03-20 13:30:59 358

原创 WebSocket传递信息

本文介绍了WebSocket的实现流程及与HTTP的区别。WebSocket采用持久连接实现双向通信,适合实时应用;HTTP是短连接单向通信。在Spring中实现WebSocket需:1)创建继承TextWebSocketHandler的处理器类,重写连接建立、消息处理和连接关闭方法;2)配置WebSocket路径。具体流程包括:配置WebSocket端点、建立连接后保存会话、处理消息、连接关闭时清理资源。通过@EnableWebSocket注解,Spring会自动处理协议升级等底层细节,开发者只需关注业务

2026-03-16 21:03:05 489

原创 将文本转化为向量化表示

本文介绍了文本向量化的实现过程,重点对比了Pinecone和Elasticsearch(ES)两种存储方案的优劣。通过分批次处理文本内容,使用WebClient配置向大模型发送向量化请求,详细说明了请求构建、重试机制和响应处理等关键步骤。在存储环节,演示了如何将向量数据封装为文档实体并批量存入ES,最终实现同时支持向量相似度检索和关键词全文搜索的功能。方案选择上,ES因其支持中文分词、可直接存储原文且成本较低等优势,成为更适合中文场景的解决方案。

2026-03-16 12:35:07 377

原创 一般情况下的下载文件

本文介绍了三种文件获取方式:1)本地文件系统路径处理,通过File类检查文件存在性后返回输入流;2)远程URL处理,包括HTTP连接设置、超时配置、请求头添加和响应状态码检查;3)大文件流式下载方案,使用8KB缓冲区进行分块传输,包含文件大小验证(限制500MB)、进度跟踪和下载速度计算功能。代码展示了HttpURLConnection的惰性请求特性,并提供了完整的下载结果封装类,包含文件大小、下载时长和平均速度等统计信息。

2026-03-15 17:56:11 174

原创 Apache Tika

Apache Tika 是一个由 Apache 软件基金会开发的开源内容分析工具包,它能够从各种文件格式中自动检测和提取文本内容和元数据。

2026-03-15 15:15:16 657

原创 过滤器Filter

摘要:JavaWeb过滤器是用于拦截请求和响应的核心组件,通过继承OncePerRequestFilter并重写doFilterInternal方法实现。过滤器执行顺序由Order值决定,值越小优先级越高。典型应用包括:1)权限控制,通过解析JWT令牌验证用户角色;2)日志记录,包装请求/响应以记录完整信息。ContentCachingResponseWrapper可解决响应流只能读取一次的问题,需注意最后调用copyBodyToResponse()发送响应。过滤器在安全控制和系统监控等方面具有重要作用。

2026-03-14 19:10:10 369

原创 Runtime

本文介绍了Java Runtime类的核心用法,主要包括三方面:1)内存管理方法(maxMemory、totalMemory、freeMemory等)及GC调用的注意事项;2)系统命令执行(exec方法)和进程管理(exit、shutdownHook等);3)CPU核心数获取及应用场景。特别指出ProcessBuilder比Runtime.exec更安全灵活,并解释了线程池大小设置原理。文章提供了内存监控、命令执行、资源管理等实用代码示例,适合Java开发者参考。

2026-03-14 17:26:35 336

原创 c++算法笔记

本文为作者学习算法时所用的一些板子,仅供参考。

2026-03-13 20:05:52 92

原创 分片上传大文件

此文为作者学习,记录所用,如果有部分问题麻烦指出。该部分为通过MD5和MinIO分片上传防止大文件上传出现中断而需要重新下载的情况。

2026-03-13 15:42:15 744

原创 xxj-job和Caffine学习笔记

这两天学习了xxl-job怎么实现定时任务,以此可以定时删除或者读取数据,减少存储压力,了解了canel和es(不能上手,实现不出来),还熟悉了Cache缓存数据的一些细节和配置Caffeine来缓存数据。决定不止要做力扣,还要学习cf竞赛算法,多参加竞赛混奖。

2025-04-26 00:41:19 788

原创 无标题学习笔记(一)

今日练习了redis的使用,stream流的使用。

2025-04-23 00:37:12 563

原创 Aop,kafka学习笔记

今日学习了使用aop在完成数据库操作后通过Kafka异步处理信息传入redis当中,复习了部分简单算法题。

2025-04-20 21:50:40 592

原创 苍穹外卖笔记

Git是一个分布式的版本控制工具,通常用来对软件开发过程中的源代码文件进行管理。通过git仓库来存储和管理这些文件,Git仓库分两种:本地仓库:开发人员自己电脑上的Git仓库。远程仓库:远程服务器上的Git仓库。commit:提交,将本地文件和版本信息保存到本地仓库。push:推送,将本地仓库文件和版本信息上传到远程仓库。pull:拉取,将远程仓库文件和版本信息下载到本地仓库。

2025-04-10 11:50:37 1097

原创 JDBC和Mybatis-plus笔记

本文摘要: JDBC是Java操作关系型数据库的API,需引入MySQL驱动等依赖,提供静态SQL和预编译SQL(防注入)两种操作方式。MyBatis作为持久层框架简化JDBC开发,通过注解或XML配置SQL语句,支持#{}(防注入)和${}(字符串拼接)两种参数传递方式。MyBatis-Plus进一步简化单表CRUD操作,提供@TableId、@TableName等注解配置映射关系,内置通用Mapper和Service,配合Wrapper构建复杂查询条件。两者均需注意资源释放和SQL注入防护,MyBati

2025-03-22 16:37:39 489

原创 QT网盘笔记(日志,qss,加密)

本章为本人在学习QT网盘时学到的知识,在此记录。

2024-12-21 21:09:14 816

原创 Qt基础和贪吃蛇小游戏(笔记)

通过点击开始游戏按钮开始游戏,撞击边界可以从另一头穿回,提供移动,加速,暂停。撞击到自己的身体提示是否结束游戏。菜单可以退出游戏,更改背景,提供按键说明(移动,暂停,加速 )

2024-11-24 22:24:30 627

原创 网络编程基础(笔记)

在对网络编程的学习中了解了IP地址,域名等概念,并且能供用代码实现一个服务端来访问网址。

2024-11-17 20:37:50 960

原创 MySQL的基本使用(笔记)

前提:SQL的命令、函数、关键字、表名、字段名,大小写效果完全相同,但推荐命令关键字这些用大写。

2024-11-10 10:27:26 383

空空如也

空空如也

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

TA关注的人

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