我的编程探索之旅(续集)
引:
————————————————————————
上次写了一篇《我的软件工程之路(一)》,如果你没看过,可以先去看看,名字后面挂了一个(一),当然就意味着要继续写下去,所以这篇文章就应运而生了。
两个月的时间过去了,又紧锣密鼓地学习了两个月,我依然是个菜鸟,只是这个菜鸟不是菜得那么离谱了……
————————————————————————
看过我上一篇文章《我的软件工程之路(一)》的网友,如果你足够留心,你会在文章下面的“我的进度心情表”中发现最后的日期是11月6日,机房收费系统总结。说实在的,机房收费系统,我做了三遍,你肯定纳闷,干嘛一个系统做三遍啊?
其实在完成三遍之前,我也不知道一个系统做那么多遍干嘛。别着急,听我说。
做第一遍之前,我学习了VB6和SqlServer数据库,敲了很多小Demo,后面照着代码,敲了一个学生信息管理系统。然后仿照师兄的机房收费系统(做好的,没有源码),利用在学生信息管理系统中积累的经验,完成了第一遍机房收费系统(现在看起来,好像搭了一个鸡窝)。在这个过程中,基本上我对“系统”已经不恐惧了,不管三七二十一,反正我做的这个能跑起来了,而且对代码有了那么一点感觉,你可以管它叫做“代码亲和力”,呵呵。
接着,我学习了软件工程概论,UML和ROSE,C#和设计模式,分层(三层架构,MVC),VB.NET,这在上一篇“我的进度心情表”中也有体现。这个时候,我开始利用面向对象思想重构机房收费系统,也可以说是利用上面学习的这些门课的知识重构机房收费系统:写文档,画UML图,分层,套用设计模式,最后用VB.NET实现设计。第二次做机房收费系统,其实是把前面学到的知识应用到实际项目中去,查漏补缺,巩固所学并加深理解。可以说这次做机房收费系统,我的软件工程思想有了质的变化,软件工程这个大门向我敞开了。
完成了开发,测试,总结,然后进入了下阶段的学习,这个时候,我学习了版本控制,也就是学习SVN,搭建SVN环境,然后我们组建了4个人的小组,选出项目经理,总之就是搭建出一个与企业相类似的环境,进行机房收费系统的设计与开发,测试。这个阶段,我了解了企业中到底是怎么开发软件的,锻炼了我的合作开发能力。
看到这里,我想你应该有些明白我为什么做了三次了,三次做《机房收费系统》的目的不是重复,不是为了更加熟练,我们在进行项目驱动式学习,但并不是盲目地进行项目驱动式学习,我们在遵循一种学习理论:随机通达教学法(核心主张是,对同一内容的学习,要在不同时间、在重新安排的情景下、带着不同目的以及从不同的角度多次进行,以此达到高级知识获得的目标。具体来说,对同一内容的学习要有不同时间多次进行,每次的情境都是经过改组的,而且目的不同,分别着眼于问题的不同侧面。由于在各次学习的情境方面会有互不重合的方面,这种反复并非为巩固知识技能而进行的简单重复,而是把概念具体到一定实例中,并与具体情境联系起来。每个概念的教学都要涵盖充分的实例,分别用于说明不同方面的含义,各实例都可能同时涉及到其它概念。在这种学习中,学习者可以形成对概念的多角度理解,并与具体情境联系起来。形成背景性经验。这种教学有利于学习者针对情境建构用于指引问题解决的图式。)
这个过程,学习软件工程,学写文档,画UML图,再到设计模式,三层架构,最后利用所学重构个人版机房收费系统,再学习SVN,合作开发机房收费系统,说长不长,说短不短。迷茫过,快乐过,痛苦过,兴奋过。引用曾流行的一句话,叫:痛并快乐着。
回忆点点滴滴,曾为不会写文档而纠结,到现在机房收费系统的文档写了N个版本,不会画UML图纠结,到现在机房收费系统的版本达到了8.0,还不算前期小规模的画。不会分层,不懂MVC,自己找资料,东一榔锤西一棒槌的打出去,这是米老师(我的导师,有兴趣的网友可以在百度搜一下米新江)故意培养我们自己的去寻找食物的能力,“狼一样的学生”是这样慢慢炼成的吧。
很想用师兄的一段话来形容这段过程的学习,《机房收费系统》就像一块磨刀石,将我们磨的越来越锋利;同时它又是一个大消化系统,将我们需要用到的软件工程,UMl,C#,设计模式,MVC这些东西都消化了进去。
合作开发机房收费系统完成,意味着我的一个阶段终结。暂时告别了C/S结构系统的学习,迎来了B/S结构。
先不急着说,这中间,我们还做了一个很有趣的项目。
以前我们利用SNS(SocialNetworkingServices,即社会性网络服务)克服了传统学习环境的弊端,实行开放式学习,让全世界的老师变成提高班学生的老师,我们看很多公开课,看很多名校的授课视频,看很多大牛的录制的视频。
这次,经米老师授意,我们尝试了自己录制视频,我们称它为视频项目,从写项目计划书,日报,完善讲课内容,整理资料,录制,最后收尾,一周的时间,算是对自己这段时间学习的总结,也算是为了他人贡献自己的一点力量吧。
我们把这段时间的学习,比较有代表性的地方录成了视频。主要集中在,UML、设计模式和三层架构在机房收费系统中的应用。我负责的是三层架构在机房收费系统中的实现,一共录了9集,一集20分钟所有的样子。不管以后能不能用上,能保留下一份自己的劳动成果,还是非常开心的。当然也希望对后来者有所帮助,哪怕供师弟师妹来批判,也挺有意思的。
不能总停留在“机房收费系统”的时代,毕竟,那个时代,现在暂时终结了,留下来的都是些深入骨髓的东西。
新时代来临!
从这次附录的《我的进度心情表》中可以看到,我进入了B/S的学习,这里我是从牛腩老师的新闻发布系统、孙鑫老师的Html和天轰穿老师的Asp.net起步的。对于这三位,大家可以去网上搜一搜,我不过多介绍。
对于新闻发布系统,有以前的基础,后台代码还容易搞定,可能是刚开始接触Web开发,各方面不太熟悉,前台界面总是出这样那样的问题,折腾来折腾去,掐指数一数,整整两周才能跑起来。虽然新闻发布系统很小,真的很小,但仍然有各种不明白,各种不理解,都罗列在那了,这么做能实现,为什么这么做能实现,有没有更好地方法,这里能不能优化,那里是不是可以改进。问号挺多的。
孙鑫老师和天轰穿老师的教学视频看完了,也认真做了笔记,但还在对学习所得进行整理归纳之中,这里先不和大家分享了,相信后续的《我的软件工程之路》文章中会有介绍。后面还会针对asp.net,jquery,css,html,xml,javascript深入学习,学习成果还是会在后续文章中提及。
任重道远,恨不得赶紧把所有的东西都倒进脑子里。还是像我上一篇文章中说的,“脑子里不成一锅浆糊,永远不会豁然开朗”、“永远不要指望只学一本书,就能掌握这门课的全部”。对于暂时的问号,我是没有什么抵触的,这是学习阶段必须经历的嘛,我有信心能顺利通过。问题先挂着吧,等学完下面的几门课,估计对新闻发布系统中一些东西的理解就不可同日而语了,给自己打个气。
其实,我的博客,每一篇文章,都是学习过程中的点点滴滴,《我的软件工程之路》系列文章只是把那些点点滴滴进行一个汇总和提炼吧。B/S学习的方面说得很少,期待下期吧。
老规矩,附:《我的进度心情表》 微博裁下来的,绝对保真,哈哈,下次考虑用****的迷你博客
推荐阅读
-
告别动态编程,刷完40道算法题,我总结了一套动态调控的方法
-
我自学了两个月的编程,现在每个月能挣 4 万美元。
-
趣谈留言队列,搞清楚留言队列到底是什么!-说到消息队列,洪觉大概能猜到人们听到消息队列的反应,大致可以分为以下几类人。 第一类人,懵懵懂懂,刚上大学接触编程,还没用过消息队列,甚至还以为消息队列就是代码里面要新建一个List之类的;第二类人,听过消息队列,了解消息队列,但具体是什么还不是太明白,只知道一说到消息队列,脑海里马上出现了三组词,削峰、异步、解耦;第三类人,用过消息队列,对它有一定了解,但不知道为什么要这样设计,消息队列有什么样的前世今生,是如何演化到现在的模式的?**第四类人,已经对消息队列有了足够的了解,可以阅读本帖作为复习和温习。**你属于哪一类?无论你对消息队列了解多少,读完这篇文章后,我相信你都会有所收获。 什么是消息队列?我们为什么要使用消息队列?真的只是因为它看起来很勉强、很常用吗?当然不是,一项技术的出现往往是为了解决某种痛点,我们就从这个痛点出发,看看消息队列到底是为了解决什么问题而诞生的。 相信大家在工作之前,或者工作中接触单片机的次数会多一点,不管什么业务都一股脑塞进一个系统里,这种情况下接触消息队列的场景会比较少。但随着业务的增长,量上去了,单机系统就很难维护了,也扛不住并发量的增长,就需要把原来的单体应用拆分成多个服务。例如,牛奇网采用分布式架构,将原来的单体系统拆分成用户服务、题库服务、求职服务、论坛服务等,每个分布式节点都有一个集群,保证高可用性。 那虽然在这样的微服务架构下,如果某个核心业务并发量过大,系统就扛不住了。比如淘宝、淘票票、拼多多、京东等电商场景中的支付场景,你在某宝下单并支付后,调用支付服务,完成支付后,还需要更新订单的状态,这个时候就需要调用订单服务,那我们平时也下单,除了简单完成这些操作外,还会给你相应的积分;商家也会收到订单消息,并给您发送旺旺消息,确认订单无误;同时,也会给您发送消息,确认订单无误。确认订单无误;同时您还可以查看您的物流状态;还有系统为了给您推荐更适合您的商品,会根据您的订单做类似的推荐等等,我说的这些都是当我们下单后,肉眼可以感知到系统所做的动作。 **一个支付动作如果还需要调用那么多服务,等他们响应成功,最后再告诉用户你支付成功了,用户在系统中的整个体验会非常糟糕。**设想一下,假设请求服务+处理请求+响应总共需要 50ms,我们上面列出的场景:支付服务、订单服务、积分服务、商家服务、物流服务、推荐服务,总共需要 300ms。
-
询问如何以编程方式与 winlogon 进行交互?EN-更新:我看到一些用户没有完全理解这个问题,并提出了一些解决方案,但这些方案并不适合我的情况。我试图实现的工作流程如下:
-
[风云变幻编程 - python 语法] 第 9 级(喊出我的名字) - 定义和调用函数 - 注释
-
程序员之歌我厌倦了编程的一个人
-
一对一、一对多、多对多的续集学不会你黑我
-
AI在《我的世界》中的探索之旅:运用VPT模型的新体验
-
大学生如何通过编程实现赚钱?| 讲述我的大学捞金经历
-
我的小程序探索之旅第四部分:通过扫描日常二维码与点击短链直达小程序世界