bogo之家_百度空间
 
背景音乐
 
     
 
宠物专区
 
   
 
文章列表
 
2010-11-25 21:53

据报道,近日一份关于微软向美国专利商标局提交的Kinect专利申请被公开。通过这项专利我们可以进一步了解这款体感外设的工作原理。

这份专利申请提交于2009年2月23日,被形容为可以手势键盘(gesture keyboarding)。意思就是说,Kinect摄像头可以捕捉到用户的手势动作,再把这些手势语言转换成游戏控制。

具体来说,Kinect借助PrimeSense软件和摄像头侦测、捕捉用户手势动作,然后再将捕捉到的影像与本身内部存有的人体模型相对照。每一个符合内部已存人体模型的物体就会被创造成相关的骨骼模型,系统再将该模型转换成虚拟角色,该角色通过识别该人体骨骼模型的关键部位进行动作触发。

在虚拟骨骼模型的帮助下,系统可识别人体的25个关键部位。

微软通过对33DV systems公司的收购得到了后者的摄像头识别技术,并在此基础上加入了识别人体站立/坐姿的新技术。

Kinect将在11月上市,单独销售149.99美元,绑定Arcade版Xbox 360后的售价为299美元。

微软Kinect专利曝光:深入了解体感识别

骨骼模型

微软Kinect专利曝光:深入了解体感识别

微软Kinect专利曝光:深入了解体感识别

微软Kinect专利曝光:深入了解体感识别

微软Kinect专利曝光:深入了解体感识别

内部系统组成

微软Kinect专利曝光:深入了解体感识别

内部系统组成

微软Kinect专利曝光:深入了解体感识别

内部系统组成

易尚互联,免费建站,100套精美模板任您选择,为您提高企业形象!
官方网址: http://www.ogw.cn企业QQ: 800019019
官方交流QQ: 56277249
企业热线: 027-88860600
富士康跳楼门专题:http://www.ogw.cn/o/fsktlsj/index.html
2010
年南非世界杯专题:http://2010.ogw.cn

 
2010-11-25 21:44

身体就是控制微软Kinect是怎么做到的器

http://xbox360.tgbus.com/jiaocheng/Soft/201007/20100708145758.shtml

游戏主机中的Microsoft和Sony终于都正式推出了体感装置,最令人惊艳的莫过于不需要任何控制器的Kinect,最令人好奇的是,Kinect到底如何侦测全身体感?搭载了什么特殊功能?各个镜头的用途是什么?

  大家应该都知道Kinect是靠摄影机镜头捕捉使用者的动作,但对于细节或许不是很清楚,近日随着国外游戏网站play.com公布了Kinect的详细规格,也让我们可以间接了解更多细节。

  先由Kinect的运作原理开始吧,Kinect一次可撷取三种东西,分别是彩色影像、3D深度影像、以及声音讯号。首先是Kinect机身上有3 颗镜头,中间的镜头是一般常见的RGB彩色摄影机,左右两边镜头则分别为红外线发射器和红外线CMOS摄影机所构成的3D深度感应器,Kinect主要就是靠3D深度感应器侦测玩家的动作。

  中间视讯镜头则是用来辨识玩家身分(靠着人脸辨识和身体特征)、以及辨识基本的脸部表情,此外也能应用在扩增实境游戏、以及视讯通话时;同时 Kinect还搭配了追焦技术,底座马达会随着对焦物体移动跟着转动。

  都用上了不用遥控器的体感装置,哪里还要玩家头上挂个耳麦的道理,因此Kinect也内建了麦克风系统,用的还是阵列式麦克风。它的好处是藉由多组麦克风同时收音,比对后消除掉杂音,等于提供了降噪功能,让玩家的声音能更清楚的传递出去。

Kinect技术原理

  ▲Kinect中间的镜头是摄影机、左右两颗镜头则是3D深度感应器;同时具有追焦功能,底座马达可左右旋转27度。此外还有阵列式麦克风。

Kinect技术原理

  ▲Kinect可同时获取彩色影像、3D深度影像、以及声音讯号。

Kinect技术原理

  ▲Kinect的架构图

  使用这么新颖的侦测技术,Kinect是用了什么特殊规格的设备?事实上并没有我们想的那么特别,从规格表里看到的,都是相当普通的内容,例如视讯摄影机的影像规格为640×480 30FPS、红外线摄影机则为320×240 30FPS,关键其实是在Kinect所使用的侦测技术。也因为如此,Kinect才能开出149.99美元的售价,而不是买不起的天价。

  Kinect总览
  Kinect到底怎么侦测3D影像?
  另一关键:骨架追踪系统
  延迟让Kinect不精准?

  Kinect到底怎么侦测3D影像?

  关于Kinect所使用的辨识技术,网路上有许多以讹传讹的说法。例如用两颗摄影镜头拍摄成3D影像、并以红外线探测Z轴深度做感应;也有许多人以为Kinect是利用红外线纪录体温的方式,来找出人体的影像,这些当然都不是正确答案。

  微软在去年(2009年)初收购了一家以色列籍的3DV Systems公司(来源:reuters),包含公司员工以及所有专利技术都归微软所有。该公司拥有名为ZCam的动作感测系统,采用TOF(Time of Flight)技术,让许多人认为Project Natal诞生计划(Kinect前身)就是采用TOF技术,但......最后证实大家还是猜错了。

  这里简单介绍一下TOF技术,大家应该可以从字面猜到含意,Time of Flight就是去计算光线飞行的时间。首先让装置发出脉冲光,并且在发射处接收目标物的反射光,藉由测量时间差算出目标物的距离;ZCam就是使用 TOF技术,使用红外线以及Accelerometers加速度计感应器,感测立体空间的相对位置变化,建构灰阶距离影像的深度感应器。3DV Systems公司研发该技术已经长达10年,并取得许多专利技术,所以受到了微软的瞩目。

  不过就在今年(2010年)年初时,微软的开发人员却大爆Project Natal诞生计划并不是如外界传言采用3DV Systems公司的TOF技术(来源:engadget)。微软先进技术研究院副总裁Moshe Lichtman,于去年接受媒体访问时,就表示并购3DV Systems公司目的不在于使用他们的技术,而是作为保障自家感测技术的后盾。因为专利技术认定上有时较为模糊,稍有不慎就会被对手告侵犯专利权;3DV Systems拥有许多相关专利,因此藉由并购3DV Systems快速取得专利,也能避免被其他对手并购,阻挠微软的产品研发。

Kinect技术原理

  ▲关于Kinect侦测方式网路上众说云云,其实它与PrimeSense合作采用 Light Coding技术。

  微软在今年4月时,正式公布与另一家以色列公司PrimeSense合作(来源:gossipgamers),这下才让Kinect使用的3D侦测技术有了着落。他们也是提供动作感测系统的公司,拥有体感侦测装置PrimeSensor,以及感测晶片 PS1080。PrimeSense用的并不是采用3DV Systems的TOF技术、而是Light Coding技术。

  Light Coding技术理论是利用连续光(近红外线)对测量空间进行编码,经感应器读取编码的光线,交由晶片运算进行解码后,产生成一张具有深度的图像。 Light Coding技术的关键是Laser Speckle雷射光散斑,当雷射光照射到粗糙物体、或是穿透毛玻璃后,会形成随机的反射斑点,称之为散斑。散斑具有高度随机性,也会随着距离而变换图案,空间中任何两处的散斑都会是不同的图案,等于是将整个空间加上了标记,所以任何物体进入该空间、以及移动时,都可确切纪录物体的位置。Light Coding发出雷射光对测量空间进行编码,就是指产生散斑。

  Kinect就是以红外线发出人眼看不见的class 1雷射光,透过镜头前的diffuser(光栅、扩散片)将雷射光均匀分布投射在测量空间中,再透过红外线摄影机记录下空间中的每个散斑,撷取原始资料后,再透过晶片计算成具有3D深度的图像。

Kinect技术原理

  ▲Light Coding是以发射红外线产生散斑,透过感应器纪录讯号后,交由晶片运算出深度图像。

  PrimeSence公司用的Light Coding技术,说穿了与微软先前买下3DV公司所使用的TOF技术根本就毫不相关,只是产生的结果类似。这点更加印证了微软收购3DV Systems,只是为了动作感测相关的专利权、取得领先地位。

  由于微软并没有买断PrimeSense公司的技术,因此PrimeSensor装置未来也有可能出现在电视、电脑等消费性产品上,例如CyberLink讯连科技也与PrimsSense合作开发3D互动体验介面(来源:PrimeSense)。面对将来有可能出现同质性产品,微软则是强调Kinect的追焦旋转功能是他们的专利,这点别人不能模仿。

  PrimeSence公司展示应用Light Coding技术的体感侦测系统。该技术并未被微软买断,未来将有机会应用在其他装置上。

  Kinect总览
  Kinect到底怎么侦测3D影像?
  另一关键:骨架追踪系统
  延迟让Kinect不精准?

  另一关键:骨架追踪系统

  了解Kinect如何获得影像后,接下来就是进行辨识的工作。透过Light Coding技术所获得的只是基本的影像资料,重点还是要辨识影像,转换为动作指令。据说Prime Sense公司并没有提供辨识技术,所以辨识部份得靠微软自己搞定。

  微软会将侦测到的3D深度图像,转换到骨架追踪系统。该系统最多可同时侦测到6个人,包含同时辨识2个人的动作;每个人共可记录20组细节,包含躯干、四肢以及手指等都是追踪的范围,达成全身体感操作。为了看懂使用者的动作,微软也用上机器学习技术(machine learning),建立出庞大的图像资料库,形成智慧辨识能力,尽可能理解使用者的肢体动作所代表的涵义。

  Kinect侦测的最佳距离为1.2公尺到3.5公尺间,水平视野则是57度,侦测范围似乎比原本想像的还要小,看来还是不能站的太随意;Kinec也配备了追焦系统,如果玩家超出影像范围,底座马达可驱动Kinect左右旋转27度。整体看来Kinect对操作空间的限制,似乎比其他体感装置更严格些。

Kinect技术原理

  ▲Prime Sense公司似乎只提供影像侦测,后面的辨识技术还是靠微软自己来。

Kinect技术原理

  ▲Kinect一次可追踪2人的动态,每人能追踪高达20组细节。

  Kinect总览
  Kinect到底怎么侦测3D影像?
  另一关键:骨架追踪系统
  延迟让Kinect不精准?

  延迟让Kinect不精准?

  由于Kinect摄影机的影像更新频率为30FPS,代表动作传递将会有33ms(1/30秒)的延迟,CrunchGear也在文中质疑这会不会造成动作侦测上的延迟,为何不使用60FPS以上的录影规格拍摄?这其实是PrimeSense公司提供的处理晶片能耐,它就只能处理VGA画质、30FPS的影像。

  30FPS影像更新频率造成的延迟应该有限,因为人类对事物的反应速度几乎都超过100ms,已经大于30FPS所带来的33ms延迟,所以该怪的应该是你的反应太慢吧。比起侦测延迟,更该担心的是辨识需要的时间、以及辨识的精准度。由于Kinect是透过辨识图像再转化为指令的方式,大量的影像处理、以及事后的辨识动作,恐怕才是让Kinect使用者感受到延迟的原因。听说支援Kinect的游戏都有针对延迟做最佳化,尽可能让使用者减少延迟的感受。

Kinect技术原理

  ▲影像更新频率并不是Kinect延迟的主因,反倒是晶片处理速度、软体辨识的影响比较大。

  另外一点备受质疑的,就是在精准度方面的问题,国外调查Kinect的判断精准度为4mm,的确是输给了PlayStation Move的1mm。但论精准度,可能每种体感装置都还比不上实体摇杆。但Kinect带来的全身体感优势,所能做的事情铁定比PlayStation Move和Wii多更多,例如Ubisoft推出的健身游戏《Your Shape Fitness Evolved》,类似Wii平台上的《Wii Fit》,但是透过骨架追踪系统来玩瑜珈、武术等游戏时,对姿势的要求绝对高于Wii Remote+Wii Fit;舞蹈游戏《Dance Central》也是相同的道理。

Kinect技术原理

  ▲虽然Kinect在精准度上遭受到质疑,但全身体感的优势大幅超越Wii和PlayStation Move。图为游戏《Your Shape Fitness Evolved》画面。

Kinect技术原理

  ▲Kinect对姿势的要求上,铁定会比对手们来的严格许多,躺在沙发上玩体感游戏这种事就别想了。图为游戏《Dance Central》画面。

 
2010-11-25 21:39

(小编有情提示:如果你对科技理论不感兴趣请直接快进到6:10秒左右,那、就是见证奇迹的时刻!)

SixthSense is a wearable, gestural interface that augments our physical world with digital information, and lets us use natural hand gestures to interact with that information. "Other than letting some of you live out your fantasy of looking as cool as Tom Cruise in ‘Minority Report' it can really let you connect as a sixth sense device with whatever is in front of you," said MIT researcher Patty Maes.

The SixthSense prototype comprises a pocket projector, mirror, and camera worn in a pendant-like mobile device. Both the projector and the camera are connected to a mobile computing device in the user's pocket. The system projects information onto the surfaces and physical objects around us, making any surface into a digital interface; the camera recognizes and tracks both the user's hand gestures and physical objects using computer-vision-based techniques. SixthSense uses simple computer-vision techniques to process the video-stream data captured by the camera and follows the locations of colored markers on the user's fingertips (which are used for visual tracking). In addition, the software interprets the data into gestures to use for interacting with the projected application interfaces."You can turn any surface around you into an interactive surface," says Pranav Mistry, an MIT graduate student working on the SixthSense project. "Let's say I'm in a bookstore, and I'm holding a book. SixthSense will recognize that, and will go up to Amazon. Then, it will display online reviews of that book, and prices, right on the cover of the book I'm holding."

Some other examples:

* When you want to check the time, you draw a circle on your wrist; the projector displays a clock right on your arm.

* You hold up your left hand, fingers pointing to the right. The system recognizes that you want to make a call, and projects a dialing pad onto your fingers. You tap the virtual keypad with your right hand to dial the call.

* You hold your fingers out at arm's length forming a square. The system snaps a photo of what's enclosed by your fingers. Later, you can sort, resize and fiddle with these photos by projecting them onto any wall and dragging their images with your fingertips.

* You run into a guy at a party. The system projects his name and keywords onto his T-shirt, so you can remember who he was and start a conversation.

The current SixthSense prototype supports several types of gesture-based interactions, demonstrating the usefulness, viability, and flexibility of the system. The current prototype system costs approximately $350 to build.

相关中文报道:现实世界和数码世界是独立的吗?(摘自电子创新网)

从美国MIT Media Lab(麻省理工学院媒体实验室)天才学生普拉纳夫的惊人发明中你可以看到一种新的创新如何把数码世界和现实世界联系起来,这个惊人的发明相信可以完全改变我们现在的世界。

他从最开始用两个鼠标,就能够创造出类似关键报告的动态捕捉,到后来延伸出越来越多直觉式的互动处理,一次又一次的让我们感到惊奇。比个手势就能够拍照,看书看报纸有多出来的语音功能,随时读取的即时消息,实在是很方便。

他的想法不只是创新,而且已经作为成品了,那之后这个世界会变成什么样子呢?所有在装置内的信息可以以更直接的方式与人类互动,信息的传递会更加快速。随处可取的信息,以及随时可应用的装置,还有无数应运而生的产业,怎样抓住趋势会是成功的契机。

估计这个发明实用以后受到冲击的不仅是面板产业还有电子书、笔记本、上网本等等。它的硬件成本只有300美元,如果大量流行可能会毁掉我们现在世界中的很多电子产品。

 
2010-08-15 14:46

六维空间(http://bt.neu6.edu.cn/)于08年9月7日成立,取IPv6中“v6”的谐音,代表新的协议和下载体验,也寓意论坛包容各方优秀资源。目前论坛的各种资源,尤其是高清资源不断丰富,人气不断提升。现拥有注册用户100000余人,日发帖量20000以上,同时在线会员已突破10000,是中国IPv6 BT网站中最具影响力、人气最旺的网站之一。

六维新手入门流程:

        目前六维空间注册需要邀请码,不妨到学校BBS求一个,或者向好友索要。成为正式会员之后,首先要了解各版版规,掌握基本使用方法,比如uTorrent的使用方法,做种的方法等等。遇到问题可以在“六维互助”区发帖咨询;想试验做种,可以在“新手试种”板试试。由于六维空间下载是积分制,用积分下载自己喜欢的资源,因此赚取积分是最重要的。赚取积分的办法很多,其中上传资源是赚取积分的主要途径。下载置顶资源是不需要积分的,所以通过上传已下载的置顶资源是赚取积分的最有效的途径。完成“论坛任务”、应求他人的悬赏,参加有奖活动,水区灌水也可以获得积分,当然发布自己的资源和别人共享也可以获得积分,这也是BT精神最鼓励的行为。有了足够的积分,就可以尽情下载自己喜欢的资源了。

精彩六维欢迎您的到来(http://bt.neu6.edu.cn/

 
2010-06-15 23:10

作为一种单主机多从机的总线系统,在一条1-Wire总线上可挂接的从器件数量几乎不受限制。为了不引起逻辑上的冲突,所有从器件的1-Wire总线接口都是漏极开路的,因此在使用时必须对总线外加上拉电阻(一般取5kΩ左右)。主机对1-Wire总线的基本操作分为复位、读和写三种,其中所有的读写操作均为低位在前高位在后。复位、读和写是1-Wire总线通信的基础,下面通过具体程序详细介绍这3种操作的时序要求。(程序中DQ代表1-Wire总线,定义为P1.0,uchar定义为unsigned char)

1-Wire总线的复位

复位是1-Wire总线通信中最为重要的一种操作,在每次总线通信之前主机必须首先发送复位信号。如程序1.1所示,产生复位信号时主机首先将总线拉低480~960μs然后释放,由于上拉电阻的存在,此时总线变为高电平。1-Wire总线器件在接收到有效跳变的15~60μs内会将总线拉低60~240μs,在此期间主机可以通过对DQ采样来判断是否有从器件挂接在当前总线上。函数Reset()的返回值为0表示有器件挂接在总线上,返回值为1表示没有器件挂接在总线上。


程序1.1 总线复位


uchar Reset(void)
{
uchar tdq;
DQ=0; //主机拉低总线
delay480μs(); //等待480μs
DQ=1; //主机释放总线
delay60μs(); //等待60μs
tdq=DQ; //主机对总线采样
delay480μs(); //等待复位结束
return tdq; //返回采样值
}


1-Wire总线的写操作


由于只有一条I/O线,主机1-Wire总线的写操作只能逐位进行,连续写8次即可写入总线一个字节。如程序1.2所示,当MCS-51单片机的时钟频率为12MHz时,程序中的语句_nop_();可以产生1μs的延时,调用此函数时需包含头文件“intrins.h”。向1-Wire总线写1bit至少需要60μs,同时还要保证两次连续的写操作有1μs以上的间隔。若待写位wbit为0则主机拉低总线60μs然后释放,写0操作完成。若待写位wbit为1,则主机拉低总线并在1~15μs内释放,然后等待60μs,写1操作完成。


程序1.2 向总线写1bit


void Writebit(uchar wbit)
{
_nop_();
//保证两次写操作间隔1μs以上
DQ=0;
_nop_();
//保证主机拉低总线1μs以上
if(wbit)
{             
//向总线写1
DQ=1;
delay60μs();
}
else
{             
//向总线写0
delay60μs();
DQ=1;
}
}

1-Wire总线的读操作


与写操作类似,主机对1-Wire总线的读操作也只能逐位进行,连续读8次,即可读入主机一个字节。从1-Wire总线读取1bit同样至少需要60μs,同时也要保证两次连续的读操作间隔1μs以上。如程序1.3所示,从总线读数据时,主机首先拉低总线1μs以上然后释放,在释放总线后的1~15μs内主机对总线的采样值即为读取到的数据。

程序1.3 从总线读1bit


uchar Readbit()
{
uchar tdq;
_nop_();
//保证两次连续写操作间隔1μs以上
DQ=0;
_nop_();  
//保证拉低总线的时间不少于1μs
DQ=1;
_nop_();
tdq=DQ;  
//主机对总线采样
delay60μs();
//等待读操作结束
return tdq;
//返回读取到的数据
}

1-Wire总线ROM功能命令


在DS18B20内部光刻了一个长度为64bit的ROM编码,这个编码是器件的身份识别标志。当总线上挂接着多个DS18B20时可以通过ROM编码对特定器件进行操作。ROM功能命令是针对器件的ROM编码进行操作的命令,共有5个,长度均为8bit(1Byte)。


①读ROM(33H)


当挂接在总线上的1-Wire总线器件接收到此命令时,会在主机读操作的配合下将自身的ROM编码按由低位到高位的顺序依次发送给主机。总线上挂接有多个DS18B20时,此命令会使所有器件同时向主机传送自身的ROM编码,这将导致数据的冲突。


②匹配ROM(55H)


主机在发送完此命令后,必须紧接着发送一个64bit的ROM编码,与此ROM编码匹配的从器件会响应主机的后续命令,而其他从器件则处于等待状态。该命令主要用于选择总线上的特定器件进行访问。


③跳过ROM(CCH)


发送此命令后,主机不必提供ROM编码即可对从器件进行访问。与读ROM命令类似,该命令同样只适用于单节点的1-Wire总线系统,当总线上有多个器件挂接时会引起数据的冲突。


④查找ROM(F0H)


当主机不知道总线上器件的ROM编码时,可以使用此命令并配合特定的算法查找出总线上从器件的数量和各个从器件的ROM编码。


⑤报警查找(ECH)


此命令用于查找总线上满足报警条件的DS18B20,通过报警查找命令并配合特定的查找算法,可以查找出总线上满足报警条件的器件数目和各个器件的ROM编码

 
2010-06-09 14:09
首先 下载:
 
2010-06-09 13:58


Date Last Modified: Friday, June 26, 2009
Solution ID:   1-19FK3
Product:   MATLAB® Web Server
Reported in Release:   R12.1
Platform:   Linux
Operating System:   Linux Any

Subject:

Why do I get the message "still waiting for 1 of 1 MATLAB sessions" when I try to start the MATLAB Web Server?

Problem Description:

I get the following errors when I try to start the MATLAB Web Server on my LINUX or UNIX machine:

[matweb@madmax webserver]$ ./webstart


[webstart]: Calling webdown to take down MATLAB Web Server . . .


No server to take down . . .


[webstart]: Calling webboot to start MATLAB Web Server . . .


Waiting for MATLAB Web Server to come up . . .
Type your interrupt character (usually CTRL-C) to quit.


Time = 10 secs : still waiting for 1 of 1 MATLAB sessions . . .
Time = 20 secs : still waiting for 1 of 1 MATLAB sessions . . .
Time = 30 secs : still waiting for 1 of 1 MATLAB sessions . . .
Time = 40 secs : still waiting for 1 of 1 MATLAB sessions . . .
Time = 50 secs : still waiting for 1 of 1 MATLAB sessions . . .
Time = 60 secs : MATLAB session monitoring time limit reached . . .

And when I run WEBSTAT I get the following response:

[matweb@madmax webserver]$ ./webstat


MATLAB Web Server has started, but is not completely up . . .
Waiting for 1 of 1 MATLAB sessions . . .
SERVER =


process table entries . . .

Solution:

The MATLAB Web Server requires use of the 'C-Shell' (CSH) in order to start a MATLAB session. There is no user configuration to change this setting.

You should first make sure that CSH is available on your system. You can use the UNIX 'which' command to do this:


[madmax:/home/iboyd]1 % which csh
/usr/bin/csh

If this is not installed on the system it will need to be added. If you only have tcsh, it may be possible to use a symbolic link to from csh to tcsh.

You should then make sure that the account from which the MATLAB Web Server is starting has priveleges to run CSH. You can do this with a command similar to the following. (you will need to specify the path to csh on your system)

$sudo apt-get install csh
 
2010-06-01 16:38

这几天做了一个项目,大量用到了JSP与 servlet之间的传值,所以总结了一下

JSP与 servlet之间的传值有两种情况:JSP -> servlet, servlet -> JSP。
通过对象 request和 session (不考虑 application)完成传值。

一、JSP -> servlet
JSP页面有3种方法向 servlet传值: form表单、URL 、其他

<!-- JSP page -->
...
<%......
session.setAttribute(
"testSession","Hello session");
reqeust.setAttribute(
"testRequest","Hello request");
%>
<a href="JspServlet?action=toServlet">click me</a>
<form action="JspServlet?action=toServlet" method="post" name="form">
<input name="username" type="test" />
<input type="submit" value="submit">
</form>
...


1、对于该JSP页面 form表单的内容,如 <input>标签,在 servlet可用 request.getParameter("username");获取。
2、URL:比如这里的 <a>标签的 href属性与 <form>标签的 action属性的值 "JspServlet?action=toServlet",在 servlet同样用 request.getParameter("action")获取;所要注意的是这里的 url 要和 servlet在web.xml里的 <url-pattern>标签的路径所对应。这部分后面会提到。
3、java片段代码,servlet只能接到 session.setAttribute("testSession","Hello session")的内容,而接不到 request的内容。在 servlet里用 request.getSession().getAttribute("testSession")获取 session内容。

二、Servlet
1、关于 servlet,首先要提到它在 web.xml里的注册内容,如

<servlet-name>JspServlet1</servlet-name>
<servlet-class>com.demo.JspServletDemo</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>JspServlet1</servlet-name>
<url-pattern>/JspServlet</url-pattern>
</servlet-mapping>

<servlet-name>JspServlet2</servlet-name>
<servlet-class>com.demo.JspServletDemo</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>JspServlet2</servlet-name>
<url-pattern>/admin/JspServlet</url-pattern>
</servlet-mapping>


假如 project name 是 jsp2servlet,则该 project根目录的 Context是 /jsp2servlet,在地址栏里显示是 http://localhost:8080/jsp2servlet/
在 project 根目录下有 admin目录,对应的 Context是/admin/jsp2servlet,在地址栏里显示是
http://localhost:8080/jsp2servlet/admin
在这两个目录下的 jsp 都想转到 com.demo.JspServletDemo类做处理,这时的 url需要在 web.xml注册两次。
1)在
http://localhost:8080/jsp2servlet/ 目录下的 jsp 页面 JspServlet1,url应写为 "JspServlet"
2)在
http://localhost:8080/jsp2servlet/admin/ 目录下的 jsp 页面访问 JspServlet2,url应写为 "admin/JspServlet"

2、在 servlet直接用 request对象,得到发送来的请求内容;用 request.getSession(),得到 session对象,从而得到会话内容。

这里的 request.getSession()的参数为 boolean 类型,该方法意思可理解为:

session可以认为是每一个IE进程对应一个会话(新开一个IE进程就可以对应两个会话的),getSession都是返回当前用户的会话对象,参数的区别在于:
参数为true (默认),则如果“当前用户的会话对象”为空(第一次访问时)则创建一个新的会话对象返回;
参数为false,则如果“当前用户的会话对象”为空,则返回 null (即不自动创建会话对象)。

利用这个方法可以判断 session是否过期,如下:

if(request.getSession(false)==null)
System.out.println(
"Session has been invalidated!");
else
System.out.println(
"Session is active!");

三、Servlet -> JSP
从 servlet转到 jsp不外乎两种方法,重定向 和 url转发

1、重定向 ( Redirect):是路径的跳转,内容和 url都改变。不允许带 request参数( session参数可以),即不允许在 servlet里给 request对象使用setAttribute方法传给下一页面。在 servlet里使用 response.sendRedirect(url) 方法。注意这里的 url前不带斜线 /,如 response.sendRedirect(”test.jsp“)

2、url转发 ( Forward):是页面的跳转,页面内容发生改变,url不变。可以带 request和 session参数。在 servlet里使用 getServletConfig().getServletContext().getRequestDispatcher(url).forward(request, response)。而这里的 url前需要带斜线 /,如getServletConfig().getServletContext().getRequestDispatcher(”/test.jsp“).forward(request, response)

 
2010-05-29 17:31
如果使用apt-get的方式安装apache,会发现apache的安装目录很乱,而且并不是按照默认的apache目录结构组织的,这给后期的配置造成了很大麻烦!
在编译安装apache之前,需要确定您的系统是否已经安装gcc编译环境和Zlib,如果没有安装您可以通过以前几步安装:
1、安装gcc:sudo apt-get build-dep gcc
2、安装zlib:apt-get install zlib1g-dev
3、下载apache2.2.14: sudo wget http://labs.xiaonei.com/apache-mirror/httpd/httpd-2.2.14.tar.gz
4、解压apache:sudo tar -zxvf httpd-2.2.14.tar.gz
5、进入解压出来的apache目录:
sudo ./configure --prefix=/usr/server/apache --with-mysql=/usr/share/mysql --enable-so --enable-track-vars --enable-rewrite --with-zlib --enable-mods-shared=all --enable-suexec --with-suexec-caller=daemon --with-suexec-docroot=/var/www/wwwsource
其中后面是三个参数:--enable-suexec --with-suexec-caller=daemon --with-suexec-docroot=/var/www/wwwsource是为安装Extmail而准备的
6、sudo make
7、sudo make install
8、设置apache开机自启动:
1)复制 /usr/server/apache/bin/apachectl到/etc/init.d
2)加载为服务
sudo update-rc.d apachectl defaults
9、在webmin里设置apache模块,因为webmin中默认的设置是按照apt-get安装apache的方式设置的,所以需要做适当的改动
1)增加虚拟服务器的文件:/usr/server/apache/conf/extra/httpd-vhosts.conf
2)Directory to create links in for new virtual servers 设为none
3)Apache服务器根目录:/usr/server/apache
4)httpd执行文件路径:/usr/server/apache/bin/httpd
5)命令apachectl的路径:/usr/server/apache/bin/apachectl
6)启动apache命令:/usr/server/apache/bin/apachectl start
7)停止apache命令:/usr/server/apache/bin/apachectl stop
8)Command to apply configuration设为:/usr/server/apache/bin/apachectl
9)httpd.conf的路径:/usr/server/apache/conf/httpd.conf
10)srm.conf的路径设为自动
11)access.conf的路径设为自动
12)mime.types的路径设为:/usr/server/apache/conf/mime.types
13)Environment file defining Apache variables 设为;None
 
2010-05-27 16:15
1. 打开终端 sudo passwd root 给root用户设置一个密码,因为ubuntu9.1默认是没有密码的

loongsky@LifeTravel:~$ sudo passwd root
[sudo] password for loongsky:
输入新的 UNIX 口令:
重新输入新的 UNIX 口令:
passwd:已成功更新密码

顺便用 uname -a 查看一下自己的主机名,一般就是终端窗口会显示
loongsky@LifeTravel,@后面的将是你的计算机名

还有一点,文中会涉汲一些用户名和计算机名,请改成自己的,例如 loongsky@LifeTravel ,@之前为用户名,之后为计算机名,文中出现的localhost也为计算机名

2. 将IC610的五张光盘解压到同一目录下,怎么弄自己可以搞定吧。说明一下对于新ubuntu解压到windows盘符或linux盘符都一样,因为windows 的分区会被自动挂载到/media目当下面
loongsky@LifeTravel:/media/DATA/EDA_TOOLS/IC610_lnx86.Base$ ls

CDROM1 CDROM2 CDROM3 CDROM4 CDROM5

3.
linux默认可能没有uncompress命令,没关系,到/usr/bin目录下面看一下是否有compress命令,如果有,按以下方法建立一个:

$su %启用超级用户

password%输入超级用户的密码

#ln -s /usr/bin/compress /bin/uncompress %建立一个命令的链接,指向/usr/bin/compress

如果/usr/bin目录下没有compress命令,同样启用超级用户,用gunzip代替,方法如下:

#ln -s /bin/gunzip /bin/uncompress %#表示你已经启用了超级用户,如果没有,安装上面的方法启用


4.
为了要使用 cadence自带的帮助文档,可以用mozilla代替netscape,如下:

$:su

password:

#:ln -s /usr/bin/mozilla /usr/bin/netscape

#:su usrname

5.建立eda文件夹并要更改/home/eda的权限,如下:

$:su

password:

#:mkdir /home/eda

#:chown loongsky /home/eda %loongsky是我的用户名,根据自己的情况确定

#:chmod 777 /home/eda

#:su loongsky

这样你就拥有/home/eda分区的读写权限了。

并新建如下目录,如下:

$:cd /home/eda

$:mkdir ic610

$:mkdir /ic610/OA

$:mkdir installscape %这个目录需要用来安装installscape

或者使用其他的方法新建这几个目录,方法不限。

6.开如安装ic610

进入CDROM1,输入

$ ./SETUP.SH

终端会提示如下信息Copyright 1985-2006 by Cadence Design Systems Inc.

LICENSED SOFTWARE - REVERSE ASSEMBLY, REVERSE COMPILATION AND
REVERSE ENGINEERING PROHIBITED. The information contained in
this package is the proprietary property of Cadence Design Systems,
Inc., or its licensors, and may only be used in accordance with
the Cadence Design Systems license agreement under which this
package is provided.

Restricted Rights Notice to Government Users

Use duplication or disclosure by the Government is subject to
the restrictions as set forth in subparagraphs (c)(1)(ii) of the
Rights in Technical Data and Computer Software clause at
DFARS 252.227-7013. Unpublished - all rights reserved under the
copyright laws of the United States.

Cadence Design Systems, Inc.
555 River Oaks Parkway
San Jose, California 95134 USA

--More--

按回继续,提示

Located CDROM at /media/DATA/EDA_TOOLS/IC610_lnx86.Base/CDROM1

Specify path of install directory [OR type [RETURN] to exit]:

输入安装路径: /home/eda/ic610

接下来会检查你有没有安装InstallScape,回答 n

接下来会问你是否安装InstallScape,回答y

接下来再输入InstallScape安装径: /home/eda/installscape

弹出安装界面,选择安装程序所在目录,比如我的是/media/DATA/EDA_TOOLS/IC610_lnx86.Base/CDROM1

然后询问是否有自动安装控制文件,没有,我们选择(上面)第一项,手动安装。


接着会询问你要将ic610安装到哪个目录,选择 /home/eda/ic610

然后确认要安装的软件包,不确定哪天会用到哪个,我们
全选

接下来就慢慢等一会,如果五张盘都在同一个目录下,就不需要输入另外4张盘的位置了。安装前70%较快,后面要等很长时间,总需一小时左右,不过也应该看个人机子好坏

由于我只画版图,mmsim安装不做说明

7..进入/eda/installscape/iscape/bin目录
,如下:
$:cd /eda/installscape/iscape/bin
$:./iscape
8. 在弹出的图形界面中(安装 mmsim61时还需要用到installscape),点击configure,填入 /home/eda/ic610 即你的IC610安装目录

然后弹出一个已经安装的软件包确认,全选点next,很快就检查完了

接下来会一直提示一些让你选择Y/N的,有默认值的选回车,没有的选n

直至配置OpenAccess,根据提示输入OpenAccess安装到那个目录:/eda/ic610/OA

现在OpenAccess配置完成(因为ic610只支持oa的数据格式,所以OpenAccess一定要配置,否则cadence无法运行

9.修改license

gedit或其他的文本编辑工具打开license,在头两行加入以下两句:

SERVER localhost ANY 5280

DAEMON cdslmd $CDS_ROOT/tools/bin/cdslmd

注意:localhost是你的机器名,如不确定可以在终端输入uname -a即可看到

$:uname -a

一般我们的主机名都是这个localhost(只要你没有修改过)


保存license为dat格式(license.dat),并把license复制到/home/eda/ic610/share/license目录下。

/home/eda/ic610/tools/dfII/samples目录下的local文件夹拷贝至/home/eda/ic610/tools/dfII目录,并把local目录里的cdsinit文件名修改为.cdsinit。


10.
环境变量设置


$:cd /home/
loongsky 切换到普通用户的主目录下
$:sudo gedit .bashrc
往里面加入下面的语句

################################################################################

alias lmli='/eda/ic610/tools/bin/lmgrd -c /eda/ic610/share/license/license.dat'

export OA_HOME=/eda/ic610/OA

export CDS_ROOT=/eda/ic610

export CDS_LIC_FILE=5280@
LifeTravel (你的计算机名)

export LM_LICENSE_FILE=$CDS_ROOT/share/license/license.dat

export CDS_Netlisting_Mode=Analog

export PATH=$CDS_ROOT/tools/bin:$CDS_ROOT/tools/dfII/bin:$PATH

export MOZILLA_HOME=/usr/bin/netscape

###########################################################


alias lmli='/eda/ic610/tools/bin/lmgrd -c /eda/ic610/share/license/license.dat'

export CDS_LIC_FILE=5280@l
ocalhost
localhost是主机名,根据自己的情况修改,前面已有介绍如何查看主机名的方法。
在PATH变量中,export MOZILLA_HOME=/usr/bin/netscape
加上这一句就可以使用cadence自带的帮助文档了
11. 依次执行下面语句,有些会提示错误,不用管
sudo ln
-s /home
/loongsky/.firefox /usr/bin/netscape

sudo mkdir /usr/tmp

sudo chown loongsky /usr/tmp
sudo chmod 755 /usr/tmp
sudo apt-get install csh

sudo ln –s /usr/bin/awk /bin/awk
sudo apt-get install libelf1

sudo -s /usr/lib/libstdc++-libc6.2-2.so.3 /usr/lib/libstdc++-libc6.1-1.so.2

cd /etc/X11

sudo gedit xorg.conf 如果没装显卡驱动则不会有该文件

在最后面加上
#####################

Section "Extensions"

Option "Composite" "Disable"

EndSection

#######################

然后保存 退出终端

12.启动license:

$:lmli


13.icfb&



 
     
 
 
个人档案
 
shandabogo

 
   
 
最新照片
 
   
 
订阅我的空间
 
已有人次访问本空间
 
订阅RSS  什么是RSS?

您也想拥有这样的空间?请点此申请。
     
 
最近访客
 
 

makesichao

ulysses617

cywyz

istart_2002

你多美好

寂寞看花

273394077

bojue_66
     

帮助中心  |  空间客服  |  投诉中心  |  空间协议
©2012 Baidu