贫瘠之地

华北无浪漫,死海扬起帆
多少个夜晚,独自望着天

0%

在很长的一段时间,REST 都是一种且唯一一种构建 API 的 “标准”;它在某种程度上取代了 SOAP,后者是一个 “太多 XML” 的丑陋烂摊子

但是近些年新的选择出现了,2015 年,Facebook 向公众发布了 GraphQL,2016 年谷歌紧随其后发布了 gRPC

在本文中,我们将关注仍然被广泛使用的后者,并将其与 REST 进行比较

概述

下表将概述所讨论的要点,并显示 REST 和 gRPC 的亮点

阅读全文 »

基本使用

在项目中我们可以通过 ThreadLocal 来存储用户信息

其中一般会在过滤器/拦截器的入口处初始化用户信息,并在执行结束后对其进行清理

这样从请求进来一直到返回,我们只需要通过线程变量 ThreadLocal 获取用户信息即可,而不用每次都从数据库查出来

因为 ThreadLocal 是线程安全的,所以通常声明为一个静态单例变量

阅读全文 »

介绍

什么是泛型

泛型,即参数化类型

一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在调用时传入具体的类型(类型实参)

为什么要引入泛型

阅读全文 »

背景

状态模式基于有限状态机(FSM finite state machine)的概念,主要思想是程序在任意时刻一定处于 N 种有限数量的状态中,并且在特定状态中执行特定状态的操作并可以流转至下一状态(也可不变)

这些数量有限且预先定义的状态切换规则被称为 状态流转

目的 将状态以及状态行为等属性和业务对象解耦,是一种基于组合模式进行逻辑委托的行为模式

现实世界类比 地铁电动闸门会根据当前状态和用户行为进行不同的操作并且流转为下一状态:

阅读全文 »

背景

突然发现 Hexo 中的有些文章突然打不开了

表现是点击无反应,无论是点击 “阅读原文” 还是在归档等页面中点击文章标题都无法正常打开

查看控制台发现对页面的请求 404 了

排查

阅读全文 »

自动装配

基于 SpringBoot 的实现方式自然使用到了 starter 机制,核心代码在 liteflow-spring-boot-starter 包下

首先来看 spring.factories 文件

1
2
3
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.yomahub.liteflow.springboot.config.LiteflowPropertyAutoConfiguration,\
com.yomahub.liteflow.springboot.config.LiteflowMainAutoConfiguration

可以看到一共有两个重要的自动装配的配置类:

阅读全文 »