1.匹配逻辑
2.Websocket
是一种全双工通信方式,不仅客户端可以给服务器端发送请求,服务器端也可以给客户端发送消息。
3.ConcurrentHashMap
在Java中,ConcurrentHashMap 是一个线程安全的哈希表实现,它可以在多线程环境中提供高性能的并发访问。它使用分段锁(segmentation)技术来允许对映射表的多个部分进行并发更新,从而提高了并发性能。
好处是,多个线程可以并发地读取和更新这个映射表,而不需要额外的同步措施。这对于处理WebSocket连接非常有用,因为WebSocket连接通常是并发的,并且需要在多个线程之间共享状态信息。
未来会在WebSocketServer.java中,接收到输入的时候,调用这两个函数
也就是在蓝色的线程里面修改nextStepA和nextStepB的值,而在红色的线程里面,会读取这两个线程的值
在Java中,ReentrantLock 是 java.util.concurrent.locks 包下的一个类,它提供了一个可重入的互斥锁(即同一个线程可以多次获得同一个锁),是 java.util.concurrent 并发包中提供的一种锁机制。
4.SpringSecurity的ip白名单设置
bug缘由:由于springboot和springsecurity版本过高导致的WebSecurityConfigurerAdapter已弃用 而其中包含了hasIpAddress这个方法
询问了一下gpt给出了替代方案access表达式来对ip进行筛选,但是无效
最终找到了一套通过过滤器来对ip进行过滤筛选的方案
import jakarta.servlet.*;
import jakarta.servlet.http.HttpServletRequest;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Configuration;
import java.io.IOException;
import java.util.Set;
@Configuration
@Slf4j
public class IpAddressFilter implements Filter {
private final static Set<String> ipWhiteList = Set.of(
"127.0.0.1",
"0:0:0:0:0:0:0:1"
);
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
if (!ipWhiteList.contains(req.getRemoteAddr())) {
return;
}
chain.doFilter(request, response);
}
}