自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

FBB360JAVA的博客

java从0开始,初学的,如有不足,望指出,感激不尽

  • 博客(281)
  • 资源 (15)
  • 收藏
  • 关注

原创 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 453

原创 Tomcat线程池原理(下篇:工作原理)

Tomcat 线程池,是依据 JUC 中的线程池重新自定义实现的。其执行线程的代码逻辑,和JUC 中是相同的。主要区别在于,Tomcat中对 阻塞队列进行了改造。本文主要研究 Tomcat 的线程池是如何执行线程的,即线程池的工作原理。Tomcat线程池原理(上篇:初始化原理)当前线程数小于corePoolSize,则去创建工作线程;当前线程数大于corePoolSize,但小于maximumPoolSize,则去创建工作线程;

2024-02-21 19:42:00 1386

原创 Tomcat线程池原理(上篇:初始化原理)

在Java Web的开发过程中,Tomcat常用的web容器。SpringBoot之前,我们用的是单独的 Tomcat,SpringBoot时代,嵌入了Tomcat。在Jdk中,JUC内有线程框架,以及可以自定义参数配置的 TreadPoolExecutor。Tomcat内也实现了自己的线程池。所谓线程池,是被用来处理传入的 HTTP 请求的。当客户端发送请求时,Tomcat 会从线程池中获取一个可用的线程来处理该请求。处理完请求后,线程将返回线程池,并在下一个请求到来时再次被重用。

2024-02-21 19:40:10 1592

原创 设计模式之委派模式

委派模式(Delegate Pattern)又叫委托模式,是一种面向对象的设计模式。它不属于23种设计模式之中,但同样也应用广泛。熟悉java类加载的人都知道,java有一个双亲委派模型。就是应用了这个委派模式的思想。(但这不是我写本文的原因!委派模式允许对象组合实现与继承相同的代码重用。它的基本作用就是负责任务的调用和分配任务,是一种特殊的静态处理代理,可以理解为全权代理。PS:写本文的原因在于,前几天看SpringMVC源码时遇到过。的作用就是调节,分派请求。最终使用来处理这些请求。

2024-02-19 17:14:21 1082

原创 设计模式之命令模式

命令模式(Command Pattern)是 23种设计模式之一,属于行为型设计模式。命令模式把一个请求或者操作封装到一个对象中。命令模式允许系统使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。命令模式将命令的请求者和命令的处理者分开来,命令的请求者也不清楚请求的命令由哪个对象来执行,也不知道具体实现的操作是怎么样的。命令模式可以将命令组合起来形成一个复杂的宏命令,这样可以通过一个命令来实现一系列化的操作。

2024-02-19 17:13:26 931

原创 SpringMVC原理(设计原理+启动原理+工作原理)

java8创建项目,使用阿里的源:https://start.aliyun.com创建前,请先设置好自己的maven环境,java版本。保持网络正常。选择spring-web的2.7.6 版本:使用阿里的源创建好项目后,会自动生成的有控制器Controller,启动类,以及一个页面。如此,准备工作就做好了。谈起SpringMvc,最先想起来的俩注解应该是Controller和。而关于启动项目时,框架对这俩注解的处理,基本都体现在其中。

2024-02-07 15:06:59 1452

原创 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 1145

原创 Orika MapperFacade 对象属性复制在SpringBoot项目中的使用

众所周知,在Java项目中经常会有用到各种对象属性复制的情况,以及从一个对象转换为另一个对象。MapStruct对象映射今天我们来一起看看另一种功能同样强大,性能也很高的工具!

2024-01-31 15:00:41 1077

原创 用JavaFX写了一个简易的管理系统

自学一下Java FX ,用Java代码写一个简易的客户端。本文项目是Maven项目,使用了Java17,以及mysql。代码仓库:https://gitee.com/fengsoshuai/java-fx-management-system-demo/tree/dev-with-db/启动项目后,自动展示主页面。支持分页查询,搜索,新增,修改,删除,批量删除等功能。整体分为以下几层:使用ctrl+鼠标左键选择要删除的数据。然后点击删除按钮。出现弹窗后,点击确定,即可删除。

2024-01-24 21:39:43 747

原创 【EasyExcel实践】万能导出,一个接口导出多张表以及任意字段(可指定字段顺序)-简化升级版

关于万能导出,前一阵子写过一个,功能是实现了的。就是在使用时,感觉如果需要导出的页面比较多,那就会出现比较多的重复代码。就想着优化+简化一下,能够更方便的使用。原版中额外增加了转换器,枚举转换等功能,但是总觉得会让整体功能变复杂,所以在这一版中就去掉了。如果有兴趣看看的话,可以切换到master分支查看。本次简化升级,本着对使用者友好的目的去实现的。另外,本文会粘贴全部代码!!在使用上的简化体现在真正导出时,只需要几行代码,就能实现功能。可以让你更加专注于业务参数的组装。而且代码比较简洁。

2023-12-21 18:39:30 1041

原创 Java练习-设计并实现一个字典功能模块

很多Java开发的系统中,可能都需要做一些配置呀,字典之类的设计。这里我提供一个思路,以及针对这个思路做了具体的实现,以供大家参考学习。采用java8,springboot2.7.7,mysql 进行实现。

2023-12-12 15:39:29 178

原创 【EasyExcel实践】万能导出,一个接口导出多张表以及任意字段(可指定字段顺序)

日前,看到一个比较奇怪的导出功能。需要根据不同的页面,以及指定不同的字段列表(任意顺序),然后导出对应的表格。先假设一个场景:假如你的系统有多个列表展示页,每页中可以依据筛选条件,调整展示的列的个数,顺序等。然后要求导出的时侯,导出一摸一样的格式。也就是“所见即所得”的表格。那么基于以上场景,我们就来考虑下如何实现?本文就是对以上场景功能的一个实现。目前仅支持单sheet,不支持数据聚合等。

2023-11-30 11:26:47 1890 3

原创 【EasyExcel实践】导出多个sheet到多个excel文件,并压缩到一个zip文件

工作中遇到一个需求,一次导出多个Excel 文件,并且每个excel中可能存在1到多个sheet页。好在没有那种单元格合并的要求。总体的思路是,设计两个实体,一个表示表格,一个表示sheet 数据。并且表格包含一个list 类型的sheet对象。然后再使用等类和方法去组装表格,最终进行压缩。项目整体使用 java 8 和 阿里的easyexcel工具包。

2023-11-29 09:44:11 1043 4

原创 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 1323

原创 SpringCloud系列文章目录(总纲篇)

SpringCloud系列文章,有些文章上下文存在联系。并且,它们数量巨多,有涉及原理的,有涉及实战的。本文存在的目的是为了整理一篇大纲一样的东西,后续也会先更新大纲,随后按照大纲更新文章。

2023-11-24 10:33:05 391

原创 SpringCloud原理-OpenFeign篇(四、请求原理)

本篇是SpringCloud原理系列的 OpenFeign 模块的第四篇。在我们启动完应用后,Spring容器也初始化好了很多我们用到的类。(什么,你不知道,烦请先看看第三篇)那么我们下一步要做的就是,发出rest请求,然后调用FeignClient标注的接口方法。这篇文章,我们就来看看它的原理。使用java 17,spring cloud 4.0.4,springboot 3.1.4使用项目是本系列第一篇中的项目。

2023-11-24 09:57:22 292

原创 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 355 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 353

原创 SpringCloud原理-OpenFeign篇(一、Hello OpenFeign项目示例)

本篇是SpringCloud原理系列的 OpenFeign 模块的第一篇。主要内容是搭建一个极简的Spring Cloud OpenFeign 调用链路。

2023-11-21 14:13:57 174

原创 SpringCloud Gateway实现请求解密和响应加密

本文注重实现请求的解密和响应的加密,加解密使用的是 Hutool 中的工具类,加解密算法目前提供了AES的方式,其余方式也可兼容扩展。完整代码仓库:https://gitee.com/fengsoshuai/springcloud-gateway-feng-demo借用网关中的过滤器来实现这一功能。本文只粘贴一些重点文件内容。在聚合项目中,有两个核心模块,feng-server提供了 rest 接口,供网关使用。feng-gateway 是核心实现的网关项目,实现了自定义过滤器,以及增加了一些基本配

2023-10-31 18:07:04 2948

原创 一致性哈希算法原理

首先我们学习和了解一个知识时,可能会先下意识搜索一下它的基本概念。所以我先百度了一下。百度给出的概念,可以说是很明确了:一致性哈希算法在1997年由麻省理工学院提出,是一种特殊的哈希算法,目的是解决分布式缓存的问题。在移除或者添加一个服务器时,能够尽可能小地改变已存在的服务请求与处理请求服务器之间的映射关系。一致性哈希解决了简单哈希算法在分布式哈希表( Distributed Hash Table,DHT) 中存在的动态伸缩等问题。

2023-10-26 10:19:39 168

原创 Java21来了,赶紧用起来(附代码使用示例)

Java21 自发布日起,将会长期支持 8 年。(长期维护更新,修复bug)相当于当年的 java8 ,预计会很受 java 程序员的喜欢。

2023-09-27 16:36:44 1641

原创 MybatisPlus拦截器实战之RBAC数据权限控制

看完本文你将能学到什么?RBAC 5表模型控制数据权限Mybatis Plus 自定义拦截器拼接where条件,控制数据权限控制权限方式1,依据某一指定字段,比如创建人ID 查询数据控制权限方式2,依据RBAC模型,使用角色控制权限MybatisPlus拦截器实战之数据的加解密和脱敏新增权限注解和拦截器。特别注意的是,拦截器mybatis plus 本身提供了,但是不太满足本次功能,因此这里做了扩展,继承了原有的拦截器,重写了其中的方法。

2023-09-15 11:21:16 734

原创 Mybatis-Plus 批量插入数据时报错 java.lang.Object Not Found TableInfoCache

我这里的问题主要是,调用单个插入数据,是能插入成功的。调用批量时就会报错。网上有些朋友说是因为实体定义,表名之类的问题。这个肯定不是我当前遇到的,否则单个插入数据也会报错。而且报错信息也会有所不同。在增加了继承关系的写法中,无法使用serviceImpl的一些方法。但是调用mapper的方法,是可以的。这也就是为什么我的批量操作报错,单个插入却是可以成功的原因。然后就是写这个层级结构时,可以将数据库相关的内容,全部写在 ServiceImpl 的直接子类中。其他地方再去调用。

2023-09-11 16:58:30 673

原创 MybatisPlus拦截器实战之数据的加解密和脱敏

看完本文你将能学到什么?Mybatis Plus 的拦截器终极奥义是使用了 Mybatis 的拦截器。只是在原先的基础上,划分的更加细致了。缺点也很明确,没有处理响应结果的钩子方法。Mybatis Plus 中的拦截器的定义是:可以看到Mybatis Plus 拦截器的处理器, 其实现了 ,在内部遍历,处理sql执行前的数据。

2023-08-26 17:30:08 649

原创 Disruptor队列

前些天,心血来潮想复习一下操作系统相关的知识。然后看到了一个Java中依据硬件做出性能优化的队列。主要是内部使用了环形缓冲区(RingBuffer)存储事件,然后利用空间换时间的概念提高了CPU缓存命中,进而提高了性能和吞吐量。并且是一个有界无锁的队列。它就是 Disruptor 高性能队列,是一个号称当前最快的单机内存型队列。它的设计中体现了高性能设计思想,影响广大。今天我们就来详细看看它吧!

2023-07-07 11:54:17 231

原创 EasyExcel 的简单使用(读取&写入)

我们的业务场景中可能经常遇到需要保存数据到表格,或者从表格读取到数据,随后做一些操作。本文将在Spring项目中做写入和读取操作。

2023-06-30 16:28:02 4587

原创 SpringBoot中Redisson锁的使用(代码验证锁的流程)

前段时间自己在研究java中的锁相关的东西,从关键字到JUC中的Lock,这些锁可以在单个JVM中起到很好的作用。之前写过锁相关的文章有:深入理解Java中的synchronized深入理解Java中的Lock和AQSZookeeper 实现分布式锁(java 实现)本文就主要学习一下 Redis 在做分布式锁时,是如何使用的。

2023-06-29 16:52:32 450

原创 使用itextpdf填充表单域并生成pdf

最近手上有个任务,就是需要做一个pdf导出的功能。可选择的技术点比较多,我这边综合考虑之后,使用的是 itext。大致有两种实现思路:1️⃣:使用软件【Adobe Acrobat DC】去做一个pdf模版,将表单域指定好,随后使用代码去填充参数,最终得到一个pdf或字节数组。2️⃣:使用【Freemarker】渲染html页面,最终使用代码将该页面转换为pdf。我这边当前的需求比较适合第一种方式。

2023-06-29 09:49:43 2903 8

原创 深入理解Java中的Lock和AQS

提起Java中的锁,一般我们最快的反应是。但是在Java1.5之后,Doug Lea 大姥设计并实现的 JUC 中,提供了更加丰富的API操作。其中Lock接口及其相关实现尤为经典。今天我们来一起学习这 JUC 中的优秀设计思想。与有锁不同,Lock接口及其实现是由Java代码实现的。其底层代码实现,基于抽象队列同步器()以及volatile关键字、CAS机制。以下内容分析,代码参考于Java11。因为Lock本身是一个接口,所以我们在用的时候,基本都是找它的实现。

2023-06-25 17:48:31 428

原创 深入理解Java中的synchronized

Java 中有这样一个关键字,它挑起了Java锁的半边天。甚至于在一些Java面试中,也会经常被提出来讨论。它就是synchronized,今天我们就一起来看看它在Java锁中起到了什么样的作用把!

2023-06-23 15:46:19 635

原创 Flowable工作流入门&完整SpringBoot案例

Flowable工作流是一款基于Java的轻量级开源工作流引擎,它支持BPMN2.0规范、CMMN规范,同时也提供REST API以及JavaAPI,支持Spring,Spring Boot等框架。借助Flowable工作流,企业可以快速构建出符合自己实际业务的工作流。

2023-06-10 14:00:05 6849

原创 Maven 下载依赖错误:Could not transfer metadata xxx Transfer failed for xxx

但是问题在于,我点击了对应的仓库,并且能使用网页打开它(包括输入对应的用户名+密码)。重启了idea多次,仍不能成功。这是一个VPN的问题。

2023-06-09 17:44:36 1436

原创 Java中查看堆里的信息

java项目发生了OOM;想知道在某种场景下,堆里的信息,从而确认一些代码功能是否正常;类似的情况也是时有发生的,这个时候,我们需要借助java的jmap命令去看看。如果你想可视化的查看还得再加上一个插件 Visual VM。插件有两种用法,如果你只是本地运行的话,建议直接在 IDEA 中安装插件,直接debug 运行就可以了。本文重点是,如果项目是在Linux中跑着,你该怎么查看堆里的内容。

2023-06-07 14:56:24 1342

原创 SpringBoot自定义starter之接口日志输出

本文灵感来源是一道面试题。要求做一个可以复用的接口日志输出工具,在使用时引入依赖,即可使用。可能用在多个项目中。问题处理思路是,自定义一个SpringBoot的Starter,可以加入一些功能配置。核心使用自定义注解、Aspect切面来做。用切面去切你的自定义注解即可。那么下面内容就做一下具体实现。PS:本文使用的环境是 SpringBoot 的 2.7.12版本,Java openjdk11,构建工具使用了 Maven。

2023-06-05 17:51:25 1858 1

原创 Idea 生成 JavaDoc文档

使用IDEA生成Java-API文档。这里选择了要生成api的模块、api的输出文档,以及可见性(选择了private表示最低可以生成private的变量、方法),还有设置了编码格式(鼠标左键点击到你想生成JavaDoc的模块。

2023-03-22 10:39:37 221 1

原创 Spring-Kafka 发送消息的两种写法

本文主要是使用 Java 语言中 spring-kafka 依赖 对 Kafka 进行使用。创建项目,先创建一个简单的 Maven 项目,删除无用的包、类之后,使用其作为一个父级项目。

2023-03-17 21:32:26 3961 2

原创 Linux安装Kafka单机版

本文主要介绍了在Linux 环境中,我们如何去安装一个消息队列Kafka,以及使用命令创建主题topic、并且查看主题的信息。

2023-03-16 22:59:55 498

原创 Linux中安装Zookeeper单机版

最近自己练习JAVA ,想到一个使用Kafka消息队列的场景,就想着搭建一个简单版的自己玩。但是想起来Kafka依赖着Zookeeper,就得先来安装这个了。本文主要是记录安装Zookeeper 的步骤。

2023-03-15 21:17:48 791 1

原创 json树路径遍历

近来项目中有个比对报文的需求。因为是做迁移项目,原报文是PHP调用的,现报文是Java调用的,需要比对关键字段是否一致。这就涉及到解析Json。因为要精确到某个字段的路径、值,就得去处理路径与值的映射关系。本文的核心内容是,将Json字符串转换为树形节点,然后遍历树形节点,得到叶子节点对应的路径和值。

2023-02-28 12:40:09 656

微服务设计与开发技术的ppt详细讲解,涉及到微服务演变,以及各种架构的介绍

1. 微服务的演进史 2. 微服务架构的常用组件介绍,服务注册发现,服务熔断限流,服务网关,服务监控,服务日志链路,消息队列,普罗米修斯系统监控 3. 微服务架构的一些设计原则 4. 微服务设计方法论: 领域驱动设计DDD 5. 新一代微服务治理工具Istio介绍 6. 参考书籍《领域驱动设计模式、原理与实践》

2023-02-05

html+css+js知识总结.pdf

对html/css/js的一个详细介绍。适合初始的学习,和有使用经验的同学来复习使用。其中案例、文档资料介绍极为详细。

2020-05-07

maven详细笔记.docx

对maven的一个详细介绍:包括使用、配置环境、创建项目等。有图片教程,文档极为详细,照着一步一步来,适合素人学习使用。

2020-05-07

JAVA核心面试知识整理.pdf

对java学习历程中的核心知识点的整理,也包含了大数据的一部分知识点: 主要有,jvm,java集合,java多线程,java基础,spring原理,微服务,网络,数据结构和算法,数据库,日志,kafak,zookeeper等内容。总结的东西很详细,有图有真香。

2020-05-07

powerdesinger的基本使用.pdf

powerdesinger的基本使用:power designer是能进行数据库设计的强大的软件,是一款开发人员常用的[数据库建模](https://baike.baidu.com/item/数据库建模)工具。使用它可以分别从概念数据模型(Conceptual Data Model)和物理数据模型(Physical Data Model)两个层次对数据库进行设计。在这里,概念数据模型描述的是独立于[数据库管理系统](https://baike.baidu.com/item/数据库管理系统)(DBMS)的实体定义和实体关系定义;物理数据模型是在概念数据模型的基础上针对目标数据库管理系统的具体化。

2020-05-06

dubbo-demo.zip

项目说明见: https://blog.csdn.net/FBB360JAVA/article/details/104988308 项目是一个spring+zookeeper+dubbo的入门案例的搭建,可以正常运行。

2020-03-20

大数据分析淘宝双11的SSM项目.rar

这是大数据分析淘宝双11项目的最终结果展示项目。 这是一个 SSM 项目,使用的技术包含了,Maven、Idea 开发工具,Tomcat等。

2020-02-27

大数据分析双11的markdown文档.rar

此资料文档是大数据分析淘宝双11的全部文档资料。 其中内容包含了环境搭建、数据准备、数据预处理、Hive分析数据、Spark 分析数据、SSM 架构分析数据结果展示。

2020-02-27

flink-phone.rar

本资源,与我的一篇csdn博客文章保持一致。是其中的代码、配置的打包。还有详细的md文件。 项目信息请找:Flink练习之通话时长的统计

2019-12-14

旅游管理系统.rar

java旅游管理系统,有完整的word文档,详细设计,sql文件。 基于mysql和eclipse,在windows环境下。

2019-10-17

ssh-idea-maven-create.docx

 开发工具使用了 idea 2018年版  Java是jdk1.8  Maven环境是maven3.x和阿里云镜像  框架组合是Spring-4.x、Hibernate-4.x、Spring MVC  需要连接网络

2019-10-17

hibernate_demo.rar

本项目对单表进行增删改查,分页操作。过程中,使用了java8的默认方法和函数式接口、方法引用对事务提交部分进行了优化,去除了冗余代码。 注意:纯粹使用了Hibernate框架,并未使用其他任何框架。

2019-10-11

customer.rar

jsp+servlet+增删改查+分页(多条件查询) 该博客的对应的项目

2019-09-19

myjdbc.rar

使用java语言对jdbc进行封装,有工具类提供了,提交和查询的方法,可对任意单表进行查询、增加、修改、删除等操作

2019-08-24

java数据类型思维导图

这是一个对java数据类型进行详细分类的思维导图,其与我的一篇博客中的图片是一致的。那张图片就是通过它导出的。使用的软件是novamind5。

2018-12-09

java前期总结(面向对象及之前)

暂时只更到面向对象的匿名对象及之前的东西,详细,画了内存图。保证看了会有收获。

2018-02-14

空空如也

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

TA关注的人

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