2024年07月17日
//只允许一次登录
//获取请求头Authorization+expiresIn
String authorization=exchange.getRequest().getHeaders().getFirst(UaaConstant.AUTHORIZATION);
if(StringUtils.isNotBlank(authorization)){
authorization=authorization.replace("Bearer ","");
}
String expiresIn=exchange.getRequest().getHeaders().getFirst(UaaConstant.EXPIRESIN);
authorization=authorization+expiresIn;
String redisAuth=null;
if(StringUtils.isNotBlank(userName)){
if(ObjectUtil.isNotNull(redisTemplate.opsForValue().get(userName))){
redisAuth=redisTemplate.opsForValue().get(userName).toString();
}
}
if(!authorization.equals(redisAuth)&&StringUtils.isNotBlank(redisAuth)){
return this.errorCom("该账号已在其他地方登录!",exchange,chain);
}
2024年07月17日
溪云阁:专注编程教学,架构,JAVA,Python,微服务,机器学习等领域,欢迎关注,一起学习。
现在很多的日志,在搭建的时候,都喜欢用Kafka+ELK来做,但是搭建起来就比较麻烦,就算不做高可用,做起来起码有4个组件需要,那做高可用的话,那就更多了,像zookeeper一般我们做集群,最低是3个节点。
2024年07月17日
1.1. pom
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <!-- 配合redis做缓存 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache</artifactId> </dependency>
2024年07月17日
稍大一些的网站,通常都会有好几个服务器,每个服务器运行着不同功能的模块,使用不同的二级域名,而一个整体性强的网站,用户系统是统一的,即一套用户名、密码在整个网站的各个模块中都是可以登录使用的。各个服务器共享用户数据是比较容易实现的,只需要在后端放个数据库服务器,各个服务器通过统一接口对用户数据进行访问即可。但还存在一个问题,就是用户在这个服务器登录之后,进入另一个服务器的别的模块时,仍然需要重新登录,这就是一次登录,全部通行的问题,映射到技术上,其实就是各个服务器之间如何实现共享 SESSION 数据的问题。
2024年07月17日
2024年07月17日
近几日闲来无事,工作摸鱼之时在码云上发现一个更加轻量级的分布式日志系统 PlumeLog ,就研究了一下,写了一个demo,做个记录
2024年07月17日
F.22: Use T* or owner<T*> to designate a single object(使用T*或owner<T*>指明唯一对象)
Reason(原因)
Readability: it makes the meaning of a plain pointer clear. Enables significant tool support.
2024年07月17日
在C++中,存在着一个有趣却容易被忽略的编译链接问题,那就是为什么在使用pow函数不需要链接libm库?
在思考这个问题前,我们先回顾下,什么情况下需要制定链接库?
#include<stdio.h>
#include<math.h>