当前位置: 首页 > news >正文

Spring MVC中跨域问题处理

在Spring MVC中处理跨域问题可以通过以下几种方式实现,确保前后端能够正常通信:


方法一:使用 @CrossOrigin 注解

适用于局部控制跨域配置,直接在Controller或方法上添加注解。

示例代码:
@RestController
@CrossOrigin(origins = "http://localhost:8080") // 允许指定源
public class MyController {@GetMapping("/data")public String getData() {return "Hello, CORS!";}
}
  • 参数说明
    • origins: 允许的源(多个用逗号分隔,或用 @CrossOrigin(origins = "*") 允许所有,但不推荐生产环境)。
    • methods: 允许的HTTP方法(如 RequestMethod.GET)。
    • allowedHeaders: 允许的请求头。
    • allowCredentials: 是否允许发送Cookie(需与前端配置一致)。

方法二:全局配置 WebMvcConfigurer

适用于全局跨域设置,统一管理所有接口的跨域规则。

步骤:
  1. 创建配置类实现 WebMvcConfigurer
  2. 重写 addCorsMappings 方法。
示例代码:
@Configuration
public class CorsGlobalConfig implements WebMvcConfigurer {@Overridepublic void addCorsMappings(CorsRegistry registry) {registry.addMapping("/**") // 匹配所有路径.allowedOrigins("http://localhost:8080", "https://example.com").allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS").allowedHeaders("*").allowCredentials(true).maxAge(3600); // 预检请求缓存时间(秒)}
}

方法三:使用 CorsFilter

通过自定义过滤器精细化控制跨域行为,适合复杂场景。

示例代码:
@Configuration
public class CorsFilterConfig {@Beanpublic CorsFilter corsFilter() {UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();CorsConfiguration config = new CorsConfiguration();config.setAllowCredentials(true);config.addAllowedOrigin("http://localhost:8080");config.addAllowedHeader("*");config.addAllowedMethod("*");source.registerCorsConfiguration("/**", config); // 对所有路径生效return new CorsFilter(source);}
}

方法四:结合 Spring Security

若项目集成了Spring Security,需额外配置安全规则以启用CORS。

步骤:
  1. 在安全配置类中启用CORS。
  2. 定义 CorsConfigurationSource Bean。
示例代码:
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {@Overrideprotected void configure(HttpSecurity http) throws Exception {http.cors().and() // 启用CORS.csrf().disable().authorizeRequests().anyRequest().authenticated();}@Beanpublic CorsConfigurationSource corsConfigurationSource() {CorsConfiguration config = new CorsConfiguration();config.setAllowedOrigins(Arrays.asList("http://localhost:8080"));config.setAllowedMethods(Arrays.asList("GET", "POST", "PUT", "DELETE"));config.setAllowedHeaders(Arrays.asList("*"));config.setAllowCredentials(true);UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();source.registerCorsConfiguration("/**", config);return source;}
}

方法五:通过 <mvc:cors> 命名空间配置全局跨域规则

在 Spring MVC 中,如果项目使用 applicationContext.xml 进行配置(基于 XML 的配置方式),这是最直接的 XML 配置方式,适用于全局跨域设置。

步骤:
  1. 确保 XML 文件头部声明了 mvc 命名空间

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:mvc="http://www.springframework.org/schema/mvc"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc.xsd">
    
  2. <mvc:annotation-driven> 标签内配置跨域规则

    <mvc:annotation-driven><mvc:cors><!-- 配置全局跨域 --><mvc:mapping path="/**"allowed-origins="http://localhost:8080, https://example.com"allowed-methods="GET, POST, PUT, DELETE, OPTIONS"allowed-headers="Content-Type, Authorization"allow-credentials="true"max-age="3600"/></mvc:cors>
    </mvc:annotation-driven>
    
    • 参数说明
      • path: 匹配的 URL 路径模式(支持 Ant 风格,如 /api/**)。
      • allowed-origins: 允许的源(多个用逗号分隔)。
      • allowed-methods: 允许的 HTTP 方法。
      • allowed-headers: 允许的请求头。
      • allow-credentials: 是否允许发送 Cookie(对应 allowCredentials(true))。
      • max-age: 预检请求缓存时间(秒)。

方法六:通过自定义 CorsFilter Bean 配置

通过applicationContext.xml配置处理跨域问题时,如果需要对跨域行为进行更细粒度的控制(例如动态配置),可以手动注册 CorsFilter

步骤:
  1. applicationContext.xml 中定义 CorsFilter Bean

    <bean id="corsFilter" class="org.springframework.web.filter.CorsFilter"><constructor-arg><bean class="org.springframework.web.cors.UrlBasedCorsConfigurationSource"><property name="corsConfigurations"><map><entry key="/**"><bean class="org.springframework.web.cors.CorsConfiguration"><property name="allowedOrigins"><list><value>http://localhost:8080</value><value>https://example.com</value></list></property><property name="allowedMethods"><list><value>GET</value><value>POST</value><value>PUT</value><value>DELETE</value><value>OPTIONS</value></list></property><property name="allowedHeaders"><list><value>Content-Type</value><value>Authorization</value></list></property><property name="allowCredentials" value="true"/><property name="maxAge" value="3600"/></bean></entry></map></property></bean></constructor-arg>
    </bean>
    
  2. 确保 CorsFilter 优先执行
    web.xml 中,将 CorsFilter 注册为第一个 Filter:

    <filter><filter-name>corsFilter</filter-name><filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
    </filter>
    <filter-mapping><filter-name>corsFilter</filter-name><url-pattern>/*</url-pattern>
    </filter-mapping>
    

完整示例:结合 applicationContext.xmlweb.xml

applicationContext.xml 配置:
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:mvc="http://www.springframework.org/schema/mvc"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc.xsd"><!-- 启用注解驱动并配置 CORS --><mvc:annotation-driven><mvc:cors><mvc:mapping path="/**"allowed-origins="http://localhost:8080"allowed-methods="GET, POST, PUT, DELETE"allowed-headers="Content-Type, Authorization"allow-credentials="true"max-age="3600"/></mvc:cors></mvc:annotation-driven></beans>
web.xml 配置(确保 Filter 顺序):
<filter><filter-name>corsFilter</filter-name><filter-class>org.springframework.web.filter.CorsFilter</filter-class>
</filter>
<filter-mapping><filter-name>corsFilter</filter-name><url-pattern>/*</url-pattern>
</filter-mapping>

通过方式五和方式六,可以在基于 XML 的 Spring MVC 项目中灵活配置跨域规则。推荐使用 <mvc:cors> 命名空间配置,简单且直接;若需动态控制,则选择 CorsFilter

关键注意事项

  1. 预检请求(Preflight):浏览器会先发送 OPTIONS 请求检查服务器是否允许跨域。确保配置中包含 allowedMethods 并正确处理 OPTIONS
  2. 携带凭证(Cookies):若需传输Cookies,前端需设置 withCredentials: true,后端需设置 allowCredentials(true),且 allowedOrigins 不能为 *
  3. 生产环境安全:避免使用通配符 *,应明确指定允许的源、方法和头信息。
  4. allowedOrigins vs allowedOriginPatterns
    • 如果使用 Spring 5.3+,可以用 allowedOriginPatterns 支持通配符模式(如 http://*.example.com)。
    • XML 配置中需通过 <list> 手动指定具体域名。
  5. 与 Spring Security 集成
    • 如果项目集成了 Spring Security,需在安全配置中启用 CORS:
      <http auto-config="true" use-expressions="true"><cors/> <!-- 启用 CORS --><!-- 其他安全配置 -->
      </http>
      

通过上述方法,可灵活解决Spring MVC中的跨域问题,根据项目需求选择最合适的方案。

相关文章:

Spring MVC中跨域问题处理

在Spring MVC中处理跨域问题可以通过以下几种方式实现&#xff0c;确保前后端能够正常通信&#xff1a; 方法一&#xff1a;使用 CrossOrigin 注解 适用于局部控制跨域配置&#xff0c;直接在Controller或方法上添加注解。 示例代码&#xff1a; RestController CrossOrigin…...

Python爬虫(20)Python爬虫数据存储技巧:二进制格式(Pickle/Parquet)性能优化实战

目录 背景介绍一、二进制存储的核心优势二、Python Pickle&#xff1a;轻量级对象序列化1. 基本介绍2. 代码示例3. 性能与局限性 三、Apache Parquet&#xff1a;列式存储的工业级方案1. 基本介绍2. 代码示例&#xff08;使用PyArrow库&#xff09;3. 核心优势 四、性能对比与选…...

MCP系列(一)什么是MCP?

一、MCP 是什么&#xff1a;从 USB-C 到 AI 的「万能接口」哲学 MCP&#xff08;Model Context Protocol&#xff0c;模型上下文协议&#xff09; 是Anthropic于2024年11月推出的AI跨系统交互标准&#xff0c;专为解决LLM&#xff08;大语言模型&#xff09;的「数字失语症」—…...

使用Java NIO 实现一个socket通信框架

使用Java NIO(非阻塞I/O)实现一个Socket通信框架,可以让你构建高性能的网络应用。NIO提供了Channel、Buffer和Selector等核心组件,支持非阻塞模式下的网络编程。下面是一个简单的例子,展示了如何使用Java NIO创建一个基本的服务器端和客户端进行Socket通信。 1.服务器端 …...

Web前端技术栈:从入门到进阶都需要学什么内容

概述 Web前端技术栈&#xff1a;从入门到进阶都需要学什么内容。 1. jQuery&#xff1a;经典高效的DOM操作利器 作为早期前端开发的“瑞士军刀”&#xff0c;jQuery通过简洁的语法和链式调用大幅简化了DOM操作与事件处理。其核心模块如选择器引擎、动画效果和Ajax交互至今仍值…...

Kepware 连接Modbus TCP/IP

Modbus TCP modbus tcp 是modbus协议的一个变种&#xff0c;基于TCP/IP协议栈在以太网上进行通信。Modbus TCP采用客户端-服务器&#xff08;Master-Slave&#xff09;的通信模型。客户端发起请求&#xff0c;服务器响应请求。一个网络中可以有多个客户端和服务器&#xff0c;…...

PyCharm连接WSL2搭建的Python开发环境

目录 一、开启WSL2服务 二、安装Ubuntu 三、安装Anaconda 四、构建Tensorflow_gpu环境 五、PyCharm连接到WSL2环境 使用 PyCharm 连接 WSL2 搭建 Python 开发环境的主要目的是结合 Windows 的易用性和 Linux 的开发优势&#xff0c;提升开发效率和体验。以下是具体原因和优…...

JVM中类加载过程是什么?

引言 在Java程序运行过程中&#xff0c;类的加载是至关重要的环节&#xff0c;它直接关系到程序的执行效率和安全性。类加载不仅仅是简单地将.class文件读取到内存中&#xff0c;而是经历了加载、连接&#xff08;包含验证、准备和解析&#xff09;以及初始化等多个复杂步骤&a…...

JVM中对象的存储

引言 在 Java 虚拟机中&#xff0c;对象的内存布局是一个非常基础且重要的概念。每个 Java 对象在内存中都由三个主要部分构成&#xff1a;对象头&#xff08;Header&#xff09;、实例数据&#xff08;Instance Data&#xff09;和对齐填充&#xff08;Padding&#xff09;。…...

精益数据分析(48/126):UGC商业模式的指标剖析与运营策略

精益数据分析&#xff08;48/126&#xff09;&#xff1a;UGC商业模式的指标剖析与运营策略 在创业和数据分析的学习之旅中&#xff0c;探索不同商业模式的运营奥秘是我们不断前行的动力。今天&#xff0c;依旧怀揣着和大家共同进步的期望&#xff0c;深入研读《精益数据分析》…...

SpringBoot优雅参数检查

SpringBoot优雅参数检查 在 Spring Boot 中&#xff0c;参数验证通常基于 JSR-380&#xff08;Bean Validation 2.0&#xff09;规范&#xff0c;结合 javax.validation&#xff08;或 jakarta.validation&#xff09;和 Hibernate Validator 实现。以下是常用的验证注解及其意…...

(九)PMSM驱动控制学习---分流电阻采样及重构

在电机控制当中&#xff0c;无论是我们的控制或者电机工作情况的检测&#xff0c;都十分依赖于电机三相电流的值&#xff0c; 所以相电流采样再在FOC控制中是一个特别关键的环节。 在前几篇中我们介绍了逆变电路的相关内容&#xff0c;所以在此基础上我们接着说道电流采样。目前…...

医疗人工智能大模型中的关键能力:【中期训练】mid-training

引言 医疗人工智能(AI)领域的快速发展正在重塑医疗保健的未来。从辅助诊断到个性化治疗方案,AI技术已经显示出改变医疗实践的巨大潜力。然而,在将AI技术应用于医疗场景时,我们面临着独特的挑战。医疗数据的复杂性、决策的高风险性以及对可解释性的严格要求,都使得医疗AI…...

Unity垃圾回收(GC)

1.GC的作用&#xff1a;定期释放不再使用的内存空间。 注&#xff1a;C不支持GC&#xff0c;需要手动管理内存&#xff0c;使用new&#xff08;&#xff09;申请内存空间&#xff0c;使用完后通过delete&#xff08;&#xff09;释放掉&#xff0c;但可能出现忘记释放或者指针…...

什么是跨域,如何解决跨域问题

什么是跨域&#xff0c;如何解决跨域问题 一、什么是跨域 跨域是指浏览器出于安全考虑&#xff0c;限制网页脚本访问不同源&#xff08;协议、域名、端口&#xff09;的资源。两个URL的协议、域名或端口任意一个不相同时&#xff0c;就属于不同源&#xff0c;浏览器会阻止脚本…...

JVM的双亲委派模型

引言 Java类加载机制中的双亲委派模型通过层层委托保证了核心类加载器与应用类加载器之间的职责分离和加载安全性&#xff0c;但其单向的委托关系也带来了一些局限性。尤其是在核心类库需要访问或实例化由应用类加载器加载的类时&#xff0c;双亲委派模型无法满足需求&#xf…...

ARCGIS PRO DSK 选择坐标系控件(CoordinateSystemsControl )的调用

在WPF窗体上使用 xml&#xff1a;加入空间命名引用 xmlns:mapping"clr-namespace:ArcGIS.Desktop.Mapping.Controls;assemblyArcGIS.Desktop.Mapping" 在控件区域加入&#xff1a; <mapping:CoordinateSystemsControl x:Name"CoordinateSystemsControl&q…...

一个电平转换电路导致MCU/FPGA通讯波形失真的原因分析

文章目录 前言一、问题描述二、原因分析三、 仿真分析四、 尝试的解决方案总结前言 一、问题描述 一个电平转换电路,800kHz的通讯速率上不去,波形失真,需要分析具体原因。输出波形如下,1码(占空比75%)低于5V,0码(占空比25%)低于4V。,严重失真。 电平转换电路很简单,M…...

不同OS版本中的同一yum源yum list差异排查思路

问题描述&#xff1a; qemu-guest-agent二进制rpm包的yum仓库源和yum源仓库配置文件path_to_yum_conf&#xff0c; 通过yum list --available -c path_to_yum_conf 查询时&#xff0c;不同的OS版本出现了不同的结果 anolis-8无法识别 centos8可以识别 说明&#xff1a; 1 测试…...

Android Studio开发安卓app 设置开机自启

Android Studio开发安卓app 设置开机自启 AndroidManifest.xml增加配置 增加的配置已标记 AndroidManifest.xml完整配置 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/androi…...

全文索引数据库Elasticsearch底层Lucene

Lucene 全文检索的心&#xff0c;天才的想法。 一个高效的&#xff0c;可扩展的&#xff0c;全文检索库。全部用 Java 实现&#xff0c;无须配置。仅支持纯文本文件的索引(Indexing)和搜索(Search)。不负责由其他格式的文件抽取纯文本文件&#xff0c;或从网络中抓取文件的过程…...

互联网大厂Java求职面试:分布式系统中向量数据库与AI应用的融合探索

互联网大厂Java求职面试&#xff1a;分布式系统中向量数据库与AI应用的融合探索 面试开场&#xff1a;技术总监与郑薪苦的“较量” 技术总监&#xff08;以下简称T&#xff09;&#xff1a;郑薪苦先生&#xff0c;请简单介绍一下你在分布式系统设计方面的经验。 郑薪苦&…...

游戏引擎学习第262天:绘制多帧性能分析图

回顾并为今天设定阶段 事情开始录制了&#xff0c;大家好&#xff0c;欢迎来到游戏直播节目。我们正在直播完成游戏的开发工作&#xff0c;目前我们正在做性能分析器&#xff0c;它现在已经非常酷了。我们只是在清理一些界面问题&#xff0c;但它能做的事情真的很厉害。我觉得…...

1、RocketMQ 核心架构拆解

1. 为什么要使用消息队列&#xff1f; 消息队列&#xff08;MQ&#xff09;是分布式系统中不可或缺的中间件&#xff0c;主要解决系统间的解耦、异步和削峰填谷问题。 解耦&#xff1a;生产者和消费者通过消息队列通信&#xff0c;彼此无需直接依赖&#xff0c;极大提升系统灵…...

探索 C++ 语言标准演进:从 C++23 到 C++26 的飞跃

引言 C 作为一门历史悠久且广泛应用的编程语言&#xff0c;其每一次标准的演进都备受开发者关注。从早期的 C98 到如今的 C23&#xff0c;再到令人期待的 C26&#xff0c;每一个版本都为开发者带来了新的特性和改进&#xff0c;推动着软件开发的不断进步。本文将深入探讨 C23 …...

ROBOVERSE:面向可扩展和可泛化机器人学习的统一平台、数据集和基准

25年4月来自UC Berkeley、北大、USC、UMich、UIUC、Stanford、CMU、UCLA 和 北京通用 AI 研究院&#xff08;BIGAI&#xff09;的论文“ROBOVERSE: Towards a Unified Platform, Dataset and Benchmark for Scalable and Generalizable Robot Learning”。 数据扩展和标准化评…...

【Bootstrap V4系列】学习入门教程之 组件-轮播(Carousel)高级用法

【Bootstrap V4系列】学习入门教程之 组件-轮播&#xff08;Carousel&#xff09;高级用法 轮播&#xff08;Carousel&#xff09;高级用法2.5 Crossfade &#xff08;淡入淡出&#xff09;2.6 Individual .carousel-item interval &#xff08;单个轮播项目间隔&#xff09;2.…...

LangChain4j简介

LangChain4j 是什么&#xff1f; The goal of LangChain4j is to simplify integrating LLMs into Java applications. LangChain4j 的目标是简化将 LLMs 集成到 Java 应用程序中。 提供如下能力&#xff1a; ● 统一的 API&#xff1a; LLM 提供商&#xff08;如 OpenAI 或 Go…...

Git 撤销已commit但未push的文件

基础知识&#xff1a;HEAD^ 即上个版本, HEAD~2 即上上个版本, 依此类推… 查看commit日志 git log撤销commit&#xff0c;保留git add git reset --soft HEAD^ #【常用于&#xff1a;commit成功&#xff0c;push失败时的代码恢复】保留工作空间改动代码&#xff0c;撤销com…...

OC语言学习——面向对象(下)

一、OC的包装类 OC提供了NSValue、NSNumber来封装C语言基本类型&#xff08;short、int、float等&#xff09;。 在 Objective-C 中&#xff0c;**包装类&#xff08;Wrapper Classes&#xff09;**是用来把基本数据类型&#xff08;如 int、float、char 等&#xff09;“包装…...

SafeDrive:大语言模型实现自动驾驶汽车知识驱动和数据驱动的风险-敏感决策——论文阅读

《SafeDrive: Knowledge- and Data-Driven Risk-Sensitive Decision-Making for Autonomous Vehicles with Large Language Models》2024年12月发表&#xff0c;来自USC、U Wisconsin、U Michigan、清华大学和香港大学的论文。 自动驾驶汽车&#xff08;AV&#xff09;的最新进…...

什么是先验?(CVPR25)Detail-Preserving Latent Diffusion for Stable Shadow Removal论文阅读

文章目录 先验&#xff08;Prior&#xff09;是什么&#xff1f;1. 先验的数学定义2. 先验在深度生成模型中的角色3. 为什么需要先验&#xff1f;4. 先验的常见类型5. 如何选择或构造先验&#xff1f;6. 小结 先验&#xff08;Prior&#xff09;是什么&#xff1f; 在概率统计…...

【论文阅读】Attentive Collaborative Filtering:

Attentive Collaborative Filtering: Multimedia Recommendation with Item- and Component-Level Attention Attentive Collaborative Filtering (ACF)、隐式反馈推荐、注意力机制、贝叶斯个性化排序 标题翻译&#xff1a;注意力协同过滤&#xff1a;基于项目和组件级注意力的…...

如何使用极狐GitLab 软件包仓库功能托管 maven?

极狐GitLab 是 GitLab 在中国的发行版&#xff0c;关于中文参考文档和资料有&#xff1a; 极狐GitLab 中文文档极狐GitLab 中文论坛极狐GitLab 官网 软件包库中的 Maven 包 (BASIC ALL) 在项目的软件包库中发布 Maven 产物。然后&#xff0c;在需要将它们用作依赖项时安装它…...

Notion Windows桌面端快捷键详解

通用导航 这些快捷键帮助用户在 Notion 的界面中快速移动。 打开 Notion&#xff1a;Ctrl T 打开一个新的 Notion 窗口或标签页&#xff0c;方便快速进入工作空间。返回上一页&#xff1a;Ctrl [ 导航回之前查看的页面。前进到下一页&#xff1a;Ctrl ] 跳转到导航历史中的…...

企业智能化第一步:用「Deepseek+自动化」打造企业资源管理的智能中枢

随着Deepseek乃至AI人工智能技术在企业中得到了广泛的关注和使用&#xff0c;多数企业开始了AI探索之旅&#xff0c;迅易科技也不例外&#xff0c;且在不断地实践中强化了AI智能应用创新的强大能力。 为解决企业知识管理碎片化、提高内部工作效率等问题&#xff0c;迅易将目光放…...

GoFly企业版框架升级2.6.6版本说明(框架在2025-05-06发布了)

前端框架升级说明&#xff1a; 1.vue版本升级到^3.5.4 把"vue": "^3.2.40",升级到"vue": "^3.5.4"&#xff0c;新版插件需要时useTemplateRef,所以框架就对齐进行升级。 2.ArcoDesign升级到2.57.0&#xff08;目前最新2025-02-10&a…...

LeapVAD:通过认知感知和 Dual-Process 思维实现自动驾驶飞跃——论文阅读

《LeapVAD: A Leap in Autonomous Driving via Cognitive Perception and Dual-Process Thinking》2025年1月发表&#xff0c;来自浙江大学、上海AI实验室、慕尼黑工大、同济大学和中科大的论文。 尽管自动驾驶技术取得了显著进步&#xff0c;但由于推理能力有限&#xff0c;数…...

ps信息显示不全

linux执行ps是默认宽度是受限制的&#xff0c;例如&#xff1a; ps -aux 显示 遇到这种情况&#xff0c;如果显示的信息不是很长可以添加一个w参数来放宽显示宽度 ps -auxw 显示 再添加一个w可以接触宽度限制&#xff0c;有多长就显示多长 ps -auxww 显示...

性能比拼: Redis Streams vs Pub/Sub

本内容是对知名性能评测博主 Anton Putra Redis Streams vs Pub/Sub: Performance 内容的翻译与整理, 有适当删减, 相关指标和结论以原作为准 在这个视频中&#xff0c;我们首先将介绍 Redis Streams 和 Redis Pub/Sub 之间的区别。然后&#xff0c;我们将在 AWS 上运行一个基准…...

实践004-Gitlab CICD部署应用

文章目录 Gitlab CICD部署应用部署设计集成Kubernetes后端Java项目部署创建gitlab部署项目创建部署文件创建流水线提交流水线 前端Web项目部署创建gitlab部署项目创建部署文件创建流水线提交流水线 Gitlab CICD部署应用 部署设计 对于前后端服务都基于 Kubernetes 进行部署&a…...

二叉树与优先级队列

1.树 树是由n个数据构成的非线性结构&#xff0c;它是根朝上&#xff0c;叶朝下。 注意&#xff1a;树形结构之中&#xff0c;子树之间不能连接&#xff0c;不然就不构成树形结构 1.子树之间没有交集 2.除了根节点以外&#xff0c;每一个节点有且只有一个父亲节点 3.一个n个…...

如何使用极狐GitLab 软件包仓库功能托管 npm?

极狐GitLab 是 GitLab 在中国的发行版&#xff0c;关于中文参考文档和资料有&#xff1a; 极狐GitLab 中文文档极狐GitLab 中文论坛极狐GitLab 官网 软件包库中的 npm 包 (BASIC ALL) npm 是 JavaScript 和 Node.js 的默认包管理器。开发者使用 npm 共享和重用代码&#xff…...

uniapp自定义底部导航栏h5有效果小程序无效的解决方案

在使用 uni-app 开发跨端应用时&#xff0c;常见问题之一是自定义底部导航栏&#xff08;tabbar&#xff09;在H5端有效&#xff0c;但在小程序端无效。这是因为小程序端的页面结构和生命周期与H5有差异&#xff0c;且小程序端的原生tabbar有更高的优先级&#xff0c;覆盖了自定…...

开发搭载阿里云平台的物联网APP(支持数据接收与发送)

一、开发环境准备 工具安装 HBuilderX&#xff1a;下载并安装最新版&#xff08;支持Vue.js和uni-app框架&#xff09;阿里云IoT SDK&#xff1a;使用JavaScript版SDK&#xff08;如aliyun-iot-mqtt或mqtt.js&#xff09;插件安装&#xff1a;HBuilderX插件市场搜索安装mqtt相关…...

Flowchart 流程图的基本用法

以下是 Flowchart 流程图 的基本用法整理&#xff0c;涵盖核心概念、符号含义、绘制步骤及注意事项&#xff0c;助你高效表达流程逻辑&#xff1a; 一、流程图的核心作用 可视化流程&#xff1a;将复杂步骤转化为直观图形&#xff0c;便于理解和分析。梳理逻辑&#xff1a;明确…...

Excel模版下载文件导入

工作中经常遇到Excel模板下载&#xff0c;然后填好后再导入的情况&#xff0c;简单记录下&#xff0c;方便下次使用 Excel模版下载&#xff08;返回Base64&#xff09; 模板文件存放位置 import java.util.Base64; import org.apache.commons.io.IOUtils; import org.sprin…...

深入了解linux系统—— 进程控制

进程创建 fork函数 在Linux操作系统中&#xff0c;我们可以通过fork函数来创建一个子进程&#xff1b; 这是一个系统调用&#xff0c;创建子进程成功时&#xff0c;返回0给子进程&#xff0c;返回子进程的pid给父进程&#xff1b;创建子进程失败则返回-1给父进程。 我们就可…...

【前端基础】7、CSS的字体属性(font相关)

一、font-size&#xff1a;设置字体大小 设置方法&#xff1a; 具体数值单位 例如&#xff1a;100px 也可以用em为单位&#xff1a;1em代表100%&#xff0c;2em代表200%……0.5em代表50%。 px方式&#xff1a; em方式&#xff1a; 但是设置em的时候具体是多大呢&#xff1f…...

学习整理使用php将SimpleXMLElement 对象解析成数组格式的方法

学习整理使用php将SimpleXMLElement 对象解析成数组格式的方法 要将 SimpleXMLElement 对象解析成数组格式&#xff0c;您可以使用 PHP 的 json_decode 和 json_encode 函数。首先&#xff0c;将 SimpleXMLElement 对象转换为 JSON 字符串&#xff0c;然后将这个字符串解码成数…...