肝部有肿块肿块吃中药一序程得多少钱

一个检查程序运行时间的类 - 开源中国社区
当前访客身份:游客 [
当前位置:
发布于 日 16时,
一个关于测试程序运行时间的类,计算一段程序执行所花费的时间毫秒
代码片段(4)
1.&[代码]GetExecuteTime.class.php&&&&
*检测程序执行时间
* Created by PhpStorm.
* User: knight
* Time: 10:20
class GetExecuteTime
private $startT //程序开始时间
private $endT //程序结束时间
public function __construct()
$this-&startTime = 0;
$this-&endTime
* 设置程序开始时间
public function setStartTime()
$this-&startTime = microtime(true);
* 设置程序结束时间
public function setEndTime()
$this-&endTime=microtime(true);
* 计算程序执行时间
* @return 返回程序执行的毫秒数
public function getExecuteTime()
return $this-&endTime - $this-&startT
GetExecuteTime.class.php&~&957B&&&&
*检测程序执行时间
* Created by PhpStorm.
* User: knight
* Time: 10:20
class GetExecuteTime
private $startT //程序开始时间
private $endT //程序结束时间
public function __construct()
$this-&startTime = 0;
$this-&endTime
* 设置程序开始时间
public function setStartTime()
$this-&startTime = microtime(true);
* 设置程序结束时间
public function setEndTime()
$this-&endTime=microtime(true);
* 计算程序执行时间
* @return 返回程序执行的毫秒数
public function getExecuteTime()
return $this-&endTime - $this-&startT
3.&[代码]测试&&&&
require_once("GetExecuteTime.class.php");
$executeTime = new GetExecuteTime();
$executeTime-&setStartTime();
for( $i = 0; $i & 10000; $i++)
echo $i."&/br&";
$executeTime-&setEndTime();
$executeTime-&getExecuteTime()."&/br&";
test.php&~&296B&&&&
require_once("GetExecuteTime.class.php");
$executeTime = new GetExecuteTime();
$executeTime-&setStartTime();
for( $i = 0; $i & 10000; $i++)
echo $i."&/br&";
$executeTime-&setEndTime();
$executeTime-&getExecuteTime()."&/br&";
开源中国-程序员在线工具:
相关的代码(841)
开源从代码分享开始
噢_我想多了的其它代码您好,欢迎来到中国供应商
您好,欢迎来到中国供应商!
控温精度&0.1℃的磁力搅拌电热套 程序升温电热套
控温精度&0.1℃的磁力搅拌电热套 程序升温电热套
发货地河南&郑州
发货期限不限
供货总量0台
经营模式|经销批发
企业类型|其他
公司地址|河南 郑州 中原区 中国 河南 郑州市 郑州高新技术开发区长椿路11号 大学科技园C6-A5
供应产品分类
本页信息为河南爱博特科技发展有限公司为您提供的“”产品信息,如您想了解更多关于“控温精度&0.1℃的磁力搅拌电热套 程序升温电热套”价格、型号、厂家,请联系厂家,或给厂家留言。
加工定制:是品牌:AIBOTE型号:ZNCL-TS-X30工作室尺寸:根据容量而定(mm) 温度范围:室温-380(℃) 温度波动度:&1(℃) 温度均匀度:99(%) 控温方式:程序控温适用范围:对烧杯、烧瓶或者其他装置进行程序升温、搅拌规格:50-1000ml
控温精度&0.1℃的磁力搅拌电热套 程序升温电热套
【AIBOTE】ZNCL-TS-X30型 程序控温磁力(电热套)搅拌器生产厂家:河南爱博特科技发展有限公司生产地址:郑州市高新技术开发区长椿路11号 大学科技园C6-A5联系人:张昱 &电话:8传真:8技术支持QQ:邮箱:官网: & & && & & & & & & & &&& & & & &&&以下是【AIBOTE】ZNCL-TS-X30型 程序控温磁力(电热套)搅拌器的参考图片:一、ZNCL-TS-CX30型&程序控温磁力(电热套)搅拌器的特点:&&&&1.采用电热套加热,具有受热面积大、均匀、升温快的特点,温度380℃。  2.可对50-10000ml标准或非标准反应瓶进行加热搅拌。  3.采用德国PAPST系列直流无刷电机,性能稳定,噪音小,寿命长,无火花产生。  4.外壳采用一次性形成阻燃加强PBT注塑外壳,耐高温,防腐蚀,且绝缘性能好。  5.30&斜面操控面板适合坐位和站位视角。  6.无极调速,低速平稳,高速强劲。&&&&7.数显转速显示功能。&&&&8.智能30/50段编程控温仪是采用微电脑控制与热电阻配套使用的多步序可编程控温仪,可实现降温速度控制和恒温定时控制。多种参数可在面板键入,可在线对控制参数进行专家自整定,控温精度高,适用范围广,可用于各种需自动控制温度的场合。&二、ZNCL-TS-CX30型&程序控温磁力(电热套)搅拌器的使用方法:1.控制器上电,显示窗上排像是“Pt”,下排显示量程值约3秒后进入到正常显示状态。2.超温报警时,蜂鸣器连续鸣叫,“ALM”报警灯点亮。可按任意键消音。3.运行和停止:&开机处在停止状态下按“R/S”键1秒后可动运行,在长按可停止。4.查询功能:&在运行状态点击“▼”Inquire键可查看当前段数、设定时间、运行时间。5.温度、时间设定:&&在非设定状态点击“SET”键,控制器依次显示SP0;ST1;· · · STn,SPn;ST(n+1);说明:SP0为开始运行时的测量值,仅做记录、查看用,不可修改;①&若STn>0:表示该段的升、降温时间;&&&&&②&若STn=&0:表示控制器根据设备性能在保证控制效果的前提下,以***快速度升降、温到当前段的温度设定值;&&&&&③&若STn=&-1;表示控制器始终以上一段的温度设定值运&&&&&&&&行;&&&&&④&若STn=-2;&表示运行到该段后结束。在设定过程中可长按“SET”键3秒退出,设定值自动保存。&&&&4)&&在设定过程中先长按“移动”键,再点击“SET”键可查看上一个设定值。实现功能举例:若温度从室温经过20分钟升温到80度,在80度恒温30分钟后再经过40分钟升温到120度,在120恒温30分钟后结束。设定方法:SPO(当前温度测量值,不可修改)&&&&&&&&&&ST1=20;SP1=80.0&&&&&&&&&&ST2=30;SP2=80.0&&&&&&&&&&ST3=40;SP3=120.0&&&&&&&&&&ST4=30;SP4=120.0&&&&&&&&&&ST5=-26.系统自整定&&&当温度控制效果不理想时可进行系统自整定。自整定时“整定”指示灯闪烁,自整定结束后该指示灯停止闪烁,控制器会得到一组更佳的系统PID参数,参数值自动保存。&&&在停止状态下长按“自整定”键约5秒,控制器显示提示符“AT”,调整AT值后再点击SET键,若AT=0,表示放弃自整定,控制器返回到正常显示状态;若AT-1,表示选择自整定,控制器显示自整定设定值提示符“ATSP”,调整到所需的值后再点击SET键,控制器返回到正常显示状态,开始自整定运行。&&&说明:1)在自整定过程中长按“自整定”键约5秒可结束自整定运行。&&&&&&&&&2)通常自整定的值(ATSP)应选用常用点的值或温度设定值的一半。&&&&7.搅拌器下方有一橡胶塞子,用来保护外用热电偶插座不腐蚀生锈和导通内线用,拔掉则内探头断开,机器停止工作。如用外用热电偶时应将此塞子拔掉保存,将外用热电偶插头插入插座并锁紧螺母,然后将不锈钢探棒放入溶液中进行控温加热。&&&&8.该电器设有断偶保护功能,当热电偶连接不良时,显示窗“hhhh”绿灯灭,电器即停止加温,需检查后再用。&三、ZNCL-TS-CX30型&程序控温磁力(电热套)搅拌器的技术参数:&&&&电源电压:220V&10%&&&&工作时间:&8小时搅拌容量:50ml、100ml、250ml、500ml、1000ml、2000ml......控温范围:室温-380℃转速范围:50-2000转/分,数显转速控温精度:&0.5℃&&&&分&辨&率:&0.1℃&&&&量&&&&程:室温--399℃&&&&感温信号:Pt100&&&&控温方式:可控硅控制输出&&&&负载输出:&1500W&&&&空载功耗:&5W&&&&环境温度:0&50℃,无腐蚀气体&&&&相对湿度:<85%RH;保&险&管:&&5&20&&15A。&四、ZNCL-TS-CX30型&程序控温磁力(电热套)搅拌器的注意事项:&&&&1、切勿干烧使用。  2.为保证安全使用请勿接地线。  3.为延长产品的使用,所有磁力搅拌器的电机均带有风扇散热功能,故作加热实验时特别是高温加热试验时,该仪器不能单做加热使用,务将电机调至旋转或中速旋转状态(或空转),以防止电机、电器受高温辐射而损坏。如电机不能启动旋转,应及时找经销商予以维修,否则不按要求操作造成损坏或损失,不予负责。  4.做高温加热结束时,请先关加热,待几分钟余温散后再关搅拌。  5.加热部分温度较高,工作时需小心,以免烫伤。  6.有湿手,液体溢出,或长期置于湿度过高条件下出现的漏电现象,应及时烘干或自然晒干后再用,以免发生危险;  7.长期不用时,请放在干燥无腐蚀气体处保存。  8.环境湿度相对过大时,可能会有感应电透过保温层传至外壳,请务接地线,以免漏电,并注意通风。  9.相对湿度:35%-85%(无冷凝)。&&&&10.当“设定”(SV)窗显示“----”时,表示传感器开路或短路或实际温度超出仪表测量范围&&&&11.因受加热、保温、散热等条件影响,仪表控制精度因型号允许有0.5%&2%偏差,温度稳定后,若出现温差过大长按设定键3秒,控制器显示窗上排显示密码提示符“LC”,下排显示密码值,通过加减键修改所需密码。&&LC=3,调至Pb零位调整:修正传感器(低温)测量时产生的误差,Pb=实际温度-仪表测量值。&&&&12.做腐蚀性液体的测温时,请将传感器用玻璃套管套上,以防腐蚀&&&&13.非专业人员请不要打开仪表,内有高压注意安全&&&&&14.请勿过载使用。&&&&15.仪器应有良好的接地。&&&
供应商信息
我公司位于具有得天独厚的科技研发条件、诸多国家相关优惠政策、交通便利、环境优美的郑州高新技术产业开发区,国家863计划“总部企业基地软件产业园”内,注册资金301万元,有一支以高级软件、机械设计工程师引导的科技研发队伍。使我公司产品销量始终处于国内同行前列。
我们一直致力于实验室仪器(电热套、控温仪、磁力搅拌器、磁力搅拌电热套、磁力搅拌加热板、磁力搅拌加热锅、多联磁力搅拌器、循环水真空泵、低温冷却液循环泵、旋转蒸发仪、玻璃反应釜等)的开发与生产,以科学技术为先导,不断开发新产品。1993年我们自主研发的磁碗电热套,高温可达600℃创下实验室高温加热实验的记录,并申请国家专利,专利号ZL,一时供不应求。1998年根据联合国教科文组织“环境与人类”研实项目赠于我国的英国电热套,生产出我国首台塑料外壳电热套,不仅外形美观,且防腐、防锈。长期以来,高温产品一直用玻璃纤维或其他保温棉隔热,使得使用或维修中常有粉尘污染现象,为解决这一难题,通过洛耐院专家亲自指导和我们一年的不懈努力,生产出新一代真空抽滤棉碗环保电热套,并在2005年再次申请国家专利保护,专利号5,使之不仅形状标准,且更加节能环保,由于我们公司生产的电热套外形美观性能优良,先后出口十多个国家和地区,并由全国数百家公司代理或贴标,产品遍布各大专院校、科研院所,且受到使用者的一致好评。
我们以“质量,信誉至上”为宗旨,以“服务科学、共创未来”为己任。确保产品的售前、售中和售后服务。请您放心选用。
主营产品或服务
公司注册时间
公司所在地
河南 郑州 中原区 中国 河南 郑州市 郑州高新技术开发区长椿路11号 大学科技园C6-A5
地 址|河南 郑州 中原区 中国 河南 郑州市 郑州高新技术开发区长椿路11号 大学科技园C6-A5
河南 郑州 中原区 中国 河南 郑州市 郑州高新技术开发区长椿路11号 大学科技园C6-A5
河南爱博特科技发展有限公司
日-11月2日
上海光大会展中心
洛阳会展中心
成都世纪城新国际会展中心
上海新国际博览中心
中国国际展览中心(新馆)
保利世贸博览馆
武汉国际博览中心
上海新国际博览中心
免责声明:
本商铺内所展现的控温精度&0.1℃的磁力搅拌电热套 程序升温电热套信息及其他相关信息均由商铺所属企业自行提供,信息的真实性、准确性和合法性由商铺所属企业完全负责。中国供应商对此不承担任何保证责任。
友情提醒:
建议您在购买相关产品前务必确认供应商资质及产品质量,过低的价格有可能是虚假信息,请谨慎对待,谨防欺诈行为。
地址:河南 郑州 中原区 中国 河南 郑州市 郑州高新技术开发区长椿路11号 大学科技园C6-A5
技术支持:在线招聘虽然帮助很多人找到了工作,但是虚假信息却从来没有断过。[]
5月23日省十二届人大常委会第二十三次会议在宁开幕[]
我们人民共和国的航船正在破浪前进……[]
& &&&& & 正文
利用车主程序不熟悉赚钱 啃车的“黄牛”太多该杀一杀了
【字号:&&】【】
  中国江苏网10月28日讯(本报记者 顾晓昕 连网记者 李帅)“最近到车管所上牌照,发现不管是外面的路上,还是里面,‘黄牛’非常多,可以说走不了几步,就会有人过来询问办什么业务,并表示可以帮忙办理,不胜其烦。‘黄牛’如此猖獗,也该好好管一管了。”日前,有市民向《网事追击》栏目反映,车管所周边“黄牛”泛滥,这些“黄牛”利用部分群众对车管所业务流程不甚知晓,采取各种手段蒙骗群众,从中牟利,希望相关部门能加强管理。记者对此进行了调查。
  昨日,记者驱车前往车管所,刚刚驶上大浦路不远,就见到路边一溜停放了许多车辆,每辆车边上都站着一两个人,每人手里拿着大牌子,上面写着“上牌、过户、年审”等字样,只要看到有车辆经过,就不断挥舞着手中的牌子,嘴里还喊着“办什么业务啊,要不要帮忙”之类的话。特别是当看到一些还没有挂牌照新车的时候,由于新车一般开得较慢,这些人中有的就直接冲到车头前,并大声喊“50块钱帮上牌”。一位新车车主对记者说,“这样冲过来太危险了,本来新手开车就有些紧张,他们一下冲过来,吓得心怦怦跳。他们这样其实也给过往车辆造成了一些安全隐患。”
  不仅路上是这样,当记者的车开进院内同样遇到了类似情况。一路上不断有人询问办理什么业务,从记者下车到走进业务大厅这并不长的一段路,就遇到了6个“黄牛”上前表示可以帮忙办理业务,记者询问新车上牌需要多少钱,这些“黄牛”的报价从50元到30元不等,并表示诸如其他年审、检测、过户等各项业务均可代办。当记者表示这些自己也可以去办,为什么要给钱让他们代办时,一位“黄牛”说,“你自己跑还不知道到什么时候,那么多手续,你搞不清楚的。我们熟悉,非常快。”记者询问找他们办业务的人多吗?这位“黄牛”说很多,并且称在这里已经干了好几年,每天都能收入几百元。
  在新车检测线通道,许多车都打开前引擎盖等待检测。记者看到有几个人在给车辆磨车架号、发动机号等等,一张小纸条朝上面一贴,就是10块钱,并且没有任何的收费凭证。一位带客户前来上牌的4S店工作人员告诉记者,其实这些车主都是可以自己办的,只是程序不太熟悉,“黄牛”利用的就是这一点。“还有的‘黄牛’声称可以搞到好的号牌,其实都是假的,他们也就是守在选号机那里碰运气,但是一旦遇到连号的一些号码,就能向车主索要几千块钱。”这位4S店的工作人员说。
  对于车管所周边“黄牛”泛滥的现象,市民们认为应该好好管一管。“你看,那边就有一块大牌子,上面写着不要轻信‘黄牛’的字样,也就是说,他们是知道这里有‘黄牛’的,那为什么不好好管一管呢?”市民们表示,车管所一方面加大管理力度,另一方面提高服务质量,简化业务流程,尽量提供一站式服务,让“黄牛”没有空子可钻,逐渐缩小“黄牛”生存空间。
啃车的黄牛太多 该杀一杀了
&&责任编辑:韩震霞、马燕&&
在经过了连续几天的暴雨之后,南京溧水区的多处农田被毁,房屋被淹,防汛形势非常严峻,当地也启动了防汛的紧急预案,一共6000多人奋战在抗洪抢险的第一线。记者来到溧水区灾情最严重的洪蓝镇青锋村,这里也是石臼湖的西北圩,积水已经没过了人的脚踝,很难再往前行走了。为了到达抗洪抢险的第一线,记者乘坐村民们的小船前往,经过十多分钟的行程后,终于来到了大堤上。
题图为暴雨中的南京、苏州、常州街头。苏阳王建康陈ド阕蛉眨叽竟费と嗽闭谧急阜姥次У参镒省U沤芸捉萆鄣ど惚┯辍⒋蟊┯辏〗刂2日14时,太湖水位4.48米,超警戒水位0.68米。苏南运河常州、无锡和苏州水位分别为5.62米、5.08米和4.71米,分别较前一日上涨1.04米、0.81米和0.61米,超警戒水位1.32米、1.18米和0.91米,其中苏州站超历史最高水位0.11米……1日、2日,我省江淮之间及沿江地区普降暴雨、大暴雨。
考完的学生们走起了红地毯赵杰摄英国脱欧、巴黎恐怖袭击、屠呦呦获诺贝尔奖、二孩政策……现代快报记者了解到,这些热点昨天都出现在了南京外国语学校2016小升初英语能力测试题中,不过,很多都是作为背景出现的。校方表示,知识面广、学习能力强的孩子有望取得好成绩。据悉,今年有近2700名小学毕业生参加考试,将录取340人。因为南外小升初明年改面测,今年是笔试的最后一年。
最近的南京梅雨天潮湿闷热温度高,不少乘坐地铁的市民都在途中出现意外,有的是因为低血糖引起眩晕,有的甚至出现了中暑症状。地铁警方提醒,颅脑疾患病人、老年人以及体质不好的乘客乘坐地铁出行时,尽量避开早晚高峰,随身携带一些防暑药品和补充能量的小食品。
因为张柏芝而备受关注的张柏芝妈妈,本...
你可能还想看
&|&&|&&|&&|&&|&
中国江苏网(江苏中江网传媒股份有限公司) 版权所有&&
&&视听节目许可证1008318号&&
移动网信息服务业务经营许可证苏B2-&&因特网信息服务业务经营许可证苏B2-IBM Bluemix
点击按钮,开始云上的开发!
developerWorks 社区
了解如何在云上开发和部署 Java(TM) PaaS Web 应用程序。
(), IBM Application Architect, IBM
为了演示在云中构建和部署应用程序所带来的高级互操作性与可移植性,我决定构建一个有趣的小小旅行应用程序。 我的应用程序由两部分组成,利用保存在用户配置文件中的用户偏好设置来展现一幅地图,其中会显示一片区域内有哪些空闲的酒店房间。第一部分通过使用 MongoDB 服务来管理用户偏好,并将结果服务通过一个 API
向外部公开。第二部分将第一部分与外部服务集成在一个 Web 应用程序中。“云应用程序必须是可扩展和可移植的,并能够与内部服务轻松集成。它在整个生命周期内的使用和管理绝不能令人厌烦。”Note:单击 Run the app 后,您可以使用任意 ID 和密码登录。为了编写本次练习的代码,单击 Get the code at JazzHub 后,单击右上角的
EDIT CODE 按钮(如果尚未登录,请输入您的 JazzHub 证书),然后单击菜单上的
FORK 按钮创建一个新项目。另外还可以导出代码,具体操作是在左侧导航中选择
File & Export。构建一个类似的应用程序的前提条件基本熟悉 (或 Eclipse
IDE),并安装 Cloud Foundry 插件 NoSQL 数据库 帐号 帐号,用于 jQuery 的 Google Maps V3 插件可以简化使用 Google Maps API
的工作步骤
1. 创建云应用程序我是在 Bluemix 上创建和部署这个示例应用程序的。对于这个示例,我选择使用 Java 和 Spring 框架。要创建应用程序,请访问
并选择应用程序的类型(Java 单机、Java Web、Ruby 等),在我们的示例中使用的是 Java Web。图 1. 使用 Bluemix 站点创建一个应用程序的屏幕截图步骤 2.
安装和使用命令行工具可以使用 Bluemix Web 界面或 Cloud Foundry 项目提供的命令行界面管理应用程序。我为这个示例选择了命令行界面
cf。使用命令行可以部署、关联服务,控制(启动和停止应用程序)等等。从
CLI,并运行安装程序。安装结果是一个可执行文件:cf.exe。首先必须设置目标 API 端点,然后登录。图 2. 登录到 API 端点的屏幕截图现在可以列出应用程序、服务和绑定服务。步骤
3. 准备开发环境这个示例使用了 MVC Spring 框架。所使用的环境是 Spring Tool Suite 和 Cloud Foundry
插件。所使用的工具和技术包括:Spring 3.1.1JDK 7Spring Tool Suite 3.4.0+ Cloud Foundry Integration for Eclipse
1.5.1创建 Java Web Project 时,需要在 Cloud Foundry 平台上进行部署,因此必须给项目添加 Cloud Foundry
性质。这样做可以创建描述应用程序的 manifest.yml 文件和它对 Cloud Foundry 运行时的资源需求。我们将开发应用程序的两个部分:第一部分是 UserService。它公开用于管理用户信息的 API。它使用内部的云平台 MongoDB 实现数据持久化,这是一个流行的
。第二部分是 MyVacations,它允许登录用户使用一些参数搜索可用的酒店。UserService
应用程序提供一些搜索参数的值。Expedia Services 提供酒店的列表与详细信息。
在地图上定位酒店的列表。图 3. 部署模型UserService 显示了如何使用 MongoDB 服务将用户相关信息保存在一个集中的位置。UserService 的功能包括:登录功能 — UserService 接收用户名与密码,然后在数据库中搜索用户。如果找到了用户,UserService
会返回它;否则,它会创建一条新纪录。配置功能 — UserService
接收用户名并搜索用户信息(偏好位置、成人数量和小孩数量),并将这些信息返回给客户端。步骤
4. 绑定一个云服务 (MongoDB)要使用 MongoDB 服务,必须先创建一个服务实例:连接到 Bluemix 并在操作视图中选择 Add a Service。
图 4. Bluemix dashboard of
applications从可用服务列表中选择 MongoDB,然后创建服务实例。
图 5. 创建用于 UserService 应用程序的 MongoDB 实例服务另外还可以使用命令行:cf create-service mongodb 100 mongodb_ser1
cf create-service SERVICE PLAN SERVICE_INSTANCE)
cf bind-service UserService mongodb_ser1
cf bind-service APP SERVICE_INSTANCE)现在,MongoDB 服务已准备就绪并被绑定到 UserService。步骤
5. 在应用程序中使用 MongoDB 服务创建服务并将它关联到应用程序之后,将它的配置作为一个只读环境变量添加到
VCAP_SERVICES,其中包含您在代码中连接服务时需要使用的信息。在这个例子中,内容如下:{
"mongodb-2.2": [
"name": "mongodb-ser1",
"label": "mongodb-2.2",
"plan": "100",
"credentials": {
"hostname": "10.0.116.106",
"host": "10.0.116.106",
"port": 10192,
"username": "46c538a6-e6e1-4d02-a4b2dc1c",
"password": "0ceea0ea-5548-46ad-9b09-1002683aeca7",
"name": "946dc87b-b455-4d12-b977-1b1ee22f1ade",
"db": "db",
"url": "mongodb://46c538a6-e6e1-4d02-a4b2dc1c:
0ceea0ea-5548-46ad-9b09-1002683aeca7@10.0.116.106:10192/db"
}要使用 VCAP_SERVICES 变量连接到 MongoDB 服务实例,提取
"url" JsonNode。请注意,该 URL 包含连接数据库需要的所有参数(用户证书、主机名、端口和 DB
名称)。private static String getUrlConnection() {
String env = System.getenv("VCAP_SERVICES");
ObjectMapper mapper = new ObjectMapper();
JsonNode node = mapper.readTree(env);
Iterator&JsonNode& dbNode = node.get("mongodb-2.2").getElements();
JsonNode cred =
(JsonNode)dbNode.next().get("credentials");
String uri =cred.get("url").getTextValue();
logger.debug ("url db: " + uri);
} catch (JsonGenerationException e) {
logger.debug(e.getMessage());
} catch (JsonMappingException e) {
logger.debug (e.getMessage());
} catch (IOException e) {
logger.debug (e.getMessage());
return null;
}可以使用 MongoDB Java 驱动程序创建一个 Spring 配置类,用于创建 DB 连接,然后将 DB 对象返回给客户端。@Configuration
public class MongoConfiguration {
public @Bean DB mongoDb() throws Exception {
MongoClientURI mcUri = new MongoClientURI(getUrlConnection());
MongoClient mc = new MongoClient(mcUri);
mc.getDB(mcUri.getDatabase());
return mc.getDB(mcUri.getDatabase());
}UserManager 类使用 MongoConfiguration 与 DB 进行交互。init 方法获取 "users"
集合,或者在该集合不存在时创建一个集合。private void init(){
ApplicationContext ctx =
new AnnotationConfigApplicationContext(MongoConfiguration.class);
db = (DB) ctx.getBean("mongoDb");
coll = db.getCollection("users");
}MongoDB 并非关系
DBMS,而是面向文档的。这意味着我们拥有的不是表而是连接,不是行(或值组)而是文档,是字段而不是列。这些字段不是预先定义好的,这点和表中的列一样。您可以在一个集合中输入任意类型的数据。要找到文档必须创建
BasicDBObject。 BasicDBObject user = new BasicDBObject("username", userData.getUsername());
return (DBObject)coll.findOne(user);UserController 是 UserManager 的客户端, 它使用它的函数去获取和保存已登录的用户信息。 @RequestMapping(value="/user", method = RequestMethod.GET)
@ResponseBody String getUser(@RequestParam("username") String username,
@RequestParam("password") String password)
logger.debug("BEGIN: controller getUser - username:" + username);
UserManager userManager = new UserManager();
BasicDBObject user = (BasicDBObject) userManager.getUser(username, password);
logger.debug("END: controller getUser - user:" + user);
return user.toString();
步骤 6. 部署一个 Spring 应用程序MyVacations 通过 UserService 获取用户信息,并使用 UserService
在用户上次登录期间保存的值配置搜索。用户可以看到酒店清单作为搜索结果出现在地图上。同样在这个例子中,控制器并非配置在 xml 配置文件中,而是由
Spring 框架动态监测到,因为 servlet 配置文件中包含这条指令。
&context:component-scan base-package="com.myvacations.app" /&The first controller, HomeController, is called to display the
login page. /**
* Simply selects the home view to render login page.
@RequestMapping(value = "/", method = RequestMethod.GET)
public String home(Locale locale, Model model) {
return "login";
}HotelsController 在登录页面提交时激活。此控制器通过一个带有 "username" 参数的 HTTP get 请求进行调用,访问 UserService
以获取在此用户上次访问期间保存的所有用户偏好信息。此控制器使用 RestTemplate 胡对 UserService 进行 RESTful 调用。RestTemplate 是一个 Spring
帮助器类,用于客户端的 HTTP 访问。getForObject() 方法负责接收和返回该对象,而
负责将它转化为 HTTP 请求与 HTTP 响应。在我们的例子中,这个类用于调用
RESTful 服务,比如 UserService。
@RequestMapping(value = "/hotels", method = RequestMethod.GET)
public String getHotels(@ModelAttribute("username") String username,Model model) {
logger.debug("BEGIN HotelsController: username=" + username);
RestTemplate restTemplate = applicationContext.getBean("restTemplate",
RestTemplate.class);
user = (UserData) restTemplate.getForObject(new
URI("http://userservice.ng.Bluemix.net/userpref?username="+username),
UserData.class);步骤
7. 集成服务 您需要集成服务以将更多的数据带给 MyVacations。我将会提供两个集成服务的例子: Expedia RESTful 服务生成酒店的相关信息。Google 地图服务将酒店形象地显示在地图上。让我们首先集成 Expedia Web 服务,以获取酒店的相关信息。首先必须在
上注册一个开发人员帐号和一个 API 密钥。单击 Submit 按钮将激活 SearchController,它是 Hotels.jsp
中的一个 Ajax 调用。
$.get('/search',
$("#ricerca").serialize(),
function (data, status) {
if (status == 'success') {
if (data.toString()==""){
$("#map_canvas").hide();在 SearchController 中调用了 ExpediaClient 来获取 HotelSummary
List。 List&HotelSummary& response=null;
response = (new ExpediaClient()).getHotels(
location, dateFrom, dateTo, numAdults, numChildren);ExpediaClient 使用 UserService 获得的用户信息,提取出在 JSON 响应中解码的 ExpediaObjects。ExpediaObjects hotels= (ExpediaObjects)
restTemplate.getForObject(buildQueryHotelsURL(location,dal,al,numAdulti,numBambini),
ExpediaObjects.class);示例接着使用 Google 地图服务在地图上以可视化方式显示从 Expedia 获得的酒店列表。Google Maps API 支持在 Web 页面上嵌入一幅 Google 地图图像。在开始之前,您需要 Google 提供的一个特殊 API
密钥。该密钥是免费的,但您必须创建一个 Google 帐号。&script src="/maps/api/js?
key=YOUR_API_KEY&sensor=TRUE_OR_FALSE"&&/script&为了与 Google Maps API 进行交互,我选择使用 jQuery-ui-map。这是一个优秀的 jQuery 插件,用于在 Web
和移动应用程序中嵌入地图。它支持用户查看地图和标签,并利用踪迹的高级服务与管理、街景模式视图和 JSON 中地理数据的动态加载。当创建另一个 div 或另一个类似的 HTML 容器时,便可运行 gmap(插件的关键方法,允许我们调用 Google
Maps API 的函数)在地图上显示标记引用的坐标。var map =
$('#map_canvas').gmap({
'center': new google.maps.LatLng(data[0].latitude,data[0].longitude),
'minZoom': 5,
});我们已经创建了一幅地图,它以第一家酒店的地理坐标为中心。现在,我们为结果列表中的每家酒店都创建一个标记,并把它们放在地图上。
$.each(data, function (i, m) {
$('#map_canvas').gmap('addMarker', {
'position': new google.maps.LatLng(m.latitude,
m.longitude),
'bounds': true
}) .click(function () {…注册一个函数 on-click 事件,用于加载对酒店进行简要描述的信息窗口。
$('#map_canvas').gmap('openInfoWindow', {
'content': descr
8. 将应用程序推送到云中构造和创建应用程序之后,我们就可以在 Bluemix 上部署它们。部署是自动的,即将应用程序从本地 VM 迁移到基于云 的VM 上。使用 Cloud Foundry CLI cf push 命令启动部署。(在 Cloud Foundry
文档中,部署过程通常称为 推送应用程序。)cf push MyVacations –path MYDIR\MyVacations.warpush
命令执行多个分阶段的任务,比如找到一个容器来运行应用程序,为容器提供合适的软件和系统资源,启动应用程序的一个或多个实例,并在 Cloud
Controller 数据库中保存应用程序的预期状态。步骤 9. 测试应用程序为了达到测试的目的,您需要对应用程序进行一个简单的运行测试,然后测试应用程序是否是可移植的。为了简单起见,登录页面允许使用任意用户名和密码进行访问,如图用户在系统中不存在,就会被创建。登录后,访问搜索页面,插入搜索参数并单击 Search。
图 6. 带有结果地图的搜索页面如果单击某个标记,就会显示与该酒店相关的简要信息。图 7. 带有关于旅店的简要信息的窗口为了在不同的云平台上测试可移植性,我选择在 Pivotal 平台和 Google App Engine 上部署 MyVacations。要在 GoogleAE 上进行部署,所使用的工具和技术包括:Google App Engine Java SDK 1.8.8Spring 3.1.1Eclipse 4.2+ Google plugin for Eclipse因为 Google App Engine 支持基于 Spring 框架的 Java Web 应用程序,我的应用程序不需要做任何改动。 Google App Engine SDK (安装在 Eclipse 上) 包含一个 Web
服务器,用于在模拟的本地环境中测试应用程序,这样便可在没有 Google 用户帐号的情况下测试应用程序。(还可以在远程的 Google
服务器上运行应用程序)。用于 Eclipse 的 Google 插件在 Run 菜单中添加了启动这台服务器的选项。在这种场景中,安装在
Google App Engine 上的 MyVacations 将通过其 RESTful API 调用安装在 Bluemix 上的
UserService 应用程序,这演示了不使用内部平台服务的应用程序的高级可移植性。图 8. 本地主机上的 Google App Engine在 Pivotal 上进行部署使用的工具和技术包括:Spring 3.1.1JDK 7Spring Tool Suite 3.4.0+ Cloud Foundry Integration for Eclipse
1.5.1Cloud Foundry plugin for Eclipse 支持在 Pivotal
平台上进行部署。这样便可在目标环境上直接测试应用程序,无需离开 IDE。您需要一个有效的 Pivotal 用户帐号。图 9. Pivotal Cloud Foundry 上的部署在这个平台上,您无需进行任何改动便可部署应用程序,也可以进行小小改动后部署 UserService 应用程序。结束语这个应用程序仅仅显示了将内部和外部服务与云应用程序集成在一起的一些可能性。我利用了 Bluemix 具有的一些优点:提供需求降低(应用程序或基础架构)可伸缩性轻松集成内部服务管理轻松在类似云平台上的可移植性在可移植性问题上,因为 Bluemix 基于 Cloud
Foundry,您可以自由地将它迁移到其他平台。让我们通过两个例子演示一下这种可移植性:将 MyVacations 部署到 Pivotal 云时无需任何改动
Pivotal 同样基于 Cloud
Foundry,因此几乎可以完全兼容。UserService 使用 Bluemix 平台上的 MongoDB 服务;在 Pivotal
上也有一个类似的 MongoDB 服务,但您必须修改来自 MongoConfiguration 类中 VCAP_SERVICES 变量的
URL 连接。 对于不是基于 Cloud Foundry 的云而言(这个例子中就是 Google 的云),部署 MyVacations
也很简单。(MongoDB 不在 Google 平台提供的服务中,因此我选择了另一个解决方案作为 "Big Table" 服务(和
MongoDB 不同),它是一个用于数据持久的专门解决方案。)只要将 appengine-web.xmlfile
添加到 web-inf 目录便可启用 Google Application Engine,如下所示:
&?xml version="1.0" encoding="utf-8"?&
&appengine-web-app xmlns="/ns/1.0"&
&application&_your_app_id_&/application&
&version&1&/version&
&threadsafe&true&/threadsafe&
&/appengine-web-app&最后要注意的是,您必须将云应用程序设计为能够利用分布式平台的潜力,同时提供可靠、高效与快速的服务。我认为我的 MyVacations
应用程序大体上做到了这一点。当然,在 UserService
遇到大量请求时,可能导致用户响应速度较慢。但您可以尝试针对这一点进行性能提升(比如使用异步的消息收发对组件进行去耦,这样任务就不会在收到响应之前一直阻塞)。适用这类应用程序的性能提升手段有好几种,您有时间可以好好地研究一下它们。致谢
developerWorks 专区:了解云计算技术的更多信息。
:这里有数百篇关于 Java 编程各个方面的文章。
:了解 MongoDB 的更多信息。
加入 。查看开发人员推动的博客、论坛、组和维基,并与其他 developerWorks 用户交流。
developerWorks: 登录
标有星(*)号的字段是必填字段。
保持登录。
单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件。
在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。
所有提交的信息确保安全。
选择您的昵称
当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。昵称长度在 3 至 31 个字符之间。
您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。
标有星(*)号的字段是必填字段。
(昵称长度在 3 至 31 个字符之间)
单击提交则表示您同意developerWorks 的条款和条件。 .
所有提交的信息确保安全。
文章、教程、演示,帮助您构建、部署和管理云应用。
立即加入来自 IBM 的专业 IT 社交网络。
为灾难恢复构建应用,赢取现金大奖。
static.content.url=/developerworks/js/artrating/SITE_ID=10Zone=Java technology, Cloud computing, Web developmentArticleID=968990ArticleTitle=构建一个集成了 Web 服务的可移植 Java 旅行应用程序publish-date=

我要回帖

更多关于 什么中药能消炎去肿块 的文章

 

随机推荐