- 【spring-boot接入Resteasy】
yichanggeng
springboot示例springboot
spring-boot示例spring-boot接入Resteasyspring-boot示例前言相关版本一、resteasy是什么?二、接入步骤1.创建项目(略)2.添加依赖3.添加启动类4.添加测试类5.启动与测试总结源代码前言这里演示如何在spring-boot中接入resteasy框架。相关版本依赖版本spring-boot2.7.9resteasy-spring-boot-starter
- 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
- JAVA基础
灵静志远
位运算加载Date字符串池覆盖
一、类的初始化顺序
1 (静态变量,静态代码块)-->(变量,初始化块)--> 构造器
同一括号里的,根据它们在程序中的顺序来决定。上面所述是同一类中。如果是继承的情况,那就在父类到子类交替初始化。
二、String
1 String a = "abc";
JAVA虚拟机首先在字符串池中查找是否已经存在了值为"abc"的对象,根
- keepalived实现redis主从高可用
bylijinnan
redis
方案说明
两台机器(称为A和B),以统一的VIP对外提供服务
1.正常情况下,A和B都启动,B会把A的数据同步过来(B is slave of A)
2.当A挂了后,VIP漂移到B;B的keepalived 通知redis 执行:slaveof no one,由B提供服务
3.当A起来后,VIP不切换,仍在B上面;而A的keepalived 通知redis 执行slaveof B,开始
- java文件操作大全
0624chenhong
java
最近在博客园看到一篇比较全面的文件操作文章,转过来留着。
http://www.cnblogs.com/zhuocheng/archive/2011/12/12/2285290.html
转自http://blog.sina.com.cn/s/blog_4a9f789a0100ik3p.html
一.获得控制台用户输入的信息
&nbs
- android学习任务
不懂事的小屁孩
工作
任务
完成情况 搞清楚带箭头的pupupwindows和不带的使用 已完成 熟练使用pupupwindows和alertdialog,并搞清楚两者的区别 已完成 熟练使用android的线程handler,并敲示例代码 进行中 了解游戏2048的流程,并完成其代码工作 进行中-差几个actionbar 研究一下android的动画效果,写一个实例 已完成 复习fragem
- zoom.js
换个号韩国红果果
oom
它的基于bootstrap 的
https://raw.github.com/twbs/bootstrap/master/js/transition.js transition.js模块引用顺序
<link rel="stylesheet" href="style/zoom.css">
<script src=&q
- 详解Oracle云操作系统Solaris 11.2
蓝儿唯美
Solaris
当Oracle发布Solaris 11时,它将自己的操作系统称为第一个面向云的操作系统。Oracle在发布Solaris 11.2时继续它以云为中心的基调。但是,这些说法没有告诉我们为什么Solaris是配得上云的。幸好,我们不需要等太久。Solaris11.2有4个重要的技术可以在一个有效的云实现中发挥重要作用:OpenStack、内核域、统一存档(UA)和弹性虚拟交换(EVS)。
- spring学习——springmvc(一)
a-john
springMVC
Spring MVC基于模型-视图-控制器(Model-View-Controller,MVC)实现,能够帮助我们构建像Spring框架那样灵活和松耦合的Web应用程序。
1,跟踪Spring MVC的请求
请求的第一站是Spring的DispatcherServlet。与大多数基于Java的Web框架一样,Spring MVC所有的请求都会通过一个前端控制器Servlet。前
- hdu4342 History repeat itself-------多校联合五
aijuans
数论
水题就不多说什么了。
#include<iostream>#include<cstdlib>#include<stdio.h>#define ll __int64using namespace std;int main(){ int t; ll n; scanf("%d",&t); while(t--)
- EJB和javabean的区别
asia007
beanejb
EJB不是一般的JavaBean,EJB是企业级JavaBean,EJB一共分为3种,实体Bean,消息Bean,会话Bean,书写EJB是需要遵循一定的规范的,具体规范你可以参考相关的资料.另外,要运行EJB,你需要相应的EJB容器,比如Weblogic,Jboss等,而JavaBean不需要,只需要安装Tomcat就可以了
1.EJB用于服务端应用开发, 而JavaBeans
- Struts的action和Result总结
百合不是茶
strutsAction配置Result配置
一:Action的配置详解:
下面是一个Struts中一个空的Struts.xml的配置文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
&quo
- 如何带好自已的团队
bijian1013
项目管理团队管理团队
在网上看到博客"
怎么才能让团队成员好好干活"的评论,觉得写的比较好。 原文如下: 我做团队管理有几年了吧,我和你分享一下我认为带好团队的几点:
1.诚信
对团队内成员,无论是技术研究、交流、问题探讨,要尽可能的保持一种诚信的态度,用心去做好,你的团队会感觉得到。 2.努力提
- Java代码混淆工具
sunjing
ProGuard
Open Source Obfuscators
ProGuard
http://java-source.net/open-source/obfuscators/proguardProGuard is a free Java class file shrinker and obfuscator. It can detect and remove unused classes, fields, m
- 【Redis三】基于Redis sentinel的自动failover主从复制
bit1129
redis
在第二篇中使用2.8.17搭建了主从复制,但是它存在Master单点问题,为了解决这个问题,Redis从2.6开始引入sentinel,用于监控和管理Redis的主从复制环境,进行自动failover,即Master挂了后,sentinel自动从从服务器选出一个Master使主从复制集群仍然可以工作,如果Master醒来再次加入集群,只能以从服务器的形式工作。
什么是Sentine
- 使用代理实现Hibernate Dao层自动事务
白糖_
DAOspringAOP框架Hibernate
都说spring利用AOP实现自动事务处理机制非常好,但在只有hibernate这个框架情况下,我们开启session、管理事务就往往很麻烦。
public void save(Object obj){
Session session = this.getSession();
Transaction tran = session.beginTransaction();
try
- maven3实战读书笔记
braveCS
maven3
Maven简介
是什么?
Is a software project management and comprehension tool.项目管理工具
是基于POM概念(工程对象模型)
[设计重复、编码重复、文档重复、构建重复,maven最大化消除了构建的重复]
[与XP:简单、交流与反馈;测试驱动开发、十分钟构建、持续集成、富有信息的工作区]
功能:
- 编程之美-子数组的最大乘积
bylijinnan
编程之美
public class MaxProduct {
/**
* 编程之美 子数组的最大乘积
* 题目: 给定一个长度为N的整数数组,只允许使用乘法,不能用除法,计算任意N-1个数的组合中乘积中最大的一组,并写出算法的时间复杂度。
* 以下程序对应书上两种方法,求得“乘积中最大的一组”的乘积——都是有溢出的可能的。
* 但按题目的意思,是要求得这个子数组,而不
- 读书笔记-2
chengxuyuancsdn
读书笔记
1、反射
2、oracle年-月-日 时-分-秒
3、oracle创建有参、无参函数
4、oracle行转列
5、Struts2拦截器
6、Filter过滤器(web.xml)
1、反射
(1)检查类的结构
在java.lang.reflect包里有3个类Field,Method,Constructor分别用于描述类的域、方法和构造器。
2、oracle年月日时分秒
s
- [求学与房地产]慎重选择IT培训学校
comsci
it
关于培训学校的教学和教师的问题,我们就不讨论了,我主要关心的是这个问题
培训学校的教学楼和宿舍的环境和稳定性问题
我们大家都知道,房子是一个比较昂贵的东西,特别是那种能够当教室的房子...
&nb
- RMAN配置中通道(CHANNEL)相关参数 PARALLELISM 、FILESPERSET的关系
daizj
oraclermanfilespersetPARALLELISM
RMAN配置中通道(CHANNEL)相关参数 PARALLELISM 、FILESPERSET的关系 转
PARALLELISM ---
我们还可以通过parallelism参数来指定同时"自动"创建多少个通道:
RMAN > configure device type disk parallelism 3 ;
表示启动三个通道,可以加快备份恢复的速度。
- 简单排序:冒泡排序
dieslrae
冒泡排序
public void bubbleSort(int[] array){
for(int i=1;i<array.length;i++){
for(int k=0;k<array.length-i;k++){
if(array[k] > array[k+1]){
- 初二上学期难记单词三
dcj3sjt126com
sciet
concert 音乐会
tonight 今晚
famous 有名的;著名的
song 歌曲
thousand 千
accident 事故;灾难
careless 粗心的,大意的
break 折断;断裂;破碎
heart 心(脏)
happen 偶尔发生,碰巧
tourist 旅游者;观光者
science (自然)科学
marry 结婚
subject 题目;
- I.安装Memcahce 1. 安装依赖包libevent Memcache需要安装libevent,所以安装前可能需要执行 Shell代码 收藏代码
dcj3sjt126com
redis
wget http://download.redis.io/redis-stable.tar.gz
tar xvzf redis-stable.tar.gz
cd redis-stable
make
前面3步应该没有问题,主要的问题是执行make的时候,出现了异常。
异常一:
make[2]: cc: Command not found
异常原因:没有安装g
- 并发容器
shuizhaosi888
并发容器
通过并发容器来改善同步容器的性能,同步容器将所有对容器状态的访问都串行化,来实现线程安全,这种方式严重降低并发性,当多个线程访问时,吞吐量严重降低。
并发容器ConcurrentHashMap
替代同步基于散列的Map,通过Lock控制。
&nb
- Spring Security(12)——Remember-Me功能
234390216
Spring SecurityRemember Me记住我
Remember-Me功能
目录
1.1 概述
1.2 基于简单加密token的方法
1.3 基于持久化token的方法
1.4 Remember-Me相关接口和实现
- 位运算
焦志广
位运算
一、位运算符C语言提供了六种位运算符:
& 按位与
| 按位或
^ 按位异或
~ 取反
<< 左移
>> 右移
1. 按位与运算 按位与运算符"&"是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1 ,否则为0。参与运算的数以补码方式出现。
例如:9&am
- nodejs 数据库连接 mongodb mysql
liguangsong
mongodbmysqlnode数据库连接
1.mysql 连接
package.json中dependencies加入
"mysql":"~2.7.0"
执行 npm install
在config 下创建文件 database.js
- java动态编译
olive6615
javaHotSpotjvm动态编译
在HotSpot虚拟机中,有两个技术是至关重要的,即动态编译(Dynamic compilation)和Profiling。
HotSpot是如何动态编译Javad的bytecode呢?Java bytecode是以解释方式被load到虚拟机的。HotSpot里有一个运行监视器,即Profile Monitor,专门监视
- Storm0.9.5的集群部署配置优化
roadrunners
优化storm.yaml
nimbus结点配置(storm.yaml)信息:
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional inf
- 101个MySQL 的调节和优化的提示
tomcat_oracle
mysql
1. 拥有足够的物理内存来把整个InnoDB文件加载到内存中——在内存中访问文件时的速度要比在硬盘中访问时快的多。 2. 不惜一切代价避免使用Swap交换分区 – 交换时是从硬盘读取的,它的速度很慢。 3. 使用电池供电的RAM(注:RAM即随机存储器)。 4. 使用高级的RAID(注:Redundant Arrays of Inexpensive Disks,即磁盘阵列
- zoj 3829 Known Notation(贪心)
阿尔萨斯
ZOJ
题目链接:zoj 3829 Known Notation
题目大意:给定一个不完整的后缀表达式,要求有2种不同操作,用尽量少的操作使得表达式完整。
解题思路:贪心,数字的个数要要保证比∗的个数多1,不够的话优先补在开头是最优的。然后遍历一遍字符串,碰到数字+1,碰到∗-1,保证数字的个数大于等1,如果不够减的话,可以和最后面的一个数字交换位置(用栈维护十分方便),因为添加和交换代价都是1