容器

Spring源码系列2 - BeanFactory体系结构(BeanFactory和ApplicationContext)

China☆狼群 提交于 2020-04-05 19:42:35
BeanFactory体系结构 上面是BeanFactory的体系图,其有两个主要分支: ①一条是右侧部分的BeanFactory到最后的XmlBeanFactory这条分支。 该分支是IOC容器的底层设计,最后的DefaultListableBeanFactory则是spring提供给我们的作为默认的功能完整的底层容器来使用。该类还有个子类XmlBeanFactory,顾名思义是以XML配置方式来使用,但从Spring3.1开始XmlBeanFactory被标记为了过时的类,并推荐我们直接使用DefaultListableBeanFactory,配合XmlBeanDefinitionReader一起使用。 ClassPathResource resource = new ClassPathResource("classpath:com/lp/bean.xml"); DefaultListableBeanFactory factory = new DefaultListableBeanFactory(); XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(factory); //加载Bean定义 reader.loadBeanDefinitions(resource); //获取Bean User user =

Spring入门

杀马特。学长 韩版系。学妹 提交于 2020-04-05 18:18:15
Spring入门案例 Spring简介 Spring是什么 Spring 是一个IOC(控制反转)和AOP(面向切面编程)为内核的轻量级容器框架。 Spring 使得创建java企业级应用变得容易,提供了在企业环境中使用Java语言所需的一起,可以根据应用程序的需求灵活地创建多种体系结构。 Spring核心 IOC AOP Spring优势 轻量级 声明式事务支持 方便程序测试 方便集成优秀框架 Spring体系结构 程序的耦合和解耦 耦合:程序之间依赖关系 解耦:降低程序间依赖 解决思路: 编译期间不依赖、运行时才依赖 通过配置文件的方式,来获取要使用的对象全限定类型 程序中使用反射机制创建对象,避免使用 new 关键字创建对象 解决思路 工厂模式 解耦: DEMO Spring 的 IOC Spring入门案例 创建maven工程 配置依赖 <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.0.2.RELEASE</version> </dependency> </dependencies> 创建包目录 创建 Spring 配置文件 ApplicationContext.xml 把对象交给

Spring Framework之IoC容器

為{幸葍}努か 提交于 2020-04-05 17:33:24
目录 Spring IoC 概述 问题 依赖倒置原则 (Dependency Inversion Principle) 控制反转 (Inversion of Control) 依赖注入(Dependency Inversion) 依赖倒置原则 、控制反转 、依赖注入的关系 优点 IoC 容器 BeanFactory ApplicationContext IoC容器的依赖注入 基于注解定义Bean 自动装配 @Resource @Autowired @Qualifier 基于Java类配置 @Bean Bean的作用域 singleton prototype FactoryBean 解释说明 使用场景 应用案例 IoC容器内部关系 JSR-250注释 @Resource @PostConstruct @PreDestroy 解释 参考 Spring IoC 概述 问题 1.什么是依赖倒置? 2.什么是控制反转? 3.什么是依赖注入? 4.它们之间的关系是怎样的? 5.优点有哪些? 依赖倒置原则 (Dependency Inversion Principle) ​ 依赖倒置是一种设计原则。 ​ 依赖倒置包括三层含义:(1)高层模块不应该直接依赖于底层模块,两者都应依赖其抽象;(2)抽象不应依赖于细节;(3)细节应该依赖于抽象。 控制反转 (Inversion of Control) ​

第29 章 : 安全容器技术

大兔子大兔子 提交于 2020-04-05 16:53:04
安全容器技术 本文将主要分享以下五方面的内容: 缘起:安全容器的命名 间接层:安全容器的精髓 Kata Containers:云原生化的虚拟化 gVisor:进程级虚拟化 安全容器:不止于安全 缘起:安全容器的命名 Phil Karlton 有一句名言:“计算机科学界只有两个真正的难题——缓存失效和命名。” 对我们容器圈而言,我相信“命名”绝对配得上这句话。这毫无疑问是一件让老开发者沉默、让新人落泪的事情。仅就系统软件而言,我们当今比较通行地称为“Linux 容器技术”这个概念,它曾经用过的名字还有 Jail、Zone、Virtual Server、Sandbox 等。同样,在早期虚拟化的技术栈里也把一类虚拟机叫做容器,毕竟这个词本身就指代那些用来包容、封装和隔离的器物。它实在太过常见了,以至于以严谨著称的 Wikipedia,它的词条叫做“OS-Level Virtualization”(系统级虚拟化),从而回避了“什么是容器”这个问题。 在 2013 年,Docker 问世之后,容器这个概念伴随着不可变基础设施、云原生这一系列概念在随后的几年间以摧古拉朽之势颠覆了基于“软件包 + 配置”这种细粒度组合的应用部署,用简单的声明式策略和不可变的容器就清爽地定义了软件栈。应用怎么部署,在这儿似乎有点离题了,我在这里想要强调的是: “云原生语境下的容器,实质是“应用容器”—

通过Portworx在AWS上运行高可用SQL Server容器

|▌冷眼眸甩不掉的悲伤 提交于 2020-04-05 15:45:01
通过Portworx云原生存储,在Amazon EKS里运行高可用SQL Server容器 在本文我们将分析,如何使用Amazon Elastic Container Service for Kubernetes (Amazon EKS, https://amazonaws-china.com/eks/),来在容器中部署Microsoft SQL Server。文中讨论的方式和与原理,也适用于其他需要高可用和持久性、并符合可复用的DevOps方式的有状态应用。例如运行MongoDB、Apache Cassandra、MySQL、或者大数据处理等。 首先能够被支持在容器中运行的是SQL Server 2017版本。我们可以在Linux容器中,使用Kubernetes (https://amazonaws-china.com/kubernetes/)来运行SQL Server生产负载。 Microsoft SQL Server是被广泛使用的数据库。SQL Server提供一系列很不错的功能,也有很不错的开发者社区。但是它需要比较多的运维,也比开源的或者云端的数据库成本要更高。很多为了降低成本的用户会转向开源方案来降低软件授权的成本。另一些用户会迁移工作负载到关系数据库管理系统(RDBMS)服务里,比如Amazon RDS for Microsoft SQL Server或者Amazon

Kubernetes 资源清单 常用字段,Pod 实例

非 Y 不嫁゛ 提交于 2020-04-04 18:43:59
一 集群资源分类 k8s 中所有的内容都抽象为资源,资源实例化之后叫做对象。 1.名称空间级别:仅在此名称空间下生效。 ① 工作负载型资源(workload):Pod,ReplicaSet,Deployment,StatefulSet,DaemonSet,Job,CronJob( ReplicationController 在 v1.11 版本被废弃 ) ② 服务发现及负载均衡型资源(ServiceDiscovery LoadBalance ):Service,Ingress... ③ 配置与存储型资源:Volume( 存储卷 ),CSI(容器存储接口,可以扩展各种各样的第三方存储卷) ④ 特殊类型的存储卷:ConfigMap(当配置中来使用的资源那类型),Secret(保存敏感数据),DownwardAPI(把外部环境中的信息输出给容器) 2.集群级别:不管在什么名称空间下定义,在其他的名称空间中都能看的到。 例如:Namespace,Node,Role,ClusterRole,RoleBinding,ClusterRoleBinding 3.元数据型 例如:HPA,PodTemplate,LimitRange 二 常用字段说明 1.必须存在的属性 参数名 字段类型 说明 version String K8S API 的版本,目前基本是v1,可以用 kubectl api

Docker Hello World

时光总嘲笑我的痴心妄想 提交于 2020-04-04 10:29:05
docker run 运行一个应用程序 docker run ubuntu:15.10 /bin/echo "Hello world" 镜像ubuntu,版本15.10,Docker 首先从 本地 主机上查找镜像是否存在,如果不存在,Docker 就会从镜像仓库 Docker Hub 下载公共镜像。 问题本地镜像地址? /Users/{YourUserName}/Library/Containers/com.docker.docker/Data 里面没发现镜像的名字??待确认 Docker Hub地址? https://hub.docker.com/ 交互式容器 [running]jihite@:~$ docker run -i -t ubuntu bin/bash root@f0d76625c291:/# echo "Hello World" Hello World root@f0d76625c291:/# exit exit 参数含义 -t 在新容器指定一个终端 -i 对容器进行交互 分析 第二行开头是root@, 表示已经进入容器了 启动、关闭容器(后台模式) [running]jihite@:~$ docker run -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1; done"

web程序常见错误及解决方法

给你一囗甜甜゛ 提交于 2020-04-04 05:10:54
404错误产生原因及解决方法 在刚开始进行Web应用开发的时候,经常看见页面出现404这个数字,我们一般会称之为运行产生了404错误。类似于404这个数字,还有可能在页面上看到405、500这两个数字,他们都是服务器执行完客户端的请求以后,返回给客户端的一个关于执行结果的状态编码说明。 如果在运行结果页面中没有看到期待的页面,却看到了404、405、500这样的数字,那么代表着服务器告诉客户端运行产生了错误,掌握何种错误情况产生对应的数字将有利于问题的解决。 404产生的原因为Web服务器(容器)根据请求地址找不到对应资源,以下情况都会出现404的错误提示: 输入的地址有误(应用名大小写不正确,名称拼写不正确) 在web.xml文件中和中的两个不一致 没有将工程部署到Tomcat的webapps下面 Web工程部署时的结构没有遵循Servlet的规范 具体的解决办法就是根据上面提到的4种情况,逐条进行检查。 容器如何找到service()方法 当在浏览器中输入 http://localhost:8080/firstweb/sayHi 这个地址后,容器是如何找到 HelloServlet.class这个文件并执行的呢? 首先容器会根据firstweb这个应用名找到位于webapps下面对应的文件夹,然后根据地址中的“/sayHi”到web.xml文件中寻找与之匹配的节点

web程序常见错误及解决方法

こ雲淡風輕ζ 提交于 2020-04-04 05:08:29
404错误产生原因及解决方法 在刚开始进行Web应用开发的时候,经常看见页面出现404这个数字,我们一般会称之为运行产生了404错误。类似于404这个数字,还有可能在页面上看到405、500这两个数字,他们都是服务器执行完客户端的请求以后,返回给客户端的一个关于执行结果的状态编码说明。 如果在运行结果页面中没有看到期待的页面,却看到了404、405、500这样的数字,那么代表着服务器告诉客户端运行产生了错误,掌握何种错误情况产生对应的数字将有利于问题的解决。 404产生的原因为Web服务器(容器)根据请求地址找不到对应资源,以下情况都会出现404的错误提示: 输入的地址有误(应用名大小写不正确,名称拼写不正确) 在web.xml文件中和中的两个不一致 没有将工程部署到Tomcat的webapps下面 Web工程部署时的结构没有遵循Servlet的规范 具体的解决办法就是根据上面提到的4种情况,逐条进行检查。 容器如何找到service()方法 当在浏览器中输入 http://localhost:8080/firstweb/sayHi 这个地址后,容器是如何找到 HelloServlet.class这个文件并执行的呢? 首先容器会根据firstweb这个应用名找到位于webapps下面对应的文件夹,然后根据地址中的“/sayHi”到web.xml文件中寻找与之匹配的节点

Web服务器(容器)请求常见的错误及其解决方法

夙愿已清 提交于 2020-04-04 05:05:29
首先我们来看看容器如何找到service()方法? (1)当在浏览器中输入 http://localhost:8080/firstweb/sayHi 这个地址后,容器是如何找到 HelloServlet.class这个文件并执行的呢? (2)首先容器会根据firstweb这个应用名找到位于webapps下面对应的文件夹, (3)然后根据地址中的“/sayHi”到web.xml文件中寻找与之匹配的<url-pattern>节点,找到匹配的节点后会找到与该节点紧邻的<servlet-name>节点,获取名称并在此寻找与该名称相等的<servlet-name>节点,找到相等的节点后,搜寻该节点下面紧邻的<servlet-class>节点,于是获取到了与该地址相对应的类名,借助于ClassLoader加载该类文件,创建对象并调用service()方法,客户端即看到了与该地址匹配的运行结果。 一、404错误产生原因及解决方法 在刚开始进行Web应用开发的时候,经常看见页面出现404这个数字,我们一般会称之为运行产生了404错误。类似于404这个数字,还有可能在页面上看到405、500这两个数字,他们都是服务器执行完客户端的请求以后,返回给客户端的一个关于执行结果的状态编码说明。 如果在运行结果页面中没有看到期待的页面,却看到了404、405、500这样的数字