自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小大虽差,各任其性,苟当其分,逍遥一也。

  • 博客(12)
  • 收藏
  • 关注

原创 更好的 java 重试框架 sisyphus 的 3 种使用方式

回顾我们前面学习了更好的 java 重试框架 sisyphus 入门简介更好的 java 重试框架 sisyphus 配置的 2 种方式介绍更好的 java 重试框架 sisyphus 背后的故事java 重试框架 sisyphus 开源地址这一节让我们一起学习下 sisyphus 的 3 种使用方式。sisyphus 代理模板目的为了便于用户更加方便地使用注解,同时又不依赖 spring。提供基于代码模式+字节码增强实现的方式。使用案例maven 引入引入注解相关模块。&l

2021-10-23 11:28:47 262

原创 更好的 java 重试框架 sisyphus 配置的 2 种方式介绍

回顾我们前面学习了更好的 java 重试框架 sisyphus 入门简介更好的 java 重试框架 sisyphus 背后的故事这一节让我们一起学习下 sisyphus 基于函数式的配置和注解式的配置。函数式配置概览为了满足更加方便的配置,Retryer 类提供了许多可以配置的信息。默认配置/** * 默认配置测试 */public void defaultConfigTest() { Retryer.<String>newInstance()

2021-10-21 20:33:41 176

原创 更好的 java 重试框架 sisyphus 入门简介

What is Sisyphussisyphus 综合了 spring-retry 和 gauva-retrying 的优势,使用起来也非常灵活。为什么选择这个名字我觉得重试做的事情和西西弗斯很相似。一遍遍的重复,可能徒劳无功,但是乐此不疲。人一定要想象西西弗斯的快乐。——加缪其他原因以前看了 java retry 的相关框架,虽然觉得其中有很多不足之处。但是没有任何重复造轮子的冲动,觉得是徒劳无功的。当然这段时间也看了 Netty 的接口设计,和 Hibernate-Validator

2021-10-20 21:41:18 316 1

原创 更好的 java 重试框架 sisyphus 背后的故事

sisyphus 综合了 spring-retry 和 gauva-retrying 的优势,使用起来也非常灵活。今天,让我们一起看一下西西弗斯背后的故事。情景导入简单的需求产品经理:实现一个按条件,查询用户信息的服务。小明:好的。没问题。代码UserService.javapublic interface UserService { /** * 根据条件查询用户信息 * @param condition 条件 * @return User 信息

2021-10-19 21:26:40 211

原创 java 文档自动生成的神器 idoc

写文档作为一名开发者,每个人都要写代码。工作中,几乎每一位开发者都要写文档。因为工作是人和人的协作,产品要写需求文档,开发要写详细设计文档,接口文档。可是,作为一个懒人,平时最讨厌的一件事情就是写文档。写文档最令我不爽的地方是在于代码备注要改一遍,然后文档再改一遍。所有重复的劳作,都是对于我们宝贵摸鱼时间的最大浪费。于是,我就常常想,能不能只写一遍呢?i-doc 项目简介idoc 为 java 项目生成项目文档。基于原生的 java 注释,尽可能的生成简介的文档。用户可以自定义自己的模

2021-10-14 23:06:56 1907

原创 java 从零开始手写 RPC (07)-timeout 超时处理

《过时不候》最漫长的莫过于等待我们不可能永远等一个人就像请求永远等待响应超时处理java 从零开始手写 RPC (01) 基于 socket 实现java 从零开始手写 RPC (02)-netty4 实现客户端和服务端java 从零开始手写 RPC (03) 如何实现客户端调用服务端?java 从零开始手写 RPC (04) 序列化java 从零开始手写 RPC (05) 基于反射的通用化实现必要性前面我们实现了通用的 rpc,但是存在一个问题,同步获取响应的时候没有超时处理。

2021-10-13 19:52:17 904

原创 java 从零开始手写 RPC (06) reflect 反射实现通用调用之客户端

通用调用java 从零开始手写 RPC (01) 基于 socket 实现java 从零开始手写 RPC (02)-netty4 实现客户端和服务端java 从零开始手写 RPC (03) 如何实现客户端调用服务端?java 从零开始手写 RPC (04) -序列化上一篇我们介绍了,如何实现基于反射的通用服务端。这一节我们来一起学习下如何实现通用客户端。因为内容较多,所以拆分为 2 个部分。基本思路所有的方法调用,基于反射进行相关处理实现。核心类为了便于拓展,我们把核心类调整如下:p

2021-10-11 19:19:12 165

原创 java 从零开始手写 RPC (05) reflect 反射实现通用调用之服务端

通用调用java 从零开始手写 RPC (01) 基于 socket 实现java 从零开始手写 RPC (02)-netty4 实现客户端和服务端java 从零开始手写 RPC (03) 如何实现客户端调用服务端?java 从零开始手写 RPC (04) -序列化前面我们的例子是一个固定的出参和入参,固定的方法实现。本节将实现通用的调用,让框架具有更广泛的实用性。基本思路所有的方法调用,基于反射进行相关处理实现。服务端核心类RpcServer调整如下:serverBootst

2021-10-11 19:17:19 222

原创 java 从零开始手写 RPC (04) -序列化

序列化java 从零开始手写 RPC (01) 基于 socket 实现java 从零开始手写 RPC (02)-netty4 实现客户端和服务端java 从零开始手写 RPC (03) 如何实现客户端调用服务端?前面几节我们实现了最基础的客户端调用服务端,这一节来学习一下通讯中的对象序列化。为什么需要序列化netty 底层都是基于 ByteBuf 进行通讯的。前面我们通过编码器/解码器专门为计算的入参/出参进行处理,这样方便我们直接使用 pojo。但是有一个问题,如果想把我们的项目抽象为

2021-10-10 11:30:50 149

原创 java 从零开始手写 RPC (03) 如何实现客户端调用服务端?

说明java 从零开始手写 RPC (01) 基于 socket 实现java 从零开始手写 RPC (02)-netty4 实现客户端和服务端写完了客户端和服务端,那么如何实现客户端和服务端的调用呢?下面就让我们一起来看一下。接口定义计算方法package com.github.houbb.rpc.common.service;import com.github.houbb.rpc.common.model.CalculateRequest;import com.github.hou

2021-10-09 12:32:25 432

原创 java 从零开始手写 RPC (02)-netty4 实现客户端和服务端

说明上一篇代码基于 socket 的实现非常简单,但是对于实际生产,一般使用 netty。至于 netty 的优点可以参考:为什么选择 netty?http://houbb.github.io/2019/05/10/netty-definitive-gudie-04-why-netty代码实现maven 引入<dependency> <groupId>io.netty</groupId> <artifactId>netty-

2021-10-09 00:11:13 250

原创 java 从零开始手写 RPC (01) 基于 websocket 实现

RPC解决的问题正如上一讲所说,RPC 主要是为了解决的两个问题:解决分布式系统中,服务之间的调用问题。远程调用时,要能够像本地调用一样方便,让调用者感知不到远程调用的逻辑。完整流程其中左边的Client,对应的就是前面的Service A,而右边的Server,对应的则是Service B。下面一步一步详细解释一下。Service A的应用层代码中,调用了Calculator的一个实现类的add方法,希望执行一个加法运算;这个Calculator实现类,内部并不是直

2021-10-08 23:23:21 342

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除