为了“降本增效”,我用AI 5天将SpringBoot迁移到了Nodejs
ccwgpt 2024-11-05 09:29 29 浏览 0 评论
背景
大环境不好,各行各业都在流行“降本增效”,IT行业大肆执行“开猿节流”,一顿操作效果如何?普通搬砖人谁会在乎呢。
为了收紧我的口袋,决定从头学习Nodejs+TypeScript,来重写我的Java后端服务。
其实这波操作并不是仅仅为了实操Nodejs,更主要的原因是为了运行我的几个Java项目,服务器开支还是有点超预期了。其中最主要的原因就是Java开发的服务太占用系统内存了。
我目前自己开发的项目有:易登、易支付、云仓库管、AI BOT、记忆旅途博客、万巷聚合推广平台,这些一个个Java作为后端服务的项目让我不得不买了两个云服务器,一年成本着实不小。
我最开始做的是记忆旅途博客,当时1C2G的服务器足够了。但是随着需求的增多,相关项目也就一个个拔地而起。根据统计平均每个项目占用内存600MB左右,看的我心里真是有点着急。虽说的主业就是Java开发,但是在money面前,我还是通过一次次的比对,决定要重写一部分项目,来减轻我的内存负担。
技术选型之路
为了达到内存减负目的,我对比了很多个后端技术,对比的维度有:上手难度、生态丰富度、在工作中的使用度、对内存消耗等几个方面;调研的技术有:Python、Nodejs、Golang,俗话说没有最好的只有最合适的。经过对比最终选择了Nodejs作为新的后端开发语言来进行重写。
最终选择Nodejs的原因有以下几点:
1. 使用Nodejs编程,最终使用的是JavaScript脚本语言,虽然我本职不是前端开发,但工作中经常在使用JavaScript,可以说是我的第二编程语言,上手起来难度最小,几乎拿来即用。
2. Nodejs有一个最大的优点就是单线程和非阻塞IO可以处理大量并发请求。我的这几个网站基本都IO密集型网站,Nodejs的优点完全可以得到最大发挥。
3. Nodejs生态相对非常完善,基于庞大的npm生态,开发起来更加高效。
4. Express Web服务开发框架,使得开发web应用更加得心应手。
5. 最主要的是Nodejs占用内存真的少,对比之后,实现相同的功能只需要90MB左右的内存,跟Java的600MB相比,看着大大的欣喜。
Nodejs后端开发技术学习
简单说只需要JavaScript基础就可以进行开发了,但是工欲善其事必先利其器,完全使用原生JS开发效率肯定大打折扣。为此花了一天多的时间学习了以下几个技术:
1. TypeScript:原因是因为JavaScript是弱类型的脚本语言,字段类型太过灵活,是把双刃剑。作为Java出身的程序猿还是比较容易接受静态类型和面向对象的编程方式。而TypeScript作为JS的超集,完全兼容了JS的语法,又进化出了面向对象、静态类型等高级特性,Java Boy看了喜上心头。主要学了相关语法,其实跟Java还是比较像的,用起来也比较亲切。
2. Express web开发框架:相当于Java中的SpringBoot,将web开发难度降到了极致,开发效率得到了成倍的提升。这个框架主要是看了如何使用的和请求中的各种类型参数如何获取、处理。
3. Sequelize:数据库ORM框架,用来提升数据库交互开发效率,相当于Java中的Hibernate、Mybatis。这个框架基本不用学,只需要看下如何连接数据库、字段映射,其它的单表查询语法只需要了解即可,具体用的时候知道有相对应的的东西,不知道如何用直接查官方文档即可。直接使用sql进行的基本查询更不在话下。
4. Redis-connect:redis相关操作类库。主要看了如何连接redis,具体操作跟Java基本一致。
5. PM2:PM2 是一个守护进程管理工具,帮助您管理和守护您的应用程序。由于Nodejs是单进程、单线程的,导致的严重后果就是如果程序运行过程中有异常处理不当,整个程序直接就挂掉无法提供服务了。使用PM2的原因就是它可以守护这个Nodejs进程,当发现进程出现异常后,可以自动重启,不至于直接宕机。
重写之旅
相关技术进行了储备之后,就要开始项目的重写了。重写工程不会是一蹴而就,先选了一个功能点相对少的“万巷”进行重写。
这里的重写也可以说是翻译,将Java语言翻译成TS语言。翻译是有窍门的,放到前几年估计没有好办法,只能一个个代码自己手敲。但今非昔比,在这个“无AI,不创业”的年代,翻译的工作就相对轻松了许多。直接对着AI这么说:
可以看出,这个接口的Controller基本就翻译过来了,当然具体的实现逻辑还需要再做调整,如果一个Controller有十几二十个接口,AI这么一帮忙,省了大把的时间。
AI对数据库实体类的翻译更是高效,来看一个例子:
翻译结果并没有达到预期,因为如果字段上没有@Column字段,ORM框架查出来的数据是不能映射到实体类中的。我们可以调整一下提示词:
提示词经过这么修改之后,AI生成的代码基本就是可用的了,即使还有需要调整的部分,也是微调即可了。如果数据库有几十张表,靠手码代码来翻译这些实体类,估计内心是非常绝望的。
剩下的就是具体逻辑的实现了,也是可以让AI来辅助进行翻译的,如果效果差不多,仅需要微调就行了;如果效果相差甚远,就需要自己来手动翻译了。
总结
1. 编程思想是互通的。虽然编程语言语法、实现形式、技术路线各有千秋,但是编程的思想是相通的。学通了一种编程语言,其它语言很多能触类旁通,比如你是一个技术还可以的java boy,当你去阅读其它编程语言的代码,可能看着语法很奇怪,但是有些逻辑还是能捋出来的,即使让你用那种语言写不出来。
2. 技术没有优劣,只有合不合适。技术实现千千万万,但在不同领域、不同业务中各有优劣。很流行的一句话“PHP是最好的语言”,很调侃的一句话,但也说明了PHP有那么一段时期对彼时的多数业务是适用的。但正所谓时势造英雄,近年来的人工智能领域python正大范围落地、云原生领域Go正大行其道。技术选型不能迷信,合适的就是最好的。
3. 拥抱AI。不同于元宇宙、区块链当初被吹得神乎其神,最终一切沉寂于海底,AI正在切切实实影响和改变着我们每个人的生活,未来会有更多生活场景接入AI。元宇宙和区块链热度低了很多,但并不是它们技术上不行,只是离普通人太远了。而AI则不同,它已经深深嵌入我们日常生活中,你有意、无意能感受到的。
身处IT界,有一句看似“谣言”的话:人工智能越来越智能之后,以后就没有程序员这个行业了。个人感受,如果真的因为人工智能导致程序都由机器来生产,可能到那时也就不需要人类这个物种了。但未来谁又能说得准呢?当ChatGPT凌空出世时,多少人被惊叹出了“哇”,我是其中一个,第一次用的时候真的很震惊,但在ChatGPT发布的前一天,又有几个人会知道明天会出现这么一个惊艳的东西。
相关推荐
- 用Deepseek扩写土木工程毕业论文实操指南
-
用Deepseek扩写毕业论文实操指南一、前期准备整理现有论文初稿/提纲列清楚论文核心框架(背景、现状、意义、方法、数据、结论等)梳理好关键文献,明确核心技术路线二、Deepseek扩写核心思路...
- 985学霸亲授,DeepSeek也能绘6大科研图表,5分钟就出图
-
在实验数据处理中,高效可视化是每个科研人的必修课。传统绘图软件操作复杂、耗时费力,而智能工具DeepSeek的出现彻底改变了这一现状。本文将详解如何用DeepSeek一键生成六大科研常用图表,从思维导...
- AI写论文刷屏?大学生正在丢掉的思考力
-
一、宿舍深夜:当论文变成"Ctrl+C+V"凌晨两点的大学宿舍,小王对着电脑屏幕叹气。本该三天前开始写的近代史论文,此刻还一片空白。他熟练打开某AI写作网站,输入"论五四运动的...
- Grok在辅助论文写作上能不能既“聪明”又“可怕”?!
-
AcademicIdeas-学境思源AI初稿写作随着人工智能技术的飞速发展,论文写作这一学术任务正迎来新的助力。2025年2月18日,美国xAI公司推出了备受瞩目的Grok3模型,其创始人埃隆·...
- 大四论文沟通场景!音频转文字难题听脑AI来化解
-
大四学生都知道,写论文时和导师沟通修改意见,简直是“过关斩将”。电话、语音沟通完,想把导师说的修改方向、重点要求记下来,麻烦事儿可不少。手写记不全,用普通录音转文字工具,转完还得自己慢慢找重点,稍不注...
- 论文写作 | 技术路线图怎么画?(提供经典优秀模板参考)
-
技术路线图是一种图表或文字说明,用于描述研究目标、方法和实施计划。它展示了研究的整体框架和步骤,有助于读者理解研究的逻辑和进展。在课题及论文中,技术路线图是常见的一部分,甚至是一个类似心脏一样的中枢器...
- 25年信息系统项目管理师考试第2批论文题目写作建议思路框架
-
25年信息系统项目管理师考试第2批论文题目写作建议思路框架--马军老师
- 微信购物应尽快纳入法律框架(微信购物管辖)
-
符向军近日,甘肃省工商行政管理局发布《2016年上半年信息分析报告》。报告显示,微信网购纠纷迅猛增长,网络购物投诉呈上升趋势。投诉的主要问题有出售的商品质量不过关、消费者通过微信付款后对方不发货、购买...
- 泛珠三角区域网络媒体与腾讯微信签署《战略合作框架协议》
-
新海南客户端、南海网7月14日消息(记者任桐)7月14日上午,参加第四届泛珠三角区域合作网络媒体论坛的区域网络媒体负责人及嘉宾一行到腾讯微信总部座谈交流,并签署《战略合作框架协议》(以下简称《框架协...
- 离线使用、植入微信-看乐心Mambo手环如何打破框架
-
从2014年开始智能手环就成功进入人们的生活,至今已经演变出数据监测、信息推送、心率监测等诸多五花八门的功能,人们选择智能手环并不指望其能够改变身体健康情况,更多的是通过数据来正视自身运动情况和身体健...
- 华专网络:如何零基础制作一个网站出来?
-
#如何零基础制作一个网站出来?#你是不是觉得网站建设很复杂,觉得自己是小白,需求不明确、流程搞不懂、怕被外包公司坑……这些问题我都懂!今天华专网络就用大白话给你捋清楚建站的全流程,让你轻松get网站制...
- WAIC2024丨明日上午9点,不见不散!共同探讨智能社会与全球治理框架
-
大咖云集,硕果闪耀WAIC2024世界人工智能大会智能社会论坛将于7月5日9:00-12:00与你相约直播间WAIC2024上海杨浦同济大学哔哩哔哩多平台同步直播探讨智能社会与全球治理框架WAIC...
- 约基奇:森林狼换来戈贝尔时大家都在嘲笑 他们的阵容框架很不错
-
直播吧5月4日讯西部季后赛半决赛,掘金将迎战森林狼,约基奇赛前接受采访。约基奇说道:“当蒂姆-康纳利(森林狼总经理、前掘金总经理&曾选中约基奇)做了那笔交易(换来戈贝尔)时,每个人都在嘲笑他...
- 视频号带货为什么一个流量都没有?顶级分析框架送给你
-
视频号带货为什么一个流量都没有?遇到问题,一定是步步来分析内容,视频号带货一个流量都没有,用另外一个意思来讲,就可以说是零播放。为什么视频号带货一个流量都没有?跟你说再多,都不如来个分析框架。1、是否...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- MVC框架 (46)
- spring框架 (46)
- 框架图 (58)
- flask框架 (53)
- quartz框架 (51)
- abp框架 (47)
- jpa框架 (47)
- laravel框架 (46)
- springmvc框架 (49)
- 分布式事务框架 (65)
- scrapy框架 (56)
- shiro框架 (61)
- 定时任务框架 (56)
- java日志框架 (61)
- JAVA集合框架 (47)
- grpc框架 (55)
- ppt框架 (48)
- 内联框架 (52)
- winform框架 (46)
- gui框架 (44)
- cad怎么画框架 (58)
- ps怎么画框架 (47)
- ssm框架实现登录注册 (49)
- oracle字符串长度 (48)
- oracle提交事务 (47)