问题

java_zhaidp 2009-06-03 04:40:50

jsp是单用户多线程的。
ArrayList是不安全的。
---------------------------------------------------------------------
<%
ArrayList arr = new ArrayList();//线程安全?
%>
...全文
110 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
j1223jesus 2009-06-08
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 sprite26 的回复:]
类 速度 多线程安全性 适用方面
Vector 慢 安全 提供了线程序同 步,在多线程是安全的.
ArrayList 快 不安全 多线程不安全
二者各有特点,要看你怎么取舍.
日常编码的时候,一般都是单线程程序,采用arraylist较好.
在涉及到网络编程.进程合作的时候,多线程共享变量的时候,采用vector好,举个例子,数据库缓冲池采用vector而不是arraylist.
[/Quote]
up
Yedy2000 2009-06-08
  • 打赏
  • 举报
回复
mark
fyofmee 2009-06-07
  • 打赏
  • 举报
回复
看有没有线程要求~~~
izard999 2009-06-07
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 sprite26 的回复:]
类 速度 多线程安全性 适用方面
Vector 慢 安全 提供了线程序同 步,在多线程是安全的.
ArrayList 快 不安全 多线程不安全
二者各有特点,要看你怎么取舍.
日常编码的时候,一般都是单线程程序,采用arraylist较好.
在涉及到网络编程.进程合作的时候,多线程共享变量的时候,采用vector好,举个例子,数据库缓冲池采用vector而不是arraylist.
[/Quote]
正点..UP
qinyupandeng 2009-06-07
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 java_zhaidp 的回复:]
感谢诸位!
ArrayList实现不是同步的,是何意?
如果 <%...%>中的线程安全,是否可以认为 <%....%>无线程问题?
[/Quote]

ArrayList实现不是同步的,是何意?
在ArrayList做多线程时,不安全!
如果 <%...%>中的线程安全,是否可以认为 <%....%>无线程问题?
对!但在<%!...%>就有问题了!
java_zhaidp 2009-06-07
  • 打赏
  • 举报
回复
-----
java_zhaidp 2009-06-06
  • 打赏
  • 举报
回复
20楼,谢!
---------------------------------------------------------------------------------------------------------------------------------------------
注意,此实现不是同步的。如果多个线程同时访问一个 ArrayList 实例,而其中至少一个线程从结构上修改了列表,那么它必须 保持外部同步。(结构上的修改是指任何添加或删除一个或多个元素的操作,或者显式调整底层数组的大小;仅仅设置元素的值不是结构上的修改。)这一般通过对自然封装该列表的对象进行同步操作来完成。如果不存在这样的对象,则应该使用 Collections.synchronizedList 方法将该列表“包装”起来。这最好在创建时完成,以防止意外对列表进行不同步的访问:

List list = Collections.synchronizedList(new ArrayList(...));
此类的 iterator 和 listIterator 方法返回的迭代器是快速失败的:在创建迭代器之后,除非通过迭代器自身的 remove 或 add 方法从结构上对列表进行修改,否则在任何时间以任何方式对列表进行修改,迭代器都会抛出 ConcurrentModificationException。因此,面对并发的修改,迭代器很快就会完全失败,而不是冒着在将来某个不确定时间发生任意不确定行为的风险。

注意,迭代器的快速失败行为无法得到保证,因为一般来说,不可能对是否出现不同步并发修改做出任何硬性保证。快速失败迭代器会尽最大努力抛出 ConcurrentModificationException。因此,为提高这类迭代器的正确性而编写一个依赖于此异常的程序是错误的做法:迭代器的快速失败行为应该仅用于检测 bug。

---------何意?

java_zhaidp 2009-06-05
  • 打赏
  • 举报
回复
感谢诸位!
ArrayList实现不是同步的,是何意?
如果<%...%>中的线程安全,是否可以认为<%....%>无线程问题?
qiheia 2009-06-05
  • 打赏
  • 举报
回复
ArrayList的线程安全与不安全对比演示 


import java.util.ArrayList;

import java.util.Collections;

import java.util.List;

import java.util.Random;

public class ThreadSafeDemo {

public static int demo(final List list, final int testCount) throws InterruptedException {

ThreadGroup group = new ThreadGroup(list.getClass().getName() + "@" + list.hashCode());

final Random rand = new Random();



Runnable listAppender = new Runnable() {

public void run() {

try {

Thread.sleep(rand.nextInt(2));

} catch (InterruptedException e) {

return;

}

list.add("0");

}

};



for (int i = 0; i < testCount; i++) {

new Thread(group, listAppender, "InsertList-" + i).start();

}



while (group.activeCount() > 0) {

Thread.sleep(10);

}



return list.size();

}

public static void main(String[] args) throws InterruptedException {

List unsafeList = new ArrayList();

List safeList = Collections.synchronizedList(new ArrayList());

final int N = 10000;

for (int i = 0; i < 10; i++) {

unsafeList.clear();

safeList.clear();

int unsafeSize = demo(unsafeList, N);

int safeSize = demo(safeList, N);

System.out.println("unsafe/safe: " + unsafeSize + "/" + safeSize);

}

}

}
shibenjie 2009-06-05
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 java_zhaidp 的回复:]
感谢诸位!
ArrayList实现不是同步的,是何意?
如果 <%...%>中的线程安全,是否可以认为 <%....%>无线程问题?
[/Quote]


得到同步的list
List list = Collections.synchronizedList(new ArrayList(...));
ArrayList实现不是同步的,是何意?
多线程操作ArrayList的时候会出错
blliy117 2009-06-04
  • 打赏
  • 举报
回复


jsp是像是线程级别的,如果你里边没有用到共用的,需要同步的资源,你大可放心安全问题
blliy117 2009-06-04
  • 打赏
  • 举报
回复
可以告诉你
如果是jsp里
那么你这段代码绝对是安全的
yyandlh 2009-06-04
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 sprite26 的回复:]
类        速度    多线程安全性  适用方面
Vector    慢        安全        提供了线程序同 步,在多线程是安全的.
ArrayList  快        不安全      多线程不安全
二者各有特点,要看你怎么取舍.
日常编码的时候,一般都是单线程程序,采用arraylist较好.
在涉及到网络编程.进程合作的时候,多线程共享变量的时候,采用vector好,举个例子,数据库缓冲池采用vector而不是arraylist.

[/Quote]
顶!
zjx2388 2009-06-04
  • 打赏
  • 举报
回复
还不知道lz的问题是什么?

看来我真ben了啊...
weiluo12 2009-06-04
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 sprite26 的回复:]
类 速度 多线程安全性 适用方面
Vector 慢 安全 提供了线程序同 步,在多线程是安全的.
ArrayList 快 不安全 多线程不安全
二者各有特点,要看你怎么取舍.
日常编码的时候,一般都是单线程程序,采用arraylist较好.
在涉及到网络编程.进程合作的时候,多线程共享变量的时候,采用vector好,举个例子,数据库缓冲池采用vector而不是arraylist.
[/Quote]
UP
adown 2009-06-04
  • 打赏
  • 举报
回复
同意4楼的解释!

注意,此实现不是同步的。如果多个线程同时访问一个 ArrayList 实例,而其中至少一个线程从结构上修改了列表,那么它必须 保持外部同步。(结构上的修改是指任何添加或删除一个或多个元素的操作,或者显式调整底层数组的大小;仅仅设置元素的值不是结构上的修改。)这一般通过对自然封装该列表的对象进行同步操作来完成。如果不存在这样的对象,则应该使用 Collections.synchronizedList 方法将该列表“包装”起来。这最好在创建时完成,以防止意外对列表进行不同步的访问:

List list = Collections.synchronizedList(new ArrayList(...));


此类的 iterator 和 listIterator 方法返回的迭代器是快速失败的:在创建迭代器之后,除非通过迭代器自身的 remove 或 add 方法从结构上对列表进行修改,否则在任何时间以任何方式对列表进行修改,迭代器都会抛出 ConcurrentModificationException。因此,面对并发的修改,迭代器很快就会完全失败,而不是冒着在将来某个不确定时间发生任意不确定行为的风险。

引用API原文。
pxjjava 2009-06-04
  • 打赏
  • 举报
回复
说的都很好...我没研究过这个..学习学习.
ty_seven 2009-06-04
  • 打赏
  • 举报
回复
<%ArrayList arr = new ArrayList();%>安全
<%!ArrayList arr = new ArrayList();%>不安全
money8899 2009-06-04
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 java_zhaidp 的回复:]
我的理解:
因为jsp为每个请求创建一个线程,
所以jsp内arrayList对象从new到释放都在一个线程内,
因此,
<%
ArrayList arr = new ArrayList();//线程安全?
%>
是安全的。
因为外层是“安全的”,所以内层的arr是安全的。


但,CS时,如果没有特意的线程控制,实例对象的赋值可能会已有影响。
这种影响只是对于“实例对象的赋值”这一层面。

[/Quote]
有道理
java_zhaidp 2009-06-04
  • 打赏
  • 举报
回复
我的理解:
因为jsp为每个请求创建一个线程,
所以jsp内arrayList对象从new到释放都在一个线程内,
因此,
<%
ArrayList arr = new ArrayList();//线程安全?
%>
是安全的。
因为外层是“安全的”,所以内层的arr是安全的。


但,CS时,如果没有特意的线程控制,实例对象的赋值可能会已有影响。
这种影响只是对于“实例对象的赋值”这一层面。
在执行arrayList的function时,因为function是安全的,所以无论外层环境如何,arrayList的function一定是安全的。
加载更多回复(6)
《JIRA 从入门到精通》,doc 格式,大小 2.9MB。图文并茂,手把手教你学习 JIRA。 内容预览: JIRA入门到精通 ——hjjlearning,2008.06.27 第一章、 JIRA介绍 跟踪并管理在项目开发和维护过程中出现的问题(如:缺陷,新特性,任务,改进等)是项目管理很重要的任务,但是很少有团队能做的很好。JIRA作为一个专业的问题跟踪系统可以帮助您把缺陷管理起来,让跟踪和管理在项目中发现的问题变得简单,而且充分利用JIRA的灵活配置和扩展性,可以将JIRA作为一个项目管理系统或者IT支持系统。 JIRA特性 1、 管理缺陷,新特性,任务,改进或者其他任何问题 2、 人性化使用的用户界面 3、 灵活的工作流定制 4、 全文搜索和强大的过滤器 5、 企业级的权限和安全控制 6、 非常灵活的邮件通知配置 7、 可以创建子任务 8、 方便的扩展及与其他系统集成:包括email、LDAP和源码控制工具等 9、 丰富的插件库 10、 项目类别和组件/模块管理 11、 可以在几乎所有硬件,操作系统和数据库平台运行 JIRA角色: JIRA作为一个缺陷跟踪管理系统,可以被企业管理人员,项目管理人员,开发人员,分析人员,测试人员和其他人员所广泛使用。 1、 管理人员: 根据JIRA系统提供的数据,更加准确地了解项目的开发质量和状态,以及整个团队的工作效率 2、 项目管理者 可以针对登记进JIRA系统中问题,进行评估,分配缺陷;还可以通过JIRA系统的统计报告了解项目进展情况以及团队的工作量,工作效率等信息。 3、 开发人员 在JIRA系统中查看分配给自己的问题,及时进行处理,填写处理情况并提交工作量记录。 4、 测试人员 根据测试情况,在JIRA系统中及时快速的记录问题并对开发人员处理后的问题进行验证和跟踪。 第二章、 JIRA安装 JIRA是一个简单易用的Issue管理和跟踪的工具,运行在JAVA平台上。下载和安装都很容易,按照安装文档,只需要十几分钟就可以搞定,而且还可以为JIRA配置单独的外包数据库(可以使用的数据库有MySQL、MS SQL、Oracle等)。 安装好之后就首先要在服务器上通过http://localhost:8080来对服务进行配置(8080是jira的缺省端口)。具体经过三个配置步骤就完成了: 第一个步骤是配置JIRA系统的属性: 第二步骤是配置JIRA系统管理员的信息: 第三步是配置JIRA系统的邮件通知参数 第三章、 JIRA管理使用 一、 Projects:项目 1、Projects—> Projects点击进入到项目列表,点击ADD Project后输入项目名称(name),关键字(key),选择开发项目负责人(lead Developer),填写描述(Description),通知计划(Notification Scheme),许可计划(Permission Scheme:)和问题安全策略(Issue Security Scheme)如图所示: 2、Project Categories点击进入到项目类别,如下图所示,填入新项目类别名称和描述。 二、 Users&Groups 1、 User Browser:用户管理,在页面中可以看到所有注册的用户,可以根据条件查询特定注册用户。如下图: 单击“Add User”,添加新用户,输入相关用户名,密码,邮箱等,如下图: 点击create后,可以设置注册用户的权限组,修改用户信息,或更新用户密码,删除用户等操作。如图: 单击Edit Groups可以把注册用户加入到其他相关的组中 2、 Group Browser:组管理,管理员可以自己添加相应的组然后进行权限,注册用户配置。 三、 Global Settings 1、 附件设置: Global Settings—>Attachments,点击图中的Edit Configuration进行附件的相关设置。 2、 首页面板设置: Global Settings—>Defalut Dashboard,可以进入系统默认的面板进行设置。 (1) 单击“增加”可以在左侧或右侧面板中增加想要显示的栏目: (2) ⑵选中某个栏目,单击“修改”可以修改其设置; (3) ⑶选中某个栏目,单击“Copy”可以复制一个栏目; (4) ⑷选中某个栏目,单击“删除”可以将面板中的栏目删除; (5) ⑸unselect 是取消对某个栏目的选择。 另外,对于首页面板的设置,也可以通过点击首页右上角的 管理门户页 进行新增面板: 点击“增加”后就建立了一个新的首页显示面板,点击次面板对应操作中的 详细配置 进行 面板内容设置后,点击 返回 dashboard 此面板即可生效。若要恢复系统默认的面板设置, 需要点击首页右上角的 管理门户页,在新的页面中点击 复原缺省,即可恢复。 3、 一般性设置 Global Settings—> General Configuration 进入页面,点击页面底端的 EditConfiguration即可进行设置: 4、 全局性权限 Global Settings—>Global Permissions,这里设置的权限适用于系统内所有的项目,但与某个项目所设定的特殊权限无关,某个项目可以通过 Permission Schemes 设定其特定的权 限。 另外,可以通过下图选择相应的权限并赋予某个组来增加这个组所拥有的权限。 5、 问题链接 Global Settings—> lssue Linking 进入页面后可以点击“Activate”激活此功能,然后 可以新建问题链接类型: 链接类型建立之后显示如下: 此时,在某个问题的详细显示页面就会出现“链接”到其他问题这样的字段,如图: 链接建立后,在此问题页面会显示: 单击图中链接的问题,会跳转到EW-12的问题页面,该页面内同样会有链接问题的显示: 6、 外观与样式: Global Settings—>Look and Feel,设置系统的Logo,Colours以及Date/Time Formats. 7、 邮件服务设置: Global Settings—>Mail Servers,进入邮件服务设置页面,如图: 点击图中的“编辑”可以更改邮件服务器地址、端口以及默认发送邮件地址等信息。点击 Send a Test Email 可以测试邮件服务是否可以正常。 8、 子任务设置: Global Settings—>Sub-Tasks,进入设置页面,如图: 此时,在某个问题的详细显示页面就会出现“创建”子任务这样的字段,如图: 单击图中的“创建子任务”即可新建一个issue。 注:此功能在 bug 管理流程中一般不使用,因为提交 bug 不存在嵌套,应该本着“单个问题 单个提交”的原则。 9、 事件跟踪设置 Global Settings—>Time Tracking,可以设置时间跟踪机制,如图: 点击图中的“Activate”是该功能生效。此时,在新建问题的时候,在页面最下端就会出现如下内容 这样新建问题后,在该问题的页面内就会增加了估算时间这一项,如图: 通过此功能,可以评估工作量。(建议:此项由项目经理填写。) 10、 用户默认设置 Global Settings—>User Defaults ,可以设置用户收到通知邮件的格式(text/html),查询 问题时页面显示的最多问题数以及用户自身发生改变时是否能收到通知邮件,如图: 点击页面中的 Edit default values 进行设置, 设置完成,点击更新,进入新的页面: 11、 工作流 Global Settings—>Workflows,点击Workflows进入到页面,如下图 上面图中已经存在一个默认的jira工作流和一个创建好的develop flows工作流,默认jira工作流是不可以删除的。下面创建一个新的工作流步骤: 注:制作工作流最重要的是根据自己公司的测试规范制定,有的可能比较复杂,有点可能比较简单,适合的才是最好的。 工作流图画出以后,下面就是根据图进行增加工作流了: 1、入工作流name和description,如下图: 2、点击add后,,如下图页面,点击workflows工作流那行的steps链接 3、点击steps链接后,进入下面页面,然后根据 新建打开 打开指派 打开推迟 打开已解决 打开不是问题 推迟指派 指派已解决 已解决重开 上面的状态都是Issue Settings—>Statuses中进行定义状态的。 4、到workflows进行页面设置: 5、 在上图先按照工作流图进行添加完成: 6、 添加完成后,进行状态转变设置,在下图中,点击Add Transition按钮 进入下页面 其他的按照上面进行操作。 7、 Transition view: 这里总共有四个选项 NO VIEW FOR transition 事务触发后不会有任何页面跳出 Default Screen 跳出一个和创建BUG差不多的页面 Resolve Issue Screen 跳出一个解决问题的页面 Workflow Screen 跳出一个问题分配的页面 8、 工作流设置完成后,还要在项目中应用到该工作流才算完成。 新建一个项目:在Projects—>Projects页面中,点击Add Project 填写完成后。 点击图中选择的”select scheme” 选择刚刚创建的scheme,点击Associate按钮,进入第二步骤 在次点击Associate按钮,OK,工作流已经配置到”测试”项目中去了 注:不同版本的JIRA可能有些操作步骤不同,但大致情况是这样一个流程。 四、 Schemes 1、 安全策略: Schemes—>Issue Security Schemes—>Add Issue Security Scheme ,输入具体的安全设置名称(name)及详细描述(description)即可,其中详细描述为可选项。 新增后可点击Security Levels(或安全设置的名称),设置不同的安全级别,如图所示: 单击右侧的增加可以设置处于某个安全级别的人员或组,如图所示: 单击 Default 可以将 jira 默认的安全级别改成当前设置的级别,单击之后可以在安全级别 设置的上方看到 Change default security level to "None" 的字样。 另外此处设置了安全级别要应用到项目中,在新建项目的时候或者建好项目之后可以更改。 2、 权限设置 Schemes—>Permission Schemes(很重要的一步)(在此之前可能需要新建相关的组,比如:开发组,测试组,市场组等,这样方便赋予权限) 点击Add Permission Scheme,新增一权限设置,或直接点击已有的项目权限进行copy,但记得要修改名称。新增后,点击旁边的Permissions进行编辑,具体设置如下: 3、 通知设置 Schemes—>Notification Schemes,单击Add Notification Scheme进行新增权限,也可以直接点击copy复制系统默认的通知设置,然后在里面进行更改。(建议不要更改系统默认的设置),添加完通知设置之后,点击通知设置的名称或点击右侧的Notifications即可进行通知的具体设置。 4、 工作流计划 Schemes—>Workflow Schemes,单击Add workflow scheme 来增加工作流设置以便与项目进行关联,如图: 点击增加即可创建一个工作流的设置,下面需要为这个设置指派一个工作流: 单击图中的assign a workflow,选择问题类型,选择相应的工作流,单击“增加”: 这样就建立了一个新的工作流设置,这样在新建项目的时候就可以通过这个设置将我们自己定义的工作流与项目联系到一起了。 如果想要讲图中的inactive 状态变成active,必须将设置与项目关联起来就可以。 五、 Issue Fields: 1、 自定义字段 Issue Fields—>Custom Fields,自定义页面内显示的字段。 单击页面内的Add Custom Field 可以进行自定义字段的添加,选择图中某一类型的字段。单击“Next”,如图: 在下图中字段名称对应文本框内填写需要添加字段的名称,并给予描述: 在此处选择添加字段所使用的模板: 选择此字段所要应用到的问题类型: 选择将此字段设置作为全局设置或是只针对某个项目: 单击“Finish”完成设置。在如下页面选择字段所显示的页面: 单击“更新”完成设置。设置前后页面比较: 2、 字段设置: Issue Fields—>Field Configurations,可以自己增加,也可以复制原有的进行修改,如图: 新增字段后如下: 注:此设置需与“Field Configuration Schemes”中的策略关联才可以生效。 3、 字段设置策略 Issue Fields—>Field Configuration Schemes,通过此处可以自定义添加或复制原有策略来增加新的策略,从而可以将所设置的字段与项目关联起来,如图: 4、 问题导航栏 Issue Fields—>Navigator Columns,通过此处可以增加或隐藏现有导航栏内的显示内容,也可调整前后顺序,如图: 六、 Issue Settings 1、 Issue Types:问题类型 Issue Settings—> Issue Types,通过配置可以设置出不同的问题类型,默认的问题类型有4种如下图: 在Add New Issue Type下面输入name和描述,就可以添加新的问题类型了,这个可以根据自己的需要进行增加。 2、 Priorities:优先级 Issue Settings—> Priorities,这个是设置问题的优先级,可以更加自己的需要进行修改,删除或添加。如下图是我修改了的优先级,把优先级该为问题的严重程度,方便自己使用,这里可以每个公司进行修改: 3、 Resolutions:操作决策 Issue Settings—> Resolutions,主要是配置开发人员对问题的解决方法状态选择,比如选择这个问题关闭,或者是已经存在,下个版本解决等。这些都是在这里进行配置,如下图,如果你不爽英文的话完全可以全部修改为中文。:-)o(∩_∩)o… 4、 Statuses:问题状态 Issue Settings—> Statuses,可以设置问题的状态,包含问题创建,关闭,重开等,可以根据工作流进行配置,如下图: 右边的workflows是工作流,点击下面链接就可以跳到工作流设置页面。 七、 Import & Export 1、 数据备份为xml文件: Import & Export—>Backuo Data to XML,通过此处可以将数据库中的数据备份成XML文件,这种备份既可以用于使用JIRA自带的数据库,也可以用于连接了外部数据库的数据备份,使用外部数据库的数据备份也可以直接备份该数据库。 单击图中的”Backup”之后会将数据备份,之后会提示填写备份路径,如图: 注:使 用这 种方法 备份 数据库 只是 一次性 备份 ,如果 想要 实现周 期性 备份需 要在 SystemServices 中进行设置。 设置如下:如果在安装 jira 的过程中指定了备份路径的话,jira 的备份服务会自动启动; 如果没有进行设置,可以进入 SystemServices 中,设置其保存路径,文件名格式,文件 保存为 zip 格式或 xml 格式以及备份时间间隔。如图: 2、 从XML文件恢复数据: Import & Export—>Restore Data from XML,通过此处可以将已经备份的数据重新恢复到系统中,与Backuo Data to XML相对应。 数据导入的时间视文件大小而定,导入成功之后显示如下页面,并且需要重新登录系统: 3、 外部导入数据 Import & Export—> External System Import、通过此处可以将外部的数据导入进来: 八、 Options & Settings 1、 Options&Settings—>Send E-mail,管理员可以通过这个功能通知相关用户信息。 九、 System 这个模块都是一些基本配置显示信息,一般安装JIRA都不用在这里面进行配置。可以不去管他。 第四章、 JIRA用户使用 1、登陆与注册 在成功安装配置完成的界面上点击“登陆到JIRA”,就会看到JIRA的登陆界面了; 如果已注册,就输入用户名和密码进入。 没有注册,点击“注册”链接 注册成功后进行登陆。 2、 创建问题 一般用户注册后,要通过管理员对你的权限进行配置。 项目一般又管理员进行创建,设置,这里只写普通帐户的使用。 登陆成功后,进入下面页面 点击“创建问题”链接,进入下面页面,选择项目,问题类型: 选择完,点下一步,然后详细填写问题的情况: 填写完成后,点“创建”。一个问题就创建完成,然后邮件就会发送到相关人员邮箱中。 注:上图中的填写,可能每个公司的配置一样,需要根据具体情况进行设置。 3、 浏览项目 在浏览项目的界面可以看到项目的基本信息资料,模块和版本信息及问题分布情况。 4、 查找问题 在查找问题界面上,您可以在界面左侧进行查询条件的设置,JIRA提供了强大的查询功能,在你设定好查询条件后,还可以将查询条件保存起来,定义为过滤器,供以后的重复使用,也可以将保存的过滤器给团队的其他成员。

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧