使用开源软件的缺点 开源软件的缺点 - 电脑 - 【南平电脑网】_南平电脑维修_南平笔记本电脑维修_监控安装_市区上门维修
公司动态

使用开源软件的缺点 开源软件的缺点

摘要:开源软件的弊端 !! Android 五大优势 1 平台开放性Android平台首先就是其开放性,开放的平台允许任何移动终端厂商加入到Android联盟中来。显著的开放性可以使其拥有更多的开发者,随...

发布日期:2020-10-22

使用开源软件的缺点

开源软件的弊端 !!

Android 五大优势 1. 平台开放性Android平台首先就是其开放性,开放的平台允许任何移动终端厂商加入到Android联盟中来。

显著的开放性可以使其拥有更多的开发者,随着用户和应用的日益丰富,一个崭新的平台也将很快走向成熟。

2. 挣脱运营商的束缚 在过去很长的一段时间,特别是在欧美地区,手机应用往往受到运营商制约,使用什么功能接入什么网络,几乎都受到运营商的控制。

从去年iPhone上市,用户可以更加方便地连接网络,运营商的制约减少。

3. 丰富的硬件选择这一点还是与Android平台的开放性相关,由于Android的开放性,众多的厂商会推出千奇百怪,功能特色各具的多种产品。

功能上的差异和特色, 却不会影响到数据同步、甚至软件的兼容,好比你从诺基亚Symbian风格手机一下改用苹果iPhone,同时还可将Symbian中优秀的软件带到 iPhone上使用、联系人等资料更是可以方便地转移4. 开源系统应用广泛 5. 无缝结合的Google应用Google服务如地图、邮件、搜索等已经成为连接用户和互联网的重要纽带,而Android平台手机将无缝结合这些优秀的Google服务。

Android 五大劣势一、安全和隐私安全由于手机与互联网的紧密联系,个人隐私很难得到保守。

除了上网过程中经意或不经意留下的个人足迹,Google这个巨人也时时站在你的身后,洞穿一切,因此,互联网的深入将会带来新一轮的隐私危机。

二、系统优化不成熟 手机耗电快 三、运营商仍然能够影响到手机 在国内市场,不少用户对购得移动定制机不满,感觉所购的手机被人涂画了广告一般。

这样的情况在国外市场同样出现。

Android手机的另一发售运营商Sprint就将在其机型中内置其手机商店程序。

当然也可选择无定制的安卓手机,不过面对国内高昂的3G套餐收费,着实要考虑是否用3G套餐,建议上网还是用wifi。

四 同类类机型用户减少同类机型用户减少同类机型用户减少同类机型用户减少...

开源软件在淘宝网的应用是怎么样呢?

淘宝网,是一个在线商品数量突破一亿,日均成交额超过两亿元人民币,注册用户接近八千万的大型电子商务网站,是亚洲最大的购物网站。

那么对于淘宝网这样大规模的一个网站,我猜想大家一定会非常关心整个网站都采用了什么样的技术、产品和架构,也会很想了解在淘宝网中是否采用了开源的软件或者是完全采用的商业软件。

那么下面我就简单的介绍一下淘宝网中应用的开源软件。

对于规模稍大的网站来说,其IT必然是一个服务器集群来提供网站服务,数据库也必然要和应用服务分开,有单独的数据库服务器。

对于像淘宝网这样规模的网站而言,就是应用也分成很多组。

那么下面,我就从应用服务器操作系统、应用服务器软件、We Seve、数据库、开发框架等几个方面来介绍一下淘宝网中开源软件的应用。

操作系统 我们首先就从应用服务器的操作系统说起。

一个应用服务器,从软件的角度来说他的最底层首先是操作系统。

要先选择操作系统,然后才是操作系统基础上的应用软件。

在淘宝网,我们的应用服务器上采用的是Linux操作系统。

Linux操作系统从1991年第一次正式被公布到现在已经走过了十七个年头,在PC Seve上有广泛的应用。

硬件上我们选择PC Seve而不是小型机,那么Seve的操作系统供我们选择的一般也就是Linux,FeeBSD, windows 2000 Seve或者Windows Seve 2003。

如果不准备采用微软的一系列产品构建应用,并且有能力维护Linux或者FeeBSD,再加上成本的考虑,那么还是应该在Linux和 FeeBSD之间进行选择。

可以说,现在Linux和FeeBSD这两个系统难分伯仲,很难说哪个一定比另外一个要优秀很多、能够全面的超越对手,应该是各有所长。

那么在选择的时候有一个因素就是企业的技术人员对于哪种系统更加的熟悉,这个熟悉一方面是系统管理方面,另外一方面是对于内核的熟悉,对内核的熟悉对于性能调优和对操作系统进行定制剪裁会有很大的帮助。

而应用全面的优化、提升性能也是从操作系统的优化开始的。

应用服务器 在确定了服务器的硬件、服务器的操作系统之后,下面我们来说说业务系统的构建。

淘宝网有很多业务系统应用是基于JEE规范的系统。

还有一些是C C++构建的应用或者是Java构建的Standalone的应用。

那么我们要选择一款实现了JEE规范的应用服务器。

我们的选择是JBoss Applcation Seve。

JBoss AS是RedHat的一个开源的支持JEE规范的应用服务器。

在几年前,如果采用Java技术构建互联网应用或者企业级应用,在开源软件中的选择一般也就是Apache组织的Tomcat、JBoss的 JBoss AS和Resin。

严格意义上讲,Tomcat和Resin并不能算是一个应用服务器,他们是实现了部分J2EE规范的一个容器。

而商业软件的选择就是 IBM的WeSphee和BEA的WeLogic。

到了现在,除了JBoss AS外,Apache的Geonimo,Sun的Glassfish也都是很优秀的JEE应用服务器。

也给现在的开发人员提供了更多的选择。

具体对于目前JEE应用服务器的比较。

这边就不在赘述。

在应用服务器前端,我们采用了We Seve做了一次转发,我们选择的We服务器是大名鼎鼎的Apache。

几年前,Apache几乎是Linux系统上开源We Seve的唯一选择。

那个时候虽然也有一些其他的开源的We Seve,但是从功能和稳定性上来说都无法和Apache相对。

在今天来说,Lighty也会是一个非常好的选择。

Lighty是一个非常轻量级、占用内存资源也比较少的We Seve。

虽然功能上没有Apache强大,但是在不少场景下,性能是非常出色、强于Apache的。

而微软的IIS,就只能工作在Windows的系统上了。

并且使用IIS的话,基本上也就是选择了ISAPI、ASP或者ASP.NET进行We应用的开发了。

数据库 说完了我们采用的操作系统、应用服务器、WeSeve后,下面就来谈谈我们的数据库。

在淘宝网的应用中,采用了两种关系型数据库管理系统。

一个是 Oacle公司的Oacle 10g,另外一个是Sun MySQL的MySQL。

Oacle是一款优秀的、广泛采用的商业数据库管理软件。

有很强大的功能和安全性,可以处理相对海量的数据。

而MySQL是一款非常优秀的开源数据库管理软件,非常适合用多台PC Seve组成多点的存储节点阵列(这里我所指的不是MySQL自身提供的集群功能),每单位的数据存储成本也非常的低廉。

用多台PC Seve安装MySQL组成一个存储节点阵列,通过MySQL自身的Replication或者应用自身的处理,可以很好的保证容错(允许部分节点失效),保证应用的健壮性和可靠性。

可以这么说,在关系数据库管理系统的选择上,可以考虑应用本身的情况来决定。

一个互联网应用,除了服务器的操作系统,We Seve软件,应用服务器软件,数据库软件外,我们还会涉及到一些其他的系统,比如一些中间件系统、文件存储系统、搜索、分布式框架、缓存系统等等。

在淘宝网,这些系统都是自主开发的,没有采用目前商业的或者开源的产品。

有些系统,会存在着一些开源的产品或者商业产品。

但是,考虑到淘宝网自己的需求和大并发量的压力,这些系统都选择了自主开发框架。

前面谈的都是系统级的产品,下面我们说说开发框架的使用。

可能有朋友想问,作为一...

开源爬虫框架各有什么优缺点

3)Nutch虽然有一套插件机制,而且作为亮点宣传,查找文件中的信息。

没有任何难度可言.94。

但是实际上,这个Nutch2 开发网络爬虫应该选择Nutch、Crawler4j、WebMagic。

官方现在稳定的Nutch版本是nutch2。

之所以选择开源爬虫框架。

对于爬虫的功能来说,进行深度为1的广度遍历(默认就是广度遍历)。

但是也可以通过一些方法来完成。

比如WebCollector使用广度遍历来遍历网站。

爬虫的第一轮爬取就是爬取种子集合(seeds)中的所有url,都是挂载在“页面解析”(parser)这个挂载点的,我只是随便扯淡,selenium)来完成。

这些模拟浏览器,往往需要耗费很多的时间来处理一个页面,Nutch1.x是一个非常好的选择。

2)爬虫可以爬取ajax信息么。

所以,如果你不是要做搜索引擎,尽量不要选择Nutch作为爬虫。

有些团队就喜欢跟风,非要选择Nutch来开发精抽取的爬虫,那叫循环执行http请求。

能不能爬js生成的信息和爬虫本身没有太大关系,就是为了省事。

比如爬虫的URL管理,这个版本在官方的SVN中不断更新。

而且非常不稳定(一直在修改):JAVA单机爬虫 这里把JAVA爬虫单独分为一类.1.3,可以持久化数据到avro文件、hbase、mysql等。

至于cookies怎么获取,hadoop本身会消耗很多的时间。

如果集群机器数量较少。

Nutch运行的一套流程里。

简单来说,就是将生成的ajax请求作为种子,模拟登陆主要是靠cookies、爬虫能用代理么:上面说的爬虫,基本可以分3类:1.分布式爬虫:Nutch 2。

Nutch1.x和solr或者es配合,其实是冲着Nutch的名气(Nutch作者是Doug Cutting)。

但是开发过Nutch插件的人都知道,理由如下: 1)Nutch是为搜索引擎设计的爬虫。

爬取ajax信息属于deep web(深网)的范畴,可以说是毫无技术含量。

包括Nutch,其实Nutch的技术难点是开发hadoop,本身代码非常简单。

这里可能有争议。

6)Nutch2的版本目前并不适合开发、爬虫会爬取重复数据么、爬虫能爬取JS生成的信息么? 不支持多线程,放入爬虫。

用爬虫对这些种子.x和Nutch2.x,这个Nutch2,是指将URL信息(URL管理所需要的数据)存放到avro、hbase、mysql。

并不是你要抽取的结构化数据。

其实对大多数人来说,URL信息存在哪里无所谓。

如果我已经可以生成我所需要的ajax请求(列表),如何用这些爬虫来对这些请求进行爬取? 爬虫往往都是设计成广度遍历或者深度遍历的模式,爬取这些数据有两种方法,只能使用0.2左右。

2)Nutch依赖hadoop运行,当然最后的结果往往是项目延期完成。

如果你是要做搜索引擎: 1)海量URL管理 2)网速 现在比较流行的分布式爬虫,去遍历静态或者动态页面,Nutch是这几类爬虫里,最不好的选择,这里说的持久化数据.90版本左右的hbase,相应的就要将hadoop版本降到hadoop 0,自己生成ajax请求的url,获取返回的数据。

如果是自己生成ajax请求,使用开源爬虫的意义在哪里。

很多人其实理解错了,但是要做稳定也是需要一段时间的调试和修改的.JAVA单机爬虫:Crawler4j、WebMagic,就可以构成一套非常强大的搜索引擎了。

了解Nutch源码的学习成本很高,何况是要让一个团队的人都读懂Nutch源码。

调试过程中会出现除程序本身之外的各种问题(hadoop的问题,或者分析ajax的http请求.x的意思是Nutch2,建议等到Nutch2.3发布再看。

目前的Nutch2是一个非常不稳定的版本,是因为JAVA在网络爬虫这块的生态圈是非常完善的。

相关的资料也是最全的、Nutch2.2.1之后的一个版本。

但是对于大多数用户来说。

爬虫主要是负责遍历网站和下载页面。

爬js生成的信息和网页信息抽取模块有关,往往需要通过模拟浏览器(htmlunit。

网络爬虫从某种意义来说。

5)很多人说Nutch2有gora:使用模拟浏览器(问题1中描述过了)。

而且nutch2的官方教程比较有误导作用,Nutch2的教程有两个,用Nutch做数据抽取,但是这个版本绑定了gora-0? 网页上有一些异步加载的数据,Nutch的插件系统有多蹩脚。

利用反射的机制来加载和调用插件,使得程序的编写和调试都变得异常困难,更别说在上面开发一套复杂的精抽取系统了。

而且Nutch并没有为精抽取提供相应的插件挂载点,分别是Nutch1. 非JAVA单机爬虫:scrapy 第一类:分布式爬虫 爬虫使用分布式。

所以一种策略就是,使用这些爬虫来遍历网站,遇到需要解析的页面,就将网页的相关信息提交给模拟浏览器,来完成JS生成信息的抽取。

3)爬虫怎么爬取要登陆的网站? 这些开源爬虫都支持在爬取时指定cookies、hbase的问题),有三分之二是为了搜索引擎而设计的。

对精抽取没有太大的意义。

也就是说,真的不如自己重新写一个分布式爬虫框架了,虽然大多数爬虫都不直接支持。

用户比较关心的问题往往是: 1)爬虫支持多线程么、WebCollector 3,难问题和复杂的问题都被以前的人解决了(比如DOM树解析和定位、字符集检测、海量URL去重),是Apache的Nutch。

Nutch的插件有只有五六个挂载点,爬取速度反而不如单机爬虫快.2、线程池之类的模块,谁都能做,并没有为精抽取提供挂载点。

大多数Nutch的精抽取插件,类似遍历本机的文件,主要是解决两个问题。

其实开源网络爬虫(框架)的开发非...

WINDOWS 的缺点

1,从系统构成上来说windows不是开源系统。

那就意味着,如果你喜欢你可以对开源的linux系统做你想做的任何改动。

而这点对于windows来说,是想也不要想的2,从运行的稳定性来说。

Windows的程序不是相对独立的,软件的崩溃容易造成系统的瘫痪(死机),没见过windows死机的人,我没见过3,漏洞较多,每天都要打补丁4,从安全性来说,我们用windows时,杀毒软件、防火墙、防垃圾软件、防间谍软件占去了大部分的系统资源。

可这样还是防不胜防的。

有谁没中过毒或木马、流氓软件呢? 5,垃圾难以清理,软件卸载不净,c盘越用越大,无限膨胀,导致越用越卡要经常重装系统

使用SSH框架的好处

ssh framework作者:自言自语 2007-07-31 10:55:35标签: 典型的J2EE三层结构,分为表现层、中间层(业务逻辑层)和数据服务层。

三层体系将业务规则、数据访问及合法性校验等工作放在中间层处理。

客户端不直接与数据库交互,而是通过组件与中间层建立连接,再由中间层与数据库交互。

表现层是传统的JSP技术,自1999年问世以来,经过多年的发展,其广泛的应用和稳定的表现,为其作为表现层技术打下了坚实的基础。

中间层采用的是流行的Spring+Hibernate,为了将控制层与业务逻辑层分离,又细分为以下几种。

Web层,就是MVC模式里面的“C”(controller),负责控制业务逻辑层与表现层的交互,调用业务逻辑层,并将业务数据返回给表现层作组织表现,该系统的MVC框架采用Struts。

Service层(就是业务逻辑层),负责实现业务逻辑。

业务逻辑层以DAO层为基础,通过对DAO组件的正面模式包装,完成系统所要求的业务逻辑。

DAO层,负责与持久化对象交互。

该层封装了数据的增、删、查、改的操作。

PO,持久化对象。

通过实体关系映射工具将关系型数据库的数据映射成对象,很方便地实现以面向对象方式操作数据库,该系统采用Hibernate作为ORM框架。

Spring的作用贯穿了整个中间层,将Web层、Service层、DAO层及PO无缝整合,其数据服务层用来存放数据。

一个良好的框架可以让开发人员减轻重新建立解决复杂问题方案的负担和精力;它可以被扩展以进行内部的定制化;并且有强大的用户社区来支持它。

框架通常能很好的解决一个问题。

然而,你的应用是分层的,可能每一个层都需要各自的框架。

仅仅解决UI问题并不意味着你能够很好的将业务逻辑和持久性逻辑和UI 组件很好的耦合。

不可否认,对于简单的应用,采用ASP或者PHP的开发效率比采用J2EE框架的开发效率要高。

甚至有人会觉得:这种分层的结构,比一般采用JSP + Servlet的系统开发效率还要低。

笔者从一下几个角度来阐述这个问题。

— 开发效率:软件工程是个特殊的行业,不同于传统的工业,例如电器、建筑及汽车等行业。

这些行业的产品一旦开发出来,交付用户使用后将很少需要后续的维护。

但软件行业不同,软件产品的后期运行维护是个巨大的工程,单纯从前期开发时间上考虑其开发效率是不理智的,也是不公平的。

众所周知,对于传统的ASP和 PHP等脚本站点技术,将整个站点的业务逻辑和表现逻辑都混杂在ASP或PHP页面里,从而导致页面的可读性相当差,可维护性非常低。

即使需要简单改变页面的按钮,也不得不打开页面文件,冒着破坏系统的风险。

但采用严格分层J2EE架构,则可完全避免这个问题。

对表现层的修改即使发生错误,也绝对不会将错误扩展到业务逻辑层,更不会影响持久层。

因此,采用J2EE分层架构,即使前期的开发效率稍微低一点,但也是值得的。

— 需求的变更:以笔者多年的开发经验来看,很少有软件产品的需求从一开始就完全是固定的。

客户对软件需求,是随着软件开发过程的深入,不断明晰起来的。

因此,常常遇到软件开发到一定程度时,由于客户对软件需求发生了变化,使得软件的实现不得不随之改变。

当软件实现需要改变时,是否可以尽可能多地保留软件的部分,尽可能少地改变软件的实现,从而满足客户需求的变更?答案是——采用优秀的解耦架构。

这种架构就是J2EE的分层架构,在优秀的分层架构里,控制层依赖于业务逻辑层,但绝不与任何具体的业务逻辑组件耦合,只与接口耦合;同样,业务逻辑层依赖于DAO层,也不会与任何具体的DAO组件耦合,而是面向接口编程。

采用这种方式的软件实现,即使软件的部分发生改变,其他部分也尽可能不要改变。

注意:即使在传统的硬件行业,也有大量的接口规范。

例如PCI接口、显卡或者网卡,只要其遵守PCI的规范,就可以插入主板,与主板通信。

至于这块卡内部的实现,不是主板所关心的,这也正是面向接口编程的好处。

假如需要提高电脑的性能,需要更新显卡,只要更换另一块PCI接口的显卡,而不是将整台电脑抛弃。

如果一台电脑不是采用各种接口组合在一起,而是做成整块,那将意味着即使只需要更新网卡,也要放弃整台电脑。

同样,对于软件中的一个个组件,当一个组件需要重构时,尽量不会影响到其他组件。

实际上,这是最理想的情况,即使采用目前最优秀的架构,也会有或多或少的影响,这也是软件工程需要努力提高的地方。

技术的更新,系统重构:软件行业的技术更新很快,虽然软件行业的发展不快,但小范围的技术更新特别快。

一旦由于客观环境的变化,不得不更换技术时,如何保证系统的改变最小呢?答案还是选择优秀的架构。

在传统的Model 1的程序结构中,只要有一点小的需求发生改变,将意味着放弃整个页面。

或者改写。

虽然前期的开发速度快,除非可以保证以后永远不会改变应用的结构,否则不要采用Model 1的结构。

采用Hibernate作为持久层技术的最大的好处在于:可以完全以面向对象的方式进行系统分析、系统设计。

DAO模式需要为每个DAO组件编写DAO接口,同时至少提供一个实现类,根据不同需要,可能有多个实现类...