1. AtomicInteger 的相关回忆
AtomicInteger简介:- 是
java.util.concurrent.atomic包中的类。 - 提供了基于 CAS(Compare-And-Swap)机制的线程安全整数操作。
- 是
- 特点:
- 线程安全:适合多线程环境,无需额外加锁。
- 常用方法:
incrementAndGet():自增 1 并返回新值。getAndIncrement():返回当前值并自增 1。compareAndSet(expectedValue, newValue):如果当前值等于期望值,则原子地更新为新值。
2. & 和 % 的区别
-
&和%是否都可以用来取余? -
%的作用:-
取余运算符,返回除法的余数。
-
适用于任意整数。
-
例如:
10 % 8 = 2。 -
&的作用:- 按位与运算符,逐位对二进制进行操作。
- 适用于位操作优化的取模,只能用于 2 的幂次:
n & (m - 1),m必须是 2 的幂。- 例如:
10 & 7 = 2,因为7的二进制是0111。
-
总结:
&只能取 2 的幂次模,速度更快。%可以处理任意模数,但速度稍慢。
-
3. Spring 的 @ConfigurationProperties 注解
-
@ConfigurationProperties注释的类是否会被 Spring 自动扫描为 Bean? -
核心点:
@ConfigurationProperties的作用是将配置文件中的属性值绑定到 Java 类的字段中。- 单独使用
@ConfigurationProperties,类不会自动成为 Spring 的 Bean。
-
成为 Bean 的方法:
-
加上
@Component或@Configuration注解:@Component @ConfigurationProperties("spring.cloud.nacos.discovery") public class NacosDiscoveryProperties { private String serverAddr; private String username; }
-
通过
@EnableConfigurationProperties显式加载:@Configuration @EnableConfigurationProperties(NacosDiscoveryProperties.class) public class AppConfig { }
-
Spring Boot 自动配置:
- 某些 Starter 模块中会通过
spring.factories自动启用。
- 某些 Starter 模块中会通过
-
3.1 具体案例
@ConfigurationProperties("spring.cloud.nacos.discovery")
public class NacosDiscoveryProperties {
private String serverAddr;
private String username;
}- 解释:
- 如果项目中引入了
spring-cloud-starter-alibaba-nacos-discovery,类可能会通过自动配置机制注册为 Bean。
- 如果项目中引入了
3.2 确认方法
-
检查是否已注册:
@Autowired private NacosDiscoveryProperties nacosDiscoveryProperties;
-
查看源码是否有
@EnableConfigurationProperties注册。