定位器

设计模式之服务定位器模式

依然范特西╮ 提交于 2019-11-29 05:42:59
1.简介 菜鸟教程 中: 服务定位器模式(Service Locator Pattern)用在我们想使用 JNDI 查询定位各种服务的时候。考虑到为某个服务查找 JNDI 的代价很高, 服务定位器模式充分利用了缓存技术 。在首次请求某个服务时, 服务定位器在 JNDI 中查找服务,并缓存该服务对象 。当再次请求相同的服务时,服务定位器会在它的缓存中查找,这样可以在很大程度上提高应用程序的性能。以下是这种设计模式的实体。 服务(Service) - 实际处理请求的服务。对这种服务的引用可以在 JNDI 服务器中查找到。 Context / 初始的 Context - JNDI Context 带有对要查找的服务的引用。 服务定位器(Service Locator) - 服务定位器是通过 JNDI 查找和缓存服务来获取服务的单点接触。 缓存(Cache) - 缓存存储服务的引用,以便复用它们。 客户端(Client) - Client 是通过 ServiceLocator 调用服务的对象。 通过当前的服务定位器中的serviceLocator中获得服务资源,使用特定的词获得特定的service,(缓存中存在返回缓存数据,否者使用initContext获取service) 2.例子 模拟资源的查找 3.创建接口 Service 中的内容: /** * @description 服务接口

python DataScience数据分析笔记day02

房东的猫 提交于 2019-11-27 20:34:38
day02-数据可视化-坐标-图例-标注-子图-刻度-半对数坐标-散点图-条形图-饼状图-等高线 3、设置坐标范围 mp.xlim(水平坐标最小值,水平坐标最大值) mp.ylim(垂直坐标最小值,垂直坐标最大值) 示例: import numpy as np import matplotlib.pyplot as mp x = np.linspace(-np.pi,np.pi,1000) cos_y = np.cos(x) / 2 sin_y = np.sin(x) mp.xlim(x.min() * 1.2,x.max() * 1.2 ) mp.ylim(sin_y.min() * 1.2,sin_y.max() * 1.2 ) mp.plot(x,cos_y,linestyle='--',linewidth= 1 ,color = 'green') # -- 为虚线 mp.plot(x,sin_y,linestyle=':', linewidth = 4,color='blue') # : 为点线 mp.show() 4、设置坐标刻度 mp.xticks([位置序列],[标签序列]),标签序列可以不需要 mp.yticks([位置序列],[标签序列]) 示例: import numpy as np import matplotlib.pyplot as mp x = np

C++STL中的set用法

瘦欲@ 提交于 2019-11-27 18:56:44
目录 先来看看基本用法 关于set 【关联型容器概述】 关于set有下面几个问题: (1)为何map和set的插入删除效率比用其他序列容器高? (2)为何每次insert之后,以前保存的iterator不会失效? (3)当数据元素增多时,set的插入和搜索速度变化如何? 【创建】 【删除】 【关于set中元素的顺序】 默认定义了比较函数 自定义排序函数 【set中插入结构体】 先来看看基本用法 #include<iostream> #include<set>//set 需要的头文件 using namespace std; int main(){ multiset<int> myset;//创建set for(int i = 0; i < 10; i++){ myset.insert(10-i); //插入元素 } cout<<"第一个元素:"; cout<<*myset.begin() <<endl; //返回set容器的返回指向第一个元素的迭代器 记得要加星号begin()返回的是一个指针 cout<<"最后一个元素:"; cout<< *myset.end() <<endl; //返回set容器的最后一个元素 cout<<"是否为空:"; cout<<boolalpha<< myset.empty() <<endl; //判断set容器是否为空 cout<< "元素个数:";

STL中的set使用方法详细!!!!

老子叫甜甜 提交于 2019-11-27 18:55:37
1.关于set C++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vector, string, list等方便的容器,更重要的是STL封装了许多复杂的数据结构算法和大量常用数据结构操作。vector封装数组,list封装了链表,map和set封装了二叉树等,在封装这些数据结构的时候,STL按照程序员的使用习惯,以成员函数方式提供的常用操作,如:插入、排序、删除、查找等。让用户在STL使用过程中,并不会感到陌生。 关于set,必须说明的是set关联式容器。set作为一个容器也是用来存储同一数据类型的数据类型,并且能从一个数据集合中取出数据,在set中每个元素的值都唯一,而且系统能根据元素的值自动进行排序。应该注意的是set中数元素的值不能直接被改变。C++ STL中标准关联容器set, multiset, map, multimap内部采用的就是一种非常高效的平衡检索二叉树:红黑树,也成为RB树(Red-Black Tree)。RB树的统计性能要好于一般平衡二叉树,所以被STL选择作为了关联容器的内部结构。 关于set有下面几个问题: (1)为何map和set的插入删除效率比用其他序列容器高? 大部分人说,很简单,因为对于关联容器来说,不需要做内存拷贝和内存移动。说对了,确实如此。set容器内所有元素都是以节点的方式来存储,其节点结构和链表差不多