容器

Spring中ioc的实现原理

五迷三道 提交于 2020-02-27 06:45:09
学习过Spring框架的人一定都会听过Spring的IoC(控制反转) 、DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC 、DI这两个概念是模糊不清的,是很难理解的,今天和大家分享网上的一些技术大牛们对Spring框架的IOC的理解以及谈谈我对Spring Ioc的理解。 一、分享Iteye的开涛对Ioc的精彩讲解   首先要分享的是Iteye的开涛这位技术牛人对Spring框架的IOC的理解,写得非常通俗易懂,以下内容全部来自原文,原文地址:http://jinnianshilongnian.iteye.com/blog/1413846 1.1、IoC是什么    Ioc—Inversion of Control,即“控制反转”,不是什么技术,而是一种设计思想。 在Java开发中, Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。 如何理解好Ioc呢?理解好Ioc的关键是要明确“谁控制谁,控制什么,为何是反转(有反转就应该有正转了),哪些方面反转了”,那我们来深入分析一下:   ● 谁控制谁,控制什么: 传统Java SE程序设计,我们直接在对象内部通过new进行创建对象,是程序主动去创建依赖对象;而IoC是有专门一个容器来创建这些对象,即由Ioc容器来控制对 象的创建; 谁控制谁?当然是IoC 容器控制了对象;控制什么

Effective STL 条款18

随声附和 提交于 2020-02-27 05:58:40
Item18避免使用vector<bool> 做为一个STL容器,vector<bool>有两个问题.第一,它不是一个真正STL容器,第二,它并不保存bool类型. 除此以外,并没有太多东西与本节题目有关(译注,还不够多吗) 一个东西不能成为一个STL容器,只因为会有人说它是一个(译注,:( ).一个东西要成为STL容器,必须满足所有 列于C++标准23.1节的容器要求.在这些要求中,有这样一条:如果C是一个T类型元素容器,并且C支持operator[] 那么以下代码必须能够编译: T *p = &c[0]; // initialize a T* with the address // of whatever operator[] returns 换句话说,如果你使用operator[]来得到Container<T>中的一个T对象,你可以对它取地址从而得到一个指针. (假设T没有重载opeartor&.译注:原句为This assumes that T hasn't perversely overloaded operators. 从意译)因此,如果vector<bool>可能成为容器,那么,这些代码必须编译通过: vector<bool> v; bool *pb = &v[0]; // initialize a bool* with the address of // what

MapReduce源码分析

*爱你&永不变心* 提交于 2020-02-27 02:28:56
mapreduce计算流程: 首先将block块切片,每个切片对应一个任务. 切片的目的 是将block数量和map任务数量解耦. map读取切片数据,默认按行读取,作为键值对交给map方法,其中key是当前读取的行在文件中的字节偏移量,value就是读取的当前行. map开始计算,自定义的逻辑 map将输出的kv首先写道环形缓冲区,在写之前计算分区号(默认按照key得hash值对reduce的个数取模) 环形缓冲区默认100MB,阈值80%,如果写入得kv对达到了80%则发生溢写,溢写到磁盘,如果溢写的文件数量达到了3个,则发生map端归并操作,此时如果指定了combiner,则按照combiner压缩数据. 当一个map任务完成之后,所有得reduce向其发生http get请求,下载他们所属的分区数据,此过程称为shuffle,洗牌. 当所有map任务运行结束,开始reduce任务 在reduce任务开始之前,如果有时间则进行shuffle文件的归并并落磁盘,如果没有时间,则直接归并按组发送给reduce方法,reduce迭代计算 reduce计算结束后将结果写道HDFS. 作业提交流程 1.客户端向RM取号 2.客户端检查作业输入输出,计算切片,解析配置信息 3.客户端将jar包\配置信息以及切片信息上传到HDFS 4.客户端向RM发送提交作业的请求 5.RM调度一个NM

docker镜像和容器的安装与使用

放肆的年华 提交于 2020-02-27 01:35:26
docker的安装 环境准备 配置yum源并安装docker 服务器ip 192.168.1.31 关闭防火墙 步骤一:docker镜像 1)配置IP [ root@docker1 ~ ] # vim /etc/sysconfig/network-scripts/ifcfg-eth0 # Generated by dracut initrd DEVICE = "eth0" ONBOOT = "yes" IPV6INIT = "no" IPV4_FAILURE_FATAL = "no" NM_CONTROLLED = "no" TYPE = "Ethernet" BOOTPROTO = "static" IPADDR = "192.168.1.31" PREFIX = 24 GATEWAY = 192.168.1.254 2)安装docker并设置开机自启动 [ root@docker1 ~ ] # yum -y install docker [ root@docker1 ~ ] # systemctl restart docker [ root@docker1 ~ ] # systemctl enable docker 镜像的基本使用 1)下载镜像 [ root@docker1 ~ ] # docker pull docker.io/busybox [ root@docker1

Docker 安装、操作常用命令

我的梦境 提交于 2020-02-26 22:10:49
Docker安装命令 Linux安装Docker // 仅此一条命令就可以搞定 yum -y install docker-io // 启动Docker // 同理,stop、restart意味着停止、重启Docker service docker start // 加入开机启动 chkconfig docker on 安装docker-compose pip install -U docker-compose Docker基本操作命令 创建容器 docker create Ubuntu:latest 启动容器 docker start [CONTAINER ID] 新建并启动容器 // 启动容器输出hello world之后,容器自动终止 docker run ubuntu /bin/echo 'hello world' // 启动一个bash终端,允许用户进行交互 // -t 选项让Docker分配一个伪终端并绑定到容器的标准输出上 // -i 让容器的标准输入保持打开 // 使用 Ctrl+d 或 exit 退出容器 docker run -t -i ubuntu:latest /bin/bash // 容器以守护态运行,即后台运行 // -d 选项让Docker以守护态运行 // 运行成功会返回一个唯一的ID docker run -itd ubuntu 终止容器运行

Docker 常用命令与操作

一世执手 提交于 2020-02-26 22:07:37
介绍 此命令集合版本为 1.11.1 及以上 基础类 查看docker信息 # 查看docker版本 docker version # 显示docker系统的信息 docker info # 日志信息 docker logs # 故障检查 service docker status # 启动关闭docker sudo service docker start|stop 日志类 查看容器日志 docker logs -f <容器名orID> docker daemon 日志位置 也称之为 引擎日志 根据系统不同各不相同 * CoreOS - journalctl -u docker.service * Ubuntu(16.04) - journalctl -u docker.service * Ubuntu(14.04) - /var/log/upstart/docker.log * Boot2Docker - /var/log/docker.log * Debian GNU/Linux 8 - journalctl -u docker.service * Debian GNU/Linux 7 - /var/log/daemon.log * CentOS 7/RHEL 7 - journalctl -u docker.service * CentOS - /var/log

自己整理的docker常用目录和知识(持续更新完善)

梦想的初衷 提交于 2020-02-26 16:30:45
目录 1.docker简介 2.docker安装 3.docker常用命令 4.docker镜像 5.docker容器数据卷 6.dockerFile 1.docker简介 2.docker安装 3.docker常用命令 1.帮助命令 查看版本信息:docker version 显示 docker 系统信息,包括镜像和容器数:docker info 帮助:docker [选项] --help 2.镜像命令 docker images:查看本地镜像 docker search [功能] 镜像名称:搜索镜像 docker pull 镜像名称[:Tag] :下载某个镜像,tag表示版本号,如docker pull tomcat:7.0 docker rmi [选项] 镜像ID/镜像名:tag:删除某个镜像,可以同时删除多个镜像 docker rmi -f $(docker images -qa):-f表示全部删除,-q表示显示镜像id,-a表示显示全部 和git一样,docker也有commit和push docker commit -a="作者名" -m = ”附加信息“ 容器id 新建的镜像名/版本 3.容器命令 docker run [功能选项] 镜像:新建并启动容器 --name:为容器指定一个名字,不指定则分配一个默认名字 -d:后台运行,以守护式运行 -it

DOCKER 05:数据持久化

|▌冷眼眸甩不掉的悲伤 提交于 2020-02-26 15:40:18
本文主要谈谈数据如何持久化保存下来! 数据持久化 volume 在服务环境中,更多的时候我们想要的是将容器的某些数据保存下来,如服务的日志,MySQL 的数据等等。 如果不做其他的配置,在容器删除之后,数据也会随之删除,这显然不符合我们用户的需求。 查看本机的 volume: docker volume ls 默认情况下应该是空的,如果你的不是,可能是之前运行过 redis 的原因,因为我现在已经删除了所有容器。 这里以一个 MySQL 容器为例,其中涉及到的参数可以参考以下链接: https://github.com/docker-library/docs/tree/master/mysql 运行 MySQL 容器: docker container run -d --name mysql-demo -e MYSQL_ALLOW_EMPTY_PASSWORD=yes mysql:5.7 设置 MySQL 登陆不需要密码! docker container run -d --name mysql-demo -e MYSQL_ALLOW_EMPTY_PASSWORD=yes mysql:5.7 进入容器创建数据库: docker container exec -it mysql-demo /bin/sh 结果如图: 此时查看 volume 情况: docker volume ls

Docker查看所有容器ip

人盡茶涼 提交于 2020-02-26 13:36:55
Docker查看所有容器ip $ curl - L https: / / github . com / hlwojiv / tools / releases / download / 1 . 0 / docker - allip - o / usr / local / bin / docker - allip && chmod + x / usr / local / bin / docker - allip 使用命令 docker - allip 来源: CSDN 作者: Diablogs 链接: https://blog.csdn.net/Diablogs/article/details/104513181

K8s学习记录-基础概念

自古美人都是妖i 提交于 2020-02-26 13:28:07
Server组件(主节点) Scheduler 负责介绍任务,选择合适的节点进行分配任务 APISERVER 所有服务访问统一入口 CrontrollerManage 资源管理 ETCD 键值对数据库 储存K8S集群所有重要信息(持久化) Node组件(节点) kubelet 直接跟容器引擎交互实现容器的生命周期管理 Kube-proxy 负责写入规则至 IPTABLES、IPVS 实现服务映射访问的 pod k8s中最小资源单位。相当于k8s管理的一台小型的计算机, pod 中容器使用共同的网络协议栈和存储 其他介绍 ReplicationController 用来确保容器应用的副本数始终保持在用户定义的副本数,即如果有容器异常退出,会自动创建新的 Pod 来替代;而如果异常多出来的容器也会自动回收。 在新版本的 Kubernetes 中建议使用 ReplicaSet 来取代 ReplicationControlle ReplicaSet 跟 ReplicationController 没有本质的不同,只是名字不一样,并且 ReplicaSet 支持集合式的 selector 虽然 ReplicaSet 可以独立使用,但一般还是建议使用 Deployment 来自动管理 ReplicaSet ,这样就无需担心跟其他机制的不兼容问题(比如 ReplicaSet 不支持