仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 898|回复: 18
打印 上一主题 下一主题

[学习教程] JAVA教程之进修条记-标签利用(J2SE5.0)中的元数据...

[复制链接]
小女巫 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:41:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
认真的记,感觉很紧张根本就没有时间和能力,来对技术知识点进行思考。这样课下就只能对知识进行简单的理解,其实简单的理解就是记忆课堂上讲的知识点,j2se|条记|数据办法和正文
要把你的JAVA代码和AOP分离起来,可使用一些标签,就像新的JDK5.0版本中的元数据和XDoclet
。关于你的JAVA办法,就有点像利用synchronized一样。当你把你的办法标注为synchronized,就标明
你高数JVM你的这个办法在实行的利用是必要同步的。正文标签同意你界说新的关头词用来处置你本人
的特别举动。AOP就使你有了把这些织进到你的使用中,以使使用能够实行的才能。

让我们看看我们利用本人界说的标签@Oneway来使一个办法在背景的别的一个线程实行。
importorg.jboss.aspects.Oneway;

publicclassFoo
{
@OnewaypublicstaticvoidsomeMethod(){...}

publicstaticvoidmain(String[]args)
{
someMethod();//executesinbackground
}
}

当我们的MAIN办法挪用Msomeethod办法的时分,肇端它的实行是和MAIN办法平行的别的一个同步办法中
实行。
要实行这个类,我们必需起首界说本人的标签到JAVA语法中。
packageorg.jboss.aspects;

importjava.lang.annotation.ElementType;
importjava.lang.annotation.Target;

@Target({ElementType.METHOD})
public@interfaceOneway{}
这就够了。@Target能够限定你的标签的使用局限。在这里你的Oneway就只能被用于办法。下面这些
是地道的J2SE5.0内里使用。

上面的是我们的方面,用来实行@Oneway的举动。

packageorg.jboss.aspects;

publicOnewayAspect
{
privatestaticclassTaskimplementsRunnable
{
privateMethodInvocationinvocation;

publicTask(MethodInvocationinvocation)
{
this.invocation=invocation;
}
publicvoidrun()
{
try{invocation.invokeNext();}
catch(Throwableignore){}
}
}


publicObjectoneway(MethodInvocationinvocation)throwsThrowable
{
MethodInvocationcopy=invocation.copy();
Threadt=newThread(newTask(copy));
t.setDaemon(false);
t.start();
returnnull;
}
}

我们的方面就是这么复杂。
最初就是我们要界说切进点

<aop>
<aspectclass="org.jboss.aspects.OnewayAspect"/>

<bindpointcut="execution(void*->@org.jboss.Oneway(..))">
<advicename="oneway"
aspect="org.jboss.aspects.OnewayAspect"/>
</bind>
</aop>

这个界说标明了只要是void的被标注为@Oneway的办法才被我们OnewayAspect实行。如许就能够把你
别的使用加上往,这就是复杂,明晰,便利的JAVA预言。

字段和正文
经由过程AOP我们也能够界说我们本人的字段意义,比方我们能够界说一个ThreadLocal的字段,假如
利用之前的办法,我们就必需利用良多GET()和SET()才干完成。而如今我们能够间接界说一个
@ThreadLocal的范例。

要利用这个新的范例能够像如许:
importorg.jboss.aspects.Threadbased;

publicclassFoo
{
@Threadbasedprivateintcounter;
}

起首我们要界说这个范例
packageorg.jboss.aspects;

importjava.lang.annotation.ElementType;
importjava.lang.annotation.Target;

@Target({ElementType.FIELD})
public@interfaceThreadbased{}

如许就能够了,如今一切被标注为@Threadbased的字段都将被使用到这里来,但这里限定了此范例
只能用户字段。

上面就是完成我们的方面来做详细的事情。

packageorg.jboss.aspects;

importorg.jboss.aop.joinpoint.*;
importjava.lang.reflect.Field;

publicclassThreadbasedAspect
{
privateThreadLocalthreadbased=newThreadLocal();

publicObjectaccess(FieldReadInvocationinvocation)
throwsThrowable
{
//justincasewehaveaprimitive,
//wecantreturnnull
if(threadbased.get()==null)
returninvocation.invokeNext();
returnthreadbased.get();
}

publicObjectaccess(FieldWriteInvocationinvocation)
throwsThrowable
{
threadbased.set(invocation.getValue());
returnnull;
}
}
最初界说切进点
<aop>
<aspectclass="org.jboss.aspects.ThreadbasedAspect"
scope="PER_JOINPOINT"/>
<bindpointcut="field(**->@org.jboss.aspects.Threadbased)">
<advicename="access"
aspect="org.jboss.aspects.ThreadbasedAspect"/>
</bind>
</aop>

我们的但愿是为每一个字段都举行实例化的时分使之成为一个Threadlocal的静态变量,以是在
界说切进点的时分我们利用了PER_JOINPOINT,让JBOSSAOP晓得为我们每一个字段都要实例化
一个新的ThreadLocal,不然JBOSSAOP只会我们实例化一个ThreadbasedAspect,假如如许就
会让一切的字段共享一个Threadlocal,这分明不是我们所希冀的。

和下面一样,在这里我们看到了洁净的,简单集成的办法完成了界说新的JAVA范例。



但是对于JAVA技术类的学习,我觉得大课堂反而会影响自身独立思考的过程,因为上课的时候,老师讲课的速度很快为了不遗漏要点,通常会仔细的听,
爱飞 该用户已被删除
沙发
发表于 2015-1-21 12:47:38 | 只看该作者
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
冷月葬花魂 该用户已被删除
板凳
发表于 2015-1-24 15:56:04 | 只看该作者
你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。
透明 该用户已被删除
地板
发表于 2015-1-25 20:14:53 | 只看该作者
至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。
分手快乐 该用户已被删除
5#
发表于 2015-1-27 06:15:29 | 只看该作者
Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站
变相怪杰 该用户已被删除
6#
发表于 2015-2-2 05:19:57 | 只看该作者
Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站
山那边是海 该用户已被删除
7#
发表于 2015-2-5 21:58:16 | 只看该作者
J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。
飘灵儿 该用户已被删除
8#
发表于 2015-2-7 09:55:03 | 只看该作者
你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。
柔情似水 该用户已被删除
9#
发表于 2015-2-20 00:55:38 | 只看该作者
Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
兰色精灵 该用户已被删除
10#
发表于 2015-2-28 22:31:46 | 只看该作者
[url]http://www.jdon.com/[/url]去下载,或到同济技术论坛的服务器[url]ftp://nro.shtdu.edu.cn[/url]去下,安装上有什么问题,可以到论坛上去提问。
小妖女 该用户已被删除
11#
发表于 2015-3-7 06:17:12 | 只看该作者
Java是一种计算机编程语言,拥有跨平台、面向对java
admin 该用户已被删除
12#
发表于 2015-3-14 12:18:54 | 只看该作者
象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
莫相离 该用户已被删除
13#
发表于 2015-3-15 14:30:00 | 只看该作者
至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。
若相依 该用户已被删除
14#
发表于 2015-3-19 23:29:39 | 只看该作者
一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。
若天明 该用户已被删除
15#
发表于 2015-4-3 03:40:46 | 只看该作者
任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言
乐观 该用户已被删除
16#
发表于 2015-4-3 22:03:30 | 只看该作者
学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。
只想知道 该用户已被删除
17#
发表于 2015-4-12 17:02:36 | 只看该作者
我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。
不帅 该用户已被删除
18#
发表于 2015-4-12 20:15:37 | 只看该作者
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
老尸 该用户已被删除
19#
发表于 2015-4-20 23:16:03 | 只看该作者
是一种为 Internet发展的计算机语言
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 21:29

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表