最简单最基础死循环,一般都是这样的

while(1)  while(true)  for( ; ; )……

然而在编程中常常会用到一些并不是那么基础的死循环,

这里列举一些我在编程中所遇到的一些死循环

方法已经不记得了,只是大概说明。

1(递归死循环)

2(AOP死循环)

这个是递归死循环的变种

学习Spring的同学都知道AOP面向切面编程,

记得网上读过一篇博客说的是Spring中实现AOP不仅用到了jdk1.6的动态Proxy还使用了CGLIB。就可以实现接口和实体类都能被动态代理。

对动态代理一直不太了解。有天闲着无聊就试着了解一下:

CGLIB(Code Generation Library)详解

https://blog.csdn.net/danchu/article/details/70238002

自己在网上找了几篇文章看了一下,自己动手试试写个 JDBC的事务注解  Transaction

这张图不知道能不能大概说明意思,意思大概就是使用CGLIB进行动态代理的时候,注意尽量别调用被代理对象的toString方法。否则会间接递归死循环。

3(文件状态更新死循环,这个有点极端,可能大家不会碰见)

这个是业务逻辑的系循环

大二的时候学安卓,用的是AndroidStudio 当时学校有一个比赛联想智能交通的比赛,需要三个人用安卓坐一个app。当时思考一个问题,三个人做一个app一定在一个局域网下做一个app的,那么我能不能做个软件让三个人同时去操作一个项目。

思路是这样的:

后台运行一个线程一直去遍历一个指定的项目内的所有文件。如果一个文件的文件内容近期更改过。那就把文件发给好友。好友把更改的文件内容写入到文件上去即可,。当然这些读写内容也都是后台线程完成的。

后来呢,这个东西的确也做出来了,但是呢,有编码问题,后来就没再管了。

同时里面有关于死循环的两个问题值得思考

(1)子线程中就需要一个死循环,这个死循环的做用就是用来一直遍历文件和查看文件更改状态。当然这个死循环是一个正常的死循环,是我们所需要的死循环,无非就是损耗了软件的性能

后来在网上查到一个文件监听器的类。

WatchService watcher = FileSystems.getDefault().newWatchService();

这个类使用了观察者模式。不需要再使用死循环了,无疑提高了软件的性能。

(2)另一个死循环发生在文件读写时。

本来时当文件发生改变的时候发送文件到好友哪里去,由于每个客户端有相同的功能。

那么问题就出在这里,当A的文件发生改变时,发送到B上去后,B把能让更新到本地后那么本地文件又发生了改变,B就会把这个跟A一模一样的文件再此发生给A。导致文件状态更改引发死循环。

转载于:https://www.cnblogs.com/bigfire/p/9888511.html

谈一谈编程中遇到的一些死循环(递归死循环,AOP死循环,业务死循环)相关推荐

  1. 浅谈逻辑:编程中最重要的基础

    "英语不好能不能学编程?" "编程是不是对数学要求很高?" 时不时会在公众号后台收到类似的疑问,即:数学/英语是否是学编程先决条件? 我觉得这个问题有点像,身高 ...

  2. 编程中的一种特殊递归-尾递归

    尾递归:在程序要返回的地方出现递归 从编译的角度来讲,尾递归都可以用循环来实现. 例子:二叉搜索树的查找操作Find递归函数可以写成循环的方式实现

  3. shell 不等于_关于shell编程中的整数值比较的两种方式的简单操作实例

    谈一谈关于shell编程中的整数值比较的两种方式 Shell编程有时处理一个对象时,需要我们对对象进行测试. 只有符合要求的才采取下一步操作,这样做的好处可以避免程序出错. 这个测试的对象可以是文件. ...

  4. ll文件显示为?????_关于shell编程中的文件测试简单的操作实例

    谈一谈关于shell编程中的文件测试 Shell编程有时处理一个对象时,需要我们对对象进行测试. 只有符合要求的才采取下一步操作,这样做的好处可以避免程序出错. 这个测试的对象可以是文件.字符串.数字 ...

  5. c语言在数学方面的应用编程,浅谈数学在C语言编程中的应用.doc

    浅谈数学在C语言编程中的应用 浅谈数学在C语言编程中的应用 [][]C语言对学习者的数学基础要求较高对一部分学生来说学好C语言有一定的困难.本文就本专业知识和自身对C语言的学习经验对数学在C语言编程中 ...

  6. html 怪异模式,CSS_浅谈CSS编程中的怪异模式,怪异模式盒模型 今天学习了 - phpStudy...

    浅谈CSS编程中的怪异模式 怪异模式盒模型 今天学习了一下css3的box-sizing属性,顺便又温习了一下css的盒模型,最后觉得有必要对盒模型做一个全面整理. 先不考虑css3的情况,盒模型一共 ...

  7. python程序调用写好的代码_扣丁学堂浅谈Python编程中NotImplementedError的使用方法...

    扣丁学堂浅谈Python编程中NotImplementedError的使用方法 2018-07-04 14:08:02 2559浏览 本篇文章扣丁学堂 Python编程中raise可以实现报出错误的功 ...

  8. 谈一谈Java编程开发中的并发控制

    并发指在宏观上的同一时间内同时执行多个任务.为了满足这一需求,现代的操作系统都抽象出 线程 的概念,供上层应用使用. 这篇博文不打算详细展开分析,而是对java并发中的概念和工具做一个梳理. 沿着并发 ...

  9. 浅谈windows 编程中SendMessage函数的妙用!!!

    windows编程中SendMessage函数是非常重要的,而且这个对于理解windows的消息机制也很重要.本文用代码的方式实现了一些功能,借以说明此函数之妙用.说明不当之处,希望批评指正,谢谢! ...

  10. 浅谈软件编程中的8大数据结构

    文章目录 前言 一.为什么要研究数据结构 二.数据结构的分类 1.数组(Array) 2.链表(Linked List) 3.队列(Queue) 4.栈(Stack) 5.散列表(Hash) 6.树( ...

最新文章

  1. 判断两个树是否相等和判断tree1是否包含tree2 python实现
  2. 文件系统vs对象存储——选型和趋势
  3. 修改element中v-loading的自定义图片
  4. 高德地图-搜索服务-POI搜索
  5. [云炬Mysql数据库笔记] 第3章 数据定义
  6. 微服务浅述---架构演进
  7. 再学 GDI+[20]: TGPTextureBrush 与 TWrapMode
  8. 2017 4月26日上午
  9. [HDU3756]Dome of Circus
  10. python异步编程 图书_Python学习之异步编程asyncio
  11. 华为推出首款折叠屏5G手机;微信“上车”时间已定;社区团购暗潮涌动
  12. springboot毕设项目流浪动物救助和领养平台e1yqy(java+VUE+Mybatis+Maven+Mysql)
  13. 三星pay显示连接服务器失败,Samsung Pay刚刚上线就遇绑卡失败,三星闹哪样?
  14. 设计简单计算机主机系统,【效率】专为Win7系统设计的最小Pomodoro-MiniPomodoro(随附...
  15. Web与排版学上的字体问题【转】
  16. MySQL视图 视图的作用、视图常用语法
  17. 数据存、管、用一体构建企业数据安全堡垒
  18. 亚利桑那大学公开课:【知识产权课程】笔记
  19. 著名面试题: 如何实现数组去重? 假设有数组 array = [1,5,2,3,4,2,3,1,3,4] 你要写一个函数 unique,使得 unique(array) 的值为 [1,5,2,3,4]
  20. layer.alert 点击确认按钮后跳转指定地址网页

热门文章

  1. 海藻酸钠-聚乳酸|PLA-alginate|海藻酸钠-PEG-聚乳酸/聚已内酯PCL
  2. 苹果手机如何实现微信多开分身 苹果微信多开分身教程
  3. php编写六十甲子纳音表,六十花甲子纳音表
  4. 01 如何学习Python Web开发从入门到实战
  5. SQL sever数据库触发器设计
  6. D3.js有哪些比较好的中文视频教程
  7. java 静态变量,成员变量,局部变量的默认值
  8. 【模板】 Splay树
  9. 发明专利申请流程、申请资料
  10. squid:http和https的代理服务器设置指南(MacOS版)