当前位置: 首页 > news >正文

邢台同城/百度惠生活怎么优化排名

邢台同城,百度惠生活怎么优化排名,互联网公司估值达到一定基数后就不会再增长,如何免费创建自己的小程序在项目中遇到递归的方法总是让人头疼,因为业务或者算法上的复杂性,常常需要一个方法或者两个方法,甚至多个方法之间进行递归,那么怎么解决方法递归中可能会存在的死循环问题呢?下面是我在项目中的一些尝试(…

在项目中遇到递归的方法总是让人头疼,因为业务或者算法上的复杂性,常常需要一个方法或者两个方法,甚至多个方法之间进行递归,那么怎么解决方法递归中可能会存在的死循环问题呢?下面是我在项目中的一些尝试(仅做思路参考):

首先看一下什么是死循环:

一个方法的死循环:

public class OneMethod {public static void main(String[] args) {String string = "冰墩墩";iteration(string);}public static String iteration(String string) {return iteration(string);}
}

代码的运行结果如下:

Exception in thread "main" java.lang.StackOverflowErrorat ssl.study.iteration.OneMethod.iteration(OneMethod.java:17)at ssl.study.iteration.OneMethod.iteration(OneMethod.java:17)at ssl.study.iteration.OneMethod.iteration(OneMethod.java:17). . . . . . 

 可以看到栈溢出了,说明一直在循环栈内存已经被占满。

两个方法之间的死循环:

public class TwoMethod {public static void main(String[] args) throws Throwable {String string = "冰墩墩";iteration1(string);}public static String iteration1(String string) {return iteration2(string);}public static String iteration2(String string) {return iteration1(string);}
}

结果和一个方法死循环是一样的, java.lang.StackOverflowError报错,栈溢出。

上面两个简单的死循环的例子可以说明递归陷入死循环的判断依据:在经过某一固定程序之后,周期性调用相同方法名且传入相同的参数值,从而造成程序执行出现异常终止。

主要思路:

怎么及时发现程序陷入死循环?

首先根据死循环的判断依据:周期性调用相同方法名传入相同参数。那么只需要判断这个方法连续或非连续(多线程)传入的参数是不是和之前一样就可以了,这里我定义了两个静态参数,一个是这个方法当前传入的参数(这里暂时定为一个),另一个参数是连续传入的参数的次数,只要传入参数和当前参数不一样,那么就将当前参数进行修改覆盖,计数置为0。这样在计数达到一定值(10或20或100,具体视业务的复杂程度)的时候就判定此方法陷入了死循环。

发现死循环之后需要让程序执行什么操作呢?

在发现死循环之后及时抛出异常或者直接try、catch块处理掉,使程序输出日志转为正常执行(在不影响实际业务逻辑的前提下)。

基于以上两点的考虑,初步实现,代码如下:

public class TwoMethod {static int ITERATION_COUNT = 0;static String IN_METHOD_STRING;private static Object Exception;public static void main(String[] args) throws Throwable {String string = "冰墩墩";iteration1(string);}public static String iteration1(String string) throws Throwable {if (!string.equals(IN_METHOD_STRING)) {IN_METHOD_STRING = string;ITERATION_COUNT = 0;}else {ITERATION_COUNT += 1;}if (ITERATION_COUNT == 10) {System.out.println(ITERATION_COUNT);throw (Throwable) Exception;}return iteration2(string);}public static String iteration2(String string) throws Throwable {return iteration1(string);}
}

http://www.jmfq.cn/news/5052529.html

相关文章:

  • wordpress 新手指南/网站seo外包
  • 重庆网站建设网站制作/网站seo搜索引擎优化怎么做
  • 自己做网站要学什么软件/怎么自己建立网站
  • 通过骗子网站能找到其服务器吗/企业网站制作多少钱
  • 服务好的岑溪网站开发/网络竞价托管公司
  • 做外贸找客户的网站/seo网站推广
  • 虹口专业做网站/网站提交收录
  • 南京一等一网站建设/发布新闻
  • 阿里云网站建设步骤/查询网站注册信息
  • 南昌网站排名优化费用/seo优化裤子关键词
  • 建设银行快审额度查询网站/东莞seo建站排名
  • 安徽网站建设哪家好/win优化大师怎么样
  • 注册企业在哪个网站/关键词汇总
  • 阿里云网站备案时间/快速推广
  • 青海餐饮网站建设公司/app推广方式
  • 延吉有学建设网站的地方吗/微信公众号的推广
  • 西安制作网站公司哪家好/seo关键词优化要多少钱
  • wps可以做网站吗/合肥做网站的公司有哪些
  • 高端电子商务网站建设/网络广告策划的内容
  • 大型公司网站制作/seo 网站优化推广排名教程
  • 搭建wordpress/快速刷排名seo软件
  • 手机链接ppt在哪个网站做/网站外链的优化方法
  • 石家庄网站建设/seo培训优化课程
  • 商城购物网站有哪些模块/东莞整站优化
  • 厦门企业官方网站建设/竞价推广遇到恶意点击怎么办
  • 精灵网站建设/免费的推广网站
  • 网站建设龙岗/seo在线短视频发布页
  • 网站建设歺金手指排名15/厦门seo网站排名优化
  • 营销型网站有什么特点/网络营销与网站推广的
  • 张掖做网站公司/做seo如何赚钱