服务端接口设计模式(一)
服务端接口设计模式(二)
服务端接口设计模式(三)
服务端接口设计模式(四)

1、目前抽象类AbstractBusiService中只是做了参数校验这一项,功能比较单一,可以再多加一些实用功能,比如打印业务接口的执行耗时,可以在doHandle方法添加起始时间,执行结束时间,这样就统计出了执行耗时。代码比较简单,我就不加了。

2、可以在的印象类中加几个空方法,比如be[……]

阅读全文

服务端接口设计模式(一)
服务端接口设计模式(二)
服务端接口设计模式(三)
服务端接口设计模式(四)

从上往篇看到了在抽象类中进行了统一的参数校验,本篇我将增加两个实用的场景,登录用户的身份验证及无需身份验证的接口调用处理。现在新增一个获取用户身份信息的接口 QueryProfile,接下来看实现方式。
1、新增QueryProfileImpl 类,代码比较简单,如下:

@Component[......]

阅读全文

服务端接口设计模式(一)
服务端接口设计模式(二)
服务端接口设计模式(三)
服务端接口设计模式(四)

上一篇中讲解了服务的入口实现,本版将讲解本设计中一个最重要的类AbstractBusiService,它是一个抽象类,但扮演着重要的角色。
1、AbstractBusiService代码如下:

public abstract class AbstractBusiService<T, R[......]

阅读全文

服务端接口设计模式(一)
服务端接口设计模式(二)
服务端接口设计模式(三)
服务端接口设计模式(四)

1、常见的服务端接口设计模式是采用restful形式对外提供服务,我以用户登录、获取个人信息等接口作为示例,这里只展示主要的示例代码:

@RequestMapping("/user")
@RestController
public class UserController {

    @A[......]

阅读全文

今天在看一个第三方框架源码的时候,看这StringJoiner这个类,以前在拼接字符串的时候一直使用的StringBuilder,所以特别感兴趣,这里的场景是这样用的,当然这个代码是我自己写的,模拟的用法:

String[] strArr = new String[]{"str1","str2","str3","str4","str5"};
StringJoiner joiner = new S[......]

阅读全文

在一此场景下,如果需要动态的将某个类注册spring容器中,利用BeanDefinitionBuilder就可以达到这个目的。做个简单的demo实验,定义一个类Person:

@Setter
@Getter
public class Person {

    private String name;

    private String age;
}

手动注册bean的示例类Person[......]

阅读全文

并发之Striped64(累加器)

Striped64是在java8中添加用来支持累加器的并发组件,它可以在并发环境下使用来做某种计数,Striped64的设计思路是在竞争激烈的时候尽量分散竞争,在实现上,Striped64维护了一个base Count和一个Cell数组,计数线程会首先试图更新base变量,如果成功则退出计数,否则会认为当前竞争是很激烈的,那么就会通过Cell数组来分散计数,S[……]

阅读全文

分布式事务的实现主要有以下 5 种方案:

  • XA 方案
  • TCC 方案
  • 本地消息表
  • 可靠消息最终一致性方案
  • 最大努力通知方案

两阶段提交方案/XA方案

所谓的 XA 方案,即:两阶段提交,有一个事务管理器的概念,负责协调多个数据库(资源管理器)的事务,事务管理器先问问各个数据库你准备好了吗?如果每个数据库都回复 ok,那么就正式提交事务,在各个数据库上执行操作;如果任何其中一个数据库回答不[……]

阅读全文

分支管理

master 分支

master 为主分支,也是用于部署生产环境的分支,确保master分支稳定性
master 分支一般由develop以及hotfix分支合并,任何时间都不能直接修改代码

develop 分支

develop 为开发分支,始终保持最新完成以及bug修复后的代码
一般开发的新功能时,feature分支都是基于develop分支下创建的

feature 分支

[……]

阅读全文

一、先了解一下对象头是什么

HotSpot虚拟机的对象头(Object Header)包括两部分信息,第一部分用于存储对象自身的运行时数据, 如哈希码(HashCode)、GC分代年龄、锁状态标志、线程持有的锁、偏向线程ID、偏向时间戳等等,这部分数据的长度在32位和64位的虚拟机中分别为32个和64个Bits,官方称它为“Mark Word”。本实例是基于jdk8,已经默认开启指针压缩。

M[……]

阅读全文