前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一种能够快速进阶的学习方式

一种能够快速进阶的学习方式

作者头像
jeanron100
发布2018-07-26 15:41:56
2790
发布2018-07-26 15:41:56
举报

首先这不是一条广告,也不是鸡汤,更不可能一招吃遍天下,先听下我的思路吧。

晚上下地铁的时候,突然想到一个需求,是关于防火墙的,看似简单的防火墙需求,我已经翻来覆去想了好多的招了。

比如下面这样一个页面,我们可以查询防火墙信息。

但是查询的时候有很多需要注意的地方,我们是直接查询系统层的防火墙信息吗?

其实可以更高效一些,如果是一个建设完善的环境,或者逐步完善,基于幂等性,我们其实可以让这个过程更加平滑。如果防火墙信息我们记录在了数据库中,那么我们直接查看本地即可,就不用查询系统层的防火墙信息了,否则我们做得其实更多,我们要从系统层得到防火墙信息,然后把这个权限信息沉淀下来,存入库中,然后返回。

这种操作方式可以用类似的伪代码来说明:

get object info

if object.count() >=1:

then return object.info

else:

obj = object.info

obj.id = id

obj.name = name

obj.save()

return obj

而插入防火墙信息,是一个POST请求,看起来是两个截然不同的操作,但是我们也可以集成一下。

比如插入数据前,我们先在本地数据库中查看是否存在,如果存在,则返回,否则写入数据库中,写入系统防火墙层面,然后返回。

这种操作方式可以用类似的伪代码来说明:

if object.count() >= 1:

return 'already exists'

else:

obj = object.info

obj.id = id

obj.name = name

obj.save()

return obj

这样看来,其实一个查询和插入的操作,如果从完善的角度来看,其实步骤是很相似的。我们完全可以基于这个模型做一层重构,把相似的逻辑都抽取出来,统一处理,这样一来如果需要在某个地方写入日志或者加入审计等,我们都有一个统一的入口来处理。

然后问题就来了,模型字段映射的过程是里面篇幅最长的部分,比如存在下面的字段,分别来自于模型m1,m2,字段分为是field1,field2,field3

'm1_field1','m2_field1'

'm1_field2','m2_field2'

'm3_field3','m3_field3'

那么对于这种映射关系我们怎么来处理呢,如果有Java基础的同学,很自然的会联想到使用HashMap,但是在Python里面显然不是,Python没有原生的HashMap,而且要实现也需要做大量的转换和映射。所以这个层面来考虑就需要充分利用到Python的优势,里面有字典,我们就把字典用透。这个过程要实现还是需要花费一些精力和时间的,这样就是一个迭代定制的过程。

那么到了这里,如果我们自己用查看各类的帖子,其实是很难找到精确的问题解决思路的。所以在这个时候我们就要充分利用到开源红利之一,源代码开放,开放就意味着我能够很容易的查看源码,然后基于这些代码做相应的改进。

就这样我下载了Django的源代码,对于我来说,我最喜欢Django的地方恰恰就在于ORM,当然我只用到了里面最基本的功能,对于外键等复杂功能一概不用。包括到了现在回过头来看,当时的选择还是正确的。

所以如何快速的提高自己的代码能力,设计能力,其实阅读源代码就是一个很好的习惯。这里完全没有捷径,这是你走的时候会更加有方向感,除此之外,每个人的收获就和出发点和态度密切关联了。

好了,Flag立好了,打不打脸就看自己的决心和毅力了。欢迎拍砖,欢迎建议。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-07-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 杨建荣的学习笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档