精华内容
下载资源
问答
  • 介绍本系列教程介绍本系列教程从 IntelliJ IDEA 的安装、卸载、软件设置、项目配置等各个方面进行讲解。通过本系列教程的学习,也希望你能爱上 IntelliJ IDEA,爱上它的体贴。同时学完本系列教程对于你学习 ...

    介绍

    本系列教程介绍

    本系列教程从 IntelliJ IDEA 的安装、卸载、软件设置、项目配置等各个方面进行讲解。通过本系列教程的学习,也希望你能爱上 IntelliJ IDEA,爱上它的体贴。同时学完本系列教程对于你学习 JetBrains 公司下的其他产品也有好处,其他产品包括:

    • PhpStorm 主要用于开发 PHP

    • RubyMine 主要用于开发 Ruby

    • PyCharm 主要用于开发 Python

    • AppCode 主要用于开发 Objective-C / Swift

    • CLion 主要用于开发 C / C++

    • WebStorm 主要用于开发 JavaScript、HTML5、CSS3 等前端技术

    • 0xDBE 主要用于开发 SQL

    • Android Studio 主要用于开发 Android(Google 基于 IntelliJ IDEA 社区版进行迭代所以也姑且算上)

    IntelliJ IDEA 介绍

    • IntelliJ IDEA 官网:https://www.jetbrains.com/idea/

    IntelliJ IDEA 在 2015 年 06 月官网主页是这样介绍自己的:

    Excel at enterprise, mobile and web development with Java, Scala and Groovy, with all the latest modern technologies and frameworks available out of the box.

    简明翻译:IntelliJ IDEA 主要用于支持 Java、Scala、Groovy 等语言的开发工具,同时具备支持目前主流的技术和框架,擅长于企业应用、移动应用和 Web 应用的开发。

    IntelliJ IDEA 对自己的定义是很清晰的,对于新人来讲可能还不太理解,可能还会有误会,认为它博而不精,但是对于老用户来讲应该是非常认可上面这句话的。通过下面功能表格,新人对于 IntelliJ IDEA 所具备的功能会有一个新的认识。

    如果用一句话来形容 IntelliJ IDEA,我会说:IntelliJ IDEA 是目前所有 IDE 中最具备沉浸式的 IDE,没有之一。

    IntelliJ IDEA 主要功能介绍

    • 语言支持上:

    安装插件后支持SQL类基本JVM
    PHPPostgreSQLJava
    PythonMySQLGroovy
    RubyOracle 
    ScalaSQL Server 
    Kotlin  
    Clojure  
    • 其他支持:

    支持的框架额外支持的语言代码提示支持的容器
    Spring MVCHTML5Tomcat
    GWTCSS3TomEE
    VaadinSASSWebLogic
    PlayLESSJBoss
    GrailsJavaScriptJetty
    Web ServicesCoffeeScriptWebSphere
    JSFNode.js 
    StrutsActionScript 
    Hibernate  
    Flex  

    上面特性只是 IntelliJ IDEA 的冰山一角,而且这个还不是 IntelliJ IDEA 最重要的地方,IntelliJ IDEA 最重要的特性就是人性化、智能,后面学习你会慢慢接触到。

    更多官方学习信息

    • IntelliJ IDEA 主要特性介绍 1:https://www.jetbrains.com/idea/features/

    • IntelliJ IDEA 主要特性介绍 2:https://www.jetbrains.com/idea/features/editions_comparison_matrix.html

    • 官方快速入门:http://confluence.jetbrains.com/display/IntelliJIDEA/Quick+Start

    • 官方在线帮助文档:http://www.jetbrains.com/idea/webhelp/getting-help.html

    • 官方 wiki:http://wiki.jetbrains.net/intellij

    更多官方资讯跟踪途径

    • IntelliJ IDEA 官方 community:https://intellij-support.jetbrains.com/hc/en-us/community/topics

    • IntelliJ IDEA 官方 issue:https://youtrack.jetbrains.com/issues/IDEA

    关于

    学习前提

    由于 IntelliJ IDEA 官网在亚洲没有设服务器,且官网用到一些类似 Twitter、Facebook 等站的脚本会使得你在国内出现访问巨慢或是不允许访问的特殊情况,所以建议你在访问官网、访问插件库、小版本本地迭代更新等操作的时候出现奇怪问题的时候,请自备VPN等网络加速工具。

    很多用户都是先学习了 Eclipse、MyEclipse 再转到 IntelliJ IDEA 的,这里需要先说明的是,在学习 IntelliJ IDEA 过程中,你暂且要放下 Eclipse 下的开发思维方式,不能按 Eclipse 的软件思想或是结构去要求 IntelliJ IDEA,这样对你学习 IntelliJ IDEA 非常不利。

    适用人群

    用 IntelliJ IDEA 进行开发语言的学习者。

    用 IntelliJ IDEA 进行开发语言的开发工作者。

    其中对于语言开发学习者我是非常建议你使用 IntelliJ IDEA,因为一些代码格式、命名规范在 IntelliJ IDEA 下都是有良好的提示,对于我们所处的输入法下的中文全角符号也可以得到快速发现。特别是学习 Python 的学习者,当你在用 Pycharm 进行学习的时候,Pycharm 会时刻告诉你什么时候要注意空格、换行,提醒你有 PEP8 编码规范,你也可以通过快捷键快速格式化出适合 Python 要求的代码,这对于学习者来讲,真的很重要,它可以让你更专注于自己的代码。

    教程演示的 IntelliJ IDEA 版本

    IntelliJ IDEA 13 版本和 14 版本,在设置上差异很大,14 版本 IntelliJ IDEA 对整个 IDE 的设置进行了重新编排、归类,但是细节设置上所沿用的介绍是没有多大改变的。

    目前(2015 年 06 月)IntelliJ IDEA 官网最新版本信息为:Version:14.1.4 Build:141.1532.4 Released:June 19th, 2015。

    IntelliJ IDEA 有旗舰版和社区版本之分,本系列教程将以 14.1.4的旗舰版进行演示和讲解。

    其中旗舰版(Ultimate Edition)为收费版本,有 30 天试用期。如果你是学生、老师、开源项目参与者都可以向官网免费试用旗舰版,具体你可以查看下面链接。社区版(Community Edition)为免费版本,功能较旗舰版少了很多。

    本教程使用的 IntelliJ IDEA 主题为较受欢迎的黑色:Darcula。

    • 申请免费版本:https://www.jetbrains.com/idea/buy/

    • 旗舰版和社区版差异细节:https://www.jetbrains.com/idea/features/editions_comparison_matrix.html

    教程演示的系统环境

    • 系统:Windows 8.1 64 位 简体中文版

    • JDK 版本:1.8.0_05 64 位

    • 建议使用 JDK 版本为:1.6 及 1.6 以上,更加详细的系统要求会在安装教程篇中进行讲解。

    IntelliJ IDEA 版本迭代习惯

    2015 年 IntelliJ IDEA 主版本是 14,目前(2015 年 06 月)最新版本是 14.1.4。与此同时,2015 年 06 月 17 日,官网开始提供 15 EAP 版本(Early Access Program 早期预览版)。如果你对 IntelliJ IDEA 下个大版本的新特性很感兴趣,你可以随时关注官网博客最新动态。

    按正常情况来讲,IntelliJ IDEA 大版本是一年迭代一次。大版本下的小版本迭代时间没有固定,快的是一个月不到就迭代一次,慢的话基本在两到三个月迭代一次。相对其他 IDE 来讲迭代周期还是比较紧凑,但是作为用户你不用担心因为频繁迭代更新而引起的项目配置问题或是软件配置问题,后面有课程会专门对此进行说明。

    Windows 系统下安装 IntelliJ IDEA

    更新记录

    • 2016-12:IntelliJ IDEA 2016.3 版本出来之后,Windows 的安装过程增加了一个可以勾选选用 JetBrains 自己开发的一个 JRE 环境,这个建议 64 位系统的用户可以勾选上,按正常理论效果比 Oracle 应该会好。

    系统要求

    • 系统支持:Microsoft Windows 8 / 7 / Vista / 2003 / XP(每个系统版本的 32 位和 64 位都可以)

    • JDK 版本:Oracle JDK 1.6 或以上

    • 内存:最低要求 1 GB,推荐 2 GB 以上

    • 硬盘:最低要求 2 GB

    • 显示器:最低要求 1024 X 768 分辨率

    • 更多信息可以阅读:https://www.jetbrains.com/idea/download/system_requirements.jsp?os=win

    首次安装

    • IntelliJ IDEA 的安装是非常简单的,不需要做过多的选择,可以说简单到都是 Next 即可。

    强大的 IntelliJ IDEA 开发工具 | 开发及测试人员必备工具

    强大的 IntelliJ IDEA 开发工具 | 开发及测试人员必备工具

    强大的 IntelliJ IDEA 开发工具 | 开发及测试人员必备工具

    强大的 IntelliJ IDEA 开发工具 | 开发及测试人员必备工具

    • 上图标记 1 表示在桌面上创建一个快捷图标,建议勾选上,方便我们在安装后定位 IntelliJ IDEA 安装目录。

    • 上图标记 2 表示关联 Java 和 Groovy 文件,建议都不要勾选,正常我们会在 Windows 的文件系统上打开这类文件都是为了快速查阅文件里面的内容,如果用 IntelliJ IDEA 关联上之后,由于 IntelliJ IDEA 打开速度缓慢,这并不能方便我们查看。

    • 建议在 Windows 系统上关联此类文件可以用 EmEditor、Notepad++ 这类轻便的编辑器。

    强大的 IntelliJ IDEA 开发工具 | 开发及测试人员必备工具

    强大的 IntelliJ IDEA 开发工具 | 开发及测试人员必备工具

    强大的 IntelliJ IDEA 开发工具 | 开发及测试人员必备工具

    • 整个安装过程,一般的配置电脑安装所需的时间大约是 1 ~ 5 分钟。

    已有旧版本安装新版本

    强大的 IntelliJ IDEA 开发工具 | 开发及测试人员必备工具

    强大的 IntelliJ IDEA 开发工具 | 开发及测试人员必备工具

    • 上图,显示我目前电脑中已经有一个 IntelliJ IDEA 版本,如果我勾选了标记 1,则表示安装之前会先卸载掉电脑上的旧版本。

    • 上图标记 2,如果勾选了,则 IntelliJ IDEA 会直接安静地卸载旧版本,而旧版本的个性化设置不会被删除。

    • 在小版本迭代中建议是卸载掉旧版本的,然后再进行新版本安装,因为小版本迭代一般都是 Bug 的修复,保留旧版本没有多大意义。

    • 在大版本迭代中建议是保留旧版本,也就是不勾选上图标注 1,IntelliJ IDEA 是支持一台电脑装多个版本的。

    • 接下来的步骤我们假设勾选了标注 1 再进行安装。

    强大的 IntelliJ IDEA 开发工具 | 开发及测试人员必备工具

    • 上图,由于上一步勾选了卸载旧版本选项,所以出现了选择删除旧版本的配置选项。

    • 第一个选项:删除旧版本的缓存和本地历史记录。

    • 第二个选项:删除旧版本的个人个性化设置。

    • 建议两个都不要勾选。

    • 点击 uninstall,进入全自动的卸载过程,卸载完成接下来的步骤跟上文“首次安装”一致,这里不再进行说明。

    卸载

    • 卸载过程在第 3 点已经有涉及到了,专门对 IntelliJ IDEA 进行卸载也是一样的流程。

    强大的 IntelliJ IDEA 开发工具 | 开发及测试人员必备工具

    强大的 IntelliJ IDEA 开发工具 | 开发及测试人员必备工具

    强大的 IntelliJ IDEA 开发工具 | 开发及测试人员必备工具

    西边人西说测试,

    头条号(软件测试资源站)作者,程序爬虫获取国内外测试资源分享给自学爱好者。

    今日头条关注后,私信回复如下关键词获取【资料包】

    测试资料、工具、Python、自动化测试报告、梯子 等

    展开全文
  • 大数据技术人员工具包之—常见数据挖掘分析处理工具 2016年03月15日 大数据 数据科学融合了多门学科并且建立在这些学科的理论和技术之上,包括数学、概率模型、统计学、机器学习...

    大数据技术人员工具包之—常见数据挖掘分析处理工具

    数据科学融合了多门学科并且建立在这些学科的理论和技术之上,包括数学、概率模型、统计学、机器学习、数据仓库、可视化等。在实际应用中,数据科学包括数据的收集、清洗、分析、可视化以及数据应用整个迭代过程,最终帮助组织制定正确的发展决策数据科学的从业者称为数据科学家。数据科学家有其独特的基本思路与常用工具,本文全面梳理数据分析师和数据科学家使用的工具包,包括开源的技术平台相关工具、挖掘分析处理工具、其它常见工具等几百种,几十个大类,部分网址!

    数据科学家是有着开阔视野的复合型人才,他们既有坚实的数据科学基础,如数学、统计学、计算机学等,又具备广泛的业务知识和经验数据科学家通过精深的技术和专业知识在某些科学学科领域解决复杂的数据问题,从而制定出适合不同决策人员的大数据计划和策略。数据分析师和数据科学家使用的工具在网上的MOOC有提供,比如2016年2月1日约翰-霍普金斯大学Coursera数据科学专业化课程等网络课程。数据科学家的常用工具与基本思路,并对数据、相关问题和数据分析师和数据科学家使用的工具做了综合概述。

    1458022443-2400-0311

    C.常见的数据挖掘分析处理工具

    1、Dynelle Abeyta整理的数据科学家5种工具(2015-09-29):

    dedup——dedup是一个Python库,使用机器学习快速的对结构化数据进行重复数据删除和实体解析。数据科学家发现他们经常需要使用SELECT DISTINCT * FROM my_messy_dataset;不幸的是,现实世界中的数据集往往更加复杂。无论你是去对多个数据源进行汇总,还是简单的数据收集,开始你都需要对重复数据的删除做一个有意义的分析。如你所想,有取之不尽的方法可以用来合并数据和用之不竭的规则来定义你数据的等价意义。有相同地址的两家餐馆是属于一个公司么?名和姓都相同的两条记录就是同一个人么?你很幸运,dedup可以让你转危为安!基于创新的计算机科学研究,dedup使用机器学习(更确切地说,应该是主动学习)去学习,通过合并人类的反馈对两个可能的模棱两可的记录进行研究,并寻找究竟是什么构成了两者的“相似”。更方便的是,它有一个图形用户界面(GUI),任何人都可以使用它。

    Theano——Theano是一个Python库,你可以有效地定义、优化以及评估包含多维数组的数学表达式。Theano的特点:

    · 和Numpy紧密结合——在Theano编译的函数中使用numpy.ndaaray。

    · GPU的透明使用——在执行密集型数据计算时,相比于CPU,速度提升了140倍。(使用float32进行测试)

    · 速度和稳定性优化——对log(1+x)得到正确的答案,即使x真的很小。

    · C语言代码动态生成——加速评估表达式。

    · 广泛的单元测试和自我验证——发现和诊断不同种类的错误。

    StarCluster——StarCluster已经开始在Amazon的EC2云服务器中设计虚拟机创建、配置和管理集群的自动和简化程序。StarCluster允许所有人在面向分布式和并行计算的应用和系统的云服务器中轻松的创建一个集群计算环境。这允许你在无限制的数据上做交互程序。(贡献者Alessandro Gagliardi,Galvanize数据科学指导者。)

    graph-tool——在python网络和图形分析库与日俱增的情况下,图形工具给了不少希望。尽管像NetworkX和Gephi这样的工具在不断成长的工具中仍然还有它们的一席之地,但是对于那些想要做大图像高级分析的人来说——无论是社会网络、道路网络、还是生物网络——这两者往往会显得力不从心。NetworkX一直是用于网络分析的最流行的Python工具,因为它有着丰富的API并且使用的门槛很低,但是一旦你开始处理更大的图形,纯python实现的弊端才真正开始凸显。而Gephi是一个极好的交互式可视化和开发新图像的图形化工具,但是有一个麻烦的脚本接口,使得它很难使用编程方式去控制。图形工具尝试从它前辈中吸取经验教训并给数据科学家最好的结果。它使用C++实现(可并行执行)并用Python来武装,绑定了一个易于使用的API,同时获得了超快的速度,而且不影响使用性。

    Plotly——Plotly是一个面向R,Python,MATLAB,JavaScript和Excel的交互式图形库。Plotly也是一个用于分析和分享数据和图像的平台。Plotly是如何与众不同的呢?与Google Docs和GitHub一样,你可以协调和控制你的数据;可以将文件设置成公有的、私有的、秘密文件或是分享的。如果你使用plotly的免费公共云,脱机Plotly,或是现场部署,下面的选项很多都是可以获得的。在你的工作流中可以使用Plotly,这里有三种可用方式:

    为数据科学家整合其它工具。Plotly的R,Python和MATLAB的API可以让你做交互、更新仪表面板和图像。Plotly整合了IPython Notebooks,NetworkX,Shiny,ggplot2,matplotlib,pandas,reporting tools和数据库。例如,下面的图是使用ggplot2制作的,然后嵌入到这个博客中。将鼠标悬停后看看数据变化,然后单击拖动放大。

    创建交互式地图。Plotly的图形库建立在D3.js之上。对于地理数据,Plotly支持分级统计图、散点图、气泡图、分块图和线图。你可以制作类似下面这样的地图,像R和Python一样把它们嵌入到博客,应用程序和仪表板。

    建立全方位的可视化。你可以为使用Plotly满足任意的可视化需求:地图、2D、3D以及流图。点击并移动你的鼠标来旋转这个图,悬停并观察数据变化,或切换放大。

    2、6种开源数据挖掘工具:百分之八十的数据是非结构化的,需要一个程序和方法来从中提取有用信息,并且将其转换为可理解、可用的结构化形式。数据挖掘过程中有大量的工具可供使用,比如采用人工智能、机器学习,以及其他技术等来提取数据。以下为您推荐六款开源大数据挖掘工具:

    1)WEKA——WEKA原生的非Java版本主要是为了分析农业领域数据而开发的。该工具基于Java版本,是非常复杂的,并且应用在许多不同的应用中,包括数据分析以及预测建模的可视化和算法。与 RapidMiner 相比优势在于,它在 GNU 通用公共许可证下是免费的,因为用户可以按照自己的喜好选择自定义。WEKA 支持多种标准数据挖掘任务,包括数据预处理、收集、分类、回归分析、可视化和特征选取。添加序列建模后,WEKA 将会变得更强大,但目前不包括在内。

    2)RapidMiner——该工具是用Java语言编写的,通过基于模板的框架提供先进的分析技术。该款工具最大的好处就是,用户无需写任何代码。它是作为一个服务提供,而不是一款本地软件。值得一提的是,该工具在数据挖掘工具榜上位列榜首。另外,除了数据挖掘,RapidMiner 还提供如数据预处理和可视化、预测分析和统计建模、评估和部署等功能。更厉害的是它还提供来自WEKA(一种智能分析环境)和R脚本的学习方案、模型和算法。RapidMiner分布在AGPL开源许可下,可以从 SourceForge上下载。SourceForge是一个开发者进行开发管理的集中式场所,大量开源项目在此落户,其中就包括维基百科使用的 MediaWiki。

    3)NLTK——当涉及到语言处理任务,没有什么可以打败NLTK。NLTK提供了一个语言处理工具,包括数据挖掘、机器学习、数据抓取、情感分析等各种语言处理任务。而您需要做的只是安装NLTK,然后将一个包拖拽到您最喜爱的任务中,您就可以去做其他事了。因为它是用Python语言编写的,你可以在上面建立应用,还可以自定义它的小任务。

    4)Orange——Python之所以受欢迎,是因为它简单易学并且功能强大。如果你是一个Python开发者,当涉及到需要找一个工作用的工具时,那么没有比Orange更合适的了。它是一个基于Python语言,功能强大的开源工具,并且对初学者和专家级的大神均适用。此外,你肯定会爱上这个工具的可视化编程和 Python 脚本。它不仅有机器学习的组件,还附加有生物信息和文本挖掘,可以说是充满了数据分析的各种功能。

    5)KNIME——数据处理主要有三个部分:提取、转换和加载。而这三者KNIME都可以做到。KNIME为您提供了一个图形化的用户界面,以便对数据节点进行处理。它是一个开源的数据分析、报告和综合平台,同时还通过其模块化数据的流水型概念,集成了各种机器学习的组件和数据挖掘,并引起了商业智能和财务数据分析的注意。KNIME是基于Eclipse,用Java编写的,并且易于扩展和补充插件。其附加功能可随时添加,并且其大量的数据集成模块已包含在核心版本中。

    6)R-Programming——如果我告诉你R项目,一个GNU项目,是由R(R-programming简称,以下统称R)自身编写的,你会怎么想?它主要是由C语言和FORTRAN语言编写的,并且很多模块都是由R编写的,这是一款针对编程语言和软件环境进行统计计算和制图的免费软件。R语言被广泛应用于数据挖掘,以及开发统计软件和数据分析中。近年来,易用性和可扩展性也大大提高了 R 的知名度。除了数据,它还提供统计和制图技术,包括线性和非线性建模,经典的统计测试,时间序列分析、分类、收集等等。

    3、数据分析语言3种工具:随着数据科学分析工具的发展,一方面成功解决了数据科学中的算法失效、超大规模数据可视化等一系列挑战;另一方面各具特点和优缺点。例如Mahout具有优秀的大数据处理能力,不仅处理数据量大且速度快,但可视化能力差。接下来选取R语言、RapidMiner、Mahout三种主流的数据科学分析工具,对其概述并以表格的形式对三者的主要特点进行了比较分析,工具基本情况如下。

    1)R语言用于统计计算和作图的编程语言和环境,采用命令行工作方式,在GNU协议下免费发行,其源代码可供自由下载和使用。R网站CRAN上提供了大量的第三方程序包,内容涵盖了经济学、社会学、统计学、生物信息学等诸多方面,这也是为什么越来越多的各行各业的人员喜爱R的一个重要原因。针对传统分析软件的扩展性差以及Hadoop的分析功能薄弱的弱势,研究人员致力于将R语言和Hadoop的集成。R作为开源的统计分析软件,通过R与Hadoop的深度集成,把数据计算推向并行处理,使Hadoop获得强大的深度分析能力。

    2)RapidMiner原名Yale,是一种用于数据挖掘、机器学习以及商业预测分析的开源计算环境。其既可以使用简单的脚本语言进行大规模进程操作,也可以通过JavaAPI或GUI模式进行操作。因为其具备GUI特性,所以对于数据挖掘的初学者比较容易入门。RapidMiner6具有友好而强大的工具箱,提供快而稳定的分析,可以在短时间内设计好一个原型,使得数据挖掘过程中的关键决策尽可能早地实现。帮助减少客户流失、进行情感分析、预测性维护以及市场直销等。

    3)ApacheMahout起源于2008年,其主要目标是构建一个可伸缩的机器学习算法的资源库,它提供了一些经典的机器学习算法,旨在帮助开发人员更加方便快捷地创建智能应用程序。目前,Mahout的项目包括频繁子项挖掘、分类、聚类、推荐引擎(协同过滤)。

    4、数据挖掘5种工具分别为:Intelligent Miner、SAS Enterpreise Miner 、SPSS Clementine、马克威分析系统、GDM,下面将作部分介绍。

    1)Intelligent Miner综述:IBM的Exterprise Miner简单易用,是理解数据挖掘的好的开始。能处理大。数据量的挖掘,功能一般,可能仅满足要求.没有数据探索功能。与其他软件接口差,只能用DB2,连接DB2以外的数据库时,如Oracle, SAS, SPSS需 要安装DataJoiner作为中间软件。难以发布。结果美观,但同样不好理解。

    2)SAS Enterprise Miner综述:SAS完仝以统计理论为基础,功能强大,有完备的数据探索功能。但难以掌握,要求是高级统计分析专业人员.结果难以理解。价格也极其昂贵,而且是租赁模式。基本内容:支持SAS统计模块,使之具有杰出的力量和影响,它还通过大量数据挖掘算法增强了那些模块。SAS使用它的SEMMA方法学以提供一个能支持包括关联、聚类、决策树、神经元网络和统计回归在内的广阔范围的模型数据挖掘工具。

    3)SPSS(Statistical Product and Service Solutions)综述:“统计产品与服务解决方案”软件。最初软件全称为“社会科学统计软件包”。但是随着SPSS产品服务领域的扩大和服务深度的增加,SPSS公司已于2000年正式将英文全称更改为“统计产品与服务解决方案”。用作多个领域和行业,是世界上应用最广泛的专业统计软件。

    展开全文
  • 先来看看大数据的概念。根据维基百科,大数据是庞大或复杂的数据集的广义术语,因此...现在来讨论一些不同的非SQL存储/处理数据工具,例如,NoSQL数据库,全文搜索引擎,实时流式处理,图形数据库等。 1、MongoDB...

    先来看看大数据的概念。根据维基百科,大数据是庞大或复杂的数据集的广义术语,因此传统的数据处理程序不足以支持如此庞大的体量。

    在许多情况下,使用SQL数据库存储/检索数据都是很好的选择。而现如今的很多情况下,它都不再能满足我们的目的,这一切都取决于用例的变化。

    现在来讨论一些不同的非SQL存储/处理数据工具,例如,NoSQL数据库,全文搜索引擎,实时流式处理,图形数据库等。

    1、MongoDB——最受欢迎的,跨平台的,面向文档的数据库。
    MongoDB是一个基于分布式文件存储的数据库,使用C++语言编写。旨在为Web应用提供可扩展的高性能数据存储解决方案。应用性能高低依赖于数据库性能,MongoDB则是非关系数据库中功能最丰富,最像关系数据库的,随着MongDB 3.4版本发布,其应用场景适用能力得到了进一步拓展。

    MongoDB的核心优势就是灵活的文档模型、高可用复制集、可扩展分片集群。你可以试着从几大方面了解MongoDB,如实时监控MongoDB工具、内存使用量和页面错误、连接数、数据库操作、复制集等。

    2、Elasticsearch ——为云构建的分布式RESTful搜索引擎。
    ElasticSearch是基于Lucene的搜索服务器。它提供了分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是比较流行的企业级搜索引擎。

    ElasticSearch不仅是一个全文本搜索引擎,还是一个分布式实时文档存储,其中每个field均是被索引的数据且可被搜索;也是一个带实时分析功能的分布式搜索引擎,并且能够扩展至数以百计的服务器存储及处理PB级的数据。ElasticSearch在底层利用Lucene完成其索引功能,因此其许多基本概念源于Lucene。

    3、Cassandra——开源分布式数据库管理系统。
    最初是由Facebook开发的,旨在处理许多商品服务器上的大量数据,提供高可用性,没有单点故障。

    Apache Cassandra是一套开源分布式NoSQL数据库系统。集Google BigTable的数据模型与Amazon Dynamo的完全分布式架构于一身。于2008开源,此后,由于Cassandra良好的可扩展性,被Digg、Twitter等Web 2.0网站所采纳,成为了一种流行的分布式结构化数据存储方案。

    因Cassandra是用Java编写的,所以理论上在具有JDK6及以上版本的机器中都可以运行,官方测试的JDK还有OpenJDK 及Sun的JDK。 Cassandra的操作命令,类似于我们平时操作的关系数据库,对于熟悉MySQL的朋友来说,操作会很容易上手。

    4、Redis ——开源(BSD许可)内存数据结构存储,用作数据库,缓存和消息代理。
    Redis是一个开源的使用ANSI C语言编写的、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。Redis 有三个主要使其有别于其它很多竞争对手的特点:Redis是完全在内存中保存数据的数据库,使用磁盘只是为了持久性目的; Redis相比许多键值数据存储系统有相对丰富的数据类型; Redis可以将数据复制到任意数

    5、Hazelcast ——基于Java的开源内存数据网格。
    Hazelcast 是一种内存数据网格 in-memory data grid,提供Java程序员关键任务交易和万亿级内存应用。虽然Hazelcast没有所谓的“Master”,但是仍然有一个Leader节点(the oldest member),这个概念与ZooKeeper中的Leader类似,但是实现原理却完全不同。同时,Hazelcast中的数据是分布式的,每一个member持有部分数据和相应的backup数据,这点也与ZooKeeper不同。

    在这里我还是要推荐下我自己建的大数据学习交流qq裙:522189307 , 裙 里都是学大数据开发的,如果你正在学习大数据 ,小编欢迎你加入,大家都是软件开发党,不定期分享干货(只有大数据开发相关的),包括我自己整理的一份最新的大数据进阶资料和高级开发教程,欢迎进阶中和进想深入大数据的小伙伴。上述资料加群可以领取

    Hazelcast的应用便捷性深受开发者喜欢,但如果要投入使用,还需要慎重考虑。

    6、Ehcache——广泛使用的开源Java分布式缓存。
    主要面向通用缓存、Java EE和轻量级容器。

    EhCache 是一个纯Java的进程内缓存框架,具有快速、精干等特点,是hibernate中默认的CacheProvider。主要特性有:快速简单,具有多种缓存策略;缓存数据有两级,内存和磁盘,因此无需担心容量问题;缓存数据会在虚拟机重启的过程中写入磁盘;可以通过RMI、可插入API等方式进行分布式缓存;具有缓存和缓存管理器的侦听接口;支持多缓存管理器实例,以及一个实例的多个缓存区域;提供Hibernate的缓存实现。

    7、Hadoop ——用Java编写的开源软件框架。
    用于分布式存储,并对非常大的数据用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群进行高速运算和存储。Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,MapReduce则为海量的数据提供了计算。

    8、Solr ——开源企业搜索平台,用Java编写,来自Apache Lucene项目。
    Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的返回结果。

    与ElasticSearch一样,同样是基于Lucene,但它对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化。

    9、Spark ——Apache Software Foundation中最活跃的项目,是一个开源集群计算框架。
    Spark 是一种与 Hadoop 相似的开源集群计算环境,但是两者之间还存在一些不同之处,这些不同之处使 Spark 在某些工作负载方面表现得更加优越,换句话说,Spark 启用了内存分布数据集,除了能够提供交互式查询外,它还可以优化迭代工作负载。

    Spark 是在 Scala 语言中实现的,它将 Scala 用作其应用程序框架。与 Hadoop 不同,Spark 和 Scala 能够紧密集成,其中的 Scala 可以像操作本地集合对象一样轻松地

    10、Memcached ——通用分布式内存缓存系统。
    Memcached是一套分布式快取系统,当初是Danga Interactive为了LiveJournal所发展的,但被许多软件(如MediaWiki)所使用。Memcached作为高速运行的分布式缓存服务器,具有以下的特点:协议简单,基于libevent的事件处理,内置内存存储方式。

    展开全文
  • 项目配置管理工具研究

    千次阅读 2014-12-09 14:56:55
    配置管理工具研究 一、软件配置管理概念的提出 每一个软件项目,无论是工程类项目,还是产品类项目,都必须经历需求分析、系统设计、编码实现、集成测试、部署、交付、维护和支持的过程。在这个过程中,将生成各种...

    配置管理工具研究

    一、软件配置管理概念的提出

    每一个软件项目,无论是工程类项目,还是产品类项目,都必须经历需求分析、系统设计、编码实现、集成测试、部署、交付、维护和支持的过程。在这个过程中,将生成各种各样不同的工件,包括文档、源程序、可执行代码、支持库。更可怕的是,频繁出现的变更是不可避免的,因此面向如此庞大且不断变动的信息集,如何使其有序、高效地存放、查找和利用就成为了一个突出的问题。

    针对这一问题,最早的开发人员尝试过的解决办法是通过手工来实现:

      1)文档:每次修改时都另存为一个新的文件,然后通过文件名进行区分,例如 "XXX 软件需求说明书V1.0, XXX软件需求说明书V1.1, XXX软件需求说明书V2.0.",并且在文件中注明每次版本变化的内容;

      2) 源代码:每次要修改时就将整个工程目录复制一份,将原来的文件夹进行改名,例如 "XX 项目V1.0、 XX项目1.01、 .",然后在新的目录中进行修改;

       但是这种方法,不仅十分繁琐,容易出错,而且会带来大量的垃圾数据。如果是团队协同开发或者是项目规模较大时,还是会造成很大的混乱。很显然,这样简陋的方法是无法应对这一问题的。

      后来,有人尝试从制造工业领域引入了"配置管理"这一概念,通过不懈的研究与实践,最终形成了一套管理办法和活动原则,这也就是软件配置管理。

    通过软件配置管理,将对软件系统中的多重版本实施系统的管理;全面记载系统开发的历史过程,包括为什么修改,谁作了修改,修改了什么;管理和追踪开发过程中危害软件质量以及影响开发周期的缺陷和变化。并对开发过程进行有效地管理和控制,完整、明确地记载开发过程中的历史变更,形成规范化的文档,不仅使日后的维护和升级得到保证,而且更重要的是,这还会保护宝贵的代码资源,积累软件财富,提高软件重用率,加快投资回报。

    二、进行软件配置管理的目的

    1、权限控制(Access Control)

    权限控制对SCM工具来说至关重要。一方面,既然是团队开发,就可能需要限制某些成员的权限;特别是大项目往往牵扯到子项目外包,到最后联调阶段会涉及到很多不同的单位,更需要权限管理。另一方面,权限控制也减小了误操作的可能性,间接提高了SCM工具的可用性(Usability)。

    2、版本控制(Version Control)

    SCM工具记录项目和文件的修改轨迹,跟踪修改信息,使软件开发工作以基线(Baseline)渐进方式完成,从而避免了软件开发不受控制的局面,使开发状态变得有序。

    SCM工具可以对同一文件的不同版本进行差异比较,可以恢复个别文件或整个项目的早期版本,使用户方便地得到升级和维护必需的程序和文档。

    SCM工具内部对版本的标识,采用了版本号(Version Number)方式,但对用户提供了多种途径来标识版本,被广泛应用的有版本号、标签(Label)和时间戳(Time Stamp)。多样灵活的标识手段,为用户提供了方便。

    3、增强的版本控制(Enhanced Version Control)

    快照(Snapshot)和分支(Branch)以基本的版本控制功能为基础,使版本控制的功能又更进一步增强。

    快照是比版本高一级的概念,它是项目中多个文件各自的当前版本的集合。快照使恢复项目的早期版本变得方便,它还支持批量签入(Check in)、批量签出(Check out)和批量加标签(Label)等操作。总之,快照是版本控制的一种增强,使版本控制更加方便高效。

    分支允许用户创建独立的开发路径,我们认为分支的典型用途有二。第一,分支和合并(Merge)一起,是支持并行开发(Concurrent Development)的有力支持。第二,分支支持多版本开发,这对发布后的维护尤其有用。比如客户报告有打印bug,小组可能从某个还未引入打印bug的项目版本引出一个分支,最终发布一个bug修订版。分支是版本控制的另一种增强。

    版本控制和增强的版本控制是SCM工具其它功能的基础。

    4、变更管理(Change Management)

    SCM工具提供有效的问题跟踪(Defect Tracking)和系统变更请求(System ChangeRequests (SCRs))管理。通过对软件生命周期各阶段所有的问题和变更请求进行跟踪记录,来支持团队成员报告(Report)、抓取(Capture)和跟踪(Track)与软件变更相关的问题,以此了解谁改变了什么,为什么改变。

    变更管理有效地支持了不同开发人员之间,以及客户和开发人员之间的交流,避免了无序和各自为政的状态。

    5、独立的工作空间(Independent Workspaces)

    开发团队成员需要在开发项目上协同、并发地工作,这样可以大大提高软件开发的效率。沙箱(Sandbox)为并行开发提供了独立的工作空间,在有的SCM工具中也称为工作目录(Working Folder)。

    使用沙箱(Sandbox),开发人员能够将所有必要的项目文件拷贝到私有的一个树型目录,修改在这些副本上进行。一旦对修改感到满意,就可以将修改合并(Merge)到开发主线(Main Line)上去;当然,如果该文件只有该成员一人修改,只需将修改过的文件签入(Check In)到主项目中即可。

    “并发和共享是同一事物的不同方面”,并发的私有工作空间共享同一套主项目(Mater Project)文件,因此有必要让所有团队成员拥有得知项目当前状态的能力。SCM工具提供刷新(Refresh)操作,某位团队成员可以使其他团队成员在主项目文件上所做的变更,在自己沙箱的图形用户界面上反应出来。

    6、管理项目的整个生命周期

    从开发、测试、发布到发布后的维护,SCM工具的使命“始于项目开发之初,终于产品淘汰之时”。SCM工具应预先提供典型的开发模式的模板,以减少用户的劳动;另一方面,也应支持用户自定义生命周期模式,以适应特殊开发需要。

    7、与主流开发环境的集成

      将版本控制功能与主流集成开发环境(IDE)集成,极大地方便了软件开发过程。从集成开发环境的角度看,版本控制是其一项新功能;从SCM工具的角度看,集成开发环境充当了沙箱的角色。

    三、常见的配置管理工具(SCM Rools)

    正如前面所述,由于软件配置管理过程十分繁杂,管理对象错综复杂,如果是采用人工的办法不仅费时费力,还容易出错,产生大量的废品。因此,引入一些自动化工具是十分有裨益的,这也是做好配置管理的必要条件。

    正是因为如此,市场上出现了大量的自动化配置管理工具,这些工具的实现原理与基本机制均十分接近,但由于其定位不同,因此各有特点。现在常见的软件配置管理工具主要有:CCC、SCCS、RCS、Rational ClearCase、Merant PVCS、Hansky Firefly、Microsoft VSS、CVS、GIT、SVN,下面我们就对这些配置管理工具做一简单的介绍。

    元老:CCC 、SCCS、 RCS

      上个世纪七十年代初期加利福利亚大学的Leon Presser 教授撰写了一篇论文,提出控制变更和配置的概念,之后在1975年,他成立了一家名为 SoftTool的公司,开发了自己的配置管理工具:CCC,这也是最早的配置管理工具之一。

    在软件配置管理工具发展史上,继CCC之后,最具有里程碑式的是两个自由软件: Marc Rochkind 的SCCS (Source Code Control System) 和 WalterTichy 的RCS (Revision Control System),它们对配置管理工具的发展做出了重大的贡献,直到现在绝大多数配置管理工具基本上都源于它们的设计思想和体系架构。

    中坚:Rational ClearCase

    Rational 公司是全球最大的软件CASE 工具提供商,现已被IBM 收购。也许是受到其拳头产品、可视化建模第一工具Rose 的影响,它开发的配置管理工具ClearCase 也是深受用户的喜爱,是现在应用面最广的企业级、跨平台的配置管理工具之一。

    ClearCase提供了比较全面的配置管理支持,其中包括版本控制、工作空间管理、Build管理等,而且开发人员无需针对其改变现有的环境、工具和工作方式。

     1)版本控制

     ClearCase 不仅可以对文件、目录、链接进行版本控制,同时还提供了先进的版本分支和归本功能用于支持并行开发。另外,它还支持广泛的文件类型。

     2)工作空间管理  

    可以为开发人员提供私人存储区,同时可以实现成员之间的信息共享,从而为每一位开发人员提供一致、灵活、可重用的工作空间域。

    3)Build管理  

    对ClearCase 控制的数据,既可以使用定制脚本,也可使用本机提供的make 程序。

    其最大的缺点就在于其价格不菲,每个客户端用户许可证大约需要几千美金,所以在国内应用群体有限。

    小工作组级:Merant PVCS

    MERANT 公司的 PVCS 能够提供对软件配置管理的基本支持,通过使用其图形界面或类似SCCS 的命令,能够基本满足小型项目开发的配置管理需求。 PVCS 虽然功能上也基本能够满足需求,但是其性能表现一直较差,逐渐地被市场所冷落。

    新秀:Hansky Firefly

    做为H a n s k y 公司软件开发管理套件中重要一员的Firefly,可以轻松管理、维护整个企业的软件资产,包括程序代码和相关文档。 Firefly是一个功能完善、运行速度极快的软件配置管理系统,可以支持不同的操作系统和多种集成开发环境,因此它能在整个企业中的不同团队,不同项目中得以应用。

    Firefly基于真正的客户机/ 服务器体系结构,不依赖于任何特殊的网络文件系统,可以平滑地运行在不同的LAN、WAN 环境中。它的安装配置过程简单易用,Firefly 可以自动、安全地保存代码的每一次变化内容,避免代码被无意中覆盖、修改。项目管理人员使用 Firefly可以有效地组织开发力量进行并行开发和管理项目中各阶段点的各种资源,使得产品发布易于管理;并可以快速地回溯到任一历史版本。系统管理员使用Firefly 的内置工具可以方便的进行存储库的备份和恢复,而不依赖于任何第三方工具。

    入门级:Microsoft VisualSource Safe

    Visual Source Safe,即VSS ,是微软公司为Visual Studio配套开发的一个小型的配置管理工具,准确来说,它仅能够称得上是一个小型的版本控制软件。 VSS的优点在于其与Visual Studio实现了无缝集成,使用简单。提供了历史版本记录、修改控制、文件比较、日志等基本功能。

    但其缺点也是十分明显的,只支持Windows平台,不支持并行开发,通过 Check out - Modify -Check in的管理方式,一个时间只允许一个人修改代码,而且速度慢、伸缩性差,不支持异地开发。甚至于微软本身也不采用其做为配置管理工具,而是使用一个名为SLM 的内部工具。

    开源免费: CVS、GIT、SVN

    CVS:

    CVS 是Concurrent VersionsSystem 的缩写,它是开放源代码软件世界的一个伟大杰作,由于其简单易用、功能强大,跨平台,支持并发版本控制,而且免费,它在全球中小型软件企业中得到了广泛使用。其最大的遗憾就是缺少相应的技术支持,许多问题的解决需要自已寻找资料,甚至是读源代码。

    SVN(Subversion):

    SVN全名Subversion,即版本控制系统。SVN与CVS一样,是一个跨平台的软件,支持大多数常见的操作系统。作为一个开源的版本控制系统,Subversion管理着随时间改变的数据。这些数据放置在一个中央资料档案库(repository)中。这个档案库很像一个普通的文件服务器,不过它会记住每一次文件的变动。这样你就可以把档案恢复到旧的版本,或是浏览文件的变动历史。Subversion是一个通用的系统,可用来管理任何类型的文件,其中包括了程序源码。作为版本管理工具,CVS出现至今,已经有二十个年头,可以说他已经走到了尽头,但可以肯定,它将继续存在着。SVN是作为CVS的代替产品而出现的。现在很多开源组织,都慢慢地转到SVN上,比如Apache跟SourceForge。SVN有着比CVS更强大的功能,比如,它可记录目录的更改,它的性能比CVS会快很多等等。

    GIT(Georgia Institute of Technology):

    GIT 是一个快速、开源、可扩展的分布式版本控制系统,因此它在(开源)和(协作编程社区)有取代SVN的趋势。GIT具有极为丰富的命令集,对内部系统提供了高级操作和完全访问。GIT与我们熟悉的大部分版本控制系统的差别是很大的。我们熟悉的Subversion、CVS、Perforce、Mercurial等等,他们使用“增量文件系统” (Delta Storage systems), 就是说它们存储每次提交(commit)之间的差异。GIT正好与之相反,它会把你的每次提交的文件的全部内容(snapshot)都会记录下来。理论上,GIT可以保存任何文档,但是最善于保存文本文档,因为它本来就是为解决软件源代码(也是一种文本文档)版本管理问题而开发的,提供了许多有助于文本分析的工具。对于非文本文档,GIT 只是简单地为其进行备份并实施版本管理。

    GIT的优点主要有:适合分布式开发,强调个体;公共服务器压力和数据量都不会太大;速度快、灵活;任意两个开发者之间可以很容易的解决冲突;离线工作。

    GIT的缺点是:资料少(起码中文资料很少);学习周期相对而言比较长;不符合常规思维;代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息。

    四、如何选择配置管理工具

    面对这些形形色色,各有千秋的配置管理工具,如何根据组织特点、开发团队需要,选择切合适用的工具呢?

    配置管理工具的选择所需考虑的因素大体包括以下几个因素:功能是否符合实际需求?是否符合团队特点?性能是否满意?费用是否可以接受?售后服务如何?接下来,我们就这几方面逐一深入地探讨:

    1)功能是否符合实际需求,是否符合团队特点

    工具就是用来帮助您解决问题的,因此功能是否符合实际需求是最重要的判断因素。而大多数主流配置管理工具的基本功能都能够满足,因此主要需要判断以下几个因素:

    并行开发支持

    在团队协作开发过程中,有两种主要的模式:集体代码权和个体代码权。采用集体代码权模式进行开发时,一段代码可能同时会被多个开发人员同时修改;而采用个体代码权模式进行开发时,每一段代码都始终被一个开发人员独享,别人需要修改时也会通过该开发人员完成。

    而配置管理软件针对这一情况,也采用了不同的策略:Copy-Modify-Merge(拷贝、修改、合并 ) 的并行开发模式、Check out-Modify-Check in(签出、修改、签入)的独占开发模式。

    异地开发支持

    如果你的开发团队分布在不同的开发地点,就需要对工具的异地开发功能进行仔细的评估了。大多数工具都提供基于 Web的界面,用户可以通过浏览器执行配置管理的相关操作,而且有些工具就通过这样的方法来实现对异地开发的支持。

    这种实现方法有太多的局限性,例如网络(Internet)连接带宽的限制、防火墙以及安全问题等。真正意义上的异地开发支持,是指在不同的开发地点建立各自的存储库,通过工具提供同步功能自动或手动同步。这样做的好处是与网络无关,即便各个开发地点之间没有实时连通的网络,也可以通过 E-Mail 附件等其它方式将同步包发给对方,实现手动的同步。       跨平台开发支持

    如果企业需要从事多个不同平台下的开发工作,就需要配置管理工具能够对跨平台开发提供支持,否则势必会给开发、测试、发布等各个环节带来不便,将使大量的时间被浪费于代码的手工上传、下载中。

    与开发工具的集成性

    配置管理工具与开发工具是编码过程中最常用到两种工具,因此它们之间的集成性直接影响到开发人员的便利性,如果无法良好集成,开发人员将不可避免地在配置管理工具与开发工具之间来回切换。

    2)性能是否满意

    配置管理工具软件的一些性能指标对于最终的选择也有着至关重要的影响。

    运行性能

    如果开发团队规模不大的情况下,配置管理工具软件的性能不会造成很大影响,但如果项目规模比较大,团队成员逐渐增多的情况下,其运行性能就会带来很大的影响。

    易用性

     从工具安装、配置、使用等容易程度出发,是否需要专业培训还简单培训即可。

    安全性

    是否存在相应的安全隐患。

    3)费用是否可以接受

    Rational ClearCase Hansky Firefly 等企业级配置管理工具软件都是收费的商业软件。

    4)技术支持如何

    出现相关的技术问题是否能及时的得到相应的技术支持,工具在使用过程中出现这样那样的问题是很平常的事,有些是因为使用不当,有些则是工具本身的缺陷。这些问题都会直接影响到开发团队的使用,因此随时能够找到专业技术人员解决这些问题就变成十分重要。

    五、主流免费开源配置管理工具(CVS、GIT、SVN)比较

    * 原子提交性(Atomic commit):描述了在提交更改时,能否保证所有更改要么全部提交或合并,要么不会发生任何改变。

    * 版本库模型(Repository model):描述了多个源码版本库副本间的关系,有客户端/服务器和分布式两种模式。在客户端/服务器模式下,每一用户通过客户端访问位于服务器的主版本库,每一客户机只需保存它所关注的文件副本,对当前工作副本(working copy)的更改只有在提交到服务器之后,其它用户才能看到对应文件的修改。而在分布式模式下,这些源码版本库副本间是对等的实体,用户的机器出了保存他们的工作副本外,还拥有本地版本库的历史信息。

    * 并发模式(Concurrency model):描述了当同时对同一工作副本/文件进行更改或编辑时,如何管理这种冲突以避免产生无意义的数据,有排它锁和合并模式。在排它锁模式下,只有发出请求并获得当前文件排它锁的用户才能对对该文件进行更改。而在合并模式下,用户可以随意编辑或更改文件,但可能随时会被通知存在冲突(两个或多个用户同时编辑同一文件),于是版本控制工具或用户需要合并更改以解决这种冲突。因此,几乎所有的分布式版本控制软件采用合并方式解决并发冲突。

    * 历史模式(History model):描述了如何在版本库中存贮文件的更改信息,有快照和改变集两种模式。在快照模式下,版本库会分别存储更改发生前后的工作副本;而在改变集模式下,版本库除了保存更改发生前的工作副本外,只保存更改发生后的改变信息。

    * 变更范围(Scope of change):描述了版本编号是针对单个文件还是整个目录树。

    * 网络协议(Network protocols):描述了多个版本库间进行同步时采用的网络协议。

    * 部分克隆(Partial checkout/clone):是否支持只拷贝版本库中特定的子目录。

     

     

    特征

    CVS

    GIT

    SVN

    是否原子提交

    CVS: 没有. CVS提交不是原子的

    Git: 是的. 提交都是原子的

    Subversion: 提交都是原子的

    版本库模型

    客户端/服务器

    分布式

    客户端/服务器

    并发模式

    合并

    合并或锁定

    合并

    历史模式

    改变集

    快照

    改版集/快照

    部分克隆

    支持

    不支持

    支持

    变更范围

    文件

    目录树

    目录树

        

    文件和目录是否可以移动或重命名

    CVS: 不是. 重命名不支持. 如果手动进行, 可能会损坏历史记录

    Git: 支持重命名, 这是很实用的目的. git甚至能检测到重命名之后文件的改变. 尽管如此, 基于特殊的存储结构, 重命名不会被显示的记录, git能够推导出来(在实际使用中很容易做到)

    Subversion: 是的. 支持重命名

    在移动或重命名之后智能合并

    CVS: 不能. 重命名都不支持, 就不必说智能了

    Git: 不支持.在Git FAQ里: “Git有一个重命名的命令git mv, 但是这仅仅是为了便利. 效果和移掉某个文件, 增加另外一个文件没有任何区别”

    Subversion: 不支持.

    文件和目录拷贝

    CVS: 不能. 拷贝不支持

    Git: 不能. 拷贝不支持

    Subversion: 是的. 并且拷贝非常容易. 包括产生分支

    远程存储仓库的备份

    CVS: 间接的. 可以使用John Polstra写的CVSup

    Git: 是的. 是git的内部特征

    Subversion: 间接的.

    是否传递变更到父仓库

    CVS: 不会

    Git: 是的(Linux内核开发过程经常使用这个特征)

    Subversion: 是的

    仓库权限

    CVS: 很有限.

    Git: 请看和Git一起附带的contrib/hooks/update-paranoid. 看和svnperms类似的path_rules的代码

    Subversion: 是的. 基于HTTP权限的WebDAV-based模块能够支持基于目录级的仓库

    变更集

    CVS: 不是. 变更是基于文件的

    Git: 是的. 是支持的, 创建他们很容易

    Subversion: 部分支持. 对于一次提交会隐式创建一个变更集

    跟踪线性的文件历史

    CVS: 是的. cvs annotate

    Git: 是的.(git blame)

    Subversion: 是的(svn blame)

    能够只在仓库的单目录下作用

    CVS: 是的

    Git: 不是. 尽管如此, 提交多少能被限制, 请看“Repository Permissions”

    Subversion: 是的

    跟踪未提交的变化

    CVS: 是的. 通过cvs diff

    Git: 是的. 另外, 分支在git里非常智能, 在某些工作流里能够被当成是另外一个未提交代码的存储库. 请看“git stash“命令

    Subversion: 是的. 使用svn diff

    基于单个文件的提交信息

    CVS: 不是. 提交信息是基于单次变化的

    Git: 是的. 提交信息基于变更集

    Subversion: 不是. 没有这个特征

    文档

    CVS: 非常棒. 有很多在线的tutorials和资源, 在线的书籍. 命令行客户端也支持一个在线的帮助系统

    Git: 良好. 短的帮助比较简洁难懂. man页很有分量, 但容易误解. 有很多tutorial

    Subversion: 很好. 有一些在线的书籍和一些在线的tutorials和资源. 并且书籍是以docbook/xml写的所以很容易变换成其他格式. 命令行同样提供了在线的帮助系统

    配置是否轻松

    CVS: 好. 是个事实上的标准. 基于每个系统都有并且很容易配置

    Git: 好. 在现有平台上二进制可用. 需要C编译器和Perl. 在windows上需要cygwin. 并有一些Unix特征

    Subversion: Subversion服务器需要安装在apache2模块里(如果有人希望HTTP作为底层协议的话)或使用它自身的服务器. 客户端需要Subversion特征的逻辑还有WebDAV库(针对HTTP). 安装组件很直接, 但是需要一些额外的工作(假定subversion在某些平台没有二进制包可用)

    命令集

    CVS: 包含了3个经常用到的命令的简单的命令集(cvs commit, cvs update和cvs checkout)和其它一些

    Git: 命令集很丰富, 并且和CVS不兼容

    Subversion: 类CVS的命令集, 能够很容易被CVS用户使用

    网络协议

    CVS: 好. cvs在不同的场合使用不同的协议. 协议能够通过ssh链接的加密隧道进行

    Git: 非常棒. 能够使用本地的git协议, 但也能在rsync, ssh, HTTP和HTTPS上使用

    Subversion: 非常好. Subversion服务器支持WebDAV+DeltaV(基于HTTP或HTTPS)作为底层协议, 或者它自身的协议同样能在ssh链接通道里使用.

    可移植性

    CVS: 好. 客户端能在UNIX, Windows和Mac OS上使用. 服务器端能在UNIX, 附有UNIX模拟层的Windows上使用

    Git: 客户端运行在大多数的UNIX系统上, 但没有MS-Windows本地程序. 基于cygwin的系统看起来也能使用

    Subversion: 非常好. 客户端和服务器端都能在UNIX, Windows和Mac OS X上运行

    web接口

    CVS: 是的. CVSweb, ViewVC, Chora和wwCVS

    Git: 是的. Gitweb包含在发布包中

    Subversion: 是的. ViewVC, SVN::Web, WebSVN, ViewSVN, mod_svn_view, Chora, Trac, SVN::RaWeb::Light, SVN Browser, Insurrection和perl_svn.另外, Subversion的apache服务也提供了一个基础的web接口

    图形用户界面

    CVS: 非常好. 有很多图形界面可以用: WinCVS, Cervisia(对于KDE), TortoiseCVS(Windows浏览器插件)

    Git: Gitk包含在发行版中. Qqit和Git-gui工具也可使用

    Subversion: 非常好. 有很多GUIs可用: RapidSVN(跨平台), TortoiseSVN(Windows浏览器插件), Jsvn(java), 等. 大多数都还在开发中

    六、配置管理工具选择

    通过对常见的配置管理工具的了解并结合开发人员的操作系统、开发流程、项目规模、易用性、费用及与开发环境的良好结合性等考虑,我们将采用主流的免费开源配置管理工具(CVS、GIT、SVN)中的一个。

    通过它们之间的对比,可以看出SVN有着比CVS更强大的功能,比如,它可记录目录的更改,它的性能比CVS会快很多,适用于各种级别的开发团队,它的权限控制很方便等等。

    SVN相对于GIT的优点是:管理方便,逻辑明确,符合一般人思维习惯;易于管理,集中式服务器更能保证安全性;代码一致性非常高。而相对于GIT的缺点是:服务器压力太大,数据库容量暴增;如果不能连接到服务器上,基本上不可以工作;不适合开源开发。

    GIT相对于SVN的优点是:适合分布式开发;公共服务器压力和数据量都不会太大;速度快、灵活;任意两个开发者之间可以很容易的解决冲突。但相对于SVN的缺点也很明显:资料少(起码中文资料很少);学习周期相对而言比较长;不符合常规思维;代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息。

          综合考虑之后,个人觉得框架开发项目采用SVN进行配置管理比较合适。

    展开全文
  • 了解一下配置管理工具,以找出哪个最适合你的 DevOps 组织。-- Marco BravoDevOps 正因为有提高产品质量、缩短产品开发时间等优势,目前备受业界关注,...
  • 该分析显示了如何从理论上和最佳方式调整人员配置以适应需求。 方法:识别并映射ED值流。 根据严重程度指标,将患者分为三个资源驱动的护理流程单元。 对每个关键护理团队成员进行了时间观察,并计算了人工周期和...
  • 本文是学习CA Harvest的时候,参考 手册的基本理论部分进行了翻译,供自己日后方便学习,也可供相关的朋友参考,翻译的内容错误很多,有些地方词义表达也不是很清晰,如果您有更好的见解,希望您能给出宝贵的意见,...
  • 敏捷软件配置管理与 IBM Rational 工具集 级别: 初级 Kevi
  • Ansible 服务器配置工具常见问题

    千次阅读 2017-08-29 06:11:15
    本文是从原Ansible官网的FAQ...翻译这篇原始FAQ文档是因为它陈述了Ansible这款工具诞生的原因,设计思路和特性,以及与Puppet、Fabric等同类软件的比较,可以让我们对Ansible有一个整体的了解,所以值得使用者一读。
  • 在这里,还有许多其他代码可用于支持旧的 ,例如,如果您想要托管一个白标应用内分析平台或构建托管的服务器可配置功能标记产品。 概述 我们已经打包了一些东西,以便使用和轻松运行,因此从理论,开始在本地运行...
  • 注:主要只做理论性的总结与分析,相关实战代码会在后面的博客中和github中逐步增加。 一、配置中心的由来及选择 (一)配置中心由来 (二)配置中心要求具备的功能 (三)配置中心基本流转图和支撑体系分析 ​ ...
  • 而且从初级开发人员升级为高级开发人员的一个主要方面就是调整工具,简化任务管理流程,无缝地与其他团队成员进行交流,并在使用的工具之间建立集成。 所以我总结了60个可以用到的工具,供大家参考。 我是...
  • SOA的十大技术理论体系

    千次阅读 2007-02-28 23:14:00
     当前国内要发展SOA主要有三方面工作:方法、工具和环境。方法是工程技术,由基础理论来指导提出的。所以一门科学必需要包括:认知科学(哲理)、工程技术和方法、最后是理论。 架构的演化过程 SO
  • 测试理论面试题

    千次阅读 2019-11-06 09:13:26
    1 说一下你们的测试流程 没有做过项目的直接介绍下v模型...2.项目经理出测试方案(要使用什么样的测试方法、测试策略)安排测试计划(测试人员、资源、进度的安排,测试的范围和完成的目标); 3.测试人员编写和...
  • SCM理论基础

    千次阅读 2018-05-02 10:16:05
    SCM理论基础 在一个大型的项目中,会有很多人员,比如说项目管理者、开发人员等,人多的情况下,很可能就会在及时沟通、管理等方面出现问题,具体可以总结为: 这些问题的存在,不仅会使我们的开发效率很低,做...
  • APM工具对比

    万次阅读 2019-07-16 21:28:56
    市面上的APM(Application Performance Management)理论模型大多都是借鉴,Google Dapper论文。 我最近也在选取使用哪一个工具,这里的对比是在Spring Cloud 中的使用。 对比三种工具: zipkin:Twitter公司开源的...
  • MATLAB控制工程工具箱技术手册

    热门讨论 2009-08-08 21:31:15
    4.1 鲁棒控制理论及鲁棒控制工具箱简介 4.1.1 鲁棒控制理论概述 4.1.2 鲁棒控制工具箱基本数据结构 4.2 系统模型建立与转换工具 4.2.1 模型建立工具 4.2.2 模型转换工具 4.3 鲁棒控制工具箱功能函数 ...
  • Java常用开发工具有哪些?

    千次阅读 2021-01-14 16:56:58
    Java源代码本质上其实就是普通的文本文件,所以理论上来说任何可以编辑文本文件的编辑器都可以作为我们的 Java 代码编辑工具。比如:Windows 记事本,Mac OS X 下的文本编辑,Linux 下的 vi、emacs、gedit、DOS 下的...
  • 微服务架构基本理论概述

    千次阅读 2019-03-14 11:24:00
    《微服务架构基本理论概述 》 前言 微服务基本理论概述 一、微服务架构介绍 概念: 定义: 本质: 二、微服务的出现及未来发展 三、传统开发模式和微服务的区别 优点: 缺点: 常见的系统架构遵循的三...
  • 软件测试理论试题及答案

    万次阅读 2019-08-13 20:03:27
    一、选择题(一分一题共45分) 下列软件属性中,7软件产品首要...软件开发工具的缺陷 B.软件的复杂性;软件项目的时间压力 C.程序开发人员的错误;软件项目文档的缺乏 D.以上都是 导致软件缺陷的最大原因是【...
  • 原文地址:常见的版本控制管理工具作者:Anlin_Yang配置管理工具配置管理相关理论的实践载体,工具的功能范围在某种程度上可以直接影响一个组织中配置管理水平的高低。 所以,选择一个符合自己组织的配置管理工具...
  • Java的常用开发工具

    万次阅读 多人点赞 2018-01-27 15:05:14
    Java开发人员的常用工具 java常用的开发工具。都说工欲善其事必先利其器,要想学好java这门语言,选择一款好用顺手的开发工具是必不可少的。另外面试java工作时开发工具的使用也是一个重要的考核点。 要想全面...
  • 语音标注工具介绍

    万次阅读 2019-05-20 10:25:45
    人工智能业内普遍认为,语音将成为下一个重要的技术平台,近年来随着人工智能理论与技术的迅猛发展,语音识别(ASR)、语音合成(TTS)技术在不断突破。虽然理论技术取得了长足进步,但是在实际应用过程中仍绕不开...
  • 测试理论

    万次阅读 2017-04-04 10:31:58
     (3) 软件开发人员应该擅长寻找 可能的风险 ,准确地 分析风险 ,否则将会带来更大的风险  一个阶段首先是确定该阶段的目标,完成这些目标的选择方案及其约束条件,然后从风险角度分析方案的开发策略,努力...
  • • MATLAB有三十多个工具箱大致可分为两类:功能型工具箱和领域型工具箱.$ B; `: L2 v, Q/ B4 Z" o  功能型工具箱主要用来扩充MATLAB的符号计算功能、图形建模仿真功能、文字处理功能以及与硬件实时交互功能,能...
  • 【最全】软件测试基础理论选择题(含答案)

    万次阅读 多人点赞 2020-03-05 19:17:40
    D 48、下列哪种不属于兼容性测试的范围( ) A、软件在不同操作系统环境下运行的表现 B、软件在不同类型的数据库环境下进行数据交换的表现 C、软件在不同类型的人员使用时的运行表现 D、软件在不同类型硬件配置环境...
  • 自动化测试理论

    千次阅读 2018-10-11 10:38:58
    毕竟一个项目引入自动化,需要测试人员熟悉这个工具,而且有很多时候不是一个工具就能解决。其次自动化执行的内容也是需要测试人员去编写和考量的,这个过程需要时间。最后就是对自动测试执行后的结果分析,也是需要...
  • 现代控制理论(机器人方向)习题与实践补充资料和复习说明(2019版) 现代控制理论正确打开方式是怎样的? 机器人/控制/学习/人工智能(OpenAI)课程已经接近尾声(2学分-32学时),现代控制系统理论内容分为: ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 59,227
精华内容 23,690
关键字:

人员配置理论工具