首页 程序人生 个人问题总结:JavaBoy第一个正式参与的实际项目

个人问题总结:JavaBoy第一个正式参与的实际项目

第一个有自己负责模块的项目接近尾声,总结一下自己在这个项目中产生的问题,希望以后减少、不会再犯此类错误。

项目分为java语言开发的web端与python语言开发的app端,后端与后端之间通过openFeign通信,此次开发我主要负责后端代码。

下面我以一个学生管理系统为例,记录一下本次开发遇到的不足。

开发时的问题总结
问题1:字段冗余、混淆
在建表之初,由于建表风格不统一(不是同一个人)带来了以下问题。

表的逻辑外键出现了多种写法:student表的id,在class表是studentId,在team表就成了student。

在设计之初设计了冗余字段:因为双端互通,数据库选型不相同,app端使用sqlite,而web端使用pgsql。数据同步时,为后续拓展考虑,给student设置了两个键:id、sync_id,由于在开发过程中混淆了两者,导致后续开发在新建数据时,必须让id=sync_id。

上述两种问题都有解决方案:第一个需要统一建表风格;第二个则是明确开发时到底要不要sync_id,如果需要,那就明确id和sync_id的使用场景:id只需在新增时保持唯一,而查询和同步都是使用sync_id作为键,不需要额外处理id键。(可能这个解决方法并不好,目前就想到这里了)

问题2:中文、枚举与标识
这是一个开发的基本规则问题,这次开发我不仅是懒而且也赶进度,犯下了这个问题。

在存学生考试评级的时候,level字段应该存一个通过字典/枚举实现的k,比如1对应优秀,2对应良好。

因为图省事,我直接存了'优秀'在level字段中。

在设计性别字段时,一开始使用了枚举类型,方便Excel导入导出的转换(使用了easyexcel的转换器功能),但是枚举类型在存储的时候会优先存index,而非value,我设置的是{key=1,value="男"},{key=2,value="女"}。实际存储到数据库中则是0=男,1=女。在最初的过程中没有遇到问题,后续因为体育课的评分要分类全性别组0、男组1、女组2。导致数据再此出现不一致情况。

原因是:JPA默认使用枚举的ordinal()索引值存储,而非自定义的value,下次使用枚举时,应该首选string类型数据作为key,可以直接通过注解存储

@Enumerated(EnumType.STRING) // 存储枚举名称 "MALE", "FEMALE"
问题3:git分支管理
项目前期在其他人搭好架构后,基本都是我在写,因此我一直在用一个test分支,后续因为赶时间,其他人也要参与实现部分功能。由于没有明确的分支管理,多人使用一个分支,可能造成了代码丢失,代码混乱等问题。后续开发应该严格遵循一人一分支,最后merge总分支的实践。

后续补充:可能不是因为分支管理问题,后续使用了多分支,但是我的代码还是在git不会提示的情况下被merge的代码覆盖,很头疼。

后续再补充,感谢客户端开发的大哥告诉我:分支管理的问题,我的另一个同事写完代码后解决冲突没有仔细合并,导致 了代码丢失,这些丢失都可以通过git的提交记录回溯。尤其在idea中,记录了merge对两个线的代码的修改情况,可以明确看到用户是怎么合并的。

问题4:PGsql的jsonb使用情况
有一个模块由我来负责设计、开发:一个考试,考试包括了成绩梯度划分、扣分项详细说明。在我的设计中,创建了三张表:考试规则表、考试规则详情表(外键考试规则表)、扣分项明细表(外键考试规则表)。在创建考试规则时,前端只需要在一张大的table上输入三张表信息,需要先请求createExamRule,通过返回的id再请求创建其他两张表。三次分别的数据库更新操作无法保证事务一致性,尤其是当考试规则创建成功后,考试规则详细/扣分项一旦创建失败,前端只能再调用删除数据保证数据一致性。这是创建时的弊端。在更新时,分别更新带来的问题更大:考试规则更新成功,而考试规则详情更新失败的情况难以回滚,考试规则详情与扣分项的增删改需要前端额外判断修改。

在开发进行大半后,前端提出了以后的后端开发都是设计为使用extra直接存储详情内容和扣分项,不需要这么复杂的额外的工作处理。没办法,我对pgsql的掌握不精,初次使用忘了jsonb存储,只能求前端硬着头皮和我一起写....

那么为什么使用jsonb?

首先就是事务一致性的问题,使用jsonb就意味着仅对一个表操作,原子性得到保证。

更新操作也是原子的,能减少前后端工作量

还有就是这里可能用不到的,jsonb的查询方式也非常灵活。

举个例子:

SELECT * FROM exam_rules
WHERE rule_config -> 'deduction_items' @> '[{"item_code": "LATE"}]';
-> 操作符:从 JSONB 对象中提取指定键的值

@> 操作符:检查左边的 JSONB 是否包含右边的 JSONB(包含操作)

问题5:代码耦合
在开发python项目中,对语言比较陌生+时间紧迫,很多代码由trae辅助完成,trae写代码不会特意注意项目架构,主要以完成用户需求为主。因此在一个service中会混合多个entity使用,调用读json频繁新造轮子,造成代码比较臃肿。在开发初期这部分问题我没有处理,后续虽然整体代码量不大,但是我还好注意到了这个问题,分清楚工具类,service解耦,希望下次再写陌生语言的项目也能提前注意,做好规范。

问题6:代码的全局观
在开发项目时,对自己代码的把控度不够。尤其是py的项目,在修改代码时,经常会出现修改了新增,但查询和修改的接口没有同步进行修改,导致后续和前端联调时频繁出现原本已经可以使用的接口,由于局部修改不可用,影响了开发进度。问题的主要在于我的项目经验不足,整体代码思路不够清晰且语言陌生带来的项目熵增非常严重。

此外,项目使用了openFeign作为数据交互通信接口,Java端和python端的数据交互功能频繁出现问题,两者使用的数据库不一样,数据类型会有错误,一方table修改,另一方不仅要修改table,更要去修改其对应的方法,本就在单个模块上步履维艰,两个模块上的同步修改更是雪上加霜。在这次项目中fix 同步xxxx是我最多的commit...

 

出差时的问题总结:
代码基本开发完成后没想到我还需要去部署项目,先给甲方使用并继续完善,这个过程中,避免不了业务和逻辑问题的修改,前前后后大概半个月,总结一下出差时出现的问题。

问题1:项目部署nginx与docker的使用
由于疏于对nginx的了解,在学习nginx教程时也只是了解了一些非常基础的框架理论,无法支撑我的实际操作。在出差需要本地部署nginx时仅依赖trae帮我生成对应的conf文件,在trae生成的conf文件不符合项目实际需求时无法处理,带来了出差后开发与测试进度的小拖延,后面在假期稍微学习了一下nginx。了解了最基本的使用,在后面docker部署nginx出问题的时候,也能够及时排查问题,提高了效率。

本人对于docker的使用几乎也只记得docker ps和docker pull push等操作,现在因为项目包含了mq、pgsql、minio、redis等其他中间件,Windows本地部署还是很麻烦的(虽然我确实实现了Windows本地部署minIO、redis和pgsql)为了提升自己,也是确实中间有稍微的空闲时间,使用了Windows上的docker desktop和docker-compose实现了一系列的部署。这中间主要遇到的问题是:对挂载概念的不熟悉,在一开始使用nginx时,虽然成功将nginx.conf挂载到docker中。但在前端部署好dist文件后,本以为可以直接使用,后经教我的同事提醒才知道,nginx中的html没法直接映射到本地,也需要挂载。本来自己也清楚测试环境dev和生产环境prod,但是在实际使用时一开始确实忽略了两个yaml文件的重要性,一直在修改dev文件,给自己的部署进度带来了很多不便。

问题2:远程开发的弊端
出差时,我作为后端的代表,很多信息难以明确传达给同是后端开发组同事,导致很多数据不符合预期。临近项目尾声,我除了负责自己的部分开发功能,部署项目以及测试,还要对他们的代码把个关,尤其有的同事比较摸鱼,AI跑出来的代码不自己仔细看就直接commit。还有人AI修改删除了部分函数也直接commit,拖慢了进度。后续修改几乎都由我一个人负责,这个问题也几乎消失。

问题3:计算机网络的不了解与树莓派不熟悉
因为是多个软件协同,通过上述信息大家可以知道我的这个项目是web+app,并且app需要额外绑定树莓派。甲方又需要在独立的内网环境(我自己搭建,让树莓派作为交换机)中运行,因此网络的连接问题对我造成了很大的困扰,曾经上学时所学的计算机网络,我现在连7层结构都印象模糊,WAN口LAN口更是只记得一个名字,在连接整个项目时,遇到了一些困难。

树莓派里的SD卡非常脆弱,意外关机可能会导致SD卡无法正常使用。

树莓派的螺丝大小不一,在装拆的时候对应不上螺丝很难拧。。。(物理意义上的非常困难)

还有最棘手的,也是现在最难把控的问题:树莓派(本身也作为交换机)偶尔连不上局域网,至今不知道具体原因,只能依靠重启树莓派解决问题(感觉是线或者接口太脆弱了?)。指纹识别模块的异常操作会导致设备异常,使设备不可用,在部分情况下可以通过拔插指纹模块解决,但是大部分情况下只能通过重启树莓派解决对应问题。这个问题困难点在于团队里的指纹模块、树莓派是采购的,没有人会硬件设备,无法对这部分进行优化。

问题4:实际业务与开发时的差距
甲方实际体验软件后,发现开发与实际的愿景还是有区别的。以大学体测为例,50米跑步、3000米跑步是多人同时开始,在设计时不论是前端还是后端都很容易将他们归为一类。但是实际使用情况下,我们的项目在场景上无法全方位替换秒表功能。3000米跑大家间隔相对较大,可以每个人一个结束计时器,软件上可以操作的过来,而50米跑的时候,大家相差较多,如果每个人一个计时器完全无法提供实际功能。

总结
这次项目虽然还没有交付,通过上述问题,我已经学会了很多:pgsql的使用、开发规范、中间件nginx与docker的使用,对树莓派以及linux操作系统有了更进一步的了解,对git的使用方法也有了加强。对我来说这次的收获还是很多的,最后希望项目验收能顺利进行。

站星网

第一个有自己负责模块的项目接近尾声,总结一下自己在这个项目中产生的问题,希望以后减少、不会再犯此类错..

为您推荐

我的2025:做项目、跑副业、见人、奔波、搬家、维权、再回上海

2025 年,如果让我用一句话定性,我会说:我在变强,也在重新选择自己的人生结构。这一年我做了很多事,多到我一度不敢回头看。表面上看,我一直在“往前”:写内容、做项目、跑副业、见人、奔波、搬家、维权、再回..

独立开发者的一周:把生活和项目都推进一点点

前言#上周日我写下「独立开发者的一周」系列的第一篇文章。很快一周时间过去了,又到了总结的时候。最近除了日常工作外,我竟然连续坚持了一个多星期的公众号日更!(叉腰)由此也意识到了那些连续一年,甚至好几年..

再造一个“本土版”TEMU?巴西站官宣!正式向本地卖家全面开放

来源:运无界跨境物流平台日前,拼多多旗下跨境电商平台TEMU 正式宣布向巴西本地卖家开放入驻。此前,TEMU 在巴西仅提供由海外卖家发货的商品。今年 8 月,平台已开始在巴西小范围试点本地卖家入驻计划,而本次全面..

成功运作一个开源项目的 15 个要点

运作开源项目很容易。所有你需要做的就是让你的源代码可用和开源,对吧?嗯,也许。其实,开源项目是否成功取决于你对项目成功的定义。且不论你是怎么定义的,创建开源项目需要大量的工作。如果你已经有了目标,那么..

ABP.Net Core使用教程(一)启动模版项目

只需要简单的3步:1,到官网下载模版项目 https://aspnetboilerplate.com/Templates2,用VS2017打开,将Web.Host设置为启动项3,在程序包管理器控制台(Nuget控制台)里设定默认项目为EntityFrameworkCore,执行命令..

从程序媛角度去看项目管理

需求管理下图描述的是程序员从接到需求到开发环节的过程:一般我们首先会收到产品的PRD或交互稿,被询问今天什么时间点是否有空,进行需求评审。时光匆匆,回想起刚毕业那时,我望着冗长的PRD,直接跳过背景、目的等..

ASP.NET如何将Views文件夹从项目分离

将 Views 文件夹从 ASP.NET 项目中分离是一个常见需求,比如为了实现模块化或分层架构。以下是实现此功能的完整步骤,从项目中分离 Views 文件夹,将其移到另一个独立的文件夹或项目中,并确保视图渲染仍然正常。1. ..

使用shields.io来实时显示GitHub项目star、watch和fork的数量

如何获取GitHub repo实时的star,watch和fork数量呢?这里推荐一个Shields.io工具,可以实时生成GitHub徽章,同时显示star数。显示效果如下:什么是 Shields.io?Shields.io 是一个开源项目,用于生成各种类型的徽章..

微软 .NET 9 正式发布!专为云原生和生成式 AI 应用设计

微软正式发布了 .NET 9,这是一次重大的版本更新。微软在 .NET 9 中带来了一系列新特性和改进,主要聚焦在性能优化、云原生支持、AI集成以及开发者体验的提升。以下是一些重要的更新亮点:性能改进:在 .NET 9 中,..

关于项目管理的若干建议

今天整理电脑,发现自己去年年初给老板写的这个很好,拿出来和大家分享一下《关于项目管理的若干建议》1、 人尽其才,成本优先技术开发型公司最主要的管理就是人员的管理,如何最大程度的利用好现有人才,发挥其最大..

EF Core在非MVC项目中需要手动释放吗?

EF Core 在非 MVC 项目中需要手动释放。在 MVC 项目中,EF Core 会自动释放数据库连接。但是,在非 MVC 项目中,需要手动释放数据库连接,以避免内存泄漏。在 MVC 项目中,如果注入使用Entity Framework Core(EF) ,..

使用try-convert工具把.NET Framework项目迁移到.NET Core

try-convert是一个简单的工具,有助于将 .NET Framework 项目迁移到 .NET Core。dotnet/try-convert GitHub地址:https://github.com/dotnet/try-convert如何使用 try-convert将其作为全局工具安装:dotnet tool ins..

项目管理中的大杀器—承诺

如何保证项目进度按照计划进行是每个项目经理工作的重点。每个项目经理的方法和手段各不一样。今天我和大家介绍一下我经常使用的一种方式,承诺。具体意思是指,让整个项目的干系人进行相应的承诺,从而保证项目向..

你熟悉哪些.NET开发框架和库?请列举一些你曾用过的,并谈谈你在项目中使用它们的经验

以下是一些我熟悉的.NET开发框架和库:ASP.NET Core:ASP.NET Core是跨平台的Web应用程序开发框架。我见过许多项目使用ASP.NET Core构建Web API和Web应用程序。它具有良好的性能和可扩展性,支持依赖注入、身份验证..

如何开发VSCode插件

要开发 VSCode 插件,你需要遵循以下步骤:安装 Node.js:确保你的计算机上安装了 Node.js。你可以从官方网站 https://nodejs.org/ 下载和安装最新版本。安装 Yeoman 和 VSCode 插件生成器:Yeoman 是一个用于生成项..

企业项目选择.NET6还是.NET8?

企业项目选择.NET6还是.NET8,主要取决于以下几个因素:项目需求:如果项目有比较新的需求,如微服务、云原生等,那么选择.NET8会更合适。项目现状:如果项目已经使用.NET6,那么可以继续使用.NET6,无需进行重构。..

程序员失业了可以做什么?转行还是创业?

程序员可以转行哪些职业?程序员失业后,可以考虑转行到以下领域:数据分析师:数据分析是一个快速发展的领域,需要掌握数据分析工具和编程技能。程序员已经具备了编程技能,可以通过学习数据分析工具(如Python和R..

Vue安装和创建Vue项目

1、安装Node.js下载地址:https://nodejs.org/en/download/2、执行npm install --global vue-cli 命令,全局安装vue-cli3、执行vue init webpack vue-project 命令其中vue-project 是自己的项目名称如下图所示,执行..

在IIS部署React前端项目

在IIS上部署React前端项目,在不是根路径的时候刷新页面会404,可以通过url rewrite设置解决这个问题。首先在react项目中运行npm run build打包项目。然后在IIS上创建一个站点,把build文件夹里的内容拷贝到站点文件..

Blazor适合大型项目吗?

总体而言,Blazor 适合大型项目。Blazor 具有以下优势,使其适合大型项目:可扩展性:Blazor 使用 WebAssembly 作为运行时,这使其具有良好的可扩展性。Blazor 应用程序可以使用 WebAssembly 的异步执行和并行执行功..

发表回复

返回顶部

微信分享

微信分享二维码

扫描二维码分享到微信或朋友圈

链接已复制
木德育儿网-健康孕育知识分享_育儿百科知识大全观知健康-健康知识小常识_养生知识分享交流平台三省养生网-养生文化分享与交流_健康知识传播知识库乾藏国学网-国学文化传播_国学经典分享与传承易学新知网-风水知识分享平台好孕堂-助孕健康知识--查询、助孕小知识分享无双运势网 - 易学爱好者交流平台!一步达贷款社区--·中介办卡贷款技术·网贷口子·卡民论坛app好运来网-易学知识分享平台_易经入门零基础自学曲大夫助孕-助孕知识分享交流平台道情先生-风水交流平台_道可道非常道巧农网 - 农业技术知识_乡村创业致富好帮手天慧理财网 - 专注财富增长_最全面的综合理财知识分享网站亿福缘网 - 风水知识分享平台亿洋易学-专注于易学知识分享的平台健康助孕科普内容平台,分享专业助孕知识-孕知网孕好网_专注试管婴儿科普_助孕问答_助您有好孕!包天龙运势网 - 易学爱好者交流平台!九六易学网 - 为易学爱好者提供一个优秀的学习知识平台来好孕 - 愿好运伴您而行风水知识网算命久久网-今日运势分享_祝您好运常伴品千年雅韵,书一纸风华 - 诗词百科诗词名句网叮当历史 - 古文排行榜_历史人物文化经典故事大全来福网 - 传统国学典故_国学文化感悟人生斗转星移网富凯风水孕力加持网-好孕汇聚之地_孕力加持_好孕终至幸孕方舟网-专业试管助孕资讯解析速配精选网-专注于理财知识分享交流平台看测运势网-周易生辰八字测算_免费八字合婚_婚姻配对测试迪肯风水头条-风水知识交流分享平台易学迷-易学风水学入门知识分享与交流久道网 - 传统国学典故_国学文化感悟人生乐禧易学网 - 专注于易学高质量案例分享网站历史时间网 - 全球历史上的今天大事件风水388 - 风水学入门_居家风水小常识伍贰易学网-专注于易学知识分享平台星座爱-专注于星座运势知识分享巴巴百科 - 专业知识问答百科分享平台族女网-引领国学新时尚_让国学流行起来_传统易学风水文化学佛笔记句子汇-每日经典语录短句推荐叶翁网-风水易学知识分享_周易易学知识占卦塔尘网素食购--素味禅心、膳养菩提术灿网-风水国学起名十二生肖运势_易学阴阳风水秘术雀牛网-2026热门汽车品牌排行榜_新能源汽车推荐_床车房车选购攻略_您身边的汽车专家植物迷-探索植物属性_种植技术知识分享平台龙哥易学网古诗词名句_诗词名句大全_古籍文学资料库-好再来网番茄免费文学平台_免费网络小说_无弹窗广告小说阅读网_诗词古文文学知识分享-番茄文学网工作岗位职责网-本年度各行业部门工作职责大全_提供各行各业岗位职责范本久图网-唯美图片_卡通动漫图片_天堂图片_帅哥美女艺术图片_数以万计美图资料库醋椒影视网-2026年热门电影作品推荐_最火爆的电视剧导航网站常能网-带您了解那些经典的历史故事超追影视网-2026最新热门电影_热播电视剧在线追剧_高清免费短剧视频导航巴佩体育网-体育赛事新闻资讯_2026最新实时体育赛事比分捷报站星网 - 用心服务每一位站长,助力每一份梦想八万四千法门助好孕 - 助孕小贴士助你有好孕经书网 - 以音声作佛事,聆听与观想的修学园地 jingshu.net佛教音乐网 - 海量佛乐、梵呗、禅音在线试听与下载塔尊佛教网|借视频之舟,渡烦恼之海 Tazun.Cn聚合地图网好客运势网 - 经典典籍文化传承者听佛音 - 最好听的静心天籁之音老司机知识库--你的自学加速引擎,海量资源带你极速成长!唯美图片 - 高清唯美壁纸头像背景图库_PicURL图集素超人 - 国内领先的素食分享平台点优作文网 - 优秀作文大全_日记周记_读后感_历年中考高考范文顺发万年历-2026年日历,2026年老黄历查询,2026年黄道吉日素食学佛网佛教导航 - 开启智慧之旅,连接十方法缘 | fjdh.org.cn顺运堂 - 专业家居风水布局,八字命理分析,助您家宅兴旺,运势亨通地藏论坛-佛教网络净土_佛法综合社区生食主义哦嘿养殖网 - 热门乡村养殖发展项目_养殖技术知识分享大师看风水道秘相取名网-生辰八字五行取名_十二生肖取名品读名篇佳句,涵养诗意人生 - 古诗词网新华字典在线查字_在线汉语学习_汉字拼音_笔画顺序_组词造句_英语词典_诗词名句-诗文谜藏佛寺官网国学在线 - 国学网,国学学校,国学经典,国学地图弘善佛教网-传播正信正知佛法的佛教网站素食美-关爱健康_素食之美藏佛坑官网必过留学网_海外院校库_留学申请条件_留学费用_排名查询江湖以冷网 - 品读历史故事,感悟世间冷暖。生死书 - 佛教文化传承与生命智慧探索平台乐乐易学网-易学知识分享_生辰八字查询_五行八卦测算久食宿 - 旅游出行特色民宿推荐_全国名宿信息一览表趣知道 - 提问与分享,人人都是知识分享家 | Quzhidao.Com地藏孝亲网--南无大愿地藏王菩萨给农网吃好素-让生活因素而美情感语录网-婚姻情感语录_经典爱情语录_情感短信七七爱生活网十二星座_十二生肖运势_配对表_查询- 星座袋风水人家-国学文化风水知识交流平台道法网-风水运势解析_家居风水知识分享玖爱星座网-星座运势配对知识分享交流就识趣_专业中国传统文化网站_风水学藏经阁-最全的佛教经典典籍文库108工具网——您的全能在线工具箱中医文献网-中医古籍全文数据库推荐奇闻网-探索历史故事_带您了解历史上那些事儿八零生活网品酒啦-酒文化知识分享平台古籍文学网-最全的古文化知识分享平台公司起名-专注于弘扬传统文化的平台_宝藏典籍网非常易学网-生辰八字预测_生肖运势星座匹配居士之家-最全面的华人居士在线交流网站平台素超人-专注于善知识分享交流平台素超人 - 正能量善知识分享平台素超市 - 纯素生活购物平台VisaMastercardAmerican ExpressPayPalDiners ClubDiscover斗图趣 - 斗图表情包_有趣的斗图资源库富达裕-古文化经典藏品知识分享平台学佛网手机版笑一个吧 O(∩_∩)O 笑话大全_给生活加点笑料-XiaoYiGe.Cn班超文学网-优秀文学知识分享交流平台政卿事迹网-带您了解历史上的那些事儿素满香取名去 - 姓氏取名一览表_百家姓名字大全学佛网 - 佛弟子在线网络分享交流平台正能量网 - 传递正能量_真善美美文推荐搞笑gif动图网 - 内涵爆笑段子gif动态图_QQ表情包恶搞图片大全_97Gif.Com