谈一谈编程中遇到的一些死循环(递归死循环,AOP死循环,业务死循环)
最简单最基础死循环,一般都是这样的
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死循环,业务死循环)相关推荐
- 浅谈逻辑:编程中最重要的基础
"英语不好能不能学编程?" "编程是不是对数学要求很高?" 时不时会在公众号后台收到类似的疑问,即:数学/英语是否是学编程先决条件? 我觉得这个问题有点像,身高 ...
- 编程中的一种特殊递归-尾递归
尾递归:在程序要返回的地方出现递归 从编译的角度来讲,尾递归都可以用循环来实现. 例子:二叉搜索树的查找操作Find递归函数可以写成循环的方式实现
- shell 不等于_关于shell编程中的整数值比较的两种方式的简单操作实例
谈一谈关于shell编程中的整数值比较的两种方式 Shell编程有时处理一个对象时,需要我们对对象进行测试. 只有符合要求的才采取下一步操作,这样做的好处可以避免程序出错. 这个测试的对象可以是文件. ...
- ll文件显示为?????_关于shell编程中的文件测试简单的操作实例
谈一谈关于shell编程中的文件测试 Shell编程有时处理一个对象时,需要我们对对象进行测试. 只有符合要求的才采取下一步操作,这样做的好处可以避免程序出错. 这个测试的对象可以是文件.字符串.数字 ...
- c语言在数学方面的应用编程,浅谈数学在C语言编程中的应用.doc
浅谈数学在C语言编程中的应用 浅谈数学在C语言编程中的应用 [][]C语言对学习者的数学基础要求较高对一部分学生来说学好C语言有一定的困难.本文就本专业知识和自身对C语言的学习经验对数学在C语言编程中 ...
- html 怪异模式,CSS_浅谈CSS编程中的怪异模式,怪异模式盒模型
今天学习了 - phpStudy...
浅谈CSS编程中的怪异模式 怪异模式盒模型 今天学习了一下css3的box-sizing属性,顺便又温习了一下css的盒模型,最后觉得有必要对盒模型做一个全面整理. 先不考虑css3的情况,盒模型一共 ...
- python程序调用写好的代码_扣丁学堂浅谈Python编程中NotImplementedError的使用方法...
扣丁学堂浅谈Python编程中NotImplementedError的使用方法 2018-07-04 14:08:02 2559浏览 本篇文章扣丁学堂 Python编程中raise可以实现报出错误的功 ...
- 谈一谈Java编程开发中的并发控制
并发指在宏观上的同一时间内同时执行多个任务.为了满足这一需求,现代的操作系统都抽象出 线程 的概念,供上层应用使用. 这篇博文不打算详细展开分析,而是对java并发中的概念和工具做一个梳理. 沿着并发 ...
- 浅谈windows 编程中SendMessage函数的妙用!!!
windows编程中SendMessage函数是非常重要的,而且这个对于理解windows的消息机制也很重要.本文用代码的方式实现了一些功能,借以说明此函数之妙用.说明不当之处,希望批评指正,谢谢! ...
- 浅谈软件编程中的8大数据结构
文章目录 前言 一.为什么要研究数据结构 二.数据结构的分类 1.数组(Array) 2.链表(Linked List) 3.队列(Queue) 4.栈(Stack) 5.散列表(Hash) 6.树( ...
最新文章
- 判断两个树是否相等和判断tree1是否包含tree2 python实现
- 文件系统vs对象存储——选型和趋势
- 修改element中v-loading的自定义图片
- 高德地图-搜索服务-POI搜索
- [云炬Mysql数据库笔记] 第3章 数据定义
- 微服务浅述---架构演进
- 再学 GDI+[20]: TGPTextureBrush 与 TWrapMode
- 2017 4月26日上午
- [HDU3756]Dome of Circus
- python异步编程 图书_Python学习之异步编程asyncio
- 华为推出首款折叠屏5G手机;微信“上车”时间已定;社区团购暗潮涌动
- springboot毕设项目流浪动物救助和领养平台e1yqy(java+VUE+Mybatis+Maven+Mysql)
- 三星pay显示连接服务器失败,Samsung Pay刚刚上线就遇绑卡失败,三星闹哪样?
- 设计简单计算机主机系统,【效率】专为Win7系统设计的最小Pomodoro-MiniPomodoro(随附...
- Web与排版学上的字体问题【转】
- MySQL视图 视图的作用、视图常用语法
- 数据存、管、用一体构建企业数据安全堡垒
- 亚利桑那大学公开课:【知识产权课程】笔记
- 著名面试题: 如何实现数组去重? 假设有数组 array = [1,5,2,3,4,2,3,1,3,4] 你要写一个函数 unique,使得 unique(array) 的值为 [1,5,2,3,4]
- layer.alert 点击确认按钮后跳转指定地址网页