??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲产国偷V产偷V自拍色戒,亚洲AV午夜成人片,亚洲色精品vr一区二区三区 http://www.tkk7.com/Tower/archive/2005/05/13/4242.html非飞 非飞 Thu, 12 May 2005 16:08:00 GMT http://www.tkk7.com/Tower/archive/2005/05/13/4242.html http://www.tkk7.com/Tower/comments/4242.html http://www.tkk7.com/Tower/archive/2005/05/13/4242.html#Feedback 2 http://www.tkk7.com/Tower/comments/commentRss/4242.html http://www.tkk7.com/Tower/services/trackbacks/4242.html @ My Space ]]> JMX设计模式之MBeanForAppConfig模式 http://www.tkk7.com/Tower/archive/2005/05/07/4053.html非飞 非飞 Fri, 06 May 2005 16:19:00 GMT http://www.tkk7.com/Tower/archive/2005/05/07/4053.html http://www.tkk7.com/Tower/comments/4053.html http://www.tkk7.com/Tower/archive/2005/05/07/4053.html#Feedback 0 http://www.tkk7.com/Tower/comments/commentRss/4053.html http://www.tkk7.com/Tower/services/trackbacks/4053.html @ My space ]]> NIO中Selector的工作原? http://www.tkk7.com/Tower/archive/2005/04/26/3809.html非飞 非飞 Tue, 26 Apr 2005 02:06:00 GMT http://www.tkk7.com/Tower/archive/2005/04/26/3809.html http://www.tkk7.com/Tower/comments/3809.html http://www.tkk7.com/Tower/archive/2005/04/26/3809.html#Feedback 3 http://www.tkk7.com/Tower/comments/commentRss/3809.html http://www.tkk7.com/Tower/services/trackbacks/3809.html
Selector是用来获取注册在其中的channel的相关事件的发生Q也是acceptQread和write。selector中有3个key set?
key setQ包含代表所有在其中注册的channelQ可以通过selector.keys()得到?
selected-key setQ包含所有被到有关注的操作已经qA的keyQ通过selector.selectedKeys得到?
cancelled-key setQ包含所有已l被cancelQ但是还没有channelq没有deregister的keyQ这个集合是不能直接被访问的?br>
key通过调用channel的registerҎ被加入到key set中。被取消的key在select的时候会被从相应的key set中移除?br>
key set自n是不可以直接q行修改的?
无论是通过调用channel的closeҎq是调用key的cancelҎQkey都会被放|到canceled-key set中。取消的key会将其channel在下一ơselect时将注册撤销Q同时将key从所有的key set中移除?
key在执行select操作时被加入到selected-key set中。在selected-key
set中的key可以通过调用iterator的removeҎQ将其从selected-key
set中移除,不能通过其他的办法将其从selected-key set中移除?br>
通过selector?个方法selectQ阻塞选择Q直到有兛_的事件发生时退出阻塞)QselectNowQ不d选择Q,select(long)Q指定超旉择Q超时到达或者有兛_事g发生旉出阻塞)Q来获取兛_事g的发生。其执行步骤分ؓ以下3步:
1、将存在于canceled-key set中的key从所有的key set中移除,撤销注册的channelQ清Icanceled-key set?
2、地层操作系l检查是否有兛_的事件发生,当有兛_的事件发生时Q首先检查channel的key是否已经存在于selected-key
set中,如果不存在,则将其加入到selected-key set中去Q同时修改key的ready-operation
set来表明当前ready的操作,而以前存在于ready-operation
set中的信息会被删除。如果对应的key已经存在于selected-key set中,q直接修改其ready-operation
set来表明当前ready的操作,删除原来ready-operation set中的信息?
3、如果在W二步中有加入到canceled-key set中的keyQ在q一步会执行W一步的操作?
selector自n是线E安全的Q而他的key
set却不是。在一ơ选择发生的过E中Q对于key的关心事件的修改要等C一ơselect的时候才会生效?
另外Qkey和其代表的channel有可能在M时候被cancel和close。因此存在于key
set中的keyq不代表其key是有效的Q也不代表其channel是open的。如果key有可能被其他的线E取消或关闭channelQ程序必d
心的同步查这些条件?
d了的select可以通过调用selector的wakeupҎ来唤醒?img src ="http://www.tkk7.com/Tower/aggbug/3809.html" width = "1" height = "1" /> ]]> 使用JavaScript来实现页面间的参C?/title> http://www.tkk7.com/Tower/archive/2005/04/18/3417.html非飞 非飞 Mon, 18 Apr 2005 07:52:00 GMT http://www.tkk7.com/Tower/archive/2005/04/18/3417.html http://www.tkk7.com/Tower/comments/3417.html http://www.tkk7.com/Tower/archive/2005/04/18/3417.html#Feedback 3 http://www.tkk7.com/Tower/comments/commentRss/3417.html http://www.tkk7.com/Tower/services/trackbacks/3417.html 在JavaScript中,可以通过window.location来获取url地址。但是window.location是一个对象,没有办法直接从里面获取出我们需要的参数。通常的做法就是用一个隐藏的<input>,通过window.location负值给input。其目的是Zlocation转换成String。写的过E中L觉得太复杂了Q后来发C用document.URL可以解册个问题?img src ="http://www.tkk7.com/Tower/aggbug/3417.html" width = "1" height = "1" /> ]]> JavaScriptd服务器端的xml http://www.tkk7.com/Tower/archive/2005/04/09/3026.html非飞 非飞 Sat, 09 Apr 2005 04:23:00 GMT http://www.tkk7.com/Tower/archive/2005/04/09/3026.html http://www.tkk7.com/Tower/comments/3026.html http://www.tkk7.com/Tower/archive/2005/04/09/3026.html#Feedback 1 http://www.tkk7.com/Tower/comments/commentRss/3026.html http://www.tkk7.com/Tower/services/trackbacks/3026.html 今天在帮朋友写一个简单的产品发布|站Q由于用的I间是静态的Q没有办法只能在javascript上下功夫了。首先想到的便是RIA,上网google了一下,发现q样的东西还真不,可谓是十八般武艺各显灵通。看了看文明的bindowsQ感觉真的非常的好。可是选择它对于我要做的东西,可以说是q于复杂了。(http://www.bindows.net 有兴的朋友可以ȝ看)?BR>搜烦了半天最后还是决定,采用javascriptd服务器端xml文g的办法来实现。尝试了一下感觉还不错Q确定就是对使用的浏览器有依赖?BR>先写了一个商品的xml文gQ?BR>
<? xml version="1.0" ?> < root > < product id ="0001" name ="product1" price ="10.00" > < description > Detail Description </ description > </ product > < product id ="0002" name ="product2" price ="20.00" > < description > Detail Description </ description > </ product > </ root >
使用javascript来读入xml实在是相当的单,只需要两句话可以搞定:
// 装蝲xml文g的函?/SPAN>function loadXML(fileName) { // 定义一个xml dom对象 var xmlDoc = new ActiveXObject( " Microsoft.XMLDOM " ); xmlDoc.load(fileName); xmlObj = xmlDoc.documentElement; }
指定要蝲入的xml文g名就可以完成对xml的读入?BR>
// 载入xml文g loadXML( " product.xml " );
得到xml对象后就可以适用对象提供的相应方法和属性来获取xml中定义的数据信息?BR>xmlObj.hasChildNodes来判断是否含有子; xmlObj.childNodes.lenght 得到包含的子的数量 子项可以用数字来作ؓ索引Q以product.xmlZ。如果我们要获取W二条商品时Q可以用xmlObj.childNodes(1)来获得,xmlObj.childNodes(1).childNodes(0)得到的是description xmlObj.childNodes(1).childNodes(0).text 得到description的?BR>xmlObj.childNodes(1).getAttribute("name") 得到W二条商品的名字
]]>用了一下flash的反~译 http://www.tkk7.com/Tower/archive/2005/04/04/2811.html非飞 非飞 Sun, 03 Apr 2005 19:32:00 GMT http://www.tkk7.com/Tower/archive/2005/04/04/2811.html http://www.tkk7.com/Tower/comments/2811.html http://www.tkk7.com/Tower/archive/2005/04/04/2811.html#Feedback 1 http://www.tkk7.com/Tower/comments/commentRss/2811.html http://www.tkk7.com/Tower/services/trackbacks/2811.html 下蝲了一个Action Script Viewer 4.0对原来的swf文gq行反编译,虽然有的movie clip会出C炚w题,但是ȝ来说效果q是不错的,而且操作相当的简单?BR> 1Q用ASV打开要进行反~译的SWF文gQ?BR>2QFile-->export rebuild data。这时将swf文g分拆成单个的swf文gQ?BR>3Q打开flashQ创Z个空的fla文gQ?BR>4QFile-->Import...-->Import to Library 前面导出的swf文g导入Q如果swf文g太多flash会报错,可以通过分批导入文g来绕q这个错误; 5Q将新徏的swf文g保存为rebuild.flaQƈ?Q导出的文g在同一目录Q?BR>6Q运?Q生的一个rebuild.jsfl文gQ一切搞定?BR> ]]>E序员应该怎么q生z?Q? http://www.tkk7.com/Tower/archive/2005/03/23/2372.html非飞 非飞 Wed, 23 Mar 2005 07:25:00 GMT http://www.tkk7.com/Tower/archive/2005/03/23/2372.html http://www.tkk7.com/Tower/comments/2372.html http://www.tkk7.com/Tower/archive/2005/03/23/2372.html#Feedback 3 http://www.tkk7.com/Tower/comments/commentRss/2372.html http://www.tkk7.com/Tower/services/trackbacks/2372.html 中午收到老姐来的电话Q电话里Ҏ一遍一遍又一遍的在我而唠叨Q说Q“不你怎么忙,有多东西要写,一定要按时睡觉”。还列出了一堆要按时睡觉的理由。其实谁不知道应该要按时睡觉Q可是作为写E序的程序员来说Q要真想做到q一点实在是难,难,隑֑Q?BR> 要按时睡觉的理由 Q?从h的排毒期入手Q晚?1Q?0Q-1Q?0Q肝的排毒期Q必d睡觉中进行) 从h的睡眠最xD入手:1Q?0Q-4Q?0Qh的睡眠是质量最高的 不知道各位有谁是有正常的生活习惯的,能不能说一说你是怎么做到的。。?BR> ]]>Linux下JNI调用 http://www.tkk7.com/Tower/archive/2005/03/22/2338.html非飞 非飞 Tue, 22 Mar 2005 10:39:00 GMT http://www.tkk7.com/Tower/archive/2005/03/22/2338.html http://www.tkk7.com/Tower/comments/2338.html http://www.tkk7.com/Tower/archive/2005/03/22/2338.html#Feedback 0 http://www.tkk7.com/Tower/comments/commentRss/2338.html http://www.tkk7.com/Tower/services/trackbacks/2338.html 做项目,无论是遗留品的再生产,q是寚w留品的再利用,都不可避免的会出C大堆的异构现象。解军_构通信问题是这c项目的主要问题。以前看见这U情늬一个解x案就是Socket通信。说实在的自己实现Socket通信Q定刉信协议Q或者是实现已有的通信协议都是很头痛的事情。本人有不堪回首的历史经历?BR> 最q同样在目中需要去解决一个异构问题,׃旉的紧q,以及先天的运行环境(两个部分是运行在同一台机器上的)。考虑C使用JNIQ结果表明JNI是完全可以胜ȝ前的角色的。以前没有了解过JNIQL以ؓ它这不好那不好,用了用,表现q不错,而且实现h非常之简单?BR> 整个实现q程可以分ؓ五步来完成: 1Q写一个声明了native的Java文gQ?/FONT>
package example; public class TestJNI { static { System.loadLibrary( " test " ); } public native String getNameCPP(); } 2) 使用javah产生对应的CPP头文Ӟ 命oQjavah -classpath <path> -jni example.TestJNI -d <out_dir> 生成的头文gexample_TestJNI.h如下Q?BR>
/**/ /* DO NOT EDIT THIS FILE - it is machine generated */ #include < jni.h > /**/ /* Header for class example_TestJNI */ #ifndef _Included_example_TestJNI#define _Included_example_TestJNI #ifdef __cplusplusextern " C " { #endif /**/ /* * Class: example_TestJNI * Method: getNameForCPP * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_example_TestJNI_getNameForCPP (JNIEnv * , jobject); #ifdef __cplusplus } #endif #endif 3Q实现对应的CPP代码Q?BR>
#include " example_TestJNI.h " #include < string > JNIEXPORT jstring JNICALL Java_example_TestJNI_getNameForCPP (JNIEnv * env, jobject) { // TODO 可以在此调用其他的代?/SPAN> std:: string strName = " Tower " ; return env -> NewStringUTF(strName.c_str()); } 4) ~译CPP代码 命oQg++ -o libtest.so -shared -I<include_path> -I<java_home>/include -I<java_home>/include/linux example_TestJNI.cpp 5Q执?BR>
package example; public class Test { public static void main(String[] args) { TestJNI test = new TestJNI(); System. out .println( " Hello " + test.getNameForCPP()); } } export LD_EXPORT_PATH=<so_path> java -cp <path> -Djava.library.path=<so_path> example.Test 输出QHello Tower ]]> 设计模式_解 [MW记] http://www.tkk7.com/Tower/archive/2005/03/13/2047.html非飞 非飞 Sun, 13 Mar 2005 15:41:00 GMT http://www.tkk7.com/Tower/archive/2005/03/13/2047.html http://www.tkk7.com/Tower/comments/2047.html http://www.tkk7.com/Tower/archive/2005/03/13/2047.html#Feedback 0 http://www.tkk7.com/Tower/comments/commentRss/2047.html http://www.tkk7.com/Tower/services/trackbacks/2047.html 做了q么久的软gQ从来就没有好好的学习过设计模式。写代码Q做设计的时候都是稀里糊涂。做出来的设计,都会不同E度的让自己感觉C安。这可能是《设计模式精解》书中所说那U直觉吧?BR> 引用Q?BR> 留意你的知觉 本能的直觉能对设计质量做Zo人惊讶的预测。所谓“出自本能的直觉”,是指当你看到某些不喜Ƣ的东西Ӟ你胃部的感觉。我知道q听hq不U学Q而且它的不U学Q,但我的经验L向我证明Q当我从直觉上不喜欢一个设计时Q一个更好的设计一定就w在角落里?BR> Facade模式Q关键特?BR> 意图Q希望简化现有系l的使用Ҏ。你需要定义自q接口?BR>问题Q只需要用一个复杂系l的一个子集。或者,需要用一U特D的方式与系l交互?BR>解决ҎQFacade向客户展C用现有系l的一个新的接口?BR>参与者与协作者:向客户展C个定制的接口Q让客户更容易地使用现有pȝ?BR>效果QFacade模式化了Ҏ需子系l的使用。但是,׃Facadeq不完整Q因此某些功能对于客户可能是可用的?BR>现实Q?Q定义一个(或一l)新的cL提供所需要的接口?BR> 2Q让新的cM用现有的pȝ?BR> Facade模式使用于以下情况:
不需要用一个复杂系l的所有功能,q且可以创徏一个新的类来包容访问原有系l的接口的一个子集(通常它就是)比原始系lAP单得多?/FONT>
希望包装或隐藏原有系l?/FONT>
希望使用原有pȝ的功能,q且希望增加一些新的功能?/FONT>
“编写一个新的类”的代h于“让所有h学会使用原有pȝ”或“在未来l护整个pȝ”所需的代?BR>
]]>l织团队开发项目的方式 http://www.tkk7.com/Tower/archive/2005/03/03/1667.html非飞 非飞 Thu, 03 Mar 2005 13:06:00 GMT http://www.tkk7.com/Tower/archive/2005/03/03/1667.html http://www.tkk7.com/Tower/comments/1667.html http://www.tkk7.com/Tower/archive/2005/03/03/1667.html#Feedback 0 http://www.tkk7.com/Tower/comments/commentRss/1667.html http://www.tkk7.com/Tower/services/trackbacks/1667.html 一个项目通常分ؓ表示层、业务逻辑层和持久层,q是最为常见的三层l构。在l织团队q行目开发的时候,选择如何分工对版本控制有很大的媄响。团队在做开发的时候一般有两种模式Q按层开发和按功能开发?BR>按层开发(本h赞同的模式) 在这U开发模式下Q每个开发h员的目录l构相对固定和独立。对于CVSq类按文件夹来控制权限的版本控制服务器来_比较Ҏ实现对开发h员权限的划分Q不易出现文件不同步而导致的版本混ؕ?BR> 另外Q这U开发模式下Q更能集中开发h员的注意力,不需要了解太多与本层无关的其他技术。将_全部集中在如何实现本层的功能上,更有利于写出功能强大Q运行稳定的代码。例如:开发业务逻辑层的开发h员,他不可避免的会写很多逻辑上基本上一致的代码Q在写代码的q程中,p从中扑և一些相对的共性,公q代码q行抽象Q从而避免了出现大量的重复代码。由于工作范围相对较,能有更多的时间去学习相关斚w的最新技术和解决ҎQƈ应用到程序中Q能使程序在实现方式上较为先q、优?BR> 老天是公q的Q万物有其好的一面也必然有其不好的一面,q种开发模式也不能例外。对于需求不明确Q无法定义相对固定的对外接口Ӟq中按层开发的模式有其无法避免的一个问题。各层开发h员需要在开发的q程中,反覆的修Ҏ口,以便适应于变化了的需求。这必然导致逻辑处理部分代码要做相应的修攏V?BR>按功能开发(本h持保留态度Q?/B> q种开发模式下Q开发h员的目录l构基本是项目的完整目录接口Q他们需要到各层ȝ写对应他们所开发的模块的所有代码。对于CVSq类版本控制服务器来_基本上是无法做到对开发h员权限的界定。很Ҏ造成版本控制混ؕQ导致文件版本不同步Q是在开发过E中使用了公共文件的开发h员不能保证同步。例如:一个文件ؓ多个开发h员所共同l护Q开发h员各自都需要在其中d自己功能所需要部分的代码。这样很Ҏ出现多个人同时修改一个文件的情况Q导致文件不同步而造成的版本乱?BR> 另外Q这U开发模式对开发h员的技术要求相对较高,它要求开发h员掌握各层中所需要的技术。从界面昄到数据持久化Q甚臛_|络通信都需要一个开发h员去实现。在功能实现架构不是很确定的情况下,E序代码中将会出现大量的重复代码Q因为每个h都有自己的实现机Ӟ而逻辑处理相同或相q的情况在同一层中出现频率又比较高。导致程序的整体l构不统一Q尽层ơ结构相同。得程序日后维护极度困难,大大的提高了l护成本。由于开发h员牵涉用的技术过多,也很难保证程序实现方式的先进性和优越性?BR> ]]>Hibernate中的l承映射 http://www.tkk7.com/Tower/archive/2005/03/02/1617.html非飞 非飞 Wed, 02 Mar 2005 14:31:00 GMT http://www.tkk7.com/Tower/archive/2005/03/02/1617.html http://www.tkk7.com/Tower/comments/1617.html http://www.tkk7.com/Tower/archive/2005/03/02/1617.html#Feedback 1 http://www.tkk7.com/Tower/comments/commentRss/1617.html http://www.tkk7.com/Tower/services/trackbacks/1617.html
Hibernate的承映包含了三种不同的策略:
每簇cM用一个表Q?
每个子类一个表Q?
每个具体内一个表Q有限制Q?BR> 假设我们有四个类AnimalQDogQCatQ其代码如下Q?BR>文g名:Animal.java
class Animal { private String identifier; private String name; private String category; // setter and getter } 文g名:Dog.java
class Dog extends Animal { private String // setter and getter } 文g名:Cat.java
class Cat extends Animal { private String // setter and getter }
使用每簇cM用一个表的策略时Q有一个限制就时子cM能有NOT NULLQ映文件ؓQ?BR> 文g名:Animal.hbm.xml
< class name ="Animal" table ="TB_ANIMAL" > < id name ="identifier" type ="string" column ="IDENTIFIER" > < generator class ="uuid.hex" /> </ id > < discriminator column ="ANIMAL_TYPE" type ="string" /> < property name ="name" column ="NAME" type ="string" /> < subclass name ="Dog" discriminator-value ="DOG" > </ subclass > < subclass name ="Cat" discriminator-value ="CAT" > </ subclass > </ class >
使用每个子类一个表的策略时Q可以用一个映文件实玎ͼ也可以分成多个映文件来实现。每个子cM个映文件的情况Q?BR> 文g名:Animal.hbm.xml
< class name ="Animal" table ="ANIMAL" > < id name ="identifier" column ="IDENTIFIER" type ="string" > < generator class ="uuid.hex" /> </ id > < property > </ class > 文g名:Dog.hbm.xml < joined-subclass name ="Dog" table ="DOG" extends ="Animal" > < key column ="DOG_ID" /> </ joined-subclass > 文g名:Cat.hbm.xml < joined-subclass name ="Cat" table ="CAT" extends ="Cat" > < key column ="CAT_ID" /> </ joined-subclass > 每个子类一个表的策略实际上一Uone-to-one的映?BR>
使用每个具体内一个表Q有限制Q策略时Q每一个子cȝ映射文g要包含所有父cM的属性,映射文gQ?BR> 文g名:Dog.hbm.xml
< class name ="Dog" table ="DOG" > < id name ="identifier" column ="IDENTIFIER" type ="string" > < generator class ="uuid.hex" /> </ id > < property name ="name" column ="NAME" type ="string" /> </ class > 文g名:Cat.hbm.xml < class name ="Cat" table ="CAT" > < id name ="identifier" column ="IDENTIFIER" type ="string" > < generator class ="uuid.hex" /> </ id > < property name ="name" column ="NAME" type ="string" /> </ class > ]]>各层׃n使用PO的代?/title> http://www.tkk7.com/Tower/archive/2005/03/01/1584.html非飞 非飞 Tue, 01 Mar 2005 04:40:00 GMT http://www.tkk7.com/Tower/archive/2005/03/01/1584.html http://www.tkk7.com/Tower/comments/1584.html http://www.tkk7.com/Tower/archive/2005/03/01/1584.html#Feedback 2 http://www.tkk7.com/Tower/comments/commentRss/1584.html http://www.tkk7.com/Tower/services/trackbacks/1584.html 在J2EE应用开发中Q是不应该出现这中PO׃n使用的方式的。实体对象不应该被跨层用,各层l护自己的实体对象。这点看书我惛_安知道Q而在实际应用中很多h都选择不遵循这一规则。(在用hibernate时有所不同Q引用:?FONT class=htd>不过׃Hibernate的强大功能,例如动态生成POQPO的状态管理可以脱SessionQ得在应用了Hibernate的J2EE框架中,PO完全可以充当VOQ因此我们下面把PO和VO合ƈQ统UCؓPO。?/FONT>引文Q?FONT class=red_3>l合struts和hibernate谈J2EE架构的数据表C?/A>。)出现qȝ象,我想原因只有一个就是贪图了一时的省事Q在一ơ性应用开发中Q相对的业务对象改动可能性相当的,很多时候在做项目的时候ƈ不会出现预料不到的改变,没有必要ȝ理一大堆各式各样的实体对象,q样p然的D了PO在各层中׃n使用。可是就我目前接触到的项目基本上没有需求是如此明确的,通常需求都是在不断的改变,甚至有时C最后发版的时候,一些客户都会提Z攚w求的要求。另外就是自做需求的情况更是如此了Q这U项目的需求是不断的在变化的。ؓ了保证项目的适应性和可扩展性,必M证各层之间的相对独立Q尽可能降低耦合度?BR> ]]> 通过mx4j实现JMXConnectorServer和JMXConnector http://www.tkk7.com/Tower/archive/2005/02/05/1037.html非飞 非飞 Sat, 05 Feb 2005 11:07:00 GMT http://www.tkk7.com/Tower/archive/2005/02/05/1037.html http://www.tkk7.com/Tower/comments/1037.html http://www.tkk7.com/Tower/archive/2005/02/05/1037.html#Feedback 0 http://www.tkk7.com/Tower/comments/commentRss/1037.html http://www.tkk7.com/Tower/services/trackbacks/1037.html 对于如何产生和注册MBeansQmx4j提供了一个相当方便的工具Qؓ什么说相当方便Q是因ؓ它真的实在是太方便了。通过写一个xml配置文g可以完成所有的工作。比起M-LET实是强了不。下面就是一个在MBean Server产生注册一个NamingService、JMXConnectorServer和一个自写的MBean的配|文件?BR>
<? xml version="1.0" encoding="UTF-8" ?> < configuration port ="9999" > < startup > < create classname ="mx4j.tools.naming.NamingService" objectname ="naming:type=rmiregistry" > < arg type ="int" > 1099 </ arg > </ create > < call operation ="start" objectname ="naming:type=rmiregistry" /> < object objectid ="rmi" > < call classname ="javax.management.remote.JMXConnectorServerFactory" method ="newJMXConnectorServer" > < arg type ="javax.management.remote.JMXServiceURL" > < new classname ="javax.management.remote.JMXServiceURL" > < arg type ="string" > service:jmx:rmi://localhost/jndi/rmi://localhost:1099/jmx </ arg > </ new > </ arg > < arg type ="java.util.Map" /> < arg type ="javax.management.MBeanServer" /> </ call > </ object > < register objectname ="connectors:type=rmi,protocol=jrmp" > < arg type ="object" refobjectid ="rmi" /> </ register > < call method ="start" refobjectid ="rmi" /> < create classname ="nsmp.examples.mbeans.rmi.MyRemoteServiceObject" objectname ="services:type=my-remote" /> </ startup > < shutdown > < call operation ="stop" objectname ="services:type=my-remote" /> < call method ="stop" refobjectid ="rmi" /> < call operation ="stop" objectname ="naming:type=rmiregistry" /> < unregister objectname ="services:type=my-remote" /> < unregister objectname ="connectors:type=rmi,protocol=jrmp" /> < unregister objectname ="naming:type=rmiregistry" /> </ shutdown > </ configuration > java代码Q?BR>
package nsmp.agent; import java.io.BufferedReader; import java.io.FileReader; import java.io.Reader; import java.net.Socket; import javax.management.MBeanServer; import javax.management.MBeanServerFactory; import javax.management.ObjectName; import mx4j.tools.config.ConfigurationLoader; import nsmp.util.NsmpGlobals; /**/ /* * * @version 1.0 * @author tower * * TODO write the comment of this type */ public class NsmpServer { public void startup() throws Exception { MBeanServer server = MBeanServerFactory.newMBeanServer(); ConfigurationLoader loader = new ConfigurationLoader(); server.registerMBean(loader, ObjectName.getInstance( " config:service=loader " )); Reader reader = new BufferedReader( new FileReader(NsmpGlobals.NSMP_HOME + " /conf/config.xml " )); loader.startup(reader); reader.close(); System. out .println( " Start the nsmp server successfully! " ); } public void shutdown() throws Exception { String shutdownCommand = " shutdown " ; Socket socket = new Socket( " 127.0.0.1 " , 9999 ); socket.getOutputStream().write(shutdownCommand.getBytes()); socket.close(); } } startupҎ调用配置文g的startup部分完成创徏和注册,shutdownҎ调用配置文g的shutdown部分释放相应的资源。通过调用 startupҎ可以v动MBeanServer提供服务了。对于shutdown开始搞了我半天startup?ConfigurationLoader都没有创Z个侦听端口来接收shutdown命oQ看了看mx4j的源码发?ConfigurationLoader也没有发C么特D地斏V捉摸半天终于发C自己放了一个愚W的错误Qeclipse是用普通用h限开的,没有办法创徏侦听Q改成root后一切ok?BR> 接下随便写了一个JMXConnectorQ代码:
/**/ /* * Copyright (C) The MX4J Contributors. * All rights reserved. * * This software is distributed under the terms of the MX4J License version 1.0. * See the terms of the MX4J License in the documentation provided with this software. */ package nsmp.examples.mbeans.rmi; import java.util.Map; import javax.management.MBeanInfo; import javax.management.MBeanOperationInfo; import javax.management.MBeanServerConnection; import javax.management.ObjectName; import javax.management.remote.JMXConnector; import javax.management.remote.JMXConnectorFactory; import javax.management.remote.JMXServiceURL;/**/ /* * * @version $Revision: 1.3 $ */ public class Client { public static void main(String[] args) throws Exception { JMXServiceURL address = new JMXServiceURL( " service:jmx:rmi://localhost/jndi/rmi://localhost:1099/jmx " ); Map creationEnv = null ; JMXConnector connector = JMXConnectorFactory.newJMXConnector(address, creationEnv); Map connectionEnv = null ; connector.connect(connectionEnv); MBeanServerConnection serverConnection = connector.getMBeanServerConnection(); ObjectName name = ObjectName.getInstance( " services:type=my-remote " ); MBeanInfo mbInfo = serverConnection.getMBeanInfo(name); MBeanOperationInfo[] operationInfo = mbInfo.getOperations(); for ( int i = 0 ; i < operationInfo.length; i ++ ) { System. out .println(operationInfo[i].getName()); } serverConnection.invoke(name, " sayHello " , new Object[] { " Tower He " } , new String[] { " java.lang.String " } ); } } JMXConnector是通过获取一个MBeanServerConnection来实现远E调用的Q运行了一下一切顺利通过?BR> 下蝲Q?A href="http://www.tkk7.com/Files/Tower/MX4JExample.rar">MX4JExample.rar ]]>看《难兄难弟》有感要说呀Q?/title> http://www.tkk7.com/Tower/archive/2005/02/03/928.html非飞 非飞 Wed, 02 Feb 2005 19:02:00 GMT http://www.tkk7.com/Tower/archive/2005/02/03/928.html http://www.tkk7.com/Tower/comments/928.html http://www.tkk7.com/Tower/archive/2005/02/03/928.html#Feedback 0 http://www.tkk7.com/Tower/comments/commentRss/928.html http://www.tkk7.com/Tower/services/trackbacks/928.html 命运之可?/P>
深夜Q没有睡。不是在写程序,而是在看《难兄难弟》。两大男主角都是我所喜欢的,|嘉良扮演李奇,吴镇宇饰演谢源。电视的情节跌宕起伏Q命q被剧中的演员诠释的入木三分。正所谓存在必不容易,电视剧的剧本不是~剧凭空惌而写成的Q特别是好的剧本定是~剧不知道咬了多笔头而写p成的。(写好的程序不也是q样吗?Q在《难兄难弟》一剧中谢源是一个在事业上一路顺风,扶摇直上的大明星Q而李奇的星\则是坎坷岖崎的,做的角色大多是跑龙套一cȝQ更是经常做其他明星的媄子(替nQ。一w才华得不到人得赏识Q有力无处。命q简直是讲所有的一切大风大都强加与他的n上。以前看电视QL觉得有不有这么y呀Q什么坏是都被他遇上了。而今Q长大了Q对周围的h、事也见多了。最后不得不感叹Q原来命q真的是如此的不公^。知道不公^又能怎么样呢QhQ作ZU自认ؓ是高U的物种存在于这颗被UCؓ地球的星球上Q其实他本n是多么的渺小。对于自己面临的问题Q很多时候h都是两手一摆,无能为力?BR> 前段旉跟一位故友讨Z一下所谓的人生价倹{在闲聊之间Q发Ch生h值太难以L握。h的一生拿来于宇宙来比较,太ؓ短暂微不道了。而一个h要在如此短暂的生命区间里扑֯到自q价|谈何Ҏ。马克思说一个h存在的h值是通过他的C会价值来表现的。只有当他实C自己的社会h|得到了社会的肯定和承认,q样才能得到C会的回报,得到自己的个Zh倹{从字面上来看,马克思说的这一Ҏ勿庸|疑的。但是当用马克思的另一个原理矛监֭在的普遍性在来分析一下h生。h的一w是短暂的,而矛盾无处不在。从宏观的角度看QhD可能如马克思所_但是从微观上来说Qh的一生是充满了不q等待遇的。就是所谓的好h未必又好报。剧本中的李奇这角色充分的体Cq一炏V当命运不断的摧D下Q有几个真正的挨得住Q撑得下厅R(可能有h说我太消极了Q应该用U极的态度ȝ待,应该认ؓ是在接受命运的考验。)可能是我真的太悲观了Q但是我知道如果换成我是李奇我肯定顶不住。我觉得已经q远过了我的承受能力。命q可能认为只是跟他开一个小的玩笑Q可是不要忘Ch是ؓ的Q开不vq样的玩W?/P>
]]> 一天的工作l于l束了。。?/title> http://www.tkk7.com/Tower/archive/2005/01/26/738.html非飞 非飞 Wed, 26 Jan 2005 11:34:00 GMT http://www.tkk7.com/Tower/archive/2005/01/26/738.html http://www.tkk7.com/Tower/comments/738.html http://www.tkk7.com/Tower/archive/2005/01/26/738.html#Feedback 0 http://www.tkk7.com/Tower/comments/commentRss/738.html http://www.tkk7.com/Tower/services/trackbacks/738.html
目前提出的需求有Q?br>
|络上各节点L是否存在病毒Q?/li>
|络上各节点L存在的漏z评伎ͼ
L上是否存在非法用户和非法应用Q?/li>
对网l上敏感信息的搜索;
|络拓扑是否安全合理?/li>
以上无条需求出??以外其他的都是一个“伟大的工程”,需要慢慢研I。无奈呀 ]]> 回实验室上班 http://www.tkk7.com/Tower/archive/2005/01/26/717.html非飞 非飞 Wed, 26 Jan 2005 02:00:00 GMT http://www.tkk7.com/Tower/archive/2005/01/26/717.html http://www.tkk7.com/Tower/comments/717.html http://www.tkk7.com/Tower/archive/2005/01/26/717.html#Feedback 1 http://www.tkk7.com/Tower/comments/commentRss/717.html http://www.tkk7.com/Tower/services/trackbacks/717.html ]]>
վ֩ģ壺
av˾þۺɫ
|
ؼëƬߴȫѲ |
ƷƵѿ |
һƵ߹ۿ |
Ƶѹۿ |
˳վ߲ |
պƵ |
þ99Ƶ |
sssձ߹ۿ |
Aɻ߹ۿ |
AVպAV߳ר |
ĻŮһ
|
ֻĻ |
AV鶹 |
ƷһĻ |
ѹۿƵ |
99þþƷձһ |
ܻƺ۵վ |
ɫƵѹۿ |
VA߹ۿ |
aav |
aƬ߹ۿƷ |
ƷƵۿ |
þùۿ |
Ů߾Ʒѹۿ |
鶹ѹһ |
9420ѸƵ |
91ƬýѰӣ |
ѹ˦Ƭ |
þùһ |
վ18ѹۿ |
AVĻ |
ƷƬҹɫ |
vaһ |
91Ʒ鶹ϵ |
Ӱ |
a߹ۿ |
˳ѵӰ |
ŷպ
|
߹ۿվ |
˳Ƶ |