三月小记

March 23, 2025 作者: southern 分类: 浏览: 4 评论: 0

近期

时间很快,实习已经入职两周了,感觉离从学校跑来看房还没几天。这两周很充实,接触了很多新事物。不过早八点半出门,晚八点半回家,感觉自己时间很不够用,力扣也跟着停了半个月,后面得赶快抓起来。这边上班骑车单程六七公里,得半个多小时才能到,好在是一天管两顿饭,在北京省了不少钱。这边的餐标是一个人一顿40,知道了之后真实震惊我一年,感觉最多20块钱的内容。两周里熟悉了项目内容,搞了不少测试文档,接触了两个子软件的代码。也接了两个需求。这里简单记录一下。

工作内容

第一周主要是对照测试用例看软件的完成度,写了些用户手册,主要还是测试相关的文档。

第二周有两个需求,一个是优化一个文件上传解析的接口;另一个是解析word中的表格的部分内容。

优化文件上传解析接口:

难点在于数据量大,上传一次要往多张表里插入十万级的数据。数据库使用的是sqlite,并发性能差,并发插入时直接锁数据库。

上传的可以是文件,也可以是文件夹,根据选择的信息,遍历选择的文件夹,选出符合要求的文件,一般是根据文件命名和格式来判断的。文件的内容全部都是纯文本,并且有一定规范,通过字符串操作按行分割读取内容,存入list或者map,保存到数据库。原接口是单线程的,上传5个文件接口时间在55秒左右。我的优化思路先是多线程,速度很快,接口响应时间提升到十秒左右。但是存在丢数据的情况,数据库中部分数据丢失。然后是字符串解析部分的优化,如预编译正则表达式,将split分割函数用indexof和substring来优化。第三步是配置数据库连接池,调整了一下最大连接数和连接最长存活时间。第四是适当调整批量插入的size。最后发现优化不大,大约只能优化一到两秒左右。最后还是选择多线程形式,数据库插入部分加锁,数据不再丢失,再次优化三秒左右。绝大部分时间都消耗在数据库插入上了。

解析word表格:

难点在于格式太混乱,需要将表格中的内容解析出来并展示。有些位置是自动标号,有些位置是手动标号,标号顺序还不确定,有不固定的空格,换行等,还有嵌套的子表格。很难兼顾的所有情况。

由于无法获取到自动标号的内容,只能判断是标号,所以需要手动记录标号层级和条数。思路是用一个变量记录标题层级,然后枚举标号变化的可能情况,以及可能出现的空格换行等,来判断当前属于第几层级,并返回层级。通过层级来记录标号,再记录正文内容。目前嵌套表还未解决,一共有四百多个表格案例,去掉约一百个嵌套表,还有三四十个格式混乱导致的无法正确解析的表格。

#2025(6)

评论