`
langyu
  • 浏览: 884417 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

我所认识的软件开发原则:减少等待时间

阅读更多
        在系统或设备交互时,因处理效率不一致,经常会导致等待的发生。最初这种矛盾在计算机内部尤为突出。高速CPU与低速外部设备之间数据处理的频率差异,使CPU在绝大部分的时间周期内不做任何事情。计算机专家不能允许这种无谓浪费,异步处理模型被引入。

        其实在与计算机相关的域模型中,频繁等待的不至CPU。使用计算机系统的人,等待数据库中数据的应用程序,等待网络返回的浏览器。在等待的过程中,这些域模型可能什么事也不会做。相似的场景反复出现,就迫切地需要我们减少等待时间,提高利用率。

        为了实现这样的目标,我们需要关注当前的三大主流思想:多线程,缓存和异步模型。它们的出发点和使用场景不同,但都会缩短等待时间。下面针对这三种思想做大致分析。

多线程

        对于一个耗时或是大数据量的任务,在单线程执行时,我们在等待结果,高速CPU在等待执行数据。为了减少这种等待,用多个线程来分段执行任务,缩短等待结果的时间,在一定程度上提高CPU的利用率。

        当然多线程更适用于多个各异任务同时执行,在系统中适时分摊各个任务执行的时间和占用的资源,以达到资源的有效利用。

        对于多线程大家了解的很多,这里算是简略提到。

缓存

        有人甚至这样说,Web2.0的特点就是缓存,对于这种理解深以为然。基于网络的应用需要跨越浏览器、网络、服务器和数据库等一系列基础设施,在每一点上都有很多操作流程和逻辑处理。所以缓存-把数据送到离用户最近的地方-的理念大行其道。浏览器存储着最近访问过的内容,用户请求被分发到离用户最近的CDN,对网络应用的每个请求都要经过Squid,应用所需要的数据库中的常用数据存放在Memcached中,以及其它各式各样的缓存模型。这些各式各样的缓存构建于终端用户于系统应用之间。每层缓存所支撑的,就是当前缓存的目标用户。

        当然不至这些,有同样目的的众多应用或是硬件都叫缓存。在减少“用户”等待方面起着极其重要的功能。

异步

        多年来我们的程序基本是同步执行。异步模型没能正常推广的原因有如下原因,一是异构的系统设计复杂,出现的比较少;二是很少有像CPU与外部设备在处理频率上的极大矛盾;三是异步模型本身的技术要求很高。

        但当前异构系统不断涌现,随之而来的是众多的RPC框架。在高层系统交互之间实现的异步模型,可以有效降低系统等待时间,减少系统耦合度。在更低层,模块或是代码级的异步处理变得越来越重要。对于Java来说, Java Concurrent API 对于异步模型的成长起着推波助澜的作用。

        与前两个主要点的普及度相比,异步模型正不断走向前台,必将成为未来的主流技术。

        出来混迟早是要还的。使用这些模型本身是一种高风险投资,伴随着处理效率提高、等待时间降低等优点,技术和实现难度将成为是否选择的一个很大权衡点。如多线程并发可能会出现很难琢磨的异常情况,多级缓存间的数据同步问题,异步系统的执行监控问题等等。但之前的很多普通技术已经很难有潜力去挖掘来提高系统效率,本着技术创新的角度,我们应当在这些新的主流思想上有所作为。




我所认识的软件开发原则:权衡
我所认识的软件开发原则:封装
我所认识的软件开发原则:简单表述
我所认识的软件开发原则:二八原则
0
0
分享到:
评论

相关推荐

    对软件开发的理解和认识作业.docx

    对软件开发的理解和认识作业.docx

    人件:软件开发管理经典

     本书专门讨论了软件开发和维护的团队管理问题,并向人们的传统认识提出了挑战。作者在书中推崇人本管理思想,指出知识型企业的核心是人,而不是技术。本书子1987年首次出版后,曾在西方引起了轰动,被誉为“对美国...

    软件开发实习报告.docx

    实习就是运用所学习的专业知识来了解会计的工作流程和工作内容,加深对财务会计工作的认识,将理论联系于实践,培养实际工作能力和分析解决问题的能力,达到学以致用的目的,为成功走向社会做准备。以下是软件开发实习...

    Insight into Images Principles and Practice for Segmentation:(对图像的认识 分割的原则和实践)

    Insight into Images Principles and Practice for Segmentation:(对图像的认识 分割的原则和实践)

    软件开发的认识.doc编程资料

    软件开发的认识.doc

    【软件测试001】认识软件测试、测试分类、测试原则.pdf

    通过这份资料,我将带你认识软件测试的基本概念,了解软件测试的发展历程,探讨为什么要进行软件测试以及如何进行软件测试的职业规划。同时,我还会详细解读软件测试的各类分类方法,包括按开发阶段、是否查看源代码...

    软件开发过程认识实习报告.docx

    软件开发过程认识实习报告.docx

    现代软件工程在软件开发中的应用.doc

    现代软件工程在软件开发中的应用 作者:崔宁 来源:《电子技术与软件工程》2016年第22期 摘 要 随着近年来社会主义市场经济的迅猛发展,越来越多的科技产品逐渐为人们所 了解和关注。正如我们所知,科技产品的运行离...

    敏捷软件开发 Agile Development

    敏捷软件开发让项目的成功变得更为可能,减少了很多项目的痛苦。 本问介绍了敏捷软件开发的原则和实践,有助于读者对敏捷软件开发有一个宏观的认识和了解。

    软件工程认识报告.doc

    我对软件工程的认识 班级:软件二班 随着现代计算机应用的日益普及,软件数量的急剧上升。在程序运行时发现的错误必须 设法改正;用户有了新的需求时必须相应地修改程序;硬件或操作系统更新时,通常需 要修改程序以...

    2现代软件工程在软件开发中的应用.doc

    现代软件工程在软件开发中的应用 作者:崔宁 来源:《电子技术与软件工程》2016年第22期 摘 要 随着近年来社会主义市场经济的迅猛发展,越来越多的科技产品逐渐为人们所 了解和关注。正如我们所知,科技产品的运行离...

    1现代软件工程在软件开发中的应用.doc

    现代软件工程在软件开发中的应用 作者:崔宁 来源:《电子技术与软件工程》2016年第22期 摘 要 随着近年来社会主义市场经济的迅猛发展,越来越多的科技产品逐渐为人们所 了解和关注。正如我们所知,科技产品的运行离...

    软件开发过程认识实习报告.doc编程资料

    软件开发过程认识实习报告.doc

    1软件工程认识报告.doc

    我对软件工程的认识 班级:软件二班 随着现代计算机应用的日益普及,软件数量的急剧上升。在程序运行时发现的错误必须 设法改正;用户有了新的需求时必须相应地修改程序;硬件或操作系统更新时,通常需 要修改程序以...

    对计算机软件开发语言认识及思考.doc

    对计算机软件开发语言认识及思考.doc

    软件开发流程(初步)

    用于对软件开发的初步认识,大体了解开发流程,对自己以后的开发事业奠定基础

    专业教育课程设计报告 ─我所认识的计算机专业

    专业教育课程设计报告─我所认识的计算机专业 绪论: 随着人类迅速向信息社会迈进,计算机技术和基于计算机的应用技术已经广泛渗透到科学、工程、商业和很多人类活动的其他领域。掌握计算技术与否影响了人们的就业...

    修改软件的艺术:构建易维护代码的9条最佳实践

    工程师们会在其中找到解决日常问题的方案,而非工程师们可以对软件开发中所面对的挑战和困难有所认识。” Excerpt From: [美] David Scott Bernstein. “修改软件的艺术:构建易维护代码的9条最佳实践.”

    对软件工程的认识.doc

    很快,软件工程这门课已经结束了 ,通过这学期的学习,我对软件工程有了初步的认识,下面我将介绍我对对软件工程的初 步认识和学习体会。 先说下计算机软件工程的身世: 上世纪六十年代末,随着计算机应用领域的扩大,...

Global site tag (gtag.js) - Google Analytics