码猿技术专栏

微信公众号:码猿技术专栏

大家好,我是不才陈某~

在开发过程中经常会使用if...else...进行判断抛出异常、分支处理等操作。这些if...else...充斥在代码中严重影响了代码代码的美观,这时我们可以利用Java 8的Function接口来消灭if...else...

1
2
3
4
5
6
7
8
9
if (...){
throw new RuntimeException("出现异常了");
}

if (...){
doSomething();
} else {
doOther();
}
阅读全文 »

大家好,我是不才陈某~

陈某从整理到写《Spring Cloud 进阶》这个专栏已经长达四个月了,虽说时间不是很长,但是确实是几乎耗费了全部的周末时间,每篇文章都要花费至少一天以上时间。往期文章如下:

总计10篇文章,7万+ 字,介绍了Spring Cloud 当下比较主流的几种组件,当然这是基础部分,实战源码部分后续会陆续更新出来。

Spring Cloud 进阶 1.0

阅读全文 »

大家好,我是不才陈某~

前言

什么样的代码是好代码呢?好的代码应该命名规范、可读性强、扩展性强、健壮性……而不好的代码又有哪些典型特征呢?这25种代码坏味道大家要注意啦

1. Duplicated Code (重复代码)

重复代码就是不同地点,有着相同的程序结构。一般是因为需求迭代比较快,开发小伙伴担心影响已有功能,就复制粘贴造成的。重复代码很难维护的,如果你要修改其中一段的代码逻辑,就需要修改多次,很可能出现遗漏的情况。

如何优化重复代码呢?分三种情况讨论:

  1. 同一个类的两个函数含有相同的表达式
1
2
3
4
5
6
7
8
9
10
11
12
class A {
public void method1() {
doSomething1
doSomething2
doSomething3
}
public void method2() {
doSomething1
doSomething2
doSomething4
}
}
阅读全文 »

大家好,我是不才陈某~

出现故障时,我们经常需要获取一次请求流程里的所有日志进行定位

如果请求只在一个线程里处理,则我们可以通过线程ID来过滤日志,但如果请求包含异步线程的处理,那么光靠线程ID就显得捉襟见肘了。

华为IoT平台,提供了接收设备上报数据的能力, 当数据到达平台后,平台会进行一些复杂的业务逻辑处理,如数据存储,规则引擎,数据推送,命令下发等等。由于这个逻辑之间没有强耦合的关系,所以通常是异步处理。如何将一次数据上报请求中包含的所有业务日志快速过滤出来,就是本文要介绍的。

阅读全文 »

大家好,我是不才陈某~

我们都知道,消息从生产端到消费端消费要经过3个步骤:

  1. 生产端发送消息到RabbitMQ;
  2. RabbitMQ发送消息到消费端;
  3. 消费端消费这条消息;

这3个步骤中的每一步都有可能导致消息丢失,消息丢失不可怕,可怕的是丢失了我们还不知道,所以要有一些措施来保证系统的可靠性。

这里的可靠并不是一定就100%不丢失了,磁盘损坏,机房爆炸等等都能导致数据丢失,当然这种都是极小概率发生,能做到99.999999%消息不丢失,就是可靠的了。下面来具体分析一下问题以及解决方案。

阅读全文 »

大家好,我是不才陈某~

这是《Spring Cloud 进阶》第十篇文章,往期文章如下:

本篇文章介绍链路追踪的另外一种解决方案Skywalking,文章目录如下:

阅读全文 »

大家好,我是不才陈某~

这是《Spring Cloud 进阶》第九篇文章,往期文章如下:

今天这篇文章陈某介绍一下链路追踪相关的知识,以Spring Cloud Sleuthzipkin这两个组件为主,后续文章介绍另外一种。

文章的目录如下:

阅读全文 »

大家好,我是不才陈某~

这是《Spring Cloud 进阶》篇文章,往期文章如下:

前一篇文章介绍了Spring Cloud Gateway的一些基础知识点,今天陈某就来唠一唠网关层面如何做限流?

文章目录如下:

阅读全文 »

大家好,我是不才陈某~

最近有很多小伙伴私信我催更 《Spring Cloud 进阶》,陈某也总结了一下,最终原因就是陈某之前力求一篇文章将一个组件重要知识点讲透,这样导致了文章篇幅很长,写的时间很长,小伙伴看的也累。

因此陈某决定后续的文章将每个组件拆分成不同的部分,每篇文章介绍一两个知识点,这样既能提高出文效率,小伙伴们也能更上进度及时的学习。

这是《Spring Cloud 进阶》篇文章,往期文章如下:

这篇文章介绍下微服务中的一个重要角色:网关,对于网关如何选择,由于阿里系暂时未出网关,当然是选择了Spring cloud Gateway,毕竟是亲儿子。

文章目录如下:

阅读全文 »