-
zipkin介绍 Zipkin是一个分布式链路跟踪系统,可以采集时序数据来协助定位延迟等相关问题。数据可以存储在cassandra,MySQL,ES,mem中。分布式链路跟踪是个老话题,国内也有类似的框架,比如阿里的skywalkin...
-
最近业务中遇到一个场景,为促进用户邀请拉新,支持面对面邀请领红包,简单描述下,就是端内展示二维码,目标新人微信扫码授权,获取信息并引导下载,老用户获得奖励。由于是面对面的方式,对时效要求比较高。这里有两种方式,一种是客户端接口一直轮训...
-
在业务实现中,遇到一种场景,从开始传入多方的数据,经过多个不同种类环节的分析,最终得到一个分析结果。在对业务逻辑抽象后,我们实现了一种基于树形的分析结构,达到了比较理想的效果,优点主要有以下几个: 分析逻辑复用,避免了重复的代码; 结...
-
功能实现 SpringBootStarter可以将需要的功能整合起来,方便使用。这个例子是一个非常简单的Starter实现,关键在于走通流程。首先单独创建一个maven项目,命名为greeter-spring-boot-starter...
-
背景 在Java开发中,如果涉及多线程,会经常使用到线程池,本期不额外讲述线程池本身相关的东西。考虑一种场景,如果我们提交给线程池的任务都相对比较耗时,而在任务启动运行后,如果后续有需求的变更,要重新部署业务。 这时,需要关闭当前的执...
-
swagger是一个可以生成API文档的工具,同时可以进行API的在线测试调用。在项目中有使用到,感觉用起来非常方便,是一个比较好用的工具。这篇文章简单介绍下给SpringBoot项目接入swagger,能够满足基本的接口文档查询和手...
-
单例模式特性是只初始化一次,同时考虑满足懒加载的需要,以及满足多线程访问的安全性。在实际的生产使用中,比如像数据库连接,或者其他比较耗时同时需要只初始化一次的实例,都应该采用单例模式来创建。以下是两种比较特殊的单例模式,分别通过静态内...
-
一个二维数组,求给定的元素的位置,这个数组有个特性,是从左到右递增,每行首个从上到下递增,一种是从头开始遍历,另一种根据给定的特性,可以从每行最右侧的元素开始比较,如果小于给定元素,则向下一行找,如果大于给定元素,则从当前行尾元素往行...
-
背景 业务场景中有一种版本号,如1.22.13,规则是首位最大,现在需要做版本号的比较,一种方式是单独每个位置去比较的,数据保存成字符形式;还有一种方式是将版本号映射转换成整数,统一存储。由于业务的情况,对应字段一直存储的是整数,所以...
-
上台阶是一个常见的问题,解法主要有递归和利用动态规划,这篇文章简单介绍下递归解法和动态规划,以及对应的代码。递归解答这个问题相对比较好理解,如下: ##问题 现有n级台阶或者楼梯,其中n取值大于1的正整数,假定每次可以进行上1级-2级...