羊羽'Blog

如何高效编排Dubbo异步请求

概述 在复杂的业务场景下,在处理一个请求时,可能会衍生出大量的向下游的请求。 如上图,处理一个上游请求时,会向下游发散请求10次,将10个下游接口返回的数据进行处理、归并后,完成自身业务逻辑处理并返回上游。 如果是串行的向下游发起10个请求,那整个请求处理的耗时将起码是10个下游响应RT之和,这样整个请求处理的性能会很差,无法满足C端链路上的SLA。 为此,开发同学一般会通过异步、并...

Mac开发提效之巧用make命令

概述 日常开发、测试工作中,大家一定会各个场景遇到一些流程繁琐但固定的动作,比如jar包发布、依赖检查等。 如果大家熟悉一门用起来糙快猛的脚本语言,那上述的很多流程其实都可以用命令脚本固定下来,比如shell、python等。 MacBook给了大家一个*unix开发环境,预装了简单易用、兼容性强的shell脚本引擎。 所以一般情况下都可以使用shell语句解决,大家比较常见的使用方式是写过...

浅析转义字符

TL;DR 转义字符不是天然存在的,它的实现需要各个应用程序自行实现字符串转义解释器来进行解释、替换。 概述 转义字符(Escape Character)是指在ASCII码和Unicode等字符集中的无法被键盘录入的字符、被当作特殊用途而需要转换回它原来的意义的字符。而转义字符的转义是指字符已经被转换了意义。 一直到前段时间我都认为转义字符是公共的、统一的、规范的约定,然而当我深入的...

Java正则表达式要点和案例

概述 正则表达式是文本处理的一大利器。在文本的校验、查找、替换三个场景下有巨大的代码提效效果,本文主要介绍JDK中java.util.regex包提供的对正则表达式的支持。 java.util.regex有三个核心类: Pattern类:Pattern是一个正则表达式的编译表示。 Pattern类是一个比较重的类,它的初始化伴随着正则解析。它是线程安全的,使用过程中注意单例、重用...

从Push Flag角度改善TCP的延时 [译]

当通过TCP进行通讯时,TCP协议会尝试通过将数据分块传输来优化性能。在进行文件和其他大数据传输时,这种方式的优化效果很好。 TCP实现这种优化的基础是TCP报文头里的Push Flag(PSH位)。 TCP报文头 发送端用PSH位来标记当前报文为一个数据块的结尾(例如:应用层协议头或应用层协议体被发送完时)。这个标记用来告知接受端的TCP协议层:立即将受到的数据通知给上层等待数据的应...

Zookeeper从入门到删库跑路

导语 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等。Zookeeper是hadoop的一个子项目,其发展历程无需赘述。在分布式应用中,由于工程师不能很好地使用锁机制,以及基于消息的协调机制不适合在某些应用中使用,因此需要有一种可靠的、可扩展的、分布式的、可配置的协调机制来统一系统...

发布Jar包到maven中央仓库

什么是maven中央仓库 maven是java世界最流行的构建工具,构建内容囊括了一个java项目的整个生命周期。 其中最重要的功能就是依赖管理,maven通过一个类似云的ftp站点统一管理所有java 的jar文件,同时给每个文件的每个版本一个统一的唯一坐标。 开发人员通过检索配置这些坐标,选择自己需要的构件搭建自己的项目环境。因此,通过一个叫做pom的描述文件,我们就可以在任何平台搭建...