0%

原文地址

动态代理是 Java 语言中非常经典的一种设计模式,也是所有设计模式中最难理解的一种。本文将通过一个简单的例子模拟 JDK 动态代理实现,让你彻底明白动态代理设计模式的本质。

什么是代理

从字面意思来看,代理比较好理解,无非就是代为处理的意思。举个例子,你在上大学的时候,总是喜欢逃课。因此,你拜托你的同学帮你答到,而自己却窝在宿舍玩游戏… 你的这个同学恰好就充当了代理的作用,代替你去上课。

阅读全文 »

又一年即将结束,时间过得真的很快,快到不敢静下来细细回忆。小时候觉得二十多岁的人年纪好大,再后来觉得三十岁应该离自己很远吧,没想到自己的三十而立之年来的这么“快”,总感觉自己还很是个小孩,总感觉自己还没长大,实际已经到了上有老下有小的年纪…

19 年最开心的事儿就是当了爸爸,真心的感谢媳妇艰辛付出,感激上天给我们最好的礼物。最不幸的事是父亲得了一场大病,家人辛苦奔波不说父亲也是受尽了病痛的折磨,医院真是最不愿意去的地方。有时候天真的想,如果能让家人健健康康无病无痛,付出多少都会有人愿意吧!

阅读全文 »

Rust 中字符串和 JavaGo 中的表示有很大的区别,刚开始接触的时候有点儿懵,今天花点时间总结备忘一下。

Rust 字符串有两种形式:strStringstr 是内置的原始数据类型,通常是以借用的形式(&str 字符串 slice)使用,而 String 是标准库提供的一种结构体,内部存储一个 u8 类型的 Vec

1
2
3
pub struct String {
vec: Vec<u8>,
}
阅读全文 »

网关做灰度的时候,要控制流量的比例,比如 3:7 的分发流量到两个不同版本的服务上去。刚开始的想法是每次流量过来生成 100 以内的随机数,随机数落在那个区间就转到那个版本的服务上去,但是发现这样无法较精准的保证 3:7 的比例,因为有可能某段时间内生成的随机数大范围的落在某个区间内,比如请求了 100 次,每次生成的随机数都是大于 30 的,这样 70% 比例的服务就承受了 100% 的流量。

接下来想到了第二种解决方案,能够保证 10(基数) 倍的流量比例正好是 3:7,思路如下:

1、生成 0 - 99 的数组(集合)
2、打乱数组(集合)的顺序,为了防止出现某比例的流量集中出现
3、全局的计数器,要考虑原子性
4、从数组(集合)中取出计数器和 100 取余后位置的值
5、判断取到的值落在那个区间

阅读全文 »

天气暖和了,19 年的跑步计划已经在心中盘算好久了,本打算昨天生日的时候去开始的,结果天公不作美,一直在下小雨。

关于跑步,一开始为了减肥,现在慢慢喜欢上了这项运动。其实跑步很折磨人,总得有个目标才能坚持下来,或是为了能够在朋友圈炫耀,或是享受跑完步之后的大汗淋漓。

我会下载一个跑步软件,戴上耳机,每完成一公里就会提醒我,我也会心中默默给自己设定个目标,十公里或一个小时,每次跑步过程中我都在和自己较劲,想要放弃的时候心中总会默念,再坚持一下,已经完成了三分之二了,已经完成五分之四了……设了一个目标,总会能够达成,即使过程很艰难,但更喜欢达标后的小小满足感。

Title - Artist
0:00