容器技术

Effective STL:5、算法

时光怂恿深爱的人放手 提交于 2019-12-02 15:23:10
这在第 1 章开始的时候提到过,在 STL 中最受欢迎的就要数容器了。这点很容易理解 —— 容器无疑是 STL 最重要的成就之一,它极大地简化了众多 C++ 程序员的日常编程工作。同样地,STL 算法也有此殊荣,因为它同样能够显著地减轻程序员的负担。事实上,STL 中只有 8 个容器类,却包含超过 100 个算法,所以,毫无疑问,STL 算法为程序员提供了更为锐利的工具。但其庞大的数量同时也成为学习的障碍,记住 70 个算法的名字和功能比熟悉 8 个不同的容器类要困难得多。 本章有两个主要目标。第一,我将向你介绍 STL 中一些鲜为人知的算法,以及如何使用这些算法来简化工作。我不会只是简单地罗列这些算法的名字,凡是本章中我向你展示的算法,都可以解决一些非常常见的问题,比如:忽略大小写的字符串比较、有效地找到容器中最合适的 n 个对象、容器中一个区间内所有对象的统计处理,以及实现一个功能类似于 copy_if 的算法(最初的 HP STL 中实现了 copy_if,但在标准化过程中被删除了)。 我的第二个目标是告诉你应该如何避免在 STL 算法使用上的一些通病。比如,你必须非常清楚remove、remove_if 或者 unique 做了什么事情(以及没做什么事情),否则就不要调用这些算法。当要删除的区间中包含了指针的时候,这显得尤为重要。类似地,有许多算法要求排序的区间,所以

Ubuntu16.04安装kubernetes1.13集群

元气小坏坏 提交于 2019-12-02 15:01:39
Ubuntu16.04安装kubernetes1.13集群 最新的安装可以使用以下方式: https://www.cnrancher.com/docs/rancher/v2.x/cn/overview/quick-start-guide 方便,快捷! 以下为正文。 前言 Docker容器化,虚拟化技术上的又一个猛将,可以极高提高软件部署的速度。运行一个Docker容器,这个容器作为一个进程分配了计算资源,不同容器之间资源隔离,仿佛每个容器都是一台机器, 并且通过宿主机网桥,可以模拟一个局域网。可以参考: 新手教程 Docker-compose可以管理单机上的容器们,但是多机管理还做不到,目前Kubernetes容器编排是最好的解决方案,可实现多机的容器编排。 Kubernetes简称为k8s,它是 Google 开源的容器集群管理系统。在Docker技术的基础上,为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列完整功能,提高了大规模容器集群管理的便捷性。 k8s因为种种原因,在中国很难安装得上,毕竟网不好。通过搭建k8s,我们也算追得上潮流。我们准备安装最新的k8s1.13。 准备工作 我们可以通过: VMware Workstation多台虚拟机安装 新建三台 Ubuntu16.04 机器: 三台机器的主机名和 IP : ubuntu1:192.168.152.3

零基础教程!一文教你使用Rancher 2.3和Terraform运行Windows容器

孤街醉人 提交于 2019-12-02 14:45:28
本文来自 Rancher Labs 介 绍 在Kubernetes 1.14版本中已经GA了对Windows的支持。这一结果凝结了一群优秀的工程师的努力,他们来自微软、Pivotal、VMware、红帽以及现在已经关闭的Apprenda等几家公司。我在Apprenda工作时,不定时会为sig-windows社区做出一些贡献。即便现在在Rancher Labs任职,也一直关注它的动向。所以当公司决定在Rancher中增加对Windows支持时,我极为兴奋。 Rancher 2.3已于本月月初发布,这是首个GA支持Windows容器的Kubernetes管理平台。它极大降低了企业使用Windows容器的复杂性,并为基于Windows遗留应用程序的现代化提供快捷的途径——无论这些程序是在本地运行还是在多云环境中运行。此外,Rancher 2.3还可以将它们容器化并将其转换为高效、安全和可迁移的多云应用程序,从而省去重写应用程序的工作。 在本文中,我们将在运行RKE的Kubernetes集群之上配置Rancher集群。我们也将会配置同时支持Linux和Windows容器的集群。完成配置后,我们将聊聊操作系统的定位,因为Kubernetes scheduler需要指导各种Linux和Windows容器在启动时的部署位置。 我们的目标是以完全自动化的方式执行这一操作。由于Rancher 2

Think in Java第四版 读书笔记9第15章 泛型

ⅰ亾dé卋堺 提交于 2019-12-02 14:35:41
Think in Java第四版 读书笔记9第15章 泛型 泛型:适用于很多很多的类型 与其他语言相比 Java的泛型可能有许多局限 但是它还是有很多优点的。 本章介绍java泛型的局限和优势以及java泛型如何发展成现在这个样子的。 15.1 Java的泛型与C++比较 Java的语言设计灵感来自C++,虽然我们学习Java时不需要参考C++,但是有时与C++进行比较可以加深理解 泛型就是一个例子 之所以将Java的泛型与C++进行比较原因有二 1.比较后会理解泛型的基础,同时你会了解Java泛型的局限性以及为什么会有这些局限性。(理解某个技术不能做什么 才能更好地做到所能做到的,不必浪费时间在死胡同乱转–Think in JAVA作者讲的很精辟!) 2.人们对C++模板有一种误解,这种误解可能导致我们在理解泛型的意图产生偏差。 15.2 简单泛型-指定容器存储类型 泛型最常见的使用是在容器类上,让我们从最简单的开始吧 例子:存放单个指定类型对象的容器 class Automobile {} public class Holder1 { private Automobile a; public Holder1(Automobile a) { this.a = a; } Automobile get() { return a; } } ///:~ 例子很简单

图解 Spring:HTTP 请求的处理流程与机制【2】

旧城冷巷雨未停 提交于 2019-12-02 14:12:07
2. HTTP 请求在 Web 容器中的处理流程 Web 容器以进程的方式在计算机上运行,我们知道进程是系统资源分配的最小单元,线程是系统任务执行的最小单元。从这个角度看,Web 容器就像是邮包收件人所居住的楼宇或小区,HTTP 这套物流快递体系只能将邮包投递到楼宇前台或者小区物业等处,而楼宇前台或小区物业并不属于物流快递体系,就像 Web 容器并不属于计算机网络基础设施一样。之所以这样分工,原因是网络路由信息由域名服务器 DNS、路由器等设备掌握,Web 容器内部体系结构信息只有它自己知道。从 Web 容器接收到 HTTP 请求,到将其投送至特定的应用,这期间还会经历一个复杂的过程,了解这个过程对于日常开发和问题分析都会有所帮助。接下来,老兵哥我将陪着你一起来剖析这个过程。 JAVA 语言领域的 Web 容器类型非常多,包括 Tomcat、Jetty、Resin、Websphere、Weblogic、JBoss、Glassfish、GonAS 等,其中 Tomcat 是由 Apache Software Foundation 维护的开源 Web 容器。Tomcat 市场占用率接近 60%,截止目前是最受欢迎的 Web 容器,如下图所示横跨 Web 服务器和 Java 应用服务器。 我们就以 Tomcat 为例来看看 Web 容器的内部结构,作为符合 JAVA Servlet

小白也看得懂的 Spring IoC 核心流程介绍

穿精又带淫゛_ 提交于 2019-12-02 12:40:18
前言 本文将用最通俗易懂的文字介绍 Spring IoC 中的核心流程,主要用于帮助初学者快速了解 IoC 的核心流程,也可以用作之前源码分析文章的总结。本着简单的初衷,本文会省略掉大量流程,只介绍最重要的步骤。 基础概念 1、IoC 和 DI IoC (Inversion of Control),即控制反转。这不是一种新的技术,而是 Spring 的一种设计思想。 在传统的程序设计,我们直接在对象内部通过 new 来创建对象,是程序主动去创建依赖对象;而在 Spring 中有专门的一个容器来创建和管理这些对象,并将对象依赖的其他对象注入到该对象中,这个容器我们一般称为 IoC 容器。 所有的类的创建、销毁都由 Spring 来控制,也就是说控制对象生存周期的不再是引用它的对象,而是 Spring。对于某个具体的对象而言,以前是它控制其他对象,现在是所有对象都被 Spring 控制,所以这叫控制反转。 DI(Dependency Injection),即依赖注入,由 Martin Fowler 提出。可以认为 IoC 和 DI 其实是同一个概念的不同角度描述。 依赖注入是指组件之间的依赖关系由容器在运行期决定,形象的说,即由容器动态的将某个依赖关系注入到组件之中。依赖注入的目的并非为软件系统带来更多功能,而是为了提升组件重用的频率,并为系统搭建一个灵活、可扩展的平台。

Spring(2)IOC和AOP的基本用法

夙愿已清 提交于 2019-12-02 11:33:38
目录 一 IOC/DI 1 介绍 2 依赖注入的方式 3 Spring容器 4 IOC实现过程 1.容器启动阶段 2.Bean实例化阶段 二 AOP 1 AOP中的相关概念 2 srping中的动态代理 2.1 jdk动态代理 2.2 cglib 一 IOC/DI 1 介绍 反转资源获取的方向 . 传统的资源查找方式要求组件向容器发起请求查找资源. 作为回应, 容器适时的返回资源. 而应用了 IOC 之后, 则是 容器主动 地将资源 推送 给它所管理的组件, 组件所要做的仅是选择一种合适的方式来接受资源. 这种行为也被称为查找的被动形式 DI(Dependency Injection) — IOC 的 一种实现手段 :即组件以一些预先定义好的方式(例如: setter 方法)接受来自如容器的资源注入. 相对于 IOC 而言,这种表述更直接(容器向组件注入资源,方式有:属性注入、构造器注入 2 依赖注入的方式 Autowired/resource 等等 (可以再属性、构造器、sertter上标注) setter方法注入(xml中的利用property标签,实际是调用sertter方法) 构造器注入 静态/实例工厂(只找到xml里面的用法) 3 Spring容器 在 Spring IOC 容器读取 Bean 配置创建 Bean 实例之前, 必须对它进行实例化. 只有在容器实例化后,

Docker

给你一囗甜甜゛ 提交于 2019-12-02 10:51:39
虚拟化简介 计算机虚拟化(Computing Virtualization),一种资源管理技术,是指通过虚拟化技术将一台计算机的各种实体资源 , 如处理器 , 网络 , 内存及存储等 , 抽像 , 转换后呈现出来 , 打破实体结构间的不可切割的障碍,虚拟成多台逻辑计算机。在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。虚拟化使用软件的方法重新定义划分 IT 资源,可以实现 IT 资源的动态分配、灵活调度、跨域共享,提高 IT 资源利用率,使 IT 资源能够真正成为社会基础设施,服务于各行各业中灵活多变的应用需求。同一主机上运行多个系统或应用 , 从而提高系统资源的利用率 , 同时带来降低成本 , 方便管理和容错容灾。 虚拟化级别 ( 1)完全虚拟 -- 处理器密集型技术,因为它要求 hypervisor 管理各个虚拟服务器,并让它们彼此独立 (Vmware/Virtual PC) (2)准虚拟 -- 改动客户操作系统,让它以为自己运行在虚拟环境下,能够与 hypervisor 协同工作 (para-virtualization) (3)系统虚拟 -- 没有独立的 hypervisor 层。相反,主机操作系统本身就负责在多个虚拟服务器之间分配硬件资源,并且让这些服务器彼此独立

Docker入门篇

谁说我不能喝 提交于 2019-12-02 10:31:51
No.1 概念 为什么会出现Docker? 一款产品从生产到上线,从操作系统,到运行环境,再到应用配置,往往在开发那里可以正常运行,到了运维那里就挂了,特别是版本升级,不同版本之间的兼容问题,也让运维人员头疼不已,docker应运而生,docker将运行文件、配置环境、运行环境、运行依赖包、操作系统、内核打包成镜像 Docker理念 Docker的目标是Build,Ship and Run Any APP,Anywhere,就是对应用的封装、分发、部署、运行等生命周期的管理,使用户的APP及其运行环境能够做到一次封装,处处运行 Docker三组件 镜像一个只读的模板,可以用来创建Docker容器,一个镜像可以创建多个容器,就相当于Python中的类,可以同过类创建对象 容器 容器可以开发、运行应用,容器就是用镜像创建的运行实例,它可以被启动、删除、停止、开始,每个容器都是相互隔离的,这样能保证平台的安全性 仓库集中存放镜像文件的场所,每个仓库存放好多个镜像,每个镜像有不同的标签(tag),最大的仓库是DockerHub,存放了数据庞大的镜像 Docker为什么这么快 Docker的接触是Linux(LXC)技术,在LXC的基础上进行了进一步的封装,让用户不需要考虑容器的管理,使操作更加简单,从结构上来看,虚拟机的Guest OS层和Hypervisor层被Docker

初始Spring

独自空忆成欢 提交于 2019-12-02 10:20:58
概述:Spring 是最受欢迎的企业级 Java 应用程序开发框架,数以百万的来自世界各地的开发人员使用 Spring 框架来创建性能好、易于测试、可重用的代码。 Spring 是轻量级的框架,其基础版本只有 2 MB 左右的大小。 一:IOC(Inversion of Control) 即“控制反转”,不是什么技术,而是一种设计思想。在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。 在传统的Java项目中,是通过一个类new另一个类的对象,将两个类进行关联,这样的话是程序主动去创建依赖对象,这样的话会导致类与类之间的高耦合,难于测式。 而IOC是把创建和查找依赖对象的控制权交给了容器,由容器进行注入组合对象,由这个容器来管理对象的生命周期和对象之间的关联关系,这样的话不但实现了对象之间的关联关系,所以对象与对象之间是 松散耦合,这样也方便测试,利于功能复用,更重要的是使得程序的整个体系结构变得非常灵活。 二:DI(Dependency Injection) 即“依赖注入”:IOC和DI在本质上来说是同一种东西,只不过IOC是一种设计理论,而DI则是一种实现。 组件之间依赖关系由容器在运行期决定,形象的说,即由容器动态的将某个依赖关系注入到组件之中。依赖注入的目的并非为软件系统带来更多功能,而是为了提升组件重用的频率