Aop RealProxy 千年遇BUG
昨夜一名CYQ.Data 框架爱好者在测试V5Beta版本时,向我发一个问题, 说F5下正常,直接运行exe会报错,于是,一夜深究后,就有了今天的博文。
当你运行一段代码、一个软件,在运行时你发现:Debug下正常, Release下F5运行也正常,唯独Release编绎后单独运行异常,你会怎么想?
这个问题对我而言,脑海里不曾有过,于是蛋定思蛋,先百度了一下:发现网上信息并不多,偶尔几条也是VC++的,对于C#的,绝无仅无。
当我把代码发给一友人,让他也帮忙试下时,发现对方的win7 64位竟然运行正常,灵异性又提升了一个等级。
面对这神一般的灵异Bug,我费了N个小时折腾,找一个不能调试的Bug,因为F5下都是正常的,那个辛苦啊。
灵异现象已经说了,那灵异点是什么呢?标题已经出卖了这个问题,和Aop的RealProxy有关。
光说AOP,园子里懂的人不多,用的估计也不多,所以深入无谓,浅出又难,只好简单过过场。
我是怎么发现问题是在Aop RealProxy?
这个使用常规方法,在代码段里插一些弹出信息,来缩小出错的代码片断,最终找到了它。
为了减少废话,这里直接讲述两点:
1:哪些代码有问题,哪里有问题?
以前我写过一篇文章:C# Aop简单扫盲及ORM实体类属性拦截示例,可以先理解下AOP,但是它是有问题的,就是今天的问题。
这里给出详细的错误代码,和注释错误点,代码通常都有点长,不容易看:
View Code
通常大量的代码测试及分析方法,我发现了,只要Aop对象涉及到内部成员变量,在Release编绎后运行就一定会报错。
2:如何解决。
在历经各种无解后,我发现了,RealProxy还有另一种写法,而这另一种写法,竟然可以解决这个问题,代码如下:
View Code
3:Debug和Release还有F5,究竟隐藏怎样的秘密?
我也不懂,这涉及更底层的问题,不在我深究的范围内,懂的人士可以留言给大伙解答下。
总结:
在编程的世界里,灵异总是无处不在的,但是找它灵异的原因,并且能找到一种解决这类事件的方法,是每个代码建造师必须具有能力。
至于为何会产生这样那样的灵异事件,在研究的范围内,可以追究原因,在非自身研究的领域,大伙看着办了。
终于,在忙碌微博精灵系列软件的日子里,终于又抽空完成了一篇文章,感觉不容易啊。
版权声明:本文原创发表于博客园,作者为路过秋天,原文链接:
http://www.cnblogs.com/cyq1162/archive/2012/08/29/2662492.html
与其硬啃“屎山”代码,不如用这六步有条不紊实现代码重构 李慧文 对大规模系统进行重构,如果一个人对着又臭又长的代码硬刚,即使花了大量的时间进行手工验证,最后仍然会有很多问题,特别是一些深路径及特殊场景下的问题。其实,大规模的系统级别重构时是有方法的。我们采访了 Thoughtworks 数字化转型与运营 资深咨询师黄俊彬(QCon+案例研习社讲师),请他来分享 MV*模式重构演进的方法和经验。
唉,被坑惨了! 32 位系统,用户态的虚拟空间只有 3G,如果创建线程时分配的栈空间是 10M,那么一个进程最多只能创建 300 个左右的线程。 64 位系统,用户态的虚拟空间大到有 128T,理论上不会受虚拟内存大小的限制,而会受系统的参数或性能限制。
刚入职没多久,连夜手写了一个代码生成器,项目开发速度瞬间屌炸了!(二) 各位网友,大家好,我是阿粉! 最近刚入职一个新团队,还没来得及熟悉业务,甲方爸爸就要求项目要在2个月内完成开发并上线! 本想着往后推迟1个月在交付,但是甲方爸爸不同意,只能赶鸭子上架了! 然后根据业务需求,设计出了大概30多张表,如果这30多张表,全靠开发人员手写 crud,开发所需的时间肯定会大大的延长,甚至可能直接会影响交付时间! 于是就想着,能不能通过代码生成器一键搞定全部的 crud,开发团队只需要根据业务需求编写逻辑代码就可以?
刚入职没多久,连夜手写了一个代码生成器,项目开发速度瞬间屌炸了!(一) 各位网友,大家好,我是阿粉! 最近刚入职一个新团队,还没来得及熟悉业务,甲方爸爸就要求项目要在2个月内完成开发并上线! 本想着往后推迟1个月在交付,但是甲方爸爸不同意,只能赶鸭子上架了! 然后根据业务需求,设计出了大概30多张表,如果这30多张表,全靠开发人员手写 crud,开发所需的时间肯定会大大的延长,甚至可能直接会影响交付时间! 于是就想着,能不能通过代码生成器一键搞定全部的 crud,开发团队只需要根据业务需求编写逻辑代码就可以?
相关文章
- ADO.NET(OleDb)读取Excel表格时的一个BUG
- 离职两年后,程序媛被前东家索赔30W:Bug 是你写的,不赔牢底坐穿!
- 修复ext4日志(jbd2)bug( Ext4 文件系统有以下 Bug)
- 解决SQLServerException: 转换 varchar 值 '12345678901' 时溢出了整数列的bug
- Vue - 列表拖曳排序 / 鼠标拖动改变顺序排列高效简洁组件(支持PC端与移动端触屏拖动,也可在滚动条内排序自动滚动,流畅丝滑无 BUG)
- octave-bug - 报告 GNU Octave 中的 bug
- ScrollView嵌套ListView时Bug解决以及ExpandableListView设置全部展开
- ASMB的BUG(ORA-04030 kfmditer)导致数据库宕机
- 由软件测试bug状态转换想到的
- Lock不住的BUG,神一般无解的BUG(XX正由另一进程使用,因此该进程无法访问该文件)
- 曹工说Spring Boot源码(18)-- Spring AOP源码分析三部曲,终于快讲完了 (aop:config完整解析【下】)
- RookeyFrame Bug 表单管理 -> 查看表单 ->编辑字段页面 JS报错
- 【Bug修复】VisibleDeprecationWarning: Creating an ndarray from ragged nested sequences