自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Anthony_tester的博客

公众号:AnthonyTestDevHouse,探索从QA角色到开发角色的转换之路(Q群574103281)

  • 博客(1086)
  • 收藏
  • 关注

原创 Jenkins高级篇之Pipeline语法篇-5-Declarative Pipeline语法-post/stages/steps

上一篇学习了Agent的这个指令和相关参数的基本使用,基本上掌握了node这个可选参数就好。这一篇,来学习post和stages指令。1.post指令基本概述post部分定义将在Pipeline运行或阶段结束时运行的操作。一些条件后的块的内支持post:部分always,changed,failure,success,unstable,和aborted。这些块允许在Pipeline运行...

2018-10-22 20:49:15 16380 2

原创 Jenkins高级篇之Pipeline语法篇-4-Declarative Pipeline语法-agent

这篇开始跟着官网Pipeline文章来具体学习Pipeline语法知识。我们先从Declarative 模式开始,当然,以后我个人主推使用这个模式,前面已经说了原因。这里再说下Declarative的特点,Declarative Pipeline是Jenkins Pipeline 的一个相对较新的补充, 它在Pipeline子系统之上提出了一种更为简化和有意义的语法。我看到有人把Declarati...

2018-10-22 20:32:33 21156 3

原创 Jenkins高级篇之Pipeline语法篇-3-第一个Pipeline代码详细解释

        前面一篇,我用Jenkins支持的脚本输入框执行构建,还用了github上拉取代码下来进行构建项目。这篇,就来详细解释下每行代码的含义,还有就是复习一下第一篇提到的几个关键字,这样的基础中的基础知识。1.Declarative代码如下pipeline { agent any stages { stage('Build') { ...

2018-10-18 21:32:10 11502 1

原创 Jenkins高级篇之Pipeline语法篇-2-第一个Pipeline脚本练习

前面一篇,介绍了什么是Pipeline,和Pipeline的基本概念,和几个关键字的基本含义的介绍,真正的涉及到Pipeline的语法还没有开始介绍。这篇先来介绍第一个Pipeline代码,分别用两种模式来写,逐渐开始展开Pipeline的语法学习。1.前提条件准备1)准备一个Jenkins环境我个人有一个VPS,搭建了一个Jenkins,供大家参考。我这个系列的脚本涉及Pipelin...

2018-10-17 22:17:53 14288 7

原创 Jenkins高级篇之Pipeline语法篇-1-Pipeline基本介绍

这篇是Pipeline学习的Hello World篇,任何新知识开始学习都比较困难。耐心一点,坚持多看一些官网文档。概念积累多了,我们才能运用和尝试一些具体的实战练习。这篇主要介绍,Pipeline的基本概念,包括,什么是Pipeline, Pipeline脚本类型划分,为什么要选择Pipeline,以及Pipeline一些大的概念,细节的知识,我们后续文章会慢慢学习。 1. 官网文章...

2018-10-16 19:30:48 21988 6

原创 DevOps基础-6.2-提前结束:现在算不算一个DevOps工程师

本来继续翻译第六章节,第六章节主要介绍的是运维的理论和一些很有效的策略。但是,发现感觉这些也用处不大。就没有继续翻译的动力了。差不多25篇文章来介绍DevOps的文化和一些常识,术语,其中持续集成(CI)和持续交付(CD)显然就是DevOps的核心部分。DevOps这个话题很大,包含技术很广。不能简单的认为就是开发加上运维这两个技术。 我想,到了这里DevOps的基础部分应该够用,足够你来...

2018-10-16 14:43:34 1114 1

原创 Java多线程-47-多线程死锁

       本篇学习什么是多线程死锁,怎么避免线程死锁。这个问题,在面试了应该也经常被提到。关于,线程死锁,有这么一个故事。一个饭桌上,有丰盛的菜肴,圆桌围着几个哲学家,问题来了,每个哲学家只有一根筷子。假如必须得到两根筷子,才能享受菜肴。哲学家们都想从身边的人手里拿到另外一根筷子,结果是谁都说服不了谁,都没有拿到一双筷子,结果哲学家们都饿死了。这个拿不到一双筷子,在电脑里面的线程就是死锁问题。...

2018-10-11 22:02:36 600

原创 Java多线程-46-用实现runnable的方式实现火车票卖票

前面一篇,我们介绍了火车票卖票多线程的实现和安全问题,实现方式是写一个类来继承Thread类。前面我们介绍了实现多线程有两种方式,第一种是作为Thread类的子类,第二种是实现Runnable,这篇就来写一个实现Runnable的卖火车票的代码。package thread;public class Demo4_Ticket { public static void main(Str...

2018-10-09 23:45:08 1414 1

原创 Java多线程-45-多线程安全问题--火车票卖票

这篇通过火车票卖票来逐步演示多线程的安全问题,加入一共卖100张火车票,分成4个窗口卖。也就是,四个窗口就是4个线程,如何保证4个窗口卖票都正确。1.先实现4个窗口卖票的代码package thread;public class Demo3_Ticket { public static void main(String[] args) { //创建四个线程 new Tic...

2018-10-09 23:31:36 1883 1

原创 Java多线程-44-静态和非静态方法同步锁对象是什么

前面一篇,我们知道了synchronized关键字扩起来范围的代码块就可以实现同步,其实,在Java中,只需要在方法上加上synchronized关键字即可,就像加上static一样。本篇来看看加上synchronized关键字修饰的非静态和静态方法的同步锁对象是什么。1.非静态同步锁对象是this复制前面一篇代码,修改如下。package thread;public class...

2018-10-09 22:43:50 3332 4

原创 Java多线程-43-同步代码块

    这篇学习java多线程中的同步代码块知识点,先不上来就去解释什么是同步。我们来思考下,什么场景下需要同步?当多线程并发,同时执行多段代码,我们希望某一段代码的执行过程中,CPU不要切换到其他线程工作,等这个代码块执行完才去干其他线程的活,这个时候就需要同步。字面不好理解,下面看看一个具体代码例子。1.同步之前在IDE里面敲这些代码,观察运行结果。package thread;...

2018-10-07 12:24:49 691

原创 测试开发成长学习路线--如何做一个DevOps流水线上的开发测试

大家知道,测试开发或者开发测试范围很大,一个人的精力和你当前的项目经历,决定了你属于某一个领域的具体的测试开发的工作。在这里,我不纠结测试开发和开发测试有何不同,有一个叫法罢了。今天这里要讨论的是如何在DevOps流水线上做一个比较合格的测试开发工程师。实话讲,我只有三个月的DevOps环境下测试开发的工作经历,这篇文章,只是我个人角度的一个总结,主要告诉那些想做DevOps产品线下的测试开发的同...

2018-10-05 14:08:18 8699 4

原创 DevOps基础-6.1-可靠性工程:工程不应止步于部署

       这篇开始进入第六章,第一小节是可靠性工程。这是DevOps中的第三个主要练习区域。在工程中,可靠性描述了系统或组件在规定条件下在指定时间段内运行的能力。 在IT中,这包括可用性,性能,安全性以及允许您的服务实际向用户提供其功能的所有其他因素。        在任何一种管理良好的现代化基础设施中,基础设施造成的停电和生产问题越来越少见。一旦您通过最基本的系统自动化,可以毫不夸张地说...

2018-09-16 22:33:54 817

原创 DevOps基础-5.5-持续交付:你的CI工具链

欢迎回来。在这一篇文章我们将谈论工具。每个组织和团队的持续交付流水线(Pipeline)是不同的。管道的概念是一系列阶段(Stage),每个阶段都由特定工具支持。让我们看看持续交付的六个关键阶段以及与之相关的工具。关键领域是:版本控制,CI系统,构建,测试,您需要一个工件存储库和部署。       版本控制是我们提交代码更改的地方,可以查看所有更改的完整历史记录。它允许开发人员通过将每个更改视...

2018-09-16 22:15:14 1838

原创 DevOps基础-5.4-持续交付:DevOps中QA的角色

       到目前为止,介绍已经涵盖了持续集成和持续交付,但现在你可能想知道,“有什么收获?” CI/CD一切听起来都不错,部署速度更快,工作量更少。这真是太好了吗?嗯,确实好像没有问题,但是当你转向持续交付时,你必须做出一些根本性的转变。一个值得特别关注的领域是测试。对于本节的测试,我们将介绍七种不同类型的测试,这些测试通常在持续交付中实施。       1.让我们开始进行单元测试讨论。这...

2018-09-14 23:51:59 9040

原创 DevOps基础-5.3-持续交付:持续交付流水线

       在上一篇,我们讨论了持续交付流水线(英文是The continuous delivery pipeline)的第一阶段,即持续集成。在本篇文章中,我们将介绍其余的持续交付流程。在前面文章我把pipeline翻译成了管道,现在这里纠正一下,可能采用流水线翻译更好一些。什么是持续交付流水线呢?请看下面这个图。        PS:我的实际工作主要的任务就写CI和CD脚本,运行并进...

2018-09-10 20:51:21 3899

原创 DevOps基础-5.2-持续交付:持续集成实践

       在我们的上一篇文章中,我们讨论了三种不同程度的连续交付软件。我们讨论了持续集成,持续交付和持续部署。你希望将这些视为彼此之间的构建块。它们中的每一个都依赖于正确实施和采用的前一步骤(持续集成->持续部署->持续交付)。为了开始这个视频,让我们回到Jez和Dave的指导,让我们的软件始终保持工作。在本文,我们将介绍六种我们认为对于实现持续集成(Continuous Inte...

2018-09-09 22:46:20 1462

原创 DevOps基础-5.1-持续交付:小+快 = 更好

       这篇开始进入第五章的学习,第五章主要讲的就是Continuous Delivery,简称CD,翻译就是持续交付。在DevOps中CI和CD是两个经常被提起的话题,在你以后工作中,经常要遇到这两个单词。第五章,你就明白什么是CI 什么是CD。       你无法绕过DevOps,如果没有关于持续集成和持续交付的大量讨论。在这一篇文章,我们将介绍五大优势。在旧的交付软件方式中,在开发...

2018-09-09 22:26:55 1121

原创 DevOps基础-4.4-基础架构自动化:基础架构领域的工具链

       在这篇文章,我们将介绍基础设施代码的工具链。作为代码工具的许多基础设施取决于您使用的是什么类型的后端,无论是您自己的数据中心中的裸机,还是像AWS这样的服务的云基础架构。或其他东西,如平台即服务,或使用基于容器的方法。许多人正在使用他们的工作负载迁移到云端。在亚马逊的云中,他们的云形成模板允许您以JSON格式指定基础架构的实例,网络,负载平衡器甚至安全设置。        PS:...

2018-09-09 21:18:57 1193

原创 DevOps基础-4.2-基础架构自动化:Golden Image to Foil Ball

      基础设施自动化的核心和最好的工具区域是配置管理。有许多方法可用于构建系统,维护和升级其配置以及将应用程序部署。可能令人困惑,因为许多工具可用于以  不同方式执行多个功能。有时这是一个好主意,有时它不是。       因此,让我们从常见CM(Configure Mangerment)术语的一些定义开始,然后检查技术。首先,配置。是使服务器准备好运行的过程。包括硬件,操作系统,系统服务...

2018-09-07 15:29:13 2570

原创 Java多线程-42-守护线程和加入线程

继续学习线程类的相关实例方法,这篇学习守护线程和加入线程两种方法的基本使用。1.守护线程在线程类有一个方法加setDaemon(), 作用就是设置一个线程为守护线程,该线程不会单独执行,当其他非守护线程都执行结束之后,守护线程自动退出。下面,两个线程代码,t1表示非守护线程,t2表示守护线程。package thread;public class Demo5_Daemon {...

2018-09-01 00:00:25 698 1

原创 Java多线程-41-获取当前线程对象和线程休眠

这篇学习关于Thread类的两个方法,第一个是获取当前线程对象,返回的是一个Thread对象。第二个方法是我们自动化中经常使用的,线程休眠。1.currentThread()获取的是当前线程对象,是对象不是对象名称,如果要获取名称,需要对象.getName()实现。package thread;public class Demo5_Thread { public static...

2018-08-30 23:21:51 5325

原创 Java多线程-40-线程获取名字和设置名称

这篇开始学习Thread类相关方法,先来看看给线程设置名称和获取名称的方法。打开Thread API文档,找到getName()和setName()方法。我们先来看看获取线程名称方法,然后看看设置线程名称方法。1.获取线程名称getName()方法下面采用前面一篇介绍的匿名类来写线程代码。package thread;public class Demo4_Thread { p...

2018-08-29 22:33:01 18041

原创 DevOps基础-4.1-基础架构自动化:基础设施即代码

这篇开始学习第四章,第四章主要阐述基础架构自动化这个话题。       在IT系统管理领域,自动化技术并不是新的,但DevOps提升到了完全不同的自动化水平。我们将此称为基础设施即代码。 这是一种完全编程的基础架构方法,使我们能够利用我们系统的开发实践。 分裂Dev和Ops驱动器的一个影响是,一个团队的最佳实践确实没有传递到另一个团队。是的,一个简单的例子是使用源代码控制。       一...

2018-08-29 13:56:56 4130

原创 DevOps基础-3.3-DevOps组件:ITIL /ITSM/ SDLC

       这篇是我们关于DevOps组件章节的最后一节。这一次,我想谈谈ITIL(Information Technology Infrastructure Library)和IT服务管理。 DevOps站在巨人的肩膀上,有很多来自各种ITSM(IT service management),SDLC(Software Development Life Cycle)框架和成熟度模型的概念值得学习...

2018-08-29 11:06:42 2142

原创 Java多线程-39-匿名内部类实现多线程

前面分别了解了两个实现多线程的方式和优缺点对比。有时候,我们会使用匿名内部类来实现多线程,因为这样做代码更加简单。下面,就用匿名类分别实现Thread继承和实现Runnable接口的两个多线程方式。package thread;public class Demo3_Thread { public static void main(String[] args) { //匿名内...

2018-08-28 23:26:22 2122

原创 Java多线程-38-实现runnable的原理和两种多线程的区别

前面两篇介绍了两种多线程的实现过程,第一种是通过继承Thread类来调用start()方法,第二种是实现Runnable接口并重写了run方法,然后给Thread有参构造传递一个runnable的引用来实现。这篇,我们先来看看第二种方式的实现原理,然后分析和对比两种多线程实现的区别和优缺点。1.实现runnable的原理看下面代码,然后ctrl+点击鼠标查看Thread的有参构造,跟着ta...

2018-08-27 23:07:51 1894

原创 DevOps基础-3.2-DevOps组件:精益

    欢迎回来。在这小节中,我们将讨论DevOps的第二个组件,Lean(精益)。 精益是一种消除浪费的系统化过程,最初是由W. Edwards Deming和Taiichi Ohno的丰田生产系统在制造业中设计的。它在第二次世界大战后彻底改变了日本的工业经济,后来又回到了美国玛丽和汤姆普兰佩德克的2003年出版的书《精益软件开发:敏捷工具套件》,书中提到,将精益技术应用到软件开发活动上。 ...

2018-08-26 23:03:22 1547

原创 Java多线程-37-多线程实现方式二

前面一篇介绍了多线程的实现方式之一是利用Thread类的子类对象去调用start()方法,这篇,介绍实现多线程的第二种方式。那就是,创建线程的另一种方法是声明实现 Runnable 接口的类。该类然后实现 run 方法。然后可以分配该类的实例,在创建 Thread 时作为一个参数来传递并启动。1 查询Runnable接口搜索并打开Runnable接口,发现只有一个Run方法,Run方法的作...

2018-08-25 23:34:21 513

原创 Java多线程-37-多线程实现方式一

这篇开始学习线程相关代码知识,本篇开始介绍线程类Thread的基本使用方法,也就是通过调用start()方法去启动多线程。1.API基本内容在JDK API文档中,搜索并打开Thread类。可以发现Thread类在lang包下,所以不需要导入包。可以找到这么一句话:创建新执行线程有两种方法。一种方法是将类声明为 Thread 的子类。该子类应重写 Thread 类的 run 方法。接下来可...

2018-08-24 23:51:43 564

原创 Java多线程-36-多线程的概念

这篇开始学习Java中多线程这块的知识,本篇就来学习几个简单的改变,先对多线程有一个概念性的了解就好。1.什么是线程1)线程是程序执行的一条路径,一个进程中可以包含多个进程。2)多线程并发执行可以提高程序的效率,可以同时完成多项工作。如何理解呢?先看进程,我们知道不管是linux还是windows上,软件服务都是以进程在后台执行的。电脑中很多软件服务,也就是说有很多进程。那么是如何...

2018-08-23 22:46:25 680

原创 Java中IO流-35-递归练习-求1000的阶乘的所有零和尾部零的个数

继续来一个比较综合的编程练习题,还是属于递归范围,我们先不用递归,用最常用的办法去解决,然后看看递归是如何解决的。个人觉得,必须要有第一种方法。比较第一种是一种正常的解题思路和思维过程,递归有时候我们不一定能想起来并实现。需求:求1000的阶乘,这个结果数包含全部数字0的个数和尾部数字0的个数。例如一个数,1303087000,全部有5个0,尾部有3个0.1.普通方法简单来写一下思路。...

2018-08-21 23:49:13 1155

原创 Java中IO流-34-递归练习-斐波那契数列

     个人认为,学习递归,永远绕不开斐波那契数列,不管什么语言,都能见到这个题目。关于斐波那契数列,我们很久不学习数学,可能不是很清楚,但是和你说这个不死神兔,每个月生一对兔子,你就知道这个题目了。1.兔子生兔子的经典问题    首先,斐波那契是西元1202年,意大利一个青年叫斐波那契,在他一本著作提到一个有趣的问题:假设一对刚出生的小兔一个月之后就能长成大兔,再过一个月就生下一对小兔...

2018-08-20 23:11:11 533

原创 DevOps基础-3.1-DevOps组件:敏捷

     开始介绍第三章内容,第三章主要讲DevOps的几个组件或者叫概念。在本章中,我们想与你讨论与DevOps相关的一些主要概念:敏捷,精益和itope。本小节与Agile相关,与DevOps相关。 Patrick Dubois和Andrew Clayshafer参加了多伦多的Agile 2008大会。在会议上,Andrew提出了一个关于敏捷基础设施的会议。Patrick是唯一到场出席的。他们...

2018-08-19 23:50:37 2554

原创 DevOps基础-2.5-持续改善

  在DevOps中,我们喜欢日语单词。主要是因为精益在日本得到了如此强烈的采用,我们从他们那里得到了大量的借鉴。像andencord和kaizen。 Kaizen是一个受欢迎的开发者文化实践。Kaizen字面意思是变得更好。我们可能会将其粗略地翻译为持续改进。 Kaizen是丰田汽车生产系统著名的精益模型的重要组成部分。Kaizen日本单词是“改禅”,中文的意思就改善。我们知道禅道这个bug国产...

2018-08-19 23:03:13 1099

原创 Java中IO流-33-File类递归练习-文件夹下文件和文件夹按层级打印

继续做一个File类相关的递归练习题,需求是,键盘给定一个文件夹路径,按照层级打印该文件夹下文件和文件夹。1. 分析前面我们练习了很多次获取文件夹路径的方法,下面重点分析打印的思路。     * 1.获取所有文件夹和文件,存储在File数组中     * 2.遍历数组     * 3.无论是文件还是文件夹都需要打印     * 4.如果是文件夹,递归调用2.打印初步代码实现...

2018-08-18 23:19:54 682

原创 Java中IO流-32-File类递归练习-删除文件和文件夹拷贝

这篇继续来做递归的File操作相关练习题,第一题是删除文件夹,第二个是模拟两个文件夹之间的拷贝。因为都存在文件夹下有文件,所以都需要利用递归调用,第二条,文件拷贝还需要用上IO流的读和写。1.删除一个文件夹下所有文件和子文件夹分析:1)获取该文件夹下的所有文件和文件夹,之前前面做过,已有代码2)遍历文件数组3)判断是文件就直接删除4)判断是文件夹,就递归调用5)循环结束...

2018-08-16 23:27:46 607

原创 Java中IO流-31-File类递归练习-求一个文件夹的大小

继续来利用File递归做练习题,这里要键盘给定一个文件夹路径,然后计算这个文件夹大小。例如你在c盘,你的用户名下,右键Desktop这个文件夹,点击属性,就可以看到小括号内的xxxx字节,这个xxx字节就是文件夹大小。1.直接看代码前面一篇我们写过了获取文件夹路径的方法,所以这里就重点分析如何获取一个文件夹的大小。在Java中,获取文件大小是通过length()方法来计算的,但是文件对象如...

2018-08-14 23:56:30 769

原创 Java中IO流-30-File类递归

本篇介绍递归,先要理解什么是递归。递归,就是方法调用本身。在学习Java的过程中,最能想起使用递归的就是数学里面阶乘,第二个就遍历一个路径下文件。个人经验,在测试开发面试的时候,遇到递归思想解决问题的面试题还是比较容易碰上。1.数学中阶乘例如,计算10的阶乘。package io;public class Demo6_Digui { public static void m...

2018-08-13 23:22:42 440

原创 Java中IO流-29-IO流练习题:统计一个文件中字符出现个数

这篇来利用IO流知识来做两个练习题。第一个题目是在文本文件中统计字符出现次数,并写入到一个txt文件里。第二个练习题是模拟,试用软件30天倒计时,这里我们简化一下,运行一次代码,试用天就减去1天。1.文本文件内统计字符出现个数题目:给定一个文本文件,统计字符出现个数并写入到文件times.txt中。分析:前面我们学习双列链表的时候,首选就是用HashMap来解题。只不过当时字符来源...

2018-08-13 22:29:54 5452

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除