java怎么调用.net接口redmine的接口

java(97)
这个BUG会在linux上导致cpu 100%,使得nio server/client不可用,具体的详情可以看这里 。令人失望的是这个BUG直到jdk 6u4才解决,sun的拖沓让人难以相信。这个BUG在server端容易出现,因为server端有频繁地接入断开连接。
&&& 使用jdk 6u4之前版本的nio框架都有这个隐患,除非你的框架很好地处理了这个可能的隐患。Grizzly的处理方式比较简单,也就是BUG报告里面提到的方式,在SelectionKey.cancel()之后马上进行了一次select调用将fd从poll(epoll)中移除:
this.selectionKey.cancel();
&&&&&&&&&&&&//&cancel&key,then&select&now&to&remove&file&descriptor
&&&&&&&&&&&&this.selector.selectNow();
&}&catch&(IOException&e)&{
&&&&&&&& onException(e);
&&&&&&& log.error(&Selector&selectNow&fail&,&e);
&&& 实际上这样的解决方式还是留有隐患的,因为key的取消和这个selectNow操作很可能跟Selector.select操作并发地在进行,在两个操作之间仍然留有一个极小的时间窗口可能发生这个BUG。因此,你需要更安全地方式处理这个问题,jetty的处理方式是这样,连续的select(timeout)操作没有阻塞并返回0,并且次数超过了一个指定阀值,那么就遍历整个key set,将key仍然有效并且interestOps等于0的所有key主动取消掉;如果在这次修正后,仍然继续出现select(timeout)不阻塞并且返回0的情况,那么就重新创建一个新的Selector,并将Old
Selector的有效channel和对应的key转移到新的Selector上,
& & & & & & & & & & long&before=
&&&&&&&&&&&&&&&&&&&&int&selected=selector.select(wait);
&&&&&&&&&&&&&&&&&&&&now&=&System.currentTimeMillis();
&&&&&&&&&&&&&&&&&&&&_idleTimeout.setNow(now);
&&&&&&&&&&&&&&&&&&&&_timeout.setNow(now);
&&&&&&&&&&&&&&&&&&&&//&Look&for&JVM&bugs
&&&&&&&&&&&&&&&&&&&&//&/bugdatabase/view_bug.do?bug_id=6403933
&&&&&&&&&&&&&&&&&&&&if&(__JVMBUG_THRESHHOLD&<span style="color:#&&&&selected==<span style="color:#&&&&wait&__JVMBUG_THRESHHOLD&&&&(now-before)&(wait/<span style="color:#)&)
&&&&&&&&&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&&&&&&&&&_jvmBug&#43;&#43;;
&&&&&&&&&&&&&&&&&&&&&&&&if&(_jvmBug&=(__JVMBUG_THRESHHOLD2))
&&&&&&&&&&&&&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&&&&&&&&&&&&&synchronized&(this)
&&&&&&&&&&&&&&&&&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&_lastJVMBug=
&&&&&&&&&&&&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
//&BLOODY&SUN&BUG&!!!&&Try&refreshing&the&entire&selector.
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&final&Selector&new_selector&=&Selector.open();
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&for&(SelectionKey&k:&selector.keys())
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&if&(!k.isValid()&||&k.interestOps()==<span style="color:#)
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&continue;
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&final&SelectableChannel&channel&=&k.channel();
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&final&Object&attachment&=&k.attachment();
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&if&(attachment==null)
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&addChange(channel);
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&else
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&addChange(channel,attachment);
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&_selector.close();
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&_selector=new_
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&_jvmBug=<span style="color:#;
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&return;
&&&&&&&&&&&&&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&&&&&&&&&&&&&else&if&(_jvmBug==__JVMBUG_THRESHHOLD&||&_jvmBug==__JVMBUG_THRESHHOLD1)
&&&&&&&&&&&&&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&&&&&&&&&&&&&//&Cancel&keys&with&0&interested&ops
&&&&&&&&&&&&&&&&&&&&&&&&&&&
for&(SelectionKey&k:&selector.keys())
&&&&&&&&&&&&&&&&&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&if&(k.isValid()&&k.interestOps()==<span style="color:#)
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&k.cancel();
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&&&&&&&&&&&&&&&&&return;
&&&&&&&&&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&&&&&&&&&else
&&&&&&&&&&&&&&&&&&&&&&&&_jvmBug=<span style="color:#;
&&& 这个方案能比较好的在jdk 6u4之前的版本上解决这个BUG可能导致的问题。Mina和Netty没有看到有处理这个BUG的代码,如果我看错了,请留言告诉我。Yanf4j一直采用的是grizzly的方式,准备加上jetty的处理方案。当然,最简单的方案就是升级你的JDK :D
nio还有几个严重的bug,在实际运行中碰到了,sun在u18才修复,而现在u18还没正式发布。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:743113次
积分:8160
积分:8160
排名:第1729名
原创:82篇
转载:399篇
评论:62条
(6)(5)(2)(2)(2)(2)(1)(4)(13)(8)(14)(3)(11)(9)(17)(28)(5)(1)(9)(82)(22)(6)(12)(21)(36)(4)(16)(27)(9)(15)(21)(24)(31)(1)(12)(2)(1)重载(overload):对于类的方法(包括从父类中继承的方法),方法名相同,参数列表不同的方法之间就构成了重载关系。这里有两个问题需要注意:
(1)&&&&&&&什么叫参数列表?参数列表又叫参数签名,指三样东西:参数的类型,参数的个数,参数的顺序。这三者只要有一个不同就叫做参数列表不同。
(2)&&&&&&&重载关系只能发生在同一个类中吗?非也。这时候你要深刻理解继承,要知道一个子类所拥有的成员除了自己显式写出来的以外,还有父类遗传下来的。所以子类中的某个方法和父类中继承下来的方法也可以发生重载的关系。
大家在使用的时候要紧扣定义,看方法之间是否是重载关系,不用管方法的修饰符和返回类型以及抛出的异常,只看方法名和参数列表。而且要记住,构造器也可以重载。
覆盖&(override):也叫重写,就是在当父类中的某些方法不能满足要求时,子类中改写父类的方法。当父类中的方法被覆盖了后,除非用super关键字,否则就无法再调用父类中的方法了。
发生覆盖的条件:
1、“三同一不低”&子类和父类的方法名称,参数列表,返回类型必须完全相同,而且子类方法的访问修饰符的权限不能比父类低。
2、子类方法不能抛出比父类方法更多的异常。即子类方法所抛出的异常必须和父类方法所抛出的异常一致,或者是其子类,或者什么也不抛出;
3、被覆盖的方法不能是final类型的。因为final修饰的方法是无法覆盖的。
4、被覆盖的方法不能为private。否则在其子类中只是新定义了一个方法,并没有对其进行覆盖。
5、被覆盖的方法不能为static。所以如果父类中的方法为静态的,而子类中的方法不是静态的,但是两个方法除了这一点外其他都满足覆盖条件,那么会发生编译错误。反之亦然。即使父类和子类中的方法都是静态的,并且满足覆盖条件,但是仍然不会发生覆盖,因为静态方法是在编译的时候把静态方法和类的引用类型进行匹配。
方法的覆盖和重载具有以下相同点:
都要求方法同名
都可以用于抽象方法和非抽象方法之间
方法的覆盖和重载具有以下不同点:
方法覆盖要求参数列表(参数签名)必须一致,而方法重载要求参数列表必须不一致。
方法覆盖要求返回类型必须一致,方法重载对此没有要求。
方法覆盖只能用于子类覆盖父类的方法,方法重载用于同一个类中的所有方法(包括从父类中继承而来的方法)
方法覆盖对方法的访问权限和抛出的异常有特殊的要求,而方法重载在这方面没有任何限制。
父类的一个方法只能被子类覆盖一次,而一个方法可以在所有的类中可以被重载多次。
另外,对于属性(成员变量)而言,是不能重载的,只能覆盖。
动态分派:覆盖
静态分派:重载
静态分配类型属于多分派类,动态分派类型属于单分派类型。
JAVA中的方法调用
Java程序设计语言提供了两种基本的方法:实例方法和类(或静态)方法。这两种方法的区别在于:[6]
1) 实例方法在被调用之前,需要一个实例,而类方法不需要
2) 实例方法使用动态(迟)绑定,而类方法使用静态(早)绑定
当Java虚拟机调用一个类方法时,它会基于对象引用的类型(通常在编译时可知)来选择所调用的方法。相反,当虚拟机调用一个实例方法时,它会基于对象实际的类(只能在运行时得知)来选择所调用的方法。
Java虚拟机使用两种不同的指令分别调用这两种方法。对于实例方法,使用指令,对于类方法,使用invokestatic指令。这两种指令如表所示:
Invokevirtual
Indexbyte1, indexbyte2
把objectref(对象引用)和args(参数)从栈中弹出,调用常量池索引指向的实例方法
Invokestatic
Indexbyte1, indexbyte2
把args从栈中弹出,调用常量池索引指向的类方法
尽管通常使用invokevirtual指令调用实例方法,但在某些特定的情况中,也会使用另外两种操作码——invokespecial和invokeinterface,如表所示
Invokespecial
Indexbyte1, indexbyte2
把objectref和args从栈中弹出,调用常量池索引指向的实例方法
Invokeinterface
Indexbyte1, indexbyte2
把objectref和args从栈中弹出,调用常量池索引指向的实例方法
当根据引用的类型来调用实例方法,而不是根据对象的类来调用的时候,通常使用invokespecial指令。这又分为三种情况:
1)实例初始化(&init&())方法
2)私有方法
3)使用super关键字所调用的方法
当给出一个接口的引用时,使用invokeinterface来调用一个实例方法。
Java虚拟机总是直接调用类初始化(&clinit&())方法,类的初始化方法永远不会被任何字节码调用。在Java虚拟机指令集中,没有任何调用&clinit&()方法的指令,如果class文件尝试使用指令来调用&clinit&()方法,会导致虚拟机抛出异常。
到方法的引用最初是符号化的。所有的调用指令(例如invokevirtual和invokestatic)都指向一个最初包含符号引用的常量池入口,当Java虚拟机遇到一条调用指令时,如果还没有解析符号引用,那么虚拟机把解析符号引用作为执行指令调用执行过程中的一部分。要解析一个符号引用,Java虚拟机要确定被符号化引用的方法,然后再用一个直接引用来代替符号引用。直接引用就如同偏移量指针一样,如果将来再次使用该引用,它可以使虚拟机更快地调用这个方法。
一旦解析了一个方法后,Java虚拟机就准备调用它。如果这个方法是一个实例方法,它必须在一个对象中被调用。对每一次实例方法的调用,虚拟机需要在栈里存在一个对象引用(objectref)。如果该方法需要参数,那么除了objectref,虚拟机还需要在栈中存在该方法所需要的参数(args)。如果这个方法是一个类方法,虚拟机不再需要objrectref,因为虚拟机不会在对象上调用一个类方法,栈中存在的将只有args。Objectref和args(或者在类方法的情况下只能args)必须在调用指令执行前,被其他指令压入所调用方法的操作数栈。
javap -v OverideDemo 执行代码如下:
如何实现分别调用的是override方法?原因在于invokervirtual指令根据对象的vtable在运行时定位method。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:308993次
积分:5390
积分:5390
排名:第3544名
原创:209篇
转载:167篇
评论:22条
(2)(1)(2)(1)(1)(1)(1)(9)(4)(15)(5)(1)(2)(4)(5)(6)(5)(5)(3)(7)(4)(14)(5)(2)(9)(7)(11)(6)(2)(6)(12)(20)(9)(15)(33)(37)(20)(19)(20)(1)(2)(27)(1)(2)(1)(6)(1)(5)(1)(3)(1)(4)(3)(1)&&&&REDMINE java API
&REDMINE java API
主要为对redmine进行接口开发使用,API为JAVA版的
若举报审核通过,可奖励20下载分
被举报人:
wyunsh5168
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
VIP下载&&免积分60元/年(1200次)
您可能还需要
Q.为什么我点的下载下不了,但积分却被扣了
A. 由于下载人数众多,下载服务器做了并发的限制。若发现下载不了,请稍后再试,多次下载是不会重复扣分的。
Q.我的积分不多了,如何获取积分?
A. 获得积分,详细见。
完成任务获取积分。
论坛可用分兑换下载积分。
第一次绑定手机,将获得5个C币,C币可。
关注并绑定CSDNID,送10个下载分
下载资源意味着您已经同意遵守以下协议
资源的所有权益归上传用户所有
未经权益所有人同意,不得将资源中的内容挪作商业或盈利用途
CSDN下载频道仅提供交流平台,并不能对任何下载资源负责
下载资源中如有侵权或不适当内容,
本站不保证本站提供的资源的准确性,安全性和完整性,同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
课程资源下载排行
您当前C币:0&&&可兑换 0 下载积分
兑换下载分:&
消耗C币:0&
立即兑换&&
兑换成功你当前的下载分为 。前去下载资源
你下载资源过于频繁,请输入验证码
如何快速获得积分?
你已经下载过该资源,再次下载不需要扣除积分
REDMINE java API
所需积分:1
剩余积分:0
扫描微信二维码精彩活动、课程更新抢先知
VIP会员,免积分下载
会员到期时间:日
剩余下载次数:1000
REDMINE java API
剩余次数:&&&&有效期截止到:
你还不是VIP会员VIP会员享免积分 . 专属通道极速下载
VIP下载次数已满VIP会员享免积分 . 专属通道极速下载,请继续开通VIP会员
你的VIP会员已过期VIP会员享免积分 . 专属通道极速下载,请继续开通VIP会员您所在的位置: &
Web的项目管理工具Redmine使用手册
Web的项目管理工具Redmine使用手册
kobe_brian
我们将介绍的是Web的项目管理工具Redmine使用方法,基于Web的此类软件在开源软件中是最成熟的,也是应用最广泛的。
给公司决定一款基于Web的项目管理的软件。
因为,基于Web的此类软件在开源软件中是最成熟的,也是应用最广泛的。当然,我们也快速的将下面几款软件排除在候选列表中:
Kforge, Project HQ, ProjectPier ,主要是因为这些软件大多只是由一些小项目组维护,可持续性无法保证;
Collabtive, Feng Project, 而这两款软件虽然也挺有名,但发展时间太短(小于3年),还有待观察;
Launchpad 和 Trac 最终也被加入到候选列表中,最终候选列表为:
Codendi,dotProject,Launchpad,Project.net,Redmine,Trac.
在具体对比各软件的细节之前,我们先给出我们的最终对比结果。下表概述了所有候选软件的总体得分情况。为了更简单直观的介绍这些软件的特点,我们继续缩小软件列表的范围,只选择那些得分比较高的软件进行具体介绍,例如,dotProject, Launchpad, Redmine 和 Trac。
让我们先来看看这些项目发展的可持续性怎样?
项目可持续性是软件如下特性的重要保障:成熟度 (所有候选软件均超过3年), 稳定性 (所有均达稳定状态,并长期维护,dotProject显示出项目开发活跃度在逐渐减少,参考 Ohloh 和 Melquiades ),流行度 (Launchpad 和 Trac 都非常流行,而dotProject 和 Redmine 则正在获得人们更多的关注),相关书籍 (除了Launchpad,市面上都有这些软件的相关书籍,当然,Redmine的书籍 是日文版的。) ,社区发展情况和项目领导团队 (dotProject 和 Trac 开发团队相对较小,而Redmine相对较大,Launchpad则有一个庞大的开发团队;dotProject 和 Redmine 都是社区驱动的项目,而Trac和Launchpad则是以公司主导的。
那么,它们的商业部署能力怎样呢?
项目商业部署能力主要考虑的是软件培训和商业应用的支持 (dotProject 是唯一提供一系列培训服务的软件;dotProject 和 Redmine 也都提供社区支持,而 Launchpad 的商业支持是基于哪些配托管的项目的订阅服务)。所有项目都有完备的文档,但都只是英语。所有项目都有自己完整的QA流程,使用各种流行的工具,但dotProject项目对bug的处理速度较慢。所有软件的源代码中有注释的代码都超过20%,Trac和Launchpad甚至达到25%左右。
项目发展策略 co涵盖4个不同的方面:许可协议(License)、发展路线图(Roadmap)、代码改进和项目赞助者。所有项目都采用开源的许可协议(Launchpad使用AGPL v3,其它的软件都使用GPL)。我们认为,社区主导的开源软件更有利于吸引来自外部的贡献。所有项目的有代码改进的意愿,但相关进程在dotProject项目中不明确。最后,也是非常重要的一点是,除了dotProject项目,所有对比的选手都发布了自己详细的发展路线图。
我们首先将dotProject软件排除在我们推荐的工具之外,除了以上比对结果外,该软件还缺少对SCM的整合,这样影响它作为一个完整方案的应用。当然,对于某些特定需求的用户,如果该软件的一些特性符合用户的需要,则另当别论。
Launchpad 的功能特性最适合那些将该软件部署成为软件托管平台的用户的需求。但安装该软件的开源版本则着实是一场恶魔。但即使实现了使用运行在Oracle VirtualBox上的Launchpad虚拟化部署,由于一些技术性原因(bzr launchpad-login &username& 仍然要在launchpad.net上查找用户名,这样,用户将不能使用一个OpenID服务来注册用户,等等),简化的梦想还是无法成真。 此外,Launchpad有争议的向自由软件的转型看似也困难重重,显然,Canonical公司人员的说法是真实的:
也许,Launchpad更适合被采用作为一个内部开发系统,但是,如果你用足够多的敲打,也许你可以将一个方口的木桩打入一个圆形的洞中。
Trac 目前还无法同时管理多个项目,但如果作为一个单一项目的管理工具,它是一个很好的选择。大家可以使用 BitNami 和 Turnkey virtual appliance。
Redmine 可以同时管理多个项目,而且它提供多种代码库管理工具的支持(CVS, Bazaar, Darcs, Git,Mercurial 和 Subversion), LDAP 认证的支持, 多语言支持, 基于角色的访问控制和灵活的工作流引擎。
Redmine有着丰富的插件库,大部分可以在github上找到,而且Redmine的插件教程也非常简单有效。Redmine是一个简单和易扩展的平台,使用Ruby on Rails开发,它的设计借鉴了Trac的许多方法。
综上所述,选择了Redmine为我公司的项目管理软件,进行项目管理、知识分享、任务分配和KPI考核。
原文链接:/kobe_brian/blog/item/8d0c00e92801.html
【编辑推荐】
【责任编辑: TEL:(010)】
关于的更多文章
做Web开发已经有5年多了,现在觉得如果想让自己在技术上有所提高
网友评论TOP5
作为移动开发者,WOT2016移动互联网技术峰会,绝对有你不得不来的理由。
大数据时代来临,Hadoop等已成为炙手可热的技术词汇。
一个软件架构师或者系统架构师陈述软件构架以作为满足
本专题主要推荐了10款Java开发者常用的测试工具。
本书采用“如何解决问题”的方式阐述Ruby编程,涵盖了以下内容:Ruby术语和基本原理;数字、字符串等低级数据类型的操作;正则表
51CTO旗下网站

我要回帖

更多关于 java中怎么调用接口 的文章

 

随机推荐