当前位置: 首页 > 后端技术 > PHP

关于Web开发中“程序=数据结构+算法”的思考

时间:2023-03-29 17:54:15 PHP

关于Web开发中“程序=数据结构+算法”的思考我考过了java,但我觉得基本差不多。我来解释一下我对“程序=数据结构+算法”的看法。与前端程序相比,输入输出的思路是输入前端用户的操作,然后经过逻辑处理后,将数据输出到后端;与后端程序相比,从数据库中取出的数据算作输入,然后经过处理,输出到前端显示;相对于数据库,对数据的操作指令就是输入,操作后的输出结果就是输出(比如删除成功后的返回值,写入成功后的返回值等)。逻辑处理思路在开发流程后端输出到前端显示逻辑是基于输入输出的思路:输入(数据)+处理(算法)+输出(数据);数据由数据结构组成;根据具体业务需求,确定输出数据结构;如果确定输出数据结构过于复杂,拆分成单一的简单数据结构;确定单个简单数据结构的输入源;确定输入源的数据结构;使用算法逻辑将输入源转换为输出数据;将单个简单数据结构组装成最终的复杂输出数据结构;前端遍历输出内容,将数据拆解展示。从前端输入到后端的处理逻辑决定了后端需要存储的数据结构;将复杂的输入数据结构拆分为简单的数据结构;根据简单数据结构遍历用户输入内容,得到输入数据集合;组装简单的输入数据结构并将它们传输到后端;后端将前端输入的复杂数据结构拆解成简单的数据结构;遍历单个复杂数据结构并存储,并返回每一步的存储结果,如果出错则回滚数据;返回存储结果。其他思路具体的业务逻辑可能相对要复杂一些。一般get方法对应后端输出逻辑思路,数据存储对应前端输入思路。这套思路的主要目的是把复杂的程序尽量简单化,用数据和算法的思维去思考程序本身。另一方面,利用数据拆解的思想,尽可能简化复杂的逻辑。一些伪代码示例存储示例commit();}catch(DbException$e){$db->rollBack();//错误回滚}//存储过程示例结束输出示例['member_id'=>3,'member_name'=>'username'],'order_list'=>[['order_id'=>1,'order_sn'=>'订单号'],['order_id'=>1,'order_sn'=>'订单号']]];//确定输出数据结构end//拆分数据结构处理start$member=Member::find()->select(['member_id','member_name'])->asArray()->one();$order_list=Order::find()->select(['order_id','order_sn'])->asArray()->all();foreach($order_list作为&$item){$item['time']=time();//对数据列表做其他处理}//拆分数据结构处理end//组装数据并输出startreturn['member'=>$member,'order_list'=>$order_list];//组装数据并输出theend前端的思路也是一样的,我就不解释了。这几天,顺丰新增了一个版块——直播。我也收到了正式邀请。4月7日(本周五)晚上20:30,跟大家聊聊项目的一些总结。传授:Yii2的RESTful程序基础设计与目录规划