赞
踩
学习仿牛客网社区项目
Spring Security是一款强大的身份验证和访问控制框架。提供了完善的认证机制和方法级的授权功能。
它的核心是一组过滤器链,不同的功能经由不同的过滤器。
这里就要引入一个概念:单点登录。
就是在一个多应用系统中,只要在其中一个系统上登录之后,不需要在其它系统上登录也可以访问其内容。举个例子,京东那么复杂的系统肯定不会是单体结构,必然是微服务架构,比如订单功能是一个系统,交易是一个系统…那么我在下订单的时候登录了,付钱难道还需要再登录一次吗,如果是这样,用户体验也太差了吧。实现的流程就是我在下单的时候系统发现我没登录就让我登录,登录完了之后系统返回给我一个Token,就类似于身份证的东西;然后我想去付钱的时候就把Token再传到交易系统中,然后交易系统验证一下Token就知道是谁了,就不需要再让我登录一次。
上面提到的Token就是JWT(JSON Web Token),是一种用于通信双方之间传递安全信息的简洁的、URL安全的表述性声明规范。一个JWT实际上就是一个字符串,它由三部分组成,头部、载荷与签名。
JWT在加密解密的时候会用到同一个密钥,这将会带来一个弊端,如果被黑客知道了密钥的内容,那么他就可以去伪造Token了。所以为了安全,我们可以使用非对称加密算法RSA。
创建两个密钥,公钥和私钥。公钥公开,私钥私有。用公钥加密报文,只能通过私钥解密报文,这样就算报文被截获,也无法破译。
病毒网站窃取浏览器的cookie,获取用户凭证ticket,用其模拟用户向服务器提交表单,从而获利。
服务器发送tocken给浏览器,再次收到请求后检查tocken,此信息病毒网站无法获取。
我们系统中创建了 N 个任务,每个任务都有指定的时间进行执行,而这种多任务的执行策略就是任务调度。
Quartz是一款开源的“任务调度库”
一是执行的任务,二是触发器(可以理解为设置闹钟),三是调度器。连在一起就是我们使用调度器将任务和触发器绑定在一起执行,以达到在指定的时间点执行或循环执行任务。
我们想要调度的任务都必须实现org.quartz.job
接口,然后实现接口中定义的execute()
方法即可
Trigger 作为执行任务的调度器。我们如果想要凌晨1点执行备份数据的任务,那么 Trigger 就会设置凌晨1点执行该任务。
Scheduler 为任务的调度器,它会将任务 Job 及触发器 Trigger 整合起来,负责基于 Trigger 设定的时间来执行 Job
用于更新帖子分数,用Elasticsearch进行搜索时,该分数作为一个排序字段。计算方法:加精75,评论10,点赞2
循环执行任务,每五分钟执行一次。
Caffeine是一款本地缓存组件,Redis是一款分布式缓存组件,项目中两个都用到了,二者并不冲突。Caffeine基于LRU算法实现,设置多种缓存策略。
Redis是分布式的,需要网络开销,本地缓存不用。对于一些秒杀系统或数据量小的缓存,用Caffeine。
将帖子列表和帖子总数放入本地缓存
Nginx是一款轻量级的Web服务器、反向代理服务器,内存占用少,启动快,高并发。
一般情况下,我们通过内网无法访问github,这时需要连接VPN(虚拟专用网络)再进行访问,这个过程是正向代理。
代理的对象是客户端,代理过程对服务器透明。
作用:
客户端访问的是,拥有真正服务器部分信息的代理服务器。
代理的对象是服务器端,代理过程对客户端透明。
在java后端代码中并未体现
内容分发网络。将目标服务器的资源分发到世界各地,距离用户群体更近,提高了访问速度。
镜像是对完整内容的复制,CDN是智能化缓存部分内容。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。