欢迎来到天天文库
浏览记录
ID:6620715
大小:28.50 KB
页数:5页
时间:2018-01-20
《软件工程师不可不知的10个概念》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、软件工程师不可不知的10个概念出色的软件工程师善用设计模式,勤于代码重构,编写单元测试,并对简单有宗教般的追求。除了这些,优秀的软件工程师还要通晓10个概念,这10个概念超越了编程语言与设计模式,软件工程师应当从更广的范围内明白这些道理。 界面(Interfaces) 惯例与模板(ConventionsandTemplates) 分层(Layering) 算法的复杂性(AlgorithmicComplexity) 散列法(Hashing) 缓存(Caching) 并发(Concurrency) 云计算(CloudComputing) 安全(
2、Security) 关系数据库(RelationalDatabases) 10.关系数据库(RelationalDatabases) 关系数据库因为在大规模Web服务上缺乏可扩充性而颇受微词,然而,关系数据库仍然是近20年来计算机技术中最伟大的成就。关系数据库对处理订单,公司数据方面有着出色的表现。 关系数据库的核心是以记录表示数据,记录存放在数据库表,数据库使用查询语言(SQL)对数据进行搜索与查询,同时,数据库对各个数据表进行关联。 数据库的标准化技术(normalization)讲的是使用正确的方式对数据进行分存以降低冗余,并加快存取速度。
3、 9.安全(Security) 随着黑客的崛起与数据敏感性的上升,安全变得非常重要。安全是个广义的概念,涉及验证,授权与信息传输。 验证是对用户的身份进行检查,如要求用户输入密码。验证通常需要结合SSL(securesocketlayer)进行;授权在公司业务系统中非常重要,尤其是一些工作流系统。最近开发的OAuth协议可以帮助Web服务将相应信息向相应用户开放。Flickr便使用这种方式管理私人照片和数据的访问权限。 另外一个安全领域是网络设防,这关系到操作系统,配置与监控。不仅网络危险重重,任何软件都是。Firefox被称为最安全的浏览器,仍然需要
4、频频发布安全补丁。要为你的系统编写安全代码就需要明白各种潜在的问题。 8.云计算(CloudComputing) RWW最近的关于云计算的文章ReachingForTheSkyThroughComputeClouds讲到了云计算如何改变大规模Web应用的发布。大规模的并行,低成本,与快速投入市场。 并行算法发明以来,首先迎来的是网格计算,网格计算是借助空闲的桌面计算机资源进行并行计算。最著名的例子是Berkley大学的SETI@home计划,该计划使用空闲的CPU资源分析太空数据。金融机构也大规模实施网格计算进行风险分析。空闲的资源,加上J2EE平台的
5、崛起,迎来了云计算的概念:应用服务虚拟化。就是应用按需运行,并可以随着时间和用户规模而实时改变。 云计算最生动的例子是Amazon的Web服务,一组可以通过API进行调用的应用,如云服务(EC2),一个用来存储大型媒体文件的数据库(S3),索引服务(SimpleDB),序列服务(SQS)。 7.并发(Concurrency) 并发是软件工程师最容易犯错的地方,这可以理解,因为我们一直遵从线形思维,然而并发在现代系统中非常重要。 并发是程序中的并行处理,多数现代编程语言包含内置的并发能力,在Java,指的是线程。关于并发,最经典的例子是“生产/消费”模
6、式,生产方生产数据和任务,并放入工作线程消费或执行。并发的复杂性在于,线程需要经常访问共同数据,每个线程都有自己的执行顺序,但需要访问共同数据。DougLea曾写过一个最复杂的并发类,现在是coreJava的一部分。 6.缓存(Caching) 缓存对现代Web程序不可或缺,缓存是从数据库取回,并存放在内存中的数据。因为数据库直接存取的代价非常高,将数据从数据库取回并放在缓存中访问就变得十分必要。比如,你有一个网站,要显示上周的畅销书,你可以从数据将畅销书榜一次性取回放在缓存中,而不必在每次访问时都去数据库读数据。 缓存需要代价,只有最常用的内容才可以
7、放入缓存。很多现代程序,包括Facebook,依靠一种叫做Memcached的分布式缓存系统,该系统是BradFirzpatrick在工作于LiveJournal项目时开发的,Memcached使用网络中空闲的内存资源建立缓存机制,Memcached类库在很多流行编程语言,包括Java和PHP中都有。 5.散列法(Hashing) Hashing的目的是加速访问速度。如果数据是序列存储的,从中查询一个项的时间取决于数据列的大小。而散列法对每一个项计算一个数字作为索引,在一个好的Hashing算法下,数据查找的速度是一样的。 除了存储数据,散列法对分布式
8、系统也很重要。统一散列法(uniformhash)用
此文档下载收益归作者所有