??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲精品伦理在线,宅男66日本亚洲欧美视频,中文字幕一区二区三区蜜月http://www.aygfsteel.com/ysqwertys/zh-cnFri, 20 Jun 2025 01:31:16 GMTFri, 20 Jun 2025 01:31:16 GMT60dExcel文g里的内容http://www.aygfsteel.com/ysqwertys/archive/2010/03/09/314923.htmllucas_ylucas_yTue, 09 Mar 2010 03:22:00 GMThttp://www.aygfsteel.com/ysqwertys/archive/2010/03/09/314923.htmlhttp://www.aygfsteel.com/ysqwertys/comments/314923.htmlhttp://www.aygfsteel.com/ysqwertys/archive/2010/03/09/314923.html#Feedback0http://www.aygfsteel.com/ysqwertys/comments/commentRss/314923.htmlhttp://www.aygfsteel.com/ysqwertys/services/trackbacks/314923.html     import jxl.Workbook;
代码CZQ?br />     jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File("C:/Documents and Settings/Administrator/桌面/department.xls"));   
    jxl.Sheet rs = rwb.getSheet("部门信息"); //sheet名称Q也可以getSheet(0)Ҏ取得sheet  
    String sheetContext = rs.getCell(1, 0).getContents();
    ServletActionContext.getRequest().setAttribute("sheetName", sheetContext);

具体操作见:
    http://philos.javaeye.com/blog/90802

lucas_y 2010-03-09 11:22 发表评论
]]>
hibernate帔R问题http://www.aygfsteel.com/ysqwertys/archive/2010/03/08/314839.htmllucas_ylucas_yMon, 08 Mar 2010 08:14:00 GMThttp://www.aygfsteel.com/ysqwertys/archive/2010/03/08/314839.htmlhttp://www.aygfsteel.com/ysqwertys/comments/314839.htmlhttp://www.aygfsteel.com/ysqwertys/archive/2010/03/08/314839.html#Feedback0http://www.aygfsteel.com/ysqwertys/comments/commentRss/314839.htmlhttp://www.aygfsteel.com/ysqwertys/services/trackbacks/314839.html 可能现在大家常常q会遇到一个些面试的时候问一些关于hibernate的问题,我个得,q些东西一般做q开发的人在使用上没有Q何的问题的,但是如果是要你来说就不一定能够说好的Q下面是从goole上找的一些常见的面试?
1.Hibernate session接口的get和loadҎ有何异同Q?
{: get不到实体对象时会q回nullQload会抛出异?br />   - get会立卛_载实体对象,load默认是gq加?br />   - get会忽略二U缓?q个没有试验q?Qload则是一U和二~存都?

2.在持久化层,对象分ؓ哪些状态?分别列出?
{?瞬时?Transient)、持久?Persistent)、脱?Detached)?
瞬时?Transient)
是对象是创徏Ӟ瞬时对象在内存孤立存在,它是携带信息的蝲体,不和数据库的数据有Q何关联关p,在Hibernate中,可通过session的save()?saveOrUpdate()Ҏ瞬时对象与数据库相兌Qƈ数据对应的插入数据库中Q此时该瞬时对象转变成持久化对象?
持久?Persistent)
是该对象在数据库中已有对应的记录Qƈ拥有一个持久化标识Q如果是用hibernate的delete()ҎQ对应的持久对象变成瞬时对象,因数据库中的对应数据已被删除Q该对象不再与数据库的记录关联?
    当一个session执行close()或clear()、evict()之后Q持久对象变成脱对象,此时持久对象会变成脱对象,此时该对象虽然具有数据库识别|但它已不在hibernate持久层的理之下?
  持久对象h如下特点Q?
     1. 和session实例兌Q?
     2. 在数据库中有与之兌的记录?
q?Detached)
当与某持久对象关联的session被关闭后Q该持久对象转变对象。当q对象被重新关联到session上时Qƈ再次转变成持久对象?
       q对象拥有数据库的识别|可通过update()、saveOrUpdate(){方法,转变成持久对象?
       q对象h如下特点Q?
  1.本质上与瞬时对象相同Q在没有M变量引用它时QJVM会在适当的时候将它回Ӟ
2. 比瞬时对象多了一个数据库记录标识倹{?

3.lock和update区别
{? update是把一个已l更改过的脱状态的对象变成持久状?
lock是把一个没有更改过的脱状态的对象变成持久状?针对的是因Session的关?而处于脱状态的po对象(2)Q不能针对因delete而处于脱状态的po对象)
对应更改一个记录的内容Q两个的操作不同Q?
update的操作步骤是Q?
(1)属性改动后的脱的对象的修?>调用update
lock的操作步骤是Q?
(2)调用lock把未修改的对象从q状态变成持久状?->更改持久状态的对象的内?->{待flush或者手动flush

4.save 和update区别
{: save是把一个对象做Z个新的数据保? update则是把一个脱状态的对象或自由态对象(一定要和一个记录对应)更新到数据库Q其实一个是保存一个是更新Q一看都知道是有什么区别了?

5.update 和saveOrUpdate区别
{:q个是比较好理解的,֐思义QsaveOrUpdate基本上就是合成了save和update,而update只是update;引用hibernate reference中的一D话来解释他们的使用场合和区?
通常下面的场景会使用update()或saveOrUpdate()Q?
E序在第一个session中加载对?接着把session关闭
该对象被传递到表现?
对象发生了一些改?
该对象被q回C务逻辑层最l到持久?
E序创徏W二session调用W二个session的update()Ҏ持久q些改动
saveOrUpdate(po)做下面的?
如果该po对象已经在本session中持久化了,在本session中执行saveOrUpdate不做M?
如果savaOrUpdate(新po)与另一个与本session兌的po对象拥有相同的持久化标识(identifier)Q抛Z个异?
org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session: [org.itfuture.www.po.Xtyhb#5]
saveOrUpdate如果对象没有持久化标?identifier)属性,对其调用save() Q否则update() q个对象     

6.flush和update区别
{:q两个的区别好理解update操作的是在自由态或q状?因session的关闭而处于脱状?的对?/updateSQL
而flush是操作的在持久状态的对象?
默认情况下,一个持久状态的对象的改动(包含set容器Q是不需要update的,只要你更改了对象的|{待hibernate flushp动更新或保存到数据库了。hibernate flush发生在以下几U情况中Q?
1Q?调用某些查询的和手动flush(),session的关闭、SessionFactory关闭l合
get()一个对象,把对象的属性进行改?把资源关闭?
2Qtransaction commit的时候(包含了flushQ?


lucas_y 2010-03-08 16:14 发表评论
]]>
应该知道关于java6?0件事Q{帖)http://www.aygfsteel.com/ysqwertys/archive/2010/03/05/314627.htmllucas_ylucas_yFri, 05 Mar 2010 08:34:00 GMThttp://www.aygfsteel.com/ysqwertys/archive/2010/03/05/314627.htmlhttp://www.aygfsteel.com/ysqwertys/comments/314627.htmlhttp://www.aygfsteel.com/ysqwertys/archive/2010/03/05/314627.html#Feedback0http://www.aygfsteel.com/ysqwertys/comments/commentRss/314627.htmlhttp://www.aygfsteel.com/ysqwertys/services/trackbacks/314627.html  

  2、Scripting. 现在你可以在Java源代码中混入JavaScript了,q对开发原型很有有用,你也可以插入自己的脚本引擎?nbsp; 

  3、Database. Mustang 联合绑?nbsp;Java DB (Apache Derby). JDBC 4.0 增加了许多特性例如支持XML作ؓSQL数据cdQ更好的集成Binary Large OBjects (BLOBs) ?nbsp;Character Large OBjects (CLOBs) . 

  4、More Desktop APIs. GUI 开发者可以有更多的技巧来使用 SwingWorker utility Q以帮助GUI应用中的多线E? JTable 分类和过滤,以及dsplash闪屏?nbsp;

  5、Monitoring and Management. Mustang d更多的诊断信息,l定了不是很知名?nbsp;memory-heap 分析工具Jhat 来查看内核导出?nbsp;

  6、Compiler Access.  compiler API提供~程讉KjavacQ可以实现进E内~译Q动态生Java代码?nbsp; 

  7、Pluggable Annotation. Java tool和framework 提供商可以定义自q annotations Qƈ且内核支持自定义annotation的插件和执行处理?nbsp; 

  8、Desktop Deployment. Swing拥有更好?nbsp;look-and-feel , LCD 文本呈现, 整体GUI性能的提升。Java应用E序可以和本地^台更好的集成Q例如访问^台的pȝ托盘和开始菜单。MustangJava插g技术和Java Web Start引擎l一了v来?nbsp;

  9、Security. XML-数字{֐(XML-DSIG) APIs 用于创徏和操U|字签?; 新的Ҏ来访问本地^台的安全服务Q例如本地Microsoft Windows for secure authentication and communicationnative 的Public Key Infrastructure (PKI) ?nbsp;cryptographic servicesQ?nbsp;Java Generic Security Services (Java GSS) ?nbsp;Kerberos services for authentication, 以及讉K LDAP servers 来认证用? 

  10、The -ilities: 质量Q兼Ҏ,E_性?nbsp;80,000 test cases 和数百万行测试代?只是试zd中的一个方?. Mustang 的快照发布已l被下蝲15个月了,每一步中的Bug都被修复了,表现比J2SE 5q要好?


lucas_y 2010-03-05 16:34 发表评论
]]>
中国工商银行软g开发部门职业发?? http://www.aygfsteel.com/ysqwertys/archive/2010/03/01/314149.htmllucas_ylucas_yMon, 01 Mar 2010 03:25:00 GMThttp://www.aygfsteel.com/ysqwertys/archive/2010/03/01/314149.htmlhttp://www.aygfsteel.com/ysqwertys/comments/314149.htmlhttp://www.aygfsteel.com/ysqwertys/archive/2010/03/01/314149.html#Feedback0http://www.aygfsteel.com/ysqwertys/comments/commentRss/314149.htmlhttp://www.aygfsteel.com/ysqwertys/services/trackbacks/314149.html中国工商银行软g开发部门职业发??

原文地址Q?a target="_blank">http://sjtu.blog.sohu.com/108202346.html

 

------------------------------------------软开开发篇-------------------------
-------------------------- 
 
     在我刚进软开的时?我想,q有什么啊,泡着茶写点儿JAVA的日子么?最多用JAVA?br /> 个数据库,插个数据?q有?取钱存钱不也是个h帐户数据的此消彼长么?IDE会帮?br /> 发现M一个细的p,而JAVA的简单语法也不会让你担心有什么疑难杂?我不知道
跟我x法一致的人有多少,但这实是我刚开始看软开的眼?安?挣闲q地方.
 
     然则,qg能量守恒的定?你做的东西少,一定是有h帮你做的东西?JAVA?br /> ?可是那是JVM做的东西?如银行,银行的系l之复杂,是Q何一个h无法惌?
然而它的真正目的不是像IBM一栯向别人出卖技?所以对人才要求很高,它只是要使成
熟的技术造福于自q色业务的推广,造福于针对业务的pȝ的开?说白?是靠业务?br /> 走红而不是技术的复杂来挣?.JAVA虽简?但是要想dd学明白也?那么银行?br /> 开不允许这U复杂性存?它简?但不d,那么我们p让它变得d的简?我们?br /> l箋开发自qpȝ,提供一套很Ҏ的开发^?当这套^台开发出来之?招一批能
够着茶写JAVA的hMؓ业务服务,所以这是软开表面l大安成q样一U映向的原因
,工作隑ֺ是不?但是l对不是说银行系l无?只是那些q_的工作者没有Q出水?
或者相Ҏ说比较低调而已. 
    回到了我不屑的着茶写JAVA,?的确,隑ֺ是不?数据库查来查?日志记来记去
,程可能够复?但不是算法的复杂,只是实现h很烦而已.但是,q些人真的有_?br /> 工夫泡茶?大家喜欢用日新月异来形容当今C会的发?形势日新月异?业务需求一?br /> 也是日新月异,于是他们每天都要针对各种业务需求写Z同的E序?q个时?他们?br /> x点应该从技术{向业务上?业务需求给他们的压力他们再无暇关注技术本w?所
以写JAVA的h也有写JAVA的h的难?只是业务上的J琐,向来被纯正的喜欢搞底?搞算
法的人所鄙视,的确,你的脑筋可能是很z?但是物尽其才,如果真的有这L思维,是应?br /> L一些高q东西,研究技术的创新,写JAVA,面对各种应用需?是有些埋?但是话又
说回?q样脑筋很活的h能干q样的工作么?工作再枯燥也需要有人做,他们能有耐心?br /> 付这L枯燥? 
    现在满大街的公?没有几个是真正搞什么底层东西的,大家其实都在针对各种?br /> 务做各种目,银行的开发之所以显得有些乍?主要是因?1,国企大氛?2,做出的东
西不用面寚w售压?其开发从技术含量来?q无本质区别. 
    所以在银行软开工作,l大部分?l对部分学计机的h,需要面临的是一个方向的
调整,需要将注意力从技术的深度转到业务的广度上?一味盲目的觉得人家的工作乏?
没技术含量是不现实的,q也是我目前一个态度的{? 
    技术做到最?是大同,惟有业务,才能使其中的努力变成钞票,大家(其是学计算
机的?其是ƈ不适合搞算?搞底层的?如果惌软开Q一定要有这L认识. 
 
----------------------------------------------------------------------------
--------------------------------- 
 
------------------------------软开的压力篇----------------------------------
--------------------------- 
    银行软开之所以有些乍?前面说过一?不用面对销售的压力,?我们做出?业务
人员得?可是真的没有压力? 
        我曾l听说过q样一个例?一个工行网点的客户l理,费尽了口?׃半天?br /> ?说服了两个客户买基金,l于她们被说动了,坐下来填单子准备{֭?q个时?pȝ
出故障了,交易无法q行,没办?客户l理只能含着?带着她们出来,把她们指l旁边的
农行/(本h属于工行,q些时候自然偏向工?其他银行朋友勿?.q个例子,体现?br /> 银行软开的一点压力吧,不论什么时?不论什么情?不论你用什么手D什么方?请你
l我保持住稳?如果pȝ?客户l理q可以陪客户聊天,可是如果宕了,什么叫所有努
力付怸?q就? 
    银行在全国的|点,大的C万计,的也数以千计吧,各个地方,招来的柜?那是?br /> 么样素质的都?我曾听说q这L柜员,q辈子她׃q两件事,做取Ƅ交易和存Ƅ
交易,转̎怎么?不会直接转̎,先给A做提现的交易,再给B做存现的交易.内部实现怎么
别扭,但是外部的易用性你可得l我做?要不人家|点柜员是真不明?记得唐朝诗h
白居易还是王安石,每写一首诗,都要问老百姓能不能看懂,软开面的情况也很类??br /> 居易王安矛_史上p么两个h,然而你要求每个软开员工每个目都能做到q样,不觉
得有压力?其是心高气傲的计算Zh,?更是不屑?可是,q是软开,如果惌来玩,
h下你的架?认真/l致的处理好所有细? 
    q有一个\人皆知的压力,如何保障q营pȝ的安?大家存钱的时候按完密码键?br /> ?pȝ没有响应,柜员要求你重新输入你会怎么?N不是我的密码被盗?你怎么?br /> 保证?q样的事情只要发?只要桶上?整个银行总部的领导层都会开始关注这个问?
甚至银监会也要监督你的处理方?q个时?软开员工w上的压力将会可惌知,一旦最
后查明是E序的问?所有一qh{?开?试/组领导/部门领导),全部要受|?q是
肯定?|银的运?得有多少加密措施来保障数据的安全,且不说技术上的加密算??br /> 拿业务来_大家d个U?看那个网点工作h员得填多单?q道银行ؓ保证安全
,得下多少_֊? 
    很多公?常年q一个医?一个机兛_目,每做一??0几万,然后全组人出
动到现场,花几天时?解决各种安装遇到的问?保证没问题后再大安?老总请大家
吃饭.银行是怎么?做一个项?全国所有省份所有网点均要投?如果大家各自全都?br /> ?人手够么?各种不一致的现象报上?是?0倍h也解决不?所以银行Y开压力最
大的时候就是投产前?所有h从老d兵全部通宵达旦地守在电脑旁,应付各种可能
问题的出?而且作ؓ高风险机?银行在投产时候遇到的问题的解?一定要?一ơ?br /> 成功!如密码键盘来说,出现问题是系l不响应,马上回来改了,自己过之后没问??br /> 发补?l果造成pȝ崩溃,你可以想象一下客L愤怒和不安!全中国这么大,我们不可
能到处跑q去看问?所?怎么h能保证程序在全国跑都没问?q是问题,也是巨大
的压? 
    银行软开的压?不来自于有没有客?而来自于客户太多,l我们系l造成的压?
无h问|的悲哀和无Ch目光如炬的质?后果都一?让你w心q. 
----------------------------------------------------------------------------
------------------------------------- 
 
------------------------------银行软开的发展篇------------------------------
----------------------------- 
    银行软开的发?对于学计机的h来说Q是一个不的N,也是很多人对于要?br /> 要来q很犹U的问?技术和业务上的难以抉择.q有国企多少的一点特色对自己发展?br /> 成的q扰. 
    是的,q些都是问题,值得研究,W一个关于技术和业务的问?我不惛_多说,以挣?br /> 为终?那么条条大\通罗?以境界的q求为终?软开可能不属于一个好的地?毕竟
你的心高高在?不屑于一些简单的z?路是自己选的,怎么走都可以,但是有一点要注意,
软开是有一部分专搞技术的人的,只是因ؓ银行软开的出发点是针对业务做开?所以ؓ
开发提供更便捷方式的^台方面的人属于少而精的配|?因ؓ一些国企的特色,q来后可
能因为我q篇文章,一些想要进来做q_的计机?有可能被领导分配C务ؓȝ开
发部?关于q些人我惌的是,软开属于计算机研发ؓȝ企业性质单位,ZZ间的
关系,沄国企的媄?却远没有那么复杂,关于自己角色的的定位,你可以跟领导好好?br /> 通你的长处和你希望干的内?一般来?领导是会多少考虑?即便不能癑ֈ百满你需
?癑ֈ之三?四十/五十{等也能满一?只会闷头做技?不会与h交流的hq是?br /> 要来?q里不适合?即便你不跟领导沟?你也需要跟下面分行的h沟?交流,是工?br /> 需? 
    有的Z?银行软开不挣?挣钱的是那些懂业务的?q里首先要明?什么样?br /> 挣钱,工资是每个h都挣?要是拿这个说的话没意思了.大家说的应该是提?分红?br /> 那一cMh,的确,软开挣不到那样一些钱,那些属于业务部该挣的?我觉得大家在讨论q?br /> 样一些问题的时?首先要把自己摆正,软开的h,其实也就相当于一个IT公司的h,IT?br /> 司的那一部分分红,软开一分钱都不会少,而且软开的钱有保?不随l济危机而v?q?br /> 时福利也q可?大家在M慕业务的人拿得多的时?是否可曾惛_自己公司的销售在?br /> 好一个项目的时候提成也是远胜于自己工资的呢?只要你自p转变思\,专心学业??br /> 助于自己的技术优?以后M务部分挣׃不是没可?关键在于自己怎么?不能?br /> 不想作出改变现状的努?又觉得h家挣钱挣那么多不公^.再者如果你实在q不了业?
那么干技?转管理或者技术做到死当技术经?M是成ؓ领导,软开领导同样挣不
钱,他们C也和HP/IBM的高地位一?也许׃q比人家的少?但是国企有国企的
利,q个是外企不能比?每个人都该知?生活提高一?抱怨就该少一?自己已经?br /> ?0W一q?够花?听说别的部门一q年l奖拿了20W,全年工资50W也该把心态放q_?
不就是钱?又不是不够花,何不知长乐?(?业务部门不包括那些网点的柜员,他们
工资很少?. 
     软开的发展空间最大的隑֤在我看来,是这里虽然由业务指导开?但是开发量很大
,D你也不能完全放下你的技?q样技术和业务之间徘徊不定,最l会有碍人的成长,
而且他的技术ؓ了业务开发的便捷,被很好的化了最后有可能技术没学成技?业务?br /> 没懂多少.q个是确?一个地方不可能十全十美. 
    我的意见?你一生比较想q安E的生活可以来这,你如果是一个有q求的h,q且?br /> {可以变通的?也可以来q?你如果是是一个有q求的h,q且好学的h(无论是业务还
是技?都多得让你学不完,当你学得够多有资格提前成ؓ领导?,也可以来q?一个有
q求的h,q且勤勉t实的h也可以来,有这么两cMh,技术的大牛Z要来,你应该去?br /> ?GOOGLE发挥你的优势所?有追?但是没有什么魄力改变现状的?׃要来,免得一
辈子q_的现状可能让你万分苦? 
    q有一个难处我也提一?它终归是国企,它注重能?毕竟银行的系l不能瞎??br /> 时也要求q限,q限一到才能往上升,所以不能忍的h也不要来了吧,当然也可以来了再?br /> ~呵呵 
   最后我说一下薪资发展空间吧,现在银行软开一般待遇都不差,但是升值空?在你?br /> 成ؓ领导之前涨幅不大,其实M地方都一?只有当领?工资才能有质的变?只是?br /> 开要当上领导的周期比外企要长一?也不会长得不可理?大家有的总说xq?觉得E?br /> 定但是又嫌工资涨得不?q就是典型的鱼和熊掌都想得到的心理了,选择了Y开,选择?br /> 国企的稳?必然要放弃一部分收入的增q?既然思想不够Ua,要ؓq求奋斗一?而是
选择既有保障也要有追求的奋斗,那么你的生命里必在别的地方付出一些代?怎么?br /> 都能成功,问题q是在于个h? 
    我简单说明一?工行软开,属于总行~制,?p么多? 



lucas_y 2010-03-01 11:25 发表评论
]]>
proxyhttp://www.aygfsteel.com/ysqwertys/archive/2010/02/04/312012.htmllucas_ylucas_yThu, 04 Feb 2010 09:52:00 GMThttp://www.aygfsteel.com/ysqwertys/archive/2010/02/04/312012.htmlhttp://www.aygfsteel.com/ysqwertys/comments/312012.htmlhttp://www.aygfsteel.com/ysqwertys/archive/2010/02/04/312012.html#Feedback0http://www.aygfsteel.com/ysqwertys/comments/commentRss/312012.htmlhttp://www.aygfsteel.com/ysqwertys/services/trackbacks/312012.html 代理模式


代理模式的作用是Q?/p>

      为其他对象提供一U代理以控制对这个对象的讉K。在某些情况下,一个客户不x者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用?/p>


代理模式一般涉及到的角色有Q?


抽象角色Q声明真实对象和代理对象的共同接口;

代理角色Q代理对象角色内部含有对真实对象的引用,从而可以操作真实对象,同时代理对象提供与真实对象相同的接口以便在Q何时刻都能代替真实对象。同Ӟ代理对象可以在执行真实对象操作时Q附加其他的操作Q相当于对真实对象进行封装?/p>

真实角色Q代理角色所代表的真实对象,是我们最l要引用的对象?/p>

以下以《Java与模式》中的示例ؓ例:

代码Q?//抽象角色Q?br /> abstract public class Subject{
abstract public void request();
}

//真实角色Q实CSubject的request()Ҏ?br /> public class RealSubject extends Subject{
public RealSubject(){
}
public void request(){
System.out.println("From real subject.");
}
}

//代理角色Q?br /> public class ProxySubject extends Subject{
private RealSubject realSubject; //以真实角色作Z理角色的属?
public ProxySubject(){
}
public void request(){ //该方法封装了真实对象的requestҎ
preRequest();
if( realSubject == null ){
realSubject = new RealSubject();
}
realSubject.request(); //此处执行真实对象的requestҎ
postRequest();
}
private void preRequest(){
//something you want to do before requesting
}
private void postRequest(){
//something you want to do after requesting
}
}

//客户端调用:
Subject sub=new ProxySubject();
Sub.request();


      ׃上代码可以看出,客户实际需要调用的是RealSubjectcȝrequest()ҎQ现在用ProxySubject来代理RealSubjectc,同样辑ֈ目的Q同时还装了其他方?preRequest(),postRequest())Q可以处理一些其他问题?

      另外Q如果要按照上述的方法用代理模式,那么真实角色必须是事先已l存在的Qƈ其作ؓ代理对象的内部属性。但是实际用时Q一个真实角色必d应一个代理角Ԍ如果大量使用会导致类的急剧膨胀Q此外,如果事先q不知道真实角色Q该如何使用代理呢?q个问题可以通过Java的动态代理类来解冟?/p>

2.动态代?/p>

Java动态代理类位于Java.lang.reflect包下Q一般主要涉及到以下两个c:

(1). Interface InvocationHandlerQ该接口中仅定义了一个方法ObjectQinvoke(Object obj,Method method, Object[] args)。在实际使用ӞW一个参数obj一般是指代理类Qmethod是被代理的方法,如上例中的request()QargsҎ的参数数l。这个抽象方法在代理cM动态实现?/p>

(2).ProxyQ该cd为动态代理类Q作用类g上例中的ProxySubjectQ其中主要包含以下内容:
Protected Proxy(InvocationHandler h)Q构造函敎ͼ估计用于l内部的h赋倹{?/p>

Static Class getProxyClass (ClassLoader loader, Class[] interfaces)Q获得一个代理类Q其中loader是类装蝲器,interfaces是真实类所拥有的全部接口的数组?/p>

Static Object newProxyInstance(ClassLoader loader, Class[] interfaces, InvocationHandler h)Q返回代理类的一个实例,q回后的代理cd以当作被代理cM?可用被代理cȝ在Subject接口中声明过的方??/p>

所谓Dynamic Proxy是这样一UclassQ它是在q行时生成的classQ在生成它时你必L供一linterfacel它Q然后该class宣U它实现了这些interface。你当然可以把该class的实例当作这些interface中的M一个来用。当然啦Q这个Dynamic Proxy其实是一个ProxyQ它不会替你作实质性的工作Q在生成它的实例时你必须提供一个handlerQ由它接实际的工作?参见文献3)

在用动态代理类Ӟ我们必须实现InvocationHandler接口Q以W一节中的示例ؓ例:

代码Q?//抽象角色(之前是抽象类Q此处应改ؓ接口)Q?/p>

public interface Subject{
public void request();
}

//具体角色RealSubjectQ实CSubject接口的request()Ҏ?br /> public class RealSubject implements Subject{
public RealSubject(){

}
public void request(){
System.out.println("From real subject.");
}
}

//代理角色Q?br /> import java.lang.reflect.Method;
import java.lang.reflect.InvocationHandler;
public class DynamicSubject implements InvocationHandler{
private Object sub;
public DynamicSubject(Object sub){
this.sub = sub;
}
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
System.out.println("before calling " + method);
method.invoke(sub,args);
System.out.println("after calling " + method);
return null;
}
}

该代理类的内部属性ؓObjectc,实际使用旉过该类的构造函数DynamicSubject(Object sub)对其赋|此外Q在该类q实CinvokeҎQ该Ҏ中的"method.invoke(sub,args)" 其实是调用被代理对象的要被执行的ҎQ方法参数sub是实际的被代理对象,args为执行被代理对象相应操作所需的参数。通过动态代理类Q我们可以在调用之前或之后执行一些相x作?

客户端:
代码Q?import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Proxy;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
public class Client{
static public void main(String[] args) throws Throwable{
RealSubject rs = new RealSubject(); //在这里指定被代理c?br /> InvocationHandler ds = new DynamicSubject(rs); //初始化代理类
Class cls = rs.getClass();
//以下是分解步?br /> /*
Class c = Proxy.getProxyClass(cls.getClassLoader(),cls.getInterfaces());
Constructor ct=c.getConstructor(new Class[]{InvocationHandler.class});
Subject subject =(Subject) ct.newInstance(new Object[]{ds});
*/

//以下是一ơ性生?/p>

Subject subject = (Subject) Proxy.newProxyInstance(cls.getClassLoader(),cls.getInterfaces(),ds);
subject.request();
}

通过q种方式Q被代理的对?RealSubject)可以在运行时动态改变,需要控制的接口(Subject接口)可以在运行时改变Q控制的方式(DynamicSubjectc?也可以动态改变,从而实C非常灉|的动态代理关pR?

3.代理模式使用原因和应用方?/p>

Q?Q授权机?不同U别的用户对同一对象拥有不同的访问权?如Jive论坛pȝ?׃用Proxyq行授权机制控制,讉K论坛有两Uh:注册用户和游?未注册用?,Jive中就通过cMForumProxyq样的代理来控制q两U用户对论坛的访问权?

Q?Q某个客L不能直接操作到某个对?但又必须和那个对象有所互动.
举例两个具体情况:
如果那个对象是一个是很大的图?需要花费很长时间才能显C出?那么当这个图片包含在文档中时,使用~辑器或览器打开q个文档,打开文档必须很迅?不能{待大图片处理完?q时需要做个图片Proxy来代替真正的囄.

如果那个对象在Internet的某个远端服务器?直接操作q个对象因ؓ|络速度原因可能比较?那我们可以先用Proxy来代曉K个对?

M原则?对于开销很大的对?只有在用它时才创徏,q个原则可以为我们节省很多宝늚Java内存. 所?有些为Java耗费资源内存,我以和程序编制思\也有一定的关系.

Q?Q现实中QProxy应用范围很广,现在行的分布计方式RMI和Corba{都是Proxy模式的应?/p>

 

本文来自CSDN博客Q{载请标明出处Qhttp://blog.csdn.net/goodHabit/archive/2009/11/08/4784461.aspx



lucas_y 2010-02-04 17:52 发表评论
]]>
reflecthttp://www.aygfsteel.com/ysqwertys/archive/2010/02/04/312007.htmllucas_ylucas_yThu, 04 Feb 2010 09:00:00 GMThttp://www.aygfsteel.com/ysqwertys/archive/2010/02/04/312007.htmlhttp://www.aygfsteel.com/ysqwertys/comments/312007.htmlhttp://www.aygfsteel.com/ysqwertys/archive/2010/02/04/312007.html#Feedback0http://www.aygfsteel.com/ysqwertys/comments/commentRss/312007.htmlhttp://www.aygfsteel.com/ysqwertys/services/trackbacks/312007.html     JAVA反射机制是在q行状态中Q对于Q意一个类Q都能够知道q个cȝ所有属性和ҎQ对于Q意一个对象,都能够调用它的Q意一个方法;q种动态获取的信息以及动态调用对象的Ҏ的功能称为java语言的反机制?br /> Java反射机制主要提供了以下功能: 在运行时判断L一个对象所属的c;在运行时构造Q意一个类的对象;在运行时判断L一个类所h的成员变量和ҎQ在q行时调用Q意一个对象的ҎQ生成动态代理?br /> 1. 得到某个对象的属?br />
1 public Object getProperty(Object owner, String fieldName) throws Exception {
2     Class ownerClass = owner.getClass();

4     Field field = ownerClass.getField(fieldName);

6     Object property = field.get(owner);

8     return property;
9 }
Class ownerClass = owner.getClass()Q得到该对象的Class?br />
Field field = ownerClass.getField(fieldName)Q通过Class得到cd明的属性?br />
Object property = field.get(owner)Q通过对象得到该属性的实例Q如果这个属性是非公有的Q这里会报IllegalAccessException?br />
2. 得到某个cȝ静态属?br />
 1 public Object getStaticProperty(String className, String fieldName)
 2             throws Exception {
 3     Class ownerClass = Class.forName(className);
 4 
 5     Field field = ownerClass.getField(fieldName);
 6 
 7     Object property = field.get(ownerClass);
 8 
 9     return property;
10 }

Class ownerClass = Class.forName(className) Q首先得到这个类的Class?br />
Field field = ownerClass.getField(fieldName)Q和上面一P通过Class得到cd明的属性?br />
Object property = field.get(ownerClass) Q这里和上面有些不同Q因属性是静态的Q所以直接从cȝClass里取?br />
3. 执行某对象的Ҏ

 1 public Object invokeMethod(Object owner, String methodName, Object[] args) throws Exception {
 2 
 3     Class ownerClass = owner.getClass();
 4 
 5     Class[] argsClass = new Class[args.length];
 6 
 7     for (int i = 0, j = args.length; i < j; i++) {
 8         argsClass[i] = args[i].getClass();
 9     }
10 
11     Method method = ownerClass.getMethod(methodName, argsClass);
12 
13     return method.invoke(owner, args);
14 }
Class owner_class = owner.getClass() Q首先还是必d到这个对象的Class?br />
5?行:配置参数的Class数组Q作为寻找Method的条件?br />
Method method = ownerClass.getMethod(methodName, argsClass)Q通过Method名和参数的Class数组得到要执行的Method?br />
method.invoke(owner, args)Q执行该MethodQinvokeҎ的参数是执行q个Ҏ的对象,和参数数l。返回值是ObjectQ也既是该方法的q回倹{?br />
4. 执行某个cȝ静态方?br />
 1 public Object invokeStaticMethod(String className, String methodName,
 2             Object[] args) throws Exception {
 3     Class ownerClass = Class.forName(className);
 4 
 5     Class[] argsClass = new Class[args.length];
 6 
 7     for (int i = 0, j = args.length; i < j; i++) {
 8         argsClass[i] = args[i].getClass();
 9     }
10 
11     Method method = ownerClass.getMethod(methodName, argsClass);
12 
13     return method.invoke(null, args);
14 }

基本的原理和实例3相同Q不同点是最后一行,invoke的一个参数是nullQ因是静态方法,不需要借助实例q行?br />
5. 新徏实例
 1 
 2 public Object newInstance(String className, Object[] args) throws Exception {
 3     Class newoneClass = Class.forName(className);
 4 
 5     Class[] argsClass = new Class[args.length];
 6 
 7     for (int i = 0, j = args.length; i < j; i++) {
 8         argsClass[i] = args[i].getClass();
 9     }
10 
11     Constructor cons = newoneClass.getConstructor(argsClass);
12 
13     return cons.newInstance(args);
14 
15 }

q里说的Ҏ是执行带参数的构造函数来新徏实例的方法。如果不需要参敎ͼ可以直接使用newoneClass.newInstance()来实现?br />
Class newoneClass = Class.forName(className)Q第一步,得到要构造的实例的Class?br />
W?~第9行:得到参数的Class数组?br />
Constructor cons = newoneClass.getConstructor(argsClass)Q得到构造子?br />
cons.newInstance(args)Q新建实例?br />
6. 判断是否为某个类的实?br />
1 public boolean isInstance(Object obj, Class cls) {
2     return cls.isInstance(obj);
3 }

7. 得到数组中的某个元素
1 public Object getByArray(Object array, int index) {
2     return Array.get(array,index);
3 }

lucas_y 2010-02-04 17:00 发表评论
]]>
win7快捷键大?/title><link>http://www.aygfsteel.com/ysqwertys/archive/2010/02/01/311501.html</link><dc:creator>lucas_y</dc:creator><author>lucas_y</author><pubDate>Mon, 01 Feb 2010 05:59:00 GMT</pubDate><guid>http://www.aygfsteel.com/ysqwertys/archive/2010/02/01/311501.html</guid><wfw:comment>http://www.aygfsteel.com/ysqwertys/comments/311501.html</wfw:comment><comments>http://www.aygfsteel.com/ysqwertys/archive/2010/02/01/311501.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/ysqwertys/comments/commentRss/311501.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/ysqwertys/services/trackbacks/311501.html</trackback:ping><description><![CDATA[<div id="wmqeeuq" class="articalTitle"><span id="wmqeeuq" class="titName SG_txta" id="t_4dc998d20100h3ic">win7快捷键大?/span><span id="wmqeeuq" class="img2"><img class="SG_icon SG_icon18" title="此博文包含图? height="15" src="http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif" width="15" align="absMiddle" alt="" /></span></div> <div id="wmqeeuq" class="articalContent"> <p><a target="_blank"><img src="http://static14.photo.sina.com.cn/middle/4dc998d2h7d29f8c28bcd&690" alt="" /></a><br /> <br /> </p> <p>一、Win键相关的快捷?br /> 键位<br />  <wbr>操作<br />  <wbr><br /> Win <wbr>+ <wbr>Home<br />  <wbr>所有用中H口以外的窗口最化Q和摇动使用中窗口一h思) <wbr><br /> Win <wbr>+ <wbr>SpaceI格?nbsp;<wbr>所有桌面上的窗口透明化(和鼠标移到工作列的最右下角一h思) <wbr><br /> Win <wbr>+ <wbr> <wbr>↑ <wbr>上方向键<br />  <wbr>最大化使用中窗口(和将H口用鼠标拖到屏q上~一h思) <wbr><br /> Shift <wbr>+ <wbr>Win <wbr>+ <wbr> <wbr>↑ <wbr>上方向键<br />  <wbr>垂直最大化使用中窗口(但水q_度不变) <wbr><br /> Win <wbr>+ <wbr>↓ <wbr>下方向键 <wbr>最化H口Q还原先前最大化的用中H口 <wbr><br /> Win <wbr>+ <wbr>左/x向键 <wbr>窗口靠到屏q的左右两侧Q和窗口用鼠标拖到左右边缘一h思) <wbr><br /> Shift <wbr>+ <wbr>Win <wbr>+ <wbr>左/x向键 <wbr>窗口移到左、右屏幕Q如果你有接双屏q的话)工作列快速列 <wbr><br /> Win <wbr>+ <wbr>1~9 <wbr>开启工作列上相对应的YӞ从左到右依顺序ؓWin+1到Win+9 <wbr><br /> Shift <wbr>+ <wbr>Win <wbr>+ <wbr>1~9 <wbr>开启对应位|Y件的一个新「分w」,例如firefox的话会是开新窗口(鼠标是Shift+点YӞ <wbr><br /> Ctrl <wbr>+ <wbr>Win <wbr>+ <wbr>1~9 <wbr>在对应位|Y件已开的分w中切换 <wbr><br /> Alt <wbr>+ <wbr>Win <wbr>+ <wbr>1~9 <wbr>开启对应位|Y件的右键选单 <wbr><br /> Ctrl <wbr>+ <wbr>Shift <wbr>+ <wbr>鼠标点Y?nbsp;<wbr>以管理员权限开启该软g <wbr><br /> WIN <wbr>+ <wbr>点击d栏快h?nbsp;<wbr>在此E序中新Z个实?nbsp;<wbr><br /> Win <wbr>+ <wbr> <wbr>(+/-)Q       <wbr>打开Windows攑֤、羃功?nbsp;<wbr><br /> Win <wbr>+ <wbr>G <wbr>在屏q上的Gadget <wbr>间切?nbsp;<wbr><br /> Win <wbr>+ <wbr>X <wbr>打开Ud中心 <wbr><br /> Win <wbr>+ <wbr>D <wbr>昄桌面Q最化所有窗?nbsp;<wbr><br /> Win <wbr>+ <wbr>E <wbr>打开资源理?nbsp;<wbr><br /> Win <wbr>+ <wbr>F <wbr>打开资源理器搜索结?nbsp;<wbr><br /> Win <wbr>+ <wbr>L <wbr>锁定计算机,回到登陆H口 <wbr><br /> Win <wbr>+ <wbr>M <wbr>最化当前H口 <wbr><br /> Win <wbr>+ <wbr>P <wbr>投媄定(仅屏q、同步显C、g伸、仅投媄机) <wbr><br /> Win <wbr>+ <wbr>R <wbr>打开q行H口 <wbr><br /> Win <wbr>+ <wbr>T <wbr>工作列的Alt+Tab <wbr><br /> Win <wbr>+ <wbr>U <wbr>打开控制面板L讉K中心 <wbr><br /> Win <wbr>+ <wbr>Break <wbr>打开控制面板pȝ属?nbsp;<wbr><br /> Win <wbr>+ <wbr>Tab <wbr>打开Flip3Dd切换功能 <wbr><br /> <br /> <br />  <wbr><br /> <br /> 二、Windows基础快捷?br /> <br /> 键位<br />  <wbr>操作<br />  <wbr><br /> F1<br />  <wbr>帮助<br />  <wbr><br /> Ctrl+C <wbr>( <wbr>Ctrl+Insert)<br />  <wbr>复制选中目<br />  <wbr><br /> Ctrl+X<br />  <wbr>剪切选中目<br />  <wbr><br /> Ctrl+V <wbr>( <wbr>Shift+Insert)<br />  <wbr>_脓选中目<br />  <wbr><br /> Ctrl+Z<br />  <wbr>撤销<br />  <wbr><br /> Ctrl+Y<br />  <wbr>重做<br />  <wbr><br /> Delete <wbr>( <wbr>Ctrl+D)<br />  <wbr>删除选中目臛_收站<br />  <wbr><br /> Shift+Delete<br />  <wbr>直接删除选中目<br />  <wbr><br /> F2<br />  <wbr>重命名选中目<br />  <wbr><br /> Ctrl+A<br />  <wbr>全?br />  <wbr><br /> F3<br />  <wbr>搜烦<br />  <wbr><br /> Alt+Enter<br />  <wbr>昄选中目属?br />  <wbr><br /> Alt+F4<br />  <wbr>关闭当前目或退出当前程?br />  <wbr><br /> Alt+I格<br />  <wbr>打开当前H口的快h式菜?br />  <wbr><br /> Alt+Tab<br />  <wbr>在当前运行的H口中切?br />  <wbr><br /> Ctrl+Alt+Tab<br />  <wbr>使用方向键在当前q行的窗口中切换<br /> Ctrl+滚轮<br />  <wbr>改变桌面图标大小<br />  <wbr><br />  <wbr> <wbr> <wbr>+Tab<br />  <wbr>开启Aero <wbr>Flip <wbr>3-D<br />  <wbr><br /> Ctrl+ <wbr> <wbr>+Tab<br />  <wbr>使用方向键在 <wbr>Aero <wbr>Flip <wbr>3DE序中切?br />  <wbr><br /> Alt+Esc<br />  <wbr>在当前打开的程序间切换<br />  <wbr><br /> F4<br />  <wbr>昄资源理器的地址栏列?br />  <wbr><br /> Shift+F10<br />  <wbr>昄选中目的快h式菜?br />  <wbr><br /> Ctrl+Esc<br />  <wbr>打开开始菜?br />  <wbr><br /> F10<br />  <wbr>Ȁzd前窗口的菜单?br />  <wbr><br /> F5 <wbr>( <wbr>Ctrl+R)<br />  <wbr>h<br />  <wbr><br /> Alt+ <wbr>↑<br />  <wbr>资源理Zq回文g夹的上一U菜?br />  <wbr><br /> Esc<br />  <wbr>取消当前操作<br />  <wbr><br /> Ctrl+Shift+Esc<br />  <wbr>打开d栏管理器<br />  <wbr><br /> 插入片时按住Shift<br />  <wbr>止CD/DVD的自动运?br />  <wbr><br /> 双或左边的 <wbr>Ctrl+Shift<br />  <wbr>改变阅读序<br />  <wbr><br /> <br /> <br /> 三、资源管理器相关快捷?br /> <br /> <br /> <br /> 键位<br />  <wbr>操作<br />  <wbr><br /> Ctrl <wbr>+ <wbr>N<br />  <wbr>打开新窗?br />  <wbr><br /> Ctrl <wbr>+ <wbr>W<br />  <wbr>关闭当前H口<br />  <wbr><br /> Ctrl <wbr>+ <wbr>Shift <wbr>+ <wbr>N<br />  <wbr>新徏文g?br />  <wbr><br /> End<br />  <wbr>昄文g夹底?br />  <wbr><br /> Home<br />  <wbr>昄文g多w?br />  <wbr><br /> F11<br />  <wbr>最?最化当前文g?br />  <wbr><br /> Ctrl <wbr>+ <wbr>句号 <wbr>(.)<br />  <wbr>时针方向旋转图?br />  <wbr><br /> Ctrl <wbr>+ <wbr>逗号 <wbr>(,)<br />  <wbr>逆时针方向旋转图?br />  <wbr><br /> Num <wbr>Lock <wbr>+ <wbr>键盘星?nbsp;<wbr>(*)<br />  <wbr>昄选中文g夹下的所有子文g?br />  <wbr><br /> Num <wbr>Lock <wbr>+ <wbr>键盘加? <wbr>+ <wbr>)<br />  <wbr>昄选中文g夹的内容<br />  <wbr><br /> Num <wbr>Lock <wbr>+ <wbr>键盘减?nbsp;<wbr>(-)<br />  <wbr>折叠选中文g?br />  <wbr><br /> ←<br />  <wbr>折叠选中文gҎq回父文件夹<br />  <wbr><br /> Alt <wbr>+ <wbr>Enter<br />  <wbr>打开选中目的属性对话框<br />  <wbr><br /> Alt <wbr>+ <wbr>P<br />  <wbr>预览面板开?br />  <wbr><br /> Alt <wbr>+ <wbr>←<br />  <wbr>打开上一个文件夹<br />  <wbr><br /> Backspace<br />  <wbr>打开上一个文件夹<br />  <wbr><br /> →<br />  <wbr>选中W一个子文g?br />  <wbr><br /> Alt <wbr>+ <wbr>→<br />  <wbr>打开下一个文件夹<br />  <wbr><br /> Alt <wbr>+ <wbr>↑<br />  <wbr>q回上一层文件夹<br />  <wbr><br /> Ctrl <wbr>+ <wbr>滚轮<br />  <wbr>改变图标大小<br />  <wbr><br /> Alt <wbr>+ <wbr>D<br />  <wbr>选中地址?br />  <wbr><br /> Ctrl <wbr>+ <wbr>E<br />  <wbr>选中搜烦?br />  <wbr><br /> Ctrl <wbr>+ <wbr>F<br />  <wbr>选中搜烦?br />  <wbr><br /> Shift+右键炚w文?nbsp;<wbr>出现「附到开始菜单」和「复制ؓ路径」两个额外的右键选项 <wbr><br /> Shift+右键炚w文件夹 <wbr>出现「在新处理程序开启(另开新窗口)」?br /> 「在此处开启命令窗口(DOS!Q」和<br /> 「复制ؓ路径」三个额外的右键选项<br />  <wbr><br /> <br /> <br /> 四、Q务栏快捷?br /> <br /> <br /> <br /> 键位<br />  <wbr>操作<br />  <wbr><br /> Shift <wbr>+ <wbr>点击d栏程序按?br />  <wbr>在新H口中打开此程?br />  <wbr><br /> Ctrl <wbr>+ <wbr>Shift <wbr>+ <wbr>点击d栏程序按?br />  <wbr>以管理员w䆾q行此程?br />  <wbr><br /> Shift <wbr>+ <wbr>右键点击d栏程序按?br />  <wbr>打开此程序的H口菜单<br />  <wbr><br /> Shift <wbr>+ <wbr>右键点击d栏分l按?br />  <wbr>打开本组的窗口菜?br />  <wbr><br /> Ctrl <wbr>+ <wbr>点击d栏分l按?br />  <wbr>在本l窗口中循环 <wbr></p> <p> <wbr></p> <p><strong>“windows?#8221;+“方向?#8221;=大小?/strong></p> <p>  通过“windows?#8221;+“方向?#8221;Q可分别实现“使当前窗口最大化”?#8220;当前H口最化”?#8220;H口贴向屏幕左侧或右侧,占用50%面积”四个操作l果?/p> <p>  ?#8220;windows?#8221;+“Home”Q可实现最化其他?#8220;非当前用中的窗?#8221;。例如当前正在?#8220;IE览?#8221;Q通过此快捷键Q可以把其他暂时不用的窗口最化CQ务栏上。再ơ按此快捷键Q最化H口又会全部出现?/p> <p>  <strong>“windows?#8221;+“Space”=H口透明?/strong></p> <p>  “windows?#8221;+“Space”Q可目前显C的所有窗口透明化,以便查看桌面?#8220;windows?#8221;+“D”可将目前昄的所有窗口最化Q以便查看桌面?/p> <p>  以往我们打开一个程序的新窗口时(比如word)Q需要在已经打开的wordH口的工h中选择“新徏”Q现在通过windows7快捷键,只需一个操作就可以快速新Z个窗口,?#8220;Shift”+“鼠标左键”l合快捷键。按住Shift键,在某个程序图标上点击鼠标左键Q可以打开一个此E序?#8220;新徏H口”?/p> <p> <strong> “windows?#8221;+数字?快速启?/strong></p> <p>  windows7左下Ҏ快速启动栏Q通过“windows?#8221;+数字键,可快h开固定在快速启动栏中的E序Q如要打开排在W二位的IEE序Q可以用Win+2卛_快速打开?/p> <p>  通过“Shift?#8221;+“鼠标右键”可实Cl程序的q原、最大或关闭操作。按住Shift键,在某个程序图标上点击鼠标右键?/p> <p>  通过“Window Menu”Q进行还原、移动、最?最化{操作。如果某个程序已l打开了很多窗口,那么“WindowsMenu”可以进行还原、最?最化、关闭组?/p> <p> <wbr></p> <p>以下六种快捷键组合是所谓的“键盘?#8221;高手最常用的六U,习惯使用q几U之后,我们会发现自己操作电脑的速度会快如此之多!q些快捷键经<a ><font color="#e179de">试</font></a>在win7下也可以正常使用?微YQ汗……我可没傻到在win7里头Lq些大大方便用户的功?#8230;…)</p> <p style="text-indent: 2em">  1.Win+D: q是高手最常用的第一快捷l合键。这个快捷键l合可以桌面上的所有窗口瞬间最化Q无论是聊天的窗口还是游戏的H口……只要再次按下q个l合键,刚才的所有窗口都回来了,而且Ȁzȝ也正是你最化之前在用的H口!</p> <p style="text-indent: 2em">  2.Win+F:不用再去Ud鼠标?#8220;开?#8594;搜烦→文g和文件夹”了,在Q何状态下Q只要一按Win+F׃弹出搜烦H口?/p> <p style="text-indent: 2em">  3.Win+R:在我们的文章中,你经怼看到q样的操作提C?“点击‘开?#8594;q行’Q打开‘q行’对话?#8230;…”。其实,q有一个更单的办法Q就是按Win+R!</p> <p style="text-indent: 2em">  4.Alt+Tab:如果打开的窗口太多,q个l合键就非常有用了,它可以在一个窗口中昄当前打开的所有窗口的名称和图标,选中自己希望要打开的窗口,村ּq个l合键就可以了。而alt+tab+shift键则可以反向昄当前打开的窗口?/p> <p style="text-indent: 2em">  5.Win+E:当你需要打开资源理器找文g的时候,q个快捷键会让你感觉非常“?#8221;!再也不用腑և一只手L鼠标?</p> <p style="text-indent: 2em">  6.WinQ就是开始菜单咯!!!</p> <p style="text-indent: 2em"> <wbr></p> <p style="text-indent: 2em">1. <a ><font color="#e179de">Windows</font></a>?+ I格?#8220;Space”</p> <p style="text-indent: 2em">  功能Q透明化所有窗口,快速查看桌面。用此快捷键可以立卛_目前昄的所有窗口透明化,以便查看桌面。这有什么用?如果你已l习惯用vistapȝ中的侧边栏小工具Q?a ><font color="#e179de">Windows</font></a> 7pȝ中的工h是可以随心所Ʋ在桌面上摆放,当你正在工作ӞH然惌v看看旉、股指数、日E安?..按下q组快捷键就会马上看见,放手后立x复之前的H口Q对自己的工作毫无媄响?/p> <p style="text-indent: 2em"><img title="Win7键盘常用快捷键组?- Loshua - 忘忧Yu? alt="Win7键盘常用快捷键组?- Loshua - 忘忧Yu? src="http://windows.chinaitlab.com/UploadFiles_3263/200906/20090618085527968.jpg" border="0" /></p> <p style="text-indent: 2em"><img title="Win7键盘常用快捷键组?- Loshua - 忘忧Yu? alt="Win7键盘常用快捷键组?- Loshua - 忘忧Yu? src="http://windows.chinaitlab.com/UploadFiles_3263/200906/20090618085530545.jpg" border="0" /></p> <p style="text-indent: 2em">  按下Windows?+ I格?#8220;Space”快捷键后桌面昄</p> <p style="text-indent: 2em">  2. Windows?+ 字母?#8220;D”</p> <p style="text-indent: 2em">  功能Q最化所有窗口,q快速查看桌面。这l快捷键帮助用户立即当前桌面上所有窗口最化Q以便查看桌面,再次按下此快捷键Ӟ刚刚最化的窗口又会全部出C?/p> <p style="text-indent: 2em">  不知道小~是否已l讲清了以上两组快捷键的不同用法Q如果还不是太明白的|友Q自p试便知?/p> <p style="text-indent: 2em">  3. Windows?+ 数字?/p> <p style="text-indent: 2em">  功能Q按照数字排序打开相应E序。针对固定在快速启动栏中的E序Q如果你能记住启动栏中的E序排序Q直接按下此快捷键就能马上调用了Q如图中启动栏上的IE览器排在第一位,使用“Win+1”快捷键立x开IE览器?/p> <p style="text-indent: 2em"><img title="Win7键盘常用快捷键组?- Loshua - 忘忧Yu? alt="Win7键盘常用快捷键组?- Loshua - 忘忧Yu? src="http://windows.chinaitlab.com/UploadFiles_3263/200906/20090618085530334.jpg" border="0" /></p> <p style="text-indent: 2em">  4. Windows?+ 字母?#8220;T”</p> <p style="text-indent: 2em">  功能Q依ơ查看已l打开E序的预览图。Windows 7的强大Q务栏得到了大量用L喜爱Q用户可以轻松从d栏预览已打开E序的羃略图Q用这l快捷键p从左到右循环查看d栏上的所有预览图Q同时用Windows?Shift?“T”可以从右臛_Q相反方向@环查看Q务栏上的预览图?/p> <p style="text-indent: 2em">  5. Windows?+ 字母?#8220;G”</p> <p style="text-indent: 2em">  功能Q依ơ显C桌面小工具。微软vistapȝ开始启用了桌面工兯一深受用户喜爱的功能,Windows 7pȝ中l将该特性充分发挥,如果你的桌面上有太多的小工具以致于发生层叠的时候,查看h׃太方便了Q此时用快捷键q速让层叠的小工具依次昄在面前,x哪一个都十分方便?/p> <p style="text-indent: 2em">  6. Windows?+ 字母?#8220;P”</p> <p style="text-indent: 2em">  功能Q打开“外接昄”的设|面板,当然q个功能只有接入了一些外接设备后才能z上用场?/p> <p style="text-indent: 2em">  7. Windows?+ 字母?#8220;X”</p> <p style="text-indent: 2em">  功能Q打开“Ud中心”讄面板QWindows 7中的Ud中心提供了显C器亮度控制、音量控制、笔记本甉|监控、Mobile手机同步讄、外接显C器理...{多U功能?/p> <p style="text-indent: 2em"><img title="Win7键盘常用快捷键组?- Loshua - 忘忧Yu? alt="Win7键盘常用快捷键组?- Loshua - 忘忧Yu? src="http://windows.chinaitlab.com/UploadFiles_3263/200906/20090618085530807.jpg" border="0" /></p> <p style="text-indent: 2em">  8. Windows?+ W号?#8220;+” 功能Q打开攑֤镜。Windows 7中新增加了放大镜功能Q也许对于视力不好的用户来说十分友好的一Ҏ功能。当首次按下此快捷键l合ӞWindows 7自动打开攑֤镜功能,重复使用该快捷键可以不断攑֤内容。能攑֤当然也必能~小臌原,使用Windows?W号?#8220;-”卛_实现~小功能?/p> <p style="text-indent: 2em"> <wbr></p> <p style="text-indent: 2em"> <wbr></p> <p style="text-indent: 2em">按住右Shift <wbr>八秒钟: <wbr>启用和关闭筛选键<br />   按左 <wbr>Alt+?nbsp;<wbr>Shift+PrtScn(?nbsp;<wbr>PrtScn)Q启用或关闭高对比度<br />   按左 <wbr>Alt+?nbsp;<wbr>Shift+Num <wbr>Lock <wbr>Q启用或关闭鼠标?br />   ?nbsp;<wbr>Shift <wbr>五次Q?nbsp;<wbr>启用或关闭粘滞键<br />   按住 <wbr>Num <wbr>Lock <wbr>五秒钟:启用或关闭切换键<br />   Windows <wbr>徽标?nbsp;<wbr>+ <wbr>U <wbr>Q?nbsp;<wbr>打开L讉K中心<br />   3. <wbr>对话框键盘快h?br />   Ctrl+Tab <wbr>在选项卡上向前Ud<br />   Ctrl+Shift+Tab <wbr>在选项卡上向后Ud<br />   Tab <wbr>在选项上向前移?br />   Shift+Tab <wbr>在选项上向后移?br />   Alt+加下划线的字?nbsp;<wbr>执行与该字母匚w的命?或选择选项)<br />   Enter <wbr>对于许多选定命o代替单击鼠标<br />   I格?nbsp;<wbr>如果zd选项是复选框Q则选中或清除该复选框<br />   头?nbsp;<wbr>如果zd选项是一l选项按钮Q则选择某个按钮<br />   F1 <wbr>昄帮助<br />   F4 <wbr>昄zd列表中的目<br />   Backspace <wbr>如果?#8220;另存?#8221;?#8220;打开”对话框中选中了某个文件夹Q则打开上一U文件夹<br />   4. <wbr>Windows <wbr>徽标键相关的快捷?br />   Windows徽标键就是显CZؓWindows旗帜Q或标有文字Win或Windows的按键,以下UWin键。XP时代?个经典的 <wbr>Win <wbr>键组合:R/E/F/L。到?nbsp;<wbr>Win7Q花h多了?br />   WinQ打开或关闭开始菜?br />   Win <wbr>+ <wbr>PauseQ显C系l属性对话框<br />   Win <wbr>+ <wbr>DQ显C桌?br />   Win <wbr>+ <wbr>MQ最化所有窗?br />   Win <wbr>+ <wbr>SHIFT <wbr>+ <wbr>MQ还原最化H口到桌面上<br />   Win <wbr>+ <wbr>EQ打开我的电脑<br />   Win <wbr>+ <wbr>FQ搜索文件或文g?br />   Ctrl <wbr>+ <wbr>Win <wbr>+ <wbr>FQ搜索计机(如果您在|络?<br />   Win <wbr>+ <wbr>LQ锁定您的计机或切换用?br />   Win <wbr>+ <wbr>RQ打开q行对话?br />   Win <wbr>+ <wbr>TQ切换Q务栏上的E序(感觉是和alt+ESC <wbr>一?nbsp;<wbr>)<br />   Win <wbr>+ <wbr>数字Q让位于d栏指定位|?按下的数字作为序?的程序,新开一个实例?感觉q个比较新颖Q貌似快速启动? <wbr>Shift <wbr>+ <wbr>Windows <wbr>logo <wbr>key <wbr>+numberQStart <wbr>a <wbr>new <wbr>instance <wbr>of <wbr>the <wbr>program <wbr>pinned <wbr>to <wbr>the <wbr>taskbar <wbr>in <wbr>the <wbr>position <wbr>indicated <wbr>by <wbr>the <wbr>number<br />   Ctrl <wbr>+ <wbr>Win <wbr>+ <wbr>数字Q让位于d栏指定位|?按下的数字作为序?的程序,切换C一ơ的zdH口?nbsp;<wbr>Ctrl+Windows <wbr>logo <wbr>key <wbr>+numberQSwitch <wbr>to <wbr>the <wbr>last <wbr>active <wbr>window <wbr>of <wbr>the <wbr>program <wbr>pinned <wbr>to <wbr>the <wbr>taskbar <wbr>in <wbr>the <wbr>position <wbr>indicated <wbr>by <wbr>the <wbr>number<br />   ALT <wbr>+ <wbr>Win <wbr>+ <wbr>数字Q让位于d栏指定位|?按下的数字作为序?的程序,昄跌{清单?nbsp;<wbr>Alt+Windows <wbr>logo <wbr>key <wbr>+numberQ?nbsp;<wbr>Open <wbr>the <wbr>Jump <wbr>List <wbr>for <wbr>the <wbr>program <wbr>pinned <wbr>to <wbr>the <wbr>taskbar <wbr>in <wbr>the <wbr>position <wbr>indicated <wbr>by <wbr>the <wbr>number<br />   Win <wbr>+ <wbr>TABQ@环切换Q务栏上的E序q用的Aero三维效果<br />   Ctrl <wbr>+ <wbr>Win <wbr>+ <wbr>TABQ用方向键来@环@环切换Q务栏上的E序Qƈ使用的Aero三维效果<br />   按Ctrl <wbr>+ <wbr>Win <wbr>+ <wbr>BQ切换到在通知区域中显CZ息的E序<br />   Win <wbr>+ <wbr>I格Q预览桌?br />   Win <wbr>+ <wbr>↑Q最大化H口<br />   Win <wbr>+ <wbr>↓Q最化H口<br />   Win <wbr>+ <wbr>←Q最大化到窗口左侧的屏幕?br />   Win <wbr>+ <wbr>→Q最大化H口到右侧的屏幕?br />   Win <wbr>+ <wbr>HomeQ最化所有窗口,除了当前Ȁzȝ?br />   Win+ <wbr>SHIFT <wbr>+ <wbr>↑Q拉伸窗口的到屏q的剙和底?br />   Win+ <wbr>SHIFT <wbr>+ <wbr>→/←Q移动一个窗口,从一个显C器到另一?br />   Win <wbr>+ <wbr>PQ选择一个演C文E显C模?br />   Win <wbr>+ <wbr>GQ@环切换侧Ҏ的小工具<br />   Win <wbr>+ <wbr>UQ打开L讉K中心<br />   Win <wbr>+ <wbr>xQ打开WindowsUd中心<br /> </p> </div> <img src ="http://www.aygfsteel.com/ysqwertys/aggbug/311501.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/ysqwertys/" target="_blank">lucas_y</a> 2010-02-01 13:59 <a href="http://www.aygfsteel.com/ysqwertys/archive/2010/02/01/311501.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>struts2 http://www.aygfsteel.com/ysqwertys/archive/2010/01/27/310984.htmllucas_ylucas_yWed, 27 Jan 2010 10:23:00 GMThttp://www.aygfsteel.com/ysqwertys/archive/2010/01/27/310984.htmlhttp://www.aygfsteel.com/ysqwertys/comments/310984.htmlhttp://www.aygfsteel.com/ysqwertys/archive/2010/01/27/310984.html#Feedback0http://www.aygfsteel.com/ysqwertys/comments/commentRss/310984.htmlhttp://www.aygfsteel.com/ysqwertys/services/trackbacks/310984.html egQpoint 自动转换PointAction-conversion.properties  ?#8220;-”前面要与一个包下的action同名Q里面内Ҏpoint = com.test.util.TypeConverterQ而TypeConverter是TypeConverter extends DefaultTypeConverterQ结构如下:


CZ代码如下Q?br /> @Override
 public Object convertValue(Map context, Object value, Class toType) {
  if (Point.class == toType) {
   Point point = new Point();
   if (value != null && !"".equals(value)) {
    String[] str = (String[])value;
    String[] val = str[0].split(",");
    if (val != null && 2 == val.length) {
     String x = val[0];
     String y = val[1];
     if (StringUtil.isInteger(x) && StringUtil.isInteger(y)) {
      point.setX(Integer.parseInt(x));
      point.setY(Integer.parseInt(y));
     }
    }
   }
   return point;
  } else if (String.class == toType) {
   StringBuffer sb = new StringBuffer();
   Point point = (Point)value;
   Integer x = point.getX();
   Integer y = point.getY();
   sb.append("[").append(x).append(",").append(y).append("]");
   return sb.toString();
  }
  return null;
 }

ȝQ?br /> cd转换Q?nbsp;   
全局                                                                局?br /> ***Action-conversion.properties             xwork-converison.properties

校验Q?br /> ***Action.properties                                  message.properies(message名字可Q意取Q但要在配置)
***Action-validation.xml (配置的元素在package com.opensymphony.xwork2.validator.validators.default.xml?                          


lucas_y 2010-01-27 18:23 发表评论
]]>
patternshttp://www.aygfsteel.com/ysqwertys/archive/2010/01/25/310752.htmllucas_ylucas_yMon, 25 Jan 2010 09:35:00 GMThttp://www.aygfsteel.com/ysqwertys/archive/2010/01/25/310752.htmlhttp://www.aygfsteel.com/ysqwertys/comments/310752.htmlhttp://www.aygfsteel.com/ysqwertys/archive/2010/01/25/310752.html#Feedback0http://www.aygfsteel.com/ysqwertys/comments/commentRss/310752.htmlhttp://www.aygfsteel.com/ysqwertys/services/trackbacks/310752.html1.{略模式Q封装了变化Q算法)Q而且便利q行单元试Q可以通过自己的借口q行单元试Q,在实际情况中Qؓ了客户端减判断的压力q且降低耦合Q最好与单工厂模式结合,把选择判断写在context的构造方法里。考虑到健壮性,Q比如增加需求,有新的算法)用发机制。(反射Q反,E序员的快乐Q呵呵~Q?br />
持箋更新Q谢谢~



lucas_y 2010-01-25 17:35 发表评论
]]>
Spring Security3.0.1http://www.aygfsteel.com/ysqwertys/archive/2010/01/19/310102.htmllucas_ylucas_yTue, 19 Jan 2010 08:48:00 GMThttp://www.aygfsteel.com/ysqwertys/archive/2010/01/19/310102.htmlhttp://www.aygfsteel.com/ysqwertys/comments/310102.htmlhttp://www.aygfsteel.com/ysqwertys/archive/2010/01/19/310102.html#Feedback0http://www.aygfsteel.com/ysqwertys/comments/commentRss/310102.htmlhttp://www.aygfsteel.com/ysqwertys/services/trackbacks/310102.html阅读全文

lucas_y 2010-01-19 16:48 发表评论
]]>
վ֩ģ壺 Ľ| | ߷| ¡| | | | | ̨| | ÷| | | | | ػ| | | | | | | Į| | | ʯ| | | IJ| ɽ| | | ϼ| | Դ| | | | | ɽ| ˹|