小记录--Java实际开发中哪些踩过的小坑

1.由于空格导致的坑;----解决方法:用鼠标点击字段,看数据前后是否有空格

刚步入开发行列的时候,自己数据库里面插入了一条数据,通过根据某个字段去查询,得到的结果数据却是查不到,自己去库里明面看着数据是存在的呢,可就是查询不到;此时,你可以去用鼠标去点击下,你用条件去过滤的那个字段值,看他的前后是否存在用肉眼看不到的空格;

2.由于换行符导致的坑;--解决方法:将有问题的那列的数据,复制粘贴到编辑器里面,看下是否有换行符

当数据插入到库里面,用查询条件,获取到list数据之后,通过debug,看到数据里面多了一个‘/n’.通过查看数据库中的数据(使用的数据库是MySQL,可视化工具是Navicat),用鼠标来回点击,看不到是什么原因,后来,用鼠标选中数据库中的那列的数据,复制粘贴到编辑器NotePad++中会发现,每一行中间都有一个换行符;(原因是:Navicat 中插入数据时,插入了换行符在数据库里面是看不出来的,但他(换行符)却是是存在的;当然最终的原因是:写代码插入数据时,插入了本不该有的换行符);

3.由于项目中存在部分相同的代码导致让人颠覆的错觉;---总结:复制代码,记得把日志做修改,生成环境定位问题的日志关键字要有具有唯一性

简述项目背景是这样的:我们项目部署在客户的机房中,由于我们的项目需要调用第三方提供的接口,而只有我们系统所在的服务器与外网互通,第三方系统没有外网地址,只能通过我们的服务器通过内网才可以调通第三方接口;所有有些功能只能部署到生产环境才可以联调第三方接口;问题定位当然,也只能通过日志来定位;神奇的地方,就在日志这里,让人彻底崩溃了。我通过Linux命令(服务器是Linux系统)tail -f grep '日志中的关键字',来定位日志输出,页面上的两个功能,调用的是同一个接口(理论上应该是同一个接口),仅仅是入参不同,但是有一个可以调用成功,另一个就成功不了;通过日志查看,日志总是走到一个地方,再往下就没有了,当时,其余的几行代码是不可能报错的,即便报错,我也已经用try catch 捕获了异常,但是异常里面的日志缺也没有在日志里面打印出来(真是让人费解,都开始怀疑,难道我对try catch 的认知都有问题吗?怀疑人生中。。。);最终,我把问题描述给了同事,他听完就猜测到了可能是 我查询的日志关键字在项目中存在多处,;通过全局搜索,果不其然,由于本地测不了第三方的接口,所以我提前写了一个测试接口的方法,放到了生产上面,测试成功之后,才又重新写了提供给前端调用的接口,由于我们使用了swagger,接口都是直接让前端从swagger上找的,前端调用的时候,由于不太了解情况,一个调用的是我提供的前端的接口,另一个调用的是我测试第三方的接口;测试第三方的接口,由于没有业务逻辑的处理,其实就是前端接口的一部分,而这两个接口的打印的日志是相同的(测试接口在前,供前端调用的接口在后,后面这个直接复制的前面这个,然后把业务逻辑加上了);至此,才找到问题的根源;

猜你喜欢

转载自blog.csdn.net/qq516071744/article/details/86530748
今日推荐