其实现在在公司工作已经3个多月了,但是基本的工作只是修修补补,没有做什么大的功能改进,但是遇到的bug却不少。对于开发经验少的人来说,真的是一调一整天,消耗的经历和耐心。也说不上是是总结经验,我就当是记录一下,方便日后总结吧。
1.图片未加载出来。按f12页面找到图片pic_url的数据,发现是null。pic_url的来源,从某某xml文件提取,节点书写正确,其他节点的值也正常。经过本地解析文件,确实能解析出来。再次查看,该pic_url经过封装之后传递给前端,那么重于找到了问题所在。从pic_url为null开始,整个过程就是在追溯pic_url的来源。
2.模仿sql存储过程报错,response.setHeader(msg,“ok”)没有置入消息。大半天找原因,对比正确的sql过程发现,自己的sql文件中declare声明和及其他语句的顺序不一致,没有原因,只能说明sql的存储过程是有顺序的,这可能是方便编译。第二个发生时也令人难以置信,最后经过调试发现,在最终向http报文写header时,由于某种顺序关系,其实并没有向http报文写header,不了解包装方法,其实包装方法并没有按我们想象的方法走。该错误要是思考,是不能够发现的,因为你对一些底层确实不是很了解。只有通过调试,尝试来解决问题。
3.测试向我报告,命名发了结束动作,但是状态机的状态没有跳转。grep查看日志,确实看到了发来了finish动作,id也符号。但是看日志记录,进去之后就马上出来了,好像什么都没做。通过swagger查看了关联的动作和状态,没有看到finish动作,也没有看到finshed状态。嗯,这个错误的很奇怪,这像是不可能的事。如果你还没认识到自己的坏习惯正在将你拖向深渊,那么你真的是太愚蠢了。问题反馈给老大,老大看了日志,查了swagger状态。这不是提前结束了?我靠,自己真的是眼瞎吗?这些步骤我都看了,但是没有认清楚。所以程序就是数学题,一是一,二是二,没有模棱两可的东西,看到关键信息。
4.测试人员说比较两个文件,返回结果没有差别,实际上文件是有差别的。比较文件前,先进行了相关文件的解析工作,这是根据语法自动生成的,似乎没错,那么错误到底在哪里?没有思路,于是老大让我在本地比较两个文件的解析过程,很快,马上定位到解析文件出错。原理是文件有一些微小的改动。上线测试时有报错,这个很奇怪,似乎没有错误。我不知道问题出在哪里,瞎找。老大说找到原因了,文件是乱码。为什么是乱码?测试时下载的文件都好好的,原来文件流经过了压缩,而代码中没有解压文件,故没有解压出来。经验:该保错似乎没有明显的突破点,那么只有安装正常的步骤,一步一步走,能不能下载文件,下载文件内容对不对,解析文件对不对等,逐个排查各个环节。