2025-02-09-2024年年终总结

一篇关于 TCP 协议中的三次握手和四次挥手过程,以及 TCP 连接的 11 种状态。


2024 年,受到裁员潮的影响,项目开发流程与周期变得更加简单与敏捷,从最开始的不适应,到现如今的接受。这一年,应该也是工作以来最 “肝” 的一年,值得庆祝的是今年的项目全部都顺利上线了,同时,个人荣誉方面也获得了 Q2 季度的季度之星,也算是一种肯定吧!下面,我将从几个方面对 2024 年进行总结。

工作

今年除开鸿蒙 APP 的项目,做了几个项目大都与 AI 赋能的业务相关,比较有挑战性的项目是「前端 AI 故事生成模块的调度器」,要求子流程在并行工作的同时,能够保障数据有序输出,且能够实现进度检测、重试的要求,相关业务介绍如下所述:

前端 AI 故事生成模块的调度器方案设计、落地和迭代

需求

根据用户提供的关键词,调用「百度文心大模型」生成对应的故事,前端收到对应的数据后,需要 “打印机式” 地输出,同时,接收的数据构成一个句子的时候,需要调用「百度千帆大模型」进行文本转语音(TTS),接收到语音数据后,需要进行语音播放。

需求拆解

根据上述需求,我们可以拆解成四个步骤:

  1. 用户输入关键词
  2. 前端处理关键词
  3. AI 生成故事
  4. 前端处理流式故事数据

其中,“前端处理流式故事数据” 中需要 并行 处理 “接收流式数据”, “流式数据转文本”, “切割成文本”, “流式音频数据转本地音频地址播放” 四个子流程,同时,为了减少长故事文本生成带来的等待时间,需要前端对上述流程进行并行处理;

子流程难点

流式数据转文本

  • iOS 真机上 ArrayBuffer 转 String 兼容性问题
    • 解决方案:社区方案测试后都不太可靠,这边根据原理,实现了一个 TextDecoder ;

切割文本

  • 前端接收到的流式数据是一个 Object 结构,要做到 “打印机式” 输出,需要对接收到的数据进行文本解析、字段过滤和提取
    • 解决方案:使用 「栈」结构实现一个 流式对象数据的解析器,实现对每个输入的数据进行检测和判断,实时输出对应字段的值,同时,如果出现错误码的情况,则终止流程;

流式音频数据转本地音频地址播放

  • 我们使用的全局播放器不支持流式音频播放
    • 解决方案:将流式音频数据保存到本地,生成一个临时地址,播放临时地址的音频;
  • 音频播放失败、超时检测和重传机制
    • 解决方案:接收到某个句子的流式音频数据时,我会将 这个音频的流式数据 和它对应的文本在整体故事中的序号ID 值 封装成一个基于闭包的 Promise 对象,然后推到一个新建的队列之中,依次执行队列中的子对象时,会起一个定时器,没有触发播放器可播放的事件回调时就执行重试逻辑;
    • 重试机制:重新根据文本生成流式文本数据,接收/解析流式文本数据,文本数据转流式音频数据,流式音频数据进行播放;

个人

感情生活

今年与女友结束了约一年的异地生活,两人终于在同一个城市中工作了 😄。

运动与健康

今年是恢复晨跑后的完整坚持的第一年,22 年下半年和 23 年上半年,因为工作上带来的迷茫和焦虑,让我决定把晨跑的时间用于睡眠和获取信息流,后面发现不仅没有带来较大的提升,反而让自己的效率降低了。恢复晨跑后,不仅带来了身心上的满足与增强,对于工作上带来的压力也有了一个释放的地方。

旅游

今年去了趟香港 🇭🇰,看到了很多从小就熟悉的地名,也加深了对他们地理位置的印象,从「旺角」-「坚尼地」-「中环」,整体体验上都还不错。

软技能

日语学习

去年开始,闲暇时会听「海贼王」的剧情解说和分析来当作背景音,慢慢的被其中一些需要日语文化的知识点吸引到了,例如路飞的五档形态与冲绳传说中榕树上的精灵相关等之类的。后来,与女友看完宫崎骏的《你想活出怎样的人生》电影后,我们在探讨、分析、吐槽与总结的过程中,女友提到电影中的 warawara 在日语中其实是某个词语的意思,那时一下子就让我觉得挺有趣的。再之后,女友使用 Duolingo 学习法语时,我也开始使用 Duolingo 学习日语了,目前已经坚持了 128 天,希望能够继续坚持下去 ✊。

总结

2024 年,有通宵赶项目,也有在海边看浪花的美好时刻,希望 2025 年能在工作上有更显著的变化和突破,从而实现更高的人生价值,个人生活方面则继续保持稳定。