24岁程序媛,二战考研失利、三无人员 ==> 最佳新人、优秀个人,讲讲我的技术成长之路

简介: 能力、格局、谋略、远见、耐心。灵魂的欲望是命运的先知,希望永远自信、洒脱、松弛、明媚、张扬;追随自己的内心、以喜欢的方式、往正确的方向前行,永远在路上,我甘之如饴!持续精进Java领域相关技术,包括微服务、高并发、高可用、分布式、集群等等;希望能接触到更多更大的优质项目,逐渐成长为一名具备全栈思维的架构师,既能深入理解底层技术,又能把控全局架构;抽时间了解学习Go语言、人工智能、大模型等领域。在探索中明晰后续的发展方向,形成自己的一套体系,成为主管、管理层乃至更高,不希望自己的上限只是程序员。

灵魂的欲望是命运的先知,希望永远自信、洒脱、松弛、明媚、张扬;追随自己的内心、以喜欢的方式、往正确的方向前行,永远在路上,我甘之如饴!

背景

双非本科、22年毕业,大学期间将所有心思精力投入到学业课程、科研竞赛、学生工作中,成为更优秀的人、去985高校读研是我内心唯二想要的,从未想过本科毕业后工作。因某些原因放弃保研,眼中只盯着北京的985,结果准备两年研究生考试均落榜。21年一战因复习时间太短,成绩不理想;22年二战冲北大软微,拼了命复习,可考前中招,顶着高烧、吞针般的嗓子,强撑着考完全程,结果还是离北大差一点儿,放弃了北京科技大学的调剂,开始找工作。

    准备两年研究生考试均落榜,毕业后有10个月的空窗期,典型的三无人员——无实习、无技术、无应届生身份。于是,在担忧、遗憾、自我鼓励等多种情绪下,从不知选择Java、C++、还是测试,到确定走Java方向,从0开始跟着B站学习(为啥说从0开始?学校课程,懂的都懂!),经两个月的学习、面试,2023年4月底入职一家小公司,担任Java程序员。很幸运,带我的领导、主管都很好,能力、格局、谋略、远见、耐心等等方面,都是我极其佩服且要从之学习的。

    现已工作一年5个月,平常在努力学习各类技术的同时,会担心自己30岁之后的出路,也会思考 当35岁危机来临的时候,我是否有能力、底气接住它;偶尔也雄心壮志,希望这一生能按照自己的心意而活,实现自己的价值,闯出一番天地……

机缘

为什么想成为创作者呢?

这个问题很大很长,可能一时无法描述清楚。我的第一篇博客是 “IDEA更改新建项目默认地址(2021.3版本及之后版本都适用)”,内容很少、极其简单,只是单纯地记录,方便日后遇到同样问题时直接查阅。那个时候没考虑过写博客、也压根没时间,重心都放在学习Spring那一套框架、解决bug、完成需求、度过试用期。

第一次让我意识到记录博客比较重要的是 mysql、redis这些命令。作为后端开发,有时需要通过命令行查看库数据,升级安装系统时需要备份恢复数据。虽然这些命令我用过、但还没到那种“下手如有神”的地步,每次只能查找博客等资料,有些可能还有误,比较零散。于是,忙完手头上的工作,我就整理了一下MySQL常用命令、备份、导入导出。自己先在本地测试运行各类命令、确认ok、再整理、记录到博客,这样日后方便查阅自己的博客,孰能生巧,更加得心应手;也能为其他程序员朋友们提供一份可靠的资料、参考。

简而言之,最初成为创作者的初心:

  1. 日常学习过程中的记录
  2. 疑难点、薄弱点突击
  3. 实战项目中的经验分享
  4. 通过文章进行技术交流

收获

在创作的过程中,我攻克了很多似懂非懂的知识点,譬如:get和post区别、后端接收参数(全面)、Sring各种注解、索引、缓存击穿等等。随着越深入了解,我越发现 自己掌握得不够,越能知道什么时候可以用它、怎么用;心态也从最初的似懂非懂、不予处理、担忧,到后面的不懂可以学,同时也更加平静、自信了。

在整理笔记、拓展学习、反思总结的过程中,我的知识、笔记更加系统化,也清楚地看到自己的知识体系以及成长。而这些博客不仅帮助了我,也可以帮助其他遇到同样问题的技术人员。

随着文章的积累、技术的拓宽,我也获得了许多意想不到的收获:逐渐积累了一定的粉丝基础,获得了很多正向反馈,看到越来越多的人通过我的文章获得帮助,这种正向的反馈给了我继续创作的动力。与此同时,通过创作我认识了许多志同道合的同行。他们在评论中分享自己的想法、建议和技术心得,通过这份技术交流,我们一起成长,拓展了彼此的视野。


日常

我唯一确定且坚信的是,我会坚持创作。忙的时候可能输出少些,但若得空了,一定会抽时间持续学习、创作。因为它丰富了我的知识体系,让我获得内心的安宁、也更加有自信,我甘之如饴。

日常我还是以工作、学习为主。一般会利用早晨上班前、休息等碎片化时间,进行素材积累、尽量把遇到的技术问题快速记下来,而后在周末或者空闲时段将这些问题/知识点集中整理成系统化的内容,并设置于周一至周五等工作日 定时发布。

通过这种方式,不仅保证了文章的输出,也让我的技术积累更加系统化。同时,创作也反过来推动我在工作中追求更优雅的解决方案(这个问题适合用什么技术、还有其他更好解决方案吗),让自己始终保持对技术的热情。


成就

在创作过程中,我最自豪的一段代码是日志分片下载。通过Redis、ZSet、Base64、TCP处理大文件的传输下载,解决排序、丢包、超时等问题,其核心模块如下:

protected void getLogAck(EmbMsgJson json) {
   
    JSONObject jsonObject = json.getJsonObject();
    if (jsonObject.containsKey("offset")) {
    //分片传输
        /**
         * 1.获取GetLogRecv按序存到redis中 LOG_FRAME为true,根据offset与frames大小 设置hasNext
         *      其他片 hasNext=true, 最后一片 hasNext=false
         */
        CacheManager.addDeviceLog(json.getDeviceId(), json.getJsonObject());  //待确认
        DeviceInfo device = CacheManager.getDevice(json.getDeviceId());
        String deviceId = json.getDeviceId();
        CacheManager.setDeviceWaitOk(deviceId, DevPT.EMB.LOG_FRAME, true);
        CacheManager.delLogHasNext(deviceId);
        int offset = jsonObject.getIntValue("offset");
        int frames = jsonObject.getInteger("frames");
        if ( offset != frames-1 ) {
   
            CacheManager.setDeviceWaitOk(deviceId, DevPT.EMB.LOG_FRAME, true);
            //每接收一片 判断存HasNext;到下一片 先删之前的、再判断、存
            CacheManager.setLogHasNext(deviceId, true);
            return;
        }
        CacheManager.setDeviceWaitOk(deviceId, DevPT.EMB.LOG_FRAME, true);
        CacheManager.setLogHasNext(deviceId, false);

        //最后一片 hasNext=false,写入文件
        List<GetLogRecv> deviceLog = CacheManager.getDeviceLog(deviceId);
        String logName = jsonObject.getString("log_name");

        //  D:\home\etc-server\data_files\log
        String dir = AppConfig.MONITOR_PATH + File.separator + "log" + File.separator + deviceId;
        File file = new File(dir + File.separator + logName);
        if (!file.exists()) {
   
            try {
   
                FileUtils.forceMkdir(new File(dir));
            } catch (IOException e) {
   
                log.error("设备{}生成日志文件失败", json.getDeviceId(), e);
            }
            file = new File(dir + File.separator + logName);
        }

        try (FileOutputStream fileOutputStream = new FileOutputStream(file)) {
   
            for (GetLogRecv getLogRecv : deviceLog) {
   
                fileOutputStream.write(Base64.getDecoder().decode(getLogRecv.getBase64()));
            }
        } catch (IOException e) {
   
            log.error("设备{}分片下载日志失败", json.getDeviceId(), e);
        }
        CacheManager.setDeviceWaitOk(json.getDeviceId(), DevPT.EMB.GET_LOG, true);
    } else {
    //ftp传输
        getAckStatus(json, DevPT.EMB.GET_LOG, "下载日志");
    }

}

这段代码可能看起来简洁,但却经历了多次的优化和调整,最终成功解决了大文件传输下载存在的排序、丢包、超时等问题。通过该模块,我更加理解 为什么要拓宽技术的广度与深度,因为这两者决定了你在实际项目中能否找到高效且优雅的解决方案,并保证系统性能;它也会伴随你整个职业生涯,帮助你往更高处前进。


憧憬

展望未来,一方面我会持续精进Java领域相关技术,包括微服务、高并发、高可用、分布式、集群等等,希望能接触到更多更大的优质项目,逐渐成长为一名具备全栈思维的架构师,既能深入理解底层技术,又能把控全局架构;另一方面,我会抽时间了解学习Go语言、人工智能、大模型等领域,希望能跟上时代发展。

与此同时,希望我能在探索中明晰后续的发展方向,形成自己的一套体系,成为主管、管理层乃至更高。我心里一直有个隐隐的声音——不希望自己的上限只是程序员。我不知道最后会是什么样子,现阶段只能尽力去做,走到自己能去的最高处,多体验、永远在路上,相信结果总归不会很差。

在深入技术领域的同时,我也会保持创作热情,分享更多技术见解和实战经验,进一步完善自己的知识体系,成为一名优质的程序员。当图文内容达到一定的瓶颈,我想尝试视频和直播等形式,将复杂的技术点以更加生动、清晰的方式呈现给大家。请容许我贪心地说一句,在博客创作这条路上,当我技术的深度与广度、项目的实用与创新 达标后,希望能打造自己的知识星球,形成影响力,帮助更多人解决问题。

道阻且长,时间远远不够,希望自己坚定信念、合理规划、持续努力,以自己喜欢的方式、往正确的方向前行。

最后,感谢所有在这个过程中支持和鼓励我的粉丝、读者朋友们,未来我们继续前行,探索更广阔的技术天地。祝大家在人生海海,尽兴、开怀,活出自己的光芒!

相关文章
|
12天前
|
弹性计算 人工智能 架构师
阿里云携手Altair共拓云上工业仿真新机遇
2024年9月12日,「2024 Altair 技术大会杭州站」成功召开,阿里云弹性计算产品运营与生态负责人何川,与Altair中国技术总监赵阳在会上联合发布了最新的“云上CAE一体机”。
阿里云携手Altair共拓云上工业仿真新机遇
|
8天前
|
机器学习/深度学习 算法 大数据
【BetterBench博士】2024 “华为杯”第二十一届中国研究生数学建模竞赛 选题分析
2024“华为杯”数学建模竞赛,对ABCDEF每个题进行详细的分析,涵盖风电场功率优化、WLAN网络吞吐量、磁性元件损耗建模、地理环境问题、高速公路应急车道启用和X射线脉冲星建模等多领域问题,解析了问题类型、专业和技能的需要。
2523 18
【BetterBench博士】2024 “华为杯”第二十一届中国研究生数学建模竞赛 选题分析
|
8天前
|
机器学习/深度学习 算法 数据可视化
【BetterBench博士】2024年中国研究生数学建模竞赛 C题:数据驱动下磁性元件的磁芯损耗建模 问题分析、数学模型、python 代码
2024年中国研究生数学建模竞赛C题聚焦磁性元件磁芯损耗建模。题目背景介绍了电能变换技术的发展与应用,强调磁性元件在功率变换器中的重要性。磁芯损耗受多种因素影响,现有模型难以精确预测。题目要求通过数据分析建立高精度磁芯损耗模型。具体任务包括励磁波形分类、修正斯坦麦茨方程、分析影响因素、构建预测模型及优化设计条件。涉及数据预处理、特征提取、机器学习及优化算法等技术。适合电气、材料、计算机等多个专业学生参与。
1525 15
【BetterBench博士】2024年中国研究生数学建模竞赛 C题:数据驱动下磁性元件的磁芯损耗建模 问题分析、数学模型、python 代码
|
4天前
|
存储 关系型数据库 分布式数据库
GraphRAG:基于PolarDB+通义千问+LangChain的知识图谱+大模型最佳实践
本文介绍了如何使用PolarDB、通义千问和LangChain搭建GraphRAG系统,结合知识图谱和向量检索提升问答质量。通过实例展示了单独使用向量检索和图检索的局限性,并通过图+向量联合搜索增强了问答准确性。PolarDB支持AGE图引擎和pgvector插件,实现图数据和向量数据的统一存储与检索,提升了RAG系统的性能和效果。
|
10天前
|
编解码 JSON 自然语言处理
通义千问重磅开源Qwen2.5,性能超越Llama
击败Meta,阿里Qwen2.5再登全球开源大模型王座
596 14
|
1月前
|
运维 Cloud Native Devops
一线实战:运维人少,我们从 0 到 1 实践 DevOps 和云原生
上海经证科技有限公司为有效推进软件项目管理和开发工作,选择了阿里云云效作为 DevOps 解决方案。通过云效,实现了从 0 开始,到现在近百个微服务、数百条流水线与应用交付的全面覆盖,有效支撑了敏捷开发流程。
19283 30
|
10天前
|
人工智能 自动驾驶 机器人
吴泳铭:AI最大的想象力不在手机屏幕,而是改变物理世界
过去22个月,AI发展速度超过任何历史时期,但我们依然还处于AGI变革的早期。生成式AI最大的想象力,绝不是在手机屏幕上做一两个新的超级app,而是接管数字世界,改变物理世界。
498 49
吴泳铭:AI最大的想象力不在手机屏幕,而是改变物理世界
|
1月前
|
人工智能 自然语言处理 搜索推荐
阿里云Elasticsearch AI搜索实践
本文介绍了阿里云 Elasticsearch 在AI 搜索方面的技术实践与探索。
18845 20
|
1月前
|
Rust Apache 对象存储
Apache Paimon V0.9最新进展
Apache Paimon V0.9 版本即将发布,此版本带来了多项新特性并解决了关键挑战。Paimon自2022年从Flink社区诞生以来迅速成长,已成为Apache顶级项目,并广泛应用于阿里集团内外的多家企业。
17530 13
Apache Paimon V0.9最新进展
|
3天前
|
云安全 存储 运维
叮咚!您有一份六大必做安全操作清单,请查收
云安全态势管理(CSPM)开启免费试用
368 4
叮咚!您有一份六大必做安全操作清单,请查收