groovy

阿里巴巴Java 程序员常用的 10 款开源工具!用好了,事半功倍!

陌路散爱 提交于 2020-08-15 15:23:19
本文主要介绍阿里巴巴Java程序员常用的一些基本和高级工具。如果你是一位经验丰富的Java开发人员,你可能对这些工具很熟悉,但如果不是,现在就是是开始学习这些工具的好时机。 Java世界中存在许多工具,从Eclipse,NetBeans和IntelliJ IDEA等著名的IDE开始到Java开发人员应该知道的JVM分析和监视工具,如JConsole,VisualVM,Eclipse Memory Analyzer等。 尽管如此,在本文中,我将重点介绍适用于各种Java开发人员的通用工具,例如核心Java 开发人员和Web开发人员。 1. JIRA Atlassian的JIRA是当前敏捷开发领域最重要的工具之一。它用于错误跟踪,问题跟踪和项目管理。如果你遵循敏捷开发方法,例如Sprint和Scrum,那么你必须了解JIRA。它允许您创建Spring循环并跟踪软件开发的进度。 JIRA 是目前比较流行的基于Java架构的管理系统,由于Atlassian公 司对很多开源项目实行免费提供缺陷跟踪服务,因此在开源领域,其认知度比其他的产品要高得多,而且易用性也好一些。 2. Git Git是Java程序员的另一个必备工具,它是一个免费的开源分布式版本控制系统,旨在快速高效地处理从很小到非常大的项目版本管理。Git易于学习,占用空间小,具有超强的性能。 最初 Git 的开发是为了辅助

关于Java8的精心总结

半世苍凉 提交于 2020-08-14 22:33:49
前言 ​ 最近公司里比较新的项目里面,看到了很多关于java8新特性的用法,由于之前自己对java8的新特性不是很了解也没有去做深入研究,所以最近就系统的去学习了一下,然后总结了一篇文章第一时间和大家分享一下。 ​ ​ 在了解一项新技术之前,我们需要了解我们为什么要去学习它以及它的优点,以下是我总结的: Java8(又称jdk1.8)是java语言开发的一个主要版本,Java8是oracal公司于2014年3月发布,可以看成是自java5以来最具有革命性的版本。 **新特性的优点:**速度更快、代码更少、便于并行、最大化减少空指针异常 函数式编程提供了一种更高层次的抽象化 排序: List<RoleEntity> rolesListSort = rolesList.stream().sorted(Comparator.comparing(RoleEntity::getCreateDate)).collect(Collectors.toList()); Consumer是一个函数式接口 参数是Consumer类型的,Consumer里面的泛型表示泛型的类型要么是Integer,要么是Integer的父类,super表示它及它上面的,也就是父类。 下面这段代码是在Iterable接口里面的默认方法,jdk8之后的新方法,默认方法(默认方法的引入很大程度上是为了保证向后兼容)

Lambda表达式用法大比较: Scala和Java 8

怎甘沉沦 提交于 2020-08-14 20:12:56
最近几年Lambda表达式风靡于编程界. 很多现代编程语言都把它作为函数式编程的基本组成部分. 基于JVM的编程语言如Scala,Groovy还有Clojure把它们作为关键部分集成在语言中.现在Java8也加入了它们的行列. 有趣的是,对于JVM来说,Lambda表达式是完全不可见的,并没有匿名函数和Lamada表达式的概念,它只知道字节码是严格面向对象规范的.它取决于语言的作者和它的编译器在规范限制内创造出更新,更高级的语言元素. 我们第一次接触它是在我们要给Takipi添加Scala支持的时候, 我们不得不深入研究Scala的编译器.伴随着JAVA8的来临,我认为探究Scala和java编译器是如何实现Lambda表达式是非常有趣的事情.结果也是相当出人意料. 接下来,我展示一个简单的Lambda表达式,用于将字符串集合转化成字符串自身长度的集合。 Java的写法 – 1List names = Arrays.asList("1", "2", "3"); 2Stream lengths = names.stream().map(name -> name.length()); Scala的写法 – 1.val names = List("1", "2", "3") 2.val lengths = names.map(name =>name.length) 表面上看起来非常简单

Java中你必须知道的基础知识点

两盒软妹~` 提交于 2020-08-14 03:25:53
本篇博客主要记录Java中面向对象的概念知识和一些基础Java类的使用。属于自己平时学习过程中知识点的“拼凑”,方便自己回顾总结。 1. 什么是面向对象 面向对象是一种优秀的软件设计思想,是相对于 面向过程、面向切面 等设计思想的一种软件设计理念。它的核心思想是运用更加贴近人类思维的方式去设计软件,将软件中的各个组件抽象成相应的类,再将这些类组装成我们所需的软件系统。这里举个例子,假如用面向对象的方式设计一个电脑,我们会设计CPU类、硬盘类、显示器类、内存类等等,然后将这些类组合在一起设计成Computer类。 面向过程的思想在解决问题时会将问题分解成一个个小的函数,然后按照某种顺序去执行这些方法,当这些方法执行完毕,问题也就解决了。 2. 三大基本特征和五项基本原则 面向对象的三个基本特征是: 封装、继承和多态 。正是基于这些特征,面向对象的开发语言才能拥有更好的可重用性、扩展性和维护性。 封装:将对象的实现细节隐藏起来,然后通过一些公共的方法向外部提供该对象的功能; 继承:继承是软件复用的一种重要手段,子类继承父类之后将直接获得父类的属性和方法; 多态:对象可以赋给父类对象和接口,但是运行时依然表现出子类或实现类的特征。 面向对象的 五大原则 如下: 单一职责原则(SRP):一个类专注于实现一个功能; 开闭原则(OCP):对象或实体应该对扩展开放,对修改封闭; 里氏替换原则

为什么静态变量被认为是邪恶的?

生来就可爱ヽ(ⅴ<●) 提交于 2020-08-12 13:37:10
问题: I am a Java programmer who is new to the corporate world. 我是一位Java程序员,对公司领域来说是新手。 Recently I've developed an application using Groovy and Java. 最近,我已经使用 Groovy 和Java开发了一个应用程序。 All through the code I wrote used quite a good number of statics. 我编写的所有代码都使用了大量的静态变量。 I was asked by the senior technical lot to cut down on the number of statics used. 高级技术人员要求我减少使用的静电数量。 I've googled about the same, and I find that many programmers are fairly against using static variables. 我已经在谷歌上搜索了相同的内容,并且发现许多程序员都反对使用静态变量。 I find static variables more convenient to use. 我发现静态变量更易于使用。 And I presume that they are

记录 gradle 的 maven-publish 配置

心已入冬 提交于 2020-08-11 18:10:35
日常工作中我们用gradle构建项目时需要将构建结果上传到maven私服,gradle提供了maven-publish插件来帮助我们上传。maven-publish插件的功能简单而强大,参考 这里 即可。 但是文章中没有提供用户密码的配置。 虽然可以在repositories.maven.redentials 中指定 username 以及 password: publishing { repositories { maven { credentials { username xxx password xxx } } } } 但这样一来我们的代码上传到代码仓库时就暴露了用户密码 。。 下面直接给出将用户密码写在环境变量的解决方案: plugins { id 'maven-publish' } publishing { publications { maven(MavenPublication) { from components.java artifact sourceesJar { // ... } pom { name = xxx description = xxx url = xxx developers { developer { id = 'landas' name = 'landas' email = 'landas@qq.com' } } scm { url = ..

Eclipse Gradle 构建多模块项目

醉酒当歌 提交于 2020-08-11 09:00:01
注意:   1.Eclipse不如IDEA智能,Eclipse建立的Gradle Project项目在目录级别上是同级的;   2.user-web模块如果要引用user-service模块,直接引用是找不到的,找到上一级目录引用,示例代码 project(':user-service').projectDir = new File(settingsDir, '../user-service');   3.user-parent模块中subprojects中闭包是用个对user-parent中所有include进来的子模块生效的;   4.学习Gradle之间适当了解Groovy语言,并且多看Gradle官方文档;   5.这里无法传源码,要源码加群。 来源: oschina 链接: https://my.oschina.net/u/4415385/blog/4299633

java.lang.NoClassDefFoundError: Could not initialize class org.codehaus.groovy.vmplugin.v7.Ja【已解决】

我与影子孤独终老i 提交于 2020-08-11 05:21:48
Mac 问题 Starting a Gradle Daemon, 1 incompatible Daemon could not be reused, use --status for details java.lang.NoClassDefFoundError: Could not initialize class org.codehaus.groovy.vmplugin.v7.Java7 at org.codehaus.groovy.vmplugin.VMPluginFactory.<clinit>(VMPluginFactory.java:43) at org.codehaus.groovy.reflection.GroovyClassValueFactory.<clinit>(GroovyClassValueFactory.java:35) at org.codehaus.groovy.reflection.ClassInfo.<clinit>(ClassInfo.java:107) at org.codehaus.groovy.reflection.ReflectionCache.getCachedClass(ReflectionCache.java:95) at org.codehaus.groovy.reflection.ReflectionCache.<clinit

吹爆系列:深度探索 Gradle 自动化构建技术

孤人 提交于 2020-08-11 02:43:48
0 前言 从明面上看,Gradle 是一款强大的构建工具,而且许多文章也仅仅都把 Gradle 当做一款工具对待。但是,Gradle 不仅仅是一款强大的构建工具,它看起来更像是一个编程框架。Gradle 的组成可以细分为如下三个方面: 1)、groovy 核心语法:包括 groovy 基本语法、闭包、数据结构、面向对象等等。 2)、Android DSL(build scrpit block):Android 插件在 Gradle 所特有的东西,我们可以在不同的 build scrpit block 中去做不同的事情。 3)、Gradle API:包含 Project、Task、Setting 等等(本文重点)。 可以看到,Gradle 的语法是以 groovy 为基础的,而且,它还有自己独有的 API,所以我们可以把 Gradle 认作是一款编程框架,利用 Gradle 我们可以在编程中去实现项目构建过程中的所有需求。 需要注意的是,想要随心所欲地使用 Gradle,我们必须提前掌握好 groovy,如果对 groovy 还不是很熟悉的建议看看 《深入探索Gradle自动化构建技术(二、Groovy 筑基篇)》 一文。 https://juejin.im/post/5e97ac34f265da47aa3f6dca 需要注意的是,Groovy 是一门语言,而 DSL

jenkins pipeline基础语法与示例

青春壹個敷衍的年華 提交于 2020-08-11 00:53:52
一、Jenkins介绍 二、Jenkins Pipeline介绍 Jenkins Pipeline总体介绍 1.Pipeline 是Jenkins 2.X核心特性,帮助Jenkins实现从CI到CD与DevOps的转变 2.Pipeline 简而言之,就是一套运行于Jenkins上的工作流框架,将原本独立 运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂流 程编排与可视化。 什么是Jenkins Pipeline 1.Jenkins Pipeline是一组插件,让Jenkins可以实现持续交付管道的落地和实施。 2.持续交付管道(CD Pipeline)是将软件从版本控制阶段到交付给用户或客户的完 整过程的自动化表现。 3.软件的每一次更改(提交到源代码管理系统)都要经过一个复杂的过程才能被发布。 Pipeline提供了一组可扩展的工具,通过Pipeline Domain Specific Language (DSL) syntax可以达到Pipeline as Code的目的 Pipeline as Code:Jenkinsfile 存储在项目的源代码库 Why Pipeline? 本质上,Jenkins 是一个自动化引擎,它支持许多自动模式。 Pipeline向Jenkins中添加了一组强大的工具, 支持用例 简单的CI到全面的CD pipeline