`
renzhelife
  • 浏览: 672263 次
文章分类
社区版块
存档分类
最新评论

年度回忆录(2011.01----2011.07)

 
阅读更多

看了看上次的总结是201111日,距离这次的总结有将近七个月的时间,下面来说一说这七个月的学习情况(按照时间进度)。

l 英语(1月——now

上次做总结的时候恰逢我们学完软件工程,过年的时候暂时放下了计算机的学习,开始了对英语的研究。其实说到英语学习真正学到的东西是很少的。因为不管哪门外语绝对不会在你学了几十天后有明显的效果,外语这个东西就是需要时间去打磨,需要毅力去雕琢的。

这段期间写了几篇关于英语的博客,都是情感性的没有什么技术性的总结(外语能有啥技术!)。外语嘛就是看,听,听,看……然后如此循环Until 自己真正有了英文思维)。其实关于“英文思维”这是老师的目标,对于自己而言开始的时候并没有这么“深奥”的目标。当时自己仅仅是希望可以听懂外语,能用外语和别人进行简单的交流。

但是不得不说的是,寒假的40天学习虽然没有达到这个目标,而且自己感觉关于英语的水平丝毫没有进展,但是令人欣慰的是自己不再讨厌英语,而是能听进去了。注意“听不进去”和“听进去”是一回事,“听懂”和“听进去”是另一回事。

假期在看英语时很多时候都是半睡半醒的状态,这是一个特别严重的问题。一方面我们要抛弃中文的思维来学习英文,把她当做母语来学,不用中文的思维去考虑;把自己当做婴儿来看待,想学就学累了就睡。一方面我们又要充分发挥我们是成年人的优势,就是能更多的集中注意力来进行语言的学习,而不是完全和婴儿似的每天最多集中几十分钟的注意力。

我们现在的问题是认真听但是听不懂,具体听不懂有两个原因:第一,生词不懂所以不懂;第二、说的太快。上面两种情况都需要我们要把听不懂的音与情境对应记忆,反复多次后就会有印象。但是婴儿或者几个月大的孩子他们的反复是高效的,想想你是怎么教孩子喊“爸爸”的?很可能你喊他几百遍“爸爸”他才喊你一声“爸爸”。相对而言我们的反复是低效率的,一个单词或者一个句子在这个视频中看完了,和情境对应了,但是等到下次再看估计是几个月之后了,不能说没有效果,只能说效果甚微而已。所以说我们需要高效的重复,于是现在自己就在做这件事情,一个视频或者音频反复的听知道理解为止,不在迷恋量的多少,而更加注重质的高低!

通过整个寒假的学习基本上适应了这种建立英文思维的学习方法。现在要做的就是坚持每天利用这种方法看英语,相信在不久得将来可以有巨大的收获,我相信!

l 计算机(寒假结束——now

寒假结束后就开始运用软件工程的思想来重新实现机房收费系统。因为是第二遍做这个系统了,所以需求什么的很明确,于是就直接开始根据自己以前了解的需求动手画用例图。在整个建模的过程中再次复习UML的相关知识,并且在这个过程中熟悉了不同的UML工具(Rose以及EA还有PD等等)。在这一遍做的时候充分感受到了软件工程带来的好处,思路清晰,目标明确。与面向过程的方式完全不同的是,通过UML建模可以对整个系统的各个方面(从需求分析到详细设计)都能一一体现出来,做到了一行代码不写,也可以将整个软件的枝枝叶叶捋清楚。从用例图描述需求,知道整个系统要实现那些功能,然后开始画包图,包图的确定代表整个系统架构的确定,为了将系统的架构设计的更合理,更利于后期的维护,于是我们学习了三层架构

在系统设计阶段系统的学习了三层架构的相关知识,了解了为什么我们以前面向过程的那些个代码为什么难以维护,难以升级。原因就是之前的代码耦合度是非常高的,设计的好的话实现应该不是问题,但是后期的升级维护非常困难不敢轻易改动。添加功能还好一点,要是改动功能的话就可能导致其他的功能受到影响,当然添加功能到一定程度后整个系统的臃肿程度就不堪设想了。

三层架构的思想按照目前自己的理解一言以蔽之:解耦!

无论网上资料说的天花乱坠,归根结底就是解耦!因为他就为了实现快速开发、便捷维护、简单升级而出现的。也就是说用三层架构写出来的东西比面向过程那些代码要松散的多,这样的话一定程度上前期的实现可以分工合作,后期的维护避免了“牵一发而动全身”的尴尬。之所以说“一定程度上”是因为并不是所有运用三层架构的系统设计的都是那么合理,如果设计的不好就算用了三层架构照样耦合度很高。

通过分层一般得到界面层(UI)、业务逻辑层(BLL)、数据访问层(DAL)这三层。如果是多层的话也是由这三层衍生而来。比如在各层之间加接口,或者在DAL层下面在加一个SQLhelper层等等,都是些换汤不换药的做法,归根结底还是三层。分层结束后可以说整个软件的骨架就敲定了,然后就开始真正考虑每层的类的设计了。当然这一个过程中最先得到的应该是实体类,也就是数据库中表的设计。

在这一遍做机房收费系统的时候又复习了数据库比较高级的应用,例如存储过程、三范式云云。在这个过程中才真正体会到一个优秀的数据库设计对于一个高效的系统是多么的重要。三个范式保证了数据库中的数据不会冗余,提高了数据库的效率,为系统操作数据库节省了资源的消耗。而存储过程的应用提高了编程人员的效率,本来在代码中需要几个方法才能完成的任务一个存储过程就可以搞定,但是万事有利有弊滥的,用存储过程的后果就像回到了面向过程时代一样,强耦合的副作用将体现的淋漓尽致。具体的存储过程的使用可以看我的两篇博客:《存储过程懂不懂》、《存储过程进阶

数据库敲定之后开始转到界面的设计当中去,开始考虑怎样将界面设计的满足用户的需求,这个阶段就是些拖拖拽拽的工作了。当界面和数据库确定后就开始了整个软件开发阶段关键的地方,同时也是UML建模中自己认为比较难的地方——时序图。

与此同时在考虑各层中类应该怎么设计的时候不得不用到的知识是设计模式,不得不提的是这次机房收费系统中用的最典型的设计模式就是“抽象工程加反射”来实现多个数据库的切换。设计模式的应用可以在这个时候考虑,也可以在系统完成设计后,进行对系统重构的时候考虑。由于“抽象工厂加反射”这个技术经常被用到,所以没必要等到系统完成后再去重构,于是在设计阶段就直接用之。当然在重构的过程中还会用到其他的设计模式比如:“单例模式”,如果每层之间都用接口的话那么整个系统就是一个“外观模式”等等。

时序图画完之后就开始进入了实现阶段,开始了盼望已久的敲代码阶段。如果时序图画的比较好的话,那么各层中的各个类的方法属性应该有个大致的眉目了。在这个阶段逐步熟悉新的开发环境——.NET平台,比较深入了解了这个平台提供的强大的功能;新的编程语言VB.net,再次加深了对对面向对象语言的理解。其实如果具有了编程的思想,就是记事本也可以写出非常厉害的程序,环境只不过是提高了人们的编程效率而已,而语言就更加不值得一提了。

在面向对象的世界里,万物皆对象,在做任何之前首先要考虑的就是封装、继承、多态。只有真正做到面向对象了,前期的那些建模分层工作才是有生产力的,不然的话你永远是用面向对象的语言、面向对象的工具来做着面向过程的事。和以前面向过程开发比起来没有丝毫的优势可言。写出的系统依然是一坨鸡窝!

开发过程中同样巩固了对编程标准的理解,软件的实现是每个开发者义不容辞的责任,但是写的代码让别人能看懂,而且是轻而易举的看懂则是一个更加高级的要求。更加重要的是这个要求绝对是检验是否是专业人士的标准之一。从变量的命名到方法的注释无一不体现一个开发人员的个人素质,而这个素质恰恰决定一个团队的成功与否。

个人版的第二遍机房收费系统完工后,就开始了投入到合作版的机房收费系统的开发周期当中。和个人版的流程是一致的,同样是需求——用例图、架构——包图、详细设计——类图+流程图+活动图。与上次个人开发不同的是更加需要大家的同心协力,而不是单打独斗。

只有合作的想法是不够的,还需要技术的支持,于是在这个过程中熟悉了对SVN的应用,熟悉了版本控制的操作流程。技术永远都不是最困难的,而人员之间的协调合作才是最棘手的,合作开发的过程中领悟到一个优秀的团队中不但需要有一个给力的领导,还需要各个组员之间进行有效的沟通,要懂得礼貌,要懂得尊敬。这些不只是要放在嘴上的,更要落实到行动当中,一个团队中任何一个小小的错误都可能导致系统不能如期完工。

合作版本的机房收费系统完工后C/S 的学习就告一个段落了,于是就开始了B/S的学习。首先是看了牛腩的新闻发布系统。根据一贯的类比的学习方法,通过对C/SB/S的对比发现其实这两者除了界面层的实现方式不同之外其他的地方简直一模一样。看完了牛腩的新闻发布系统对B/S系统有了一个大致的了解,为了能做出更好的、更漂亮得界面于是开始了对htmljavascriptjqueryasp.netCSS+DIV的学习,这些内容目前正在学习当中。和C/S对比起来B/S的开发显得更加麻烦,所谓麻烦就是要注重界面的设计,在C/S系统中界面的制作只需要拖拖拽拽几个控件就可以了,但是B/S中不但要求逐步调整页面的布局,还要求满足不同浏览器的兼容性,有时候经常会为了一个样式调整半天,麻烦多多啊!

B/S学习了一段时间后又开始了真正做工程的阶段,在这个阶段发现一个完美的系统是需要良好的“用户体验”的,保证系统能够高效的运行的确重要,但是一个令人赏心悦目的界面更是不可或缺的。界面布局、菜单设计等等这些都是给用户的第一印象。如果界面做的不好的话用户将不能正确的使用这个软件。而我们做软件的目的不就是为了服务他人提高工作效率么,所以说界面的设计的重要性丝毫不亚于后台的设计!

纵观自己的学习过程俨然就是一个软件开发过程的放大图,同时也是软件工程发展的缩小图。整个的学习过程:先理论后实践,在实践中去体会理论、完善理论。最后,配一图简要表述一下学习计算机以来的整个学习过程。


分享到:
评论

相关推荐

    基于ssm的公司人力资源管理系统设计与实现源码.zip

    提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

    tomcat安装配置教程.txt

    ### Tomcat安装配置教程.txt #### 资源描述 本教程文件详细介绍了Tomcat的安装和配置过程,旨在帮助用户快速、顺利地部署和运行Tomcat服务器。内容涵盖了从下载到配置的各个步骤,包括必要的环境设置和常见问题的解决方案。 #### 内容概要 1. **前期准备** - 系统要求:介绍支持Tomcat的操作系统版本和硬件需求。 - 环境准备:包括安装JDK和设置JAVA_HOME环境变量的步骤。 2. **下载与安装** - 从Apache官方网站下载Tomcat的具体步骤。 - 解压安装包并移动到指定目录的详细指引。 3. **基本配置** - 配置Tomcat的server.xml文件,包括端口设置和连接器配置。 - 配置web.xml文件,介绍一些常见的配置选项和它们的用途。 4. **启动与验证** - 启动Tomcat服务器的命令和步骤。 - 验证安装是否成功,包括访问默认主页和管理控制台。 5. **高级配置** - 配置Tomcat的虚拟主机,实现多站点部署。 - 配置SSL/T

    155_基于PhP的超市商品管理系统的设计与实现-源码.zip

    提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

    2030.5 CSIP通信报文参考

    2030.5 CSIP通信报文参考

    基于微信小程序的人脸识别的签到系统的设计与实现源码.zip

    提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

    冒泡排序 基础排序 插入排序 快速排序 双路快速排序 三路快速排序 堆排序.zip

    插入排序 插入排序的代码实现虽然没有冒泡排序和选择排序那么简单粗暴,但它的原理应该是最容易理解的了,因为只要打过扑克牌的人都应该能够秒懂。插入排序是一种最简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。 1.算法步骤 将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。 从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置。(如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等元素的后面。) 选择排序 选择排序是一种简单直观的排序算法,无论什么数据进去都是 O(n²) 的时间复杂度。所以用到它的时候,数据规模越小越好。唯一的好处可能就是不占用额外的内存空间了吧。 1.算法步骤 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置 再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。 重复第二步,直到所有元素均排序完毕。

    基于Scratch Blockly的设计模式可视化学习平台

    在这个选题中,你需要实现一个基于 Scratch Blockly 的设计模式可视化学习平台。结合Scratch Blocks强大的功能和设计模式这一经典的编程思想,为初入编程大门的人提供一个易于学习的平台。 通过对Scratch Blocks以及其他Web领域前沿技术的体验与研究,了解行业在可视化、前端存储等领域的发展方向,提高自身技术水平; 在线编程教育是未来必然的一个发展趋势。本文以可视化为核心,设计模式为主题构建学习平台,为在线编程教育提供一个发展思路; 让编程初学者能以可视化这种低门槛的方式,了解各个设计模式的概念与适用于解决的问题,激发用户学习兴趣,并为之后良好的编程习惯打下基础。

    Python教程-快速入门基础必看课程10-函数基础

    该视频主要讲述了Python中函数的定义、使用和返回。函数是Python中一个重要的概念,可以用来封装一段可重复使用的代码,并通过函数名来调用它。在Python中,定义函数的关键字是`def`,后面跟着函数名和括号。函数可以没有参数,也可以有多个参数。如果函数有参数,则需要在括号中写出参数的类型和名称。在函数体内,可以编写一系列语句来实现函数的功能,这些语句可以是任何有效的Python代码。在函数执行完毕后,可以使用`return`语句来返回一个值。视频还提到了Python中的缩进语法。在Python中,缩进是一种强制性的语法,用于表示代码块的层次结构。在函数体中,所有语句必须缩进以表示它们属于同一个代码块。缩进的方式可以是四个空格或一个制表符。

    跨境综合行业研究:总量行业出海研究专题报告.zip

    跨境综合行业研究:总量行业出海研究专题报告

    Screenshot_20240601_132233.jpg

    Screenshot_20240601_132233.jpg

    SM 2258XT 量产工具

    SM 2258XT 芯 固态硬盘量产工具,

    BeanUtil.java,对象属性拷贝工具

    BeanUtil.java,对象属性拷贝工具

    农垦农产品质量追溯系统建设项目验收限期整改意见书.doc

    农垦农产品质量追溯系统建设项目验收限期整改意见书.doc

    孕妇外周血胎儿游离DNA产前检测申请单(第一联参考模板).docx

    孕妇外周血胎儿游离DNA产前检测申请单(第一联参考模板).docx

    183_基于uniapp+springboot兼职app-源码.zip

    提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

    32单片机内存池的使用

    32单片机内存池的使用 内存池使用示例 学习

    超级好用的中文进制计数器

    好东西值得分享

    aaaaaaaaaaa

    aaaaaaaaaaaaa

    计算机网络自顶向下方法第七版课后习题解答

    计算机网络自顶向下方法第七版课后习题解答

    C++ Python AWS S3认证

    C++ Python AWS S3认证

Global site tag (gtag.js) - Google Analytics