??xml version="1.0" encoding="utf-8" standalone="yes"?>久久久久一区,日韩一区二区中文字幕,亚洲人成在线观看一区二区http://www.aygfsteel.com/tmq/archive/2007/08/10/135938.html汤汤汤汤Fri, 10 Aug 2007 14:26:00 GMThttp://www.aygfsteel.com/tmq/archive/2007/08/10/135938.htmlhttp://www.aygfsteel.com/tmq/comments/135938.htmlhttp://www.aygfsteel.com/tmq/archive/2007/08/10/135938.html#Feedback0http://www.aygfsteel.com/tmq/comments/commentRss/135938.htmlhttp://www.aygfsteel.com/tmq/services/trackbacks/135938.html
[1]好好规划自己的\Q不要跟着感觉赎ͼҎ个h的理惛_{安排,l大部分人ƈ不指望成Z么院士或教授Q而是希望zd滋润一些,爽一些。那么,需要慎重安排自q轨迹。从哪个行业入手Q逐渐对该行业深入了解Q不要频J蟩槽,特别是不要ؓ了一点工资而{U阵圎ͼ从长q看Q这炚wҎ不算什么,当你对一个行业有那么几年的体会,以后钱根本不是问题。频J地动荡不是上策Q最后你对哪个行业都没有摔R,永远是新手!   
[2]可以做技术,切不可沉湎于技术。千万不可一门心思钻研技术!l自己很大压力,如果你的心思全部放在这上面Q那么注定你成为孔乙己一cȝ人物Q适可而止ZQ因为技术只不过是你今后前途的支柱之一Q而且q不是最大的支柱Q除非你只愿意到老还是个工程师!   
[3]不要d技术高手,只去做综合素质高手!在企业里P我们时常瞧不h人,说他“什么都不懂Q凭啥拿那么多钱Q凭啥升官!”q是普遍的典型的工程师的q腐之言。h家能上去必然有他的本事,而且是你没有的本事。你xQ老板搞经营那么多q_N见识不如你这个新兵?人家或许善于理Q善于领会老板意图Q善于部门协调等{。因此务必培养自己多斚w的能力,包括理Q亲和力Q察a观色能力Q攻兌力等Q要成ؓl合素质的高手,则前途无量,否则只能w在角落看示波器Q技术以外的技能才是更重要的本事!Q从古到今,国日本Q一律如此!   
[4]多交C会三教九流的朋友!不要只和工程师交往Q认为有共同语言Q其实更重要的是和其他类人物交往Q如果你希望有朝一日当老板或高层管理,那么你整日面对的是q些人。了解他们的l历Q思维习惯Q爱好,学习他们处理问题的模式,了解C会各个角落的现象和问题Q这是以后发展的巨大的本钱,没有q些以后׃W手W脚Q跌跌撞撞,遇到重重困难Q交不少学费Q成功的概率大大降低Q?
[5]知识涉猎不一定专Q但一定要q!多看看其他方面的书,金融Q胦会,q出口,E务Q法律等{,Z后做一些积累,以后的用处会更大Q会交许多学费Q!   
[6]抓住时机向技术管理或市场销售方面的转变Q要x前途就不能一直搞开发,适当时候要转变为管理或销售,前途会更大Q以前搞技术也没有白搞Q以后还用得着。搞理可以培养自己的领D力,搞销售可以培养自q市场概念和思维Q同时ؓ自己以后发展U篏庞大的h脉!应该说这才是前途的真正支柱Q!Q   
[7]逐渐克服自己的心里弱点和性格~陷Q多疑,敏感Q天真(贬义Qƈ不可爱)Q犹豫不冻I胆怯,多虑Q脸皮太薄,心不够黑Q教条式思维。。。这些工E师普遍存在的性格q必须改变Q很隑֐Q只在床上想一惛_然不可能Q去帮朋友守一个月地摊Q包准有效果Q去实践Q而不要只惻I不克服这些缺点,一切不可能Q甚臌目l理都当不好--管你可能技术不错!   
[8]工作的同时要Z后做准备Q徏立自q工作环境Q及早ؓ自己配置一个工作环境,装备电脑Q示波器Q可以买个二手的Q,仿真器,~程器等Q业余可以接ҎQ一斚w接触市场Q培d场感觉,同时也积累资金,更重要的是准备自q产品Q咱搞技术的没有钱,只有技术,技术的代表不是学历和证书,而是产品Q拿L产品Q就可技术{让或与h合作搞企业!先把东西准备好,{待ZQ否则,有了Z也抓不住Q   
[9]要学会善于推销自己Q不仅要能干Q还要能_能写Q善于利用一切机会推销自己Q树立自q品牌形象Q很必要Q要创造条件让别h了解自己Q不然老板怎么知道你能qԌ外面的投资h怎么怿你?提早把自己推销出去Q机会自然会来找你!搞个个h主页是个好注意!Q特别是培养自己在行业的名气Q有了名气,高薪Z自不在话下,更重要的是有合作的机?..   
[10]该出手时便出手!永远不可能有100%把握Q!Q条件差不多p大胆dQ去闯出自己的事业,不要犹UQ不要彷徨,q了不一定成功,但至ؓ下一ơ冲ȝ累了l验Q不q永q没出息Q而且要干成必然要l历p|。不l历风雨Q怎么见彩虹,没有随随便便成功Q?/pre>


 

汤汤 2007-08-10 22:26 发表评论
]]>有关JNLP中传SESSIONID为参数的问题http://www.aygfsteel.com/tmq/archive/2007/06/13/123932.html汤汤汤汤Wed, 13 Jun 2007 11:05:00 GMThttp://www.aygfsteel.com/tmq/archive/2007/06/13/123932.htmlhttp://www.aygfsteel.com/tmq/comments/123932.htmlhttp://www.aygfsteel.com/tmq/archive/2007/06/13/123932.html#Feedback0http://www.aygfsteel.com/tmq/comments/commentRss/123932.htmlhttp://www.aygfsteel.com/tmq/services/trackbacks/123932.html现有目l用SUN JDK1.5中自带的CZQjnlp-servlet作ؓWEBSTART版本理的SERVLET。它可以很好的实现JNLP相关资源QJARQ图片等Q的Z版本的管理和增量更新。ƈ有几个类?#8194;$ $codebaseQ?#8194;$ $name的可替换关键字。(原来写了一个简单的servletQ可以实现Y~码Q但没法提供灉|的版本控Ӟ

但现有项目的需求更高一些,卻IJNLP中需要传更多的参敎ͼ比如Q服务端IPQ端口,上下文,用户d的SESSIONID{,׃jnlp-servlet有源代码Q我们很快修改了JnlpFileHandler和specializeJnlpTemplateҎQƈ加入了这几个自定义关键字Q?#8194;$ $host, $ $port, $ $newcontext, $ $sessionidQ。JNLP如下所C:

<?xml version="1.0" encoding="utf-8"?>

<jnlp spec="1.0 " codebase=" $ $codebase" href=” $ $name”>

<information>

<title>My System</title>

<vendor>CFR</vendor>

<icon href="indexbannerleft.jpg" kind="splash" />

<homepage href="index.html"/>

<description>My System</description>

<description kind="short">CFR Inc..</description>

</information>

<security><all-permissions/></security>

<resources>

<j2se version="1.4" initial-heap-size="32m"/>

<jar href="myapp.jar" version="1.1"/>

<nativelib href="swt-lib.jar" version="1.1"/>

</resources>

<resources os="Windows"><jar href="swt.jar" version="1.1"/></resources>

<resources os="Windows"><jar href="jface.jar" version="1.0"/></resources>

<resources os="Windows"><jar href="osgi.jar" version="1.0"/></resources>

<resources os="Windows"><jar href="runtime.jar" version="1.0"/></resources>

<application-desc main-class="com.cfr.app.main">

<argument> $ $session</argument>

<argument> $ $host</argument>

<argument> $ $port</argument>

<argument> $ $newcontext</argument>

<argument>0</argument>

<argument>aa</argument>

</application-desc>

</jnlp>

其中QSESSIONID是用其内部的request得到?/p>

一切好象即单和明了Q工作正常,但很快就发现了严重的问题?

首先说说该应用的使用模式如下Q?/p>

1?用户从网늙录系l,然后在里面点击:http://host:port/myapp/swt/index.jnlp链接?/p>

2?启动应用Q因为应用是跟当前登录SESSION直接相关的)

按照设计本意Q此Ӟ用户的应用应通过JNLP中的参数得到了该用户d后的SESSIONID才对Q但事实q如此。这U情况只出现在WEBSTARTW一ơ下载的时候,以后当用户重新打开览器登录后Q此时当然是一个新的SESSIONQ,在页面中启动WEBSTART后,发现Q该SESSIONIDq是以前的,q没有想象中的将新SESSIONID传了q来?/p>

后来q是看看JnlpFileHandler中的源代码,发现主要在getJnlpFileQ客L是JRE1.5以下时调用)和getJnlpFileEx(客户端是JDK1.5以上时用)q行了相兛_现。原来,它每生成一个JNLPQ就其~存在HASHMAP中,下一ơ请求,如果h的URL相关q且文g的timestampQ就是Web服务器中的jnlp文g的修Ҏ_可想而知Q除了升U,q个文g一般不会变Q一P׃~存中取Q这样一来,我们也可以推,按照上面的设计,如果有一个用户下载了应用Q其它用户从其它机器下蝲到的JNLPq是W一个用LJNLPQ这是一个更加严重的问题?/p>

׃URL是一LQ现在考虑更改旉戻I卛_getJnlpFile中显式的timesstamp改ؓ当前的时_

long lastModified = new java.util.Date().getTime();

q样QQ何一ơ请求都不会从缓存中获得Q而是重新生成一个,好象q能很好的解册个问题了吧?

但事实远没有惌的那么简单。这跟WEBSTART与服务端的交互过E有关系?/p>

WEBSTART要通过多次从服务端交互才会真正下蝲JNLP文gQ这主要是验证一些时间等相关的属性(具体我没有看代码Q。大x三次才会真正的把JNLP下蝲下来Q其实服务端会生成三ơ,真正下蝲的是W三个)Q由于我们的SESSIONID是从SERVLET内部的REQUEST中直接得刎ͼq样一来,实际上只有第一个请求的SESSIONID是正的Q因为它是直接从览器中q入的)Q其它两个都是WEBSTART用URLConnection建立的连接,SESSIONID都是新生成的Q而下载的恰恰又是W三个,q样一来,又黄了!Q!

接下来的x是自p法传SESSIONIDQ而不是从当前REQUEST中取。所以,刚才启动WEBSTART的链接改为如下Ş式:

<a href="/myapp/swt/index.jnlp?sessionid=<%=request.getSession().getId()%>">启动客户端程?lt;/a>

q样Q生成的URL会是Q?/p>

http://localhost:8899/myapp/swt/index.jnlp?sessionid=F8864B2CDF60AE371CD6DFC189E80C78

按照前面的JNLP文gQ下载下来的JNLPW一行是Q?/p>

<jnlp spec="1.0 " codebase="http://127.0.0.1:8899/myapp/swt/" href=” http://localhost:8899/myapp/swt/index.jnlp?sessionid=F8864B2CDF60AE371CD6DFC189E80C78”>

既然有了SESSIONIDQ这意味着每个h的URL都不会一PQ,我们q不着时间戳改ؓ当前旉了,q按原来的做p了?/p>

到此为止Q好像问题解决的很彻底哦Q但不要高兴的太早!Q!Q!

我们同样做实验:

1?WEBSTART应用清空

2?dpȝQ下载安装应用ƈq行Q一切OKQ?/p>

3?退pȝ

4?打开新的览器ƈd

5?点相应的链接启动WEBSTART应用

6?怪了QSESSIONID怎么q是前面的一个呢Q?

 查看jnlp-servlet日志Q刚才说了,要经q多ơ握手才会实际的下蝲JNLPQ从程中发玎ͼ客户端发的请求,W一个是对的xhttp://localhost:8899/myapp/swt/index.jnlp?sessionid=F8864B2CDF60AE371CD6DFC189E80C78

 SESSION是最新的Q但W二个请求,SESSION怎么是以前的呢Q?/p>

原来QWEBSTART在经q第一ơ握手之后,发现本地有该应用Q就用该应用JNLP中的href字段发送下面的hQ导致了刚才的问题?/p>

后面的解军_法说h没什么了Q直接去掉href字段p了,如下片段Q?/p>

<?xml version="1.0" encoding="utf-8"?>

<jnlp spec="1.0 " codebase=" $ $codebase">

q样Q每ơ都用新的URL去请求了Q!

说来说去Q只是过E,其它代码中改得ƈ不多Q主要是增加了SESSION参数?

在以后动态更改应用的MAINcLQ思\也差不多?/p>

其它人需地做的改动:

更改JNLPQ去掉href?/p>

换成新的jnlp_servlet

清除当前已安装的应用?/p> 链接改为有SESSIONID为参数的链接?

转蝲Q文章来自于http://java.linuxjiaocheng.com/applet-api/sdk-tutorial/xml-jsp-programming2601.html

汤汤 2007-06-13 19:05 发表评论
]]>
LDAP?/title><link>http://www.aygfsteel.com/tmq/archive/2007/06/11/123440.html</link><dc:creator>汤汤</dc:creator><author>汤汤</author><pubDate>Mon, 11 Jun 2007 10:28:00 GMT</pubDate><guid>http://www.aygfsteel.com/tmq/archive/2007/06/11/123440.html</guid><wfw:comment>http://www.aygfsteel.com/tmq/comments/123440.html</wfw:comment><comments>http://www.aygfsteel.com/tmq/archive/2007/06/11/123440.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/tmq/comments/commentRss/123440.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/tmq/services/trackbacks/123440.html</trackback:ping><description><![CDATA[<p dir="ltr" style="margin-right: 0px">LDAP介绍 4<br /> 1.1. LDAP是什?nbsp;4<br /> 1.2. LDAP是电话簿 4<br /> 1.3. LDAP是不是数据库 4<br /> </p> <p>2. LDAP的特?nbsp;5<br /> 2.1. LDAP的优?nbsp;5<br /> 2.1.1 跨^?nbsp;5<br /> 2.1.2 费用及维?nbsp;5<br /> 2.1.3 复制技?nbsp;5<br /> 2.1.4 允许使用ACI 5<br /> 2.2. LDAP存储什么数?nbsp;6<br /> 2.3. 什么时候该用LDAP存储数据 6<br /> 3. LDAP的基本模?nbsp;7<br /> 3.1 信息模型Q描qLDAP的信息表C方?nbsp;7<br /> 3.2 命名模型Q描qLDAP中的数据如何l织 7<br /> 3.3 功能模型Q描qLDAP中的数据操作讉K 7<br /> 3.4 安全模型Q描qLDAP中的安全机制 8<br /> 3.4.1 w䆾认证 8<br /> 3.4.2 通讯安全 8<br /> 3.4.3 讉K控制 8</p> <p dir="ltr" style="margin-right: 0px"><br /> </p> <p>4. LDAP数据l构 9<br /> 4.1 树状l织 9<br /> 4.2 条目和条目认?nbsp;9<br /> 4.3 数据样式QschemaQ?nbsp;9<br /> 4.4 对象cd(objectClass) 9<br /> 4.5 qo器和语法 10<br /> 4.6 树移?nbsp;10<br /> 4.7 LDIF交换文g 10<br /> 4.8 JAVA或CORBA对象串行化存?nbsp;10<br /> </p> <br /> <p>1.1. LDAP是什?br /> LDAP是轻量目录访问协议,英文全称是Lightweight Directory Access ProtocolQ一般都UCؓLDAP。它是基于X.500标准的,但是单多了ƈ且可以根据需要定制。与X.500不同QLDAP支持TCP/IPQ这对访问Internet是必ȝ。LDAP的核心规范在RFC中都有定义,所有与LDAP相关的RFC都可以在LDAPman RFC|页中找到?br /> 单说来,LDAP是一个得到关于h或者资源的集中、静态数据的快速方式?br /> LDAP是一个用来发布目录信息到许多不同资源的协议。通常它都作ؓ一个集中的地址本用,不过Ҏl织者的需要,它可以做得更加强大?br /> 1.2. LDAP是电话簿<br /> LDAP其实是一电话,cM于我们所使用诸如NIS(Network Information Service)、DNS (Domain Name Service){网l目录,也类g你在花园中所看到的树木?br /> 1.3. LDAP是不是数据库<br /> 不少LDAP开发h员喜Ƣ把LDAP与关pL据库相比Q认为是另一U的存贮方式Q然后在L能上进行比较。实际上Q这U对比的基础是错误的。LDAP和关pL据库是两U不同层ơ的概念Q后者是存贮方式Q同一层次如网格数据库Q对象数据库Q,前者是存贮模式和访问协议。LDAP是一个比关系数据库抽象层ơ更高的存贮概念Q与关系数据库的查询语言SQL属同一U别。LDAP最基本的Ş式是一个连接数据库的标准方式。该数据库ؓL询作了优化。因此它可以很快地得到查询结果,不过在其它方面,例如更新Q就慢得多?br /> 从另一个意义上 LDAP是实C指定的数据结构的存贮Q它是一U特D的数据库。但是LDAP和一般的数据库不同,明白q一Ҏ很重要的?LDAPҎ询进行了优化Q与写性能相比LDAP的读性能要优U很多?br /> pSybase、Oracle、Informix或Microsoft的数据库理pȝQDBMSQ是用于处理查询和更新关pd数据库那PLDAP服务器也是用来处理查询和更新LDAP目录的。换句话来说LDAP目录也是一U类型的数据库,但不是关pd数据库。要特别注意的是QLDAP通常作ؓ一个hierarchal数据库用,而不是一个关pL据库。因此,它的l构用树来表C比用表格好。正因ؓq样Q就不能用SQL语句了?br /> 2. LDAP的特?br /> 2.1. LDAP的优?br /> 2.1.1 跨^?br /> LDAP最大的优势是:可以在Q何计机q_上,用很Ҏ获得的而且数目不断增加的LDAP的客LE序讉KLDAP目录。而且也很Ҏ定制应用E序为它加上LDAP的支持?br /> LDAP协议是跨q_的和标准的协议,因此应用E序׃用ؓLDAP目录攑֜什么样的服务器上操心了。实际上QLDAP得到了业界的q泛认可Q因为它是Internet的标准。商都很愿意在产品中加入对LDAP的支持,因ؓ他们Ҏ不用考虑另一端(客户端或服务端)是怎么L。LDAP服务器可以是M一个开发源代码或商用的LDAP目录服务器(或者还可能是具有LDAP界面的关pd数据库)Q因为可以用同样的协议、客Lq接软g包和查询命o与LDAP服务器进行交互。与LDAP不同的是Q如果Y件商想在Y件品中集成对DBMS的支持,那么通常都要Ҏ一个数据库服务器单独定制?br /> 2.1.2 费用及维?br /> 不象很多商用的关pd数据库,你不必ؓLDAP的每一个客Lq接或许可协议付贏V?br /> 大多数的LDAP服务器安装v来很单,也容易维护和优化?br /> 2.1.3 复制技?br /> LDAP服务器可以用"???的方法复刉分或全部数据Q例如:可以把数??到远E的办公室,以增加数据的安全性。复制技术是内置在LDAP服务器中的而且很容易配|。如果要在DBMS中用相同的复制功能Q数据库产商׃要你支付额外的费用,而且也很隄理?br /> 2.1.4 允许使用ACI<br /> LDAP允许你根据需要用ACIQ一般都UCؓACL或者访问控制列表)控制Ҏ据读和写的权限。例如,讑֤理员可以有权改变员工的工作地点和办公室LQ但是不允许改变记录中其它的域。ACI可以Ҏ谁访问数据、访问什么数据、数据存在什么地方以及其它对数据q行讉K控制。因些都是由LDAP目录服务器完成的Q所以不用担心在客户端的应用E序上是否要q行安全查?br /> 2.2. LDAP存储什么数?br /> LDAP对于q样存储q样的信息最为有用:也就是数据需要从不同的地点读取,但是不需要经常更新。例如,q些信息存储在LDAP目录中是十分有效的:<br /> l 公司员工的电话号码簿和组l结构图<br /> l 客户的联pM?br /> l 计算机管理需要的信息Q包括NIS映射、email假名Q等{?br /> l 软g包的配置信息<br /> l 公用证书和安全密?br /> 2.3. 什么时候该用LDAP存储数据<br /> 大多数的LDAP服务器都密集型的操作q行专门的优化。因此,当从LDAP服务器中d数据的时候会比从专门为OLTP优化的关pd数据库中d数据快一个数量。也是因Z门ؓȝ性能q行优化Q大多数的LDAP目录服务器ƈ不适合存储需要需要经常改变的数据。例如,用LDAP服务器来存储电话L是一个很好的选择Q但是它不能作ؓ电子商务站点的数据库服务器?br /> 如果下面每一个问题的{案都是"?Q那么把数据存在LDAP中就是一个好L?br /> l 需要在Mq_上都能读取数据吗Q?br /> l 每一个单独的记录Ҏ不是每一天都只有很少的改变?<br /> l 可以把数据存在^面数据库Qflat databaseQ而不是关pd数据库中吗?换句话来_也就是不什么范式不范式的,把所有东襉K存在一个记录中Q差不多只要满W一范式Q?br /> 最后一个问题可能会唬住一些hQ其实用q面数据库去存储一些关pd的数据也是很一般的。例如,一条公司员工的记录可以包含经理的d名。用LDAP来存储这cM息是很方便的。一个简单的判断ҎQ如果可以把保数据存在一张张的卡片里Q就可以很容易地把它存在LDAP目录里?br /> 3. LDAP的基本模?br /> 3.1 信息模型Q描qLDAP的信息表C方?br /> 在LDAP中信息以树状方式l织Q在树状信息中的基本数据单元是条目,而每个条目由属性构成,属性中存储有属性|LDAP中的信息模式Q类g面向对象的概念,在LDAP中每个条目必d于某个或多个对象c(Object ClassQ,每个Object Class由多个属性类型组成,每个属性类型有所对应的语法和匚w规则Q对象类和属性类型的定义均可以用承的概念。每个条目创建时Q必d义所属的对象c,必须提供对象cM的必选属性类型的属性|在LDAP中一个属性类型可以对应多个倹{?br /> 在LDAP中把对象cR属性类型、语法和匚w规则l称为SchemaQ在LDAP中有许多pȝ对象cR属性类型、语法和匚w规则Q这些系lSchema在LDAP标准中进行了规定Q同时不同的应用领域也定义了自己的SchemaQ同时用户在应用Ӟ也可以根据需要自定义Schema。这有些cM于XMLQ除了XML标准中的XML定义外,每个行业都有自己标准的DTD或DOM定义Q用户也可以自扩展;也如同XMLQ在LDAP中也鼓励用户量使用标准的SchemaQ以增强信息的互联互通?br /> 在Schema中最隄解的是匹配规则,q是LDAP中ؓ了加快查询的速度Q针对不同的数据cdQ可以提供不同的匚wҎQ如针对字符串类型的相等、模p、大于小于均提供自己的匹配规则?br /> 3.2 命名模型Q描qLDAP中的数据如何l织<br /> LDAP中的命名模型Q也即LDAP中的条目定位方式。在LDAP中每个条目均有自qDN和RDN。DN是该条目在整个树中的唯一名称标识QRDN是条目在父节点下的唯一名称标识Q如同文件系l中Q带路径的文件名是DNQ文件名是RDN?br /> 3.3 功能模型Q描qLDAP中的数据操作讉K<br /> 在LDAP中共有四c?0U操作:查询cL作,如搜索、比较;更新cL作,如添加条目、删除条目、修Ҏ目、修Ҏ目名Q认证类操作Q如l定、解l定Q其它操作,如放弃和扩展操作。除了扩展操作,另外9U是LDAP的标准操作;扩展操作是LDAP中ؓ了增加新的功能,提供的一U标准的扩展框架Q当前已l成为LDAP标准的扩展操作,有修改密码和StartTLS扩展Q在新的RFC标准和草案中正在增加一些新的扩展操作,不同的LDAP厂商也均定义了自q扩展操作?br /> 3.4 安全模型Q描qLDAP中的安全机制<br /> LDAP中的安全模型主要通过w䆾认证、安全通道和访问控制来实现?br /> 3.4.1 w䆾认证<br /> 在LDAP中提供三U认证机Ӟ卛_名、基本认证和SASLQSimple Authentication and Secure LayerQ认证。匿名认证即不对用户q行认证Q该Ҏ仅对完全公开的方式适用Q基本认证均是通过用户名和密码q行w䆾识别Q又分ؓ单密码和摘要密码认证QSASL认证即LDAP提供的在SSL和TLS安全通道基础上进行的w䆾认证Q包括数字证书的认证?br /> 3.4.2 通讯安全<br /> 在LDAP中提供了ZSSL/TLS的通讯安全保障。SSL/TLS是基于PKI信息安全技术,是目前Internet上广泛采用的安全服务。LDAP通过StartTLS方式启动TLS服务Q可以提供通讯中的数据保密性、完整性保护;通过强制客户端证书认证的TLS服务Q同时可以实现对客户端n份和服务器端w䆾的双向验证?br /> 3.4.3 讉K控制<br /> 虽然LDAP目前q无讉K控制的标准,但从一些草案中或是事实上LDAP产品的访问控制情况,我们不难看出QLDAP讉K控制异常的灵zd丰富Q在LDAP中是Z讉K控制{略语句来实现访问控制的Q这不同于现有的关系型数据库pȝ和应用系l,它是通过Z讉K控制列表来实现的Q无论是Zl模式或角色模式Q都摆脱不了q种限制?br /> 在用关pd数据库系l开发应用时Q往往是通过几个固定的数据库用户名访问数据库。对于应用系l本w的讉K控制Q通常是需要徏立专门的用户表,在应用系l内开发针对不同用L讉K控制授权代码Q这样一旦访问控制策略变更时Q往往需要代码进行变更。M一句话Q关pd数据库的应用中用h据管理和数据库访问标识是分离的,复杂的数据访问控刉要通过应用来实现?br /> 而对于LDAPQ用h据管理和讉K标识是一体的Q应用不需要关心访问控制的实现。这是由于在LDAP中的讉K控制语句是基于策略语句来实现的,无论是访问控制的数据对象Q还是访问控制的M对象Q均是与q些对象在树中的位置和对象本w的数据特征相关?br /> 在LDAP中,可以把整个目录、目录的子树、制定条目、特定条目属性集或符合某qo条g的条目作为控制对象进行授权;可以把特定用戗属于特定组或所有目录用户作为授权主体进行授权;最后,q可以定义对特定位置Q例如IP地址或DNS名称Q的讉K权?/p> <br /> <p>4. LDAP数据l构<br /> LDAP是实C指定的数据结构的存贮Q它包括以下可以用关pL据库实现的结构要求:树状l织、条目认证、类型定义、许可树形记录拷贝?br /> 4.1 树状l织<br /> 无论是X500q是LDAP都是采用树状方式q行记录。每一个树目录都有一个树根的入口条目Q子记录全部是这一Ҏ目的子孙。这是目录与关系数据cd最大的区别Q关pL据库的应用结构也可实现树状记录)。因此,把目录看作是更高U的树状数据库也未尝不可Q只不过除此外,它不能实现关pd贮的重要功能?br /> 4.2 条目和条目认?br /> LDAP是以条目作ؓ认证的根据。ROOT的权限认证与目录本n无关Q但除此外所有条目的认证权限由条目本w的密码q行认证。LDAP可以配置成各U各样不同的父子条目权限l承方式?br /> 每一个条目相当于一个单一的^面文本记录,由条目自w或指定的条目认证进行访问控制。因此,LDAP定义的存贮结构等同于一Ҏ状组l的q面数据库,q提供相应的讉K控制?br /> 条目中的记录以名-值对的Ş式存在,每一个名值对必须由数据样式schema预定义。因此,LDAP可以看作是以规定的值类型以名值对形式存贮在一pd以树状组l的q面数据库的记录的集合?br /> 4.3 数据样式QschemaQ?br /> 数据样式schema是针对不同的应用Q由用户指定Q设计)cd属性类型预定义Q条目中的类(objectclass)和属性必d在LDAP服务器启动时载入内存的schema已有定义。因此,ADzd目录中的条目记录必ȝ合Active Directory的schema中。如果已提供的schema中的定义不够用,用户可以自行定义新的schema.<br /> ?a ><font color="#007799">http://ldap.akbkhome.com/index.php</font></a>中可以看到常用的schema?br /> 4.4 对象cd(objectClass)<br /> 因ؓLDAP目录可以定制成存储Q何文本或二进制数据,到底存什么要׃自己军_。LDAP目录用对象类型(objectclassQ的概念来定义运行哪一cȝ对象使用什么属性。在几乎所有的LDAP服务器中Q你都要Ҏ自己的需要扩展基本的LDAP目录的功能,创徏新的对象cd或者扩展现存的对象cd?br /> 条目中的记录通过objectclass实现分类QobjectClass是一个承性的cd义,每一个类定义指定必须具备的属性。如某一条目指定必须W合某个cdQ则它必d备超cL指定的属性?br /> 通过objectclass分类Q分散的条目中的记录实际上建立了一个烦引结构,为高速的L询打下了基础。Objectclass也是qo器的主要查询对象?br /> 4.5 qo器和语法<br /> LDAP是一个查询ؓȝ记录l构Q无论是何种查询方式Q最l都p滤器~点查询的条件。过滤器相当于SQL中的WHERE子句。Q何LDAP的类qo和字W串都必L在括号内Q如Qobjectclass=*Q?指列出所有类型的记录Q不q分c)?br /> 可以使用=Q?gt;=Q?lt;=Q~=Q约{于Q进行比较,?number<=100)。合q条件是最怪的Q必L操作W放在两个操作对象的前面而不是中_单一操作对象用括hh。如<br /> l A与BQ不是A&BQ而是Q?amp;(A)(B)Q?br /> l 或?|"表示Q?br /> l 非?Q?表示?br /> l 对于"?Q或"?在操作符后可以跟多个条g表达式,但非后则只参是单个表辑ּ?br /> 详见RFC1558?br /> 4.6 树移?br /> LDAP最重要的特性和要求q不是读性能Q而是扩展性。这一Ҏ是通过树移植和树复制实现的。按LDAP的RFC要求QLDAP目录应该可以L地在不同的目录间q接、合qƈ实现自动复制Q及自动性同步。这意味着用户可以在Q一LDAP中访问条目,而不用管其中某一部分是否复制自全世界另一目录中的记录Q同时另一目录中的记录同样在正常运作?br /> q一Ҏ如果在关系数据库中实现Q意味着要用程序化的非规范化预复制。类g汇d目的设计?br /> 4.7 LDIF交换文g<br /> LDIF是LDAPU定的记录交换格式,以^面文本的形式存在Q是大部分LDAP内容交换的基Q如拯、添加、修改等操作Q都是基于LDIF文gq行操作?br /> 4.8 JAVA或CORBA对象串行化存?br /> |络高效率的讉K加上JAVA的跨q_能力Q当把JAVA或CORBA对象串行化后存储到LDAP目录上时Q可以生非同一般的集成效果--实际上,q正是EJB?NET的网l定位基技术?br /> 使用JAVA或CORBA对象存储Ӟ必须首先让LDAP服务支持该对象定义,也就是说包含qmail.schema或corba.schema?br /> JAVA必须存储在objectclass=javacontainer的条目中Q而且必须带有cn属性,q意味着除非该JAVAcM门实CDirContext接口Q对于大多数JAVAcL_只能采用DirContext代替Context实现bind的添加操作。取出JAVAcȝ对要单得多,只需使用context.lookup()获得该对象的句柄Q然后强刉型成所需要的对象可以了,如:<br /> Person p=(Person)contex.lookup("cn=elvis,dc=daifu,dc=com");<br /> q个句法在EJB的程序中Q是l常用到的?br /> 使用CORBA的跨语言性质Q用CORBA存储对象比JAVA更加׃hQ这意味着所存储的对象可以被M语言~写的客L讉K。其实,微Y?net说到底也非常单,无非是把COM对象存储到微软自家的目录ActiveDirectory里面Q从而可以在|络范围内用Q何微软^台的语言q行对象讉K而已。众所周知QCOM是与CORBA相对的微软规范?br /> 使用对象串行化技术,可以把常用对象如某个打印机,某个客户直接存储到LDAP中,然后快速获取该对象的引用,q样Q就比把对象信息存储到关pL据库中,分别取出属性,然后再初始化对象操作的做法,效率要高得多了。这是LDAP目前比普通关pL据库存储要优U的地方,而对象数据库q不成熟?/p> <br /> <br /> 转蝲?a >http://blog.sina.com.cn/u/4b53d0b3010005lj</a> <img src ="http://www.aygfsteel.com/tmq/aggbug/123440.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/tmq/" target="_blank">汤汤</a> 2007-06-11 18:28 <a href="http://www.aygfsteel.com/tmq/archive/2007/06/11/123440.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>怎样安装Eclipse插g?http://www.aygfsteel.com/tmq/archive/2006/01/11/27600.html汤汤汤汤Wed, 11 Jan 2006 06:43:00 GMThttp://www.aygfsteel.com/tmq/archive/2006/01/11/27600.htmlhttp://www.aygfsteel.com/tmq/comments/27600.htmlhttp://www.aygfsteel.com/tmq/archive/2006/01/11/27600.html#Feedback0http://www.aygfsteel.com/tmq/comments/commentRss/27600.htmlhttp://www.aygfsteel.com/tmq/services/trackbacks/27600.htmlҎ一Q?/STRONG>
      1.关闭EclipseQ将插g的安装压~文件解压羃到某个目录?BR>      2.打开Eclipse,点击主菜单的“帮助”→ “软g更新” →“理配置”子菜单,打开产品配置对话框。选中Eclipse SDK单击右键选择“d” →“扩展位置”了菜单。在打开的浏览文件对话框中,选择插g的安装文件目录?/FONT>

Ҏ二:

1Q?/SPAN>插件的安装压羃文g解压~到某个目录?/FONT>

2Q?/SPAN>?SPAN lang=EN-US>Eclipse的安装目录下建立一名ؓ“links”的文件夹,然后?#8220;links”文g夹下建立一件扩展名?#8220;.links”的文件。文件的内容是:path=插g的安装压~文件的位置?/SPAN>

注意Q\径中?#8220;\”换成“\\”,否则插g不能成功安装?/SPAN>

备注Q?/STRONG>不同版本的插仉要安装在特定版本?SPAN lang=EN-US>Eclipse下?/SPAN>

 



汤汤 2006-01-11 14:43 发表评论
]]>
java代码实现文g拯http://www.aygfsteel.com/tmq/archive/2006/01/09/27287.html汤汤汤汤Mon, 09 Jan 2006 10:02:00 GMThttp://www.aygfsteel.com/tmq/archive/2006/01/09/27287.htmlhttp://www.aygfsteel.com/tmq/comments/27287.htmlhttp://www.aygfsteel.com/tmq/archive/2006/01/09/27287.html#Feedback0http://www.aygfsteel.com/tmq/comments/commentRss/27287.htmlhttp://www.aygfsteel.com/tmq/services/trackbacks/27287.htmlJAVA中没有提供特定的文g拯ҎQ但可以通过文g输入输出对文gq行逐字节拷贝?BR>而在~写代码Ӟ要处理以下几个异常:
1.如果拯的源文g不存在?BR>2.源文件和目标文g的类型不同(也就是扩展名不同Q,导致源文g和目标文件的内容不一致?BR>3.在读写文件时Q可能会发生异常?/P>

下面是一个自定的文g拯cȝ例子?/P>

import java.io.IOException;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileNotFoundException;
import javax.swing.JOptionPane;

/**
 *E?nbsp; 序:文g拯
 *文g名:FileCopy
 *q뀀収ͼwindows 2000
 *~译器:JDK1.5.0
 *描 qͼ该类是抽象类Q通过调用Ҏcopy对两个同cd文gq行拯
 *   参 敎ͼ目标文g名,源文件名?BR> **/


public abstract class FileCopy {

    /*拯文g*/
    public static boolean copy(String resultFile, final String sourceFile) {
        boolean isCopy = false;
        //判断目标文g名和源文件名cd是否相同Q即扩展名是否相同)
        if (!isEqualsType(resultFile, sourceFile)) {
            JOptionPane.showMessageDialog(null, "目标文g和源文g的类型不同,不能拯!");
            return false;
        } else {
            //cd相同
            File readFile = new File(sourceFile);
            File writeFile = new File(resultFile);

            //判断源文件是否存?BR>            if (readFile.exists() && readFile.isFile()) {
                //如果目标文g已经存在Q询问是否覆?BR>                if (writeFile.exists()) {
                    int state = JOptionPane.showConfirmDialog(null,
                            "目标文g" + resultFile + "已经存在,是否覆盖Q?);
                    if (state != JOptionPane.YES_OPTION) {
                        return false;
                    }
                }
                FileInputStream readStream = null;
                FileOutputStream writeStream = null;
                try {
                    readStream = new FileInputStream(readFile);
                    writeStream = new FileOutputStream(writeFile);
                    while (readStream.available() > 0) {
                        int content = readStream.read();
                        writeStream.write(content);
                    }
                    JOptionPane.showMessageDialog(null, "文g拯成功Q?);
                    isCopy = true;
                } catch (IOException ioErr) {
                    JOptionPane.showMessageDialog(null, "源文件读取错误!h查文?);
                } catch (Exception err) {
                    JOptionPane.showMessageDialog(null, "文g拯错误Q请查目标文件内Ҏ否正!");
                } finally {
                    try {
                        readStream.close();
                        writeStream.close();
                    } catch (IOException ioErr) {
                        isCopy = false;
                    }
                }
            }
            //不存在,则返回false
            else {
                JOptionPane.showMessageDialog(null, "源文? + sourceFile + "不存在!");
            }
            return isCopy;
        }
    }

    /**
     *判断目标文g和源文g的类型是否相?BR>     *卛_断扩展名是否相同
     **/
    private static boolean isEqualsType(String resultFile, String sourceFile) {
        int resultDot = resultFile.lastIndexOf('.');
        int sourceDot = sourceFile.lastIndexOf('.');
        String resultType = "";
        String sourceType = "";
        if (resultDot > 0) {
            resultType = resultFile.substring(resultDot + 1, resultFile.length());
        }
        if (sourceDot > 0) {
            sourceType = sourceFile.substring(sourceDot + 1, sourceFile.length());
        }
        return resultType.equals(sourceType);
    }

}



汤汤 2006-01-09 18:02 发表评论
]]>
վ֩ģ壺 | | | | ½| ɽ| ̨ʡ| | | ī| | | ˳| | ˮ| Ǽ| | | | ɽ| | ɽ| ٳ| | | | | | | ¡| | Ӣ| | °Ͷ| ¡| | Ž| ˿| ֶ| | Ͷ|