什么是容器???_什么是容器?visual basic哪些对象可以用作容器?-程序员宅基地

技术标签: IT详情解答  知识杂谈  

              今天研究一下什么是容器???

              那么容器到底是什么呢?在csdn的论坛上人们众说纷纭:1)容器 和原意放东西的地方差不多,把链表了,数组一类的结构称作容器!2)在面向对象的编程中,你所面对的东西都叫对象,是想一下,来存放对象集合的东西叫什么?3)从特征上来看,容器主要分为顺序容器(list和vector)和关联容器(map和set)。通俗地说,vector就是可以自动增长大小的数组,它在内存中所处的空间是连续的,list就是链表,这两者的区别主要是关注它们的插入特性和对元素的后续访问要求。如果我们要随机访问一个容器,则vector 比list好得多;如果我们需要在容器的任意位置插入或删除元素,则list 又比vector好得多。4)容器就是装对象的东西。比如数组,链表,哈希表。
他们之所以被成为“容器”就是因为他们的存在在很大程序上就是为了容纳一组别的东西。

               但是在百度上的说法更让人易于理解,那就是实际上容器就是一个服务程序,在服务器一个端口就有一个提供相应服务的程序,而这个程序就是处理从客户端发出的请求,如java中的Tomcat容器,ASP的IIS或PWS都是这样的容器,一个服务器不止一个容器的

                webscope是一种容器技术

                何为容器?容器是一种服务调用规范框架,J2EE大量运用了容器和组件技术来构分层的企业级应用。在J2EE规范中,相应的有WEB Container和EJB Container等。

                 WEB Container,给处于其中的应用程序组件(JSP,SERVLET)提供一个环境,使JSP、SERVLET直接跟容器中的服务接口交互,不必关注其它系统问题。WEB Container主要有WEB服务器来实现。例如:TOMCAT,WEBLOGIC,WEBSPHERE等。比如,Resin 2.1.x以上版本提供的Servlet Container就实现了J2EE的Servlet 2.3规范。我们把遵守以上标准的WEB服务器就叫做J2EE中的WEB容器。WEB容器更多的是跟基于HTTP的请求打交道。而EJB容器不是。它是更多的跟数据库、其它服务打交道。但他们都是把与外界的交互实现从而减轻应用程序的负担。例如SERVLET不用关心HTTP的细节,直接引用环境变量。

                  session,request,response就行、EJB不用关心数据库连接速度、各种事务控制,直接由容器来完成。

                  1.1. 容器的职责
                  容器的职责因具体执行的服务调用规范的不同而有差别,比如Servlet Container只需实现Servlet 2.3规范。而Portlet Container,如Pluto,则需要具体实现基于JSR 168  portlet 规范,具体的技术规范,比如需要实现基于容器级的事件处理机制Action Event、Message Event等。从水平的方向来看,通常容器提供系统级的服务调用。
                  1.2. 容器与应用服务器
                  容器是服务调用规范的具体实现,比如EJB Container是对EJB 2.0规范的实现。然而,实现只是衡量规范的执行程度,通常容器是由应用服务器来具体执行,从这个层面来说,应用服务器又可以称之为容器的容器。
                  1.3. 容器与IOC原则
                  IOC,Inversion Of Control,即倒置控制,IOC自面向对象诞生起就存在,并不是最新技术,象SRP、OCP和DIP等面向对象的基本法则一样。Inversion Of Control,这个短语是由Brian Foote在他的一篇论文中最先使用的(http://www.laputan.org/drc/drc.html)。组件所需的一切通过Contexts、Configurations和Loggers的方式赋予组件。
                  在组件容器中,组件不需要实现或扩展(不依赖)容器类和接口,由容器在组件需要时提供其它依赖组件实例。反例:EJB其中的EJB组件需要实现几个接口,需要用JNDI或全局注册表得到其它EJB实例。
                   IOC,实现了组件与容器间的解耦,意味着在开发组件时同样可以采用从上至下的方法。不需要建立一个注册类,客户端必须调用此注册类才能获得组件实例。

                   各容器的区别

                    map 是关联容器他的每一个元素都是由一个键值和一个数据值组成的
                    使用区别:
                    1 .如果你需要高效的随即存取,而不在乎插入和删除的效率,使用vector
                    2 .如果你需要大量的插入和删除,而不关心随即存取,则应使用list
                    3 .如果你需要随即存取,而且关心两端数据的插入和删除,则应使用deque



版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/luyaran/article/details/55188469

智能推荐

ONNX_onnx-tool 0.7.4-程序员宅基地

文章浏览阅读6.8k次,点赞2次,收藏19次。简介Open Neural Network Exchange(ONNX,开放神经网络交换)格式,是一个用于表示深度学习模型的标准,可使模型在不同框架之间进行转移(一般用于中间部署阶段)。ONNX的规范及代码主要由微软,亚马逊 ,Facebook 和 IBM 等公司共同开发,以开放源代码的方式托管在Github上。目前官方支持加载ONNX模型并进行推理的深度学习框架有: Caffe2, PyT..._onnx-tool 0.7.4

扭蛋机小程序开发是属于小众赛道吗-程序员宅基地

文章浏览阅读159次。另一方面,随着移动互联网的普及和消费者对于互动娱乐的需求增加,扭蛋机小程序的市场前景也展现出一定的广阔性。此外,扭蛋机小程序的开发成本相对较低,但盈利能力较强,可以通过广告投放、虚拟商品销售等方式获得收益。一方面,扭蛋机小程序的开发可能被视为小众赛道,因为它涉及到特定的应用场景和用户需求。它可能针对的是特定的用户群体和市场需求,但同时也具有一些独特的优势和潜力。扭蛋机小程序的开发是否属于小众赛道,这个问题的答案可能因时间、市场需求和技术发展等因素的变化而有所不同。

linux shell学习笔记_bashrc.d-程序员宅基地

文章浏览阅读197次。shell 命令提示符不同的 Linux 发行版使用的提示符格式大同小异,例如在 CentOS 中,默认的提示符类似下面这样:[mozhiyan@localhost ~]$各个部分的含义如下:[]是提示符的分隔符号,没有特殊含义。mozhiyan表示当前登录的用户,我现在使用的是 mozhiyan 用户登录。@是分隔符号,没有特殊含义。localhost表示当前系统的简写主机名(完整主机名是 localhost.localdomain)。~代表用户当前所在的目录为主目录(home 目录)。_bashrc.d

2020中考可不可以用计算机,2020中考必读 | 中考电脑阅卷流程“潜规则”!读完孩子少丢20分!(转给中考生)...-程序员宅基地

文章浏览阅读155次。今天和大家来聊一聊考试阅卷的那些事情...现在的考试都趋于正规、公平化,特别是中考和高考这两场重要的升学考试,全国统一采取电子阅卷的方式来给学生阅卷。而大部分平时的模拟考试都不是电脑阅卷,又加上很多孩子都是临阵磨枪,如果不明白电脑阅卷的相关知识和技巧,会让孩子吃很多亏...所以今天,小编就带各位同学和家长朋友看看,孩子们的试卷在电脑里呈现出怎样的状态,看完就会恍然大悟,知道自己的小小细节,竟是丢分..._计算机中考充许拿答案吗

26. 报数游戏_【问题描述】有这样一个游戏,游戏规则是20个人做一圈循环报数,报数时需要跳过数字-程序员宅基地

文章浏览阅读192次。【问题描述】有这样一个游戏,游戏规则是20个人做一圈循环报数,报数时需要跳过数字3及其3的倍数,然后继续向下报数。请编程模拟这个游戏过程。【输出形式】参考:print(“报数{}!_【问题描述】有这样一个游戏,游戏规则是20个人做一圈循环报数,报数时需要跳过数字

c/c++|gdb 单点调试 | 多点调试|查看栈中信息|具体变量_debuginfo-install glibc-2.17-326.el7_9.x86_64 libg-程序员宅基地

文章浏览阅读1.1k次,点赞51次,收藏4次。#断点调试#gdb#单点#多点#栈中信息_debuginfo-install glibc-2.17-326.el7_9.x86_64 libgcc-4.8.5-44.el7.x86_64 lib

随便推点

log4j.xml配置详解-程序员宅基地

文章浏览阅读1.6k次,点赞2次,收藏8次。log4j.xml配置详解1.配置详解1.1 AppenderAppender为日志输出目的地,Log4j提供的appender有以下几种:ConsoleAppender: org.apache.log4j.ConsoleAppender,日志输出到控制台;FileAppender:org.apache.log4j.FileAppender,输出到文件;RollingFileAppe..._log4j.xml配置

warning: go env -w GO111MODULE=…does not override conflicting OS environment variable   _warning: go env -w go111module=... does not overri-程序员宅基地

文章浏览阅读1.4w次,点赞3次,收藏2次。warning: go env -w GO111MODULE=… does not override conflicting OS environment variable 去掉勾选_warning: go env -w go111module=... does not override conflicting os environm

CCF201709-2公共钥匙盒(C语言100分,使用C++sort函数)_公共钥匙盒ccfc++语言-程序员宅基地

文章浏览阅读265次。题目问题描述  有一个学校的老师共用N个教室,按照规定,所有的钥匙都必须放在公共钥匙盒里,老师不能带钥匙回家。每次老师上课前,都从公共钥匙盒里找到自己上课的教室的钥匙去开门,上完课后,再将钥匙放回到钥匙盒中。  钥匙盒一共有N个挂钩,从左到右排成一排,用来挂N个教室的钥匙。一串钥匙没有固定的悬挂位置,但钥匙上有标识,所以老师们不会弄混钥匙。  每次取钥匙的时候,老师们都会找到自己所需要的钥匙将其取走,而不会移动其他钥匙。每次还钥匙的时候,还钥匙的老师会找到最左边的空的挂钩,将钥匙挂在这个挂钩上。如果_公共钥匙盒ccfc++语言

R语言可视化之UpSetR包-程序员宅基地

文章浏览阅读2.2k次。集合可视化我们用得最多的是韦恩图,韦恩图在集合数少的时候是很好用的,但是当集合数多比如五个以上的时候那就会看花眼了,比如下面这副含有6个集合韦恩图,是发表在Nature上的文章里的,漂亮是漂亮,但是眼都快看花了。今天介绍一个R包UpSetR,专门用来集合可视化,来源于UpSet,Python里面也有一个相似的包py-upset。此外还有个UpSetR..._upset(fromlist(data)show.numbers=6

990-22产品经理:The benefits of business analytics 业务分析的优势-程序员宅基地

文章浏览阅读983次,点赞18次,收藏7次。商业分析是查看和评估公司已经掌握的大量数据,并使用这些数据做出数据驱动的决策的过程。它不仅仅是通过数字来了解发生了什么。相反,商业分析还致力于洞察事情发生的原因,并建议下一步采取什么步骤。

Python中两种网络编程方式:Socket和HTTP协议_python如何运行没有http协议-程序员宅基地

文章浏览阅读1k次,点赞32次,收藏23次。本文深入介绍了Python中的网络编程,重点探讨了两种主要方式:Socket编程和基于HTTP协议的网络编程。首先,我们了解了Socket编程,它是一种底层的网络通信方式,可以实现自定义的通信协议,具有灵活性和高度控制性。我们通过示例演示了如何使用Socket编程在服务器端和客户端之间进行简单的通信,并介绍了如何使用多线程来处理多个客户端的连接请求,以提高服务器的并发处理能力。其次,我们介绍了基于HTTP协议的网络编程,这是一种更高层次的抽象,适用于构建Web应用、访问API等场景。我们使用了。_python如何运行没有http协议

推荐文章

热门文章

相关标签