1.stringbuffer和stringbuilder的区别,stringbuffer是通过什么实现线程安全的?
StringBuffer
和 StringBuilder
都是用于处理可变字符串的类,但它们的主要区别在于 线程安全性。
StringBuffer
的线程安全是通过方法加锁(synchronized)来实现的。
具体来说,它的大多数方法(如 append()
、insert()
、delete()
等)都使用了 synchronized
关键字。
- 跨域问题解决
跨域问题(CORS) 是前后端分离架构中最常见的问题之一,主要是浏览器的同源策略导致前端无法直接请求不同源(域名、端口或协议不同)的后端接口。
方式一:使用 @CrossOrigin
注解
方式二:全局跨域配置(推荐企业项目)
创建一个配置类,注册全局 CORS 策略:
java
@Configuration
public class CorsConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**") // 所有路径
.allowedOriginPatterns("*") // 允许所有源(或填写前端地址)
.allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")
.allowedHeaders("*")
.allowCredentials(true) // 允许携带 cookie
.maxAge(3600); // 预检请求缓存时间(秒)
}
}
方式三:Nginx 添加 CORS 跨域响应头。