Yanick's Blog

Be Better & Have Fun

刚好有一个朋友,如果用十个词形容自己的现状,我想了想还是写下来,也算是水一篇博客。

1. 碌碌无为/遥遥无期

对于我来说,这一年大概是我觉得最为碌碌无为的一年了,回想起来,不仅仅什么事情都没有做,还搞砸了一堆事情,计划的马拉松,读书计划,减肥计划大概这个计划可以再陪伴一年了,老朋友明年见。

阅读全文 »

笔者在最近的2年内,一直从事微服务咨询工作,帮助两位数的企业改造项目至微服务架构,然而这一切并非如想象中的一帆风顺,写下此篇也意在反思微服务的一些伤痛。

阅读全文 »

我认为编程上有几种类型的问题

  1. 第一种是本源性的问题,比如 算法 ,明确性问题,有专业的科研从业者。
  2. 第二种是现实生活中的,输入的条件是不稳定的,外部因素也一直在变化。
  3. 第三类是技能无关的技能,比如团队的调节,团队目标的确定等。
阅读全文 »

笔者在 2017.12 - 至今(2018.8)都沉浸在 微服务治理平台网关 这个组件的构造之上,恰逢系统更新到 1.2 著此作为反思。

此处的网关指的是七层的 API 网关

banner

阅读全文 »

Kotlin的泛型

密封类

密封类用来表示受限的类继承结构:当一个值为有限集中的类型、而不能有任何其他类型时。

1
2
3
4
sealed class Expr
data class Const(val number: Double) : Expr()
data class Sum(val e1: Expr, val e2: Expr) : Expr()
object NotANumber : Expr()

密封类的好处在于 when 语句

1
2
3
4
5
6
fun eval(expr: Expr): Double = when(expr) {
is Const -> expr.number
is Sum -> eval(expr.e1) + eval(expr.e2)
NotANumber -> Double.NaN
// 不再需要 `else` 子句,因为我们已经覆盖了所有的情况
}

嵌套类和内部类

嵌套类

1
2
3
4
5
6
7
8
class Outer {
private val bar: Int = 1
class Nested {
fun foo() = 2
}
}

val demo = Outer.Nested().foo() // == 2

内部类

1
2
3
4
5
6
7
8
lass Outer {
private val bar: Int = 1
inner class Inner {
fun foo() = bar
}
}

val demo = Outer().Inner().foo() // == 1
0%