敏捷开发

敏捷开发(Agile development)描述了一套软件开发的原则,通过自组织跨职能团队的协作努力,使客户需求和解决方案得以高效发展。它倡导适应性规划,进化型发展,早期可交付和持续不断改进,并鼓励对变化做出快速灵活的积极反应。这些原则支持许多软件开发方法的定义和持续演进。

敏捷开发核心价值观

  • 以人为本,个体和互动高于流程和工具。
  • 目标导向,可有效工作的软件高于详尽的文档。
  • 客户为先,客户合作高于合同谈判。
  • 拥抱变化,响应变化高于遵循计划。

也就是说敏捷开发更重视位于“高于”左边项目的价值。

敏捷开发的团队说:“我们一直在实践中探寻更好的软件开发方法,身体力行的同时也帮助他人。”

敏捷宣言基于十二个原则

  • 我们最重要的目标,是通过持续不断地及早交付有价值的软件使客户满意。
  • 欣然面对需求变化,即使在开发后期也一样。为了客户的竞争优势,敏捷过程掌控变化。
  • 经常地交付可工作的软件,相隔几星期或一两个月,倾向于采取较短的周期。
  • 业务人员和开发人员必须相互合作,项目中的每一天都不例外。
  • 激发个体的斗志,以他们为核心搭建项目。提供所需的环境和支援,辅以信任,从而达成目标。
  • 不论团队内外,传递信息效果最好效率也最高的方式是面对面的交谈
  • 可工作的软件是进度的首要度量标准。
  • 敏捷过程倡导可持续开发。责任人、开发人员和用户要能够共同维持其步调稳定延续。
  • 坚持不懈地追求技术卓越和良好设计,敏捷能力由此增强。
  • 以简洁为本,它是极力减少不必要工作量的艺术。
  • 最好的架构、需求和设计出自自组织团队。
  • 团队定期地反思如何能提高成效,并依此调整自身的举止表现。


Agile development

Read More

分享(#share)

Apache Hive数据仓库

Apache Hive是Apache软件基金会志愿者开发的一个开源项目。以前,它是Apache®Hadoop®的子项目,但现在已经毕业,成为一个独立的顶级项目。

Apache Hive™是一个数据仓库软件。它使用SQL便于读取,写入和管理驻留在分布式存储系统中的大型数据集。它的结构可以投影到已经存储的数据上,而且提供命令行工具和JDBC驱动程序以便用户可以连接到Hive上。

Hive基于Apache Hadoop™构建,提供以下功能:

  • 可使用SQL访问数据的工具,来实现数据仓库任务,如提取/转换/加载(ETL),报告和数据分析。
  • 可以兼容各种数据格式。
  • 访问直接存储在Apache HDFS™或其他数据存储系统(如Apache HBase™)中的文件。
  • 通过Apache Tez™,Apache Spark™或MapReduce查询执行。
  • 使用HPL-SQL的过程语言。
  • 通过Hive LLAP,Apache YARN和Apache Slider进行Sub-second级的查询检索。


hadoop hive

Read More

分享(#share)

汇编语言

汇编语言[assembly (or assembler) language]通常缩写为asm,是用于计算机或其他可编程设备的低级编程语言,语言和架构的机器码指令之间存在非常强的(通常一对一)对应关系。每个汇编语言一般都是为特定的计算机体系结构服务的。相对而言,大多数高级编程语言通常可跨多个架构移植,当然它们需要解释或编译后才可以运行。汇编语言也可以称为机器符号语言。

汇编语言通过汇编器将实用程序转换为可执行机器代码,转换过程称之为汇编或源代码汇编。根据运行汇编程序的步骤计算确定汇编程序装载的时间。

汇编语言使用助记符来表示每个低级机器指令或操作指令,通常还会有结构寄存器,标志等。许多程序操作需要一个或多个操作指令来形成完整的操作,并且大多数汇编器可以获取并通过数字和命名的表达式常量以及寄存器和标签来进行操作,使程序员免于冗长的重复计算。根据不同的架构,汇编语言还可以使用偏移或其他数据以及固定地址来组合用于特定指令或寻址模式。许多汇编器提供了额外的机制来促进程序开发,控制汇编过程和进行辅助的调试。


Assembly language

Read More

分享(#share)

Caffe 深度学习框架

Caffe是一个清晰、高效、模块化深度学习框架。其作者是博士毕业于加州大学伯克利分校(UC Berkeley)的贾扬清(Yangqing Jia)创建的,Caffe是根据 BSD 2-Clause许可证发布的。

Caffe项目的指导原则:

  • 清晰的表达,将模型和优化定义为文本而不是代码。
  • 高性能,对于研究和工业级应用来说,速度对于最先进的模型和海量数据至关重要。
  • 通过模块化来完成新任务和设置所需要的灵活性和扩展性。
  • 保持很强的开放性,科学和应用进展都通过通用代码和参考模型来实现重现。
  • 通过社区进行学术研究,初创原型和工业级应用都通过在BSD-2项目中进行讨论和开发并最终共享。

Caffe是纯粹的C++/CUDA架构,支持命令行、Python和MATLAB接口;可以在CPU和GPU直接无缝切换。


Caffe

Read More

分享(#share)

Spring 框架

Spring Framework是由Rod Johnson创建的一个轻量级的开源框架,它的目的是帮助开发团队构建简单,可移植,快速和灵活的基于JVM的系统和应用程序。

致力于提供构建企业级应用程序的一站式解决方案。Spring是模块化的,可以根据自己的需要进行组合,可以使用IoC容器,也可以只使用Hibernate集成代码或JDBC抽象层。

Spring框架支持声明式事务管理,通过RMI或Web服务远程访问业务逻辑,以及持久的存储数据。它提供了一个全功能的MVC框架,并能够将AOP透明地集成到正在开发的软件中。

Spring被设计为非侵入式的,这意味着逻辑代码通常不会对框架本身产生依赖。在集成过程中(如数据访问层),对数据访问技术和Spring库的将存在一些依赖关系。但是,可以很容易的将这些依赖关系与其余的代码隔离开。


Spring

Read More

分享(#share)

Undertow 简介

Undertow是一个用java编写的、灵活的、高性能的Web服务器,提供基于NIO的阻塞和非阻塞API。

Undertow的架构是组合式的,可以通过组合各种小型的目的单一的处理程序来构建Web服务器。所以可以很灵活地的选择完整的Java EE servlet 3.1容器或初级非阻塞程序处理。

Undertow的设计是可以完全可嵌入的,具有简单易用的编译接口。Undertow的生命周期完全由嵌入的应用程序控制。

Undertow是JBoss赞助的一个Web服务器,是Wildfly应用程序服务器中的默认Web服务器。


Undertow

Read More

分享(#share)

Java开源服务器WildFly

WildFly是一个灵活,轻量级,用来托管应用程序,为构建应用程序提供帮助的应用服务器。前身JBoss是一个基于JavaEE的开源的应用服务器,遵循LGPL许可,可以在任何商业应用中免费使用。2006年,JBoss被Redhat公司收购,后将JBoss Application Server(JBoss AS)正式更名为WildFly,目前的最新版本是WildFly 10。

主要特点:

1.速度快,网络性能强,号称可以扩展到超过100万链接。

2.轻量级,内存优化管理,基于最小堆分配而开发的运行时服务,可以在小型设备上运行。

3.可定制,通过配置项来确定采用哪些子系统的功能,配备了强大统一的访问方式如CLI、WEB管理平台、API接口等。

4.支持范围广,采用最新JavaEE7的标准和RestFul的访问标准,不仅支持容错、集群、会话复制、Web代理等基本功能服务,还提供异步、非阻塞API。

5.模块化,采用类加载提供应用程序隔离,确保只和应用程序相关的JAR保持链接。

6.提供集成测试模型,任何用例都可以测试。


WildFly 10

Read More

分享(#share)

常用开发工具介绍(五) IntelliJ IDEA

IntelliJ IDEA

IntelliJ IDEA 是业界公认最好的Java集成开发环境之一。它来自于捷克一家软件开发公司JetBrains,这家公司的主要产品是一些IDE或者相关的工具如PHPStorm、WebStorm、PyCharm等,当然最出名的是IntelliJ IDEA。IntelliJ IDEA是跨平台的,可以适用于Windows,OS X和Linux。

IntelliJ IDEA免费版支持Java,Kotlin,Groovy,Scala;Git,SVN,Mercurial, CVS;Maven,Gradle,SBT;Android。

企业版在免费版的基础上更进一步支持Detecting Duplicates;Perforce,ClearCase,TFS;JavaScript,TypeScript;PhoneGap,Cordova,Ionic;HTML/CSS,AngularJS,React,Node.js;Java EE,JBoss,Spring,GWT,Vaadin,Play,Grails,Other Frameworks;Database Tools,SQL。


IntelliJ IDEA

Read More

分享(#share)

常见数据分析方法

数据分析

数据分析是为了提取有用信息并形成一定的结论,而对收集来的数据通过一定的统计分析方法进行分析的过程。

数据分析的数学基础在20世纪初就已确立,到计算机的出现后,计算能力的飞速发展使得数据分析也得到了蓬勃的发展。


数据分析方法

Read More

分享(#share)

Elasticsearch 简介

Elasticsearch是一个高度可扩展的开源全文搜索和分析引擎。它允许您快速和近实时地存储,搜索和分析大量数据。它通常用为具有复杂搜索功能和要求的应用程序提供基础引擎/技术支持。

ElasticSearch基于Lucene的搜索服务器,提供RESTful web接口,它是用Java开发的。

基本概念

Elasticsearch有几个核心的基本概念。我们来简单的了解一下:

  • 近实时(NRT),Elasticsearch是一个接近实时的搜索平台。这意味着从索引文档到它可搜索的时间有一个轻微的延迟(通常为1秒)。

  • Cluster,集群是一个或多个节点(服务器)的集合,它们一起保存完整的数据,并在所有节点上提供联合索引和搜索功能。集群由唯一名称标识,默认情况下为“elasticsearch”。此名称很重要,因为如果节点设置为通过其名称加入集群,则节点只能是集群的一部分。

    • 确保您不要在不同的环境中重复使用相同的集群名称,否则您最终可能会加入错误的集群。例如,您可以对开发,暂存和生产集群使用logging-dev,logging-stage和logging-prod。
    • 注意,有一个集群只有一个节点是有效的和完美的。此外,您可能还有多个独立的集群,每个集群都有自己唯一的集群名称。


ElasticSearch

Read More

分享(#share)