java9系列(四)Process API更新

2018-03-02
阅读 5 分钟
3.9k
/Library/Java/JavaVirtualMachines/jdk-9.0.4.jdk/Contents/Home/lib/src.zip!/java.base/java/lang/ProcessHandle.java

java9 gc log参数迁移

2018-03-01
阅读 7 分钟
8.3k
序 本文主要研究一下java9 gc log参数的迁移。 统一JVM及GC的Logging java9引进了一个统一的日志框架,对gc log的输出进行了统一的配置。 相关JEP(JDK Enhancement Proposal) JEP 158: Unified JVM Logging JEP 264: Platform Logging API and Service JEP 271: Unified GC Logging Xlog语法 {代码...} what 主要是配置t...

java9 module相关选项解析

2018-02-28
阅读 7 分钟
7.8k
在classpath的所有jar(不管是否模块化)共同组成一个unnamed moduleunnamed modules会声明依赖所有的named module,且exports自己的所有包,但是一个named module不能声明依赖unnamed module。如果一个package在named和unnamed模块中都有定义,则使用named中的package。 默认--illegal-access=permit,即允许unnamed modu...

java9 opens与exports的区别

2018-02-27
阅读 5 分钟
5.3k
主要用于解决deep reflection问题,open的作用是表示该模块下的所有的包在runtime都允许deep reflection(包括public及private类型)但是编译时期,仅仅允许该module中声明过exports的包可以访问,如果没有exports则该包的类在编译时期不可读

java9迁移注意事项

2018-02-26
阅读 3 分钟
5.5k
比如sun.security.x509,在java9中归到java.base模块中,但是该模块没有export该package可以通过运行的时候添加--add-exports java.base/sun.security.x509=ALL-UNNAMED来修改exports设定

[case8]使用maven构建java9 service实例

2018-02-25
阅读 8 分钟
3.5k
整个工程跟传统maven多module的工程结构一样,java9的一个module对应maven project的一个module。下面是根目录下的pom文件:

java9系列(三)模块系统精要

2018-02-24
阅读 3 分钟
4.4k
序 本文主要讲述下java9的模块系统的必知必会的知识点。 1.module及modules module module主要分如下两种: main module 包含main方法的module,通过--module或者-m指定 root module 指定模块系统解析的根模块,从根模块解析模块依赖,可以通过--add-modules mod1,mod2来指定 modules unnamed modules java9通过unnamed ...

使用openjdk9-alpine运行springboot2

2018-02-23
阅读 24 分钟
5.5k
这里使用的是alpine镜像,应为它比较小,基础镜像就几M,相比ubuntu等要小很多。由于Alpine Linux使用MUSL作为标准C库,而openjdk依赖于GNU标准C库(gclib),因此需要alpine版的jdk9才可以在alpine上运行,但是目前jdk 9还没有正式的alpine镜像,只有有一个early access的版Announcing: Early-Access builds of JDK 9 for Alpine...

reactor-netty的TcpClient如何往eventLoop提交task

2018-02-22
阅读 24 分钟
4.3k
reactor-netty-0.7.3.RELEASE-sources.jar!/reactor/ipc/netty/tcp/TcpClient.java

reactor-netty中TcpClient的newHandler过程

2018-02-21
阅读 23 分钟
4.2k
reactor-netty-0.7.3.RELEASE-sources.jar!/reactor/ipc/netty/tcp/TcpClient.java

reactor-netty中TcpClient的create过程

2018-02-20
阅读 16 分钟
4k
reactor-netty-0.7.3.RELEASE-sources.jar!/reactor/ipc/netty/tcp/TcpClient.java

reactor-netty中HttpClient对TcpClient的封装

2018-02-19
阅读 8 分钟
6.8k
reactor-netty-0.7.3.RELEASE-sources.jar!/reactor/ipc/netty/http/client/HttpClient.java

[case7]Flux OOM实例

2018-02-18
阅读 5 分钟
3.1k
reactor-core-3.1.3.RELEASE-sources.jar!/reactor/core/publisher/FluxSink.java

webclient对reactor-netty的封装

2018-02-17
阅读 5 分钟
7.3k
spring-webflux-5.0.2.RELEASE-sources.jar!/org/springframework/web/reactive/function/client/DefaultWebClientBuilder.java

FluxSink实例及解析

2018-02-16
阅读 14 分钟
7.1k
reactor-core-3.1.3.RELEASE-sources.jar!/reactor/core/publisher/FluxSink.java

FluxInterval实例及解析

2018-02-15
阅读 8 分钟
4.8k
reactor-core-3.1.3.RELEASE-sources.jar!/reactor/core/publisher/FluxInterval.java

webclient的超时时间配置

2018-02-14
阅读 24 分钟
8.2k
序 本文主要研究一下webclient的超时时间配置 SO_TIMEOUT 比如这样设置 {代码...} 这个SO_TIMEOUT只适用于OIO,对于NIO不适用 ReadTimeoutHandler {代码...} 这种方式才适用于NIO 客户端输出 {代码...} block(Duration) {代码...} 使用Mono<ClientResponse>的block(Duration)也能起到效果 输出如下 {代码...} 服务...

spring cloud gateway的stripPrefix配置

2018-02-13
阅读 2 分钟
14.9k
spring-cloud-gateway-core-2.0.0.M6-sources.jar!/org/springframework/cloud/gateway/filter/factory/RewritePathGatewayFilterFactory.java

spring 5 webflux异常处理

2018-02-12
阅读 3 分钟
8.4k
spring-webflux-5.0.2.RELEASE-sources.jar!/org/springframework/web/reactive/result/method/annotation/ControllerMethodResolver.java

[case6]使用webflux提升数据导出效率

2018-02-11
阅读 3 分钟
3.2k
这里使用ReactiveHttpOutputMessage的writeWith(Publisher<? extends DataBuffer> body)方法,实现边准备数据边导出等待十几秒就弹下载框,之后就server端一边输出,浏览器一边下载,100秒左右下载完毕

聊聊reactor extra的retry

2018-02-10
阅读 5 分钟
5.2k
利用reactor extra项目中的Retry帮助类,可以轻松指定高级重试策略,比如fixedBackoff,亦或是exponentialBackoff等

reactor3 flux的map与flatMap的区别

2018-02-09
阅读 3 分钟
15.7k
序 本文主要研究一下flux的map与flatMap的区别 map {代码...} 这里头的map是纯元素转换 输出 {代码...} flatMap {代码...} 这里的flatMap,将元素转为Mono或Flux,转换操作里头还可以进行异步操作 输出 {代码...} 小结 flatMap的转换Function要求返回一个Publisher,这个Publisher代表一个作用于元素的异步的转换操作;...

spring webflux返回application/stream+json

2018-02-08
阅读 4 分钟
7.6k
注意这里produces = MediaType.APPLICATION_STREAM_JSON_VALUE如果不是application/stream+json则调用端无法滚动得到结果,将一直阻塞等待数据流结束或超时。

spring webflux文件上传下载

2018-02-07
阅读 2 分钟
16.4k
使用RequestPart来接收,得到的是FilePartFilePart的content是Flux<DataBuffer>,可以使用DataBufferUtils写到文件或者直接使用transferTo写入到文件

聊聊hikari连接池的fixed pool design

2018-02-06
阅读 6 分钟
4.7k
hikari的作者比较倾向于fixed pool design的理念,即建议minimumIdle与maximumPoolSize设置成一样,当做固定连接大小的连接池。作者认为minimumIdle小于maximumPoolSize的话,在流量激增的时候需要额外的连接,此时在请求方法里头再去处理新建连接会造成性能损失,即会导致数据库一方面降低连接建立的速度,另一方面也会...

聊聊hikari连接池的idleTimeout及minimumIdle属性

2018-02-05
阅读 8 分钟
30.5k
默认是600000毫秒,即10分钟。如果idleTimeout+1秒>maxLifetime 且 maxLifetime>0,则会被重置为0;如果idleTimeout!=0且小于10秒,则会被重置为10秒。如果idleTimeout=0则表示空闲的连接在连接池中永远不被移除。只有当minimumIdle小于maximumPoolSize时,这个参数才生效,当空闲连接数超过minimumIdle,而且空闲...

[case5]聊聊hikari与tomcat jdbc pool的fail fast

2018-02-04
阅读 25 分钟
3.5k
从这点来看,中途数据库断开的话,hikari会不断获取数据库链接假设数据库一直没恢复,那么所以请求数据库操作的业务线程将都阻塞connectionTimeout的时间,这个会占用工作线程 hikari只有testOnBorrow功能,是直接一个while循环,在timeout时间内不断borrow连接,validate连接,validate成功才返回或者超时抛出SQLTransi...

聊聊hikari连接池的maxLifetime属性及evict操作

2018-02-03
阅读 6 分钟
22.9k
用来设置一个connection在连接池中的存活时间,默认是1800000,即30分钟。如果设置为0,表示存活时间无限大。如果不等于0且小于30秒则会被重置回30分钟。

聊聊hikari连接池的leakDetectionThreshold

2018-02-02
阅读 16 分钟
14.3k
用来设置连接被占用的超时时间,单位为毫秒,默认为0,表示禁用连接泄露检测。如果大于0且不是单元测试,则进一步判断:(leakDetectionThreshold < SECONDS.toMillis(2) or (leakDetectionThreshold > maxLifetime && maxLifetime > 0),会被重置为0 . 即如果要生效则必须>0,同时满足:不能小于2秒...

聊聊hikari连接池的validationTimeout

2018-02-01
阅读 7 分钟
19.3k
默认是5秒HikariCP/2.7.6/HikariCP-2.7.6-sources.jar!/com/zaxxer/hikari/pool/PoolBase.java