自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 用户中心项目实战(springboot+vue快速开发管理系统)

本文介绍了企业级管理系统开发的全流程与技术选型方案。项目采用前后端分离架构,前端使用Vue+Ant Design Pro组件库,后端基于SpringBoot+MyBatis-Plus技术栈搭建。详细展示了从需求分析(用户管理功能)、技术选型到后端初始化的完整过程,包括SpringBoot项目创建、数据库设计(MySQL表结构)、MyBatis-Plus和Knife4j接口文档集成等关键步骤。文档提供了详细的配置代码和截图说明,涵盖数据库连接配置、依赖管理、接口文档生成等企业开发必备环节,帮助开发者快速掌握管

2025-07-19 13:50:50 979

原创 什么是RAG?RAG的主要流程是什么?(下)

接上回,本文将继续介绍Rag的有关知识,什么自查询?为什么在RAG中需要自查询?如何进行RAG调优后的效果评估?请给出真实应用场景中采用的效果评估标准与方法自查询:通过“解析 + 过滤”实现精确条件检索(如限定时间、作者)。示例:用户查询“2025年鸭鸭的用户报告” → 拆解为语义关键词(用户报告)+ 元数据(作者=鸭鸭,时间=2025)→ 结构化查询。查询扩展:通过“生成 + 合并”提升语义覆盖(如同义词扩展)。示例。

2025-07-17 15:56:52 1036

原创 如何用git提交代码进行协作开发

代码提交规范指南 在企业协作开发中,规范的代码提交流程至关重要。本文介绍了完整的Git操作规范: 分支命名:严格区分功能分支(feature/xxx)、修复分支(bugfix/xxx)和发布分支(release/xxx),禁止直接提交到master分支。 Commit规范:每个commit保持单一功能修改,采用"类型:描述"格式(如feat:支持新功能),确保信息清晰准确。 PR/MR流程:创建合并请求时,标题简明扼要,复杂修改需补充说明,经团队审核后合并,并及时同步主分支代码。 这些规

2025-07-16 22:34:27 636

原创 什么是RAG?RAG的主要流程是什么?(上)

RAG(检索增强生成)是一种结合信息检索与生成模型的技术,通过外部知识库增强AI回答的准确性。其核心流程包括:1)检索阶段,利用向量化技术从知识库中匹配相关内容;2)生成阶段,将检索结果作为上下文输入大模型生成最终回答。为提高检索质量,RAG引入Rerank(重排序)环节,对初步检索结果进行精排。数据预处理是优化RAG的关键,需进行多源数据整合、清洗降噪、文本分块和元数据标注等操作,确保检索内容精准有效。该技术解决了传统生成模型知识滞后和内部文档处理的问题,无需重新训练模型即可动态更新知识库。

2025-07-14 18:15:54 796

原创 详解HashMap

摘要: HashMap是基于哈希表的键值对存储结构,采用数组+链表/红黑树解决哈希冲突。JDK1.8引入红黑树优化,当链表长度≥8时转为红黑树(查找效率O(logn)),节点数≤6时退化回链表。关键优化包括:改进哈希函数(高位扰动)、尾插法避免多线程环状链表、扩容时元素迁移策略优化。性能优化建议:合理设置初始容量(减少扩容)、调整负载因子(默认0.75)、确保键的hashCode()分布均匀。线程安全场景推荐ConcurrentHashMap,需有序访问时可选用LinkedHashMap或TreeMap。注

2025-07-13 14:51:34 680

原创 TCP协议的三次握手与四次挥手分别指什么?

TCP协议的三次握手与四次挥手是建立和终止可靠连接的关键机制。三次握手(SYN→SYN-ACK→ACK)用于同步序列号并防止历史错误连接。四次挥手(FIN→ACK→FIN→ACK)确保双方安全关闭连接,其中ACK和FIN可能合并为三次挥手。这些机制保障了TCP传输的可靠性和数据完整性。

2025-07-12 17:02:35 506

原创 SpringBoot常用注解

以上便是SpringBoot中一些常用的注解,它们能极大地简化开发流程。

2025-07-02 22:04:56 713

原创 SpringBoot控制反转

控制反转(IoC)是Spring Boot的核心特性,通过依赖注入(DI)实现对象解耦。传统开发中对象自行管理依赖,导致代码耦合度高;IoC将对象创建和依赖管理交给Spring容器,通过构造器注入(推荐)、Setter注入或字段注入实现。IoC容器(ApplicationContext)管理Bean的生命周期,提供自动装配、统一配置等优势,显著提升代码可维护性和可测试性。关键注解包括@Component、@Autowired等。IoC是Spring生态的基础,支持自动配置、AOP等核心功能。

2025-07-02 21:58:47 944

原创 springboot切面编程

SpringBoot的AOP(面向切面编程)是一种将横切关注点(如日志、权限等)与核心业务逻辑分离的技术。文章首先解释了AOP的核心概念,包括切面、连接点、通知等,然后通过一个权限校验的代码示例展示其实际应用。示例中自定义了@AuthCheck注解和AuthInterceptor切面类,实现了方法级权限拦截。AOP的优势在于关注点分离、声明式编程和通过动态代理实现功能增强,避免了代码重复,提高了系统的可维护性和扩展性。典型应用场景包括日志记录、事务管理、权限控制等。

2025-07-02 21:44:59 862 1

原创 详解快速排序

快速排序是一种高效的分治排序算法,其核心思想是通过基准值将数组分为两部分进行递归排序。算法步骤包括:选择基准值、分区操作(将小于基准的放左边,大于基准的放右边)和递归处理子数组。时间复杂度在最优和平均情况下为O(nlogn),最坏为O(n^2)。优化策略包括合理选择基准值(如三数取中)和小数组改用插入排序。Java实现展示了随机基准选择、双指针分区和递归调用的完整流程,通过交换元素完成排序,最终实现数组的升序排列。

2025-06-29 22:38:59 408

原创 在项目中如何巧妙使用缓存

本文介绍了缓存技术在提升系统性能中的应用,重点对比了Redis分布式缓存和Caffeine本地缓存的特点与适用场景。分布式缓存适合需要共享、高可用的数据,而本地缓存更适合高频低延迟的单机应用。文章详细阐述了缓存设计三要素(key、value、过期时间)的实现方案,并提出了多级缓存架构,通过结合本地缓存的高性能和分布式缓存的可靠性,实现最优的系统性能提升。在实际项目中,应根据数据访问频率、一致性要求等因素选择合适的缓存策略。

2025-06-28 22:38:56 758

原创 Java面试刷题路线

Java面试刷题路线图

2025-06-27 22:42:36 106

原创 @Autowired 和 @Resource 有什么区别?

文章详细对比了Spring中@Autowired和@Resource两个依赖注入注解的五大区别:1)来源不同(@Autowired来自Spring,@Resource来自JSR-250);2)查找顺序不同(@Autowired按类型,@Resource先按名称后按类型);3)支持参数不同(@Autowired有required参数,@Resource有name/type参数);4)使用方法不同(@Autowired可用在字段/setter/构造方法,@Resource主要用于字段/setter);5)

2025-06-26 22:51:48 607

原创 什么是跨域问题?后端如何解决跨域问题?

跨域问题因浏览器同源策略引发,限制不同协议、域名或端口间的请求访问。同源策略要求协议、域名和端口完全一致,否则视为跨域,如前端与后端在不同子域、端口或协议的情况。该策略防止恶意网站窃取用户数据,避免CSRF/XSS攻击。后端可通过CORS配置(如Java的@Configuration注解设置允许的域名、方法等)解决跨域限制,同时注意allowCredentials与*的兼容性问题。

2025-06-21 22:30:34 581

原创 项目中后端如何处理异常?

为了统一管理异常,在项目中封装了自定义异常类(BusinessException),全局异常处理器(GlobalExceptionHandler), 以及一些状态码(ErrorCode), 便于前端统一处理异常.这样便于便于前端快速定位错误原因, 便于在后续不同场景下精细化管理异常.

2025-06-21 22:18:16 236

原创 决策树算法

决策树是一种树形结构的分类模型,通过递归划分特征空间实现分类或回归。其核心包括特征选择(信息增益、基尼指数等)、树生成和剪枝(预剪枝/后剪枝)三个要素。常见算法有ID3、C4.5和CART,分别适用于不同任务类型。决策树具有解释性强、无需特征预处理等优点,但也存在易过拟合、对数据敏感等不足。实际应用中可通过Scikit-learn等工具实现,需合理设置参数如最大深度、最小样本数等以平衡模型复杂度与泛化能力。

2025-05-31 13:05:12 995

原创 Flink

摘要: Apache Flink是分布式开源流处理框架,支持实时/批量计算,源于Stratosphere项目,现为Apache顶级项目。其核心优势包括批流一体、精确状态管理、低延迟高吞吐,广泛应用于事件驱动型应用(如反欺诈)、流式分析(如实时监控)和数据流水线(如持续ETL)。相比传统架构,Flink通过本地状态访问和流式处理提升性能,技术栈涵盖SQL/API、机器学习及多种部署模式。体系采用Master-Slave架构(JobManager/TaskManager),支持YARN/Kubernetes等集

2025-05-29 10:25:00 1457

原创 小议流计算

流计算是一种处理实时动态数据的技术,适用于数据快速持续到达的场景。与传统批量计算不同,流计算强调低延迟和实时性,支持TB/PB级数据规模。其处理流程包括数据实时采集、实时计算和实时查询服务,能主动推送结果而非被动查询。流计算广泛应用于互联网、物联网等领域,如实时推荐、监控等。典型框架包括Storm、Spark Streaming和Structured Streaming,其中Spark Streaming通过微批处理实现流计算,而Structured Streaming则提供更统一的批流一体API。

2025-05-29 10:11:11 593

原创 Spark

Spark是由加州伯克利大学AMP实验室于2009年开发的大数据并行计算框架,基于内存计算,适用于低延迟的数据分析应用。其主要特点包括运行速度快、易用性、通用性和多样化的运行模式。Spark支持多种编程语言,如Scala、Java、Python和R,并提供了完整的技术栈,涵盖SQL查询、流式计算、机器学习和图算法等。与Hadoop相比,Spark在计算模式、执行效率、任务调度机制和适用场景上具有显著优势,尤其在迭代计算和实时分析方面表现突出。Spark生态系统通过统一技术栈解决了传统大数据处理方案的碎片化问

2025-05-21 11:16:15 1317

原创 朴素贝叶斯

基于此假设,在计算给定类别下特征出现的联合概率时,可将其转化为各个特征条件概率的乘积,大幅降低计算复杂度。例如在文本分类里,正常情况下词语间存在语义关联、语法搭配等关系,但朴素贝叶斯假设每个词的出现都不依赖于其他词,从而简化模型,使其在很多场景下仍能有效工作。贝叶斯方法的特点是结合先验概率和后验概率,即避免了只使用先验概率的主观偏见,也避免了单独使用样本信息的过拟合现象。虽然这个简化方式在一定程度上降低了贝叶斯分类算法的分类效果,但是在实际的应用场景中,极大地简化了贝叶斯方法的复杂性。上的概率分布是什么?

2025-05-18 18:59:11 879

原创 数据仓库Hive

数据仓库、数据湖和湖仓一体是现代数据管理中的核心概念。数据仓库是面向主题、集成、稳定且反映历史变化的数据集合,主要用于支持管理决策,其结构包括数据源、数据存储、OLAP服务器和前端工具。数据仓库与数据库的主要区别在于前者专注于分析和大数据处理,而后者擅长事务处理。数据湖则是一种存储原始数据的系统,能够容纳结构化、半结构化和非结构化数据,适合数据科学家和开发人员进行探索性分析和机器学习。数据湖与数据仓库的区别在于数据湖存储所有类型的数据,而数据仓库仅存储结构化数据。湖仓一体是一种新型架构,结合了数据仓库的高性

2025-05-11 19:27:17 1306

原创 快速上手SpringBoot开发指南

SpringBoot通过约定优于配置的理念,大大简化了Spring应用的开发流程。自动配置:减少手动配置的工作量起步依赖:简化依赖管理嵌入式服务器:无需部署到外部服务器注解驱动:减少XML配置,提高开发效率通过本文介绍的项目结构和注解使用,可以快速上手SpringBoot开发,构建出高效、可维护的Web应用。

2025-05-07 21:39:57 1096

原创 Hadoop架构再探讨

多个名称节点各自分管一部分目录,使得一个集群可以扩展到更多节点,不再像HDFS1.0中那样由于内存的限制制约文件存储数目。• FsImage:文件系统元数据的完整快照(如文件路径、块列表),存储在磁盘,启动时加载到内存。多个名称节点管理不同的数据,且同时对外提供服务,将为用户提供更高的读写吞吐率。(3)良好的隔离性。• 统一资源调度:在单个集群上部署 YARN,由 YARN 统一管理资源(CPU、内存等)。需要注意的,HDFSFederation并不能解决单点故障问题,也就是说,每。

2025-05-06 23:23:47 1256

原创 会话_过滤器_监听器

cookie是一种客户端会话技术,cookie由服务端产生,它是服务器存放在浏览器的一小份数据,浏览器以后每次访问该服务器的时候都会将这小份数据携带到服务器去。服务端创建cookie,将cookie放入响应对象中,Tomcat容器将cookie转化为set-cookie响应头,响应给客户端客户端在收到cookie的响应头时,在下次请求该服务的资源时,会以cookie请求头的形式携带之前收到的Cookiecookie是一种键值对格式的数据,从tomcat8.5开始可以保存中文,但是不推荐。

2025-04-28 10:42:08 809

原创 Servlet

Servlet (server applet) 是运行在服务端(tomcat)的Java小程序,是sun公司提供一套定义动态资源规范;从代码层面上来讲Servlet就是一个接口用来接收、处理客户端请求、响应给浏览器的动态资源。在整个Web应用中,Servlet主要负责接收处理请求、协同调度功能以及响应数据。我们可以把Servlet称为Web应用中的控制器不是所有的JAVA类都能用于处理客户端请求,能处理客户端请求并做出响应的一套技术标准就是Servlet。

2025-04-27 18:43:57 1084

原创 梯度下降算法

梯度下降作为优化领域的基石算法,其变种形式已广泛应用于深度学习。根据具体问题调整算法参数选择适合的优化器变种诊断和解决训练过程中的问题未来可以探索:• 二阶优化方法(如牛顿法)• 分布式梯度下降• 量子优化算法通过本文的系统讲解,读者不仅能掌握梯度下降的数学原理,还能获得实际工程应用的完整解决方案。理解这个基础算法,将为您打开深度学习与优化算法的大门。

2025-04-13 13:50:38 1072

原创 关于哈希冲突的讨论

哈希冲突(Hash Collision)是指不同的输入(key)通过哈希函数计算后得到了相同的哈希值。比如哈希表中有两个键key1和key2hashkey1hashkey2hashkey1hashkey2key1≠key2key1key2这种情况会导致哈希表或哈希算法中出现重复的存储位置或计算结果。哈希冲突是哈希算法的数学必然结果。实际应用中,开发者选择通过开放寻址法或链地址法等方式解决冲突,而不是追求无冲突的哈希算法,本质是对。

2025-04-11 23:11:14 653

原创 Map Reduce

对比维度传统并行计算框架MapReduce集群架构/容错性共享式(共享内存/存储),容错性差非共享式,容错性好硬件/价格/扩展刀片服务器、高速网、SAN,价格贵,扩展性差普通PC机,便宜,扩展性好编程/学习难度what-how(需关注实现细节),难度高what(仅需关注逻辑),简单适用场景实时、细粒度计算、计算密集型任务批处理、非实时、数据密集型任务MapReduce将复杂的、运行于大规模集群上的并行计算过程高度地抽象到了两个函数:Map和Reduce。这样做有什么好处呢?

2025-04-09 15:23:32 837

原创 JSP技术原理

JSP(Java Server Pages)是一种动态网页开发技术,它是由Sun Microsystems公司倡导、许多公司参与一起建立的一种使软件开发者可以响应客户端请求,而动态生成HTML、XML或其他格式文档的技术标准。<%!%>:声明成员变量和方法,需谨慎处理线程安全。<% %>:用于局部变量和逻辑代码,线程安全。<%= %>:输出表达式结果,不可包含语句。Tag文件和Tag标记是JSP中实现自定义标签的核心机制。

2025-04-08 11:14:31 800

原创 NoSQL数据库

最初表示反SQL”运动,现在表示关系和非关系型数据库各有优缺点用新型的非关系数据库取代关系数据库彼此都无法互相取代。通常,NoSQL数据库具有以下几个特点:(1)灵活的可扩展性(2)灵活的数据模型(3)与云计算紧密融合。

2025-04-06 19:34:52 1178

原创 分布式数据库HBase

HBase是一个高可靠、高性能、面向列、可伸缩的分布式数据库,是谷歌BigTable的开源实现,主要用来存储非结构化和半结构化的松散数据·HBase的目标是处理非常庞大的表,可以通过水平扩展的方式,利用廉价计算机集群处理由超过10亿行数据和数百万列元素组成的数据表。对比项BigTableHBase文件存储系统GFSHDFS海量数据处理MapReduce协同服务管理ChubbyZookeeperHBase是一个稀疏、多维度、排序的映射表,这张表的索引是行键、列族、列限定符和时间戳。

2025-04-06 19:06:55 1184

原创 DButils + BasicDAO 深度整合指南

分层设计:保持DAO层纯净,只做数据访问操作合理抽象:通过BasicDAO提供通用实现,特殊需求通过子类扩展异常转换:将SQLException转换为业务异常体系性能考量:对高频操作添加缓存支持事务控制:复杂业务使用声明式事务管理SQL安全:始终使用参数化查询防止注入资源管理:确保所有JDBC资源正确释放这种DButils+BasicDAO的组合方案特别适合中小型项目,在保持轻量级的同时提供了足够的灵活性,能够满足大多数业务场景的数据访问需求。

2025-03-31 22:36:57 528

原创 JDBC和数据库连接池

JDBC为访问不同的数据库提供了统一的接口,为使用者屏蔽了细节问题。Java程序员使用JDBC,可以连接任何提供了JDBC驱动程序的数据库系统,从而完成对数据库的各种操作。表示数据库结果集的数据表,通常通过执行查询数据库的语句生成ResultSet对象保持一个光标指向其当前的数据行。最初,光标位于第一行之前next方法将光标移动到下一行,并且由于在ResultSet对象中没有更多行时返回false,因此可以在while循环中使用循环来遍历结果集。

2025-03-31 16:21:23 728

原创 线性回归模型

所谓多元问题,就是输入有 𝑑 个变量, 如前述影响薪资水平的因素包括城市、学历、年龄和经验等。为方便矩阵化的最小二乘法的推导,可将参数𝑤和𝑏合并为向量表达形。训练数据集D的输入部分可表示为一个𝑚 ×(𝑑 + 1)维的矩阵𝑿,其中𝑑为输入变量的个数。线性回归就是通过训练学习得到一个线性模型来最大程度地根据输入𝒙拟合输出𝑦。,使得拟合输出y与真实输出y尽可能接近。这种基于均方误差最小化求解线性回归参数的方法就是著名的。AGE:自住房屋中建于1940年前的房屋所占比例。给定一组由输入𝒙和输出?

2025-03-30 15:31:16 444

原创 JavaScript使用

JavaScript 是一种由Netscape公司与Sun Microsystems公司共同开发出来的原型化继承的面向对象的动态类型的区分大小写的客户端脚本语言,主要目的是为解决服务器端语言,通常的瓶颈问题。于是Netscape的浏览器Navigator加入了JavaScript,提供了数据验证的基本功能。ECMA 262是正式的JavaScript标准。这个标准在1997年6月被ECMA-262委员会通过。在1999年7月,ECMA 262委员会采纳了它的首个版本。

2025-03-29 23:15:07 1138

原创 反射(reflect)

Class也是类,因此也继承Object类[类图]Class类对象不是new出来的,而是系统创建的[演示]对于某个类的Class类对象,在内存中只有一份,因为类只加载一次[演示]每个类的实例都会记得自己是由哪个Class 实例所生成通过Class对象可以完整地得到一个类的完整结构,通过一系列APIClass对象是存放在堆的类的字节码二进制数据,是放在方法区的,有的地方称为类的元数据(包括方法代码, 变量名,方法名,访问权限等等)/**• 对Class类特点的梳理*/

2025-03-29 17:26:30 951

原创 HTML简单介绍

HTML是Hyper Text Markup Language的缩写,意思是超文本标记语言。它的作用是搭建网页结构,在网页上展示内容。HTML5在2008年正式发布,在2012年已形成了稳定的版本,2014年10月28日,W3C发布了HTML5的最终版。HTML文件本质上是文本文件,而普通的文本文件只能显示字符。通过标签把其他网页、图片、音频、视频等各种多媒体资源引入到当前网页中,让网页有了非常丰富的呈现方式,这就是超文本的含义:本身是文本,但是呈现出来的最终效果超越了文本。

2025-03-28 21:38:04 1187

原创 Java网络编程

套接字(Socket)开发网络应用程序被广泛采用,以至于成为事实上的标准。通信的两端都要有Socket,是两台机器间通信的端点。网络通信其实就是Socket间的通信。Socket允许程序把网络连接当成一个流,数据在两个Socket间通过IO传输。一般主动发起通信的应用程序属客户端,等待通信请求的为服务端。基于客户端—服务端的网络通信底层使用的是TCP/IP协议应用场景举例: 客户端发送数据,服务端接受并显示控制台基于Socket的TCP编程。

2025-03-27 15:11:59 366

原创 JavaIO流

请使用FileInputStream 读取hello.txt 文件,并将文件内容显示到控制台.当然,注意一个汉字通常是由3个bytes构成的,而read只会读取一个byte的数据,因此如果用read则会乱码,建议文本文件用字符流处理。/*** 演示读取文件...* 单个字节的读取,效率比较低* -> 使用 read(byte[] b)*/@Testtry {//创建 FileInputStream 对象,用于读取 文件//从该输入流读取一个字节的数据。

2025-03-25 15:55:08 1038

原创 多线程基础

Java语言中,引入了对象互斥锁的概念,来保证共享数据操作的完整性。每个对象都对应于一个可称为“互斥锁”的标记,这个标记用来保证在任一时刻,只能有一个线程访问该对象。关键字来与对象的互斥锁联系。当某个对象用修饰时,表明该对象在任一时刻只能由一个线程访问。同步的局限性:导致程序的执行效率要降低。同步方法**(非静态的)的锁可以是this,也可以是其他对象(要求是同一个对象)。**同步方法(静态的)的锁为当前类本身。即类.class//测试//// //这里我们会出现超卖..

2025-03-24 20:08:56 945

空空如也

空空如也

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

TA关注的人

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