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

从上往篇看到了在抽象类中进行了统一的参数校验,本篇我将增加两个实用的场景,登录用户的身份验证及无需身份验证的接口调用处理。现在新增一个获取用户身份信息的接口 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[……]

阅读全文

TCP提供了最可靠的数据传输,它给发送的每个数据包做顺序化(这看起来非常烦琐),然而,如果TCP没有这样烦琐的操作,那么,可能会造成更多的麻烦。如造成数据包的重传、顺序的颠倒甚至造成数据包的丢失。 那么,TCP具体是通过怎样的方式来保证数据的顺序化传输呢?

主机每次发送数据时,TCP就给每个数据包分配一个序列号并且在一个特定的时间内等待接收主机对分配的这个序列号进行确认,如果发送主机在一个特定时[……]

阅读全文