容器

Java编程的逻辑 (55) - 容器类总结

放肆的年华 提交于 2020-03-01 18:57:52
从38节到54节,我们介绍了多种容器类,本节进行简要总结,我们主要从三个角度进行总结: 用法和特点 数据结构和算法 设计思维和模式 用法和特点 我们在52节展示过一张图,其中包含了容器类主要的接口和类,我们还是用这个图总结一下: 容器类有两个根接口,分别是Collection和Map,Collection表示单个元素的集合,Map表示键值对的集合。 Collection表示的数据集合有基本的增、删、查、遍历等方法,但没有定义元素间的顺序或位置,也没有规定是否有重复元素。 List是Collection的子接口,表示有顺序或位置的数据集合,增加了根据索引位置进行操作的方法。它有两个主要的实现类,ArrayList和LinkedList,ArrayList基于数组实现,LinkedList基于链表实现,ArrayList的随机访问效率很高,但从中间插入和删除元素需要移动元素,效率比较低,LinkedList则正好相反,随机访问效率比较低,但增删元素只需要调整邻近节点的链接。 Set也是Collection的子接口,它没有增加新的方法,但保证不含重复元素。它有两个主要的实现类,HashSet和TreeSet,HashSet基于哈希表实现,要求键重写hashCode方法,效率更高,但元素间没有顺序,TreeSet基于排序二叉树实现,元素按比较有序,元素需要实现Comparable接口

laravel创建服务

自闭症网瘾萝莉.ら 提交于 2020-03-01 17:12:46
laravel关于这块的教程很多, 所谓控制反转,就是把该由主类全部完成的事情改由子类去完成,这种设计思路就叫控制反转 实现控制反转有多种方式,工厂模式便是一种比较常见的模式,什么是工厂模式,也就是说父类不需要一个一个去new需要的子类,父类只需要new一次工厂类,由工厂决定子类的依赖,工厂返回类对象,父类直接调用类方法即可。 工厂模式其实已经可以满足我们目前的很多开发方式了,但是也存在一个问题,所有的模块都在工厂类中安排好了,如果有新的类,我们必须去改造工厂。 于是接口的作用就来了,接口是什么,接口是一个类,这个类只有需要实现的方法名字跟入参,并没有方法的定义,继承接口的类必须实现接口的方法才能使用。这样我们就有了更为先进的处理方式了,由接口来规范各个子类的调用,我主类只管去初始化接口就实现了我的全部工作。 class Superman{ protected $module; public function __construct(SuperModuleInterface $module) { $this->module = $module }} 于是,依赖注入的概念就出来了,我们的所有依赖,只要不是由内部生产(比如初始化、构造函数 __construct 中通过工厂方法、自行手动 new 的),而是由外部以参数或其他形式注入的,都属于 依赖注入(DI) 。是不是豁然开朗?事实上

学习QT之容器类

断了今生、忘了曾经 提交于 2020-03-01 12:27:17
学习QT之容器类 Qt提供了一组通用的基于模板的容器类。对比C++的标准模板库中的容器类,Qt的这些容器更轻量、更安全并且更容易使用。此外,Qt的容器类在速度、内存消耗和内联(inline)代码等方面进行了优化(较少的内联代码将说件可执行程序的大小)。 存储在Qt容器中的数据必须是可赋值的数据类型,也就是说,这种数据类型必须提供一个默认的构造函数、一个复制构造函数和一个赋值操作运算符。 这样的数据类型包含了通常使用的大多数数据类型,包括基本数据类型(如int和double等)和Qt的一些数据类型(如QString、QDate和QTime等)。不过,Qt的QObject及其他的子类(如QWidget和QDialog等)是不能存储在容器中的,例如: QList list; ,一个可代替的方案是存储QObject及其子类的指针,例如:QList<QToolBar *> list。容器也可以嵌套使用,例如:QHash<QString,QList >; 注意容器类嵌套时后面的 > 之间 一定要加一个空格 ,否则,C++编译器会将两个 > 符号解释为 >> ,导致无法通过编译器编译。 一、QList类、QLinkedList类和QVector类 1、QList类 QList是迄今为止最常用的容器类,它存储给定数据类型T的一列数值。继承自QList类的子类有QItemSelection

重磅| Kubernetes 1.5 正式发布

百般思念 提交于 2020-03-01 10:47:55
Linux 与 Windows 众所周知,Windows 的应用无法运行在 Linux上,而 Linux 应用也无法运行在 Windows 上。但是,事实上,当 Docker 将容器作为一种显著的打包应用的方法,并且可以在“任意地方”封装它的时候,这里的“任意地方”就已经包含了“Linux”。Windows 也有容器,但是要让所有工作都一起运行还是不太可能的。 但是,今天 Kubernetes1.5 的发布,让 Linux 和 Windows 一起运行的梦想能够实现了。 Kubernetes1.5 (alpha 版本)支持 Windows 服务器容器,跟 Docker 类似,他们共享同一个内核模式;而 Hyper-V 容器的单核模式则为多租户环境提供了更好的隔离(代价是延迟时间更长了)。最终的结果就是,在你创建的这个 Kubernetes 集群上,Linux 节点可以运行 Linux 容器,Windows 节点可以运行 Windows 容器;同时,Linux 节点也可以运行 Windows 容器,Windows 节点也可以运行 Linux 容器,真正实现混合集群。比如,单个 service 允许 Pod 使用 Windows 服务器容器,也允许其它的 Pod 使用 Linux 容器。 虽然 Kubernetes1.5 功能全面,但是也有它的局限性,比如: Kubernetes 是由

docker介绍篇

时间秒杀一切 提交于 2020-03-01 09:21:13
相关地址 docker 官网:https://www.docker.com/ 官方文档:https://docs.docker.com/install/linux/docker-ce/centos/ 中文文档:http://www.dockerinfo.net/document docker仓库:https://hub.docker.com/ 阿里云仓库:https://cr.console.aliyun.com/cn-shanghai/instances/repositories docker 介绍 Docker 是基于 Go 语言实现的开源容器项目,一种容器技术,目前已有 80 多个相关开源组 件项目(包括 Containerd Moby Swarm 等),逐渐形成了围 Docker 容器的完整的生态体系 Docker 的构想是要实现“ Build Ship and Run Any App, Anywhere ”,即通过对应用的封 装( Packaging )、分发( Distribution )、部署( Deployment )、运行( Runtime )生命周期进行管理,达到应用组件级别的“一次封装 ,到处运行” 这里的应用组件, 既可以是一个 Web 用、一个编译环境,也可以是一套数据库平台服务,甚至是一个操作系统或集群。 实现Devops的工具。 与虚拟机的区别

Spring-理解IOC容器(DI)

妖精的绣舞 提交于 2020-03-01 08:20:03
Spring-理解IOC容器 序言 IoC粗理解 IoC细理解 Spring中IoC的应用 IoC容器 容器的两种表现形式 BeanFactory的IoC实现过程: IoC容器初始化过程 BeanDefinition的定位 BeanDefinition的载入 IoC容器的依赖注入 IoC小结 参考文章: 序言 IoC(Inversion of Control) 控制反转,两种实现: 依赖查找(DL) 依赖注入(DI) IoC包括 依赖查找(DL) 和 依赖注入(DI) ;只不过DL因为有 侵入性 (它需要用户自己去是使用 API 进行查找资源和组装对象),已经被抛弃。所以现在提到IoC,更多的想到的就是依赖注入(DI)了。 依赖注入(DI)包括Set注入和构造器注入!其实还有一个通过实现接口的方式实现依赖注入,不过不常用,就不说了。 注意:Java 使用 DI 方式实现 IoC 的不止 Spring,包括 Google 的 Guice,还有一个冷门的 PicoContainer(极度轻量,但只提供 IoC)。 如图所示: 但其实 IOC 和DI 相当于一回事,只不过是看待问题的角度不同而已: IOC: Spring 反向控制应用程序需要的资源。 DI: 应用程序依赖Spring为其提供资源。 IOC 是站在Spring 的角度,而DI 是站在应用程序的角度。 如下图所示:

docker详细的基础用法

心已入冬 提交于 2020-03-01 07:04:34
Docker 是一个用了一种新颖方式实现的超轻量虚拟机,在实现的原理和应用上还是和VM有巨大差别,专业的叫法是应用容器(Appli cat ion Container)。(我个人还是喜欢称虚拟机) Docker应用容器相对于 VM 有以下几个优点: 启动速度快,容器通常在一秒内可以启动,而 VM 通常要更久 资源利用率高,一台普通PC 可以跑上千个容器,你跑上千个 VM 试试 性能开销小, VM 通常需要额外的 CPU 和内存来完成 OS 的功能,这一部分占据了额外的资源 因为VM的Hypervisor需要实现对硬件的虚拟化,并且还要搭载自己的操作系统,自然在启动速度和资源利用率以及性能上有比较大的开销。 个人体会较深的两处优点: 快速部署,传统的部署模式是:安装(包管理工具或者源码包编译)->配置->运行;Docker的部署模式是:复制->运行。 可以保证线上与测试环境一致,计划以后上线就直接复制测试使用的docker容器 什么是docker? http://oilbeater.com/docker/2014/06/29/what-is-docker.html 为什么你应该关注docker? http://oilbeater.com/docker/2014/06/13/why-you-should-care-about-docker.html 1、docker安装

[转帖]虚机容器来了 现第三种选择

故事扮演 提交于 2020-03-01 07:00:48
虚机容器来了 现第三种选择 http://server.zol.com.cn/692/6928557.html   你一般会选择什么样的交通工具出行?公交?打车?还是地铁?公交比较笨重,但是安全系数更高;打车具备了随叫随叫,但也会听闻恶性绑架之类事件的发生,安全系数没有公交高;相比之下,地铁比较好的融合两者的优点,屏蔽了缺陷。 地铁是否和Kata containers一样成为你更好的选择?   虚机就像是公交车,比较笨重,但是安全性高;容器像是打车出行,随叫随叫,但是安全性容易受到质疑。Kata containers则拥有了虚机的安全性和容器的轻便特点,成了第三种选择。   Kata containers是今年的技术,融合了虚机和容器的优势,将会怎样改变企业市场方向呢?原因有三:   实力:两个内核不会对击   Kata Containers是属于基于轻量级 虚拟机 的容器,在今年正式发布1.0版本。这是依托于OpenStack Foundation独立运作的,基于英特尔开源技术中心的Clear Containers与Hyper runV两个虚拟化容器项目之一。   过去,当使用Docker轻量级的容器时,最大的问题就是会碰到安全性的问题,其中几个不同的容器可以互相的进行攻击,如果把这个内核给攻掉了,其他所有容器都会崩溃。如果使用KVM等虚拟化技术,会完美解决安全性的问题

转:docker详细的基础用法

瘦欲@ 提交于 2020-03-01 06:19:42
Docker 是一个用了一种新颖方式实现的超轻量虚拟机,在实现的原理和应用上还是和VM有巨大差别,专业的叫法是应用容器(Appli cat ion Container)。(我个人还是喜欢称虚拟机) Docker应用容器相对于 VM 有以下几个优点: 启动速度快,容器通常在一秒内可以启动,而 VM 通常要更久 资源利用率高,一台普通PC 可以跑上千个容器,你跑上千个 VM 试试 性能开销小, VM 通常需要额外的 CPU 和内存来完成 OS 的功能,这一部分占据了额外的资源 因为VM的Hypervisor需要实现对硬件的虚拟化,并且还要搭载自己的操作系统,自然在启动速度和资源利用率以及性能上有比较大的开销。 个人体会较深的两处优点: 快速部署,传统的部署模式是:安装(包管理工具或者源码包编译)->配置->运行;Docker的部署模式是:复制->运行。 可以保证线上与测试环境一致,计划以后上线就直接复制测试使用的docker容器 什么是docker? http://oilbeater.com/docker/2014/06/29/what-is-docker.html 为什么你应该关注docker? http://oilbeater.com/docker/2014/06/13/why-you-should-care-about-docker.html 1、docker安装

如何使用 Laravel Facades ?

这一生的挚爱 提交于 2020-03-01 05:58:25
Facade 布局是在面向对象编程中经常使用的一种软件设计布局方式。Facade 实际上是一种包括复杂函数库的类,提供了更加简洁易读的接口。Facade 布局还能为一组结构复杂、设计简陋的 API 提供统一、设计周到的 API。 Laravel 框架与该布局的特点相似,也称为 Facades。在本教程中,我们会学习如何在其他框架应用 Laravel 的 “Facades”。在继续学习之前,让我们简单了解一下 Ioc 容器 。 首先,我们了解 Laravel 的 facades 内部工作结构。之后再讨论如何将之改造并用于其他环境。 Laravel 中的 Facades Laravel facade 是一种为容器内部服务提供类似静态接口的类。据其文档描述,Facades 是可触及容器服务底层实现方式的代理。 不过,在 PHP 社区,有关其名称的争论一直不断。一些人坚持修改此名称以避免开发者的困惑,因为其并未完全实现 Facade 布局。如果你也受此名称困扰,大可以为其取个别名。但是,请注意,下文将会用到的 Laravel 框架基类(base class)将会称为 Facade。 How Facades Are implemented in Laravel Facades 在 Laravel 中如何实现 你可能也知道,容器内的每个服务都有个唯一名称。在 laravel 应用中,可使用