Russ Xia Blog

身处寒夜,把握星光。

Java中的SPI与双亲委派模型

什么是SPI,如何实现SPI,SPI是否是对双亲委派模型的破坏

什么是SPI机制 SPI全称是Service Provider Interface,由JDK提供接口定义,第三方实现或扩展API。 第三方在/META-INF/services下,以要实现的SPI接口为文件名,具体的实现类为文件内容,创建一个配置文件。 Java中ServiceLoader 会去加载配置文件,并加载对应的具体实现类。 如果同一个SPI接口有多个实现,可以通过Servi...

Jedis的主要设计与实现

Jedis的架构设计、链接管理、集群模式支持

Jedis的主要设计与实现 Redis地址:https://github.com/redis/redis Jedis地址: https://github.com/redis/jedis Jedis是Redis的Java客户端的一种实现,支持单机版Redis、Redis Cluster、Redis Sentinel等三种模式,以及客户端逻辑分片的ShardedJedis。 ...

RSocket协议和基本使用

RSocket协议的特点和基本使用

RSocket协议和基本使用 RSocket github地址:https://github.com/rsocket RSocket官网地址:https://rsocket.io/ RSocket中文站点:http://rsocketbyexample.info/ RSocket是一种新兴的通信协议,它是一种二进制的异步的通信协议,主要由Facebook、Netifi...

JDK从8升级到11时Netty报错

升级JDK,netty版本不兼容问题排查

使用Netty时,JDK从8升级到11 时出现报错(debug时可见,不影响运行) 在某个JDK11项目中,debug运行时提示错误信息,错误堆栈信息如下。 增加 --add-opens java.base/jdk.internal.misc=ALL-UNNAMED 和 -Dio.netty.tryReflectionSetAccessible=true 参数即可。如果要屏蔽掉警告,可以...

Java8中的并行流ParallelStream

ParallelStream概要、工作原理及其使用时需要注意的问题

Java8中的并行流ParallelStream Java8中加入了Stream流操作,极大地提高了编程效率和程序的可读性。同时它又提供了串行和并行两种模式,来适应不同的业务场景。其中并行就是我们今天要说到的ParallelStream。 ParallelStream的工作原理是什么 什么是Stream 首先回顾下什么是Stream,Stream不是集合元素,也不保存数据,它更像是一...

ORM框架对比

Java中常见的ORM框架的基本使用和特点对比

ORM框架对比 语雀同步地址 demo项目地址 前言 本文主要对比的是一下几个 ORM (严格来说,感觉更像是SQL模板引擎)框架,这几个框架,他们都不属于JPA框架,但是在实际中却使用广泛。和JPA这类的ORM框架相比,这些框架更侧重于SQL的原生能力,更为轻量,开发更为简单。 Mybatis Mybatis Plus Mybatis Dynamic SQL jOOQ...

k8s国内镜像源

k8s相关组件的安装以及配置国内镜像

kubelet kubeadm kubectl 三件套的安装非常方便,直接使用apt-get安装即可。 $ curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add - $ cat <<EOF > /etc/apt/sources.list.d/kubernetes.list ...

TCP如何保证可靠传输和流量控制

流量控制与滑动窗口以及拥塞控制

流量控制与滑动窗口 虽然发送方的发送窗口是根据接受方的接受窗口指定的,但是发送方的窗口,并不一定等于接收方的接受窗口 网络传送窗口值存在一定的时间滞后,且这个过程中发送方可能依然在用老的窗口发送数据。 发送方可能发生拥塞,此时发送方可能会适当减小自己的发送窗口 对于不按序达到的TCP报文如何处理,TCP并没有明确规定。 ...

TCP/UDP相关基础知识小结

OSI模型,TCP/UDP协议对比,常见的TCP攻击

OSI七层模型、TCP/IP四层协议、五层协议 对于通信系统的分层,通常有三种分层模型: OSI七层模型 (7层):物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。 TCP/IP四层模型(4层):网络接口层、 网际层、运输层、 应用层。 五层模型 (5层):物理层、数据链路层、网络层、运输层、 应用层。 ...

由MateSpace空间不足引发的FullGC

线上MateSpace引发的FullGC问题排查记录

问题背景 测试环境和预发环境:JDK版本均为1.8,使用的GC算法均为CMS,但是具体的JVM参数有所差异,预发的JVM配置更小(环境问题搞死人呀)。 开发一个的一个功能,普通的业务功能,只是多了文件流的处理,但是量级也不算太大,在测试环境没有任何异常。 部署到预发环境,开始比较正常,但是系统出现504,业务日志出现MQ心跳检查超时,以及MateSpace OOM的异常。检查gc...