开发过程中资源限制的挑战

1.什么是资源限制

资源限制是指在进行并发编程时,程序执行速度受限于计算机硬件资源或软件资源。

例如,服务器的带宽只有2MB/s,某个资源的下载速度是1MB/s,系统启动10个

线程下载资源,下载速度不会变成10MB/s,所以在进行并发编程时,要考虑这些资源的

限制。硬件资源限制有带宽的上传/下载、硬盘读写速度和CPU的处理速度。软件资源限制

有数据库的连接数和socket连接数等。

2.资源限制引发的问题

在并发编程中,将代码执行速度加快的原则是将代码中串行执行的部分变成并发执行,但是

如果将某段串行的代码并发执行,因为受资源,仍然在串行执行,这时候出现不仅不会加快

执行,反而会更慢,因为增加了上下文切换和资源调度的时间。例如之前看看到一段程序使用

多线程在办公网并发地下载和处理数据时,导致CPU利用率达到100%,几个小时都不能运行

完成任务,后来改成单线程,一个小时就执行完成了。

3.如何解决资源限制的问题

对于硬件资源限制,可以考虑使用集群并行执行程序。既然单机的资源有限制,那么就让程序

在多机上运行。比如使用ODPS、Hadoop或者自己搭建的服务器集群,不同的机器处理不同的数据。

可以通过“数据ID%机器数”,计算得到一个机器编号,然后由对应编号的机器处理这笔数据。

  对于软件资源限制,可以考虑使用资源池将资源复用。比如使用连接池将数据库和Socket

连接复用,或者在调用对方webservice接口获取数据时,只建立一个连接。

4.在资源限制情况下进行并发编程

如何在资源限制的情况下,让程序执行得更快呢?方法是,根据不同的资源限制调整程序的并发度,

比如下载文件程序依赖于两个资源--带宽和硬盘读写速度。有数据库操作时,涉及数据库连接数,如果

SQL语句执行非常快,而线程的数量比数据连接数大很多,则某些线程会被阻塞,等待数据库连接。

对于Java开发人员,建议多使用JDK并发包提供的并发容器和工具类来解决并问题,因为这些类都已经

通过充分的测试和优化。

IT技术和行业交流群 417691667

时间: 2024-10-22 17:51:46

开发过程中资源限制的挑战的相关文章

android app 开发过程中 对于性能优化的总结

一款手机应用  从开发过程中就要做好 性能优化,这样才能 让用户体验度 提升, 假如 我们打开一个应用 出现卡顿, 不流畅,则会很影响 用户对该应用的态度,产品狗 都很注意这些人机交互方面的 体验. 谷歌官方也是一直在优化 android 系统,不论是  碎片化处理 还是 系能 上面,这方面 ios 就做的比较好,配置比 android 低,但是流畅度却比android高,体验效果更好. 官方推荐方案:http://www.oschina.net/news/60157/android-perfo

列举游戏开发过程中的一些不良现象

1.    没有明确的计划和版本说明,没有定期审核,开发人员没有压力,懒散拖延 2.   工作流没有走通,工作流程不顺畅 3.   缺乏校验策划工作正确性的工具,缺乏提高美术生产力的编辑器,缺乏校验程序效率和稳定性的辅助工具 4.   工作流.工具等效率低下,导致生产力低下,且懒于改进 5.   不紧张.不负责,懒散,需要人督促,某些功能没人催就不管,情愿打游戏.上网 6.   功能修改仅有口头督促,没有任何记录,最后也忘记审核 7.   会议结束后没有结果,没有后续行动,没有监督,等于没开会

Unity中资源动态加载的几种方式比较

初学Unity的过程中,会发现打包发布程序后,unity会自动将场景需要引用到的资源打包到安装包里,没有到的不会跟进去.我们在编辑器里看到的Asset中的文件结构只是工作于编辑器环境下的,在游戏中unity会重新组织数据库.这是我们一定会遇到一个需求,即动态的加载我们自己的文件,而且想维护这个文件存储和加载的位置,并且是各种自定义的文件. 比如说你换装,需要动态从磁盘load一个模型,正常情况下如果这个模型没有被场景引用到,它都根本不会被打进安装包的.再比如说我想存储一个自己定义的配置的文件,想

在项目开发过程中,应该按要求编写好十三种文档,文档编制要求具有针对性、精确性、清晰性、完整性、灵活性、可追溯性。

        在项目开发过程中,应该按要求编写好十三种文档,文档编制要求具有针对性.精确性.清晰性.完整性.灵活性.可追溯性. ◇ 可行性分析报告:说明该软件开发项目的实现在技术上.经济上和社会因素上的可行性,评述为了合理地达到开发目标可供选择的各种可能实施方案,说明并论证所选定实施方案的理由. ◇ 项目开发计划:为软件项目实施方案制订出具体计划,应该包括各部分工作的负责人员.开发的进度.开发经费的预算.所需的硬件及软件资源等. ◇ 软件需求说明书(软件规格说明书):对所开发软件的功能.性能.

Android之Volley框架在实际开发过程中运用

这个章节我们来讲下Volley在实际开发中如何正确地运用它.废话不说,进入正题. 集成 Volley 如果使用Android Studio开发的读者可以直接添加远程依赖: compile 'com.mcxiaoke.volley:library:1.0.19' 如果使用Ecplise开发的读者可以在lib中加入jar,可以自己通过源码进行打包成jar,我这里就直接给出Volley.jar资源了.点此下载Volley.jar Volley的Requst final TextView mTextVi

浅谈软件项目开发过程中的主要项目风险及对策

软件项目成果的需求分析方和软件项目的承担者都十分关心这样的一个问题:什么样的因素会导致软件项目的失败?与项目有关的因素的改变将对按时.按经费预算交付符合预定质量要求的软件成果产生什么样的影响?这些都属于软件项目开发过程中考虑的风险问题. 软件项目的风险是指在软件开发过程中可能出现的不确定因而造成损失或者影响,如资金短缺.项目进度延误.人员变更以及预算和进度等方面的问题.风险关注未来的事情,这意味着,软件风险涉及选择及选择本身包含的不确定性,软件开发过程及软件产品都要面临各种决策的选择.风险是介于

001-软件开发过程中所需要的文档

软件项目开发过程中,应该按软件开发要求撰写十三类文档,文档编制要求具有针对性.精确性.清晰性.完整性.灵活性.可追溯性! 一.可行性预计划研究阶段 1.可行性分析报告  说明该软件开发项目的实现在技术上.经济上和社会因素上的可行性,评述为了合理地达到开发目标可供选择的各种可能实施方案,说明并论证所选定实施方案的理由. 2.项目开发计划  为软件项目实施方案制订出具体计划,应该包括各部分工作的负责人员.开发的进度.开发经费的预算.所需的硬件及软件资源等. 二.需求分析阶段 3.软件需求说明书(软件

SpringBoot中资源初始化加载的几种方式(看这一片就够了)

原创不易,如需转载,请注明出处https://www.cnblogs.com/baixianlong/p/11117665.html,谢谢支持哈!!! 一.问题 在平时的业务模块开发过程中,难免会需要做一些全局的任务.缓存.线程等等的初始化工作,那么如何解决这个问题呢?方法有多种,但具体又要怎么选择呢? 二.资源初始化 1.既然要做资源的初始化,那么就需要了解一下springboot启动过程(这里大体说下启动过程,详细:https://www.cnblogs.com/dennyzhangdd/p

短视频app开发过程中需要注意的细节

短视频相比较传统的文字.图片宣传而言,更加具有趣味性,传播范围广,又因为其内容短小精悍去又不失价值和意义,深受投资者的喜爱,无数商家也加入到短视频APP开发的行业中来.那今天拓幻科技分享一下,短视频APP开发过程中都是有哪些需要注意的呢?一.视频特效和素材视频特效是给短视频增加美颜特效和不同的贴纸图案,让短视频更加具有趣味性,让用户乐于去观看并进行传播,这样的短视频更容易吸引他人的注意.这也是短视频区别于传统视频之处,这个时代传统的视频已经不太能吸引用户的注意了,就连看电影也要追求"好莱坞大片&