十一月:生活和工作你都要热爱才行

67 阅读9分钟

大家好,我是一宿君。

迟来的 11 月总结,虽迟但到。

这个月没有发生太多事,看似一切平淡,说来也一切随和。

掐指算了下时间,好家伙离过年还有不到两个月,不得不说自从当了牛马上了这个破班,这时间过的那是一个飞快,在这里允许我装一下,时间快的如白驹过隙、光阴似箭、日月如梭、转瞬即逝、弹指之间、昙花一现、风驰电掣、流光易逝等等等(用了毕生所学)。

好了,不装了步入正文。

小酌

毕业这两年里经历了很多事,也结识了很多朋友,什么是哥们,我们老家那边称作“定们儿”,意思即是铁哥们、好兄弟,我们在这里相遇相识就是源于同一个起点,很多时候一起共事一起散心,谁有烦心事了就喊来大家伙透透心,消磨消磨时光,这不月初的时候哥们东子遇到了一些不太开心的事想整点,恰逢周五,那就整呗,还能有啥事是一场酣畅淋漓过不去的坎。

小桌子一摆,小凳子一坐,小酒一开,再配点村口的猪耳朵,随时可畅饮两小时起步。

最神奇的一件事,只要这局开场,所有不开心的事能至少消除一半,这也是我们共同的一个爱好。

二锅头配雪碧,一口下去,不觉然的脸红,胜过一切的牢骚。

过程中,酒到深处,我们谈天聊地,说起了每个人自己或多或少的经历,我们虽不善言辞,但都是至真感受,应了那句话:你有故事,恰好我也有酒。

聊到最后,最让我感触最深的一个感受:我们啊没有什么大本事,可能与这个世界的强者比起来我们很弱,但是回头望下多年前的自己,其实你做的已经很好了,你在努力,你在攀爬,你在向所有人证明自己,你没有输

很显然说到这里都有些多了,三个人两瓶白的,不多不也算少,算不上小趴菜吧。

一个令人唾弃的 Bug

这个月出了一个令人唾弃的 Bug,首字母大写是我对它最后的尊重,这玩意我能记它一辈子。

因为改了一个 cookie 的 domain 引发的一些列的问题,先来看下问题场景。

以下域名以百度域名作为场景举例。

这里解释下,一般情况下每个浏览器打开系统登录,只会存在一个 token,和当前浏览器会话的生命周期保持一致。

原本响应给前端浏览器的 cookie 对象中 token 对应的 domain 是顶级域名:baidu.com

因为某些从一开始就不合理的原因(改之前并不知道),需要把这个域名改成全域名www.baidu.com

发之前也跟同组的师兄们对了下,在预发也验证了没问题,就这样发到了生产,上了生产也验证了没问题。

但是到第二天突然蹦出来一个问题,很多人不能登录了,卧槽我知道这下捅娄子了,赶紧排查了下问题,发现浏览器中同一个环境的 cookie 中存在两个 token,只是对应的 token 不同,如下所示:

请求到后端发现 token 过期了,打印日志发现同一个请求头中存在两个 token,这是啥情况???

付航 what???

并且两个 token 的 name 相同,value 和 domain 都不同,理论上改过 domain 之后应该只存在一个 domain 的 token 了,也就是应该只会存在“www.baidu.com”的 token,但是这里就会存在两个。

这个时候我就意识到不对劲,存在两个说明之前的那个 token 存在缓存,浏览器只要没关闭就会一直存在,而恰巧有很多人下班后不关电脑,省得第二天上班还要重新打开一堆界面和软件,问题这就明确了,只要不清理本地缓存,TM 的就会共存两个 token,上线后为啥没验证到这个问题,因为 TM 的 token 有一个默认过期时间,根据业务场景自定义,我们的 token 有效期大概是 12 个小时,所以第二天上班一堆人爆出了这个问题,卧真槽了。

问题定位了怎么解决是个大问题,虽然清理缓存可以解决,但是不能让每个人都手动清理一下吧(狗头保命)

不行,发现自己搞定不了,然后就找到了大哥,大哥喊了前端、后端、基础架构的大哥,四五个人一起讨论了下解决方案,发现导致这个问题的本质是最底层架构的问题,为了解决底层这个问题才引发的现在这个 cookie 问题,底层问题一直存在问题也不是很大就先不考虑了,先解决眼前的事,最后经过一番讨论,确定了一个方案。

方案: 既然同时存在两个 token 对象,前端删 cookie 操作风险太大(所有系统前端都没有操作 cookie 直接拿的浏览器 cookie 请求的后端),那就后端主动删除指定 cookie 对象,将指定域名的 cookie 对象的 value 设置为 null,maxAge 设置为 0, 这两个值相当于给浏览器一个立即删除指定 cookie 对象的指令标识。

如下所示:

Cookie token1 = new Cookie("token", "xxx");
// 顶级域名domain,eg:baidu.com
token1.setDomain("baidu.com");
token1.setPath("/");
response.addCookie(token1);

// value设置为null值,maxAge设置为0,确保浏览器立即删除当前Cookie对象
Cookie token2 = new Cookie("token", null);
// 全域名domain,eg:www.baidu.com
token2.setDomain(request.getServerName());
token2.setPath("/");
// (0立即失效)
token2.setMaxAge(0);
response.addCookie(token2);

之前的顶级域名该保留保留,我们的目的是删除全域名对应的 token,不让它们共存就行,就这样测试了一两个小时后发到了线上,第二天没有人再报这个问题,心里这块石头才算落地。

经历了这件事,总结一句话:不要轻易改历史代码,就算是像屎山一样的代码,只要能正常跑不到万不得已就不要碰它,你要相信前人这样写自然有他的道理!!!

最后还得感谢大哥帮我一起解决了这件事,抗事的还得是大哥

野餐

月底恰逢周末好天气,小伙伴们说起想野餐,那就最近的淀山湖走起呗。

开始收集装备,桌椅、餐垫、零食。

Q 哥说按这天估计得早起,然后我们就早上 8.30 出门,9.30 到场,已经到处都是人头了,你别说,上班卷就算了,这大周末大早上出个门也能卷成这样,一生乱卷的中国人。

一早到那,原本没带帐篷想着晒晒太阳吧,结果万万没想到赶上了飞虫的最后一波盛世会晤,人站在那不动十秒钟浑身沾满飞虫,太可怕了。

没办法出来玩也不能委屈自己啊,和小伙伴们一起租了一个帐篷,这里发生了一件趣事,帐篷老板原本说 150 一天,我们觉得有点贵那就开始砍价,H 哥这个时候出场了,我们原本一致喊得阿姨(目测古稀之年),H 哥上来喊了一句姐姐,卧槽一下给我们几个整不自信了,真是自愧不如。

H 哥说 100 行不,老板说不行至少得 120,我们说 120 不好听,110 吧,老板说 110 也不好听,最后取个折中吧,116 也吉利点。

价格说定后,我们选了一个靠近湖边的帐篷,角度和风景,你别说还真不错,蚊子也少了很多,来瞅下。

就这样,开始了一天的悠闲,两幅扑克,6 个老 6,H 哥还带了红酒,谁输谁喝,雅实在是雅!

伴着微风暖阳,湖面涟漪波光,偶尔望一望远处的湖面,阳光也调皮的眨下眼,我们就知道今天来对了。

喝着喝着,阳光从耀眼的金黄变成了晚霞红,我连忙掏出了手机,一起留下了这个时刻。

一天的快乐时光也总要收个尾,为的就是这个时刻。

最后再来一张在太阳即将落山的那一刻,恰好有几只飞鸟掠过,此时此刻我再次想到了那句流传千古的名句:“卧槽,好多鸟”,为了彰显咱有文化,其实是:“落霞与孤鹜齐飞,秋水共长天一色”,我觉得这一刻贯穿了古今,也让我想起了一首词:

李白的《把酒问月·故人贾淳令予问之》

青天有月来几时?我今停杯一问之。人攀明月不可得,月行却与人相随。皎如飞镜临丹阙,绿烟灭尽清辉发。但见宵从海上来,宁知晓向云间没。白兔捣药秋复春,嫦娥孤栖与谁邻?今人不见古时月,今月曾经照古人。古人今人若流水,共看明月皆如此。唯愿当歌对酒时,月光长照金樽里。

虽然不是月,但日月同根,从古至今,我们同举金樽共对日月。

好了,美好的一天也该谢幕了,收拾装备打道回府。

最后

生活中一如既往,有些事始终要抗;工作中些许迷茫,可能这就是所谓成长。

其实做自我总结的这个决定是源于二哥(沉默王二)和 why 师傅(why 技术)和闪客(原低并发编程),二哥说是写作改变了自己的命运,也让自己找到了人生的方向,why 师傅说记录抵抗遗忘,闪客说我就想写出来点东西给所有人看。

就这样我也受到了一些启发,对于写作这件事,我自认为没有这个天赋,但是我不太甘心,别人可以做到我为什么不可以?很多时候我是有想法但难以表达自己,所以只好用文字记录下来。

还是那句话:一件事啊,只有先做起来,才能知道自己适不适合,可不可以!


在这里插入图片描述

一起学编程,让生活更随和!

如果你觉得是个同道中人,欢迎关注博主gzh:【Java小浣熊】。

专注于Java基础、进阶、面试以及计算机基础知识分享🐳。偶尔认知思考、日常水文🐌。

扫码_搜索联合传播样式-标准色版.png