一文掌握SpringBoot注解之@Configuration知识文集(6)

在这里插入图片描述

🏆作者简介,普修罗双战士,一直追求不断学习和成长,在技术的道路上持续探索和实践。
🏆多年互联网行业从业经验,历任核心研发工程师,项目技术负责人。
🎉欢迎 👍点赞✍评论⭐收藏

🔎 SpringBoot 领域知识 🔎

链接专栏
SpringBoot 注解专业知识学习一SpringBoot 注解专栏
SpringBoot 注解专业知识学习二SpringBoot 注解专栏
SpringBoot 注解专业知识学习三SpringBoot 注解专栏
SpringBoot 注解专业知识学习四SpringBoot 注解专栏
SpringBoot 注解专业知识学习五SpringBoot 注解专栏
SpringBoot 注解专业知识学习六SpringBoot 注解专栏
SpringBoot 注解专业知识学习七SpringBoot 注解专栏

文章目录

    • 🔎 SpringBoot 注解 @Configuration 学习(6)
      • 🍁 51. 如何在配置类中使用自定义注解来标记特定的Bean?
      • 🍁 52. 如何在配置类中使用@ImportResource注解引入XML配置文件?
      • 🍁 53. 如何在配置类中使用@Import注解引入其他配置类和类?
      • 🍁 54. 如何在配置类中使用@Profile注解指定特定的配置文件加载条件?
      • 🍁 55. 如何使用@Configuration注解创建多个配置类?
      • 🍁 56. 如何在配置类中调用外部类实例的方法并将其返回值作为Bean?
      • 🍁 57. 如何在配置类中使用@ConditionalOnBean和@ConditionalOnMissingBean进行条件化装配?
      • 🍁 58. 如何在配置类中使用@Scope注解指定Bean的作用域?
      • 🍁 59. 如何在配置类中使用@Enable注解启用特定的功能或特性?
      • 🍁 60. 如何在配置类中使用@Order注解调整Bean的加载顺序?


🔎 SpringBoot 注解 @Configuration 学习(6)

在这里插入图片描述


🍁 51. 如何在配置类中使用自定义注解来标记特定的Bean?

要在配置类中使用自定义注解来标记特定的Bean,你可以按照以下步骤进行操作:

1.创建自定义注解:首先,创建一个自定义注解,用于标记特定的Bean。你可以使用@Retention(RetentionPolicy.RUNTIME)以及@Target(ElementType.TYPE)来指定注解的保留策略和使用目标。

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface MyCustomAnnotation {
    // 可以在自定义注解中添加一些可选参数
}

2.创建配置类:创建一个配置类,并使用@Configuration注解标记它。在该配置类中,你可以使用自定义注解来标记特定的Bean。

@Configuration
public class MyConfig {

    @Bean
    @MyCustomAnnotation  // 使用自定义注解标记Bean
    public MyBean myBean() {
        return new MyBean();
    }
}

3.创建Bean后处理器:在需要处理自定义注解的地方,你可以创建一个Bean后处理器,用于对标记了自定义注解的Bean进行特定的处理。你可以实现BeanPostProcessor接口,并在postProcessBeforeInitialization()postProcessAfterInitialization()方法中检查Bean是否标记了自定义注解。

@Component
public class MyBeanPostProcessor implements BeanPostProcessor {

    @Override
    public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
        if (bean.getClass().isAnnotationPresent(MyCustomAnnotation.class)) {
            // 对标记了自定义注解的Bean进行处理
        }
        return bean;
    }

    @Override
    public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
        return bean;
    }
}

在上述示例中,我们通过实现BeanPostProcessor接口,在postProcessBeforeInitialization()方法中检查了Bean是否标记了我们定义的自定义注解,如果是,则可以进行相应的处理逻辑。

通过以上步骤,你可以在配置类中使用自定义注解来标记特定的Bean,并创建相应的Bean后处理器来对标记了自定义注解的Bean进行特定的处理。


🍁 52. 如何在配置类中使用@ImportResource注解引入XML配置文件?

要在配置类中使用@ImportResource注解引入XML配置文件,可以按照以下步骤进行操作:

1.确保项目中已经引入了Spring的相关依赖,以便支持XML配置文件的加载和解析。

2.确保XML配置文件位于正确的位置,并定义了你需要的Bean和相关的配置。

3.创建一个配置类,并使用@ImportResource注解标记它,同时指定要引入的XML配置文件的路径。

@Configuration
@ImportResource("classpath:path/to/xml-config.xml")
public class MyConfig {
    // ...
}

在上述代码中,"classpath:path/to/xml-config.xml"表示XML配置文件的路径,你需要将它替换为你实际的XML配置文件的路径。

4.在配置类中使用引入的Bean:一旦引入的XML配置文件加载并解析完成,其中定义的Bean就可以在配置类中使用。你可以使用@Autowired或@Resource等注解将需要的Bean注入到相应的位置。

@Configuration
@ImportResource("classpath:path/to/xml-config.xml")
public class MyConfig {

    @Autowired
    private MyBean myBean;
    
    // ...
}

在上述示例中,我们使用@Autowired注解将引入的Bean注入到了MyConfig配置类中。

通过以上步骤,你可以在配置类中使用@ImportResource注解来引入XML配置文件,并将其中定义的Bean注入到需要的位置。请确保XML配置文件的路径和命名正确,以便Spring能够正确地加载和解析它们。同时,也要注意XML配置文件和配置类之间的相互依赖关系,确保它们能够正确地协同工作。


🍁 53. 如何在配置类中使用@Import注解引入其他配置类和类?

要在配置类中使用@Import注解引入其他配置类和类,可以按照以下步骤进行操作:

1.创建要引入的其他配置类或类,并确保它们位于正确的位置。

2.在目标配置类中使用@Import注解,通过参数指定要引入的其他配置类或类。

@Configuration
@Import({OtherConfig.class, MyClass.class})
public class MyConfig {
    // ...
}

在上述示例中,我们使用@Import注解引入了OtherConfig配置类和MyClass类。你可以根据需要引入一个或多个其他配置类或类,只需在@Import注解中传入相应的参数即可。

3.在目标配置类中使用引入的Bean:一旦其他配置类或类被引入,其中定义的Bean就可以在目标配置类中使用。你可以使用@Autowired或@Resource等注解将需要的Bean注入到相应的位置。

@Configuration
@Import({OtherConfig.class, MyClass.class})
public class MyConfig {

    @Autowired
    private OtherBean otherBean;
    
    // ...
}

在上述示例中,我们使用@Autowired注解将引入的OtherBean注入到了MyConfig配置类中。

通过以上步骤,你可以在配置类中使用@Import注解来引入其他配置类和类,并将其中定义的Bean注入到需要的位置。请确保被引入的配置类和类的路径和命名正确,并处理好它们之间的相互依赖关系,以确保Spring能够正确地加载和处理它们。


🍁 54. 如何在配置类中使用@Profile注解指定特定的配置文件加载条件?

要在配置类中使用@Profile注解来指定特定的配置文件加载条件,可以按照以下步骤进行操作:

1.确保项目中已经引入了Spring的相关依赖,以便支持@Profile注解的使用。

2.创建不同的配置类,每个配置类用于处理特定的配置文件加载条件。可以使用@Configuration注解标记这些配置类。

3.在每个配置类中使用@Profile注解,通过参数指定特定的配置文件加载条件。

@Configuration
@Profile("dev")
public class DevConfig {
    // ...
}

在上述示例中,我们使用@Profile注解并设置参数为"dev",表示该配置类将在"dev"环境下被加载。

**4.在应用主配置类中使用@Import注解,引入需要的配置类。**这样,在应用启动时,根据激活的profile,对应的配置类将被加载。

@Configuration
@Import({DevConfig.class, ProdConfig.class})
public class AppConfig {
    // ...
}

在上述示例中,我们使用@Import注解引入了DevConfig和ProdConfig配置类。这意味着在应用启动时,根据激活的profile,对应的配置类将被加载。

**5.在应用的配置文件中指定激活的profile。**可以通过在application.properties或application.yml文件中设置"spring.profiles.active"属性来指定激活的profile,或者在启动应用时使用命令行参数来指定。

spring.profiles.active=dev

在上述示例中,我们将激活的profile设置为"dev"。

通过以上步骤,你可以在配置类中使用@Profile注解来指定特定的配置文件加载条件。根据激活的profile,对应的配置类将被加载,以处理特定的配置。请确保配置文件存在,并且所需的@Configuration类被正确地加载和处理。


🍁 55. 如何使用@Configuration注解创建多个配置类?

要使用@Configuration注解创建多个配置类,可以按照以下步骤进行操作:

1.确保项目中已经引入了Spring的相关依赖,以便支持@Configuration注解的使用。

**2.创建多个配置类,每个配置类用于处理不同的配置逻辑。**每个配置类都需要使用@Configuration注解进行标记。

@Configuration
public class Config1 {
    // ...
}

@Configuration
public class Config2 {
    // ...
}

在上述示例中,我们创建了两个配置类Config1和Config2,并在它们上面使用@Configuration注解进行标记。

3.可以在每个配置类中定义所需的Bean、设置属性、配置组件等。

@Configuration
public class Config1 {

    @Bean
    public MyBean myBean() {
        return new MyBean();
    }
    
    // ...
}

@Configuration
public class Config2 {
    // ...
}

在上述示例中,我们在Config1配置类中定义了一个名为myBean()的Bean方法。

4.可以使用@Import注解将其他配置类引入到主配置类中,以组合多个配置类。

@Configuration
@Import({Config1.class, Config2.class})
public class AppConfig {
    // ...
}

在上述示例中,我们使用@Import注解将Config1和Config2配置类引入到了AppConfig主配置类中。

通过以上步骤,你可以使用@Configuration注解创建多个配置类,并通过@Import注解将它们引入到主配置类中。这样,在应用启动时,所有的配置类都将被加载和处理,从而实现不同的配置逻辑。请确保所有配置类的路径和命名正确,并处理好它们之间的相互关系,以确保Spring能够正确地加载和处理它们。


🍁 56. 如何在配置类中调用外部类实例的方法并将其返回值作为Bean?

要在配置类中调用外部类实例的方法并将其返回值作为Bean,可以按照以下步骤进行操作:

1.确保外部类和配置类都已被正确引入到项目中。

2.创建外部类,并在该类中定义需要调用的方法。

public class ExternalClass {
    public String getSomeValue() {
        // 在这里编写方法的逻辑
        return "Some Value";
    }
    // ...
}

在上述示例中,我们创建了ExternalClass,并定义了名为getSomeValue()的方法。

3.在配置类中使用@Bean注解来创建Bean,并调用外部类实例的方法。

@Configuration
public class AppConfig {
    
    @Bean
    public String someValueBean(ExternalClass externalClass) {
        return externalClass.getSomeValue();
    }
    
    // ...
}

在上述示例中,我们在AppConfig配置类中声明了名为someValueBean()的Bean方法,该方法调用了外部类实例的getSomeValue()方法,并将其返回值作为Bean。

4.确保配置类中已经通过其他方式提供了外部类的实例。

@Configuration
public class AppConfig {
    @Bean
    public ExternalClass externalClass() {
        return new ExternalClass();
    }
    // ...
}

在上述示例中,我们在AppConfig配置类中声明了名为externalClass()的Bean方法,该方法创建并返回了外部类的实例。

通过以上步骤,你可以在配置类中调用外部类实例的方法,并将其返回值作为Bean。请确保实例的创建和配置类中的方法定义正确,并处理好它们之间的依赖关系,以确保方法调用可以成功并将正确的返回值作为Bean。


🍁 57. 如何在配置类中使用@ConditionalOnBean和@ConditionalOnMissingBean进行条件化装配?

要在配置类中使用@ConditionalOnBean和@ConditionalOnMissingBean进行条件化装配,可以按照以下步骤进行操作:

1.确保项目中已经引入了Spring的相关依赖,以便支持@ConditionalOnBean和@ConditionalOnMissingBean的使用。

2.在配置类中使用@ConditionalOnBean注解来指定一个或多个需要存在的Bean作为条件,只有当这些Bean存在时,才会进行装配。

@Configuration
public class AppConfig {

    @Bean
    public MyBean myBean() {
        return new MyBean();
    }

    @Bean
    @ConditionalOnBean(MyBean.class)
    public AnotherBean anotherBean() {
        return new AnotherBean();
    }

    // ...
}

在上述示例中,我们定义了一个名为anotherBean()的Bean,使用@ConditionalOnBean注解来指定只有当MyBean存在时才会装配该Bean。

3.在配置类中使用@ConditionalOnMissingBean注解来指定一个或多个需要不存在的Bean作为条件,只有当这些Bean不存在时,才会进行装配。

@Configuration
public class AppConfig {

    @Bean
    public MyBean myBean() {
        return new MyBean();
    }

    @Bean
    @ConditionalOnMissingBean(AnotherBean.class)
    public AnotherBean anotherBean() {
        return new AnotherBean();
    }

    // ...
}

在上述示例中,我们定义了一个名为anotherBean()的Bean,使用@ConditionalOnMissingBean注解来指定只有当AnotherBean不存在时才会装配该Bean。

通过以上步骤,你可以在配置类中使用@ConditionalOnBean和@ConditionalOnMissingBean注解来进行条件化装配。请确保指定的Bean条件和逻辑正确,并处理好它们之间的依赖关系,以确保装配过程符合预期。


🍁 58. 如何在配置类中使用@Scope注解指定Bean的作用域?

要在配置类中使用@Scope注解指定Bean的作用域,可以按照以下步骤进行操作:

1.首先,在配置类中使用@Bean注解声明一个Bean。

@Configuration
public class AppConfig {

    @Bean
    @Scope("singleton") // 使用@Scope注解指定作用域
    public MyBean myBean() {
        return new MyBean();
    }

    // ...
}

在上述示例中,我们使用@Bean注解声明了一个名为myBean()的Bean,并使用@Scope注解将其作用域设置为“singleton”(单例)。

2.如果需要指定其他作用域,可以在@Scope注解中使用Spring提供的常量来设置作用域。

@Configuration
public class AppConfig {

    @Bean
    @Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE) // 设置为原型作用域
    public MyBean myBean() {
        return new MyBean();
    }
    
    // ...
}

在上述示例中,我们将作用域设置为原型(每次获取该Bean时都会创建一个新的实例),使用了ConfigurableBeanFactory接口中定义的SCOPE_PROTOTYPE常量。

3.可以继续设置其他作用域,比如“request”(请求作用域)、“session”(会话作用域)等,具体使用哪种作用域取决于你的需求。

@Configuration
public class AppConfig {

    @Bean
    @Scope(value = WebApplicationContext.SCOPE_REQUEST) // 设置为请求作用域
    public MyBean myBean() {
        return new MyBean();
    }
    
    // ...
}

在上述示例中,我们将作用域设置为请求作用域,使用了WebApplicationContext接口中定义的SCOPE_REQUEST常量。

通过以上步骤,你可以在配置类中使用@Scope注解指定Bean的作用域。请根据实际需求选择适当的作用域,并确保作用域设置正确,以满足你的业务需求。


🍁 59. 如何在配置类中使用@Enable注解启用特定的功能或特性?

要在配置类中使用@Enable注解启用特定的功能或特性,可以按照以下步骤进行操作:

1.首先,找到与你要启用的功能或特性相关的@Enable注解。这些@Enable注解通常是由Spring或第三方库提供的。

**2.在你的配置类上使用所选的@Enable注解。**这将启用与该注解相关的功能或特性。你可以根据需要在同一个配置类上使用多个@Enable注解。

@Configuration
@EnableSomeFeature // 启用某个功能
@EnableAnotherFeature // 启用另一个功能
public class AppConfig {

    // ...

}

在上述示例中,我们使用@EnableSomeFeature注解和@EnableAnotherFeature注解分别启用了某个功能和另一个功能。

**3.根据所选的@Enable注解,可能需要提供一些额外的配置。**这些配置可以通过配置类中的其他方法或@Bean方法来提供。

@Configuration
@EnableSomeFeature
public class AppConfig {

    @Bean
    public SomeBean someBean() {
        return new SomeBean();
    }

    // ...

}

在上述示例中,在配置类中定义了一个名为someBean()的@Bean方法,并将其作为所启用功能的一部分。

通过以上步骤,你可以在配置类中使用@Enable注解启用特定的功能或特性。请根据所选的@Enable注解的要求提供相应的配置,以确保功能的正确启用。确保阅读并理解@Enable注解的文档,以了解它们的作用和使用方式。


🍁 60. 如何在配置类中使用@Order注解调整Bean的加载顺序?

在配置类中使用@Order注解可以调整Bean的加载顺序。具体步骤如下:

**1.在你的配置类中针对需要调整加载顺序的Bean使用@Order注解,指定一个整数值作为加载顺序的优先级。**数值越小,优先级越高。

@Configuration
public class AppConfig {

    @Bean
    @Order(1) // 设置加载顺序为1
    public FirstBean firstBean() {
        return new FirstBean();
    }

    @Bean
    @Order(2) // 设置加载顺序为2
    public SecondBean secondBean() {
        return new SecondBean();
    }

    // ...
}

在上述示例中,我们使用@Order注解分别为firstBean()和secondBean()指定了加载顺序。根据设置的值,firstBean()会在secondBean()之前加载。

**2.确保你的配置类实现了Order接口,并重写了getOrder()方法。**这可以用来提供默认加载顺序,以便在没有显式指定@Order注解的情况下使用。

@Configuration
public class AppConfig implements Ordered {

    @Override
    public int getOrder() {
        return 1; // 默认加载顺序为1
    }

    @Bean
    public FirstBean firstBean() {
        return new FirstBean();
    }

    // ...
}

在上述示例中,我们实现了Ordered接口,并重写了getOrder()方法来指定配置类的默认加载顺序为1。

通过以上步骤,你可以在配置类中使用@Order注解来调整Bean的加载顺序。请注意,@Order注解只适用于实现了PriorityOrdered和Ordered接口的Bean。对于没有实现这些接口的Bean,使用@Order注解没用。请根据实际需要选择合适的方法来调整Bean的加载顺序。

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ionic报错:Cannot read properties of undefined (reading ‘classList‘)

报错信息&#xff1a; [ionic/vue Warning]: The view you are trying to render for path /tabs/tab1 does not have the required <ion-page> component. Transitions and lifecycle methods may not work as expected.See https://ionicframework.com/docs/vue/navig…

fx-82es软升级至fx-991es整理

fx-82es和fx-991es在硬件上采用的是相同的流水线设计。fx-82es为了降低成本或出于其他考虑&#xff0c;卡西欧在其主板上去掉了一些以微积分为主的功能 也就是说fx-82es理论上是有可能升级到fx-991es的&#xff0c;硬件上进行升级之前有人尝试成功过了&#xff0c;但是有一定风…

30s速通String——从JVM内存 到相关方法

0.深度理解String&#xff08;初学者可后面再看&#xff09; 1.JVM理解两种初始化String方式 1.1直接初始化 栈中保存变量s1,s2&#xff0c;而变量保存“abc”在方法区的地址 这里当“abc”具有唯一性&#xff0c;字符串常量区无此字符串&#xff0c;我们就产生一个新内存“…

【动态规划】【子序列除重】【C++算法】1987不同的好子序列数目

作者推荐 【动态规划】【状态压缩】【2次选择】【广度搜索】1494. 并行课程 II 本文涉及知识点 动态规划汇总 LeetCode1987:不同的好子序列数目 给你一个二进制字符串 binary 。 binary 的一个 子序列 如果是 非空 的且没有 前导 0 &#xff08;除非数字是 “0” 本身&…

EasyRecovery2024永久免费版电脑数据恢复软件下载

EasyRecovery数据恢复软件是一款非常好用且功能全面的工具&#xff0c;它能帮助用户恢复各种丢失或误删除的数据。以下是关于EasyRecovery的详细功能介绍以及下载步骤&#xff1a; EasyRecovery-mac最新版本下载:https://wm.makeding.com/iclk/?zoneid50201 EasyRecovery-win…

AD9361多片同步设计方法

本文基于ZC706FMCOMMS5的平台&#xff0c;介绍了多片AD9361同步的方法。并将该设计移植到自行设计的ZYNQ70354片AD9361(实现8路同步收发)的电路板上。本设计采用纯逻辑的方式&#xff0c;仅使用了ZYNQ芯片的PL部分。 9361多芯片同步主要包括基带同步和射频同步两大块任务。其中…

maven插件docker-maven-plugin打包镜像并发布到dockerHub

文章目录 前言一、使用maven插件制作docker镜像二、发布到dockerHub总结 前言 如果我们的项目要在docker中运行&#xff0c;那么就必须要把我们的项目生成docker镜像&#xff0c;如果要实现远程安装&#xff0c;也就必须要把镜像发布到远程仓库里&#xff0c;如果我们没有自己…

旭华智能水文遥测终端机RTU

SV-RT8588低功耗测控终端&#xff0c;可采集、存储监测点传感器/仪表数据&#xff0c;通过4G/网口等通讯方式上传至监管平台&#xff0c;产品采用高性能32位处理器和工业级无线模块&#xff0c;接口类型丰富配置灵活&#xff0c;能满足不同场景下的各种需求&#xff1b;低功耗设…

JavaEE企业级应用软件开发—Spring框架入门学习笔记(一)

一、认识框架 实际开发中&#xff0c;随着业务的发展&#xff0c;软件系统变得越来越复杂&#xff0c;如果所有的软件都从底层功能开始开发&#xff0c;那将是一个漫长而繁琐的过程。此外&#xff0c;团队协作开发时&#xff0c;由于没有统一的调用规范&#xff0c;系统会出现大…

Vue3.4+element-plus2.5 + Vite 搭建教程整理

一、 Vue3Vite 项目搭建 说明&#xff1a; Vue3 最新版本已经基于Vite构建&#xff0c;关于Vite简介&#xff1a;Vite 下一代的前端工具链&#xff0c;前端开发与构建工具-CSDN博客 1.安装 并 创建Vue3 应用 npm create vuelatest 创建过程可以一路 NO 目前推荐使用 Vue R…

Django前后端分离之后端实践2

小实践&#xff1a;实现用户登录、注销及ORM管理功能、事务开启小实践 models.py class Books(models.Model):id models.CharField(primary_keyTrue,max_length20,verbose_name"图书ID")name models.CharField(max_length20,verbose_name图书名称)status models…

MySQL 小技巧:利用 xtrabackup 完全备份,增量备份及还原

案例&#xff1a;利用 xtrabackup 8.0 完全备份,增量备份及还原 MySQL8.0 在面对海量数据时&#xff0c;我们无法做到每天全量备份&#xff0c;因此 只能每周做一次全量备份。 而每天的话则进行增量备份&#xff0c;确保数据安全。 注意点&#xff1a;MySQL 8.0.26 版本对应需要…

基于Springboot的考编论坛网站的设计与实现(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的考编论坛网站的设计与实现&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层…

Netty重点——ByteBuf特别篇(十五)

ByteBuf为什么好用 在网络编程中&#xff0c;基本都是基于TCP报文的字节流的操作&#xff0c;所以Java的NIO又新增了ByteBuffer&#xff0c;只不过Java原生的ByteBuffer&#xff0c;非常难操作&#xff0c;也不能扩容缩容&#xff0c;所以Netty又重新封装了自己的Bytebuf&#…

力扣经典题:相交链表

题目分析&#xff1a;两个链表如果相交且不存在环&#xff0c;那么这两个链表从相交节点往后的节点都相同&#xff0c;所以&#xff0c;遍历一个链表&#xff0c;在遍历时不断遍历另一个链表&#xff0c;只要相等就可以返回了 struct ListNode *getIntersectionNode(struct Li…

2024智慧城市新纪元:引领未来,重塑都市生活

随着科技的飞速发展和数字化转型的不断深入&#xff0c;2024年智慧城市领域迎来了全新的发展格局。 这一年&#xff0c;智慧城市的建设更加注重人性化、可持续性和创新性&#xff0c;为城市居民带来了前所未有的便捷与舒适。以下将重点关注智慧城市的几个核心内容&#xff0c;…

LeetCode:14.最长公共前缀

14. 最长公共前缀 - 力扣&#xff08;LeetCode&#xff09; 目录 题目&#xff1a; 思路&#xff1a; 代码有限注释&#xff1a; 每日表情包&#xff1a; 题目&#xff1a; 思路&#xff1a; 仅有一种&#xff0c;LeetCode的四种解法&#xff0c;三种都是来水的&#…

单片机学习笔记---串口通信(1)

目录 通信的基本概念 通信的方式 1.按照数据传送的方式&#xff0c;可分为串行通信和并行通信。 1.1串行通信 1.2并行通信 2.按照通信的数据同步方式&#xff0c;又可以分为异步通信和同步通信。 2.1 异步通信 2.2同步通信 3.按照数据的传输方向&#xff0c;又可以分为…

C#(C Sharp)学习笔记_If条件判断语句【五】

前言&#xff1a; 本期学习的是编程语言中的主要语句&#xff1a;if-条件判断语句。在这里我们会学到&#xff1a;if语法&#xff0c;if-else&#xff0c;和if嵌套。话不多说&#xff0c;我们开始吧&#xff01; 什么是条件判断语句&#xff1f; 条件语句是用来判断给定的条件…

数据库学习案例20240206-ORACLE NEW RAC agent and resource关系汇总。

1 集群架构图 整体集群架构图如下&#xff1a; 1 数据库启动顺序OHASD层面 操作系统进程init.ohasd run启动ohasd.bin init.ohasd run 集群自动启动是否被禁用 crsctl enable has/crsGIHOME所在文件系统是否被正常挂载。管道文件npohasd是否能够被访问&#xff0c; cd /var/t…