??xml version="1.0" encoding="utf-8" standalone="yes"?>97亚洲熟妇自偷自拍另类图片
,久久久亚洲精品国产,亚洲午夜久久久久妓女影院 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包含所有被(g)到有关注的操作已经qA的keyQ通过selector.selectedKeys得到?
cancelled-key setQ包含所有已l被cancelQ但是还没有channelq没有deregister的keyQ这个集合是不能直接被访问的?br>
key通过调用channel的registerҎ(gu)被加入到key set中。被取消的key在select的时候会(x)被从相应的key set中移除?br>
key set自n是不可以直接q行修改的?
无论是通过调用channel的closeҎ(gu)q是调用key的cancelҎ(gu)Qkey都会(x)被放|到canceled-key set中。取消的key?x)将其channel在下一ơselect时将注册撤销Q同时将key从所有的key set中移除?
key在执行select操作时被加入到selected-key set中。在selected-key
set中的key可以通过调用iterator的removeҎ(gu)Q将其从selected-key
set中移除,不能通过其他的办法将其从selected-key set中移除?br>
通过selector?个方法selectQ阻塞选择Q直到有兛_(j)的事件发生时退出阻塞)(j)QselectNowQ不d选择Q,select(long)Q指定超旉择Q超时到达或者有兛_(j)事g发生旉出阻塞)(j)Q来获取兛_(j)事g的发生。其执行步骤分ؓ(f)以下3步:(x)
1、将存在于canceled-key set中的key从所有的key set中移除,撤销注册的channelQ清Icanceled-key set?
2、地层操作系l检查是否有兛_(j)的事件发生,当有兛_(j)的事件发生时Q首先检查channel的key是否已经存在于selected-key
set中,如果不存在,则将其加入到selected-key set中去Q同时修改key的ready-operation
set来表明当前ready的操作,而以前存在于ready-operation
set中的信息?x)被删除。如果对应的key已经存在于selected-key set中,q直接修改其ready-operation
set来表明当前ready的操作,删除原来ready-operation set中的信息?
3、如果在W二步中有加入到canceled-key set中的keyQ在q一步会(x)执行W一步的操作?
selector自n是线E安全的Q而他的key
set却不是。在一ơ选择发生的过E中Q对于key的关?j)事件的修改要等C一ơselect的时候才?x)生效?
另外Qkey和其代表的channel有可能在M时候被cancel和close。因此存在于key
set中的keyq不代表其key是有效的Q也不代表其channel是open的。如果key有可能被其他的线E取消或关闭channelQ程序必d
?j)的同步(g)查这些条件?
d?jin)的select可以通过调用selector的wakeupҎ(gu)来唤醒?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。其目的是Z(jin)location转换成String。写的过E中L觉得太复杂了(jin)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间是静(rn)态的Q没有办法只能在javascript上下功夫?jin)。首先想到的便是RIA,上网google?jin)一下,发现q样的东西还真不,可谓是十八般武艺各显灵通。看?jin)看文明的bindowsQ感觉真的非常的好。可是选择它对于我要做的东西,可以说是q于复杂?jin)。(http://www.bindows.net 有兴的朋友可以ȝ看)(j)?BR>搜烦(ch)?jin)半天最后还是决定,采用javascriptd服务器端xml文g的办法来实现。尝试了(jin)一下感觉还?sh)错Q确定就是对使用的浏览器有依赖?BR>先写?jin)一个商品的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实在是相当的单,只需要两句话可以搞定:(x)
// 装蝲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 得到包含的子的数量 子项可以用数字来作ؓ(f)索引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二条商品的名字
]]>用了(jin)一下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 下蝲?jin)一个Action Script Viewer 4.0对原来的swf文gq行反编译,虽然有的movie clip?x)出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?x)报错,可以通过分批导入文g来绕q这个错误; 5Q将新徏的swf文g保存?sh)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 中午收到老姐来的?sh)话Q电(sh)话里Ҏ(gu)一遍一遍又一遍的在我而唠叨Q说Q“不你怎么忙,有多东西要写,一定要按时睡觉”。还列出?jin)一堆要按时睡觉的理由。其实谁不知道应该要按时睡觉Q可是作为写E序的程序员来说Q要真想做到q一点实在是难,难,隑֑Q?BR> 要按时睡觉的理由 Q?从h的排毒期入手Q晚?1Q?0Q-1Q?0Q肝的排毒期Q必d睡觉中进行)(j) 从h的睡眠最x(chng)D入手:(x)1Q?0Q-4Q?0Qh的睡眠是质量最高的 不知道各位有谁是有正常的生活?fn)惯的,能不能说一说你是怎么做到的。。?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留品的再利用,都不可避免的?x)出C大堆的异构现象。解军_构通信问题是这c项目的主要问题。以前看见这U情늬一个解x(chng)案就是Socket通信。说实在的自己实现Socket通信Q定刉信协议Q或者是实现已有的通信协议都是很头痛的事情。本人有不堪回首的历史经历?BR> 最q同样在目中需要去解决一个异构问题,׃旉的紧q,以及(qing)先天的运行环境(两个部分是运行在同一台机器上的)(j)。考虑C(jin)使用JNIQ结果表明JNI是完全可以胜ȝ前的角色的。以前没有了(jin)解过JNIQL以ؓ(f)它这不好那不好,用了(jin)用,表现q(sh)错,而且实现h非常之简单?BR> 整个实现q程可以分ؓ(f)五步来完成:(x) 1Q写一个声明了(jin)native的Java文gQ?/FONT>
package example; public class TestJNI { static { System.loadLibrary( " test " ); } public native String getNameCPP(); } 2) 使用javah产生对应的CPP头文Ӟ(x) 命o(h)Qjavah -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代码 命o(h)Qg++ -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 做了(jin)q么久的软gQ从来就没有好好的学?fn)过设计模式。写代码Q做设计的时候都是稀里糊涂。做出来的设计,都会(x)不同E度的让自己感觉C安。这可能是《设计模式精解》书中所说那U直觉吧?BR> 引用Q?BR> 留意你的知觉 ?gu)本能的直觉能对设计质量做Zo(h)人惊讶的预测。所谓“出自本能的直觉”,是指当你看到某些不喜Ƣ的东西Ӟ你胃部的感觉。我知道q听hq不U学Q而且它的不U学Q,但我的经验L向我证明Q当我从直觉上不喜欢一个设计时Q一个更好的设计一定就w在角落里?BR> Facade模式Q关键特?BR> 意图Q希望简化现有系l的使用Ҏ(gu)。你需要定义自q接口?BR>问题Q只需要用一个复杂系l的一个子集。或者,需要用一U特D的方式与系l交互?BR>解决Ҏ(gu)QFacade向客户展C用现有系l的一个新的接口?BR>参与者与协作者:(x)向客户展C个定制的接口Q让客户更容易地使用现有pȝ?BR>效果QFacade模式化了(jin)Ҏ(gu)需子系l的使用。但是,׃Facadeq不完整Q因此某些功能对于客户可能是可用的?BR>现实Q?Q定义一个(或一l)(j)新的cL提供所需要的接口?BR> 2Q让新的cM用现有的pȝ?BR> Facade模式使用于以下情况:(x)
不需要用一个复杂系l的所有功能,q且可以创徏一个新的类来包容访问原有系l的接口的一个子集(通常它就是)(j)比原始系lAP单得多?/FONT>
希望包装或隐藏原有系l?/FONT>
希望使用原有pȝ的功能,q且希望增加一些新的功能?/FONT>
“编写一个新的类”的代h(hun)于“让所有h学会(x)使用原有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 一个项目通常分ؓ(f)表示层、业务逻辑层和持久层,q是最为常见的三层l构。在l织团队q行目开发的时候,选择如何分工对版本控制有很大的媄(jing)响。团队在做开发的时候一般有两种模式Q按层开发和按功能开发?BR>按层开发(本h赞同的模式)(j) 在这U开发模式下Q每个开发h员的目录l构相对固定和独立。对于CVSq类按文件夹来控制权限的版本控制服务器来_(d)比较Ҏ(gu)实现对开发h员权限的划分Q不易出现文件不同步而导致的版本混ؕ?BR> 另外Q这U开发模式下Q更能集中开发h员的注意力,不需要了(jin)解太多与本层无关的其他技术。将_全部集中在如何实现本层的功能上,更有利于写出功能强大Q运行稳定的代码。例如:(x)开发业务逻辑层的开发h员,他不可避免的?x)写很多逻辑上基本上一致的代码Q在写代码的q程中,p从中扑և一些相对的共性,公q代码q行抽象Q从而避免了(jin)出现大量的重复代码。由于工作范围相对较?yu),能有更多的时间去学?fn)相关斚w的最新技术和解决Ҏ(gu)Qƈ应用到程序中Q能使程序在实现方式上较为先q、优?BR> 老天是公q的Q万物有其好的一面也必然有其不好的一面,q种开发模式也不能例外。对于需求不明确Q无法定义相对固定的对外接口Ӟq中按层开发的模式有其无法避免的一个问题。各层开发h员需要在开发的q程中,反覆的修Ҏ(gu)口,以便适应于变化了(jin)的需求。这必然导致逻辑处理部分代码要做相应的修攏V?BR>按功能开发(本h持保留态度Q?/B> q种开发模式下Q开发h员的目录l构基本是项目的完整目录接口Q他们需要到各层ȝ写对应他们所开发的模块的所有代码。对于CVSq类版本控制服务器来_(d)基本上是无法做到对开发h员权限的界定。很Ҏ(gu)造成版本控制混ؕQ导致文件版本不同步Q是在开发过E中使用?jin)公共文件的开发h员(sh)能保证同步。例如:(x)一个文件ؓ(f)多个开发h员所共同l护Q开发h员各自都需要在其中d自己功能所需要部分的代码。这样很Ҏ(gu)出现多个人同时修改一个文件的情况Q导致文件不同步而造成的版本乱?BR> 另外Q这U开发模式对开发h员的技术要求相对较高,它要求开发h员掌握各层中所需要的技术。从界面昄到数据持久化Q甚臛_|络通信都需要一个开发h员去实现。在功能实现架构不是很确定的情况下,E序代码中将?x)出现大量的重复代码Q因为每个h都有自己的实现机Ӟ而逻辑处理相同或相q的情况在同一层中出现频率又比较高。导致程序的整体l构不统一Q尽层ơ结构相同。得程序日后维护极度困难,大大的提高(sh)(jin)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的承映包含了(jin)三种不同的策略:(x)
每簇cM用一个表Q?
每个子类一个表Q?
每个具体内一个表Q有限制Q?BR> 假设我们有四个类AnimalQDogQCatQ其代码如下Q?BR>文g名:(x)Animal.java
class Animal { private String identifier; private String name; private String category; // setter and getter } 文g名:(x)Dog.java
class Dog extends Animal { private String // setter and getter } 文g名:(x)Cat.java
class Cat extends Animal { private String // setter and getter }
使用每簇cM用一个表的策略时Q有一个限制就时子cM能有NOT NULLQ映文件ؓ(f)Q?BR> 文g名:(x)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名:(x)Animal.hbm.xml
< class name ="Animal" table ="ANIMAL" > < id name ="identifier" column ="IDENTIFIER" type ="string" > < generator class ="uuid.hex" /> </ id > < property > </ class > 文g名:(x)Dog.hbm.xml < joined-subclass name ="Dog" table ="DOG" extends ="Animal" > < key column ="DOG_ID" /> </ joined-subclass > 文g名:(x)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名:(x)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名:(x)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引用:(x)?FONT class=htd>不过׃Hibernate的强大功能,例如动态生成POQPO的状态管理可以脱SessionQ得在应用?jin)Hibernate的J2EE框架中,PO完全可以充当VOQ因此我们下面把PO和VO合ƈQ统UCؓ(f)PO。?/FONT>引文Q?FONT class=red_3>l合struts和hibernate谈J2EE架构的数据表C?/A>。)(j)出现qȝ象,我想原因只有一个就是贪图了(jin)一时的省事Q在一ơ性应用开发中Q相对的业务对象改动可能性相当的,很多时候在做项目的时候ƈ不会(x)出现预料不到的改变,没有必要ȝ理一大堆各式各样的实体对象,q样p然的D?jin)PO在各层中׃n使用。可是就我目前接触到的项目基本上没有需求是如此明确的,通常需求都是在不断的改变,甚至有时C(jin)最后发版的时候,一些客户都?x)提Z攚w求的要求。另外就是自做需求的情况更是如此了(jin)Q这U项目的需求是不断的在变化的。ؓ(f)?jin)保证项目的适应性和可扩展性,必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提供?jin)一个相当方便的工具Qؓ(f)什么说相当方便Q是因ؓ(f)它真的实在是太方便了(jin)。通过写一个xml配置文g可以完成所有的工作。比起M-LET实是强?jin)不。下面就是一个在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Ҏ(gu)调用配置文g的startup部分完成创徏和注册,shutdownҎ(gu)调用配置文g的shutdown部分释放相应的资源。通过调用 startupҎ(gu)可以v动MBeanServer提供服务?jin)。对于shutdown开始搞?jin)我半天startup?ConfigurationLoader都没有创Z个侦听端口来接收shutdown命o(h)Q看?jin)看mx4j的源码发?ConfigurationLoader也没有发C么特D地斏V捉摸半天终于发C(jin)自己放了(jin)一个愚W的错误Qeclipse是用普通用h限开的,没有办法创徏侦听Q改成root后一切ok?BR> 接下随便写?jin)一个JMXConnectorQ代码:(x)
/**/ /* * 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运行了(jin)一下一切顺利通过?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没有睡。不是在写程序,而是在看《难兄难弟》。两大男主角都是我所喜欢的,|嘉良扮演李奇,吴镇宇饰演谢源。电(sh)视的情节跌宕起伏Q命q被剧中的演员诠释的入木三分。正所谓存在必不容易,?sh)视剧的剧本不是~剧凭空惌而写成的Q特别是好的剧本定是~剧不知道咬?jin)多笔头而写p成的。(写好的程序不也是q样吗?Q在《难兄难弟》一剧中谢源是一个在事业上一路顺风,扶摇直上的大明星Q而李奇的星\则是坎坷岖崎的,做的角色大多是跑龙套一cȝQ更是经常做其他明星的媄(jing)子(替nQ。一w才华得不到人得赏识Q有力无处。命q简直是讲所有的一切大风大都强加与他的n上。以前看?sh)视QL觉得有不有这么y呀Q什么坏是都被他遇上?jin)。而今Q长大了(jin)Q对周围的h、事也见多了(jin)。最后不得不感叹Q原来命q真的是如此的不公^。知道不公^又能怎么样呢QhQ作ZU自认ؓ(f)是高U的物种存在于这颗被UCؓ(f)地球的星球上Q其实他本n是多么的渺小。对于自己面临的问题Q很多时候h都是两手一摆,无能为力?BR> 前段旉跟一位故友讨Z(jin)一下所谓的人生价倹{在闲聊之间Q发Ch生h(hun)值太难以L握。h的一生拿来于宇宙来比较,太ؓ(f)短暂微不道?jin)。而一个h要在如此短暂的生命区间里扑֯到自q价|谈何Ҏ(gu)。马克思说一个h存在的h(hun)值是通过他的C会(x)价值来表现的。只有当他实C(jin)自己的社?x)h(hun)|得到?jin)社会(x)的肯定和承认,q样才能得到C会(x)的回报,得到自己的个Zh(hun)倹{从字面上来看,马克思说的这一Ҏ(gu)勿庸|疑的。但是当用马克思的另一个原理矛监֭在的普遍性在来分析一下h生。h的一w是短暂的,而矛盾无处不在。从宏观的角度看Qh(hun)D可能如马克思所_(d)但是从微观上来说Qh的一生是充满?jin)不q等待遇的。就是所谓的好h未必又好报。剧本中的李奇这角色充分的体C(jin)q一炏V当命运不断的摧D下Q有几个真正的挨得住Q撑得下厅R(可能有h说我太消极了(jin)Q应该用U极的态度ȝ待,应该认ؓ(f)是在接受命运的考验。)(j)可能是我真的太?zhn)观?jin)Q但是我知道如果换成我是李奇我肯定顶不住。我觉得已经q远过?jin)我的承受能力。命q可能认为只是跟他开一个小的玩笑Q可是不要忘Ch是ؓ(f)的Q开不vq样的玩W?/P>
]]> 一天的工作l于l束?jin)。。?/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 ]]>
վ֩ģ壺
һƵ |
Ƶ |
ƷۺϾþþ |
99Ʒ |
ţƷavƬ |
ŷڸ |
պaëƬa |
ƵƷһ |
Ʒ456߲ |
պëƬѿ |
ձĻѸƵ |
Ƶþ |
AVվ߹ۿ |
㻨ۿ |
þùƷҹ
|
͵Ʒ |
ww4545Ļѵַ |
ѴƬ߹ۿ |
Ƶַ |
AVרAWWW |
պѾƷƵ |
˿ҺƵ |
ŷһ |
avר߹ۿ
|
AVƬ߲Ψ
|
a߹ۿƵ |
Ʒ456߲ |
߹ۿ |
avһ |
ƷѹۿƵ
|
˳Ƶ |
Ʒ˳Ƶapp |
91ѸƵ |
Ůɫվ |
պAV뾫Ʒ |
tvۺɫ |
ۺϵ |
СƵ߹ۿ |
ëƬֻѿ |
123Ʒ |
Ұ߹ۿƵ
|