软件架构技术的发展历程总结及思考1of2(待续)

骆金松

1   软件架构技术产生的背景

1.1     软件危机的出现

20 世纪60年代以前,计算机刚刚投入实际使用,软件设计往往只是为了一个特定的应用而在指定的计算机上设计和编制,采用密切依赖于计算机的机器代码或汇编语言,软件的规模比较小,文档资料通常也不存在,很少使用系统化的开发方法,设计软件往往等同于编制程序,基本上是个人设计、个人使用、个人操作、自给自足的私人化的软件生产方式。

20 世纪60年代中期,大容量、高速度计算机的出现,使计算机的应用范围迅速扩大,软件开发急剧增长。高级语言开始出现;操作系统的发展引起了计算机应用方式的变化;大量数据处理导致第一代数据库管理系统的诞生。软件系统的规模越来越大,复杂程度越来越高,软件可靠性问题也越来越突出。原来的个人设计、个人使用的方式不再能满足要求,迫切需要改变软件生产方式,提高软件生产率,软件危机(Software Crisis)开始爆发。

早期出现的软件危机主要表现在:

① 软件开发费用和进度失控。费用超支、进度拖延的情况屡屡发生。有时为了赶进度或压成本不得不采取一些权宜之计,这样又往往严重损害了软件产品的质量。

②软件的可靠性差。尽管耗费了大量的人力物力,而系统的正确性却越来越难以保证,出错率大大增加,由于软件错误而造成的损失十分惊人。

③生产出来的软件难以维护。很多程序缺乏相应的文档资料,程序中的错误难以定位,难以改正,有时改正了已有的错误又引入新的错误。随着软件的社会拥有量越来越大,维护占用了大量人力、物力和财力。

1.2     软件工程的兴起

1968 年北大西洋公约组织的计算机科学家在联邦德国召开国际会议,第一次讨论软件危机问题,并正式提出“软件工程(Software Engineering)”一词,从此一门新兴的工程学科——软件工程学——为研究和克服软件危机应运而生。软件工程诞生于60年代末期,作为一个新兴的工程学科,主要研究软件生产的客观规律性,建立与系统化软件生产有关的概念、原则、方法、技术和工具,指导和支持软件系统的生产活动,以期达到降低软件生产成本、改进软件产品质量、提高软件生产率水平的目标。软件工程学从硬件工程和其他人类工程中吸收了许多成功的经验,明确提出了软件生命周期的模型,发展了许多软件开发与维护阶段适用的技术和方法,并应用于软件工程实践,取得良好的效果。

1.3     结构化设计技术

作为软件工程重要的组成部分,结构化设计方法得到了极大的发展。软件模块化技术是软件架构技术中最早讨论的技术之一,模块化是指解决一个复杂问题时自顶向下逐层把软件系统划分成若干模块的过程。每个模块完成一个特定的子功能,所有的模块按某种方法组装起来,成为一个整体,完成整个系统所要求的功能。当时提出了“信息隐藏”、“提高内聚”、“减少耦合”、“提高开放性”等架构设计原则成为至今开发复杂系统所采用的基本架构技术,可以说结构化设计技术是软件架构技术的起源。

2   软件架构技术的发展

2.1  面向对象的编程

“面向对象的编程(Object-Oriented Programming)”起源于挪威人Kristen Nygard于1962年发明的Simula语言,美国人Alan Kay于1970年发明了SmaUTalk语言,并首次使用OOP术语。为了使得开发更加真实的反映现实世界,人们开发了更多面向对象的语言,包括C++、Smalltalk、Ada 95等。面向对象编程语言使得在模块化设计的基础之上,实现了面向过程的编程过渡到面向对象的编程,同时架构技术也得到了巨大的发展。基于面向对象的设计语言,人们提出了面向对象的需求分析、面向对象的设计、面向对象的编程、面向对象的测试等技术,采用面向对象的技术,为了编写出高质量的代码,人们提出了面向对象的设计模式(Design pattern)的概念,使得人们可以采用面向对象的编程技术编写出更加优雅,支持规模更大、结构更复杂、更加容易维护和扩展的代码。

在中小规模的软件中,对象和对象之间的协作关系就能够满足需要。但是当软件规模扩大,复杂度上升的时候,面向对象技术强调的协作却表现出另一个极端的特点-耦合度太高导致的复杂度。这时候就需要有一种新的方法来弥补面向对象技术的弱点。大规模软件主要特点是复杂度,比较典型的例子是集成性的项目,软件系统需要将各种各样的硬件、遗留系统、外部接口整合起来,其间可能遇到不同的硬件接口,不同的操作系统,不同的语言,不同的平台,不同的数据库,不同的消息中间件,不同的网络介质,这些都使得系统变得非常的复杂。面向对象的编程在复杂度上升时,由于对象的粒度太小,难以驾驭系统的复杂性,所以急需一种更粗粒度的面向模块的组件技术。

2.2     面向组件的编程

面向组件编程(Component Oriented Programming,COP),是对面向对象的编程的补充,帮助实现更加优秀的软件结构。与面向对象的编程不同,组件的粒度可大可小,需要取决于具体的应用。在COP中有几个重要的概念:服务,服务(Service)是一组接口,供客户端程序使用。例如,验证和授权服务,任务调度服务。服务是系统中各个部件相互调用的接口;组件,组件(Component)实现了一组服务,此外,组件必须符合容器订立的规范,例如,初始化,配置、销毁。COP是对一种组织代码的思路,尤其是服务和组件这两个概念。Spring框架中,就采用了COP的思路,将系统看作一个个的组件,通过定义组件之间的协作关系(通过服务)来完成系统的构建。这样做的好处是能够隔离变化,合理的划分系统。而框架的意义就在于定义一个组织组件的方式。

Microsoft公司的Windows操作系统早期提出的动态链接库(Dynamic Link Library,DLL)技术是面向组件编程的一种思想。DLL 是一个包含可由多个程序同时使用的代码和数据的库。这有助于促进代码重用和内存的有效使用。由于Microsoft最初在设计Windows时没有估计到DLL的如此被广泛采用,由于大量使用DLL导致的收索路径问题以及版本冲突问题,出现了臭名昭著的DLL地狱(DLL Hell)问题。1993年Microsoft提出的COM(Component Object Model)架构,是一个组件化的技术开发架构,它源自于Microsoft早期的对象链接与嵌入技术(OLE)。COM解决了DLL地狱问题,是面向组件开发思想的进一步发展。COM提供跟编程语言无关的方法制作软件模块,因此可以在其他环境中执行。COM并要求某个组件必须遵照一个共同的接口,该接口与组件的实现无关,因此可以隐藏实现的细节,并且被其他组件在不知道其内部细节的情形下正确的使用。

2.3     企业级系统框架

在1993年Microsoft引入COM之后,Sun公司于1995年推出了Java平台。Java平台由一套应用开发语言(Java)、API和Java虚拟机(JVM)构成,JVM允许用Java编写的程序运行在不同的操作系统上。事实上,Sun引入Java的初衷是使得程序员能够开发可移植的应用程序,而不关心硬件和操作系统。在1999年末,Sun提出了Java平台企业版(J2EE---Java to Enterprise Edition),该规范被应用在主要的IT提供商以构建稳健的应用系统框架,如IBM、Oracle和BEA等。J2EE是一套全然不同于传统应用开发的技术架构,包含许多组件,主要可简化且规范应用系统的开发与部署,进而提高可移植性、安全与再用价值。

J2EE核心是一组技术规范与指南,其中所包含的各类组件、服务架构及技术层次,均有共通的标准及规格,让各种依循J2EE架构的不同平台之间,存在良好的兼容性,解决过去企业后端使用的信息产品彼此之间无法兼容,导致企业内部或外部难以互通的窘境。其最终目的就是成为一个能够使企业开发者大幅缩短投放市场时间的体系结构。2003年Sun公司发布了J2EE 1.4版,除了增强更加稳固的企业级应用之外,还增加了Web Services支持。Sun把这个最为流行的版本称为Java EE。J2EE 带动了Java在企业级的发展,但随着一些轻量级组件的出现,J2EE的臃肿和开发难度高的缺点越来越引起了许多人的注意,EJB2.0也被许多人称为累赘。随着Spring,Hibernate的不断完善和发展,EJB3.0出现了,成为了未来Java 企业级开发的新的方向。

2000年,为了应对来自Internet和J2EE的威胁,Microsoft提出了.NET战略,2001年发布了Visual Studio.NET开发平台,到现在已陆续发布了2003、2005、2008四个版本。2002年Microsoft全面的用.Net从逻辑层上置换了COM,作为新的软件开发框架(COM仍然被支持)。.Net技术的全面推进,统一了Microsoft的不同技术理念和平台。作为一个战略品牌,.Net为Web Service提供了原生的解决方案,并且成为提升不同应用和系统之间互操作性的标准。目前已经有许多企业级的应用系统采用VS.net开发,比如用友公司代号为U9的ERP系统。J2EE得到了大部分供应商的支持,包括Sun,IBM等,所以J2EE的最大灵活性和可移植性不用置疑。另一方面,.Net平台被Microsoft独家全面支持,因此有着更为一致性的行为方式和可预见性。

2.4  面向服务的架构

对象管理组织(Object Management Group,OMG)于1991提出了公共对象请求代理体系结构(Common Object Request Broker Architecture, CORBA),其核心是一套标准的语言、接口和协议,以支持异构分布应用程序间的互操作性及独立于平台和编程语言的对象重用。

SOA是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。不同种类的操作系统,应用软件,系统软件和应用基础结构相互交织,这便是IT企业的现状。一些现存的应用程序被用来处理当前的业务流程,因此从头建立一个新的基础环境是不可能的。企业应该能对业务的变化做出快速的反应,利用对现有的应用程序和应用基础结构的投资来解决新的业务需求,为客户,商业伙伴以及供应商提供新的互动渠道,并呈现一个可以支持有机业务的构架。SOA凭借其松耦合的特性,使得企业可以按照模块化的方式来添加新服务或更新现有服务,以解决新的业务需要,提供选择从而可以通过不同的渠道提供服务,并可以把企业现有的或已有的应用作为服务,从而保护了现有的IT基础建设投资。

可是由于CORBA体系的复杂度过高,一直没有得到普遍的应用。1996年,Gartner Group就提出了面向服务的架构(Service-Oriented Architecture,SOA)的预言。近年来,在ORACLE、BEA、IBM、Microsoft等软件巨头的极力推动下,Web service产品日益流行, SOA才得以慢慢风行起来。

2.5  云计算

云计算(cloud computing)是指IT基础设施的交付和使用模式,指通过网络以按需、易扩展的方式获得所需的资源(硬件、平台、软件)。提供资源的网络被称为“云”。“云”中的资源在使用者看来是可以无限扩展的,并且可以随时获取,按需使用,随时扩展,按使用付费。Amazon、Google、IBM、微软和Yahoo等大公司是云计算的先行者。云计算领域的众多成功公司还包括Salesforce、Facebook、Youtube、Myspace等。

Amazon把云计算做成一个大生意不到两年时间,Amazon上的注册开发人员就达44万人,还有为数众多的企业级用户。有第三方统计机构提供的数据显示,Amazon与云计算相关的业务收入已达1亿美元。云计算是Amazon增长最快的业务之一。Google当数最大的云计算的使用者。Google搜索引擎就建立在分布在200多个地点、超过100万台服务器的支撑之上,这些设施的数量正在迅猛增长。Google地球、地图、Gmail、Docs等也同样使用了这些基础设施。目前,Google已经允许第三方在Google的云计算中通过Google App Engine运行大型并行应用程序。IBM在2007年11月推出了“改变游戏规则”的“蓝云”计算平台,为客户带来即买即用的云计算平台。它包括一系列的自动化、自我管理和自我修复的虚拟化云计算软件,使来自全球的应用可以访问分布式的大型服务器池。使得数据中心在类似于互联网的环境下运行计算。2008年8月, IBM宣布将投资约4亿美元用于其设在北卡罗来纳州和日本东京的云计算数据中心改造。IBM计划在2009年在10个国家投资3亿美元建13个云计算中心。Microsoft紧跟云计算步伐,于2008年10月推出了Windows Azure操作系统。Azure是继Windows取代DOS之后,Microsoft的又一次颠覆性转型——通过在互联网架构上打造新云计算平台,让Windows真正由PC延伸到Azure上。Microsoft拥有全世界数以亿计的Windows用户桌面和浏览器,现在它将它们连接到Azure上。Azure的底层是Microsoft全球基础服务系统,由遍布全球的第四代数据中心构成。

在我国,云计算发展也非常迅猛。2008年5月10日,IBM在中国无锡太湖新城科教产业园建立的中国第一个云计算中心投入运营。2008年6月24日,IBM在北京IBM中国创新中心成立了第二家中国的云计算中心——IBM大中华区云计算中心;2008年11月28日,广东电子工业研究院与东莞松山湖科技产业园管委会签约,广东电子工业研究院将在东莞松山湖投资2亿元建立云计算平台;2008年12月30日,阿里巴巴集团旗下子公司阿里软件与江苏省南京市政府正式签订了2009年战略合作框架协议,计划于2009年初在南京建立国内首个“电子商务云计算中心”,首期投资额将达上亿元人民币;世纪互联推出了CloudEx产品线,包括完整的互联网主机服务"CloudEx Computing Service", 基于在线存储虚拟化的"CloudEx Storage Service",供个人及企业进行互联网云端备份的数据保全服务等等系列互联网云计算服务;中国移动研究院做云计算的探索起步较早,已经完成了云计算中心试验。中移动董事长兼CEO王建宙认为云计算和互联网的移动化是未来发展方向。

我国企业创造的“云安全”概念,在国际云计算领域独树一帜。云安全通过网状的大量客户端对网络中软件行为的异常监测,获取互联网中木马、恶意程序的最新信息,推送到服务端进行自动分析和处理,再把病毒和木马的解决方案分发到每一个客户端。云安全的发展像一阵风,瑞星、趋势、卡巴斯基、MCAFEE、SYMANTEC、江民科技、PANDA、金山、360安全卫士、卡卡上网安全助手等都推出了云安全解决方案。瑞星基于云安全策略开发的2009新品,每天拦截数百万次木马攻击,其中1月8日更是达到了765万余次。势科技云安全已经在全球建立了5大数据中心,几万部在线服务器。据悉,云安全可以支持平均每天55亿条点击查询,每天收集分析2.5亿个样本,资料库第一次命中率就可以达到99%。借助云安全,趋势科技现在每天阻断的病毒感染最高达1000万次。

3  软件架构技术的发展前景

3.1   第三代移动通信技术进入移动商务应用

2000年5月,国际电信联盟正式公布第三代移动通信标准,我国提交的TD-SCDMA正式成为国际标准,与欧洲WCDMA、美国CDMA2000成为3G时代最主流的三大技术之一。2009年初中国3G牌照正式发放,中国移动通信迈入全新的3G(3rd-generation)时代。3G的亮点在于移动数据和增值业务,将使通信产业链发生深刻的变化。随着3G网络的运营,运营商将系统化地推广3G差异型及特色业务的发展,符合市场发展及消费需求的业务会进入快速发展期。根据中国互联网络信息中心(CNNIC)统计,截至2009年3月底,全国目前有6.7亿移动用户,而网民数量为3.16亿。手机新闻、手机博客、手机收发邮件等一系列移动互联网的新发展得到普及,既拥有手机又有上网习惯的用户,这两个人群的交集将成为移动互联市场的用户基础。如此大规模的潜在用户群无疑是未来移动互联市场发展的广阔空间。赛迪顾问预测,2011年3G手机销售量将达到1.16亿部,3G业务规模将超过1400亿元人民币。

3G行业应用的发展总趋势为信息技术与通信技术的融合。个人信息化已经有很大发展,随着电子政务、电子商务的持续发展,部门级、企业级信息化走上轨道,并最终实现个人与行业信息化的对接,从而打造一个全流程的信息化,最终构成行业的核心竞争力,为个人也提供更好的服务。3G突破移动带宽的限制后,用户的使用习惯将使得行业解决方案从固定网络向移动网络逐步迁移,同时固网与移动网络也将在行业领域中融合,创建更良好的技术创新环境。广泛的行业应用将使得政府、企业以及个人紧密地连接到一起,提升政府与企业的效益,方便个人的生活。

3G行业应用面临的全新、复杂的技术应用环境。第一,3G网络环境更为复杂,业务种类的繁多使得网元种类更为繁多,如IPTV、LBS等多种业务使得相应的网元结构出现;第二,增值业务平台应用更为综合、智能、开放,大大简化业务开发的难度,加快应用推向市场的速度,不必为应用实现中的每个细节分别寻找合作伙伴;第三,业务种类繁多推动终端的功能应用也将趋于多元化,定制化和智能化成为趋势;第四,终端与其他技术如GPS、信用卡、二维条码和RFID等之间的融合,也是3G时期业务种类繁多、业务趋于融合的硬件技术表现。

除了个人应用之外,移动商务的应用需求越来越迫切,让企业通过移动互联网实现企业与用户之间的信息互动,并由此开展深层次、全方位应用是今天企业的最大需求。许多过去的传统电子商务公司和互联网公司在移动领域都开始进行了精心的布局。百度最近收购电讯网,阿里巴巴入资UCWEB,这些动作实际上预示着传统电子商务公司在移动互联网上已经开始布局了。伴随工业和信息化部的成立,“3G中国”的启动成为下一步“以信息化带动工业化”的重要举措。

3.2     面向服务架构是发展的大趋势

IBM 将面向服务的体系结构视为它的按需(On demand)业务前景的互操作性和灵活性的关键。面向服务的体系结构(SOA)支持跨企业和业务合作伙伴之间的端到端集成。这就提供了一种灵活的业务流程模型,使得客户可以迅速地响应新的顾客需求、新的业务机会以及竞争的威胁。Gartner在2006年就预测,从2006年到2011年,全球的SOA、Web服务和Web 2.0软件市场将由410亿美元增长到1,420亿美元。到2011年,全球基础设施市场中将有63%的企业支持SOA、Web服务,且花费在软件上的资金将有60%是用于SOA、Web服务上。

SOA描绘了一个美妙的未来,也是拥有一定的现实基础,SOA与现今流行的Web服务紧密联系在一起。Web服务是一项已成熟的技术,其规范包括WSDL、SOAP、UDDI。Web服务由WSDL描述,通过UDDI发现,并通过SOAP去访问。Web服务提供了成熟的技术,而SOA则提供了应用这种技术的框架,是一个非常好的思路,因此得到了软件业界普遍的认可。近几年,SOA市场得到了迅猛的发展。对于大多数中国企业来说,SOA已经是耳熟能详,多数中国企业已经意识到部署SOA的作用和价值,并且对SOA的发展前景抱有信心。在发展SOA的过程中,中国和国外信息化发达国家(美国等)有着不同的发展机遇和条件。大多数美国企业已经具备完善的应用系统,SOA的实施需要对已有系统中的功能进行提取和包装,形成标准的服务,而非用高成本的标准方法全新构造服务。而在中国企业,IT建设正由生产系统转向营销服务系统,因此大量的服务需要全新构造才是中国SOA的主要任务。

中国的SOA软件是面向企业用户的消费,因此软件是否是适合企业的,十分重要。以企业为中心,进行长期有效的运营,是SOA提供商的经营特点,同时,中国的企业数量极多,但是软件建设水平还相当有限,因而市场具有非常大的潜力。预计未来几年中国将成为世界上最大的软件市场之一,SOA销售额迅速攀升,2020年将成为世界最大的软件消费市场。面对巨大的市场蛋糕,国际著名的软件公司已作好抢占中国SOA市场准备,纷纷加大研发力度,加速其在华布局。中国本土软件企业也十分希望能够在市场上占领一席之地。

3.3     云计算在个人及中小企业市场大力发展

2008年,虽然各大企业都面临金融危机的困扰,但这丝毫没有减弱云计算这一领域的发展速度。云计算肯定是软件发展的一个趋势,目前国家IT巨头,例如Google、微软、IBM、亚马逊都把云计算作为争夺未来制高点的重要战略。云计算的前景在中国市场具有巨大的发展潜力,越来越多的IT供应商将中国作为云计算业务发展的热点区域。根据新CIO时代的调查,高达58%的CIO表示云计算是未来的发展趋势,只是目前仍然不成熟,29%的CIO表示云计算将彻底改变IT技术的现状,8%表示云计算虽然好但不适合企业。CIO普遍对云计算发展前景的乐观态度,看好它的发展趋势。

云计算在个人应用领域已经得到了十分广泛的应用,今后会有越来越多的软件成为互联网上的服务,用户需要在个人计算机上安装的软件则越来越少。今后操作系统与浏览器的界线会越来越模糊,操作系统会变得越来越弱,而浏览器会变得越来越强,浏览器将成为很多程序的启动入口。当你启动电脑,它可能会更像是一部电视机。首先你不必像现在这样等待一分的时间,让它管理内存和启动一大批程序。相反,它的界面会立即显示出来,并且这个界面就是一个浏览器。当然也有可能是操作系统,但这将是一个非常简单的操作系统,负责解析你的浏览器,帮你解决一些硬件问题,比如连上网络、接上硬盘、打开无线功能、点亮键盘灯,做完这些事情后,其他的事情就交给浏览器了。

云计算在商用领域应该首先应用于中小型企业。那种动辄数百万美元的IT设备所带来的生产力对中小企业而言是沉重的负担,而如今,云计算为它们送来了大企业级的技术,并且先期成本极低,升级也很方便。随着云计算相关技术的成熟,越来越多的大型系统运行在云计算平台上,几十年后,也许大多数企业级的系统都是运行在云计算平台之上的。这一新兴趋势的重要性毋庸置疑,不过,它还仅仅是一系列变革的起步阶段而已。云计算不但抹平了企业规模所导致的优劣差距,而且极有可能让优劣之势易主。简单地说,当今世上最强大最具革新意义的技术已不再为大型企业所独有。云计算让每个普通人都能以极低的成本接触到顶尖的IT技术。

先写到这里,待续。

看完请留个言,欢迎讨论,对架构技术感兴趣的可以加入群:85228721



【原创】软件架构技术发展历程总结及思考 1of2(待续)相关推荐

  1. 阿里技术专家:日活5亿的淘宝技术发展历程和架构经验分享!18页ppt详解

    点击"技术领导力"关注∆  每天早上8:30推送 作者| Mr.K   编辑| Emma 来源| 技术领导力(ID:jishulingdaoli) 本文整理自,阿里高级技术专家 王 ...

  2. 一张表格看懂apk加固技术发展历程

    转自:https://bbs.pediy.com/thread-226864.htm 一张表格看懂:市面上最为常见的 Android 安装包(APK)五代加固技术发展历程及优缺点比较!除了表格中所列出 ...

  3. 什么是Web3D?Web3D技术发展历程以及Web3D应用场景

    当今的互联网已经迈入了第三代,这被称为Web3.0,而Web3D正是Web3.0的其中一个技术分支.Web3D是指将三维图形技术应用于Web上的技术,它是将3D图形和Web技术结合起来的一个分支,可以 ...

  4. 计算机网络发展快速的原因,计算机网络技术发展历程、功能及展望

    计算机网络技术就是将处于不同地理方位,具有独立运营能力的计算机通过通信线路有效的链接起来,并应用网络通信条件和网络管理软件,进行整理和协调. 因此对计算机信息化能源分享和传达技术进行更好的实现,在对计 ...

  5. Web开发技术发展历程

    Web开发技术发展历程 互联网就是指通过TCP/IP协议族互相连接在一起的计算机网络.而Web是运行在互联网上的一个超大规模的分布式系统. Web设计初衷是一个静态信息资源发布媒介,通过超文本标记语言 ...

  6. (转载)软件架构技术的发展历程总结及思考(骆金松)

    1   软件架构技术产生的背景 1.1     软件危机的出现 20 世纪60年代以前,计算机刚刚投入实际使用,软件设计往往只是为了一个特定的应用而在指定的计算机上设计和编制,采用密切依赖于计算机的机 ...

  7. ChatGPT引发的人机交互发展历程与升级思考

    ChatGPT自从去年12月火爆以来一直热度不减,最近正好研读了科技之巅,书中详细阐述了人机交互.人工智能.算力算法等技术的发展历史,本文主要围绕ChatGPT引发的人机交互方面的思考. 在讨论人机交 ...

  8. 一文深度解读音视频行业技术发展历程

    从1948年的香农定律,到音视频的今天. IMMENSE.36氪|作者 北京时间2月28日凌晨,FIFA年度颁奖典礼在巴黎举行.梅西荣膺年度最佳球员,斯卡洛尼当选年度最佳男足主帅,马丁内斯荣获年度最佳 ...

  9. 【技术白皮书】第二章:文本检测与识别技术发展历程

    文本识别 俗称光学字符识别,英文全称是Optical Character Recognition(简称OCR),它是利用光学技术和计算机技术把印刷体或手写体文本进行读取识别,转化成计算机和人都能够识读 ...

最新文章

  1. Linux系统下活用History命令
  2. 值得推荐的C/C++框架和库 【强烈推荐】
  3. 小工匠聊架构 - 缓存与数据库【双写不一致】【读写并发不一致】解决方案一览
  4. class_create
  5. Python爬虫项目,获取所有网站上的新闻,并保存到数据库中,解析html网页等(未完待续)
  6. 6个炫酷又好用的 Python 工具,个个都很奔放呀
  7. VirtualBox 释放虚拟磁盘文件的大小
  8. php 字符符转整数
  9. 微课|中学生可以这样学Python(5.8.1节):使用切片访问列表元素
  10. javascript 调用C++函数
  11. ip xfrm命令是做什么的?
  12. DoubleArrayTrie详解
  13. 设定pic单片机端口为输入_PIC单片机入门_输入输出端口详解
  14. 将axf 文件转换为bin文件
  15. JAVA:实现LongestPalindromicSubsequence最长回文子序列算法(附完整源码)
  16. 批量获取指定文件夹下,多个同结构excel表固定位置的内容,并保存
  17. 数据挖掘 | 判别分析 +朴素贝叶斯分类算法
  18. 计算机无法识别3.0u盘启动,USB3.0接口不能识别U盘的解决方法
  19. 通信原理基础知识问答梳理(史上最全)
  20. Android设置视频背景

热门文章

  1. github 每次需要输入passphrase for key id_rsa 的解决办法
  2. 递归:双色Hanoi塔问题
  3. Linux 重置root密码和修改用户密码
  4. 苹果手机壳_有必要买苹果官网上的手机壳吗?
  5. 国内linux内核名人,世界10大IT技术伟人 Linux之父居首
  6. 【AHK】给通达信软件增加F1买入,F2卖出 交易热键(基于中银国际客户端测试)
  7. 2018年安徽粮食总产逾800亿斤 实现“十五连丰”
  8. 怎么查看linux的日志syslog,Windows日志的记录
  9. _pvp_killed_loot
  10. [转]MVC整合Ajax