KL个人博客 首页>>2021-03

java管道流 PipedInputStream & PipedOutputStream 的应用

前言 PipedInputStream 和 PipedOutputStream 设计用来解决跨线程的字节数据传输。它们总是成对出现的,而在使用上,也只能 工作在两个不同的线程上,在一个线程里使用管道输入和输出流可能会造成死锁。网上有很多介绍这两个存在于 io 包下的 api。却几乎 找不到一个写 PipedInputStream 的使用场景的,所以本文结合实际业务,来聊一聊 PipedInputStream 的应用。 原理简介 我们知道,输出流写数...

阅读全文 »

apollo 在 spring-boot 中的加载过程解析

apollo 在 spring-boot 中的加载过程解析

前言 apollo 是一个开源的配置中心项目,功能很强大,apollo 本身的配置项并不复杂,但是因为配置的路径特别多,非常容易搞混了, 所以本文试图聚焦 spring-boot 的场景,在 spring-boot 微服务场景下,搞清楚 apollo-client 的加载过程 集成使用 1、添加 gradle 依赖 implementation \"com.ctrip.framework.apollo:apollo-client:1.6.0\" 2、配置 application.properties apollo 自身的配置共包含 9 项,必要配置只有 3 项,其...

阅读全文 »

ratelimiter-spring-boot-starter 开箱即用的限流器

ratelimiter-spring-boot-starter 基于 redis 的偏业务应用的分布式限流组件,使得项目拥有分布式限流能力变得很简单。限流的场景有很多,常说的限流一般指网关限流,控制好洪峰流量,以免打垮后方应用。这里突出偏业务应用的分布式限流的原因,是因为区别于网关限流,业务侧限流可以轻松根据业务性质做到细粒度的流量控制。比如如下场景, 案例一: 有一个公开的 openApi 接口, openApi...

阅读全文 »

grpc-java k8s下的负载均衡

grpc-java k8s下的负载均衡

前言 grpc 因为是长连接的,所以负载均衡处理起来没有 rest 接口那么容易。常见的 grpc 负载均衡方法分为两类,一类是客户端侧实现负载逻辑,一类是代理侧实现负载逻辑,对客户端侧是透明的。在容器化的网络环境里, grpc-java 客户端侧的负载均衡有两种常见的实现路径。1、基于 dns 实现,2、基于外部的服务注册中心实现( ZooKeeper/Etcd/Consul/Eureka )。本文旨在,在容器化的网络环境下...

阅读全文 »

汉字转拼音项目pinyin-plus开源

pinyin-plus 汉字转拼音的库,有如下特点 拼音数据基于 cc-cedict 、 kaifangcidian 开源词库 基于拼音词库的数据初始化分词引擎进行分词,准确度高,解决多音字的问题 支持繁体字 支持自定义词库,词库格式同 cc-cedict 字典格式 api 简单,分为普通模式、索引模式 项目地址: https://github.com/TapTap/pinyin-plus 使用场景 汉字转拼音,常用于索引引擎场景创建拼音的索引,这个场景的问题一般由两...

阅读全文 »