容器

Aop学习笔记

旧街凉风 提交于 2020-01-05 05:40:48
在学习编程这段时间我想大家都是习惯了面向过程或者面向对象的思想来编程,较少或者没有接触过面向方面编程的思想。 那么什么是面向方面(Aspect)——其实就是与核心业务处理逻辑无关的切面,例如记录日志、事务控制、缓存处理、权限控制等。 这些行为与商业核心业务逻辑是毫无关系的也就是可以完全剥离出来形成一个统一的解决方案,其实这就是Aop的核心思想。接下 来讲解关于微软提供的Unity组件中的AOP。 一、AOP中的几个概念 1):切面(Aspect):对横切性关注点的抽象,说白了就是对某种功能的抽象,日志、事务、权限等都是一个切面; 2):连接点(Joinpoint):在核心业务逻辑中可以进行切入的点,可以理解为切入点的集合(商业逻辑中可能要切入日志、权限、事务等,这些就是连接点); 3):切入点(Pointcut):指对连接点进行拦截的定义,切入点决定了Advice需要切入的具体连接点,Advice->Pointcut->Joinpoint; 4):通知(Advice):拦截到连接点之后所要做的事情(前置通知、返回后通知、环绕通知、抛出异常后通知等); 5):目标对象(Target Object):需要代理的目标对象,目标对象本身只剩下了干净的业务代码,日志、权限等功能需要AOP切入; 6):代理对象(Proxy Object) : 通过AOP容器产生的对象,是由Target

java容器集合

家住魔仙堡 提交于 2020-01-05 02:27:33
java 集合分为 Collection 和 Map 两大类 Collection 是 Java 集合框架的顶层接口,它是对容器类进行增、删、改、查的定义,同时继承了 Iterable 接口,具有对集合或容器中的元素进行遍历的能力 Collection 继承了 Iterable 接口,具有了快速遍历的能力,Iterable 接口中定义了获取集合迭代器的方法 iterator(),该方法返回一个容器的迭代器,迭代器接口中定义 2 个方法用于结合 while 或 for 迭代 根据存储数据结构把 Collection 细分为两种子集合:   List:元素有序,可重复(不唯一)的集合,包含以下三个实现类:     ArrayList 是 List 接口的可变数组的实现类,可以自动拓容     Vector(已过时)     LinkedList 是 List 的实现类,底层数据结构是链表   Set:元素无序,唯一的集合,包含以下两个实现类:     HashSet 是 Set 接口的实现类,底层数据结构是 Hash 表/散列表,查找效率高、添加效率高、删除效率高       LinkedHashSet 底层数据结构是 Hash 表+链表,通过内部的链表维持添加次序,继承于 HashSet     TreeSet 是 Set 接口的实现类,底层数据结构是二叉树,排序后查询速度比

Java中的容器

China☆狼群 提交于 2020-01-05 01:58:38
在书写程序的时候,我们常常需要对大量的对象引用进行管理。为了实现有效的归类管理,我们常常将同类的引用放置在同一数据容器中。 由于数据容器中存放了我们随时可能需要使用到的对象引用,所以一般的数据容器要都要能能提供方便的查询、遍历、修改等基本接口功能。 早期的OOP语言都通过数组的方式来实现对引用集的集中管理和维护。 但是数组方式下,数组大小需要提前被确定,并不允许修改大小,导致其作为一种灵活的数据容器的能力的功能大为下降。 为了方便的利用数据容器进行引用的管理,Java中提供了丰富的数据容器以满足程序员多样化的需求。 JAVA的容器---List,Map,Set Collection ├List │├LinkedList │├ArrayList │└Vector │ └Stack └Set Map ├Hashtable ├HashMap └WeakHashMap !其中的Vector和Stack类现在已经极少使用。 从容器类图中可以发现,数据容器主要分为了两类: Collection: 存放独立元素的序列。 Map:存放key-value型的元素对。(这对于一些需要利用key查找value的程序十分的重要!) 从类体系图中可以看出,Collection定义了Collection类型数据的最基本、最共性的功能接口,而List对该接口进行了拓展。 其中各个类的适用场景有很大的差别

Java中的容器类(List,Set,Map,Queue)

我的梦境 提交于 2020-01-05 01:57:08
Java中的容器类(List,Set,Map,Queue) 一、基本概念   Java容器类类库的用途是“保存对象”,并将其划分为两个不同的概念:   1)Collection。一个独立元素的序列,这些元素都服从一条或多条规则。List必须按照插入的顺序保存元素,而Set不能有重复的元素。Queue按照排队规则来确定对象产生的顺序(通常与它们被插入的顺序相同)。   2)Map。一组成对的“键值对”对象,允许你使用键来查找值。ArrayList允许你使用数字来查找值,因此在某种意义上讲,它将数字与对象关联在了一起。映射表允许我们使用另一个对象来查找某个对象,它也被称为“关联数组”,因为它将某些对象与另外一些对象关联在了一起;或者被称为“字典”,因为你可以使用键对象来查找值对象,就像在字典中使用单词来定义一样。   完整容器分类,包括抽象类和遗留构建(不包括Queue的实现): 注意:   Collections是java.util下的类,包含各种有关集合操作的静态方法;而Collection是java.util下的接口,是各种集合结构的父接口。 二、容器类的相关描述 三、总结 1. 各种Collection和各种Map都可以在你向其中添加更多的元素时, 自动调整其尺寸 。容器不能持有基本类型,但是自动包装机制会仔细地执行基本类型到容器中的所持有的包装器类型之间的双向转换。 2.

k8s args和command

半世苍凉 提交于 2020-01-05 00:32:18
1.介绍 Docker 与 Kubernetes 中对应的字段名称。 如果在容器配置中没有设置 command 或者 args,那么将使用 Docker 镜像自带的命令及其入参。 如果在容器配置中只设置了 command 但是没有设置 args,那么容器启动时只会执行该命令,Docker 镜像中自带的命令及其入参会被忽略。 如果在容器配置中只设置了 args,那么 Docker 镜像中自带的命令会使用该新入参作为其执行时的入参。 如果在容器配置中同时设置了 command 与 args,那么 Docker 镜像中自带的命令及其入参会被忽略。容器启动时只会执行配置中设置的命令,并使用配置中设置的入参作为命令的入参。 下表涵盖了各类设置场景: #第一个表示容器没有定义任何的命令和参数,使用默认的镜像命令和参数 #第二个表示容器只定义了命令,最后就使用容器的命令但是不带参数 #第三个表示容器定义了参数,最后使用镜像的命令,容器的参数 #第四个表示容器定义了命令和参数,最后就使用容器的命令和参数 2.实例 apiVersion: v1 kind: Pod metadata: name: ng1 namespace: default spec: nodeName: cs25 containers: - name: ng1 image: ng1 command: [ "/bin/sh","-c

Docker 常用命令

浪子不回头ぞ 提交于 2020-01-05 00:11:55
一、Docker镜像操作基础命令 [root@localhost ~]# docker search 镜像名称 //搜索镜像(在docker hub官网上进行查找) [root@localhost ~]# docker pull 镜像名称 //下载镜像(如果不指定镜像标签默认下载最新版的镜像) [root@localhost ~]# docker push 仓库名称/仓库账号/镜像名称 //上传镜像 [root@localhost ~]# docker images //查询本地下载的所有镜像 [root@localhost ~]# docker images 镜像名称 //查询指定的镜像 [root@localhost ~]# docker inspect 容器名称或容器ID //查询镜像的详细信息 [root@localhost ~]# docker tag 原本的镜像名称及标签 生成以后的镜像名称及标签 //为本地镜像起一个新的名称、标签(源镜像还存在) [root@localhost ~]# docker rmi 镜像名或镜像ID //删除本地镜像 [root@localhost ~]# docker rmi 镜像名或镜像ID //强制删除本地镜像 //注意:强制的这种方式适用于有容器正在使用这个镜像 //这种方式容器如果在运行时也是无法删除的,容器停止后删除的话

Docker和虚拟机有什么差别?

ぐ巨炮叔叔 提交于 2020-01-04 21:23:41
一、宿主如果和容器系统不同的话,那不是和虚拟机一样,一层层的调用,那么Docker和虚拟机还有什么差别? 要把Windows和Linux分清楚,更要把内核(kernel)和用户空间(userland)分清楚。容器内的进程是直接运行于宿主内核的,这点和宿主进程一致,只是容器的userland不同,容器的 userland由容器镜像提供,也就是说镜像提供了rootfs。假设宿主是Ubuntu,容器是CentOS。CentOS 容器中的进程会直接向Ubuntu宿主内核发送syscall,而不会直接或间接的使用任何 Ubuntu 的 userland 的库。 这点和虚拟机有本质的不同,虚拟机是虚拟环境,在现有系统上虚拟一套物理设备,然后在虚拟环境内运行一个虚拟环境的操作系统内核,在内核之上再跑完整系统,并在里面调用进程。 还以上面的例子去考虑,虚拟机中,CentOS的进程发送syscall内核调用,该请求会被虚拟机内的CentOS的内核接到,然后CentOS内核访问虚拟硬件时,由虚拟机的服务软件截获,并使用宿主系统,也就是Ubuntu的内核及userland的库去执行。 而且,Linux和Windows在这点上非常不同。Linux的进程是直接发syscall的,而Windows则把 syscall隐藏于一层层的DLL服务之后,因此Windows的任何一个进程如果要执行,不仅仅需要

web前端入门到实战:CSS背景background

随声附和 提交于 2020-01-04 19:24:49
1、背景颜色 background-color 取值:合法的颜色值和transparent 注:背景颜色和背景图片,填充都是从边框开始 2、背景图片 background-image:url(图片路径) 3、背景图平铺 background-repeat: 取值: repeat:平铺 no-repeat:不平铺 repeat-x:水平方向平铺 repeat-y:垂直方向平铺 4、背景图定位 background-posion:x y,设定的值都是相对于浏览器,不是相对于容器 取值: (1):x,y都是以px为单位的数字 +:右,下 -:左上 (2)x% y% (3)关键字 x:left/center/right y:top/center/bottom 5、背景图片的尺寸 background-size:x y 取值: (1)x y以px为单位的数字 (2)x% y% 相对原图的%比 (3)cover:容器被图片100%覆盖,哪怕图片显示不全,也要把容器覆盖 (4)contain:容器要把图片100%包含起来,哪怕图片缩小到看不到,也要把整张图片都包含住 专门建立的学习Q-q-u-n⑦⑧④-⑦⑧③-零①② 分享学习方法和需要注意的小细节,不停更新最新的教程和学习技巧(从零基础开始到前端项目实战教程,学习工具,全栈开发学习路线以及规划) 6、背景图固定 将背景图固定在网页某个位置

什么是依赖注入与Ioc容器了

二次信任 提交于 2020-01-04 17:27:31
背景 在很多编程语言(例如java)开发中,程序员在某个类中需要依赖其它类的方法,则通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的类实例不好统一管理,一旦有修改,牵扯的类会很多。 最早在java的spring提出了依赖注入的思想,即依赖类不由程序员实例化,而是通过spring容器帮我们new指定实例并且将实例注入到需要该对象的类中。目前许多主流PHP框架也使用了依赖注入容器,如ThinkPHP、Laravel等。 一、概念 1、容器:字面上理解就是装东西的东西。常见的变量、对象属性等都可以算是容器。一个容器能够装什么,全部取决于你对该容器的定义。当然,现在我们讨论的是这样一种容器,它存放的不是文本、数值,而是对象、对象的描述(类、接口)或者是提供对象的回调(闭包),通过这种容器,我们得以实现许多高级的功能,其中最常提到的,就是 “解耦”、“依赖注入”。 2、IoC - Inversion of Control 控制反转 控制反转是从容器的角度在描述,即:容器控制应用程序,由容器反向的向应用程序注入应用程序所需要的外部资源。 3、DI - Dependency Injection 依赖注入 依赖注入是从应用程序的角度在描述,可以把依赖注入,即:应用程序依赖容器创建并注入它所需要的外部资源。 备注:依赖注入和控制反转说的是同一个东西,是一种设计模式

Docker初学者的常用命令

十年热恋 提交于 2020-01-04 03:18:32
一些Docker常用的命令整理 常用可选参数说明: * -i 表示以交互模式运行容器。 * -t 表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。 * --name 为创建的容器命名。 * -v 表示目录映射关系,即宿主机目录:容器中目录。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。 * -d 会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器)。 * -p 表示端口映射,即宿主机端口:容器中端口。 * --network=host 表示将主机的网络环境映射到容器中,使容器的网络与主机相同。 创建容器 docker run [option] 镜像名 [向启动容器中传入的命令] 交互式容器 docker run -it --name=ubuntu1 镜像名 /bin/bash 守护式容器 docker run -dit --name=ubuntu1 镜像名 /bin/bash 进入到容器内部 docker exec -it ubuntu2 /bin/bash 将容器制作成镜像 docker commit 容器名 镜像名 镜像打包备份 docker save -o 保存的文件名 镜像名 镜像解压 docker load -i 文件路径/备份文件 Redis https://hub.docker.com/_/redis