• 等级
  • 1774853 访问
  • 713 原创
  • 0 转发
  • 387 排名
  • 1617 评论
  • 616 获赞

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

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

2018-10-11 22:02:36

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

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

2018-10-09 23:45:08

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

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

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

2018-10-09 22:43:50

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

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

2018-10-07 12:24:49

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

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

2018-10-05 14:08:18

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

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

2018-09-16 22:33:54

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

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

2018-09-16 22:15:14

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

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

2018-09-14 23:51:59

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

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

2018-09-10 20:51:21

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

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

2018-09-09 22:46:20

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

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

2018-09-09 22:26:55

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

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

2018-09-09 21:18:57

DevOps基础-4.3-基础架构自动化:不可变的部署

        在上一个篇文章中,我们解释了配置管理和编排工具的简单使用。但是,CM领域正在发生一些新的变化。虽然CM演进的道路仍在继续,但在配置级别上有一些有趣的发展,公共和私有云计算导致模型驱动自动化的出现,其中底层系统的声明模型可用于创建系统。         亚马逊拥有云计算,Azure拥有Azure资源管理器模板等。出现了一个非常合理的问题,为什么我的系统使用一个模型,我的操作系统配置...

2018-09-09 18:50:45

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

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

2018-09-07 15:29:13

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

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

2018-09-01 00:00:25

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

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

2018-08-30 23:21:51

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

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

2018-08-29 22:33:01

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

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

2018-08-29 13:56:56

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

Anthony_tester

关注
  • 中国
奖章
  • 持之以恒