《项目踩坑日志》
文章平均质量分 80
用于记录在实际项目过程中遇到的问题,以及解决思路和方案。
王卫——David
CSDN博客专家 阿里云专家博主 Java领域优质创作者
展开
-
程序性能优化:MapStruct性能爆棚的实体转换工具
在之前的项目中大量使用了实体转换工具BeanUtils,特别是在进行复杂实体转换和在循环中使用BeanUtils会十分影响程序性能。基于这一点团队考虑使用更换性能更优的实体转换工具。基于性能这一点,团队考虑使用MapStruct。对与在程序运行过程中性能问题,MapStruct能够完全代替BeanUtils。由于MapStruct是在编译期间生成实现类代码,那么势必会影响程序的启动时间,这一点我们也需要考虑到。原创 2024-06-13 08:54:09 · 296 阅读 · 0 评论 -
前端接收后端数据时,遇到精度丢失的问题
之前项目开发过程中遇到过前端接收后端数据时,遇到精度丢失的问题。当时进行了问题记录,本篇博客针对于这个问题进行问题原因并进行多种方式解决这个问题。原创 2023-04-12 21:30:06 · 4062 阅读 · 2 评论 -
token详解
本篇博客主要从什么是token?为什么要使用token?如何使用token?项目实例这几个方面讲解token,通过本篇博客能够对token能够有更深入的理解,并且有思路应用在具体项目中。多角度看问题,多个维度看问题能够更加深入的理解和学习到该知识点。例如5w2h的方式。原创 2023-04-11 21:24:04 · 5361 阅读 · 1 评论 -
解决跨域问题
之前在项目开发过程中,出现并解决了跨域问题。现在来对跨域问题进行一个系统的学习和总结。通过本篇博客可以了解到解决跨域问题有哪些方法,并且详细介绍了CORS方法来解决跨域问题。$ . ajax() 是jQuery库提供的一个函数,用于向服务器发起异步 HTTP 请求。它可以执行多种类型的 HTTP 请求,如 GET 、 POST 、 PUT 、 DELETE 等。使用$ . ajax() 函数,我们可以向服务器发送数据并获取响应,而无需刷新整个页面。原创 2023-04-04 09:23:48 · 650 阅读 · 0 评论 -
28个项目实战典型案例总结收获
花费了18天的时间,将28个实际项目开发过程中的出现的问题,都进行复盘重现和再次认识,并和团队进行进行讨论交流。最后也是写了28篇针对于每个案例的总结;每个案例都有明确优化和规避方案。下面让小编分享一下其中的收获吧。在28个项目实战典型案例的学习过程中,有困难及时询问,完成有风险及时向领导汇报。团队有效交流讨论的重要性,期间有好几个问题都是与他人交流,寻求帮助,讨论中收获到了意料之外的收获。原创 2023-03-18 15:20:48 · 952 阅读 · 0 评论 -
项目实战典型案例4——生产环境app打包导致不能自动升级的问题
1. 闭环思维,按照流程完成相应任务之后,再次进行核对,自己核对和他人核对来保证不出现问题。另外也需要进行测试工作,再次进行闭环工作。2. 通过使用自动化打包脚本的方式,避免任务因素导致的问题原创 2023-03-18 09:19:26 · 412 阅读 · 0 评论 -
项目实战典型案例15——高并发环境下由于使用全局变量导致数据混乱 高并发环境下对象被大量创建,导致GC并且CPU飙升
1. 在项目开发过程中,对于公共变量的使用一方面需要慎重,需要考虑是否有并发,多线程的情况,然后根据实际情况选择对应的处理措施。2. 实例化类,也需要慎重,实例化类是有有必要。原创 2023-03-17 21:31:09 · 1332 阅读 · 0 评论 -
项目实战典型案例25——ar、第三方服务、用户三角形超级稳定耦合
1. 降低不可控制的因素,如其中的第三方服务,将其更换我我们自己能够管理维护的Tar做课系统,增加确定性,降低不确定性,提供稳定服务。2. 高内聚,低耦合 。每一个模块负责做一件事。权限(管理)Tar(做课)AR(教学)。彼此之间之后依赖管理。这样做的好处是便于后期进行扩展和各自维护。原创 2023-03-17 15:37:04 · 210 阅读 · 0 评论 -
项目实战典型案例18——开门小例子理解面向对象
面向对象没有好坏之分,只是各自的应用场景不同,根据不同的场景选择合适的开发思想。面向过程更偏向于小型工程,并且开发速度相对较快,设计相对简单。而面向过程,前期投入的时间相对较多,并且性对难以理解和入门。原创 2023-03-17 11:50:19 · 376 阅读 · 0 评论 -
项目实战典型案例28——生产环境nginx限制上传大小带来的灾难
1. 对于问题的解决方案不能只想到一种解决方案,我们需要相处3中以上的解决方案,通过评估在当前环境下,哪一种方案更为合适。2. 秉持二选二 二选三思维原创 2023-03-17 11:05:53 · 597 阅读 · 0 评论 -
项目实战典型案例3——fegin调用404情况
arpro生产部署了两台服务器,进行负载。都用的是同一个nacos命名空间。只更新了一台。导致请求到了没有更新的那一台所以出现了404问题。OpenFeign是Spring Cloud对Feign的二次封装,在Feign的基础而上支持了Spring MVC的注解。OpenFeign的@FeignClient可以解析Spring MVC的@RequestMapping @GetMapping 和 @PostMapping 等等。对生产环境需要有一份敬畏之心。原创 2023-03-17 09:42:04 · 2225 阅读 · 0 评论 -
项目实战典型案例11——生产环境重大事故
对于arpro这个项目。生产环境上布置了两套环境,一套A环境,一套B环境。这样做的意义是如果线上A环境出现意料之外的问题(A环境大面积崩溃不可用,A环境服务器出现问题等等)我们能够立即切换B环境供用户进行使用。A环境与B环境是完成一致的。这一次arpro生产环境出现好几个重大的问题。生产A环境没有及时进行构建,导致生产A环境与生产B环境版本不一致禅道上2022年5月1日的发版日志没有关联需求,导致发版流程上出现疏漏,会影响此后的发版流程。原创 2023-03-16 20:24:04 · 341 阅读 · 0 评论 -
项目实战典型案例26——nacos的命名空间名称和id不一致带来的思考
项目用的naocs做的配置中心和服务发现。由于开发环境和本地环境使用的都是同一个命名空间,我们多个服务相互调用的时候,由于开发人员本地启动把本地服务注册到开发环境同一个命名空间下,结果导致dev环境部分功能不能用(在线人员列表无法加载出数据)。之后分别给开发环境和本地环境建立了命名空间,但是之后发现建立的命名空间名称与命名空间的id不一致。将命名空间名称与命名空间id修改为一致或者不一致当时都花费不了多少时间,但是两种修改结果带来的影响是不一致的,以及体现出的思想也是不一致的。原创 2023-03-16 17:22:05 · 1125 阅读 · 0 评论 -
项目实战典型案例9——数据类型不一致导致equals判断为false
对课程id和班级id分别进行判断,如果分别一致就更新该课程班班级信息,拖过不一致就插入新的一条数据。由于这里使用将两个类型不一致的变量使用equals进行比较,结果肯定为false,导致会插入相同课程班级的数据,从而导致数据混乱。原创 2023-03-16 15:55:40 · 495 阅读 · 0 评论 -
项目实战典型案例2——sql优化 mysql执行顺序 explain关键字进行性能分析
在实际项目开发过程中,由于SQL语句查询11s导致接口请求超时,现在对SQL语句进行优化。清楚mysql执行顺序,以及explain关键字的使用之后,对于我们之后写出高性能sql有很大的帮助。原创 2023-03-15 21:13:23 · 489 阅读 · 0 评论 -
项目实战典型案例12——mysql数据库 数据类型与表字段类型不一致导致索引失效
mysql库中有两张表的查询速度特别慢,一张表是76015条数据,另一张表是217069条数据。推测使用由于数据类型与表字段类型不一致导致需要进行类型转换和索引失效导致查询速度慢的问题。1.与数据库打交道需要特别注意数据类型是否对应,不能忽视如何数据类型不一致会带来什么影响。2.在开发过程中规避掉索引失效的情况,不使用索引与使用索引带来截然不同的效率。原创 2023-03-15 20:08:59 · 2014 阅读 · 0 评论 -
项目实战典型案例5——发送调查问卷流程图例子(将不必要的逻辑放入前端)
本篇博客是对**发送调查问卷流程图例子(将不必要的逻辑放入前端)**进行的总结和进行的改进。目的是将经历转变为自己的经验。通过博客的方式分享给大家,大家一起共同进步和提高。需要明确什么时候必须将复杂的逻辑放入到前端,什么时候需要将复杂的逻辑放入到后端。能放入后端尽量放入到后端。对于一个功能模块来说前端调用后端的次数越少越好,减少前端的循环调用后端的接口进行复杂的逻辑处理。原创 2023-03-15 08:21:21 · 212 阅读 · 0 评论 -
项目实战典型案例21——面向对象复用、面向对象实现、立体化权限落地
本篇博客是对面向对象复用、面向对象实现、立体化权限落地进行的总结和进行的改进。目的是将经历转变为自己的经验。通过博客的方式分享给大家,大家一起共同进步和提高。面向对象的思想无处不在,更多的是从生活中映射的面向对象的思想。面向对象不一定是最好的,根据实际情况选择是面向过程编程还是面向对象编程或者是其他编程方式。软件设计的理论也是可以从日常生活中映射出来的,结合生活。原创 2023-03-13 19:53:51 · 275 阅读 · 0 评论 -
项目实战典型案例7——在线人员列表逻辑混乱反例
本篇博客是对在线人员列表逻辑混乱反例进行的总结和进行的改进。目的是将经历转变为自己的经验。通过博客的方式分享给大家,大家一起共同进步和提高。由于线程共享全局变量,并且在实际业务的过程中对全局变量进行了操作(修改),所以在高并发、多线程的条件下会产生公共变量导致数据混乱的现象。在项目开发过程中,对于公共变量的使用一方面需要慎重,需要考虑是否有并发,多线程的情况,然后根据实际情况选择对应的处理措施。原创 2023-03-13 16:36:57 · 296 阅读 · 0 评论 -
项目实战典型案例24——xxljob控制台不打印日志排查
本篇博客是对xxljob控制台不打印日志排查进行的总结和进行的改进。目的是将经历转变为自己的经验。通过博客的方式分享给大家,大家一起共同进步和提高。全局观、需要系统性学习,宏观了解xxljob可以从架构图入手:对于xxljob控制台不打印日志的排查,一开始的方向有些错误,不清楚控制台日志是持久化到数据库中,再从数据库查询出来的。日志记录的重要性:如果没有日志进行那么无法进行问题定位和解决问题。反应到工作学习上也是如此。五:升华。原创 2023-03-10 21:15:43 · 1274 阅读 · 0 评论 -
项目实战典型案例23——-注册上nacos上的部分服务总是出现频繁掉线的情况
spring cloud项目通过nacos作为服务中心和配置中心,出现的问题是其中几个服务总是出现频繁掉线的问题。原创 2023-03-10 21:10:33 · 1322 阅读 · 0 评论 -
项目实战典型案例22——原型图的面向对象思路
本篇博客是对原型图的面向对象思路进行的总结并进行的改进。目的是将经历转变为自己的经验。通过博客的方式分享给大家,大家一起共同进步和提高。面向对象的思想无处不在,不光是在架构设计,代码设计。在原型设计中也体现了面向对象的思想。原创 2023-03-09 21:27:15 · 266 阅读 · 0 评论 -
项目实战典型案例6——没有复用思想
本篇博客是对项目开发中出现的没有复用思想的反例进行的总结并进行的改进。目的是将经历转变为自己的经验。通过博客的方式分享给大家,大家一起共同进步和提高。1.在设计之初应该想到如何设计接口如何设计,如何提高效率,如何到达复用强,维护成本低,扩展性强。是面向对象的设计还是面向过程的设计,最后选择一种复合当前项目的设计思想,并按照这个设计思想进行设计和开发。原创 2023-03-09 08:40:31 · 506 阅读 · 1 评论 -
项目实战典型案例8——让软件的使用者成为软件的设计者
由于同时对产品进行多个需求的开发,并且当天都有需要上线的多个需求,1.为了避免推拉代码产生的冲突以及产生冲突找谁解决。2.确保代码的一致性。所以在开发群中创建了一个表格用于记录每个需求上线需要修改的环境、是否修改数据库、是否修改nacos。这样的操作就是;让每一个软件的使用者都成为我们软件的设计者的体现,这里表格就是软件,使用者就是每一个开发人员,把规则列好,谁需要谁就去表格里面填写。这就是让使用者成为了设计者非常典型的一个例子。针对于使用了软件的设计原则,与没有使用软件设计原则,带给的用户截然不同的体验。原创 2023-03-08 19:56:03 · 357 阅读 · 0 评论 -
项目实战典型案例20——内存长期占用导致系统慢
本篇博客是对生产环境出现内存长期占用系统慢的分析以及总结。目的是将经历转变为自己的经验。通过博客的方式分享给大家,大家一起共同进步和提高。由于出现内存长期占用导致系统慢这个问题是很早之前出现,现在进行复现比较困难。所以采取的是对于可能出现情况的一个分析,并没有深入的分析原因。通过这次的分析,对于有与代码质量的原因造成的内存飙升问题,一方面可以通过代码质量进行解决,另一方面也可以通过压力测试的方式进行测试,避免由于代码原因导致内存飙升,并且居高不下。原创 2023-03-08 16:14:35 · 413 阅读 · 0 评论 -
项目实战典型案例10——对生产环境以及生产数据的敬畏之心
本篇博客是对项目开发中出现的对生产环境以及生产数据的敬畏之心行的总结并进行的改进。目的是将经历转变为自己的经验。通过博客的方式分享给大家,大家一起共同进步和提高。事件背景:没有老师上课,但是却有很多的在线人员,并且这个在线人员的时间还对不上。联系了相关人员了解这个老师的上课情况;并在学生端查看是否有开课,由于学习通确认是否还是这个班的学生。最后询问各个组长才发现,他们在生产环境上做测试,修改了生产的部分用户数据导致这个问题。出现问题的深层原因:没有对生产环境有一份敬畏之心。原创 2023-03-07 21:01:12 · 627 阅读 · 0 评论 -
项目实战典型案例27——单表的更新接口有9个之多
本篇博客是对项目开发中出现的单表的更新接口有9个之多的问题进行的总结并进行的改进。目的是将经历转变为自己的经验。通过博客的方式分享给大家,大家一起共同进步和提高。在项目开发过程中,出现了对单表的更新接口出现了9个之多,虽然这些接口能够满足功能需要,但是没有丝毫的复用思想,以及后续对于接口的维护的工作量又很大。所以不是一个很好的设计。那么我们如何对这个问题进行优化和解决,我们可以通过一个接口来替换调绝大多数的接口,通过使用mybatis的动态SQL实现。下面是实现的例子。原创 2023-03-07 19:57:45 · 440 阅读 · 0 评论 -
项目实战典型案例17——环境混用来带的影响
本篇博客是对对项目开发中出现的环境混用来带的影响进行的总结并进行的改进。目的是将经历转变为自己的经验。通过博客的方式分享给大家,大家一起共同进步和提高。对于一个问题的解决方式,不止有一种方式,通过灰度认知,分析多种解决问题的方式,最后黑白决策选择出最好的一种解决问题的方式。对于暂时不知道答案的问题,可能是能力不够,知识面不够。但是需要通过记录的方式记下来,当再次遇到或者有想法的时候能够快速回忆起来。这样会有豁然开朗的感觉。原创 2023-03-06 15:35:36 · 455 阅读 · 0 评论 -
项目实战典型案例14——代码结构混乱 逻辑边界不清晰 页面美观设计不足
本篇博客是对对项目开发中出现的代码结构混乱、逻辑编写不清晰、页面美观不足进行的总结并进行的改进。目的是将经历转变为自己的经验。通过博客的方式分享给大家,大家一起共同进步和提高。1.对于问题三的解决方案,应该还有更好的处理方式,如将< img>标签放入到< span>标签中应该也可以解决这个问题,但是博主没有进行验证。2. 对例如div 以及 v-if这类基础知识点需要进行掌握,还有可能写出符合逻辑以及封装性强的代码。3. 对于代码的整洁度,结构性,一直都是诟病的问题。原创 2023-03-04 19:56:51 · 955 阅读 · 0 评论 -
项目实战典型案例19——临时解决方案和最终解决方案
本篇博客是对项目开发中出现的临时解决方案和最终解决方案进行的总结和改进。目的是将经历转变为自己的经验。通过博客的方式分享给大家,大家一起共同进步和提高。对生产环境的敬畏,如何体现敬畏?权限隔离,没有权限根本就不能操作生产环境上到生产环境的功能,不能出现bug对用户负责,如何体现负责对用户提供稳定的确定性,产品无bug,稳定性。让产品的使用者,成为产品的设计者。积极听取用户的使用感受,和提出的需求以及建议。线上出现问题,立即进行解决,解决完成之后立即反馈给用户。原创 2023-03-04 19:08:31 · 773 阅读 · 0 评论 -
项目实战典型案例1——redis只管存不管删除 让失效时间删除的问题
本篇博客是对项目开发中出现的redis只管存不管删除 让失效时间删除的问题进行的总结和改进。目的是将经历转变为自己的经验。通过博客的方式分享给大家,大家一起共同进步和提高。代码逻辑通过redis查询该课程下所有班级的信息如果没有从redis中查询到数据就从数据库中查询并存入到redis中一份存在的问题。原创 2023-03-04 15:58:49 · 1185 阅读 · 2 评论 -
项目实战典型案例13——学情页面逻辑问题
本篇博客是对项目开发中出现的学情页面逻辑问题进行的总结和改进。目的是将经历转变为自己的经验。通过博客的方式分享给大家,大家一起共同进步和提高。前端Vue2,项目代码代码的主要逻辑:1.查询某个课程班级下该学生的评论、获赞、回复次数2.如果返回的数据中评论次数、获赞次数、和回复次数都为0,则从缓存中获取相应数据。3.如果评论次数为空,则将获赞次数、评论次数、回复次数置为04.如果该学生的评论次数、获赞次数、回复次数都不为0,将学生的评论,获赞、回复次数都存入缓存中。原创 2023-03-03 20:32:10 · 785 阅读 · 0 评论 -
项目采坑日志——zabbix agent执行脚本,提示 Permission denied
在使用实现自定义zabbix的监控项的过程中,在zabbix 服务端的web界面中提示。sh: /home/admin/zabbix/get_socket_jstat_status.sh: Permission denied"原创 2022-09-21 17:34:43 · 3716 阅读 · 0 评论 -
项目采坑日志——Java浮点类型数据进行加减运算出现精度丢失问题
在项目开发过程中,有一个需求是计算章节的总时长,由于是一个树形接口每一个叶子节点上都需要进行其下所有子节点的时长累加。最后结果出现了,进度丢失的问题,在系统前端界面设置了数据的入参精读为小数点后一位,但是在后端返回的数据却出现了丢失精度的问题。如图:出现这样的问题,最终通过bug排查,最后在发现问题出现在后端,后端通过使用浮点型(double、float)数据进行的时长计算。那么问题就定位到了,使用浮点型数据进行加减运算很可能出现问题。通过查阅资料发现,的确使用浮点型数据进行运算会出现精度丢失的问题。由于原创 2022-09-21 11:14:54 · 1009 阅读 · 0 评论 -
项目采坑日志——cannot create a build with number 9 since that (or higher) is already in use among [12]
意思就是无法创建编号为9的构建,因为该编号(或更高)已在[12]中使用。和往常一样在jenkins中进行项目构建,jenkins构建报如下错误。在jenkins的构建历史界面删除构建,具体步骤。删除构建之后,再次构建就成功构建了。这个构建编号已经被使用了。原创 2022-09-05 10:56:45 · 671 阅读 · 1 评论 -
项目采坑日志—XxlJob配置迁移到Nacos,项目运行提示Could not resolve placeholder ‘xxl.job.accessToken’ in value
通过网上查阅了资料这Nacos的配置语法格式相关,需要在ip:以及accessToken:后面加上双引号(“”)这样Nacos才能读取到。在Spring Boot项目中将bootstrap.yml文件中XxlJob的配置信息迁移到Nacos中出现错误,提示。...原创 2022-08-18 08:38:15 · 1607 阅读 · 0 评论