Swagger | 解決Springboot2.x/3.x不兼容和依賴報錯等問題

?目錄

不兼容報錯提醒

1. 修改Spring Boot版本

2. 修改application.yml配置文件

3. 使用其他替代方案

?依賴兼容

配置 Yaml 文件

?依賴報錯提醒

解決方法

1.?選擇一個庫

2.?移除springfox依賴

3.?添加springdoc依賴

4.?配置springdoc

5.?清理項目

6.?啟動項目

示例代碼

application.yml配置

pom.xml依賴

SwaggerConfig配置類(可選)

無法顯示swagger頁面

1.?檢查依賴是否正確加載

2.?檢查Spring Boot的靜態資源路徑

3.?檢查Swagger UI的路徑

4.?檢查是否有其他Spring Security配置

5.?檢查是否有其他Servlet或DispatcherServlet配置

6.?檢查是否有其他靜態資源沖突

7.?檢查是否有其他中間件或代理配置

8.?檢查日志輸出

9.?嘗試訪問其他Swagger UI路徑

10.?檢查是否有其他錯誤


不兼容報錯提醒

org.springframework.context.ApplicationContextException: Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerExceptionat org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:181) ~[spring-context-5.3.23.jar:5.3.23]at org.springframework.context.support.DefaultLifecycleProcessor.access$200(DefaultLifecycleProcessor.java:54) ~[spring-context-5.3.23.jar:5.3.23]at org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.start(DefaultLifecycleProcessor.java:356) ~[spring-context-5.3.23.jar:5.3.23]at java.base/java.lang.Iterable.forEach(Iterable.java:75) ~[na:na]at org.springframework.context.support.DefaultLifecycleProcessor.startBeans(DefaultLifecycleProcessor.java:155) ~[spring-context-5.3.23.jar:5.3.23]at org.springframework.context.support.DefaultLifecycleProcessor.onRefresh(DefaultLifecycleProcessor.java:123) ~[spring-context-5.3.23.jar:5.3.23]at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:935) ~[spring-context-5.3.23.jar:5.3.23]at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:586) ~[spring-context-5.3.23.jar:5.3.23]at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:145) ~[spring-boot-2.6.13.jar:2.6.13]at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:745) ~[spring-boot-2.6.13.jar:2.6.13]at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:420) ~[spring-boot-2.6.13.jar:2.6.13]at org.springframework.boot.SpringApplication.run(SpringApplication.java:307) ~[spring-boot-2.6.13.jar:2.6.13]at org.springframework.boot.SpringApplication.run(SpringApplication.java:1317) ~[spring-boot-2.6.13.jar:2.6.13]at org.springframework.boot.SpringApplication.run(SpringApplication.java:1306) ~[spring-boot-2.6.13.jar:2.6.13]at com.jkglxt.www.HealthManagementSystemApplication.main(HealthManagementSystemApplication.java:12) ~[classes/:na]
Caused by: java.lang.NullPointerException: nullat springfox.documentation.spring.web.WebMvcPatternsRequestConditionWrapper.getPatterns(WebMvcPatternsRequestConditionWrapper.java:56) ~[springfox-spring-webmvc-3.0.0.jar:3.0.0]at springfox.documentation.RequestHandler.sortedPaths(RequestHandler.java:113) ~[springfox-core-3.0.0.jar:3.0.0]at springfox.documentation.spi.service.contexts.Orderings.lambda$byPatternsCondition$3(Orderings.java:89) ~[springfox-spi-3.0.0.jar:3.0.0]at java.base/java.util.Comparator.lambda$comparing$77a9974f$1(Comparator.java:469) ~[na:na]at java.base/java.util.TimSort.countRunAndMakeAscending(TimSort.java:355) ~[na:na]at java.base/java.util.TimSort.sort(TimSort.java:234) ~[na:na]at java.base/java.util.Arrays.sort(Arrays.java:1515) ~[na:na]at java.base/java.util.ArrayList.sort(ArrayList.java:1750) ~[na:na]at java.base/java.util.stream.SortedOps$RefSortingSink.end(SortedOps.java:392) ~[na:na]at java.base/java.util.stream.Sink$ChainedReference.end(Sink.java:258) ~[na:na]at java.base/java.util.stream.Sink$ChainedReference.end(Sink.java:258) ~[na:na]at java.base/java.util.stream.Sink$ChainedReference.end(Sink.java:258) ~[na:na]at java.base/java.util.stream.Sink$ChainedReference.end(Sink.java:258) ~[na:na]at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:485) ~[na:na]at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474) ~[na:na]at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913) ~[na:na]at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[na:na]at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578) ~[na:na]at springfox.documentation.spring.web.plugins.WebMvcRequestHandlerProvider.requestHandlers(WebMvcRequestHandlerProvider.java:81) ~[springfox-spring-webmvc-3.0.0.jar:3.0.0]at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195) ~[na:na]at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1655) ~[na:na]at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484) ~[na:na]at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474) ~[na:na]at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913) ~[na:na]at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[na:na]at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578) ~[na:na]at springfox.documentation.spring.web.plugins.AbstractDocumentationPluginsBootstrapper.withDefaults(AbstractDocumentationPluginsBootstrapper.java:107) ~[springfox-spring-web-3.0.0.jar:3.0.0]at springfox.documentation.spring.web.plugins.AbstractDocumentationPluginsBootstrapper.buildContext(AbstractDocumentationPluginsBootstrapper.java:91) ~[springfox-spring-web-3.0.0.jar:3.0.0]at springfox.documentation.spring.web.plugins.AbstractDocumentationPluginsBootstrapper.bootstrapDocumentationPlugins(AbstractDocumentationPluginsBootstrapper.java:82) ~[springfox-spring-web-3.0.0.jar:3.0.0]at springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper.start(DocumentationPluginsBootstrapper.java:100) ~[springfox-spring-web-3.0.0.jar:3.0.0]at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:178) ~[spring-context-5.3.23.jar:5.3.23]... 14 common frames omitted

你遇到的Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException錯誤,通常是由于Spring Boot版本與Swagger版本不兼容導致的。以下是一些解決方案:

1. 修改Spring Boot版本

降低你的Spring Boot版本到2.5及以下,就不再會出現上述的問題。

2. 修改application.yml配置文件

application.yml文件中添加以下配置,以解決Spring Boot 2.6.x版本與Swagger 3.0.0的兼容性問題:

spring:mvc:pathmatch:matching-strategy: ant_path_matcher

如果使用的是application.properties文件,則添加以下配置:

spring.mvc.pathmatch.matching-strategy=ant_path_matcher

3. 使用其他替代方案

可以考慮使用springdoc-openapi-ui作為替代方案。它是一個基于Spring Boot的OpenAPI實現,與Spring Boot 2.6.x和3.x版本兼容性較好。在pom.xml中添加以下依賴:

?依賴兼容

依賴二選一即可

<!--        生成接口文檔-->
<!--        <dependency>-->
<!--            <groupId>io.springfox</groupId>-->
<!--            <artifactId>springfox-boot-starter</artifactId>-->
<!--            <version>3.0.0</version>-->
<!--        </dependency>--><dependency><groupId>org.springdoc</groupId><artifactId>springdoc-openapi-ui</artifactId><version>1.6.11</version></dependency><dependency>

?

配置 Yaml 文件

springdoc:swagger-ui:path: /swagger-ui.html
spring:mvc:static-path-pattern: /**pathmatch:matching-strategy: ant_path_matcher

?依賴報錯提醒

java.lang.IllegalStateException: Ambiguous handler methods mapped for '/v3/api-docs': {public org.springframework.http.ResponseEntity springfox.documentation.oas.web.OpenApiControllerWebMvc.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest), public java.lang.String org.springdoc.webmvc.api.OpenApiWebMvcResource.openapiJson(javax.servlet.http.HttpServletRequest,java.lang.String,java.util.Locale) throws com.fasterxml.jackson.core.JsonProcessingException}at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.lookupHandlerMethod(AbstractHandlerMethodMapping.java:432) ~[spring-webmvc-5.3.23.jar:5.3.23]at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.getHandlerInternal(AbstractHandlerMethodMapping.java:383) ~[spring-webmvc-5.3.23.jar:5.3.23]at org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping.getHandlerInternal(RequestMappingInfoHandlerMapping.java:125) ~[spring-webmvc-5.3.23.jar:5.3.23]at org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping.getHandlerInternal(RequestMappingInfoHandlerMapping.java:67) ~[spring-webmvc-5.3.23.jar:5.3.23]at org.springframework.web.servlet.handler.AbstractHandlerMapping.getHandler(AbstractHandlerMapping.java:498) ~[spring-webmvc-5.3.23.jar:5.3.23]at org.springframework.web.servlet.DispatcherServlet.getHandler(DispatcherServlet.java:1265) ~[spring-webmvc-5.3.23.jar:5.3.23]at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1047) ~[spring-webmvc-5.3.23.jar:5.3.23]at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:964) ~[spring-webmvc-5.3.23.jar:5.3.23]at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.3.23.jar:5.3.23]at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898) ~[spring-webmvc-5.3.23.jar:5.3.23]at javax.servlet.http.HttpServlet.service(HttpServlet.java:670) ~[tomcat-embed-core-9.0.68.jar:4.0.FR]at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.3.23.jar:5.3.23]at javax.servlet.http.HttpServlet.service(HttpServlet.java:779) ~[tomcat-embed-core-9.0.68.jar:4.0.FR]at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227) ~[tomcat-embed-core-9.0.68.jar:9.0.68]at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68]at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-9.0.68.jar:9.0.68]at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.68.jar:9.0.68]at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68]at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.3.23.jar:5.3.23]at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23]at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.68.jar:9.0.68]at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68]at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.3.23.jar:5.3.23]at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23]at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.68.jar:9.0.68]at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68]at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.3.23.jar:5.3.23]at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23]at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.68.jar:9.0.68]at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68]at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197) ~[tomcat-embed-core-9.0.68.jar:9.0.68]at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) ~[tomcat-embed-core-9.0.68.jar:9.0.68]at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541) ~[tomcat-embed-core-9.0.68.jar:9.0.68]at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135) ~[tomcat-embed-core-9.0.68.jar:9.0.68]at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[tomcat-embed-core-9.0.68.jar:9.0.68]at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) ~[tomcat-embed-core-9.0.68.jar:9.0.68]at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:360) ~[tomcat-embed-core-9.0.68.jar:9.0.68]at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) ~[tomcat-embed-core-9.0.68.jar:9.0.68]at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-embed-core-9.0.68.jar:9.0.68]at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893) ~[tomcat-embed-core-9.0.68.jar:9.0.68]at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1789) ~[tomcat-embed-core-9.0.68.jar:9.0.68]at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-9.0.68.jar:9.0.68]at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-9.0.68.jar:9.0.68]at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-9.0.68.jar:9.0.68]at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.68.jar:9.0.68]at java.base/java.lang.Thread.run(Thread.java:834) ~[na:na]

這個錯誤表明在你的Spring Boot項目中,/v3/api-docs 路徑被多個處理器方法映射,導致了沖突。這通常是由于同時引入了 springfoxspringdoc 兩個庫,它們都試圖處理這個路徑,從而導致了沖突。

解決方法

1.?選擇一個庫

建議選擇一個庫來生成API文檔。springdoc 是目前更推薦的庫,因為它與Spring Boot 2.6.x和3.x版本的兼容性更好。

2.?移除springfox依賴
<dependency><groupId>io.springfox</groupId><artifactId>springfox-boot-starter</artifactId><version>3.0.0</version>
</dependency>
3.?添加springdoc依賴

pom.xml中添加springdoc的依賴:

<dependency><groupId>org.springdoc</groupId><artifactId>springdoc-openapi-ui</artifactId><version>1.6.11</version>
</dependency>
4.?配置springdoc

application.ymlapplication.properties中添加以下配置,以解決Spring Boot 2.6.x版本與springdoc的兼容性問題:

spring:mvc:pathmatch:matching-strategy: ant_path_matcher

或者在application.properties中:

spring.mvc.pathmatch.matching-strategy=ant_path_matcher
5.?清理項目

清理并重新構建項目,以確保所有依賴都正確加載:

mvn clean install
6.?啟動項目

啟動項目后,訪問 http://localhost:8080/swagger-ui/index.html,你應該能夠看到Swagger UI界面。

示例代碼

application.yml配置
spring:mvc:pathmatch:matching-strategy: ant_path_matcher
pom.xml依賴
<dependency><groupId>org.springdoc</groupId><artifactId>springdoc-openapi-ui</artifactId><version>1.6.11</version>
</dependency>
SwaggerConfig配置類(可選)

如果你需要自定義Swagger文檔的標題、描述等信息,可以創建一個配置類:

import org.springdoc.core.GroupedOpenApi;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class SwaggerConfig {@Beanpublic GroupedOpenApi publicApi() {return GroupedOpenApi.builder().group("public").pathsToMatch("/api/**").build();}
}

無法顯示swagger頁面

如果在訪問 http://localhost:8080/swagger-ui/index.html 時沒有看到Swagger UI界面

1.?檢查依賴是否正確加載

確保springdoc-openapi-ui依賴已經正確添加到pom.xml中,并且沒有沖突的依賴。例如:

<dependency><groupId>org.springdoc</groupId><artifactId>springdoc-openapi-ui</artifactId><version>1.6.11</version>
</dependency>

運行以下命令來清理并重新構建項目:

mvn clean install

2.?檢查Spring Boot的靜態資源路徑

默認情況下,Spring Boot會將/swagger-ui/index.html映射到Swagger UI的靜態資源路徑。確保你的Spring Boot應用沒有覆蓋默認的靜態資源路徑。

application.propertiesapplication.yml中,確保沒有覆蓋spring.mvc.static-path-pattern屬性。如果有,可以嘗試將其設置為默認值:

spring.mvc.static-path-pattern=/**

3.?檢查Swagger UI的路徑

默認情況下,Swagger UI的路徑是/swagger-ui/index.html。如果你使用的是springdoc,可以通過以下配置自定義路徑:

springdoc.swagger-ui.path=/swagger-ui.html

然后訪問http://localhost:8080/swagger-ui.html

4.?檢查是否有其他Spring Security配置

如果你的項目中使用了Spring Security,可能需要為Swagger UI的路徑添加訪問權限。例如:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {@Overrideprotected void configure(HttpSecurity http) throws Exception {http.authorizeRequests().antMatchers("/swagger-ui/**", "/v3/api-docs/**").permitAll() // 允許訪問Swagger UI和API文檔.anyRequest().authenticated().and().formLogin().permitAll().and().logout().permitAll();}
}

5.?檢查是否有其他Servlet或DispatcherServlet配置

如果你的項目中自定義了ServletDispatcherServlet,可能會影響Swagger UI的路徑映射。確保沒有其他配置覆蓋了Swagger UI的默認路徑。

6.?檢查是否有其他靜態資源沖突

如果你的項目中自定義了靜態資源路徑,可能會與Swagger UI的路徑沖突。確保沒有其他靜態資源覆蓋了/swagger-ui/index.html路徑。

7.?檢查是否有其他中間件或代理配置

如果你的項目部署在某個中間件或代理服務器后面,可能需要確保中間件或代理服務器正確轉發了/swagger-ui/index.html路徑。

8.?檢查日志輸出

啟動項目時,查看日志輸出,確認Swagger UI的靜態資源是否被正確加載。例如,你可能會看到類似以下的日志:

Mapped URL path [/swagger-ui/index.html] onto handler of type [class org.springdoc.webmvc.ui.SwaggerIndexTransformer]

如果沒有看到類似的日志,可能表示Swagger UI的靜態資源沒有被正確加載。

9.?嘗試訪問其他Swagger UI路徑

除了/swagger-ui/index.html,還可以嘗試訪問以下路徑:

  • http://localhost:8080/swagger-ui.html

  • http://localhost:8080/v3/api-docs

如果能夠訪問到/v3/api-docs,說明Swagger的API文檔已經生成,但Swagger UI可能沒有正確加載。

10.?檢查是否有其他錯誤

查看項目啟動時的完整日志,確認是否有其他錯誤導致Swagger UI無法加載。例如,可能存在某些依賴沖突或配置錯誤。


- Thank you -

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/82409.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/82409.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/82409.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C++默認構造函數、普通構造函數、拷貝構造、移動構造、委托構造及析構函數深度解析

目錄 一、默認構造函數&#xff08;Default Constructor&#xff09;二、普通構造函數&#xff08;General Constructor&#xff09;三、拷貝構造函數&#xff08;Copy Constructor&#xff09;四、移動構造函數&#xff08;Move Constructor&#xff0c;C11&#xff09;五、委…

JVM 深度解析

一、JVM 概述 1.1 什么是 JVM&#xff1f; JVM&#xff08;Java Virtual Machine&#xff0c;Java 虛擬機&#xff09;是 Java 程序運行的核心引擎。它像一個“翻譯官”&#xff0c;將 Java 字節碼轉換為機器能理解的指令&#xff0c;并管理程序運行時的內存、線程等資源。 …

OpenCV CUDA 模塊圖像過濾-----創建一個計算圖像導數的濾波器函數createDerivFilter()

操作系統&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 編程語言&#xff1a;C11 算法描述 cv::cuda::createDerivFilter 是 OpenCV CUDA 模塊中的一個工廠函數&#xff0c;用于創建一個計算圖像導數的濾波器。這個濾波器可以用來計算圖像…

Spring Boot 接口開發實戰指南

Spring Boot 接口開發實戰指南 一、基礎接口開發步驟 1.1 添加必要依賴 <!-- pom.xml --> <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></depen…

題目 3325: 藍橋杯2025年第十六屆省賽真題-2025 圖形

題目 3325: 藍橋杯2025年第十六屆省賽真題-2025 圖形 時間限制: 2s 內存限制: 192MB 提交: 494 解決: 206 題目描述 小藍要畫一個 2025 圖形。圖形的形狀為一個 h w 的矩形&#xff0c;其中 h 表示圖形的高&#xff0c;w 表示圖形的寬。當 h 5,w 10 時&#xff0c;圖形如下所…

UML 時序圖 使用案例

UML 時序圖 UML 時序圖 (Sequence Diagram)時序圖的主要元素消息類型詳解時序圖示例時序圖繪制步驟時序圖的應用場景 UML 時序圖 (Sequence Diagram) 時序圖是UML(統一建模語言)中用于展示對象之間交互行為的動態視圖&#xff0c;它特別強調消息的時間順序。 時序圖的主要元素…

PPT連同備注頁(演講者模式)一塊轉為PDF

首先&#xff0c;進入創建PDF/XPS&#xff1a; 然后進入選項&#xff1a; 發布選項-發布內容里選備注頁&#xff1a; 導出的原始結果是這樣的&#xff1a; 這個時候裁剪一下&#xff0c;范圍為所有頁面&#xff1a; 最終結果&#xff1a; 如果導出不選“備注頁”而是只勾選“包…

AI時代新詞-多模態(Multimodal)

一、什么是多模態&#xff08;Multimodal&#xff09;&#xff1f; 多模態&#xff08;Multimodal&#xff09;是指在人工智能中&#xff0c;融合多種不同類型的信息&#xff08;如文本、圖像、語音、視頻等&#xff09;進行處理和分析的技術。與傳統的單一模態&#xff08;例…

【圖像大模型】Stable Diffusion XL:下一代文本到圖像生成模型的技術突破與實踐指南

Stable Diffusion XL&#xff1a;下一代文本到圖像生成模型的技術突破與實踐指南 一、架構設計與技術演進1.1 核心架構革新1.2 關鍵技術突破1.2.1 雙文本編碼器融合1.2.2 動態擴散調度 二、系統架構解析2.1 完整生成流程2.2 性能指標對比 三、實戰部署指南3.1 環境配置3.2 基礎…

圖像分割技術的實現與比較分析

引言 圖像分割是計算機視覺領域中的一項基礎技術&#xff0c;其目標是將數字圖像劃分為多個圖像子區域&#xff08;像素的集合&#xff09;&#xff0c;以簡化圖像表示&#xff0c;便于后續分析和理解。在醫學影像、遙感圖像分析、自動駕駛、工業檢測等眾多領域&#xff0c;圖…

摩爾線程S4000國產信創計算卡性能實戰——Pytorch轉譯,多卡P2P通信與MUSA編程

簡介 MTT S4000 是基于摩爾線程曲院 GPU 架構打造的全功能元計算卡&#xff0c;為千億規模大語言模型的訓練、微調和推理進行了定制優化&#xff0c;結合先進的圖形渲染能力、視頻編解碼能力和超高清 8K HDR 顯示能力&#xff0c;助力人工智能、圖形渲染、多媒體、科學計算與物…

「從0到1」構建工業物聯網監控系統:ARM+Quarkus+Prometheus技術棧全記錄

在工業4.0浪潮中&#xff0c;邊緣計算正成為智能制造的核心基礎設施。ARM架構邊緣計算機憑借其低功耗、高能效比和模塊化設計優勢&#xff0c;正在重塑工業物聯網&#xff08;IIoT&#xff09;的監控體系。當Java的跨平臺能力與Prometheus的實時監控體系相結合&#xff0c;為工…

【HW系列】—web常規漏洞(文件上傳漏洞)

文章目錄 一、簡介二、危害三、文件檢測方式分類四、判斷文件檢測方式五、文件上傳繞過技術六、漏洞防御措施 一、簡介 文件上傳漏洞是指Web應用程序在處理用戶上傳文件時&#xff0c;未對文件類型、內容、路徑等進行嚴格校驗和限制&#xff0c;導致攻擊者可上傳惡意文件&…

如何設計ES的冷熱數據分離架構?Elasticsearch 集群如何實現高可用?如何避免腦裂問題?如果出現腦裂如何恢復?

以下為Elasticsearch架構設計與高可用方案詳細說明&#xff1a; 冷熱架構 一、冷熱數據分離架構設計&#xff08;文字描述模擬架構圖&#xff09; [Hot Layer] │ ├─ SSD節點組&#xff08;3節點&#xff09; │ ├─ 角色&#xff1a;ingest/data/hot │ ├─ 存…

Trivy 鏡像漏洞掃描:從零入門到實戰指南

&#x1f525;「炎碼工坊」技術彈藥已裝填&#xff01; 點擊關注 → 解鎖工業級干貨【工具實測|項目避坑|源碼燃燒指南】 ——手把手帶你掌握容器安全核心工具 一、安裝配置&#xff1a;三步完成 Trivy 部署 Trivy 是由 Aqua Security 開發的開源容器安全工具&#xff0c;支持…

SQL基礎概念以及SQL的執行方式

1. SQL入門 1.1. SQL語言功能 可以把 SQL 語言按照功能劃分成以下的 4 個部分&#xff1a; DDL&#xff0c;英文叫做 Data Definition Language&#xff0c;也就是數據定義語言&#xff0c;它用來定義我們的數據庫對象&#xff0c;包括數據庫、數據表和列。通過使用 DDL&…

Rust 1.0 發布十周年,夢想再度揚帆起航!

目錄 引言&#xff1a;發布十周年&#xff0c;鋒芒露今朝 一、Rust的誕生&#xff1a;源于安全的初心 二、Rust 1.0&#xff1a;十年耕耘&#xff0c;碩果累累 三、核心利器&#xff1a;安全、并發與性能的十年錘煉 四、生態與應用&#xff1a;十年拓展&#xff0c;遍地開…

x86 與 ARM 匯編深度對比:聚焦 x86 匯編的獨特魅力

一、引言 匯編語言是硬件與軟件的橋梁&#xff0c;x86 和 ARM 作為兩大主流架構&#xff0c;其匯編語言在設計理念、指令集、編程風格上差異顯著。本文以 x86 匯編為核心&#xff0c;結合與 ARM 的對比&#xff0c;解析 x86 匯編的技術細節與應用場景&#xff0c;助力開發者深…

入駐面包多了

前言 入駐面包多了&#xff0c;其實已經開通面包多賬號老久了&#xff0c;一直沒有認證&#xff0c;因為沒什么拿得出手的作品。 后邊會努力沉淀&#xff0c;希望能出一些作品&#xff0c;給大家帶來一些幫助&#xff0c;然后能賺到一些些奶茶錢。 一個小工具 上架了一個Win…

Python----目標檢測(MS COCO數據集)

一、MS COCO數據集 COCO 是一個大規模的對象檢測、分割和圖像描述數據集。COCO有幾個 特點&#xff1a; Object segmentation&#xff1a;目標級的分割&#xff08;實例分割&#xff09; Recognition in context&#xff1a;上下文中的識別&#xff08;圖像情景識別&#xff0…