且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

说说最近项目中的几个坑

更新时间:2022-01-15 21:43:59

实践出真知,这是亘古不变的道理,最近的项目中我也是再次深深的体会了一把这句话的含义,有意无意的进了不少坑,一个一个的填平,下边是其中一部分总结:

坑1、linux和hp-unix中几个高频率操作的区别:
由于工作需要,经常要操作服务器进行部署、巡检,项目升级等操作,之前一直都是用的linux,但最近的一次项目却需要部署到hp-unix系统上。
这两个系统大部分的操作还是差不多的,但有些高频率的操作也还是有不小的区别,虽然知道具体操作以后觉得也很简单,但是不知道的情况下,还是很可能抓耳挠腮,想破头也搞不明白。
以下两个就是最近我曾被难住的小区别,这里进行一个记录总结:
(1)、hp-unix中cmd命令行操作的时候,删除输入的内容不再是linux中常用的使用Backspace按键删除,而是使用向右的方向键来删除。
(2)、hp-unix中vi编辑文件时删除字符不再是linux中那样直接按“i”进入编辑模式,然后使用方向键调整到对应的位置,再用Backspace来删除。
而是要在非编辑模式下,使用方向键定位到要删除的地方,再按“x”键删除。
(2)、编辑一个文件后,如果要保存,linux中使用“wq!”或者“!wq”都可以,也就是说感叹号可前可后,但是hp-unix中却必须要放在后边。
而我正是在linux中习惯了把感叹号放后边,导致这么个小坑花了我近半个小时没能成功保存一个文件。

坑2、excel中数据类型和java中数据类型的对应问题:
最近所做的工作,大部分都是在使用着java操作excel,操作的多了,也就自然遇到不少问题,除开之前有说过的生成和插入图表图片的问题之外,数据类型对应也算是一个小小的问题。
excel中的日期类型自然是对应java中的date类型,文本类型对应java中的String类型,但是还有一些类型就不是那么好对应的,在poi进行处理的时候一不小心可能就进坑了,我这里就在百分比类型上遇到过一个小坑。
说说最近项目中的几个坑
例如上图中的这一列就是百分比类型,它对应的实际上是java中的double类型。但是这里需要注意的地方却是,例如这里看到的88.03%,在java中用poi相关的方法获取以后,实际上是经过了转换的,变成了0.8803.
而我一开始想当然的以为是88.03,这就导致我从excel中读取数据存入到数据库中的时候和想象的不一样。
除此之外,这这个数据类型对应上还有一个问题,那就是如上图看到的是百分数,但是实际上却未必就是百分数,也可能是excel中的“常规”类型,在这种情况下,如果用poi中的获取小数的方法来获取cell里的值,也一样会进坑。
与此相似的,就是时间,看起来是时间类型,但是实际上也可能只是“常规类型”,因此在用java操作excel时,尤其是别人提供的excel时,务必要一列列的确认好究竟是什么类型。
并且如果这个excel后期也是由别人提供的话,还必须特别说明必须要保证后期的数据类型都一致,否则就可能出现我前两天出现的问题:测试时可以,结果到了生产环境换了新的excel就一堆的500。

坑3、excel中加了边框线的单元格无法get的问题:
如题,excel中加了边框线的单元格,我在java中使用poi的getRow方法时竟然获取到的是null。
虽然这个坑被填了,问题解决了,但是实际上我到现在也没有弄明白为什么,也还不知道该如何来找出为什么。
如下图
说说最近项目中的几个坑
这里是加了边框线的excel,java中原本的代码是这样:
HSSFRow row = sheet.getRow(0);
row.getCell(0).setCellValue("服务器");
结果在第二行报出了空指针异常,之后一阵debug后发现竟然是没能getRow成功,虽然不知道为什么,但是好在经过自己的设想把代码改成如下以后,算是成功的解决了这个问题:
HSSFRow row = sheet.createRow(0);
row.createCell(0).setCellValue("服务器");
难道说加了边框线的行和列都还不能算创建了这个行和列么?但是有的地方却又可以正常获取,这是个奇怪的问题。