- Quarkus 2.8.0引入了细粒度的Transaction API
魏铁锤爱摸鱼
java开发语言
升级概览Quarkus2.8.0.Final发布,特性包括:将RESTEasyReactive作为默认REST层;将GraalVM22.0作为默认版本;新的QuarkusTransactionAPI;以及ElasticsearchDevServices(可以自动启动dev和test模式的Elasticsearch容器)。此外,由于存在二进制兼容性不可靠问题,AssertJ被从QuarkusBOM中
- 偶遇的dubbox小坑
DomYY
公司新做的项目,用了一个让人又爱又恨dubbox,引用dubbox的简介:支持REST风格远程调用(HTTP+JSON/XML):基于非常成熟的JBossRestEasy框架,在dubbo中实现了REST风格(HTTP+JSON/XML)的远程调用,以显著简化企业内部的跨语言交互,同时显著简化企业对外的OpenAPI、无线API甚至AJAX服务端等等的开发。事实上,这个REST调用也使得Dubbo
- 自定义过滤器(Filter), 获取返回值
生命有所坚持而生存可以随遇而安
Java
写这篇博文是想记录以下的业务场景。笔者就职一家传统的软件公司,公司大部分的项目架构都是spring、springMVC、springJdbc、restEasy等技术。当时的需求是用户通过前段页面创建数据采集任务,数据采集任务在后台执行爬取流经中心交换机流量。然后通过流量比对我方提供的威胁情报生成告警信息。拿到需求的第一反应就想到了springMVC的拦截器,拦截用户创建的数据采集任务,在拦截了数据
- rest服务中通过resteasy方式上传文件
杨小依
uploadrest-apiresteasy
resteasy服务器代码Control:importcom.mochasoft.latte.commons.log.BaseLogger;importorg.jboss.resteasy.plugins.providers.multipart.MultipartFormDataInput;importorg.springframework.beans.factory.annotation.Aut
- Java开发分析 JProfiler 14中文 for Mac
xiaoyubulubulu
java开发语言
JProfilerMac版新增功能已添加用于传出请求的HTTP探测。同步和异步调用都是测量的。支持的HTTP客户端是:java.net.URLConnection中JavaHTTP客户端(Java11+)ApacheHttpClient4.xApacheAsyncHttpClient4.xOkHttp3.9+Jersey(JAX-RS)AsyncClient2.x.RestEasyAsyncCli
- java9放弃,RESTEasy在WF9上放弃了泼溅
深井冰323
java9放弃
我们正在使用RESTEasy和jettison提供程序(不是jackson,因为它不支持我们真正喜欢的Atom链接)并尝试使用Swagger创建有效的API文档.然而,jettison生成json与“xmlRootElement”,而swagger假设“正常”,Jackson样json.因此,生成的文档无效,使用swagger客户端生成器生成的客户端不起作用.例:Java类:@Mapped(nam
- 使用RESTEasy + Jackson的JSON示例
cyan20115
jsonweb.xml
Jettison作为JSON提供程序您可能也有兴趣阅读此RESTEasy+Jettison+JAXB示例。许多人喜欢JacksonJSON处理器,它在RESTEasy中受支持。在本教程中,我们向您展示如何将对象转换为JSON格式并将其返回给客户端。1.RESTEasy+杰克逊要将Jackson与RESTEasy集成,您只需包含“resteasy-jackson-provider.jar”。注意当R
- RESTful和RESTEasy
编程喵喵
概述RESTEasy是JBoss的一个开源项目,提供各种框架帮助你构建RESTfulWebServices和RESTfulJava应用程序。它是JAX-RS规范的一个完整实现并通过JCP认证。JAX-RS提供了一些标注将一个资源类,一个POJOJava类,封装为Web资源。标注包括:@Path,标注资源类或方法的相对路径;@GET,@PUT,@POST,@DELETE,标注方法是用的HTTP请求的
- org.apache.http.conn.ssl.X509HostnameVerifier错误解决
花开一度
mavenspringbootjava
最初的错误是:java.lang.RuntimeException:java.lang.ClassNotFoundException:org.glassfish.jersey.client.JerseyClientBuilder添加以下依赖项解决了初始错误org.jboss.resteasyresteasy-clientprovided然后我们收到了第二个错误:java.lang.NoClassD
- META-INF下的Service 到底有何用
igool
最近在使用motan把业务服务发布成RPC之后,同时还支持restful的调用方式,相当于支持两种协议的发布。当程序直接通过MAIN入口启动,客户端发起restful调用,解析一切正常。但当打包成独立运行的JAR,请求的返回解析就会失败。初步定位以JAR方式运行,WS相关服务类加载被另外第三方替换。这个文件里面正常内容是这样的:org.jboss.resteasy.plugins.provider
- Quarkus - 发布JSON Restful服务
Redick01
Quarkusjsonrestfuljava
目标基于实现第一个HelloWorld发布一个JSON的Restful服务,该服务提供GET,POST,DELETE三个接口,分别是获取水果列表,添加水果,根据水果名字删除水果。发布Rest服务POM配置添加jackson扩展的依赖io.quarkusquarkus-resteasy-reactive-jacksonQuarkus也支持JSON-B,如果你喜欢JSON-B而不是Jackson,可以
- RestEasy的入门与使用
JackSparrow414
JavaEErestfuljavajava-eespringrestfulservlet
文章目录RestEasy的入门与使用背景传统ServletJAX-RS和JSR为什么要看规范?简单解读JSR370ApplicationsResourcesProvidersRestEasy的基本使用建立Restful风格的JavaEE应用RestEasy是如何接管了应用呢?接受Restful风格的HTTP请求基本使用进阶使用全局异常的处理备注更新日志RestEasy的入门与使用对于Restful
- maven运行的JRE版本低导致报低于1.8
带着猪散步
org/jboss/resteasy/plugins/server/servlet/ResteasyBootstrap:UnsupportedmaFatalerrorcompiling:无效的目标发行版:1.8
- springboot整合cxf-rt-transports-http-jetty发布jax-rs服务
屎壳郎推球球
springbootjax-rsjava
一、JAX-RS是什么?JAX-RS,全称为JavaAPIforRESTfulWebServices,具体的指支持REST架构风格创建Web服务的规范,具体的实现有ApacheCXF、Jersey、RESTEasy等,本文是由的是apache的实现cxf。二、阅读本片博客你将掌握:1、如何使用springboot发布jax-rs服务。2、如何在jax-rs服务中配置拦截器并实现基于token的权限
- Quarkus中RESTEasy Reactive集成合并master分支
目录前言它是什么?为什么非常重要?还有什么其他好处?新的请求/响应过滤器设计新*Param注解更简单的参数和上下文注入新的最佳消息正文阅读器/编写器默认内容类型CDI整合每类异常映射器其他扩展程序也可以使用吗?该如何尝试?应该注意什么?缺少哪些JAX-RS功能?下一步计划是什么?前言Quarkus和RESTEasy团队非常高兴地宣布了Quarkus中的RESTEasyReactive集成已进入ma
- Quarkus中filter过滤器跨域cors问题解决方案
目录前言web依赖过滤器filter开发resteasy的filtervertx的filterQuarkus中的跨域前言Quarkus中的web模块是基于java标准web规范jax-rs构建的,实现则选用了jboss的resteasy。这部分只是请求路由转发部分实现。真正的请求接收则使用了eclipse开源的vert.x框架,底层也是基于netty的一个响应式开发框架。Quarkus将vert.
- Quarkus中实现Resteasy的文件上传下载操作
目录前言文件上传文件下载前言做javaweb开发,文件的上传和下载是一个非常常见的需求场景。在spring生态下的文件上传下载非常简单,记得五年前,我刚写博的时候也写过spring的上传和下载《SpringMvc实现文件上传与下载》,以及Struts2的文件上传和下载《javaStruts2实现文件上传下载》。今天来看看Quarkus框架中是如何实现的,因为Quarkus的JAX-RS采用Rest
- Dubbo中的那些坑(四)HTTP调用
DonneyYoung
Dubbo的HTTP调用Dubbo实现了HTTP调用,但只是走了HTTP协议而已,并没有使用诸如REST的调用方式。换句话说,其他语言不能直接调用Dubbo的HTTP协议。而如今异构的系统的REST调用都比较常见,也出现了对Dubbo的REST协议的各种实现。基于RESTEasy的REST调用实现当当网改进的Dubbox,用了JBOSS的RESTEasy实现REST功能,比Jersey、Restl
- resteasy 银联获取得到html脚本的代码直接浏览器中打开,跳像新页面
一颗小韭菜
web技术类
resteasy银联获取得到html脚本的代码直接浏览器中打开,跳像新页面。@GET@Path("/bindCardHtml")@Produces("text/html;charset=utf-8")@ApiOperation(value="")publicStringbindCardHtml(@ContextHttpServletResponseresponse)throwsIOExceptio
- dubbo源码解析(三十)远程调用——rest协议
weixin_34392906
javajavascriptnetty
远程调用——rest协议目标:介绍rest协议的设计和实现,介绍dubbo-rpc-rest的源码。前言REST的英文名是RepresentationalStateTransfer,它是一种开发风格,关于REST不清楚的朋友可以了解一下。在dubbo中利用的是红帽子RedHat公司的Resteasy来使dubbo支持REST风格的开发使用。在本文中主要讲解的是基于Resteasy来实现rest协议
- RESTEasy:@FormParam、@PathParam、@QueryParam、@HeaderParam、@CookieParam、@MatrixParam说明
zzhongcy
RestEasy
介绍:InthefirstRESTEasytutorialwehavelearntthebasicsaboutRESTWebservicesandwehavetestedasimpleRESTfulWebservice.Inthistutorialwewillshowhowtoinjectwebapplicationelements(formparameters,queryparametersan
- RestEasy用户指南---第6章.@QueryParam
程静涛
WebService翻译
@QueryParam的声明允许将一个uri的查询字符串参数,或者url编码形式的参数映射到你的方法调用中。GET/books?num=5@GETpublicStringgetBooks(@QueryParam("num")intnum){...}(意思大概是说你通过查询字符串传递的参数可以通过@QueryParam来传递获取)目前,resteasy实在Servlet的基础之上运行的,它并不区分U
- 一个简单的Quarkus web服务入门
未完成交响曲-KyleWang
java后端技术实践quarkus
一个简单的Quarkusweb服务Demo介绍Quarkus是一个由RedHat开源的Java微服务框架,其特性包括:容器优先:最小的Java应用程序,最适合在容器中运行云原生:在Kubernetes等环境中采用12要素原则。统一命令式与反应式:在一个编程模型下带来非阻塞和命令式开发风格。基于标准:基于一些标准和框架(RESTEasy、Hibernate、Netty、EclipseVert.x、A
- RESTEasy实现上传下载文件
zhangzhuang1127
RESTEasyRESTEasyGuice
近期,使用RESTEasy实现了上传下载文件。这次我是使用guice来注册服务,要想使用guice来注册服务,需要修改web.xml:将:resteasy.scantrueorg.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap修改成:resteasy.guice.modulesorg.oliver.module.FileModuleo
- Dubbox现在的主要功能简介
坦GA
本文来自Dubbx官方文档,拷贝过来方便查看。支持REST风格远程调用(HTTP+JSON/XML):基于非常成熟的JBossRestEasy框架,在dubbo中实现了REST风格(HTTP+JSON/XML)的远程调用,以显著简化企业内部的跨语言交互,同时显著简化企业对外的OpenAPI、无线API甚至AJAX服务端等等的开发。事实上,这个REST调用也使得Dubbo可以对当今特别流行的“微服务
- Dubbox 当前的主要功能
IT_搬运工
dubbo
支持REST风格远程调用(HTTP+JSON/XML):基于非常成熟的JBossRestEasy框架,在dubbo中实现了REST风格(HTTP+JSON/XML)的远程调用,以显著简化企业内部的跨语言交互,同时显著简化企业对外的OpenAPI、无线API甚至AJAX服务端等等的开发。事实上,这个REST调用也使得Dubbo可以对当今特别流行的“微服务”架构提供基础性支持。另外,REST调用也达到
- resteasy问题集
潦倒神仙
1.静态文件访问作为servlet进行资源的注册,你会发现不能将静态文件(html,images)注册为资源,因为那样的请求会被当作一个service路径来处理。同时如果指定路径下没有相应的service对应,RESTEasy还能委派一个基础的service来处理。所以resteasy还提供了filter进行资源的注册,不妨碍其获取静态文件。Resteasyorg.jboss.resteasy.p
- Spring boot 与RestEasy结合
华-哥
spring-boot
Springboot与RestEasy结合SpringBoot官方并没有出于RestEasy结合的jar包,估计是应为RestEasy用的比较少吧,但是paypal团队出了一个jar(传送门1),估计他们那边有RestEasy用的比较多吧,PayPal是国际版本的支付宝(传送门2)首先导包com.paypal.springbootresteasy-spring-boot-starter2.3.3-
- spring和resteasy整合的注意事项
大师兄吖
springmvc
1、如果restful服务不要前缀那么这种方式只有和springmvc整合后才可以,springbean配置文件要添加这个就是和springmvc进行整合。且要使用servlet初始化器org.jboss.resteasyresteasy-servlet-initializer${resteasy-version}2、如果restful服务,有前缀,那么和springmvc整合或不整合(sprin
- spring和resteasy集成,构建restful风格服务
大师兄吖
springmvc
spring和resteasy集成,三种主要的方式,对于和jbossas7的集成不需要做任何工作,jboss默认集成了resteasy,只需要对业务pojo做一些jax-rs的注解标注即可。这里不是本帖的话题。我们这里讲的servlet容器是tomcat。开始前,先做一些准备工作,引入jar包,我使用的是maven。jar包版本,添加到属性文件里去:2.2.33.0.4.Final4.2.5下面是
- 多线程编程之join()方法
周凡杨
javaJOIN多线程编程线程
现实生活中,有些工作是需要团队中成员依次完成的,这就涉及到了一个顺序问题。现在有T1、T2、T3三个工人,如何保证T2在T1执行完后执行,T3在T2执行完后执行?问题分析:首先问题中有三个实体,T1、T2、T3, 因为是多线程编程,所以都要设计成线程类。关键是怎么保证线程能依次执行完呢?
Java实现过程如下:
public class T1 implements Runnabl
- java中switch的使用
bingyingao
javaenumbreakcontinue
java中的switch仅支持case条件仅支持int、enum两种类型。
用enum的时候,不能直接写下列形式。
switch (timeType) {
case ProdtransTimeTypeEnum.DAILY:
break;
default:
br
- hive having count 不能去重
daizj
hive去重having count计数
hive在使用having count()是,不支持去重计数
hive (default)> select imei from t_test_phonenum where ds=20150701 group by imei having count(distinct phone_num)>1 limit 10;
FAILED: SemanticExcep
- WebSphere对JSP的缓存
周凡杨
WAS JSP 缓存
对于线网上的工程,更新JSP到WebSphere后,有时会出现修改的jsp没有起作用,特别是改变了某jsp的样式后,在页面中没看到效果,这主要就是由于websphere中缓存的缘故,这就要清除WebSphere中jsp缓存。要清除WebSphere中JSP的缓存,就要找到WAS安装后的根目录。
现服务
- 设计模式总结
朱辉辉33
java设计模式
1.工厂模式
1.1 工厂方法模式 (由一个工厂类管理构造方法)
1.1.1普通工厂模式(一个工厂类中只有一个方法)
1.1.2多工厂模式(一个工厂类中有多个方法)
1.1.3静态工厂模式(将工厂类中的方法变成静态方法)
&n
- 实例:供应商管理报表需求调研报告
老A不折腾
finereport报表系统报表软件信息化选型
引言
随着企业集团的生产规模扩张,为支撑全球供应链管理,对于供应商的管理和采购过程的监控已经不局限于简单的交付以及价格的管理,目前采购及供应商管理各个环节的操作分别在不同的系统下进行,而各个数据源都独立存在,无法提供统一的数据支持;因此,为了实现对于数据分析以提供采购决策,建立报表体系成为必须。 业务目标
1、通过报表为采购决策提供数据分析与支撑
2、对供应商进行综合评估以及管理,合理管理和
- mysql
林鹤霄
转载源:http://blog.sina.com.cn/s/blog_4f925fc30100rx5l.html
mysql -uroot -p
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
[root@centos var]# service mysql
- Linux下多线程堆栈查看工具(pstree、ps、pstack)
aigo
linux
原文:http://blog.csdn.net/yfkiss/article/details/6729364
1. pstree
pstree以树结构显示进程$ pstree -p work | grep adsshd(22669)---bash(22670)---ad_preprocess(4551)-+-{ad_preprocess}(4552) &n
- html input与textarea 值改变事件
alxw4616
JavaScript
// 文本输入框(input) 文本域(textarea)值改变事件
// onpropertychange(IE) oninput(w3c)
$('input,textarea').on('propertychange input', function(event) {
console.log($(this).val())
});
- String类的基本用法
百合不是茶
String
字符串的用法;
// 根据字节数组创建字符串
byte[] by = { 'a', 'b', 'c', 'd' };
String newByteString = new String(by);
1,length() 获取字符串的长度
&nbs
- JDK1.5 Semaphore实例
bijian1013
javathreadjava多线程Semaphore
Semaphore类
一个计数信号量。从概念上讲,信号量维护了一个许可集合。如有必要,在许可可用前会阻塞每一个 acquire(),然后再获取该许可。每个 release() 添加一个许可,从而可能释放一个正在阻塞的获取者。但是,不使用实际的许可对象,Semaphore 只对可用许可的号码进行计数,并采取相应的行动。
S
- 使用GZip来压缩传输量
bijian1013
javaGZip
启动GZip压缩要用到一个开源的Filter:PJL Compressing Filter。这个Filter自1.5.0开始该工程开始构建于JDK5.0,因此在JDK1.4环境下只能使用1.4.6。
PJL Compressi
- 【Java范型三】Java范型详解之范型类型通配符
bit1129
java
定义如下一个简单的范型类,
package com.tom.lang.generics;
public class Generics<T> {
private T value;
public Generics(T value) {
this.value = value;
}
}
- 【Hadoop十二】HDFS常用命令
bit1129
hadoop
1. 修改日志文件查看器
hdfs oev -i edits_0000000000000000081-0000000000000000089 -o edits.xml
cat edits.xml
修改日志文件转储为xml格式的edits.xml文件,其中每条RECORD就是一个操作事务日志
2. fsimage查看HDFS中的块信息等
&nb
- 怎样区别nginx中rewrite时break和last
ronin47
在使用nginx配置rewrite中经常会遇到有的地方用last并不能工作,换成break就可以,其中的原理是对于根目录的理解有所区别,按我的测试结果大致是这样的。
location /
{
proxy_pass http://test;
- java-21.中兴面试题 输入两个整数 n 和 m ,从数列 1 , 2 , 3.......n 中随意取几个数 , 使其和等于 m
bylijinnan
java
import java.util.ArrayList;
import java.util.List;
import java.util.Stack;
public class CombinationToSum {
/*
第21 题
2010 年中兴面试题
编程求解:
输入两个整数 n 和 m ,从数列 1 , 2 , 3.......n 中随意取几个数 ,
使其和等
- eclipse svn 帐号密码修改问题
开窍的石头
eclipseSVNsvn帐号密码修改
问题描述:
Eclipse的SVN插件Subclipse做得很好,在svn操作方面提供了很强大丰富的功能。但到目前为止,该插件对svn用户的概念极为淡薄,不但不能方便地切换用户,而且一旦用户的帐号、密码保存之后,就无法再变更了。
解决思路:
删除subclipse记录的帐号、密码信息,重新输入
- [电子商务]传统商务活动与互联网的结合
comsci
电子商务
某一个传统名牌产品,过去销售的地点就在某些特定的地区和阶层,现在进入互联网之后,用户的数量群突然扩大了无数倍,但是,这种产品潜在的劣势也被放大了无数倍,这种销售利润与经营风险同步放大的效应,在最近几年将会频繁出现。。。。
如何避免销售量和利润率增加的
- java 解析 properties-使用 Properties-可以指定配置文件路径
cuityang
javaproperties
#mq
xdr.mq.url=tcp://192.168.100.15:61618;
import java.io.IOException;
import java.util.Properties;
public class Test {
String conf = "log4j.properties";
private static final
- Java核心问题集锦
darrenzhu
java基础核心难点
注意,这里的参考文章基本来自Effective Java和jdk源码
1)ConcurrentModificationException
当你用for each遍历一个list时,如果你在循环主体代码中修改list中的元素,将会得到这个Exception,解决的办法是:
1)用listIterator, 它支持在遍历的过程中修改元素,
2)不用listIterator, new一个
- 1分钟学会Markdown语法
dcj3sjt126com
markdown
markdown 简明语法 基本符号
*,-,+ 3个符号效果都一样,这3个符号被称为 Markdown符号
空白行表示另起一个段落
`是表示inline代码,tab是用来标记 代码段,分别对应html的code,pre标签
换行
单一段落( <p>) 用一个空白行
连续两个空格 会变成一个 <br>
连续3个符号,然后是空行
- Gson使用二(GsonBuilder)
eksliang
jsongsonGsonBuilder
转载请出自出处:http://eksliang.iteye.com/blog/2175473 一.概述
GsonBuilder用来定制java跟json之间的转换格式
二.基本使用
实体测试类:
温馨提示:默认情况下@Expose注解是不起作用的,除非你用GsonBuilder创建Gson的时候调用了GsonBuilder.excludeField
- 报ClassNotFoundException: Didn't find class "...Activity" on path: DexPathList
gundumw100
android
有一个工程,本来运行是正常的,我想把它移植到另一台PC上,结果报:
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.mobovip.bgr/com.mobovip.bgr.MainActivity}: java.lang.ClassNotFoundException: Didn't f
- JavaWeb之JSP指令
ihuning
javaweb
要点
JSP指令简介
page指令
include指令
JSP指令简介
JSP指令(directive)是为JSP引擎而设计的,它们并不直接产生任何可见输出,而只是告诉引擎如何处理JSP页面中的其余部分。
JSP指令的基本语法格式:
<%@ 指令 属性名="
- mac上编译FFmpeg跑ios
啸笑天
ffmpeg
1、下载文件:https://github.com/libav/gas-preprocessor, 复制gas-preprocessor.pl到/usr/local/bin/下, 修改文件权限:chmod 777 /usr/local/bin/gas-preprocessor.pl
2、安装yasm-1.2.0
curl http://www.tortall.net/projects/yasm
- sql mysql oracle中字符串连接
macroli
oraclesqlmysqlSQL Server
有的时候,我们有需要将由不同栏位获得的资料串连在一起。每一种资料库都有提供方法来达到这个目的:
MySQL: CONCAT()
Oracle: CONCAT(), ||
SQL Server: +
CONCAT() 的语法如下:
Mysql 中 CONCAT(字串1, 字串2, 字串3, ...): 将字串1、字串2、字串3,等字串连在一起。
请注意,Oracle的CON
- Git fatal: unab SSL certificate problem: unable to get local issuer ce rtificate
qiaolevip
学习永无止境每天进步一点点git纵观千象
// 报错如下:
$ git pull origin master
fatal: unable to access 'https://git.xxx.com/': SSL certificate problem: unable to get local issuer ce
rtificate
// 原因:
由于git最新版默认使用ssl安全验证,但是我们是使用的git未设
- windows命令行设置wifi
surfingll
windowswifi笔记本wifi
还没有讨厌无线wifi的无尽广告么,还在耐心等待它慢慢启动么
教你命令行设置 笔记本电脑wifi:
1、开启wifi命令
netsh wlan set hostednetwork mode=allow ssid=surf8 key=bb123456
netsh wlan start hostednetwork
pause
其中pause是等待输入,可以去掉
2、
- Linux(Ubuntu)下安装sysv-rc-conf
wmlJava
linuxubuntusysv-rc-conf
安装:sudo apt-get install sysv-rc-conf 使用:sudo sysv-rc-conf
操作界面十分简洁,你可以用鼠标点击,也可以用键盘方向键定位,用空格键选择,用Ctrl+N翻下一页,用Ctrl+P翻上一页,用Q退出。
背景知识
sysv-rc-conf是一个强大的服务管理程序,群众的意见是sysv-rc-conf比chkconf
- svn切换环境,重发布应用多了javaee标签前缀
zengshaotao
javaee
更换了开发环境,从杭州,改变到了上海。svn的地址肯定要切换的,切换之前需要将原svn自带的.svn文件信息删除,可手动删除,也可通过废弃原来的svn位置提示删除.svn时删除。
然后就是按照最新的svn地址和规范建立相关的目录信息,再将原来的纯代码信息上传到新的环境。然后再重新检出,这样每次修改后就可以看到哪些文件被修改过,这对于增量发布的规范特别有用。
检出