OO和SQL,应该携手共进

OO与SQL的融合之道
本文探讨了面向对象(OO)编程与SQL在实际项目中的应用。作者回顾了从传统SQL到ORM框架如Hibernate,再到RoR框架ActiveRecord的转变过程,并分享了在处理复杂查询和性能要求较高的企业应用时遇到的问题及解决方案。最终得出结论,OO与SQL应当互补而非互相替代。
最近两年来,经常在OO和SQL这两兄弟阵营里转来转去,总想做出个“决断”,结果却是谁也舍不得,手心手背都是肉啊。

十年前学应用开发的时候,SQL是绝对的王者,一直也就用了好几年,搞定了不少事情。有时候也觉着烦,尤其是许多不相干的调用代码,罗罗嗦嗦粘贴个没完。这时候总是想,能不能轻松点啊。

这时,以Hibernate为代表的ORM流行起来了,笔者也就兴冲冲地投入到实践当中。四五年前已经可以很舒服地配合Spring的Hibernate Template写代码了,那是相当地省事啊。虽然Hibernate也不是盏省油的灯,费了不少学习和调试的时间(老实说笔者到现在也算不上精通),好在以OO方式写应用,逻辑代码清晰多了,结构化进一步提高,也算值了。这时候又在想,还能不能更轻松点啊。

而这时,RoR火了起来。笔者在一年半前一接触,立马就迷上了Active Record,以前多少烦恼似乎瞬间烟销云散了,实在是非常的爽快!这个阶段,笔者已经彻底成为OO的迷信者,言必OO,并且深信以AR为代表的DSL是企业应用的最佳解决方案。

整好这时碰到一些传统C/S转B/S的企业应用项目,笔者满以为可以轻松搞定,结果却是出人意料,竟然被这些项目当头打了一棒。由于传统企业应用是以写为主的OLTP,并混合了部分查询相当复杂的OLAP,性能要求还是比较高的,ORM很快就败下阵来。很多时候甚至逼迫笔者重拾SQL,这时候两难的境地出现了:一边是清晰的OO,一边是高效的SQL;普通CRUD是OO的强项,而复杂的查询统计则又是SQL的天赋。笔者于是无奈地在这两个阵营里转来转去,一面到各个技术站点寻求“真理”。可惜这年头,以SQL为代表的传统阵营和以OO为代表的新生阵营有些“水火不相容”的味道,正是“人也多嘴也多讲不清道理”。寻求得越多,也就疑惑得越多。自己也参与并发起过一些争论,结果愈发云山雾水。

工作生活疲累之余,信手翻翻十多年前一度热衷的儒释道经典,这才猛然间有了“不识庐山真面目,只缘身在此身中”的觉悟。答案其实已经在笔者实践的“无奈”当中。由此可见古人“兼容并包”的睿智。
正所谓OO和SQL,本是同根生,相煎何太急。与其争论谁比谁更高更强,不如共同携手解决现实问题。

在此原则下,笔者对项目中SQL不爽的部分改用OO,OO不适合的地方沿用SQL,终于达到了很好的平衡。
于是,曾经深信而后怀疑否定的的AR,携手SQL老大哥,相当痛快地解决了大部分企业应用问题。
对立并非正途,合作才是王道,这个道理在代码领域同样成立。
提供了基于BP(Back Propagation)神经网络结合PID(比例-积分-微分)控制策略的Simulink仿真模型。该模型旨在实现对杨艺所著论文《基于S函数的BP神经网络PID控制器及Simulink仿真》中的理论行实践验证。在Matlab 2016b环境下开发,经过测试,确保能够正常运行,适合学习研究神经网络在控制系统中的应用。 特点 集成BP神经网络:模型中集成了BP神经网络用于提升PID控制器的性能,使之能更好地适应复杂控制环境。 PID控制优化:利用神经网络的自学习能力,对传统的PID控制算法行了智能调整,提高控制精度稳定性。 S函数应用:展示了如何在Simulink中通过S函数嵌入MATLAB代码,实现BP神经网络的定制化逻辑。 兼容性说明:虽然开发于Matlab 2016b,但理论上兼容后续版本,可能会需要调整少量配置以适配不同版本的Matlab。 使用指南 环境要求:确保你的电脑上安装有Matlab 2016b或更高版本。 模型加载: 下载本仓库到本地。 在Matlab中打开.slx文件。 运行仿真: 调整模型参数前,请先熟悉各模块功能输入输出设置。 运行整个模型,观察控制效果。 参数调整: 用户可以自由调节神经网络的层数、节点数以及PID控制器的参数,探索不同的控制性能。 学习修改: 通过阅读模型中的注释查阅相关文献,加深对BP神经网络与PID控制结合的理解。 如需修改S函数内的MATLAB代码,建议有一定的MATLAB编程基础。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值