
web框架学习
文章平均质量分 87
你家宝宝
自2018年接触到Java,至今。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
SpringBoot中使用MCP和通义千问来处理和分析数据-连接本地数据库并生成实体类
SpringBoot中使用MCP和通义千问来处理和分析数据-连接本地数据库并生成实体类;可以通过自然语言查到数据表信息原创 2025-05-08 17:17:17 · 1346 阅读 · 1 评论 -
SpringBoot中使用MCP和通义千问来处理和分析数据-入门,查寻和基本的分析
本文使用简单的学生查询功能,整合springboot和mcp+通义千问模型。基于对话自然语言的方式,实现基本功能原创 2025-05-06 18:42:37 · 1616 阅读 · 0 评论 -
SpringBoot整合Log4j2进行日志记录&异步写入日志文件
最近在看一些老项目,里边记录日志的方式有 Logback 和 Log4j2 这两种。它们对于日志配置,异步策略方面都各有不同。但是 Log4j2 可以和 “最快的单体队列” Disruptor 进行整合,从而达到异步情况下,性能的极大提升。当然,这种提升是建立在内存足够的情况下。本文就 Log4j2 的使用进行整理记录。原创 2025-03-26 14:07:10 · 1217 阅读 · 0 评论 -
SpringBoot接入DeepSeek(硅基流动版)+ 前端页面调试(WebSocket连接模式)
本文使用SpringBoot提供 WebSocket 对话功能。通过模拟对话的方式,来和DeepSeek进行交互。包含Java后端和一个简单的前端页面。原创 2025-03-04 19:25:09 · 1774 阅读 · 0 评论 -
SpringBoot接入DeepSeek(硅基流动版)+ 前端页面调试(SSE连接模式)
作为一个Java程序员,了解前沿科技技术,也算是份内的事了。DeepSeek 大模型,从开源到现在,一直在🔥。各个公司也基本都部署了自己的所谓满血版DeepSeek。虽然官方是免费使用的,但是它太忙了。因此,很多能直接使用的,不太忙的DeepSeek应运而生。我今天使用的就是“硅基流动版”DeepSeek!硅基流动原创 2025-02-26 16:31:03 · 2793 阅读 · 0 评论 -
SpringBoot自定义实现触发器模型的starter
前不久,写了个管理系统的后端,其中涉及到一个“触发器模型”的部分,可以对业务进行解耦,复用。具体内容见下边这个链接:本文的重点是,对它的一些优化,和更加规范化的调整。采用模版方法设计模式实现业务流程的组装,分为初始化(init)、执行(trigger),执行后(after)。另外这里处理的时候,选择先从spring容器中获取对应的触发器对象,然后调用的方式,也是为了后续更方便在触发器方法上增加切面、事务等操作。import com/*** 抽象触发器模板。原创 2025-01-23 10:57:02 · 984 阅读 · 0 评论 -
SpringCloud实用-OpenFeign 调用三方接口
一般来说我们的项目中难免会涉及到调用三方接口的场景。以前我们可能用 RestTemplate,或者再用OkHttp优化一下。但是,在读了本文之后,你将发现使用OpenFeign的 FeignClient来调用三方接口,也是纵享丝滑的。注意,本文旨在使用FeignClient调用三方接口,不讨论其他情况。比如高版本JDK自带的工具类,或者响应式API。本文使用FeignClient来调用天行API接口。在天行官网注册账号后,可以申请自己想要调用的API接口。拿到key之后即可调用。原创 2024-11-22 16:08:57 · 2375 阅读 · 0 评论 -
Java实现一个延时队列
业务中经常会出现各种涉及到定时,延迟执行的需求任务。有一种队列专门处理这种情况。那就是延时队列。原创 2024-11-06 17:08:36 · 1593 阅读 · 0 评论 -
SpringBoot中扩展Druid的过滤器实现完整的SQL打印
之前通过Mybatis 、Mybatis Plus 的拦截器扩展,实现自定义的Handler,拼接了完整的SQL。本次使用 Druid 的过滤器来实现这一功能。输出一个完整的sql,并且给出执行的时间。原创 2024-11-01 15:12:18 · 1003 阅读 · 0 评论 -
写了一个SpringBoot的后端管理系统(仅后端)pine-manage-system
关于 pine-manage-system,是用于学习和使用一些java技术,和自己对某些业务的理解与落地的验证。这是一个多模块项目,里边集成了不少后端常见的功能。原创 2024-10-23 14:20:57 · 1051 阅读 · 0 评论 -
SpringBoot项目里怎么简单高效使用Redis?我选择使用Lock4j
在平时使用SpringBoot框架时,有些业务场景会需要使用到Redis。:这是Spring Boot官方提供的Redis starter,它基于Spring Data Redis,提供了对Redis的集成支持。它默认使用Lettuce作为Redis客户端,但也支持Jedis客户端。通过这个starter,可以快速地在Spring Boot中整合、使用Redis,进行数据缓存、会话管理等操作。:这个starter提供了Spring Integration的支持,可以与Redis结合使用,实现分布式锁等功能。原创 2024-10-23 14:00:33 · 1327 阅读 · 0 评论 -
Json结构解析&比较
本次练习,主要是针对于两个Json的结构差异。多用于测试场景,比如一个很大的Json报文,需要和现有的Json报文对比,看看哪些字段没传递。亦或是新旧应用交替,使用Java应用代替其他应用,对比原先和现在的报文结构等。实现了通过javaBean的Class,解析获取一个包含所有字段的完整Json结构。实现了两个Json的比较,并记录差异节点路径;输出比较的日志。原创 2024-07-22 19:51:18 · 3743 阅读 · 0 评论 -
手写一个基于SpringBoot的MVC架构,默认实现CRUD和导入导出功能
日常开发一个项目,经常会写到CRUD和导入导出功能,很多时候都是模版式的代码结构,多次复制粘贴后就完成了。这次我打算去造一个轮子,替我去做复制粘贴的活!!目标很简单,使用SpringBoot架构去是实现一个基于Mysql数据库的自带增删改查,导入导出功能的模板代码。并且提供完备的代码生成器,一键生成你想要的代码。本项目托管在gitte上:https://gitee.com/fengsoshuai/song-tools欢迎各位点赞收藏,有好的建议也可以留言。原创 2024-06-29 16:00:17 · 1192 阅读 · 0 评论 -
自定义实现 Java17+SpringBoot3+OpenAPI+Knife4j Starter
一直以来,在接口文档这块没怎么尝试过比较新的技术点,使用的都是swagger2和 低版本的knife4j。本次就研究下在高版本的情况下,基于swagger的接口文档有什么变化。代码量不多,主要是一个自动配置类和配置字段的定义。原创 2024-05-11 16:27:59 · 1323 阅读 · 2 评论 -
SpringBoot 自定义注解实现操作日志记录
关于操作日志记录,在一个项目中是必要的。本文基于 java8 和 SpringBoot 2.7 来实现此功能。之前写过一个简单的接口报文日志打印的,和本文的起始思路相同,都是使用切面。但是本文功能更为强大,也更复杂。文章见本文附录《SpringBoot自定义starter之接口日志输出》。本文代码仓库:https://gitee.com/fengsoshuai/custom-log2.git其中 org.feng.clog 是核心代码区域。org.feng.test 是用于测试功能写的。原创 2024-02-28 14:55:31 · 726 阅读 · 0 评论 -
Tomcat线程池原理(下篇:工作原理)
Tomcat 线程池,是依据 JUC 中的线程池重新自定义实现的。其执行线程的代码逻辑,和JUC 中是相同的。主要区别在于,Tomcat中对 阻塞队列进行了改造。本文主要研究 Tomcat 的线程池是如何执行线程的,即线程池的工作原理。Tomcat线程池原理(上篇:初始化原理)当前线程数小于corePoolSize,则去创建工作线程;当前线程数大于corePoolSize,但小于maximumPoolSize,则去创建工作线程;原创 2024-02-21 19:42:00 · 1920 阅读 · 0 评论 -
Tomcat线程池原理(上篇:初始化原理)
在Java Web的开发过程中,Tomcat常用的web容器。SpringBoot之前,我们用的是单独的 Tomcat,SpringBoot时代,嵌入了Tomcat。在Jdk中,JUC内有线程框架,以及可以自定义参数配置的 TreadPoolExecutor。Tomcat内也实现了自己的线程池。所谓线程池,是被用来处理传入的 HTTP 请求的。当客户端发送请求时,Tomcat 会从线程池中获取一个可用的线程来处理该请求。处理完请求后,线程将返回线程池,并在下一个请求到来时再次被重用。原创 2024-02-21 19:40:10 · 2534 阅读 · 0 评论 -
SpringMVC原理(设计原理+启动原理+工作原理)
java8创建项目,使用阿里的源:https://start.aliyun.com创建前,请先设置好自己的maven环境,java版本。保持网络正常。选择spring-web的2.7.6 版本:使用阿里的源创建好项目后,会自动生成的有控制器Controller,启动类,以及一个页面。如此,准备工作就做好了。谈起SpringMvc,最先想起来的俩注解应该是Controller和。而关于启动项目时,框架对这俩注解的处理,基本都体现在其中。原创 2024-02-07 15:06:59 · 1654 阅读 · 0 评论 -
SpringBoot3整合Mybatis-Plus,自定义动态数据源starter
本文旨在SpringBoot3整合Mybatis-Plus,实现动态数据源切换。不使用Mybatis-Plus本身的依赖。自己动手造轮子。本次使用了Java17,SpringBoot3.0.2 ,Mybatis-Spring 3版本。并且自定义starter,提供自定义注解,使用切面实现切换数据源。其中,代码分支master,是多数据源,提供静态切换方法,注解方式切换。代码分支dev,是动态多数据源,在master的基础上,提供运行时,新增或修改,或删除数据源。原创 2024-02-06 14:39:13 · 1677 阅读 · 0 评论 -
Orika MapperFacade 对象属性复制在SpringBoot项目中的使用
众所周知,在Java项目中经常会有用到各种对象属性复制的情况,以及从一个对象转换为另一个对象。MapStruct对象映射今天我们来一起看看另一种功能同样强大,性能也很高的工具!原创 2024-01-31 15:00:41 · 1805 阅读 · 0 评论 -
【EasyExcel实践】万能导出,一个接口导出多张表以及任意字段(可指定字段顺序)-简化升级版
关于万能导出,前一阵子写过一个,功能是实现了的。就是在使用时,感觉如果需要导出的页面比较多,那就会出现比较多的重复代码。就想着优化+简化一下,能够更方便的使用。原版中额外增加了转换器,枚举转换等功能,但是总觉得会让整体功能变复杂,所以在这一版中就去掉了。如果有兴趣看看的话,可以切换到master分支查看。本次简化升级,本着对使用者友好的目的去实现的。另外,本文会粘贴全部代码!!在使用上的简化体现在真正导出时,只需要几行代码,就能实现功能。可以让你更加专注于业务参数的组装。而且代码比较简洁。原创 2023-12-21 18:39:30 · 1699 阅读 · 0 评论 -
Java练习-设计并实现一个字典功能模块
很多Java开发的系统中,可能都需要做一些配置呀,字典之类的设计。这里我提供一个思路,以及针对这个思路做了具体的实现,以供大家参考学习。采用java8,springboot2.7.7,mysql 进行实现。原创 2023-12-12 15:39:29 · 643 阅读 · 0 评论 -
【EasyExcel实践】万能导出,一个接口导出多张表以及任意字段(可指定字段顺序)
日前,看到一个比较奇怪的导出功能。需要根据不同的页面,以及指定不同的字段列表(任意顺序),然后导出对应的表格。先假设一个场景:假如你的系统有多个列表展示页,每页中可以依据筛选条件,调整展示的列的个数,顺序等。然后要求导出的时侯,导出一摸一样的格式。也就是“所见即所得”的表格。那么基于以上场景,我们就来考虑下如何实现?本文就是对以上场景功能的一个实现。目前仅支持单sheet,不支持数据聚合等。原创 2023-11-30 11:26:47 · 3805 阅读 · 7 评论 -
【EasyExcel实践】导出多个sheet到多个excel文件,并压缩到一个zip文件
工作中遇到一个需求,一次导出多个Excel 文件,并且每个excel中可能存在1到多个sheet页。好在没有那种单元格合并的要求。总体的思路是,设计两个实体,一个表示表格,一个表示sheet 数据。并且表格包含一个list 类型的sheet对象。然后再使用等类和方法去组装表格,最终进行压缩。项目整体使用 java 8 和 阿里的easyexcel工具包。原创 2023-11-29 09:44:11 · 2323 阅读 · 16 评论 -
SpringCloud实用-OpenFeign整合okHttp
众所周知,我们在使用SpringCloud OpenFeign时,默认使用的是老旧的连接器。性能以及并发量方面都差强人意。一般而言都会对其进行优化调整。本文采用OpenFeign整合okHttp的方式替换原有的Client,去做请求。使用java 17,spring cloud 4.0.4,springboot 3.1.4使用项目是本系列第一篇中的项目本文介绍两种方式的配置,一个是LoadBalancer 的,都是默认带有连接池的。原创 2023-11-24 16:55:37 · 4960 阅读 · 0 评论 -
SpringCloud系列文章目录(总纲篇)
SpringCloud系列文章,有些文章上下文存在联系。并且,它们数量巨多,有涉及原理的,有涉及实战的。本文存在的目的是为了整理一篇大纲一样的东西,后续也会先更新大纲,随后按照大纲更新文章。原创 2023-11-24 10:33:05 · 944 阅读 · 0 评论 -
SpringCloud原理-OpenFeign篇(四、请求原理)
本篇是SpringCloud原理系列的 OpenFeign 模块的第四篇。在我们启动完应用后,Spring容器也初始化好了很多我们用到的类。(什么,你不知道,烦请先看看第三篇)那么我们下一步要做的就是,发出rest请求,然后调用FeignClient标注的接口方法。这篇文章,我们就来看看它的原理。使用java 17,spring cloud 4.0.4,springboot 3.1.4使用项目是本系列第一篇中的项目。原创 2023-11-24 09:57:22 · 442 阅读 · 0 评论 -
SpringCloud原理-OpenFeign篇(三、FeignClient的动态代理原理)
本篇是SpringCloud原理系列的 OpenFeign 模块的第三篇。主要内容是接第二篇,在将的bean描述器注册到容器中后,我们的容器在初始化时,使用了饥饿模式,直接创建Bean。本文就围绕来分析动态代码的应用,以及它本身的初始化过程。使用java 17,spring cloud 4.0.4,springboot 3.1.4这个doGetBean方法太长了,我这里不做粘贴,只挑重点的说。在这个方法中,获取Bean的时候,有调用方法。而该方法中就对做了处理。原创 2023-11-21 19:05:56 · 881 阅读 · 1 评论 -
SpringCloud原理-OpenFeign篇(二、OpenFeign包扫描和FeignClient的注册原理)
本篇是SpringCloud原理系列的 OpenFeign 模块的第二篇。主要研究是使用了FeignClient 注解的接口的初始化原理。也就是它是如何将什么类型的实例,放到容器中的。另外,本文附录中,图解了本文代码的执行链路。使用java 17,spring cloud 4.0.4,springboot 3.1.4。原创 2023-11-21 15:33:40 · 572 阅读 · 0 评论 -
SpringCloud原理-OpenFeign篇(一、Hello OpenFeign项目示例)
本篇是SpringCloud原理系列的 OpenFeign 模块的第一篇。主要内容是搭建一个极简的Spring Cloud OpenFeign 调用链路。原创 2023-11-21 14:13:57 · 355 阅读 · 0 评论 -
SpringCloud Gateway实现请求解密和响应加密
本文注重实现请求的解密和响应的加密,加解密使用的是 Hutool 中的工具类,加解密算法目前提供了AES的方式,其余方式也可兼容扩展。完整代码仓库:https://gitee.com/fengsoshuai/springcloud-gateway-feng-demo借用网关中的过滤器来实现这一功能。本文只粘贴一些重点文件内容。在聚合项目中,有两个核心模块,feng-server提供了 rest 接口,供网关使用。feng-gateway 是核心实现的网关项目,实现了自定义过滤器,以及增加了一些基本配原创 2023-10-31 18:07:04 · 4675 阅读 · 2 评论 -
MybatisPlus拦截器实战之RBAC数据权限控制
看完本文你将能学到什么?RBAC 5表模型控制数据权限Mybatis Plus 自定义拦截器拼接where条件,控制数据权限控制权限方式1,依据某一指定字段,比如创建人ID 查询数据控制权限方式2,依据RBAC模型,使用角色控制权限MybatisPlus拦截器实战之数据的加解密和脱敏新增权限注解和拦截器。特别注意的是,拦截器mybatis plus 本身提供了,但是不太满足本次功能,因此这里做了扩展,继承了原有的拦截器,重写了其中的方法。原创 2023-09-15 11:21:16 · 1536 阅读 · 0 评论 -
Mybatis-Plus 批量插入数据时报错 java.lang.Object Not Found TableInfoCache
我这里的问题主要是,调用单个插入数据,是能插入成功的。调用批量时就会报错。网上有些朋友说是因为实体定义,表名之类的问题。这个肯定不是我当前遇到的,否则单个插入数据也会报错。而且报错信息也会有所不同。在增加了继承关系的写法中,无法使用serviceImpl的一些方法。但是调用mapper的方法,是可以的。这也就是为什么我的批量操作报错,单个插入却是可以成功的原因。然后就是写这个层级结构时,可以将数据库相关的内容,全部写在 ServiceImpl 的直接子类中。其他地方再去调用。原创 2023-09-11 16:58:30 · 1290 阅读 · 0 评论 -
MybatisPlus拦截器实战之数据的加解密和脱敏
看完本文你将能学到什么?Mybatis Plus 的拦截器终极奥义是使用了 Mybatis 的拦截器。只是在原先的基础上,划分的更加细致了。缺点也很明确,没有处理响应结果的钩子方法。Mybatis Plus 中的拦截器的定义是:可以看到Mybatis Plus 拦截器的处理器, 其实现了 ,在内部遍历,处理sql执行前的数据。原创 2023-08-26 17:30:08 · 1469 阅读 · 0 评论 -
Disruptor队列
前些天,心血来潮想复习一下操作系统相关的知识。然后看到了一个Java中依据硬件做出性能优化的队列。主要是内部使用了环形缓冲区(RingBuffer)存储事件,然后利用空间换时间的概念提高了CPU缓存命中,进而提高了性能和吞吐量。并且是一个有界无锁的队列。它就是 Disruptor 高性能队列,是一个号称当前最快的单机内存型队列。它的设计中体现了高性能设计思想,影响广大。今天我们就来详细看看它吧!原创 2023-07-07 11:54:17 · 369 阅读 · 0 评论 -
EasyExcel 的简单使用(读取&写入)
我们的业务场景中可能经常遇到需要保存数据到表格,或者从表格读取到数据,随后做一些操作。本文将在Spring项目中做写入和读取操作。原创 2023-06-30 16:28:02 · 6112 阅读 · 0 评论 -
SpringBoot中Redisson锁的使用(代码验证锁的流程)
前段时间自己在研究java中的锁相关的东西,从关键字到JUC中的Lock,这些锁可以在单个JVM中起到很好的作用。之前写过锁相关的文章有:深入理解Java中的synchronized深入理解Java中的Lock和AQSZookeeper 实现分布式锁(java 实现)本文就主要学习一下 Redis 在做分布式锁时,是如何使用的。原创 2023-06-29 16:52:32 · 822 阅读 · 0 评论 -
使用itextpdf填充表单域并生成pdf
最近手上有个任务,就是需要做一个pdf导出的功能。可选择的技术点比较多,我这边综合考虑之后,使用的是 itext。大致有两种实现思路:1️⃣:使用软件【Adobe Acrobat DC】去做一个pdf模版,将表单域指定好,随后使用代码去填充参数,最终得到一个pdf或字节数组。2️⃣:使用【Freemarker】渲染html页面,最终使用代码将该页面转换为pdf。我这边当前的需求比较适合第一种方式。原创 2023-06-29 09:49:43 · 4217 阅读 · 9 评论 -
Flowable工作流入门&完整SpringBoot案例
Flowable工作流是一款基于Java的轻量级开源工作流引擎,它支持BPMN2.0规范、CMMN规范,同时也提供REST API以及JavaAPI,支持Spring,Spring Boot等框架。借助Flowable工作流,企业可以快速构建出符合自己实际业务的工作流。原创 2023-06-10 14:00:05 · 12076 阅读 · 0 评论 -
Maven 下载依赖错误:Could not transfer metadata xxx Transfer failed for xxx
但是问题在于,我点击了对应的仓库,并且能使用网页打开它(包括输入对应的用户名+密码)。重启了idea多次,仍不能成功。这是一个VPN的问题。原创 2023-06-09 17:44:36 · 2035 阅读 · 0 评论