容器技术

Java面试题—中级(中)

半腔热情 提交于 2020-02-08 10:41:47
什么是线程死锁?死锁如何产生?如何避免线程死锁? 死锁的介绍: 线程死锁是指由于两个或者多个线程互相持有对方所需要的资源,导致这些线程处于等待状态,无法前往执行。当线程进入对象的synchronized代码块时,便占有了资源,直到它退出该代码块或者调用wait方法,才释放资源,在此期间,其他线程将不能进入该代码块。当线程互相持有对方所需要的资源时,会互相等待对方释放资源,如果线程都不主动释放所占有的资源,将产生死锁。 死锁的产生的一些特定条件: 1、互斥条件:进程对于所分配到的资源具有排它性,即一个资源只能被一个进程占用,直到被该进程释放 。 2、请求和保持条件:一个进程因请求被占用资源而发生阻塞时,对已获得的资源保持不放。 3、不剥夺条件:任何一个资源在没被该进程释放之前,任何其他进程都无法对他剥夺占用。 4、循环等待条件:当发生死锁时,所等待的进程必定会形成一个环路(类似于死循环),造成永久阻塞。 如何避免: 1、加锁顺序: 当多个线程需要相同的一些锁,但是按照不同的顺序加锁,死锁就很容易发生。如果能确保所有的线程都是按照相同的顺序获得锁,那么死锁就不会发生。当然这种方式需要你事先知道所有可能会用到的锁,然而总有些时候是无法预知的。 2、加锁时限: 加上一个超时时间,若一个线程没有在给定的时限内成功获得所有需要的锁,则会进行回退并释放所有已经获得的锁

Java面试题——中级

一曲冷凌霜 提交于 2020-02-08 10:40:23
什么是线程死锁?死锁如何产生?如何避免线程死锁? 死锁的介绍: 线程死锁是指由于两个或者多个线程互相持有对方所需要的资源,导致这些线程处于等待状态,无法前往执行。当线程进入对象的synchronized代码块时,便占有了资源,直到它退出该代码块或者调用wait方法,才释放资源,在此期间,其他线程将不能进入该代码块。当线程互相持有对方所需要的资源时,会互相等待对方释放资源,如果线程都不主动释放所占有的资源,将产生死锁。 死锁的产生的一些特定条件: 1、互斥条件:进程对于所分配到的资源具有排它性,即一个资源只能被一个进程占用,直到被该进程释放 。 2、请求和保持条件:一个进程因请求被占用资源而发生阻塞时,对已获得的资源保持不放。 3、不剥夺条件:任何一个资源在没被该进程释放之前,任何其他进程都无法对他剥夺占用。 4、循环等待条件:当发生死锁时,所等待的进程必定会形成一个环路(类似于死循环),造成永久阻塞。 如何避免: 1、加锁顺序: 当多个线程需要相同的一些锁,但是按照不同的顺序加锁,死锁就很容易发生。如果能确保所有的线程都是按照相同的顺序获得锁,那么死锁就不会发生。当然这种方式需要你事先知道所有可能会用到的锁,然而总有些时候是无法预知的。 2、加锁时限: 加上一个超时时间,若一个线程没有在给定的时限内成功获得所有需要的锁,则会进行回退并释放所有已经获得的锁

Docker笔记:基本概念、镜像、容器、仓库以及数据卷的使用

痞子三分冷 提交于 2020-02-08 01:26:45
什么是docker docker 是一个开源的应用容器引擎 可以使用docker将应用程序和依赖打包到一个镜像之中 可以非常方便的移植到其他机器上运行 使用docker构建打包我们的应用(build),之后可以像集装箱一样很方便的传输到别的机器上(ship),可以在任何环境下运行我们的应用程序 用官方的话概况为:Build, Ship, and Run Any App, Anywhere docker可以运行在物理机、虚拟机、云平台、笔记本,我们不用担心环境的变化导致程序不能正常运行的问题 语言或框架在不同版本之间会存在很大差别, 如果要部署不同版本依赖的应用,将增加运维的复杂程度,容器技术的发展很好的解决了这一问题 容器技术可以让我们大规模的部署应用: 早在2016年,京东就将全部流量运行在docker之上,运行容器达到15万个,docker完美支持了618的大促销 阿里这边也使用了几十万个docker来提供服务 我们也可以把docker来当成虚拟机来使用 docker与虚拟机 虚拟机可以在一台物理机上运行多个操作系统 虚拟机是完全虚拟出一整套的硬件设备,里面的每个操作系统都是完整的 docker容器则非常简单,应用进程直接运行在物理机的内核上,docker容器上面没有内核,只有应用 docker不需要硬件虚拟,容器要比传统的虚拟机更轻便,效率更高,性能接近原生

第一阶段学习总结

生来就可爱ヽ(ⅴ<●) 提交于 2020-02-07 20:55:01
原计划1月30日看完《Docker技术入门与应用实战》的视频,中途去看了下《Docker技术入门与实战》的书,这样来来回回就整到了今天2月7日。 书讲的很全,但是不适合全部看完,看完需要花费不少的时间,生产环境中也用不到这么多东西,何况我目前的工作根本不搭边,一切都为转行为准,知识面要广,除了docker我还有很多东西要学,所以书翻看了容器跟镜像的部分知识就放下了。 视频讲的速度很快,接触的也多,就是有些点没讲清楚,容器网络管理这一章节讲的不是很好,勉强看完,也实操了不少,后续还有k8s的视频留着以后看吧。 总的来说,容器的基本操作会了,深入一点的话比如部署集群,实际上手操作等等还是不足,只是相当于入了个门,不过这一些对我来说也很好了,目前薄弱的地方是容器的网络管理这一部分还是不是很明白,到时候抽个时间拿下,这部分书讲的还不错,可以去看下。 现在开始看《跟着360架构师 学习Shell脚本编程》,别问我为什么资料这么多,哈哈,网上都有的。一共69个视频,每天两个也要一个月了,加把劲,这个月公司也要求考一个安全的证书,不知道时间够不够用,专心一点完成的话也不是很难,加油吧。 来源: https://www.cnblogs.com/tz90/p/12274214.html

docker入门

喜欢而已 提交于 2020-02-07 18:57:40
目录 第一章 什么是docker 1.1 docker的发展史 1.2 docker国内应用史 1.3 什么是Docker 第二章 了解docker 2.1 docker思想 2.1.1 集装箱 2.1.2 标准化 2.1.3 隔离 2.2 docker解决的问题 2.2.1 系统环境不一致 2.2.2 系统好卡,哪个哥们又写死循环了 2.2.3 双11来了,服务器撑不住了 第三章 走进docker 3.1 镜像 3.2 容器 3.3 仓库 第四章 centos下docker安装 第五章 docker初体验 5.1 docker基本命令 5.2 docker运行镜像流程 第六章 docker运行nginx 6.1 运行nginx镜像 6.2 docker网络 6.2.1 网络介绍 6.2.2 实际访问端口 第七章 docker部署第一个java web应用 7.1 制作自己的镜像 7.2 运行自己的镜像 第一章 什么是docker 1.1 docker的发展史 2010年几个年轻人成立了一个做PAAS平台的公司dotCloud.起初公司发展的不错,不但拿到过一些融资,还获得了美国著名孵化器YCombinator的支持,后来微软谷歌亚马逊这样的大厂商也纷纷加入PAAS平台,竞争十分激烈,dotCloud举步维艰. 2013年可能是公司发展的不是很好,工程师又不想自己的努力付之东流

云计算进阶学习路线图课件:Docker容器的四种网络模式

怎甘沉沦 提交于 2020-02-07 17:21:39
Docker容器是一个开源的应用容器引擎,让开发者可以以统一的方式打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何安装Docker引擎的服务器上,也可以实现虚拟化。随着云计算的飞速发展以及企业需求的多样化,Docker容器技术成为云计算人才必备的技能之一。很多人想要快速掌握Docker容器技术,接下来就给大家讲解Docker容器的四种网络模式。 1、closed container 封闭式网络模式 没有网络协议栈的通信使用none模式,Docker容器拥有自己的Network Namespace,但是,并不为Docker容器进行任何网络配置。也就是说,这个Docker容器没有网卡、IP、路由等信息,只有lo网络接口。需要我们自己为Docker容器添加网卡、配置IP等。 2、bridged container 桥接式网络模式 各个容器之间网络协议栈单独分离当Docker启动时,会自动在主机上创建一个docker0虚拟网桥,实际上是Linux的一个bridge,可以理解为一个软件交换机,它会在挂载到它的网口之间进行转发。同时,Docker随机分配一个本地未占用的私有网段(在 RFC1918 中定义)中的一个地址给docker0接口。当创建一个Docker容器的时候,同时会创建了一对veth pair 接口。这对接口一端在容器内,即eth0

Docker学习的几个建议和技巧

浪子不回头ぞ 提交于 2020-02-07 03:56:23
在之前的文章和问答中,我也说过学习技术的一般方法,学习技术不光是要指出关于什么,而是教会如何去做,不仅仅是关于你应该具备哪些技术技能,跟重要的是你应该如何学习它们。本文中,虫虫和大家一起讨论下下如何学习Docker以及学习Docker学习中应该注重那些问题。 你知道什么是虚拟化吗? 最近几年入坑的很多开发人员和运维工程师应该都听说过虚拟化,虚拟化和云都是宠儿和新的流行词,但是关于虚拟化的实质和实际内容可能真正了解的人也不多。 虚拟化和分布式云计算是一项革命性技术,在目前乃至未来很长一段时间内都会是热点和趋势。懂得虚拟化,也能让技术人员更容易入职,更容易拿到高工资。 了解虚拟化和容器化之间的区别,如何用容器解决虚拟化问题,是一个是开始Docker之旅的最好问题,而不是怎么在"windows安装docker?","我不懂Linux,我怎么学习docker?",这样的问题。 从简单命令行开始 这是对任何人学习docker技术的最佳路径。无论你是学习Docker还是其他任何技术或技能(比如git等也类似)。 学习CLI很重要。 Docker有很多很好的GUI,但是如果你想掌握一项技术,最好的方法是使用它的基本命令,从这儿了解实质,原理和进行问题排查。 从简单的命令开始,这是这些工具(协议)的实质,也能更能帮助你了解原理和本质,更容易排查问题。 学习Docker请先忘记Kubernetes

【超详细】通俗易懂地理解并使用Docker(上)

前提是你 提交于 2020-02-07 02:36:14
文章目录 Docker是啥 Docker能干些啥 Docker是啥 打开翻译君输入 Docker 结果显示码头工人,没错!码头工人搬运的是集装箱,那么今天要讲的Docker其操作的也是集装箱,这个集装箱就静态而言就是一个应用镜像文件,就动态而言,就是一个容器。蒙了吧?好吧,上图解释。 Docker从 狭义上 来讲就是一个进程,从 广义上 来讲是一个虚拟容器,其实更专业的叫法是应用容器( Application Container ),Docker进程和普通的进程没有任何区别,它就是一个普通的应用进程。不过是用来操作镜像文件的。所以Docker进程+构建的应用镜像文件就等于Docker容器。本文所有讲的Docker都是指Docker容器哦。 再继续下文之前我们首先要明确几个docker重要的基本概念: 镜像,容器,仓库。 镜像Docker images ,就类似于VM虚拟机里面的快照,但是可比快照轻量化多了。快照不懂?那可以把images直接理解成一个文件夹。我们可以通过ID或者易识别的名字+tag来确认唯一的目标镜像。ImagesID是一个64位的字符,但是一般我们都是使用前面12位就足够区别了。 如下图中左边红框中redis: lates和右边的红框中5f515359c7f8都唯一表示为同一个镜像。所以我们一般的镜像可以命名为类似centos:latest、centos

docker基础内容讲解②(对于javaee开发人员)

半腔热情 提交于 2020-02-06 22:11:32
docker基础内容讲解 文章目录 docker基础内容讲解 一、初识docker 1.docker是什么 2.docker的理念 3.docker能干嘛 ①之前的虚拟机 ②引入docker后 ③企业中 4.去哪里下 一、初识docker 1.docker是什么 一款产品从开发到上线,从操作系统,到运行环境,再到应用配置。作为开发+运维之间的协作我们需要关心很多东西,这也是很多互联网公司都不得不面对的问题,特别是各种版本的迭代之后,不同版本环境的兼容,对运维人员都是考验 Docker之所以发展如此迅速,也是因为它对此给出了一个标准化的解决方案。 环境配置如此麻烦,换一台机器,就要重来一次,费力费时。很多人想到,能不能从根本上解决问题,软件可以带环境安装?也就是说,安装的时候,把原始环境一模一样地复制过来。开发人员利用 Docker 可以消除协作编码时“在我的机器上可正常工作”的问题。 之前在服务器配置一个应用的运行环境,要安装各种软件,就拿尚硅谷电商项目的环境来说吧,Java/Tomcat/MySQL/JDBC驱动包等。安装和配置这些东西有多麻烦就不说了,它还不能跨平台。假如我们是在 Windows 上安装的这些环境,到了 Linux 又得重新装。况且就算不跨操作系统,换另一台同样操作系统的服务器,要移植应用也是非常麻烦的。 传统上认为,软件编码开发/测试结束后

Spring介绍

梦想与她 提交于 2020-02-06 03:03:03
Spring介绍 Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。 在这篇由三部分组成的 Spring 系列 的第 1 部分中,我将介绍 Spring 框架。我先从框架底层模型的角度描述该框架的功能,然后将讨论两个最有趣的模块:Spring 面向方面编程(AOP)和控制反转 (IOC) 容器。接着将使用几个示例演示 IOC 容器在典型应用程序用例场景中的应用情况。这些示例还将成为本系列后面部分进行的展开式讨论的基础,在本文的后面部分,将介绍 Spring 框架通过 Spring AOP 实现 AOP 构造的方式。 Spring 框架 Spring 框架是一个分层架构,由 7 个定义良好的模块组成。Spring 模块构建在核心容器之上,核心容器定义了创建、配置和管理 bean 的方式,如图 1 所示。 图 1. Spring 框架的 7 个模块 组成 Spring 框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现。每个模块的功能如下: 核心容器 :核心容器提供 Spring 框架的基本功能。核心容器的主要组件是 BeanFactory ,它是工厂模式的实现。 BeanFactory 使用 控制反转 (IOC)