南通网站的优化苏州关键词搜索排名
news/
2025/9/23 9:57:44/
文章来源:
南通网站的优化,苏州关键词搜索排名,重庆新闻app,苏州行业网站建设报价问题截图#xff1a; 由于作者使用递归统计信息#xff0c;刚开始这个接口运行得正常#xff0c;但是上线运行一段时间后接口就出现了#xff0c;如图的栈溢出错误。可以看出确实是堆栈溢出了#xff0c;解决栈溢出目前只有两种方式#xff1a;
第一种调大栈的大小…问题截图 由于作者使用递归统计信息刚开始这个接口运行得正常但是上线运行一段时间后接口就出现了如图的栈溢出错误。可以看出确实是堆栈溢出了解决栈溢出目前只有两种方式
第一种调大栈的大小
-Xss 来配置栈的大小。 目前作者没有选择个方式。
第二种通过读代码减少递归层数
public SetString getTableParents(SetString targetIds,SetString parentsSet){ListLineageTableDO tableDOList tableRelationMapper.selectList(new LambdaQueryWrapperLineageTableDO().in(LineageTableDO::getTargetId,targetIds));if (ObjectUtils.isNotEmpty(tableDOList)){SetString newTargetIds new HashSet();//将父系id查出来tableDOList.stream().forEach(s-newTargetIds.add(s.getSourceId()));parentsSet.addAll(newTargetIds);//再作为字进行二次查询getTableParents(newTargetIds,parentsSet);}return parentsSet;}
作者通过日志和阅读代码逻辑发现每次newTargetIds 基本都是重复的导致递归次数指数增长于是修改成如下代码
public SetString getTableParents(SetString targetIds,SetString parentsSet){//System.out.println(targetIds Size targetIds.size() , pSet parentsSet.size());ListLineageTableDO tableDOList tableRelationMapper.selectList(new LambdaQueryWrapperLineageTableDO().in(LineageTableDO::getTargetId,targetIds));if (ObjectUtils.isNotEmpty(tableDOList)){//System.out.println(childTable size tableDOList.size());SetString newTargetIds new HashSet();//将父系id查出来tableDOList.stream().forEach(s-newTargetIds.add(s.getSourceId()));SetString tmpSets new HashSet();if (CollectionUtils.isNotEmpty(newTargetIds)) {newTargetIds.forEach(s - {if (!parentsSet.contains(s)) {tmpSets.add(s);}});}if (CollectionUtils.isNotEmpty(tmpSets)) {parentsSet.addAll(tmpSets);//再作为字进行二次查询getTableParents(newTargetIds,parentsSet);}}return parentsSet;}最后成功解决
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/912130.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!