
Spring Boot
文章平均质量分 85
全面介绍Java开发设计的基础技术,以及上层设计的各种框架技术和原理
xiangzhihong8
著有《React Native移动开发实战》1,2,3版本、《Kotlin入门与实战》1,2版本、《Weex跨平台开发与实战》、《React Native开发进阶》和《Flutter跨平台开发实战》和《Android应用架构实战》和《鸿蒙应用开发与实战》、《Vue3 项目开发实战》即将出版
展开
-
Spring Boot集成Knife4j
不支持以Springfox框架为基础的OpenAPI3规范,放弃Springfox项目的后续版本适配支持工作。Springfox版本选择的依然是2.10.5版本,而并非springfox最新3.0.0版本。而且自2.0.6版本开始,将UI界面中一些个性化配置从代码中剥离,我们可以直接在。注解来使用增强功能,自2.0.6版本后,只需要在配置文件中配置。在以前的版本中,开发者需要在配置类中手动使用。的分组支持我们在yml文件中配置,开启。默认情况下,如果不设置API的分组,注解,更多的注解使用可以参考。原创 2025-01-27 15:12:20 · 507 阅读 · 0 评论 -
Spring Boot整合Minio实现文件上传
minio:@Component/** * 对象存储服务的URL*//*** Access key就像用户ID,可以唯一标识你的账户*//*** Secret key是你账户的密码*//*** 默认文件桶*/...@Beantry {现在启动服务即可。原创 2025-01-06 09:15:03 · 1403 阅读 · 0 评论 -
Spring Boot基于Jsoup的爬虫实现
<a href="11.html">北京市<br></a>原创 2024-12-20 17:25:29 · 608 阅读 · 0 评论 -
Spring Boot实现OAuth2.0登录实战
最近在研究Springboot + Vue 的前后端分离框架,刚开始做登录功能,做着做着觉得普通账户密码登录太简单了,决定再加上 GitHub授权 和 人脸识别等多种快捷登录方式。而GitHub授权登录正好用到了OAuth2.0中最复杂的授权码模式,正好拿我这个案例给大家分享一下OAuth2.0的授权过程。原创 2024-12-17 17:26:28 · 1389 阅读 · 0 评论 -
Spring Boot集成Knife4j文档工具
不支持以Springfox框架为基础的OpenAPI3规范,放弃Springfox项目的后续版本适配支持工作。Springfox版本选择的依然是2.10.5版本,而并非springfox最新3.0.0版本。而且自2.0.6版本开始,将UI界面中一些个性化配置从代码中剥离,我们可以直接在。注解来使用增强功能,自2.0.6版本后,只需要在配置文件中配置。在以前的版本中,开发者需要在配置类中手动使用。的分组支持我们在yml文件中配置,开启。默认情况下,如果不设置API的分组,注解,更多的注解使用可以参考。原创 2024-12-11 09:20:54 · 1195 阅读 · 0 评论 -
Spring Boot如何实现防盗链
盗链是个什么操作,看一下百度给出的解释:盗链是指服务提供商自己不提供服务的内容,通过技术手段绕过其它有利益的最终用户界面(如广告),直接在自己的网站上向最终用户提供其它服务提供商的服务内容,骗取最终用户的浏览和点击率。受益者不提供资源或提供很少的资源,而真正的服务提供商却得不到任何的收益。术语听得有点迷糊?那我们简单的举个栗子:平时我们在TX网看新闻,里边有很多劲爆的图片、视频资源,每天吸引上亿的用户活跃浏览,赚着大把的广告费。原创 2024-12-09 11:54:41 · 842 阅读 · 0 评论 -
Spring Boot读取配置文件的六种方案
Environment 是 springboot 核心的环境配置接口,它提供了简单的方法来访问应用程序属性,包括系统属性、操作系统环境变量、命令行参数、和应用程序配置文件中定义的属性等等。如果上边的几种读取配置的方式你都不喜欢,那么还可以自定义造轮子。我们直接注入PropertySources获取所有属性的配置队列,你是想用注解实现还是其他什么方式,就可以为所欲为了。原创 2024-12-07 14:32:33 · 2998 阅读 · 0 评论 -
Spring Boot接口返回统一格式
Data/**操作成功**/RC100(100,"操作成功"),/**操作失败**/RC999(999,"操作失败"),/**服务限流**/RC200(200,"服务开启限流保护,请稍后再试!"),/**服务降级**/RC201(201,"服务开启降级保护,请稍后再试!"),/**热点参数限流**/RC202(202,"热点参数限流,请稍后再试!"),/**系统规则不满足**/RC203(203,"系统规则不满足要求,请稍后再试!"),原创 2024-12-04 19:30:56 · 1016 阅读 · 0 评论 -
Spring Boot自定义启动banner
如果你想自定义一个独特的启动banner,该怎么做呢?Springboot 允许我们通过自定义启动banner来替换默认的banner。只需要在 resources 目录下创建一个名为 banner.txt 的文件,并在文件中自定义内容即可。表达式说明MANIFEST.MF文件中的版本号上面的的版本号前面加v后上括号springboot的版本号springboot的版本号改变banner字符图案的颜色默认情况下,banner是启用的。原创 2024-12-02 14:57:27 · 713 阅读 · 0 评论 -
MacOS安装Redis
Redis(Remote Dictionary Server,远程字典服务器)是一个开源的高性能键值对(key-value)数据库。它以其出色的性能、可靠性和灵活性而闻名,在多种场景下被广泛使用,包括缓存、消息队列、排行榜、实时分析等。redis的特点如下:内存中数据存储:Redis主要将数据存储在内存中,这使得读写操作非常快速。持久化:尽管Redis是内存数据库,但它提供了持久化机制,可以将内存中的数据保存到磁盘上,防止数据丢失。原创 2024-11-20 11:13:53 · 2014 阅读 · 0 评论 -
在MacOS上安装MongoDB数据库
根据自己的系统环境自行选择下载的版本。将下载好的 MongoDB 安装包解压缩,并将文件夹名改为 mongodb。使用快捷键【 Command + Shift + G】打开前往文件夹弹窗,然后输入路径: /usr/local,并点击前往按钮。将 mongodb 文件夹拖入 local 文件夹中,自此安装完成。原创 2024-09-27 17:23:19 · 2189 阅读 · 0 评论 -
推荐一款开源的Redis桌面客户端
TinyRDM 是一个现代化的、轻量级的跨平台 Redis 桌面客户端,能在 Mac、Windows 和 Linux 系统上使用。它有着现代化的设计风格,界面既简洁又清晰,操作起来方便又高效。不管是刚开始接触的新手,还是经验丰富的开发者,都能很容易地学会使用,能够迅速地管理和操作 Redis 数据库。原创 2024-09-23 11:39:31 · 1019 阅读 · 0 评论 -
Gerrit 使用教程
Gerrit,一种开放源代码的代码审查软件,使用网页界面。利用网页浏览器,同一个团队的程序员,可以相互审阅彼此修改后的代码,决定是否能够提交,退回或是继续修改。它使用版本控制系统Git作为底层。原创 2024-08-13 09:16:40 · 1642 阅读 · 0 评论 -
探索容灾架构演进之路,从单点到异地多活
本文简要介绍了几种容灾架构的类型和它们各自的优缺点。容灾架构的选择在于平衡可用性需求和成本之间的关系,并不存在一种完美的架构,而是应该根据业务发展的阶段逐步演进容灾架构,避免陷入过度设计和资源浪费的困境。理性地选择最适合当前业务阶段的架构,并在业务发展中不断进行迭代,是建立强健容灾体系的关键。接下来的问题是如何根据当前架构进行变革和实施。这个过程充满了挑战和困难,需要认真应对。在下一篇文章中,我们将深入探讨同城双活容灾架构在实际落地中所面临的困难和挑战,并提供相应的解决方案。原创 2023-11-27 10:55:34 · 1482 阅读 · 0 评论 -
替代ELK:ClickHouse+Kafka+FlieBeat才是最佳选择
saas 服务未来会面临数据安全、合规等问题。公司的业务需要沉淀一套私有化部署能力,帮助业务提升行业竞争力。为了完善平台系统能力、我们需要沉淀一套数据体系帮助运营分析活动效果、提升运营能力。然而在实际的开发过程中,如果直接部署一套大数据体系,对于使用者来说将是一笔比较大的服务器开销。为此我们选用折中方案完善数据分析能力。原创 2023-11-24 09:25:02 · 933 阅读 · 0 评论 -
超低延时直播技术演进之路-进化篇
网络基础设施升级、音视频传输技术迭代、WebRTC 开源等因素,驱动音视频服务时延逐渐降低,使超低延时直播技术成为炙手可热的研究方向。实时音视频业务在消费互联网领域蓬勃发展,并逐渐向产业互联网领域加速渗透。经历了行业第一轮的红利爆发期,我国实时音视频行业的场景效能逐渐深化,步入到理性增长阶段。延时的指标选择很大程度上取决于用户与内容制作方的交互耦合程度,场景丰富多样。原创 2023-10-10 22:36:58 · 3298 阅读 · 0 评论 -
如何一步步优化负载均衡策略
如果我们真的想针对延迟做优化,我们需要一种将延迟考虑在内的算法。如果我们可以将动态加权循环算法与最少连接算法结合起来,那不是很好吗?我们可以得到加权循环法的延迟优势和最少连接法的弹性优势。事实证明,在我们之前就有人有了这样的想法。下面是对称为“峰值指数加权移动平均值”(或 PEWMA)的算法的模拟。这是一个又长又复杂的名字,但坚持住,我稍后会详细解释它的工作原理。我为这个模拟设置了特定的参数,保证它表现出预期的行为。如果你仔细观察,你会注意到算法会在一段时间后停止向最左边的服务器发送请求。原创 2023-10-06 09:44:27 · 589 阅读 · 0 评论 -
通过 Java 代码生成请求 CSR证书
在 PKI(Public Key Infrastructure,公开密钥基础建设)体系中,证书签名请求(也称为 CSR 或证书请求)是由客户端提交给 CA(Certificate Authority)用于申请数字证书的信息。其中 PKCS#10 规范是 CSR 中最常见的格式。比如,张三和李四通过互联网进行信息传输,他们两者都希望接受到的信息就是对方发送的原始内容,没有被任何篡改,且不能被抵赖。要实现这个目的,其中一个方法就是使用 PKI。在 PKI 中,他们双方都需要生成密钥对,即公钥和私钥。原创 2023-09-27 11:26:04 · 854 阅读 · 0 评论 -
什么是架构,架构的本质是什么
定义 ”架构是什么“ 是件非常困难的事情,不同的组织对于软件架构有不同的定义,每个人心中也有自身对于系统架构定义的认知。就好比我们无法百分之百表述模型而只能产出模型不同维度的视图,对架构进行完备的定义是不可能的。正所谓,“道可道,非常道。名可名,非常名”。这也是行业内不同的组织和个人从不同的视角对 “什么是架构” 的定义或阐述。下面是IEEE组织对软件架构的定义:将系统架构定义为:架构是系统组织结构 + 组件及联系(组件间以及组件和环境之间) + 原则的组合。系统的组织:表达系统的宏观结构。原创 2023-08-31 11:03:11 · 1909 阅读 · 0 评论 -
领英采用 Protobuf 进行微服务开发,网络延迟降低60%
这套解决方案中需生成一个用于动态生成 Protobuf 模式定义的符号表,但根据客户端类型的不同,符号表的交付方式也会有所不同。领英团队一直在寻求 JSON 的替代方案,一款负载大小紧凑、系列化效率高,可减少延迟并提升吞吐量的方案。最后,经过全面的思考,领英决定采用在各项考量中综合得分最高的Protobuf。领英平台所采用的是微服务架构,而多年以来,JSON 一直都是领英在微服务暴露的五万余 API 节点中所使用的序列化格式。在全公司范围的推广完成后,领英将延迟降低了 60%的同时,也提高了资源的利用率。原创 2023-08-28 09:53:19 · 352 阅读 · 0 评论 -
一文看懂CDN加速原理
随着互联网的发展,用户在使用网络时对网站的浏览速度和效果愈加重视,但由于网民数量激增,网络访问路径过长,从 而使用户的访问质量受到严重影响。特别是当用户与网站之间的链路被突发的大流量数据拥塞时,对于异地互联网用户急速增加的地区来说,访问质量不良更是一个 急待解决的问题。很多时候,大家都在谈CDN,那么何为CDN,原理是什么,今天就给大家普及普及。CDNCDN的全称是Content Deliv...原创 2018-10-18 15:31:51 · 36882 阅读 · 10 评论 -
面试官:一个Spring Boot项目能同时处理多少个请求
这个方法里面,标号为 ① 的地方,就是判断当前工作线程数是否小于核心线程数,小于则直接调用 addWorker 方法,创建线程。如果不能继续添加,说明队列满了,则来到标号为 ③ 的地方,看看是否能执行 addWorker 方法,创建非核心线程,即启用最大线程数。众所周知,JDK 的线程池,是先使用核心线程数配置,接着使用队列长度,最后再使用最大线程配置。所以如果这个表达式为 true,就表明当前线程池的线程数已经是配置的最大线程数了,那就调用 offer 方法,把当前请求放到到队列里面去。原创 2023-07-20 11:24:12 · 1037 阅读 · 0 评论 -
国民级应用,微信是如何治理崩溃的
服务过载便是服务的请求量超出服务所能承受的最高值,可能会导致服务器负载太高,回应延迟时间增加,用户侧表现就是无法加载或是载入迟缓,这也会引起用户进一步的再试,服务一直在对待从前的失效请求,造成合理请求跌 0,甚至造成全部系统软件造成山崩。微信整个负载控制的流程如图所示:当用户从微信发起请求,请求被路由到接入层服务,分配统一的业务和用户优先级,所有到下游的字请求都继承相同的优先级。根据业务逻辑调用1个或多个下游服务。当服务收到请求,首先根据自身服务准入优先级判断请求是接受还是丢弃。转载 2023-06-30 10:42:35 · 170 阅读 · 0 评论 -
JDK 21 中的结构化将带来发编程的一次飞跃
当前的并发编程模型,如ExecutorService API,由于其不受限制的并发模式,引入了复杂性和风险。这种方法将在不同线程中运行的相关任务组视为一个工作单元,从而简化了错误处理和取消,提高了可靠性,并增强了可观测性。在单线程代码中,执行过程总是会强制保证任务和子任务的层次结构,每个子任务相对于其他子任务的生命周期是由代码的语法块结构来管理的。,结构化并发(第二轮孵化)。是甲骨文公司 Java 平台组的工程师,他们意图消除与并发编程相关的常见风险,如线程泄露和取消延迟,并增强并发代码的可观测性。原创 2023-06-25 16:56:03 · 725 阅读 · 0 评论 -
Mac OSX 安装 MongoDB
MongoDB是由C++语言编写,开源而且基于分布式文件存储的介于关系数据库和非关系数据库之间的产品;在高负载的情况下,通过添加更多节点保证服务器性能;旨在为WEB应用提供可扩展的高性能数据存储解决方案;以文档的形式存储数据,数据结构由键值对(key / value);其文档类似 JSON 对象,字段值可以包含其他文档、数组以及文档数组。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。原创 2022-12-20 10:37:51 · 743 阅读 · 1 评论 -
Redis集群部署的三种模式
主从模式是三种模式中最简单的,在主从复制中,数据库分为两类:主数据库(master)和从数据库(slave)。主数据库可以进行读写操作,当读写操作导致数据变化时会自动将数据同步给从数据库;从数据库一般是只读的,并且接收主数据库同步过来的数据;一个master可以拥有多个slave,但是一个slave只能对应一个master;slave挂了不影响其他slave的读和master的读和写,重新启动后会将数据从master同步过来;原创 2022-11-19 15:15:46 · 1514 阅读 · 1 评论 -
ELK保姆级安装部署教程
在后台开发中,日志系统是一个很重要的系统,一个架构良好的日志系统,可以帮助开发者更清楚的了解服务器的状态和系统安全状况,从而保证服务器的稳定运行。日志主要包括系统日志和应用程序日志,运维和开发人员可以通过日志了解服务器中软硬件的信息,检查应用程序或系统的故障,了解故障出现的原因,以便解决问题。目前,在大型的后端架构中,一个标准的数据采集方案通常被称为ELK,即ElasticSearch、Logstash和Kibana。当然,除了ELK,行业内还有一些轻量型数据采集方案,比如Beats、Loki。原创 2022-11-08 15:36:04 · 3449 阅读 · 6 评论 -
轻量级的搜索引擎MeiliSearch
总的来说,对于数据量不是很大的中小型企业来说(几百万到几千万的数据),都可以使用 MeiliSearch 搜索引擎。同时,它的使用场景基本可以覆盖当前主流的平台和技术,如管理后台搜索、小程序搜索等场景中。是一款真正轻量级安装部署、搜索速度快到极致,名副其实的轻量级且美丽搜索引擎。原创 2022-11-05 18:57:10 · 2633 阅读 · 0 评论 -
爱奇艺开源的高性能网络安全监控引擎
PPT。原创 2022-10-27 11:27:54 · 3881 阅读 · 0 评论 -
ClickHouse安装部署
最近由于业务需要,所以研究了一下ClickHouse,也踩了一些坑,在此记录一下。ClickHouse中文文档比较齐全,入门之前建议先看下官方文档,可以减少踩坑和降低学习成本,ClickHouse中文文档地址:https://clickhouse.com/docs/zh/getting-started/tutorial/1,本地安装部署由于我的电脑是mac m1的,所以采用的是下载源码自己构建的方式在本地运行ClickHouse的,参考的是如下的文章:MacOS M1芯片安装ClickHouse 。这原创 2022-05-31 10:47:35 · 1264 阅读 · 0 评论 -
Redis官方可视化工具RedisInsight
最近逛了一下Redis官方网站,发现Redis不仅推出了很多新特性,而且还发布了一款可视化工具RedisInsight。试用了一下感觉非常不错,最关键的是能支持RedisJSON之类的新特性,这是第三方工具无法比拟的。RedisInsight简介RedisInsight是Redis官方出品的可视化管理工具,可用于设计、开发、优化你的Redis应用。支持深色和浅色两种主题,界面非常炫酷!可支持String、Hash、Set、List、JSON等多种数据类型的管理,同时支持远程使用CLI功能,功能非常强大.转载 2022-04-19 11:11:21 · 2319 阅读 · 1 评论 -
Intellij Idea 将Java项目打包成jar
最近,在做Android项目的时候,遇到一个下载zip文件并解压的需求,对于普通的文件解压,使用OutputStream和InputStream即可完成。但是,如果需要解压时需要密码什么的,普通的流读取就不行了。最后,找了大半天,找到了一个ZIP4J的开源库,ZIP4J支持以下特性:Create, Add, Extract, Update, Remove files from a Zip fileRead/Write password protected Zip filesAES 128/256 E原创 2022-04-08 16:56:29 · 2642 阅读 · 0 评论 -
Spring 漏洞及其修复方案
Spring社区发布了一篇名为《Spring Framework RCE, Early Announcement》的文章,官宣了最近网传的Spring漏洞。攻击者利用该漏洞,可在未授权的情况下远程执行命令。目前,漏洞利用细节已大范围公开,好在Spring官方已发布补丁修复该漏洞。漏洞分析Spring框架(Framework)是一个开源的轻量级J2EE应用程序开发框架,提供了IOC、AOP及MVC等功能,解决了程序人员在开发中遇到的常见问题,提高了应用程序开发便捷度和软件系统构建效率。2022年3月30原创 2022-04-01 16:35:23 · 3663 阅读 · 0 评论 -
Jenkins+Docker+Gitee+SpringBoot自动化部署
当我们使用传统的开发方式开发后台系统时,每写完一个功能点就需要重新运行一下项目,然后进行测试,如果是项目比较小还可以,但是如果项目比较大的话,由于涉及的人员比较多,这种开发方式就比较麻烦。基于此,我们就需要使用Jenkins配合Gitee搭建一个自动化部署平台,并将代码托管到服务器上,这样减轻了本地的电脑压力,也解放了部署的流程。1, 搭建Jenkins平台首先,我们需要搭建一下Jenkins自动化构建平台。首先,我们需要安装Docker,然后在Docker中安装Jenkins,安装的命令如下:# 安原创 2022-02-28 19:46:13 · 1523 阅读 · 4 评论 -
RedisJson发布官方性能报告,性能碾压ES和Mongo
一、概述近期官网给出了RedisJson(RedisSearch)的性能测试报告,可谓碾压其他NoSQL,下面是核心的报告内容,先上结论:对于隔离写入(isolated writes),RedisJSON 比 MongoDB 快 5.4 倍,比 ElasticSearch 快 200 倍以上。对于隔离读取(isolated reads),RedisJSON 比 MongoDB 快 12.7 倍,比 ElasticSearch 快 500 倍以上。在混合工作负载场景中,实时更新不会影响 Redis翻译 2021-11-25 10:51:56 · 6143 阅读 · 8 评论 -
Spring Boot项目搭建与启动
Spring Boot简介Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。在正式介绍Spring Boot之前,让我们先来看看Spring框架...原创 2020-10-12 18:22:26 · 673 阅读 · 0 评论 -
DBeaver,一款数据库管理工具
前不久,由于Navicat爆出了一些漏洞,具体参考:NAVICAT PREMIUM,公司要求必须卸载Navicat,即便是免安装版也不让使用,那么除了Navicat外,还有哪些可视化的数据库管理工具呢?大体搜索了下,不管是官方的Workbench,还是其他的一些软件,使用体验上都不是很好,偶然间,同事推荐了DBeaver。DBeaver 是一个基于 Java 开发,免费开源的通用数据库管理和开发工具,使用非常友好,且遵循ASL 协议。由于 DBeaver 基于 Java 开发,可以运行在各种操作系统上,比原创 2020-10-09 11:58:26 · 5695 阅读 · 9 评论 -
Myexclipse创建Junit测试
. 下载JUnit的jar文件,下载地址在这里2. 在MyEclipse中新建一个要测试的项目HelloJUnit3. 添加一个要测试的类HelloJUnit,代码如下,注意需要先建packageJava代码 package com.yukaizhao; public class HelloJUnit { publi原创 2016-06-01 19:05:51 · 1244 阅读 · 0 评论 -
struts2实现ajax校验的2种方法
共同的一点是,Action都需要将一个方法暴露出来,给前端javascript调用 javascript的代码都是一样的: Js代码 function testAjax() { var $userNameInput = $("#ajax_username"); var userName = $userNameInput.原创 2016-03-15 08:57:48 · 3504 阅读 · 1 评论 -
Android+struts2+json方式模拟手机登录功能
涉及到的知识点: 1.Struts2框架的搭建(包括Struts2的jSON插件) 2.Android前台访问Web采用HttpClient方式。 3.Android采用JSON的解析。服务端主要包含一个Action,通过struts的web配置配置struts.xml驱动业务逻辑的执行,然后对于符合条件的登录,返回给客户端通过jsonobject包装的数据。原创 2016-03-14 15:28:19 · 6267 阅读 · 0 评论