Spring Boot 中使用 JSON Schema 来校验复杂JSON数据
JSON是我们编写API时候用于数据传递的常用格式,那么你是否知道JSON Schema呢? 在数据交换领域,JSON Schema 以其强大的标准化能力,为定义和规范 JSON 数据的结构与规则提供了有力支持。通过一系列精心设计的关键字,JSON Schema 能够详尽地描述数据的各项属性。...[2024/8/7]
3分钟带你搞定Spring Boot中Schedule
一、背景介绍 在实际的业务开发过程中,我们经常会需要定时任务来帮助我们完成一些工作,例如每天早上 6 点生成销售报表、每晚 23 点清理脏数据等等。 如果你当前使用的是 SpringBoot 来开发项目,那么完成这些任务会非常容易! SpringBoot 默认已经帮我们完成了相关定时任务...[2024/7/19]
我不应该用JWT的!
一、前言 大家好呀,我是summo,之前有自学过Shrio框架,网上一搜就有SpringBoot整合Shrio+ JWT的文章,我是在学习Shrio框架的时候顺带学的JWT。后来我还看见有很多博主专门写文章介绍JWT,说这个东西的优点很多,安全性好、去中心化、方便啥的,我就把JWT也应用在我们自...[2024/7/17]
【java深入学习第2章】Spring Boot 结合 Screw:高效生成数据库设计文档之道
在开发过程中,数据库设计文档是非常重要的,它可以帮助开发者理解数据库结构,方便后续的维护和扩展。手动编写数据库设计文档不仅耗时,而且容易出错。幸运的是,可以使用Spring Boot和Screw来自动生成数据库设计文档。 什么是Screw? Screw是一个开源的数据库文档生成工具,它可以根据...[2024/7/14]
不单独部署注册中心,又要具备注册中心的功能,我能上天!
开心一刻 昨天看到一条广告:全国比丑大赛,一等奖 2 万奖金 我高高兴兴骑着自行车去了场地,结果被保安拦着不让进 我心里窃喜:莫非我长得不丑,不符合参赛条件? 我说道:为什么不让我进 保安:这是业余人员间的比赛,职业选手不能参加 敢情不是不丑,而是太丑! 书接上回 上篇 不单独部署...[2024/7/8]
从零开始学Spring Boot系列-集成Spring Security实现用户认证与授权
在Web应用程序中,安全性是一个至关重要的方面。Spring Security是Spring框架的一个子项目,用于提供安全访问控制的功能。通过集成Spring Security,我们可以轻松实现用户认证、授权、加密、会话管理等安全功能。本篇文章将指导大家从零开始,在Spring Boot项目中集...[2024/7/1]
不单独部署注册中心,又要具备注册中心的功能,咋不让我上天?
开心一刻 暗恋公司的一个女同事,聊了快一年了,一直没勇气表白 上个月突然找我借 5000 块钱,我直接转给她了 我:这钱干嘛用的? 她:给男朋友买个手机 我强颜欢笑说:你真贴心 几天后我收到一个快递,打开一看是部手机!!! 我压抑着内心的激动,放下手头的工作,立马微信上问她怎么回事 ...[2024/7/1]
如何在Spring Boot框架下实现高效的Excel服务端导入导出?
前言 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。今天我们就使用纯前对按表格控件带大家了解,如何在Spring Boot框架下实现Excel服务...[2024/6/26]
EasyExcel 无法读取图片?用poi写了一个工具类
在平时的开发中,经常要开发 Excel 的导入导出功能。一般使用 poi 或者 EasyExcel 开发,使用 poi 做 excel 比较复杂,大部分开发都会使用 EasyExcel 因为一行代码就能实现导入和导出的功能。但是 EasyExcel 不支持图片的读的操作,本文操作如何实现图片的...[2024/6/25]
盘点 Spring Boot 解决跨域请求的几种方法
熟悉 web 系统开发的同学,对下面这样的错误应该不会太陌生。 之所以会出现这个错误,是因为浏览器出于安全的考虑,采用同源策略的控制,防止当前站点恶意攻击 web 服务器盗取数据。 01、什么是跨域请求 同源策略,简单的说就是当浏览器访问 web 服务器资源时,只有源相同才能正常进行通信...[2024/6/17]
我对微服务架构的简单理解
在写架构的时候,就要想着,哪些功能是要以后可能要单独部署的,虽然一开始写的时候可以写在一个解决方案里,但那些请求的dto,和返回的视图,业务依赖,能随时独立出去,完全不需要做任何操作,即使是文件夹复制移动都不需要,就能够把该功能独立成一个解决方案,做到独立部署,然后通过远程接口的方法调用处理独立部...[2024/5/27]
【进阶篇】使用 Stream 流对比两个集合的常用操作分享
目录前言一、集合的比较1.1需要得到一个新的流1.2只需要一个简单 boolean 结果二、简单集合的对比2.1整型元素集合2.2字符串元素集合2.3其它比较三、Stream 基础回顾3.1基本概念3.2 Stream 操作的三个步骤3.2.1创建 Stream3.2.2中间操作3.2.3终止操...[2024/5/27]
Spring Boot中的 6 种API请求参数读取方式
使用Spring Boot开发API的时候,读取请求参数是服务端编码中最基本的一项操作,Spring Boot中也提供了多种机制来满足不同的API设计要求。 接下来,就通过本文,为大家总结6种常用的请求参数读取方式。如果你发现自己知道的不到6种,那么赶紧来查漏补缺一下。如果你知道的不止6种,那...[2024/5/24]
为什么不推荐在Spring Boot中使用@Value加载配置
@Value注解相信很多Spring Boot的开发者都已经有接触了,通过使用该注解,我们可以快速的把配置信息加载到Spring的Bean中。 比如下面这样,就可以轻松的把配置文件中key为com.didispace.title配置信息加载到TestService中来使用 @Service ...[2024/5/22]
关于DDD和COLA的一些总结和思考
写在前面: 其实之前一直想汇总一篇关于自己对于面向对象的思考以及实践的文章,但是苦于自己的“墨迹”,一延再延,最近机缘巧合下仔细了解了一下COLA的内容,这个想法再次被勾起,所以这次一鼓作气,准备好好梳理一篇。至于标题,因为是被DDD和COLA唤起的,索性就叫这个吧。 思维:面向对象和面向过程 ...[2024/5/11]
@Async异步失效的9种场景
前言 最近星球中有位小伙伴问了我一个问题:他在项目某个方法使用@Async注解,但是还是该方法还是同步执行了,异步不起作用,到底是什么原因呢? 伪代码如下: @Slf4j @Service public cla UserService { @Async public vo...[2024/5/8]
Sermant在异地多活场景下的实践
本文分享自华为云社区《Sermant在异地多活场景下的实践》,作者:华为云开源。 Sermant社区在1.3.0和1.4.0版本相继推出了消息队列禁止消费插件和数据库禁写插件,分别用于解决异地多活场景下的故障切流和保护数据一致性问题。本文将对Sermant在异地多活场景下的实践进行剖析。 一、...[2024/5/8]
Spring Boot 编写 API 的 10条最佳实践
10 个最佳实践,让您像专业人士一样编写 Spring Boot API,并结合编码示例和解释: 1. RESTful API 设计原则: 清晰一致的资源命名:使用准确反映 API 管理的资源的名词(例如,/products、/users)。 @GetMapping("/product {...[2024/4/29]
SnakeYaml反序列化分析
前言 SnakeYaml是Java中解析yaml的库,而yaml是一种人类可读的数据序列化语言,通常用于编写配置文件等。yaml真是到哪都有啊。 环境搭建 <dependency> <groupId>org.yaml</groupId> <ar...[2024/4/23]
C3P0反序列化链分析
前言 C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。使用它的开源项目有Hibernate、Spring等。之前有接触到过,但是没有深入了解,像之前学二次反序列化时,WrapperConnectionPoolDataSource就是C3...[2024/4/15]
面试官:实战中用过CountDownLatch吗?详细说一说,我:啊这
写在开头 在很多的面经中都看到过提问 CountDownLatch 的问题,正好我们最近也在梳理学习AQS(抽象队列同步器),而CountDownLatch又是其中典型的代表,我们今天就继续来学一下这个同步工具类! CountDownLatch有何作用? 我们知道AQS是专属于构造锁和同步器的...[2024/4/15]
RestTemplate进行https请求时适配信任证书
转载请注明出处: 1.http协议请求 使用RestTemplate进行http协议的请求时,不需要考虑证书验证相关问题,以下为使用RestTemplate直接使用的代码示例: import org.springframework.web.client.RestTemplate; ...[2024/4/15]
Kryo反序列化链分析
前言 Kryo是一个快速序列化/反序列化工具,依赖于字节码生成机制(底层使用了ASM库),因此在序列化速度上有一定的优势,但正因如此,其使用也只能限制在基于JVM的语言上。 Kryo序列化出的结果,是其自定义的,独有的一种格式。由于其序列化出的结果是二进制的,也即byte[],因此像redis...[2024/4/15]
实战指南:使用 xUnit.DependencyInjection 在单元测试中实现依赖注入【完整教程】
引言 上一篇我们创建了一个Sample.Api项目和Sample.Repository,并且带大家熟悉了一下Moq的概念,这一章我们来实战一下在xUnit项目使用依赖注入。 Xunit.DependencyInjection Xunit.DependencyInjection 是一个用于 xU...[2024/4/15]
Spring Boot 工程开发常见问题解决方案,日常开发全覆盖
本文是 SpringBoot 开发的干货集中营,涵盖了日常开发中遇到的诸多问题,通篇着重讲解如何快速解决问题,部分重点问题会讲解原理,以及为什么要这样做。便于大家快速处理实践中经常遇到的小问题,既方便自己也方便他人,老鸟和新手皆适合,值得收藏 ?? 1. 哪里可以搜索依赖包的 Maven 坐标和...[2024/3/29]
消息队列的七种经典应用场景
在笔者心中,消息队列,缓存,分库分表是高并发解决方案三剑客。 在职业生涯中,笔者曾经使用过 ActiveMQ 、RabbitMQ 、Kafka 、RocketMQ 这些知名的消息队列 。 这篇文章,笔者结合自己的真实经历,和大家分享消息队列的七种经典应用场景。 1 异步&解耦 ...[2024/3/29]
OGNL表达式注入分析
OGNL基础 依赖 <dependency> <groupId>ognl</groupId> <artifactId>ognl</artifactId> <version>3.1.19</version> ...[2024/3/29]
浅谈分布式任务调度系统Celery的设计与实现
Celery是一个简单、灵活且可靠的分布式任务队列,它支持任务的异步执行、进度监控、重试机制等功能。 Celery的核心组件包括: Broker:消息中间件,如RabbitMQ。用于任务的发布和订阅。 Worker:任务执行者,运行在各个Worker节点上。 Client:任务提交者,运行在...[2024/3/26]
Shiro反序列化分析
前言 Shiro,一个流行的web框架,养活了一大批web狗,现在来对它分析分析。Shiro的gadget是CB链,其实是CC4改过来的,因为Shiro框架是自带Commoncollections的,除此之外还带了一个包叫做CommonBeanUtils,主要利用类就在这个包里 环境搭建 ht...[2024/3/25]
从零开始学Spring Boot系列-集成Kafka
Kafka简介 Apache Kafka是一个开源的分布式流处理平台,由LinkedIn公司开发和维护,后来捐赠给了Apache软件基金会。Kafka主要用于构建实时数据管道和流应用。它类似于一个分布式、高吞吐量的发布-订阅消息系统,可以处理消费者网站的所有动作流数据。这种动作流数据包括页面浏览...[2024/3/22]
开源一个教学型分库分表示例项目 shardingsphere-jdbc-demo
在笔者心中,消息队列,缓存,分库分表是高并发解决方案三剑客。 分库分表之所以被广泛使用,因为工程相对简单,但分库分表并不仅仅是分片,还是需要考虑如何扩缩容(全量同步、增量同步、数据校验等)。 因此笔者做了一个教学型分库分表示例项目 ,计划将分库分表的技术体系都实际演示一遍。 ht...[2024/3/22]
Solon Web 文件上传的最佳实践
文件上传是 Web 开发中最常见的一个应用场景。一般在处理数据时,会有两种常见的方案:直接把文件流放在内存里,或者把文件流先缓冲到磁盘。 1、如果是高频且文件极小 使用纯内存模式,默认即可。如果高频小文件,是不适合用“临时文件模式”的,磁盘可能容易刷坏。只能多配些内存! 2、如果是低频或者文件...[2024/3/20]
写了个简单爬虫,分析 Boss 直聘自动驾驶岗位
两年前,朋友想知道 Bo 直聘上关于自动驾驶的岗位有哪些 ,于是,笔者写了一个简单的爬虫 crawler-bo ,将岗位的信息收集起来。 这篇文章,笔者想分享爬虫 crawler-bo 的设计思路。 1 基本原理 Selenium + chromedriver 对于很多动态渲染的网...[2024/3/18]
VSCode 配置 Spring Boot 项目开发环境
神器IDEA在升级到2023之后越发卡顿, EDU邮箱也不能用了, 照现在这个JDK版本的升级速度, 神器不升级也不行, 需要开始物色替代品. 其它IDE我用得少, VSCode还是比较熟悉的, 可以作为备选项. 两三年前曾经试过配置Java环境, 存在不少问题作罢. 最近搜了下相关的文章, ...[2024/3/11]
从零开始学Spring Boot系列-集成MySQL
在Spring Boot中集成MySQL是为了让开发者能够轻松地与MySQL数据库进行交互。本篇文章将指导你如何在Spring Boot 3.2.3项目中使用Gradle来集成MySQL。在此之前,我们需要在Ubuntu 22.04上安装MySQL 8作为我们的数据库服务器。 安装MySQL8 ...[2024/3/4]
从零开始学Spring Boot系列-返回json数据
欢迎来到从零开始学Spring Boot的旅程!在Spring Boot中,返回JSON数据是很常见的需求,特别是当我们构建RESTful API时。我们对上一篇的Hello World进行简单的修改。 添加依赖 首先,确保你的build.gradle文件中已经包含了Spring Web...[2024/3/1]
新来个架构师,用48张图把OpenFeign原理讲的炉火纯青~~
大家好,我是三友~~ 在很久之前,我写过两篇关于OpenFeign和Ribbon这两个SpringCloud核心组件架构原理的文章 但是说实话,从我现在的角度来看,这两篇文章的结构和内容其实还可以更加完善 刚好我最近打算整个SpringCloud各个组件架构原理的小册子 所以趁着这个机会...[2024/3/1]
求求你别再用OkHttp调用API接口了,快来试试这款HTTP客户端库吧
引言 在日常业务开发中,我们时常需要使用一些其他公司的服务,调用第三方系统的接口,这时就会涉及到网络请求,通常我们可以使用HttpClient,OkHttp等框架去完成网络请求。随着RESTful API的普及,一个高效、简洁且易于维护的HTTP客户端库显得尤为关键。而本文主要介绍一款强大的网络...[2024/3/1]
【Filament】立方体贴图(6张图)
1 前言 ? 本文通过一个立方体贴图的例子,讲解三维纹理贴图(子网格贴图)的应用,案例中使用 6 张不同的图片给立方体贴图,图片如下。 ? 读者如果对 Filament 不太熟悉,请回顾以下内容。 Filament环境搭建 绘制三角形 绘制矩形 绘制圆形 绘制立方体 纹理贴图...[2024/3/1]
如何创建自己的Spring Boot Starter并为其编写单元测试
当我们想要封装一些自定义功能给别人使用的时候,创建Spring Boot Starter的形式是最好的实现方式。如果您还不会构建自己的Spring Boot Starter的话,本文将带你一起创建一个自己的Spring Boot Starter。 快速入门 创建一个新的 Maven 项目。...[2024/2/28]
从零开始学Spring Boot系列-Hello World
欢迎来到从零开始学Spring Boot的旅程!在这个系列的第二篇文章中,我们将从一个非常基础但重要的示例开始:创建一个简单的Spring Boot应用程序,并输出“Hello World”。 1. 环境准备 首先,确保你的开发环境已经安装了以下工具: Java Development Ki...[2024/2/26]
从零开始学Spring Boot系列-前言
从零开始学Spring Boot系列-前言 在数字化和信息化的时代,Java作为一种成熟、稳定且广泛应用的编程语言,已经成为构建企业级应用的首选。而在Java生态系统中,Spring框架无疑是其中最为耀眼的一颗明星。它提供了全面的编程和配置模型,用于构建企业级应用。随着Spring Boot的出...[2024/2/23]
Sentinel 源码学习
引入依赖 <dependency> <groupId>com.alibaba.csp</groupId> <artifactId>sentinel-core</artifactId> <version&g...[2024/2/21]
十八张图带你入门实时监控系统HertzBeat
我们经常讲:研发人员有两只眼睛,一只是监控平台,另一只是日志平台。在对性能和高可用讲究的场景里,监控平台的重要性再怎么强调也不过分。 这篇文章,我们聊聊开源实时监控告警系统 HertzBeat 赫兹跳动。 1 产品特色 HertzBeat 有两个非常鲜明的特色:强大的监控模版和无需 Ag...[2024/2/7]
事务提交之后再执行某些操作 → 引发对 TransactionSynchronizationManager 的探究
开心一刻 昨晚,小妹跟我妈聊天 小妹:妈,跟你商量个事,我想换车,资助我点呀 妈:哎呀,你那分扣的攒一堆都够考清华的,还换车资助点,有车开就不错了 小妹:你要是这么逼我,别说哪天我去学人家傍大款啊 妈:哎呀妈,你脸上那褶子比你人生规划都清晰,咋地,大款缺地图呀,找你?...[2024/1/29]
手把手带你上手swagger3
配置POM 只需要加一个依赖,并且要注意,swagger3在springboot2.5版本以上会出现问题 <dependency> <groupId>io.springfox</groupId> ...[2024/1/24]
mysql和redis库存扣减和优化
前言 大流量情况下的库存是老生常谈的问题了,在这里我整理一下mysql和redis应对扣除库存的方案,采用jmeter进行压测。 JMETER设置 库存初始值50,线程数量1000个,1秒以内启动全部,一个线程循环2次,共2000个请求 MySQL方案 初始方案 <updat...[2024/1/19]
Guava Cache 异步刷新技巧,你值得拥有!
Guava Cache是一款非常优秀的本地缓存框架,提供简洁易用的 API 供开发者使用。 这篇文章,我们聊聊如何使用 Guava Cache 异步刷新技巧带飞系统性能 。 1 基本用法 首先,在 Java 应用中添加 maven 依赖: <dependency> ...[2024/1/3]
23年底,我出齐了Spring boot,Spring cloud和案例方面的书,正在写一本面试书(代年终总结)
年末了,再来总结一下吧,希望本人明年的年终总结文还能在博客园发。 这次总结的主题是本人出的java书。这几年本人出了不少书,其中有python、redis和Java方面的。 姑且不说其它,java方面,本人出了spring boot,spring cloud(第一代),spring clou...[2023/12/29]
Spring Boot 2.x 到 3.2 的全面升级指南
Spring Framework 是一种流行的开源企业级框架,用于创建在 Java Virtual Machine (JVM) 上运行的独立、生产级应用程序。而Spring Boot 是一个工具,可以让使用 Spring 框架更快、更轻松地开发 Web 应用程序和微服务。随着 Spring Bo...[2023/12/29]