在公司处理了近三年的报表问题。


来的时候,这块一地烂摊子。历史版本没有源码;大段大段的代码重复;太多写死的处理逻辑;很多模块共用一段代码,但代码的流程是条件一怎么处理,条件二怎么处理...


关键是还没有人交接,接到这个任务,只能硬着头皮,吭吱吭吱把源码读了一遍又一遍,整理出核心的逻辑。


读代码的时候同时还要处理各种问题,千奇百怪。版本不匹配;事务冲突,要么只能读要么只能写,总有一种抛异常;模型加载失败;配置表不存在;多选下拉框回显不正确...


工具还涉及帆软报表,帆软虽然是付费软件,但问题也是一点都不少。


付费定制内容存在 bug;自带集群模式性能低;日志文件大到 2g 依然会读到内存数据库,一直持有大对象导致 jvm 100% cpu,多条线程 full gc;定时任务的归档操作也有没释放内存的情况;html 富文本到 10.0版也还是存在样式问题(这个问题处理比较难,能理解);image 函数不支持 https,在复杂的网络环境中要支持 https 确实费劲,比如要考虑 ssl 证书是否公网认证、内网的网络策略等;字体问题,word 可以 pdf 未找到字体会重叠;session timeout 时间不可配置;去除日志记录不可配...


为了解决这些问题,帆软的源码我都动了,还进行了函数与插件开发。


后来我也独自开发了一款报表工具,功能确实进行了增强,但现场却不怎么样使用,所以我现在一度觉得这是产品脑子里的伪需求,原功能基本能解决 95% 以上的问题。


现在市面上付费和免费的报表工具已经多到技术选型都要花上好几天来研究了。再去花精力去造个轮子价值不大,练手就好。


最近在看润乾蒋步星数据蒋堂的公众号,看到大师理论与实践沉淀下来的文字,就会感慨一句,自己干的就是天天帮别人擦屁股的活,人家搞的那才叫技术。


看到蒋老师对数据处理的精准拿捏,加上自己在 jvm 层面排查报表性能问题的经历,现在觉得内存控制与数据处理才是计算机的精髓所在,非一朝一夕可以掌握。


刚入门的小伙伴往往比较看重框架的学习,框架的作用是降低开发难度,达到快速开发的效果。这些东西多花点心思总能学会,而且用的再熟也不过 CV 的速度快些,真遇到疑难杂症还是会束手无策。如果有空,计算机的学习还是适合自底向上,先慢后快,这样能够达到的上限才会比较高。