Sam's Notes | Sam Blog

梦想还是要有的,万一实现了呢

0%

主要内容

swagger(springfox) 可帮助开发人员设计,构建,记录和使用RESTful Web服务, 使后台开发人员与移动端开发人员更好的对接.
大多数用户通过Swagger UI工具可很简单识别和使用Swagger。

最大优点: 接口开发人员不用另外写接口文档,代码注释中写上swagger相关的注释就可以自动生成接口文档;
最大缺点: 对源代码侵入比较严重。

本文以 springfox-swagger2 V2.9.2 版本为例说明。

末了,还有个稍重量级竞品 RAP(阿里妈妈出品) , 感兴趣的可以去玩玩。

更新历史
+2018-11-04: 增加swagger注解具体说明

阅读全文 »

主要内容

逃逸分析的基本行为就是分析对象动态作用域:当一个对象在方法中被定义后,它可能被外部方法所引用,称为方法逃逸。甚至还有可能被外部线程访问到,譬如赋值给类变量或可以在其他线程中访问的实例变量,称为线程逃逸。
即时编译器(Just-in-time Compilation,JIT)判断对象是否逃逸的依据,一是对象是否被存入堆中(静态字段或者堆中对象的实例字段),二是对象是否被传入未知代码中。
逃逸分析 在 方法内联后才进行。

如果对象没有逃逸,即时编译器对代码进行性能优化。

阅读全文 »

主要内容

spring boot (Spring Mvc) 提供文件流服务,最简单方式。

更新历史

环境:spring 4.2 以上

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
@ResponseBody
@GetMapping(value = "file/{id}")
public ResponseEntity getFile(@PathVariable Long id) {

UrlResource resource = null;
try {
resource = new UrlResource(Paths.get(${Path of file id}).toUri());
} catch (Exception e) {

}

if(resource == null) {
return ResponseEntity.badRequest().body("无对应资源");
}

return ResponseEntity.status(HttpStatus.PARTIAL_CONTENT) //断点续传
.contentType(MediaTypeFactory
.getMediaType(resource)
.orElse(MediaType.APPLICATION_OCTET_STREAM)) // MediaType
.body(resource);
}

主要内容

  • JWT (Json Web Tokens)
  • Shiro + JWT

更新历史

JWT 是为分布式,微服务 而生。
这时Web应用是无状态的,即服务器端无状态,就是说服务器端不会存储像session这种东西,而是每次请求时access_token进行资源访问。
如一些REST风格的API, 大型tomcat集群(不做session同步)。
单体WEB应用还是推荐session-cookie机制。

阅读全文 »

主要内容

spring Transaction 事务;Transaction 事务绑定事件

更新历史

环境:spring 4.2 以上

spring 的 事务分为 编程式事务声明式事务
对此, spring 官方的建议是: 除非你只有很少数目的事务操作, 你可以选择 编程式事务 ;否则都建议用 声明式事务

阅读全文 »

主要内容

spring aop 面向切面编程; 主要探索Spring框架对面向切面编程的支持,包括如何定义需要被切面(aspect)覆盖的类,如何使用注解创建切面。

  • AOP基本知识
  • spring AOP

更新历史

阅读全文 »

主要内容

Java 8 Streams 在集合和其他数据集上运行函数式操作。
所有流计算都有一种共同的结构:它们具有一个流来源、0 或多个中间操作,以及一个终止操作。

更新历史

阅读全文 »