2023年12月

前言

今年是第三年在博客园上面写年终总结了,凡事只要开了个头,就总会想要坚持做下去,挺好的。
今年依旧是比较平稳的一年,工作和生活都没有发生太大变动。
上半年工作比较清闲,也报名学习了一些感兴趣的课程,这就是2021年时所说的“以前想做但是没时间、没精力去做的事情”。
今年用flomo写了很多日常生活中的一些感悟与思考,今天就好好整合一下,写篇博客记录下。

关于工作

今年工作上没有什么变动,还是在原来的公司上班,大环境如此,不再像以前一样可以随意换份更高薪的工作了。
上半年工作比较轻松,加上公司离家也比较近,可以算是最舒服的上班生活了。每天走路十分钟上班,到点后准时下班回家做饭吃,然后健身、学习、到点就睡觉,小日子过得很惬意。
上半年公司这边没什么项目,就支援总部那边的项目,也是头一次在这边以负责人的身份去主导一个项目。
从编程方面来讲,在开发这个项目的时候,我第一次使用ChatGPT来帮忙写一些工具类,效果特别好。
问题背景:
当时遇到了一个虽不复杂、但比较繁琐的业务功能,需要将指标数据按照特定的计算规则进行计算转换,然后提供给算法端用于算法试算。
我的解决思路:
在明确需求后,我将这个功能的实现逻辑用文字详细描述了出来,拆分为五大步骤来完成,大致思路如下:
1、编写一个工具方法(
使用ChatGPT
):根据用户输入的日期范围,获取这段日期范围内的所有日期,并将这些日期添加到一个map中,并将map中的数据按照日期进行排序。
2、根据用户输入的日期范围,获取指标数据。
3、以日期为key,把对应日期的指标数据往步骤1中生成的map数据中进行填充。
4、编写一个工具方法(
使用ChatGPT
):将步骤2中处理过后的map数据,按指定周期进行划分,将没有填充到数据的日期按照指标更新频率进行计算取值。
5、将上述准备好的数据作为入参,调用算法接口进行算法试算。
我写代码有一个习惯:
针对较为复杂或繁琐的功能,在写代码之前,我通常会将代码的实现逻辑用文字描述出来,当整个逻辑描述得足够清晰的时候,再动手写代码。
在这次开发过程中,也正是多亏了这个好习惯,我才得以将一个复杂问题逐步简化,减少了实现难度。
同时,针对第一步和第四步的两个工具方法,我将功能实现逻辑描述为ChatGPT能够理解的层次,使其能够帮我编写出这两个工具方法,帮我节约了大量时间。
最终,化繁为简的思路+借助AI工具,帮助我将原计划需要五天时间才能完成的工作量给压缩成为两天,并且这个模块在上线之后都没有测试出bug来。
这是我第一次借用AI工具的力量来帮助完成自己的工作,而且体验非常好,现在工作当中遇到问题,首先都会想到问一下ChatGPT。
从管理方面来讲,我负责的项目模块也比较简单,我自己是后端+负责人,然后还有一个前端、一个算法。
因此也并不需要进行多少管理性质的工作,把任务拆分好,分配给到各个同事,然后及时跟踪一下进度就好了。
我做得比较突出的一点,大概是在检查工作质量以及汇报相关问题时吧。每次完成工作之后,我都会仔细检查一下各个功能模块有没问题,在演示前,我会确认一下演示环境有没问题。在验收前,我会汇总一下项目当前的整体情况以及可能存在的问题点,然后发给项目经理,让他心里有个数。
后面在跟那位项目经理的一次聊天过程中,他也表示我负责的这个项目模块完成的质量非常高,客户很满意。
虽然是个比较简单的项目,不过能做到让客户比较满意,也是很棒的一件事。
下半年,从8月份开始,公司这边又开始折腾产品了,可惜没有明确的方向,做出来的东西总是不尽人意。
到现在,我心态已经不太一样了,那些都不是我能改变的事情,不必徒增烦恼,做好自己力所能及之事即可。

关于职业规划

今年第二个比较大的课题就是自己的职业规划了,在2021年的文章当中,我曾提到自己一直很希望能成为一名“架构师”,不过这两年的经历,已经让我觉得自己离这个目标似乎越来越远了。
一方面,是觉得自己对于技术还没有热衷到那种程度。另一方面,则是所处的工作环境并不需要那样的角色,也缺乏锻炼。纯粹靠自己自学的话,似乎自己也没有那么强烈的动力。
今年上半年,工作比较清闲的时候,突然觉得,继续在这个问题上死磕也不会有什么结果,不如趁着这个机会,去学点自己感兴趣的东西吧。
于是就报考了中科院心理研究所的一个心理咨询师的基础培训课程,学了几个月的心理学,拿到了一个入门级别的证书。
那段时间,过得挺开心的,每天上班前还有下班后都在家学习心理学相关的知识,参加线下课的时候,也敢于表达自己的想法和观点,体验一下这种学习生活也挺好的。
拿完证书以后,工作也开始忙碌起来了,并且公司的经营情况越来越糟糕,我也越来越焦虑。
一焦虑就容易胡思乱想,那段时间,我甚至想过要不要将心理咨询作为副业去发展,等有了稳定的副业收入了,就不用那么在意工作中的事情了。
思考了许久,也和一些朋友和老师进行了交流,最终从 特长、兴趣和经济效益 这三点进行考虑,得出结论:
1、心理咨询,不属于我的特长,仅仅是感兴趣而已。要在这个行业有所成就,需要投入的时间很长,可能是以十年为单位的,也没有绝对的把握能够快速变现,经济效益不好。可以把这个作为兴趣爱好,有时间就学习一些相关知识,周末有空可以去参加一些公益活动,充实一下精神生活,但不要作为职业规划的一部分。从事这个行业所需要投入的成本,不是现阶段的我可以承担得起的。
2、
我的特长在于钻研和解决问题,从特长的角度来看,我比较适合钻研技术领域。以我的性格特点,也还是挺适合从事编程开发工作的。我只是不喜欢刷题和背题而已,但我还是挺喜欢写代码解决问题的。对于编程,我其实也可以算得上是蛮感兴趣的吧,毕竟我还是挺享受钻研问题、解决问题的那种快乐的。从经济效益的角度来看,以我目前所承担的工作职责(不算特别重)以及相应的收入来计算,经济效益也还算是挺不错的。
所以,还是继续走原来的道路,一方面,夯实基础、多实践,另一方面,多考一些证书,多做一些能提升自己能力以及认知水平的事情。
相比起深耕自己熟悉的领域,重开赛道的难度无疑是要大上许多的。
转型,也需要选择适当的时机,并且需要在具备宽裕的经济条件下进行。
一般情况下,还是坚持做自己擅长的事情就好了。
很多时候,我的路线可能并没有多大问题,只不过没有一个比较松弛的心态,因此不管做什么都急于求成,忽略了许多乐趣。
自从意识到这一点,并且能够学会放慢节奏之后,我的学习状态和生活状态确实好上许多了。
今年是大学毕业的第五年,可以作为一个新的工作起点,多给自己一两年的时间沉淀一下,且看来日。

关于自我认知

我觉得我是一个比较好的防守者
,也挺会收拾烂摊子的。
你让我去开疆拓土、去找仗来打,这个我不擅长。
但你要是已经有目标了,需要把任务分配给人做,那么交给我来办,一般都没啥问题。
工作这几年来,但凡是领导明确安排给我的任务,我一般都能处理得很好。
另外,我不管在哪一个团队工作,都身兼多职,像是一条边缘的纽带。
前端开发遇到涉及到后端的问题,会找我帮忙处理。
后端开发不知道该怎么处理的、涉及到前端的问题,会找我帮忙处理。
前后端开发在部署项目过程中不知该怎么处理的、涉及到项目部署运维的问题,会找我帮忙处理。
直属领导、其他组的领导遇到一些不清楚原因在哪里、该找谁排查的问题,会找我帮忙处理。
有时项目需要写一些操作说明文档、对接说明文档或者某些解决方案文档时,大家也会第一时间想到找我帮忙处理。
我所做的事情,就是其他人都看不到、做不到的那部分事情。
因此,我觉得用“
边缘的纽带
”来作为我的定位,再合适不过了。
以上两点,算是我今年认知体系中比较重要的两点更新,知道自己擅长做什么,知道自己的定位是什么,非常重要。
当然,没准以后会有新的认知,没准以后会觉得现在的认知十分幼稚,但那样也很好,说明那个时候的我,又比现在的我进步了许多,哈哈哈哈。

关于习惯

前段时间听的一期播客,提到了一个概念:
Cue Routine Reward
,指的是形成习惯的三要素。Cue就是暗示,Reward就是完成一个事情之后所获得的奖赏,二者之间的Routine就是指相应的习惯行为(我个人理解为从Cue通往Reward之间的路径)。
恰好自己曾有过一个想法,可以跟这个概念结合起来一起分析:
之前跟朋友交流时曾提到,我觉得自己总是带着做学术研究的思路去学习很多东西,因为内心一直很渴望像那些家境良好的世家子弟一样,可以边做学问边享受生活,不需要考虑实质性的回报,比较纯粹吧。可是我没有那样的家庭条件,我目前也不具备那个实力去支撑起那样的生活方式,因而实在不应该采用这样的学习方式,应当以实用为主。
结合 Cue Routine Reward 来分析,可能我的学习方法本身并没有问题,系统地学习某个领域的知识,或者说 长期主义 并没有错,但我没有给自己找到合适的实践路径,没有配置相应的奖赏机制,因此才难以产生良性循环。
暗示->执行惯性行为->获得奖励,形成这样的闭环,才容易对学习产生浓厚的兴趣,否则,就是在靠所谓的自律去强行推进,很容易遭到反噬。
这些年来,我总是给自己增加心理暗示,不停地让自己去坚持学习。只是因为很少获得奖励,所以大脑也没有形成相应的惯性思维,因而没有从学习本身获得足够多的乐趣,也就很懒得去深究许多东西。
对我而言,最好的奖励机制,应当类似于解决了工作中或者是生活中的某些问题,从而获得了实质性的回报,通过这样的途径所学到的知识和经验,往往也最为牢固。
可能也正因如此,我才那么热衷于帮助朋友或者是同事解决问题。因为解决一次就提升一次,尤其是当自己在短时间内 解决别人花了很长时间都没解决的问题之时,所获得的的成就感是相当充足的。
但是,仅仅依赖于平台或者说是外界的刺激,是远远不够的,我还需要养成向内求索的思维习惯。
或许,我也可以主动去发现问题,进而去解决这些问题,去收获更多的成长。

关于读书

今年看完了9本书,印象比较深刻的是《有钱人和你想的不一样》以及《习惯的力量》。
和以往不同,今年看书,我写了不少读书笔记。
关于《有钱人和你想的不一样》,虽说书名和内容都很有“成功学”的味道,但很多观点都挺有用的,我当时写的读后感内容如下:
1、有钱人之所以能成为有钱人,是因为他们知道该如何更好地思考和行动,他们不会给自己设限,他们不会进行毫无意义的准备和等待,他们喜欢通过有效的行动来进行校准和提升自我。
即便他们也可能会遭遇挫折,但因为他们本身的能力就是一种生产资料,所以他们总能够卷土重来,而且总能越战越强。
2、普通人想成为有钱人的最佳路径:模仿有钱人的思考和行为方式。
3、普通人总是喜欢给自己设限。
比如,明知多考一些证书对自己有好处并且也确实有相应的时间和精力,但是因为各种不必要的担忧(其实就是懒)而迟迟不肯采取行动,总想着等生活更加稳定以后再考虑吧,结果等着等着,就错失了很多提升自我的机会(没错,说的就是以前的我)。 意识到这一点之后,我今年报考了两个证书,不再去考虑工作方面的因素了。 这样一来,今年的收获必然会比去年多得多。
4、普通人面对问题时,会将问题放大而忽略自身的潜力,有钱人面对问题时,会把自己想象为能量十分强大的人,一切问题都可以迎刃而解。
如果以消极的心态去处理问题,那么问题就会越来越多,如果以积极的心态去处理问题,那么随着自己能力的提升,许多问题将不再是问题。
如果将问题和个人能力的等级划分为十级,在你处于第五级的时候,你会觉得第五级的问题是个问题,可是当你升到第十级的时候,那么第五级的问题就可以忽略不计了。
5、去掉给自己施加的枷锁,不论在什么时候,只要是想做一些积极进取的事情,那就去做,从我采取行动的那一刻起,我就已经取得一定程度的胜利了。
6、学会强力思考,我们的想法都不是真实的,既然要编故事,不如编一个可以支持我们的故事。这么做不是因为我们的新想法绝对是真的,而是因为这些新想法对我们比较有好处,让我们感觉好很多。 多给自己一些积极的心理暗示,多看一些能给自己带来正面影响的书籍文字,多接触一些优秀的人,让自己成为一个能量值很高的人,充满干劲,积极进取,这样更容易实现自己的目标。 这些年来,我都是靠着一个个好的故事来支持自己走下去的。
7、过去几年,我可能一直都在模仿我所欣赏的人:定下目标,强制要求自己去行动,这样固然也能做出一些成绩,但内心免不了会有些抵触。 有了过去几年的经历,再加上去年在心态方面的突破、以及最近看的这本书的启发,我也开始由内而外地变成我想成为的那种人了。 最直接的依据,就是我现在想要做点什么,都不会再给自己添加那么多的束缚、不会再给自己找那么多的借口了。只要是有利于提升自我的事情,我就要去做,而且在产生想法还有去行动的这个过程当中,我都会觉得十分快乐。
回过头来看,感觉蛮有趣的,我当时看这本书时的状态,真的非常好,输出的内容都特别有能量。这里面提到的高能量值、考证、执行 等词,也可以说是贯穿了我这一整年的生活。
关于《习惯的力量》,是在听完播客后才去看的这本书,感触最深的就是上文提到的 Cue Routine Reward 了。
结合 Cue Routine Reward 来分析,看书的时候多输出一些个人的思考和观点,也是一种正向反馈,因此,今年也算是一个新的起点,看书的方式发生改变了,更加喜欢表达自己的想法了。

关于表达

今年在表达自己的想法这一块,也有了新的认知。
之前跟一个好朋友聊天的时候,我说:我很羡慕他,文笔很好,表达能力很强,也有许多自己的观点。我觉得自己在这些方面的能力非常欠缺,不够自信。
他提出了一个话题,然后阐述了他自己的观点。我听完后,表达了一些和他不一样的见解。
然后他说:其实你刚刚就表达了一个完整的观点,但你自己可能还没有意识到。
他的这段话,引起了我的一些思考:
为什么我在写作的时候,总是害怕脱离自己借鉴的资料?

因为我总是觉得自己没有观点。
我的阅读量不算少,但从没有尝试过搭建一套自己的阅读理解和写作框架。导致每次写作时,如果没有引经据典,不多抄一些原文,就很容易心里没底,觉得自己写的东西不够有说服力。 而恰恰是这些不合理的信念,一直在阻碍我搭建自己的阅读理解和写作框架。所以我总是陷入照抄原文和赘述的陷阱之中。 因此,我需要先确认一下,自己到底有没有观点。
为什么我会经常觉得自己没有观点?

因为我总是觉得,自己的脑海里的想法,都是从某个地方汲取到的,并不是我自己的。

先模仿,再创造。照搬别人的观点,也是学习的其中一环,这并没有什么问题。
但是,在输入这么多知识以后,我必然是有了许多自己的独到见解,只是我经常分不清哪些是我自己的观点,哪些是从别的地方抄过来的。 时间一久,我就容易越来越不敢去深挖那些内心的想法, 就愈发觉得自己没有观点。 事实上,根本就不需要在意哪些是完全属于自己的观点,哪些又是从其他地方吸收过来的。不管是哪种形式,它们都同样被我内化于心了,这就是我的东西。 观察一下自己这几年的言行,就不难发现,我现在已经拥有许多属于自己的观点了,只是还没有整理下来。而既然意识到了这一点,我需要做的就是开始记录,建立属于自己的认知系统。
仔细想来,我并非没有属于自己的观点,而是较少去主动表达自己的观点。
我们从小所接受的教育,比较倾向于让我们遵守各种规章制度和条条框框,而不是勇于表达自己。很多学生并不是思想僵化、没有思考,而是被这种环境压制到他也不知道他自己会思考了。
朋友的那番言论,对我起到了很大的鼓励作用,让我体会到勇敢地表达自己的想法是一件多么有趣的事情。
在表达自己的想法这件事情上,大多数人是需要被鼓励,以促成正向循环的。

关于未来

结合大环境还有自身情况,未来两年,我的计划就是:少折腾,多沉淀。
首先,保持身心健康,多运动,保持心态积极向上,多和心态同样积极向上的朋友交流。
今年对于“身心合一”有了进一步的理解,不管想要投入精力去做什么事情,都需要有一个健康的体魄以及饱满的精神状态,否则很难坚持到底。
从2021年到现在,我也坚持健身三年了,整个人的精神能量状态出现了肉眼可见的变化,生活质量也明显提高了许多。
我相信吸引力法则,如果我表现出来的状态是积极向上的,那么我也会吸引到同样积极向上的朋友,继而会产生正向循环。
其次,工作方面,该干啥就干啥,不要主动去打破现有的稳定局面,不要制造太多不确定性。
考虑到大环境因素,现在不是冲动的时候,顺其自然吧,如果有更好的机会,自然可以换个合适的新环境,在此之前,先稳住,然后向内求索。
最后,就是巩固以及扩大自己的基本盘,除了加强专业技能的学习,还要继续多考些证书。
考证的时候,可以让自己专心学习,不会有那么多杂念,同时也可以验证和提升自己的学习能力,好处还是蛮多的。
对未来不确定时,就多做些保证不会亏本的事情,学习和考证,都属于这类事情。
另外,保持松弛感,倘若人生只是一场大梦,一切终将归于虚无,那么我能把握的,就只有这个过程。
不必一直赶路,没有什么任务是非要完成不可的,如果有什么想要做的事情,那么就去做,去尽情地体验人生吧。
正如当年明月在《明朝那些事儿》的结尾所讲的:成功只有一种——按照自己的方式,去度过人生。

小牛叔用轻松有趣的故事,带你进入Python的编程世界。

1、类

一提到类大神们就经常说封装。说白了,封装即把围绕同一个对象相同的代码、数据整合在一起。比如在某段游戏代码中(比如熊猫厨房),有一个“面包”:

1、游戏提供“烘烤”的操作。 -> 很明显这是动作 -> 类的方法

2、面包有硬度指数 -> 很明显这是数据 -> 类的属性

从一般情况看,“动作”可以通过编写函数完成,比如上面的“烧烤”,游戏可以通过函数绘制出烤箱烤面包的画面。“数据”就只通过变量来保存值就行,比如上面的“硬度”,我们可以通过0-10的数字去表示。

以上即包括函数又包括数据的结构,由于是服务于同一个对象的,所以就叫面向对象。

这是小牛叔最喜欢吃的“面包”

3、实例

“实例”就是“类‘的”值“,类相当于蓝本,实例相当于不同的个体。我们继续玩熊猫厨房的游戏,实际在游戏在完的过程中,每个人的屏幕上都会出现“面包”,这些个张三的面包、李四的面包就叫实例。这些个实例不一定有相同的属性值比如“硬度”不同,但是却是共享着相同的属性名称与方法,像是同一个蓝本里刻出来的。

比如在Python中所有的整数,只要出现的整数其实都是int这个类的实例。

Python系统当中大部分的东东都是类,我们之前学习的str-字符串,int-整数,其实都是不同的类,我们用type这个语句就可以查看某个实例是什么类。

type语句 - 某个值(实例)是什么类

3、定义类

在此分析一下"面包"的属性:

  • slices:指使用了几片切片
  • condiments:面包上配料的列表,比如番茄酱、芥末酱等
  • cooked_level:一个数字,通过这个属性知道面包被烤程度
  • cooked_string:一个字符串,描述面包烤出来的软硬程度

再来分析一下面包的方法:

  • cook():把面包片烤一段时间,这会让面包比较硬容易抹黄油
  • add_slice():加入一个切片
  • add_condiment():加入一些配料

3.1 __int__() 初始化方法

首先定义类中的4个属性,属性我们通过在类中定义__init__()函数来实现,这个函数名称每个类都一样,系统在实例被生时首先执行这个函数的代码,并且把实例传递到self这个变量当中,因此我们在这个方法中,为面包设置如下的属性,并且设置默认属性。

1 classbread:2     def __init__(self):3         self.cooked_level =04         self.cooked_string = 'Soft'
5         self.condiments =[]6         self.slices = 1

如上的代码,self后紧跟的点号是引用实例的成员,如果不存在会被创建, 上述初始化方法当中,定义了一个没有经过烤时间为0,非常软并且没有任何酱料的1小片切片白面包。

3.2 定义其它方法

下面我们定义烤面包的方法,我们在class下面,再创建函数用来表示,这个cook函数的第1个参数self是系统要求的实例,并且根据烹饪时间来设置面包的状态。

classBread:def __init__(self):
self.cooked_level
=0
self.cooked_string
= '软嫩'self.condiments=[]
self.slices
= 1 defcook(self,time):
self.cooked_level
+=timeif self.cooked_level>=10:
self.cooked_string
= '焦糊' elif self.cooked_level>=8:
self.cooked_string
= '硬脆' elif self.cooked_level>=6:
self.cooked_string
= '适中' elif self.cooked_level>=3:
self.cooked_string
= '稍软' else:
self.cooked_string
= '软嫩'

可以看到我们通过cook这个动作,函数可以根据烤的时间来改变面包的软硬属性cooked_string。

假设游戏刚开始,Joe刚开始准备烤面包, 在同一个文件里,我们接着顶格写如下的代码:

joeBread = Bread()
print("烤时间",joeBread.cooked_level)
print("切片数",joeBread.slices)
print("口感",joeBread.cooked_string)
print("配料",joeBread.condiments)

运行的结果如下:

烤时间 0
切片数 1
口感 软嫩
配料 []

此外,还要注意到目前为止,定义类的时候目前均是采取首字母大写的方式,在Python代码约定当中,Word一般是作为类名,而word则是作为实例名称,这样通过观察变量或是类的名称,就知道所代表的意义。

然后再试试cook这个方法有没有效果,在上面的语句后面继续填加如下的语句:

1 print('Joe开始烤8分钟')2 joeBread.cook(8)3 print("口感",joeBread.cooked_string)4 print("烤时间",joeBread.cooked_level)

这些语句的运行的结果如下图:

Joe开始烤8分钟
口感 硬脆
烤时间 8

以上编写的cook() 方法可以正常工作,经验证面包被烤了8分钟后,不仅烤时发生了变化,而且面包的口味果然变成了“硬脆”的状态,小牛叔可不喜欢吃硬的!

---小牛书0基础Python系列教程---

【每天1篇1周入门,请点击下方的喜欢和收藏,以备学习】

2023.12.31 在厦门与阳光度过这个假期!今天看到了日出、月亮、彩虹、日落!

2023

2023对我来说是一个有点特别的年份,从2013年开始上大学,2023正好10年。我会觉得2023是一个阶段的结束更是一个新的开始,虽然今年也并没有去很多地方,但从5月份开始的大理旅居之行确确实实是另一种活法实践的小小开始。但其实要说变化,从去年就已经开始了,去年的年终总结关键词是折腾,也是变动的开始,可能像前些年的变动最大的也只是跳槽换工作,跳来跳去也还是在一个圈子里,而今年的变化则是我好像可能在试图从原来的圈子跳到另外一个圈子了,真切的看到了一些原来没有看到过的景象,接触到了一些在上班和旅游中间呼吸的人生中永远也接触不到的人生样本。

这一年最大的几件事,第一是在家住了好几个月,住到了5月份,几乎是从小到大第一次和我妈两个人相处了几个月,对于母女关系有了很频繁的思考。第二是参加了一个高中同学的婚礼,其实本来参加婚礼只是很平常的事情,但是因为处于社会时钟的快“30岁”这个年纪,身边的很多朋友都开始结婚生子了,有很多不一样的感受。第三是一个人去大理旅居了四五个月,这也是第一次尝试一个人出发去大理旅居,在此过程中认识了很多处于不同状态的朋友。并且9月开始还和几个朋友开了一档「不上班派对」播客,每周跟相当聒噪的几个人聊聊天。12月已经又继续一个人的旅行,来了福建,这里温度都在十几二十度,准备度过年前最温暖的一个月。这几个月听最多的歌是《单身旅记》,最爱的休闲活动是早上八段锦,晚上和周末citywalk,最规律的是每周一次的播客聊天。

关于独处

关于第一次、一个人这件事,从脑子里飘过了从小到大的很多个瞬间。其实很小的时候我很爱说话,很爱问为什么,很爱和动物说话。再大一点上小学期间是经常村里的小伙伴一起出去野,觉得很多事情都很有趣,然后就是初高中了,从12岁开始住校到大学也有十年的宿舍生活了,这个阶段除了学校学习就是放假回家看剧,逐渐变得沉默了。第一次感受到独处是小学的时候同学们都住校我没有,中午午休的那段时间整个教室里只有我一个人。初高中住校了之后反而还好,都有饭搭子。但也在这个阶段开始从做什么一定要找个伴到我自己一个人也可以。大学更是自由时间变得更多了,不可能总是找人陪伴再去做自己相做的事情,于是开始享受独处的快乐,从独处中汲取了很多养分,然后就是毕业之后开始上班,独处时间更多了,偶尔也想找同频的人,但旅游和出远门还是会找同伴一起,也没有想过独自旅行这件事,其实本来在一个城市都是独自工作开始的,但是独自旅行在以前好像看的比较重一点,因为要去到陌生的环境。但是今年经过尝试发现,并非不能独自旅行,阻碍自己脚步的只是自己,去到一个新的环境远没有想象中那么可怕。甚至还能在新的环境中发现很多令人开心的人事物。当然也可能遇到一些不开心的事,如果不喜欢的话离开就行,很简单,没那么复杂。人生也如旅程,被环境逼迫去改变和适应不如自己主动积极去改变和适应。

关于亲密关系的思考

去年和今年我看的书里至少有三分之一是关于女性的书的,以前对于家庭关系,更多的是在于我当下的感受如何,很多时候我并没有去细想我的感受是怎么来的。这么多年我都一直在顺社会时钟,上学工作无缝衔接,其实确实一直并没有好好去想亲缘关系中的不合理之处,一方面也是从小到大在家和父母相处的时间加起来其实并不多,直到这几年才逐渐开始思考自己的一些情绪的来源,试图理清这种共生和依附的关系。经过二三十年,回过头来猛然发现自己总是压抑和忽略自己的情绪,成为了一个情绪稳定的大人,很难再产生过大的情绪起伏,可是这个时候发现父母不像我们小时候想的那样强大和情绪稳定,更多时候还会角色对调,我们需要经常去安抚父母的情绪。

今年和我妈相处的几个月里,虽然存在的都是一些一直存在的问题,或许是这些书对我的影响,我思考的角度有了一些变化。比如我一直想的是无论如何我不想成为母亲那样的人,在观点冲突时,我试图说服我的母亲,想让她认为我是对的,但后来又细想,其实她也是这么想的,并且在这二三十年里都这么一以贯之的来灌输她的想法给我,想让我按照她的想法来,那么我想要「让她认为我是对的」这个想法本质上其实也是和她一样,是徒劳的,不同本来就是客观存在的,只能求同存异,能调和则调和,不能调和就分开,也不能过多的参与彼此的生活,需要保持成年人的独立性。

关于生活方式的思考

对于工作,在之前我可能更多的会在意我要好好工作、努力赚钱,但是去年就经历了一系列的折腾之后,思想上也有了转变,更多的会珍惜来之不易的健康和自由。想明白自己想要过哪种生活,然后去逐一实践看是否是自己真正想要获得的状态,起码今年一年对得起去年的展望,不只是在屏幕那端去羡慕他人在过的生活,今年相当充实的实践了一些以往我觉得很难开始的事情,并且过上了之前梦寐以求的生活,虽然还有一些限制,但是总体来说可以说是实践了最初的设想,也了解了自己适合在什么样氛围的环境下生活,以及对于未来和长期的一些展望。所以去年我从坐班工作过渡到远程工作,虽然也还是按点上班,但就是解放了空间,我可以再任何我想去的地方工作。通过这个我在有稳定收入的情况下去了大理旅居过了一个很久以来最美好的夏天,有了和旅游相当不一样的感受。喜欢这种旅居的状态,在一个地方待三个月以上,可以比旅游的走马观花更能感受这个地方的人文美景,接触到不一样的人事物以及不同的生活方式。

和食物的关系,和金钱的关系,乃至和他人的关系,最终好像都能够归结于和自我的关系。在从少年成长为青年的时间段里,很多时候的动力都来源于“我不够好”,我想要“更好”。但是很少去思考何为好?过去十年里都忙于眼前的问题,懒惰的认为大家普遍认为好的就是好,一直朝着别人期望的方向去发展,但很少会问自己,我想要什么,我想要成为什么样的人。这两年经常会问自己如果不管社会的期待(考研、考公、结婚、生娃)想要过什么样的生活?

「社会时钟」之外的人生可能?

今年五月份去参加高中同学的婚礼,还是感受到好像很多人被打思想钢印似的,这个年纪还单身似乎是一件说不出口的事情。在今年之前我或许也认为以后一定要找个人结婚,一定要在某个城市定居买房,但今年我的想法发生了巨大的变化,这些没有其实也没多大事,就像一个人旅行那样,开始一个人旅行之前会想,会不会遇到危险,会不会孤独,想的太多害怕开始,但真正开始之后,就会觉得一个人太舒服太自由了,可以去我想去的,吃我想吃的,玩我想玩的,不用迁就任何人。如果旅途中遇到合拍的人,甚至也可以改变原来的计划和别人一起同行一段,自由且随心。或许某一天我觉得够了,我不想到处去了,想要在一个地方长居一段时间,甚至定居也是ok的,总之,内心保持多样性和好奇心,先出发,在路上就知道自己想要什么了。

顺「社会时钟」不一定过的不好,逆「社会时钟」也不一定就过的好,好与不好终究还是主观上的判断。所以可以抛弃所有标签,过自己认为的好,顺应自己的内心,这才是我想要的生活方式,稳定与变化并不矛盾,看清楚自己想要什么,我可以在试过一切可能之后选择回到最初的起点,但不能一直不出发,这也是我一直在践行的生活方式。

大理

在大理的时候,会发现有些人年纪很小就已经去过了很多地方,学过了很多接触了很多思考了很多。从大理回来之后和朋友聊天的时候,我说发现有好些人家底比较厚的确实是好像做什么事情都自信从容一些,没那么多后顾之忧,在他们很小的时候就到处见识,而大部分普通人就是容易瞻前顾后,就像我这样的似乎走了很久很久才走到今天,才有机会从生存和忙碌中抬起头,得以窥见他们的一角。并非对自己原生环境的抱怨,而是很深刻的意识到人与人之间是有多么的不同。很多时候你唾手可得的境况可能是世界上很多人梦寐以求想要达到或者获得的,我也经常会想其实我这样的生活也是很多人求而不得的,应该感到珍惜,而不是这山望着那山高,应该多思考并去实践出自己想要过什么样的生活,然后想想如何达到更理想的生活,而不是只是会看着网上别人光鲜的一面羡慕。疫情三年之后,也经常会觉得明天和意外,不知道哪一个先到来,是如此的真切,每到这时,我便会更进一步的忠于内心去做选择。

当把一件事想的太复杂的时候,就很难去开始。比如写这篇年终总结,从12月初就开始在写了,因为给自己设置的deadline是月底,所以一直拖延,做很多事情来逃避。也比如,今年开始我开始接受一个人旅行了,以前总在等朋友有空,但真的一个人出去了,也没有想象中的那么难,发现在出发之前预设太多困难除了阻碍前进没什么帮助,所以我尽量避免想太多,降低预期。同时变得好奇,不担心做得「对不对」,要「花多长时间」,能否「解决」问题或是否「重要」。享受你感觉到的与问题的互动和冲动就好了。依冲动行事;看看会发生什么;再遵循新的冲动。这样似乎就变得更简单一些,并且更能遵从内心的感受。跟随自己内心去做想做的事情,虽然没那么简单,但也没那么难。

「不做什么」这么难吗

今年一整年,尤其是下半年过得相当充实,去了很多地方,citywalk了很多城市,情绪鲜活,感觉到自己的人生真的有在好好过好好活,也真的做到了去年年终总结的期许:「多走出去看看,多实践,不只是躲在屏幕中舒适区里看,把生活过地鲜活」。不仅如此,今年书也读了256小时,读完34本,书也读了,路也走了,真的特别好,整体上来说过得很自洽,人生真的应该就是旷野,这个旷野不是指一定要反主流或者反轨道,而是不问别人的期许,你希望做什么,你希望成为什么样的人!

不知从何时开始,我们总想把时间填满,去学习、去健身、去读书、去看剧、去刷手机,似乎「不做什么」这件事变得很困难了。冥想超过一分钟就开始走神,让脑子空下来好像成为了一件很难的事。年终总结也都会总结做了什么事好让自己觉得一年没有白费,但我突然就会想到「不做什么」这件事是否成了稀缺能力,希望明年我可以经常安心的「不做什么」,多多练习冥想,去感受最初的感受!

转写时长超出60秒的语音文件,业界的竞品通常会使用创建异步转写任务的方式来提供支持。
一个简单、直接的实现方案,即:

  • 网关服务接收到来自客户的转写请求时,将任务信息持久化至任务队列中。
  • 由算法服务的实例从任务队列中提取任务,并执行转写操作。
  • 待执行完毕之后,将转写结果保存至DB中,供调用方查询。

本文主要针对介绍任务队列的要求和选型。

在语音识别的文件转写的场景下,对于任务队列的常规诉求:

  1. 允许多个生产服务向队列中增加任务。
  2. 允许多个消费服务从队列中提取任务。
  3. 任务队列自身具备可靠性,避免自身成为影响整体系统可靠性的单点。
  4. 任务队列的读、写操作,效率满足业务要求,避免成为影响整体系统效率的单点。
  5. 单个任务,仅支持由一个消费服务提取和处理。
  6. 消费方在处理某指定的任务时,假如超时或者失败,则要求将任务重新放回到队列中,由其它消费服务的实例完成任务的处理。
  7. 消费方的实例异常重启后,该实例上当前正在处理的任务,需要重新被抓取至原实例或者新实例上,继续处理。

对于5、6,一般可以理解为任务的事务性。

关于实现任务队列的可选方案,一般有如下几种:

  • Redis
  • Kafka
  • DB(比如MySQL)

一般而言,Kafka、Redis自身可以满足上述要求中的1、2、3、4,实现并不困难,但5、6,则存在一定的困难。
而基于DB的方案,可以很好的满足1、2、5、6,但在提供3、4时存在一定的困难。此外,当消费方的实例的数量增加时,由于需要采用轮询的方式来提取任务,可能导致DB的CPU占用率有所提升。当任务的并发度提升时,容易出现死锁的现象,或者提升DB处理数据行锁的开销。

语音识别业务中文件转写请求的特点:

  • 当前的用户调用总量相对比较低。
  • 同一时间,来自客户的请求的并发度比较低。
  • 用户对于时延的敏感度相对比较低。
  • 用户对转写任务的成功率有比较高的诉求。

综合考虑项目组当前的人力情况、技术储备情况、交付进度的要求,选择了基于DB来实现任务队列的方案。

在DB中新建任务队列表,包含如下字段:

  • 任务ID,唯一标识。
  • 创建时间,用于后续计算任务端到端转写时间。
  • 任务结束时间,用于后续计算任务端到端转写时间。
  • 任务状态,当前任务处于排队中、处理中、处理结束、失败。对于失败的任务,假如重试次数低于门限值,则需要重试。
  • 锁定时间,用于确定任务是否超时,超时的任务需要重试。超时时间的定义,需要综合文件转写的实时比和语音文件自身的时长,给出恰当的定义,避免失败后等待过长的时间才能触发重试。
  • 当前处理任务的实例的标识,用于确定任务当前由哪个实例在转写。当算法服务的实例重启时,可以加载本实例相关的任务,执行重试操作。
  • 重试次数,系统需要提供自动重试的能力,可以规避某特定实例自身的问题导致的失败的现象,降低运维人员主动介入处理时的工作量。但不能无限制重试,需要定义重试的次数。

参考资料

2023年即将结束,又到了做年终总结的时候,它是我每年的一个习惯,意味着又要开始新的征途,在开始新的征途之前回顾一下很有必要。

以终为始:个人能力架构图更新v1.5

去年绘制了第一版的个人能力架构图,依据层次架构和依赖关系,借鉴了系统架构图的一些思想,希望能成为指引自己的方向,并且我也会不断地更新和完善它,让它成为我以终为始的示例。今年它已经更新到了v1.5版本,如下图所示:

这里我同时加了8个字:

  • 有文有武
    ,即既有IT开发技术体系(硬技能),又有项目管理知识体系(软技能);
  • 能上能下
    ,即技能在上层(比如Web应用层)进行技术开发,又能在下层(相对而言,比如上位机场景)进行PLC的数据采集和反向控制。

今年主要完成了Blazor的系统学习,还在持续进行MES/MOM的理论学习,移除了一些,移除了5G改为IIoT,移除了LeetCode简单题目改为结构思考力,将边缘计算改为工业边缘缩小范围等。

同时,将软考的项目管理认证改为了PMP,因为上半年参加了软考的高项发现太卷了(论文38分没有过),于是就换了个赛道转考PMP,还是easy很多,同时也再温习了一遍项目管理的知识体系,理解又加深了一些。这里不得不推荐一下《
PMP备考宝典第二版
》这本书,实在是写的太好了,帮我串联起一个完整的项目管理知识体系!

这一年仍然在每周上一次英语外教口语课,仍然是和我最认可的外教老师Mark,对我的帮助仍然是很大,现在已经感觉语感比去年又好了一些,但是部分发音还需要改进。英语学习是个长期的过程,对自己对小孩都是有帮助的,特别是在以后对小孩的英语教育上,能够在家里主动创建语境的氛围我认为是很重要的。

但是,今年在技术学习上的投入的确是不够,极客时间上也只有11小时的时长,在对新事物的研究上也没有投入,特别是AIGC领域。此外,输出的技术和业务方面的博客也很少。

带娃出游:开始带小孩出去旅游啦

今年逐渐开始带家人一起出游了,去了洪雅的瓦屋山呼吸新鲜空气,去了绵阳的江油感受诗仙李白故里,也去了我的母校感受当年的路,去了峨眉山休闲爬了低山区,还去周边的彭山爬了爬彭祖山等。

每到一个地方,我们都会感受当地的美食,乐山钵钵鸡和跷脚牛肉,彭山漂汤,江油肥肠等等。希望明年,我能带家人去更多地地方。

坚持运动:加入了小区球队每周踢球减肥8斤

去年定了一个减肥10斤的计划,目前看来完成了80%,还得归功于找到了我们小区的组织:清河右岸足球队。从5月份开始,我每周五晚8点半到10点半参与踢一场养生球,从最开始的体力不支到逐渐可以踢较长时间,算是感受到了持续运动带来的改变。由于每次踢的都是8人制,对于习惯踢5人制的我着实不太适应,我也逐渐从中前场踢到了边后卫,最终定格右边后卫,通过积极防守和快速传球来做贡献,毕竟我带球和速度都很弱鸡。

更重要的还是,坚持运动才能保持健康,
健康的身体才是持续工作的本钱!

佛系运营:EdisonTalk关注者超10000人

今年继续佛系运营公众号,目前关注者已经有
10350+
人。

自己能做的就是:不接广告,保持清爽风格,多推送大家关注的话题,不一定都是技术,但是值得大家不取消关注,我想这就足够了。

当然,现在的我也那么多精力持续写有质量的技术文章了。

此外,我还运营了一个EdisonTalk读者交流群,目前已经有
500
人了,暂时没有新开2群的计划,实在是精力不够,维护好一个再说吧。由于达到微信群人数上限了,这里我也跟大家说声抱歉!

最后,今年我加强了公众号文章同步到博客园的操作,博客园今年的关注量也超过
5000
人了,未来我还是会及时同步的。

社区活动:组织了三次线下活动

前两年开始作为社区活动组织者参与线下活动的组织,但都是一些聚会为主的Connect。今年疫情结束放开后,陆续组织了
三场线下技术沙龙分享活动
,合计参与人数
超200余人

4月15日,
成都.NET线下技术沙龙活动
,由MASA技术社区和成都.NET俱乐部联合主办,我也第一次作为讲师面向70人进行线下分享,也算是一次难得的体验。

传送门:
2023年成都.NET线下技术沙龙圆满结束

8月初,我 和 梁总(梁桐铭) 以及 成都.NET俱乐部的小伙伴们一起组织成立了CTC蜀道会,希望立足蓉城成都,连接同道中人,一起搞活动并拓宽人脉。8月20日,
CTC蜀道会的第一次线下分享活动
在成华科技大厦举行,这是我们第一次以CTC蜀道会的名义举办活动,虽然是个小活动,也吸引了20多人参与,这次我们不仅关注技术,还关注技术人成长 和 副业经历。

传送门:
CTC蜀道会第一次线下活动圆满结束

12月9日,还是在成华科技大厦,我们主办了
.NET Conf 2023 Chengdu
,这是成都第一次举办.NET Conf的Local Event,这次活动共计120人购票,吸引了100+人到场参与,还吸引了重庆地区甚至大连地区的开发者参与,反馈都还不错!

传送门:
.NET Conf 2023 Chengdu 圆满结束

人脉构建:成都外企打工人微信群约150人加入

去年开始做了一个新的尝试,就是运营了一个成都外企打工人的微信群,从去年的60+人已经发展为约
150人
的规模了。更重要的是,已经覆盖了成都的各大主流外企 和 小而美的外企,吸引了目前在职的外企IT/CT技术人乃至HR,包括但不限于:ThoughtWorks、Intel、TI(德州仪器)、SAP、Siemens、Rockwell、IBM、雷蛇(Razer)、普华永道(PwC)、活跃网络、亿磐(EPAM)、宏利金融(Manulife)、奈加罗、翱特(Solera)、赛轮思(Cerence)、沃尔沃、一汽大众等,我们的目的是汇聚成都外企人脉,信息共享互帮互助,同时合力抵制996阿什么玩意儿的味儿。

基于这个微信群,我也建了一个
成都外企内推圈
的小社群,目前主要帮助成都地区有HC需求的外企高效地转发岗位信息,目前通过此渠道入职外企的也有
1
0+名
小伙伴了,我们也会继续分享第一手的内推信息,为成都IT技术人特别是成都.NET开发者造福。

如果你的企业有HC岗位需求,也可以联系我帮你推广,免费的哦!

推广示例:
普华永道成都DDC招聘.NET开发工程师

2024:做个持续精进的“快乐程序员”

对于2024,我仍然有一些希望:

(1)身体:
能够有个
健康
的身体

,努力尝试再减肥10斤,每周踢一场球,然后再把跳绳的习惯坚持下来,毕竟良好的身体才是工作和生活的本钱!

(2)生活:
有时间就带家人
出游

,努力多带家人一起出游更多地的地方,希望能去个远一点儿的地方,工作和生活需要平衡一下!

(3)技术:

上位机和AIGC
开始保持学习和关注

,希望能够做到“能上能下”但不需要成为专家,努力向IT和OT融合靠拢,同时探索AIGC如何在公司应用起来。

(4)英语:
完成梁焕臻
超频语境英语课
的初级部分

,积累足够多的语料和语境,具备出国旅行和出差的能力,同时也花点时间在小孩的英语培养上面。

最后,其实
只要能够比2023年进步一点点我就满足了!

在以终为始的个人技能架构图中,不断完善和更新,在此过程中得到满足,
知足常乐,拒绝内卷