2017,技术年度总结篇

  今天是2018年的第九天,2017年可以说是IT技术突飞猛进的一年,但今天我想写一写我接触到的技术、工具的总结。


       我是做java开发的,在2017年里我接触到很多对我来说是很有收获的一年,在2017年我接触到了技术:gradle、restful api、spring boot、redis,工具:git、SourceTree、Postman、WinSCP、SecureCRT、JIRA、阿里巴巴java开发约束插件。接下来分别说说我接触到东西,说的不对欢迎指正。



Gradle 构建工具


Ant和Maven共享在Java市场上相当大的成功。ANT是在2000年发布了第一个版本的工具,它是基于程序编程思想的发展。 后来,人们在 Apache-Ivy的帮助下,网络接受插件和依赖管理的能力有所提升。但主要缺点是使用XML作为一种格式来写构建脚本。XML是分层的,不利于程序的编程,而且当XML文件变大以后变得难以管理。

Maven在2004年推出的,它比ANT有一个很大的改进。它改变了结构并且继续使用XML编写生成规范。Maven的依赖约定和能够通过网络下载依赖关系。Maven的主要好处是它的生命周期。虽然接连的多个项目生命周期相同,这是以灵活性为代价的。 Maven也面临着依赖管理的一些问题。它不会在同一库版本之间处理好矛盾,复杂的定制构建脚本实际上Maven比ANT更难写。

最后,Gradle于2012年发布,带来了一些更高效的特点。

Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化建构工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于XML的各种繁琐配置。 面向Java应用为主。当前其支持的语言限于Java、Groovy和Scala,计划未来将支持更多的语言。

下面是一些Gradle的功能

  • 按约定声明构建和建设;

  • 强大的支持多工程的构建;

  • 强大的依赖管理(基于Apache Ivy),提供最大的便利去构建工程;

  • 全力支持已有的 Maven 或者Ivy仓库基础建设;

  • 支持传递性依赖管理,在不需要远程仓库和pom.xml和ivy配置文件的前提下;

  • 基于groovy脚本构建,其build脚本使用groovy语言编写;

  • 具有广泛的领域模型支持构建;

  • 深度 API;

  • 易迁移;

  • 自由和开放源码,Gradle是一个开源项目,基于 ASL 许可。

为什么使用Groovy?

完整的Gradle API是使用Groovy语言设计的。这是基于XML内部 DSL 的优点。Gradle是其核心的通用构建工具; 它的主要焦点是Java项目。在这些项目中,团队成员要熟悉Java,这是为了更好的构建透明,给所有团队成员的项目。

类似于 Python,Groovy或Ruby语言是最好的构建框架。为什么Groovy被选中?这是因为它为使用Java的人提供了迄今为止最大的透明度。Groovy的基本语法与Java是一样的。

RESTful API 架构
什么是REST?

可以总结为一句话:REST是所有Web应用都应该遵守的架构设计指导原则。 
Representational State Transfer,翻译是”表现层状态转化”。 
面向资源是REST最明显的特征,对于同一个资源的一组不同的操作。资源是服务器上一个可命名的抽象概念,资源是以名词为核心来组织的,首先关注的是名词。REST要求,必须通过统一的接口来对资源执行各种操作。对于每个资源只能执行一组有限的操作。(7个HTTP方法:GET/POST/PUT/DELETE/PATCH/HEAD/OPTIONS)

什么是RESTful API?

符合REST架构设计的API。

总结

符合REST设计标准的API,即RESTful API。REST架构设计,遵循的各项标准和准则,就是HTTP协议的表现,换句话说,HTTP协议就是属于REST架构的设计模式。比如,无状态,请求-响应。。。

参考: 
理解本身的REST架构风格 
http://www.infoq.com/cn/articles/understanding-restful-style/

理解RESTful架构 
http://www.ruanyifeng.com/blog/2011/09/restful.html

Restful API设计指南 
http://www.ruanyifeng.com/blog/2014/05/restful_api.html

Spring Boot框架


Spring Team在现有Spring框架的基础上发布了一个创新的主要框架:Spring Boot。这是一个来自Pivotal Team(Spring Team)的全新项目。Spring Boot是他们最新的创新,能够跟上不断变化的技术需求。 开发Spring Boot的主要动机是简化配置和部署spring应用程序的过程。

Spring Boot为开发提供一个具有最小功能的Spring应用程序,并提供了一个新的范例。使用Spring Boot将能够以更灵活的方式开发Spring应用程序,并且能够通过最小(或可能没有)配置Spring来专注于解决应用程序的功能需求。它使用全新的开发模型,通过避免一些繁琐的开发步骤和样板代码和配置,使Java开发非常容易。

Spring Boot可以轻松创建单独的,生产级的基于Spring的应用程序,我们只管“运行”。查看Spring平台和第三方库。大多数Spring Boot应用程序只需要很少的Spring配置。

Spring Boot的主要特点

  • 创建独立的Spring应用程序

  • 直接嵌入Tomcat,Jetty或Undertow(无需部署WAR文件)

  • 提供“初始”的POM文件内容,以简化Maven配置

  • 尽可能时自动配置Spring

  • 提供生产就绪的功能,如指标,健康检查和外部化配置

  • 绝对无代码生成,也不需要XML配置

Spring Boot核心和限制

Spring Boot不是编写应用程序的框架,它可以帮助我们以最少的配置或零配置开发和构建,打包和部署应用程序。

它不是应用程序服务器。但是它是提供应用程序服务器功能的嵌入式servlet容器,而不是Spring Boot本身。
类似地,Spring Boot不实现任何企业Java规范,例如JPA或JMS。 例如,Spring Boot不实现JPA,但它通过为JPA实现(例如Hibernate)自动配置适当的bean来支持JPA。
最后,Spring Boot不使用任何形式的代码生成来完成它的功能。它是利用Spring 4的条件配置功能,以及Maven和Gradle提供的传递依赖关系解析,以在Spring应用程序上下文中自动配置bean。

简而言之,Spring Boot它的核心就是Spring。

Spring Boot优点和缺点

  • 使用Java或Groovy开发基于Spring的应用程序非常容易。

  • 它减少了大量的开发时间并提高了生产力。

  • 它避免了编写大量的样板代码,注释和XML配置。

  • Spring Boot应用程序与其Spring生态系统(如Spring JDBC,Spring ORM,Spring Data,Spring Security等)集成非常容易。

  • 它遵循“自用默认配置”方法,以减少开发工作量。

  • 它提供嵌入式HTTP服务器,如Tomcat,Jetty等,以开发和测试Web应用程序非常容易。

  • 它提供CLI(命令行界面)工具从命令提示符,非常容易和快速地开发和测试Spring Boot(Java或Groovy)应用程序。

  • 它提供了许多插件来开发和测试Spring启动应用程序非常容易使用构建工具,如Maven和Gradle。

  • 它提供了许多插件,以便与嵌入式和内存数据库工作非常容易。

Spring Boot的限制

将现有或传统的Spring Framework项目转换为Spring Boot应用程序是一个非常困难和耗时的过程。它仅适用于全新Spring项目。

未来的Spring项目不会有任何XML配置作为它的一部分,一切都将由项目Spring Boot处理。

官方参考指南包括所有功能的详细说明,以及常见用法的详细说明。

Spring框架结构图如下所示 -

可以使用Spring Boot创建java -jar或更多传统war部署来启动Java应用程序。还提供了一个运行“spring scripts”的命令行工具。

  Redis 数据存储系统

Redis是一个开源,高级的键值存储和一个适用的解决方案,用于构建高性能,可扩展的Web应用程序。

Redis有三个主要特点,使它优越于其它键值数据存储系统 -

  • Redis将其数据库完全保存在内存中,仅使用磁盘进行持久化。

  • 与其它键值数据存储相比,Redis有一组相对丰富的数据类型。

  • Redis可以将数据复制到任意数量的从机中。

Redis的优点

以下是Redis的一些优点。

  • 异常快 - Redis非常快,每秒可执行大约110000次的设置(SET)操作,每秒大约可执行81000次的读取/获取(GET)操作。

  • 支持丰富的数据类型 - Redis支持开发人员常用的大多数数据类型,例如列表,集合,排序集和散列等等。这使得Redis很容易被用来解决各种问题,因为我们知道哪些问题可以更好使用地哪些数据类型来处理解决。

  • 操作具有原子性 - 所有Redis操作都是原子操作,这确保如果两个客户端并发访问,Redis服务器能接收更新的值。

  • 多实用工具 - Redis是一个多实用工具,可用于多种用例,如:缓存,消息队列(Redis本地支持发布/订阅),应用程序中的任何短期数据,例如,web应用程序中的会话,网页命中计数等。

Redis与其他键值存储系统

  • Redis是键值数据库系统的不同进化路线,它的值可以包含更复杂的数据类型,可在这些数据类型上定义原子操作。

  • Redis是一个内存数据库,但在磁盘数据库上是持久的,因此它代表了一个不同的权衡,在这种情况下,在不能大于存储器(内存)的数据集的限制下实现非常高的写和读速度。

  • 内存数据库的另一个优点是,它与磁盘上的相同数据结构相比,复杂数据结构在内存中存储表示更容易操作。 因此,Redis可以做很少的内部复杂性。

Git 分布式版本控制系统

        Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。[1]  Git的读音为/gɪt/。

Git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。[2]  Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

        Torvalds 开始着手开发 Git 是为了作为一种过渡方案来替代 BitKeeper,后者之前一直是 Linux 内核开发人员在全球使用的主要源代码工具。开放源码社区中的有些人觉得BitKeeper 的许可证并不适合开放源码社区的工作,因此 Torvalds 决定着手研究许可证更为灵活的版本控制系统。尽管最初 Git 的开发是为了辅助 Linux 内核开发的过程,但是我们已经发现在很多其他自由软件项目中也使用了 Git。例如 很多 Freedesktop 的项目迁移到了 Git 上。

 


SourceTree 工具

        SourceTree 是 Windows 和Mac OS X 下免费的 Git 和 Hg 客户端管理工具,同时也是Mercurial和Subversion版本控制系统工具。支持创建、克隆、提交、push、pull 和合并等操作。

SourceTree拥有一个精美简洁的界面,大大简化了开发者与代码库之间的Git操作方式,这对于那些不熟悉Git命令的开发者来说非常实用。

        SourceTree拥有完整的Git功能:

  • 通过一个简单的用户界面即可使用所有的Git命令

  • 通过一次单击,即可管理所有的Git库,无论是托管的还是本地的

  • 通过一次单击,即可进行commit、push、pull、merge等操作

  • 一些先进的功能,如补丁处理、rebase、shelve、cherry picking等

  • 可以连接到你托管在Bitbucket、Stash、Microsoft TFS或GitHub中的代码库

Postman 插件

Postman是google开发的一款功能强大的网页调试与发送网页HTTP请求,并能运行测试用例的的Chrome插件。其主要功能包括:

  • 模拟各种HTTP requests

从常用的 GET、POST 到 RESTful 的 PUT 、 DELETE …等等。 甚至还可以发送文件、送出额外的 header。

  • Collection 功能(测试集合)

Collection 是 requests的集合,在做完一個测试的時候, 你可以把這次的 request 存到特定的 Collection 里面,如此一來,下次要做同样的测试时,就不需要重新输入。而且一个collection可以包含多条request,如果我们把一个request当成一个test case,那collection就可以看成是一个test suite。通过collection的归类,我们可以良好的分类测试软件所提供的API.而且 Collection 还可以 Import 或是 Share 出來,让团队里面的所有人共享你建立起來的 Collection。

  • 人性化的Response整理

一般在用其他工具來测试的時候,response的内容通常都是纯文字的 raw, 但如果是 JSON ,就是塞成一整行的 JSON。这会造成阅读的障碍 ,而 Postman 可以针对response内容的格式自动美化。 JSON、 XML 或是 HTML 都會整理成我们可以阅读的格式

  • 内置测试脚本语言

Postman支持编写测试脚本,可以快速的检查request的结果,并返回测试结果

  • 设定变量与环境

Postman 可以自由 设定变量与Environment,一般我们在编辑request,校验response的时候,总会需要重复输入某些字符,比如url,postman允许我们设定变量来保存这些值。并且把变量保存在不同的环境中。比如,我們可能会有多种环境, development 、 staging 或 local, 而这几种环境中的 request URL 也各不相同,但我们可以在不同的环境中设定同样的变量,只是变量的值不一样,这样我们就不用修改我们的测试脚本,而测试不同的环境。

WinSCP 工具

        WinSCP是一个Windows环境下使用SSH的开源图形化SFTP客户端。同时支持SCP协议。它的主要功能就是在本地与远程计算机间安全的复制文件。.winscp也可以链接其他系统,比如linux系统.

  SecureCRT 工具

        SecureCRT是最常用的终端仿真程序,简单的说就是Windows下登录UNIX或Liunx服务器主机的软件。

JIRA 缺陷跟踪管理系统

        跟踪并管理在项目开发和维护过程中出现的问题(如:缺陷、新特性、任务、改进等)是项目管理很重要的任务,但是很少有团队能做的很好。 JIRA作为一个专业的问题跟踪系统可以帮助您把缺陷管理起来,让跟踪和管理在项目中发现的问题变得简单,而且充分利用JIRA的灵活配置和扩展特性,可以将JIRA作为一个项目管理系统或者IT支持系统。

JIRA特性:

1.    管理缺陷,新特性,任务,改进或者其他任何问题

2.    人性化使用的用户界面

3.    灵活的工作流定制

4.    全文搜索和强大的过滤器

5.    企业级的权限和安全控制

6.    非常灵活的邮件通知配置

7.    可以创建子任务

8.    方便的扩展及与其他系统集成:包括email、LDAP和源码控制工具等

9.    丰富的插件库、

10. 项目类别和组件/模块管理

11. 可以在几乎所有硬件,操作系统和数据库平台运行


JIRA角色:

 JIRA作为一个缺陷跟踪管理系统,可以被企业管理人员,项目管理人员,开发人员,分析人员,测试人员和其他人员所广泛使用。

    1  管理人员:

根据JIRA系统提供的数据,更加准确地了解项目的开发质量和状态,以及整个团队的工作效率

    2  项目管理者

可以针对登记进JIRA系统中问题,进行评估,分配缺陷;还可以通过JIRA系统的统计报告了解项目进展情况以及团队的工作量,工作效率等信息。

    3  开发人员

在JIRA系统中查看分配给自己的问题,及时进行处理,填写处理情况并提交工作量记录。

    4  测试人员

根据测试情况,在JIRA系统中及时快速的记录问题并对开发人员处理后的问题进行验证和跟踪。

 

阿里巴巴java开发约束插件

        我们在开发中肯定会有代码的不规范的问题,《阿里巴巴java开发约束插件》更好的帮助我们在开发中保证了代码的质量和规范。

插件下载地址:https://github.com/alibaba/p3c

以上的这些就是我在2017年所接触的到技术和工具,作为年度总结分享出来,希望这些能帮上此时此刻在观看这篇的文章的童鞋们。

原文来至于我的微信公众号:http://mp.weixin.qq.com/s/pfQffxqX_TLGVth9iNG4hA



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值