十九:Spring Boot 依赖(4)-- spring-boot-starter-security依赖详解

目录

1. Spring Security 简介

1.1 Spring Security 的作用与优势

1.2 spring-boot-starter-security 启动器简介

2. Spring Security 自动配置

2.1 核心依赖解析

2.1.1 Spring Boot 自动为应用配置默认的安全设置,关键功能包括:

2.1.2 创建 默认的 AuthenticationManager 和 SecurityFilterChain。

2.1.2.1 AuthenticationManage

2.1.2.2 SecurityFilterChain

2.2 自动配置的关键类和功能

2.2.1 SecurityAutoConfiguration 类:启用基本的安全功能,如 HTTP 基本认证和表单登录。

2.2.2 默认用户和密码:自动生成用户名 user 和随机密码,帮助开发者快速启动安全功能。

2.2.3 WebSecurityConfigurerAdapter:允许开发者自定义安全配置,如 URL 路径保护、表单登录等。

2.2.4 CSRF 和 CORS 配置:默认启用 CSRF 防护,支持跨域资源共享(CORS)。

3. Spring Security 配置

3.1 启用 Spring Security

3.1.1 @EnableWebSecurity 注解

3.1.2 继承 WebSecurityConfigurerAdapter

3.2 SecurityAutoConfiguration 解析

3.3 默认安全配置与自定义

4. 身份验证与授权

4.1 基于表单的身份验证 (Form Login)

4.2 HTTP Basic 认证

4.3 LDAP 或数据库集成

4.4 基于角色的授权

5. 跨站请求伪造 (CSRF) 与 跨域资源共享 (CORS)

5.1 CSRF 防护

5.2 CORS 配置

6. 自定义认证与授权

6.1 创建自定义 UserDetailsService

6.2 JWT 无状态认证

6.3 OAuth2 认证

7. 安全性最佳实践

7.1 密码加密与存储

7.2 安全的 HTTP Headers 配置

7.3 防止常见安全漏洞

8. 集成其他 Spring Security 功能

8.1 OAuth2 集成

8.2 Spring Session 集成

8.3 Spring Security 与 Actuator 结合


  • 1. Spring Security 简介

  • 1.1 Spring Security 的作用与优势

    • 作用:
      • 认证 (Authentication):验证用户身份,常见方式有用户名密码、Token、OAuth2 等。

      • 授权 (Authorization):确定已认证用户是否有权限访问特定资源。

      • 安全审计 (Audit):记录用户行为生成安全日志。

      • 会话管理 (Session Management):防止会话劫持等安全漏洞,确保会话安全。

      • 防止攻击:防止 CSRF、XSS、点击劫持等常见攻击。

      • 加密与解密:提供密码加密机制,如 bcrypt、PBKDF2。

    • 优势:
      • 可扩展性强:支持多种认证方式(如表单认证、JWT、OAuth2、LDAP 等),提供极大的灵活性。

      • 与 Spring 完美集成:作为 Spring 生态的一部分,能无缝协作。

      • 默认的安全配置:提供合理的默认配置,能确保基本安全性,同时支持定制化配置。

      • 自动化与开箱即用:Spring Boot 提供 spring-boot-starter-security 启动器,简化集成过程。

  • 1.2 spring-boot-starter-security 启动器简介

    • 自动配置安全功能(如 HTTP 基本认证、表单登录、CSRF 防护等)。

    • 简化配置,通过少量配置定制应用的安全行为。

    • 支持多种身份验证方式(如 HTTP 基本认证、表单认证、OAuth2、LDAP 等)。

    • 核心依赖
      • Spring Security、Spring Boot Auto Configuration、Spring Security Web 模块。

    • 引入方式
      • <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId>
        </dependency>
        
  • 2. Spring Security 自动配置

  • 2.1 核心依赖解析

    • 2.1.1 Spring Boot 自动为应用配置默认的安全设置,关键功能包括:

      • 启用 HTTP Basic 认证

        • 什么是HTTP Basic

          • HTTP Basic 认证(HTTP Basic Authentication)是一种最简单的 HTTP 协议认证方式,它通过在 HTTP 请求头部传递用户名和密码来进行用户身份验证。

          • 工作原理:

            • 客户端请求:当客户端(如浏览器或 API 客户端)访问一个受保护的资源时,服务器会返回一个 401 Unauthorized 响应,表示客户端需要提供认证信息。

            • 客户端提供凭证:客户端根据响应提示,向用户请求用户名和密码,并将其组合为一个字符串(格式:username:password),然后对这个字符串进行 Base64 编码

            • 发送认证信息:客户端将编码后的凭证添加到 HTTP 请求头部的 Authorization 字段中,格式为:

            • Authorization: Basic <base64-encoded-credentials>
              
          • 安全性:

            • 明文传输:HTTP Basic 认证将用户名和密码以明文形式(经过 Base64 编码)发送。Base64 编码并不提供加密保护,只是对数据进行编码。因此,HTTP Basic 认证 在未使用 HTTPS(加密的 HTTP)时是非常不安全的,因为凭证可以被中间人(Man-in-the-Middle)攻击窃取。

            • 建议:为了确保安全,HTTP Basic 认证必须通过 HTTPS 来传输,以防止敏感信息在网络传输中被截取。

          • 使用场景:

            • HTTP Basic 认证通常用于简单的场景或开发阶段,如:

            • 小型应用、个人项目或内部应用。

            • 需要快速实现认证的场景,但不适合大规模生产环境中的敏感信息传输。

          • 优缺点:

            优点

            • 简单易实现:客户端只需要提供用户名和密码,服务器验证即可。

            • 无需额外的配置或复杂的认证流程。

          • 缺点

            • 安全性差:如果没有使用 HTTPS,凭证容易被窃取。

            • 不适合复杂的认证和授权需求,如支持多因素认证、第三方认证(如 OAuth2)等。

            • 无法有效管理用户会话,适用于短期或简单的认证需求。

      • 启用 CSRF 防护

        • 什么是CSRF(一般前后端分离 会禁用这个吧)

          • CSRFCross-Site Request Forgery,跨站请求伪造)是一种网络攻击方式,攻击者通过诱使已认证的用户在不知情的情况下执行不希望的操作,借此在用户和服务器之间伪造请求,从而达到攻击目的。

          • CSRF 攻击的基本原理:

            • 受害者登录应用:用户在某个网站(例如银行、社交媒体等)登录并且获得了有效的身份验证信息(如登录状态、Session 等)。

            • 攻击者诱导用户发起请求:攻击者通过构建一个恶意网站或页面,诱使已经登录该应用的用户去访问这个恶意网站。这个网站包含了一个伪造的请求,通常通过表单、图片、AJAX 请求等方式自动发送。

            • 浏览器发送请求:由于受害者已经登录目标网站,且该网站基于 SessionCookie 进行身份验证,浏览器会自动带上用户的身份信息(如 Cookie 或 Session ID),将伪造的请求发送到目标网站。

            • 服务器处理请求:目标网站的服务器会认为这是一个合法的请求,因为它带有有效的身份信息(如用户的 Cookie)。因此,服务器会执行请求中的操作(如转账、修改密码、删除数据等),而受害者并不知情。

          • CSRF 攻击的条件:

            • 用户已登录并保持登录状态:攻击者通过利用用户的登录状态来伪造请求。

            • 受害者的浏览器会自动带上身份信息:例如,用户已登录的站点通过 Cookie 或 Session 来验证身份,浏览器会自动将这些信息带入请求中。

            • 攻击者无法获取服务器的认证信息:CSRF 利用的是目标网站的身份认证(如 Cookie 或 Session),而不是攻击者直接获取用户的认证信息。

    • 2.1.2 创建 默认的 AuthenticationManagerSecurityFilterChain

      • 在 Spring Security 中,AuthenticationManagerSecurityFilterChain 是两个核心的组件,分别负责身份验证和请求过滤。在 Spring Boot 中,通过自动配置和默认设置,这两个组件通常会由 Spring Security 自动创建和配置,但开发者也可以根据需求进行自定义配置。

      • 2.1.2.1 AuthenticationManage
        • AuthenticationManager 是Spring Security中负责处理认证(authentication)请求的组件,它的作用是验证用户的身份是否合法。Spring Security默认使用ProviderManager作为实现,它可以委托给多个AuthenticationProvider来处理认证过程。

          在Spring Security的配置中,我们通常会通过以下两种方式来创建AuthenticationManager

        • 默认配置: 如果没有特别的自定义需求,Spring Security会自动为你配置一个默认的AuthenticationManager

        • 自定义配置: 你可以自定义AuthenticationManager来满足更具体的需求。

      • 2.1.2.2 SecurityFilterChain
        • SecurityFilterChain 定义了Spring Security如何处理HTTP请求。它是一个过滤器链,用来对进入应用程序的HTTP请求进行安全检查。每个过滤器负责一个特定的安全任务,例如认证、授权、CSRF保护等。

          Spring Security提供了多个默认的过滤器,例如:

          • UsernamePasswordAuthenticationFilter:用于处理基于用户名和密码的认证请求。

          • BasicAuthenticationFilter:用于处理HTTP Basic认证。

          • ExceptionTranslationFilter:处理认证和授权异常。

          • FilterSecurityInterceptor:用来对HTTP请求进行授权判断。

  • 2.2 自动配置的关键类和功能

    • 2.2.1 SecurityAutoConfiguration 类:启用基本的安全功能,如 HTTP 基本认证和表单登录。

      • SecurityAutoConfiguration 是 Spring Boot 自动配置类之一,它是启用 Spring Security 功能的核心类。Spring Boot 会根据项目的依赖和配置来自动配置 Spring Security,具体包括以下功能:

      • 启用 HTTP 基本认证和表单登录: 默认情况下,Spring Boot 启用 HTTP 基本认证和表单登录,以帮助开发者快速启动应用的安全功能。无论你是否进行自定义配置,Spring Security 都会为你提供基本的身份验证机制。

      • 默认安全策略: 自动配置会启用一些常见的安全功能,如:

        • 默认启用身份验证过滤器链(包括表单登录、用户名密码认证等)。

        • 默认启用 HTTP Basic 认证(适用于无状态的 RESTful API)。

        • 自动生成一个默认的 AuthenticationManager,它允许开发者在需要时直接使用。

        • 默认启用一些默认的角色、用户和密码配置。

    • 2.2.2 默认用户和密码:自动生成用户名 user 和随机密码,帮助开发者快速启动安全功能。

      • 当你在 Spring Boot 项目中没有显式配置身份验证信息时,Spring Boot 自动配置会生成一个默认的用户和密码。这个默认用户具有以下特征:

      • 用户名: user

      • 密码: 随机生成(每次启动时都不同)

      • 例如,应用启动时控制台会输出如下信息,显示生成的默认密码:

      • Using default security password: 12345678
        

    • 2.2.3 WebSecurityConfigurerAdapter:允许开发者自定义安全配置,如 URL 路径保护、表单登录等。

      • WebSecurityConfigurerAdapter 是一个扩展类,用于自定义和定制 Spring Security 的配置。你可以继承 WebSecurityConfigurerAdapter 类来创建自定义的安全配置类,以便在默认的安全配置基础上进行扩展和修改。

        WebSecurityConfigurerAdapter 提供了以下常用的方法:

        • configure(HttpSecurity http):允许你配置 HTTP 请求的安全规则,例如 URL 路径的访问控制(哪些请求需要认证,哪些请求是公开的),启用或禁用表单登录、HTTP Basic 认证、CSRF 防护等。

        • configure(AuthenticationManagerBuilder auth):允许你配置身份验证管理器,配置不同的身份验证提供者(例如,基于内存的、JDBC 或 LDAP 等身份验证机制)。

    • 2.2.4 CSRF 和 CORS 配置:默认启用 CSRF 防护,支持跨域资源共享(CORS)。

      • CSRF
        • CSRF(Cross-Site Request Forgery)防护: 默认情况下,Spring Security 启用 CSRF 防护,它通过要求每个请求带上一个特殊的令牌(token)来防止跨站请求伪造攻击(CSRF)。这对于 Web 应用尤其重要,可以防止恶意网站伪造用户请求。除非你有明确的理由,否则应避免禁用 CSRF 防护。

          Spring Boot 自动配置会根据请求的类型(例如,POST 请求)自动为每个表单生成 CSRF token。如果你想禁用 CSRF(例如在开发 REST API 时),可以通过如下配置禁用 CSRF 防护:

        • @Override
          protected void configure(HttpSecurity http) throws Exception {http.csrf().disable(); // 禁用 CSRF 防护
          }
          
      • CORS

        • CORS(Cross-Origin Resource Sharing)支持: 默认情况下,Spring Security 会启用对跨域资源共享(CORS)的支持。CORS 是一种机制,允许浏览器在一个域上运行的 Web 应用请求另一个域的资源。如果你有前后端分离的应用(前端和后端分别部署在不同的域),你可能需要配置 CORS 规则。

        • @Override
          protected void configure(HttpSecurity http) throws Exception {http.cors().and()  // 启用 CORS.authorizeRequests().anyRequest().authenticated();
          }
          
  • 3. Spring Security 配置

  • 3.1 启用 Spring Security

    • Spring Security 提供了一种方便的方式来保护你的应用程序。在 Spring Boot 中,启用 Spring Security 是通过 @EnableWebSecurity 注解来完成的。你还可以通过继承 WebSecurityConfigurerAdapter 类来定制安全配置。

    • @EnableWebSecurity
      @Configuration
      public class SecurityConfig extends WebSecurityConfigurerAdapter {@Overrideprotected void configure(HttpSecurity http) throws Exception {http.formLogin().permitAll();http.authorizeRequests().antMatchers("/public/**").permitAll().anyRequest().authenticated();}
      }
      

    • 3.1.1 @EnableWebSecurity 注解

      • @EnableWebSecurity 注解是 Spring Security 提供的,作用是启用 Web 安全功能,它会触发 Spring Security 的自动配置。

      • 通常与 @Configuration 注解一起使用,表明该类是 Spring 配置类并启用 Spring Security 配置。

    • 3.1.2 继承 WebSecurityConfigurerAdapter

      • WebSecurityConfigurerAdapter 是 Spring Security 提供的一个适配器类,它允许开发者定制 HTTP 请求安全配置。你只需要继承该类并重写其中的配置方法即可实现个性化的安全配置。

      • 代码

        • @Configuration
          @EnableWebSecurity
          public class SecurityConfig extends WebSecurityConfigurerAdapter {// 配置 HTTP 请求的安全规则@Overrideprotected void configure(HttpSecurity http) throws Exception {// 启用表单登录,允许所有用户访问登录页面http.formLogin().permitAll();// 设定哪些路径可以公开访问,其他路径都需要认证http.authorizeRequests().antMatchers("/public/**").permitAll()  // 公开路径 /public/**.anyRequest().authenticated();         // 其他请求需要认证}
          }
      • http.formLogin().permitAll();:启用表单登录,并允许所有用户访问登录页面。

      • http.authorizeRequests().antMatchers("/public/**").permitAll();:公开路径 /public/**,允许任何用户访问。

      • http.anyRequest().authenticated();:其他路径都需要身份验证。

      • http.csrf().disable(); // 禁用 CSRF 防护

      • http.httpBasic(); // 启用 HTTP Basic 认证

      • http.authorizeRequests().antMatchers("/admin/**").hasRole("ADMIN")  // /admin/** 路径需要 ADMIN 角色.antMatchers("/user/**").hasRole("USER");  // /user/** 路径需要 USER 角色
  • 3.2 SecurityAutoConfiguration 解析

    • SecurityAutoConfiguration 是 Spring Boot 中的自动配置类,它帮助你快速启用和配置 Spring Security。如果你没有手动配置 Spring Security,Spring Boot 会自动应用该配置。

    • 这两个类通常是一起工作的,SecurityAutoConfiguration 提供了 Spring Boot 中的默认配置,而 WebSecurityConfigurerAdapter 则是用来 覆盖和自定义 默认配置的。如果你没有自定义安全配置,那么 SecurityAutoConfiguration 会为你提供默认的安全设置。如果你需要特定的安全需求(例如,禁用 CSRF、配置表单登录、使用 JWT 认证等),你可以继承 WebSecurityConfigurerAdapter 并根据你的需求进行配置。

    • 自动启用基于表单的登录、CSRF 防护等。

    • 自动配置默认的内存用户,用户名为 user,密码为随机生成。

    • 启用会话管理、跨域配置等。

    • 配置文件中的设置

      • 修改默认的用户名和密码:

        • spring.security.user.name=admin
          spring.security.user.password=secret
          
      • 禁用 CSRF 防护:

        • spring.security.csrf.enabled=false
          
  • 3.3 默认安全配置与自定义

    • 默认启用 HTTP 基本认证和表单登录。

      • ​​​​​​​Spring Boot 提供的自动配置(SecurityAutoConfiguration)会启用以下默认设置:

        • 默认身份验证方式: 启用内存用户存储,用户名 user 和随机密码。

        • 默认 HTTP 认证: 启用 HTTP Basic 和表单登录认证。

        • 默认的授权控制: 任何请求都需要认证。

        • CSRF 防护: 默认启用 CSRF 防护。

    • 自定义配置:

      • 当你需要更灵活的安全配置时,可以通过继承 WebSecurityConfigurerAdapter 来覆盖默认配置。常见的自定义配置包括:

        • 修改认证方式

          • ​​​​​​​​​​​​​​可以通过 AuthenticationManagerBuilder 配置不同的身份验证方式(如 JDBC、LDAP 或自定义 UserDetailsService)。

          • @Override
            protected void configure(AuthenticationManagerBuilder auth) throws Exception {auth.inMemoryAuthentication().withUser("admin").password(passwordEncoder().encode("password")).roles("ADMIN");
            }
        • 配置 URL 路径保护

          • 你可以定义哪些路径是公开的,哪些路径需要身份验证。

          • @Override
            protected void configure(HttpSecurity http) throws Exception {http.authorizeRequests().antMatchers("/admin/**").hasRole("ADMIN") // 只有 ADMIN 角色才能访问 /admin/**.antMatchers("/public/**").permitAll()    // 公开路径可以直接访问.anyRequest().authenticated();           // 其他路径需要认证
            }
            
        • 禁用默认的 CSRF 防护

          • @Override
            protected void configure(HttpSecurity http) throws Exception {http.csrf().disable(); // 禁用 CSRF 防护
            }
            
        • 自定义表单登录

          • @Override
            protected void configure(HttpSecurity http) throws Exception {http.formLogin().loginPage("/login").permitAll().defaultSuccessUrl("/home", true);
            }
            
        • 自定义用户认证

          • @Override
            protected void configure(AuthenticationManagerBuilder auth) throws Exception {auth.userDetailsService(userDetailsService).passwordEncoder(passwordEncoder());
            }
            
  • 4. 身份验证与授权

    • 4.1 基于表单的身份验证 (Form Login)

      • Spring Security 默认启用表单登录。开发者可定制登录页面、登录成功和失败页面:
      • http.formLogin().loginPage("/custom-login").permitAll();
        
    • 4.2 HTTP Basic 认证

      • 启用 HTTP 基本认证,用于 RESTful API 等应用:
      • http.httpBasic().disable();  // 禁用 HTTP Basic 认证
        
      • 注意:HTTP Basic 认证的用户名和密码通过 HTTP 头部传输,因此需要使用 HTTPS 以确保安全。

    • 4.3 LDAP 或数据库集成

      • LDAP 集成:通过 LdapAuthenticationProvider 支持 LDAP 用户验证。

      • 数据库用户验证:实现 UserDetailsService 接口,从数据库加载用户信息。

    • 4.4 基于角色的授权

      • 通过 antMatchers 配置角色访问权限:
      • http.authorizeRequests().antMatchers("/admin/**").hasRole("ADMIN");
        
  • 5. 跨站请求伪造 (CSRF) 与 跨域资源共享 (CORS)

    • 5.1 CSRF 防护

      • Spring Security 默认启用 CSRF 防护,防止恶意用户伪造请求:
      • 启用 CSRF:http.csrf().enable();

      • 禁用 CSRF:http.csrf().disable();

    • 5.2 CORS 配置

      • 全局启用 CORS:http.cors().configurationSource(corsConfigurationSource());

      • 使用 @CrossOrigin 注解为特定接口启用 CORS。

  • 6. 自定义认证与授权

    • 6.1 创建自定义 UserDetailsService

      • 实现 UserDetailsService 接口来自定义用户认证逻辑,并结合 UserDetails 定义用户的角色与权限。
    • 6.2 JWT 无状态认证

      • 通过 JWT 实现无状态的认证流程:
      • 用户登录时,生成 JWT。

      • 客户端在请求时附带 JWT。

      • 服务器验证 JWT 后提取用户信息进行授权。

    • 6.3 OAuth2 认证

      • 支持 OAuth2 和 OpenID Connect,适用于第三方认证授权:
      • <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-oauth2-client</artifactId>
        </dependency>
        
  • 7. 安全性最佳实践

    • 7.1 密码加密与存储

      • 使用 BCryptPasswordEncoder 加密存储密码,避免明文存储。

      • 密码验证时通过 PasswordEncoder 接口验证。

    • 7.2 安全的 HTTP Headers 配置

      • 启用安全 HTTP 头部,如 HSTS(HTTP Strict Transport Security)等,防止攻击:
      • http.headers().httpStrictTransportSecurity().maxAgeInSeconds(31536000).includeSubDomains(true);
        
    • 7.3 防止常见安全漏洞

      • XSS:清理用户输入,避免不信任的 JavaScript 代码。

      • SQL 注入:使用 ORM 框架,避免直接拼接 SQL 字符串。

      • CSRF:启用 CSRF 防护,生成并验证 CSRF 令牌。

  • 8. 集成其他 Spring Security 功能

    • 8.1 OAuth2 集成

      • 使用 spring-boot-starter-oauth2-client 实现 OAuth2 客户端功能。

      • 使用 spring-boot-starter-oauth2-resource-server 实现 OAuth2 资源服务器功能。

    • 8.2 Spring Session 集成

      • 通过 spring-session 管理会话,支持集群环境下的会话共享。
    • 8.3 Spring Security 与 Actuator 结合

      • 启用 Spring Boot Actuator 和 Spring Security,保护 Actuator 端点的安全。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/469907.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Qt初识简单使用Qt

使用C代码实现hello world 之前介绍过用图形化界面的方式创建hello world&#xff0c;这里我们使用C代码的方式再来实现一次hello world。 如上&#xff0c;首先要先包含一个头文件。 在QT这里&#xff0c;每一个类都有一个对应的同名头文件。比如这里我就包含了 <QLabel&…

高效运维:构建全面监控与自动化管理体系

在当今数字化时代&#xff0c;企业IT系统的稳定运行直接关系到业务的连续性和竞争力。运维团队作为保障系统稳定运行的中坚力量&#xff0c;面临着前所未有的挑战。随着云计算、大数据、物联网等技术的快速发展&#xff0c;系统架构日益复杂&#xff0c;运维工作也从传统的被动…

Docker网络和overlay的基础讲解

本人发现了两篇写的不错的文章&#xff1a;Docker网络 - docker network详解-CSDN博客&#xff0c;Docker 容器跨主机通信 overlay_docker overlay 网络-CSDN博客 因为这两篇文章中含有大量的例子&#xff0c;新手看起来毫不费力。于是我偷了个小懒&#xff0c;在本篇文章中没有…

C++开发基础之使用librabbitmq库实现RabbitMQ消息队列通信

1. 前言 RabbitMQ是一个流行的开源消息队列系统&#xff0c;支持多种消息协议&#xff0c;广泛用于构建分布式系统和微服务架构。可以在不同应用程序之间实现异步消息传递。在本文中&#xff0c;我们将熟悉如何使用C与RabbitMQ进行消息通信。 2. 准备工作 在 Windows 平台上…

vue elementui el-dropdown-item设置@click无效的解决方案

如图&#xff0c;直接在el-dropdown-item上面设置click&#xff0c;相应的method并没有被触发&#xff0c;查找资料发现需要在它的上级 el-dropdown 处使用 command 方法触发。 【template】 <el-dropdown placement"bottom-end" command"handleCommand&quo…

使用docker-compose单点搭建社区版seafile+onlyoffice在线word编辑平台

文章目录 前言一、平台介绍1. seafile平台介绍2. onlyoffice平台介绍 二、版本信息三、基础信息准备1.docker配置文件2.准备目录 四、onlyoffice部署五、seafile平台部署1.准备seafile.yaml文件2.运行平台 六、双平台对接总结 前言 记录使用docker-compose单点搭建社区版seafi…

游戏引擎学习第七天

视频参考:https://www.bilibili.com/video/BV1QFmhYcE69 ERROR_DEVICE_NOT_CONNECTED 是一个错误代码&#xff0c;通常在调用 XInputGetState 或 XInputSetState 函数时返回&#xff0c;表示指定的设备未连接。通常会出现以下几种情况&#xff1a; 未连接控制器&#xff1a;如…

计算机的错误计算(一百五十二)

摘要 探讨 MATLAB 中双曲正弦函数 sinh(x)与双曲余弦函数 cosh(x)的计算精度问题。 例1. 已知 计算 以及 直接贴图吧&#xff1a; 另外&#xff0c;16或17位的正确值分别为 0.5168712762709208e1、0.52645599648397069e1、0.2140244217618104e247 与 0.2140244217…

【C++】详解RAII思想与智能指针

&#x1f308; 个人主页&#xff1a;谁在夜里看海. &#x1f525; 个人专栏&#xff1a;《C系列》《Linux系列》 ⛰️ 丢掉幻想&#xff0c;准备斗争 目录 引言 内存泄漏 内存泄漏的危害 内存泄漏的处理 一、RAII思想 二、智能指针 1.auto_ptr 实现原理 模拟实现 弊端…

JDBC-Dao层模式

分层思维 分层思维是软件架构设计的一种重要思想&#xff0c;它通过将应用程序划分为多个相互独立且依赖关系的层。 通常分为以下三层关系。 web层&#xff1a;主要负责与用户进行交互&#xff0c;处理请求。 service层&#xff1a;业务逻辑层&#xff0c;主要负责处理应用程序…

三种单例实现

1、不继承Mono的单例 实现 使用 注&#xff1a; 使用需要继承BaseManager 泛型填写自己本身 需要实现无参构造函数 2、挂载式的Mono单例 实现 使用 注&#xff1a; 使用需要继承SingletonMono 泛型填写自己本身 需要挂载在unity引擎面板 3、不用挂载式的单例 实现 使…

Flink API 的层次结构

Apache Flink 提供了多层 API&#xff0c;每层 API 针对不同的抽象层次和用途&#xff0c;使得开发者可以根据具体需求选择合适的 API 层次。以下是 Flink API 的层次结构及其简要说明&#xff1a;

DHCP与DNS安全管理

一、DHCPSnooping的攻击防范功能配置&#xff08;路由器&#xff09; 1.启动设备 2.将pc设为DHCP获取IP地址 3.配置DHCP [AR1]dhcp enable //启动DHCP服务 [AR1]ip pool aaa //设置地址池 [AR1-ip-pool-aaa]network 192.168.10.0 mask 24 //设置地址范围 [AR1-ip-poo…

51c视觉~合集6

我自己的原文哦~ https://blog.51cto.com/whaosoft/11603901 #CSWin-UNet 将自注意力机制集成到UNet中&#xff01;CSWin-UNet&#xff1a;U型分割方法&#xff0c;显著提高计算效率和感受野交互&#xff01;本文提出了CSWin-UNet&#xff0c;这是一种新颖的U型分割方法&…

深度学习服务器租赁AutoDL

省钱绝招 #AutoDL #GPU #租显卡

设备接入到NVR管理平台EasyNVR多品牌NVR管理工具/设备的音视频配置参考

NVR管理平台EasyNVR是一款功能强大的安防视频监控平台&#xff0c;能够轻松实现视频流的导入、录像、存储和回放等功能。在将设备接入到海康NVR管理平台EasyNVR时&#xff0c;视音频配置是确保视频监控效果的重要步骤。本文将详细介绍如何将设备接入到EasyNVR平台&#xff0c;并…

35.3K+ Star!PhotoPrism:一款基于AI的开源照片管理工具

PhotoPrism 简介 PhotoPrism[1] 是一个为去中心化网络设计的AI照片应用,它利用最新技术自动标记和查找图片,实现自动图像分类与本地化部署,你可以在家中、私有服务器或云端运行它。 项目特点 主要特点 浏览所有照片和视频,无需担心RAW转换、重复项或视频格式。 使用强大的…

HTML之列表

练习题&#xff1a; 图所示为一个问卷调查网页&#xff0c;请制作出来。要求&#xff1a;大标题用h1标签&#xff1b;小题目用h3标签&#xff1b;前两个问题使用有序列表&#xff1b;最后一个问题使用无序列表。 代码&#xff1a; <!DOCTYPE html> <html> <he…

redis实现消息队列的几种方式

一、了解 众所周知&#xff0c;redis是我们日常开发过程中使用最多的非关系型数据库&#xff0c;也是消息中间件。实际上除了常用的rabbitmq、rocketmq、kafka消息队列&#xff08;大家自己下去研究吧~模式都是通用的&#xff09;&#xff0c;我们也能使用redis实现消息队列。…

Linux下MySQL的简单使用

Linux下MySQL的简单使用 导语MySQL安装与配置MySQL安装密码设置 MySQL管理命令myisamchkmysql其他 常见操作 C语言访问MYSQL连接例程错误处理使用SQL 总结参考文献 导语 这一章是MySQL的使用&#xff0c;一些常用的MySQL语句属于本科阶段内容&#xff0c;然后是C语言和MySQl之…