Redis 简介 一个系统在于数据库交互的过程中,内存的速度远远快于硬盘速度,当我们重复地获取相同数据时,我们一次又一次地请求数据库或远程服务,者无疑时性能上地浪费(这会导致大量时间被浪费在数据库查询或者远程方法调用上致使程序性能恶化),于是有了“缓存”。 Redis 是目前业界使用最广泛的内存数据存储。相比 Memcached,Redis 支持更丰富的数据结构,例如 hashes, li...
同源策略和实现跨域访问的方法
同源策略 同源策略定义 1995年,同源政策由 Netscape 公司引入浏览器。目前,所有浏览器都实行这个政策。 最初,它的含义是指,A网页设置的 Cookie,B网页不能打开,除非这两个网页”同源” 如果两个 URL 的 protocol、port (en-US) (如果有指定的话)和 host 都相同的话,则这两个 URL 是同源。这个方案也被称为“协议/主机/端口元组”,或者直接...
SpringBoot 配置 CORS 跨域请求的三种方法
前言 Springboot跨域问题,是当前主流web开发人员都绕不开的难题。但我们首先要明确以下几点 跨域只存在于浏览器端,不存在于安卓/ios/Node.js/python/ java等其它环境 跨域请求能发出去,服务端能收到请求并正常返回结果,只是结果被浏览器拦截了。 之所以会跨域,是因为受到了同源策略的限制,同源策略要求源相同才能正常进行通信,即协议、域名、端口号都完全...
Java 文件 IO 使用方法
创建并写文件的五种方式 java中创建文件的五种方法 Files.newBufferedWriter Files.write(Java 7 推荐) PrintWriter File.createNewFile FileOutputStream.write(byte[] b) 管道流 try(管道, 流连接等实现了Closeable接口的类){ //这里使用类...
使用 Java 压缩和解压文件与文件夹
压缩文件 将一个名为test1.txt的文件压缩到一个名为Compressed.zip的zip文件中。 public class ZipFile { public static void main(String[] args) throws IOException { //输出压缩包 FileOutputStream fos = new...
SpringSecurity 实现方法级别的权限验证
背景 在前文SpringSecurity 使用方法中实通过SpringSecurity配置实现了请求路径得用户权限验证,但是只实现了已登录得用户有权限可以访问被保护的资源,但是不同的资源对不同用户的访问权限不一致,例如某个资源是A用户的私有资源,而B应该无权访问,或者R为A共享的资源,B可以访问但不能修改。 而且由于使用Restful风格,对统一资源的CURD操作请求路径一致,而是通过HT...
SpringBoot 实现全局异常处理
将返回值统一封装时我们没有考虑当接口抛出异常的情况。当接口抛出异常时让用户直接看到服务端的异常肯定是不够友好的,而我们也不可能每一个接口都去try/catch进行处理,此时只需要使用@ExceptionHandler注解即可无感知的全局统一处理异常。 前言 实现思路 使用全局异常处理来处理校验逻辑的思路很简单,首先我们需要通过@ControllerAdvice注解定义一个全局异常的处理...
在 SpringBoot 中实现统一API返回格式
实现思路 在前后端分离大行其道的今天,有一个统一的返回值格式不仅能使我们的接口看起来更漂亮,而且还可以使前端可以统一处理很多东西,避免很多问题的产生。 具体的实现思路为设计设计一个封装类用其一个泛型成员变量对原本返回的数据进行封装,同时提供API对请求的执行状况和消息 示例代码 CommonResult 返回格式封装类 public final class CommonResult...
Spring AOP 的切点表达式
PCD(pointcut designators) 就是SpringAOP的切点表达式。SpringAOP的PCD是完全兼容AspectJ的,一共有10种。 SpringAOP 是基于动态代理实现的,以下以目标对象表示被代理bean,代理对象表示AOP构建出来的bean。目标方法表示被代理的方法。 execution execution是最常用的PCD。它的匹配式模板如下展示: exec...
Spring AOP 的使用方法
Spring AOP 注解概述 Spring 的 AOP 功能除了在配置文件中配置一大堆的配置,比如切入点、表达式、通知等等以外,使用注解的方式更为方便快捷,特别是 Spring boot 出现以后,基本不再使用原先的 beans.xml 等配置文件了,而都推荐注解编程。 注解 功能 @Aspect ...