c++:reverse函数包含在头文件中用reverse函数反转字符串再判断intjudge(stringa){stringb;b=a;reverse(a.begin(),a.end());if(a==b){return1;}else{return0;}}c:booljudge(char*a,intstart,intend){while(start
基于Vue的水果购物车系统
啊sen丶
vue.js前端javascript
下面是一个基于Vue.js的购物车系统,功能较为完整,包括商品的增删改查、全选/反选、总价计算等功能。购物车/购物车选中图片单价个数小计操作{{item.price}}-{{item.num}}+{{item.num*item.price}}删除全选总价 : ¥ {{totalPrice}}结算({{fruitList.length}})空空如
SLAM文献之-IMLS-SLAM: scan-to-model matching based on 3D data
点云SLAM
SLAM3d机器学习SLAMIMLSICP
IMLS-SLAM算法原理详解一、算法概述IMLS-SLAM(ImplicitMovingLeastSquaresSLAM)是一种基于3D激光雷达数据的低漂移SLAM算法,由Jean-EmmanuelDeschaud等人在2018年提出。其核心思想是通过隐式移动最小二乘(IMLS)曲面建模实现scan-to-model的匹配框架,显著提升了定位与建图的精度和鲁棒性。该算法在无闭环检测的情况下,4公
Svelte 最新中文文档教程(22)—— 自定义元素
前言Svelte,一个语法简洁、入门容易,面向未来的前端框架。从Svelte诞生之初,就备受开发者的喜爱,根据统计,从2019年到2024年,连续6年一直是开发者最感兴趣的前端框架No.1:Svelte以其独特的编译时优化机制著称,具有轻量级、高性能、易上手等特性,非常适合构建轻量级Web项目。为了帮助大家学习Svelte,我同时搭建了Svelte最新的中文文档站点。如果需要进阶学习,也可以入手我
【YashanDB 知识库】如何排查 YMP 报错:”OCI 版本为空或 OCI 的架构和本地系统的架构不符“
数据库程序员
问题现象在迁移预检查的版本检查阶段报错:检查未通过OCI版本为空,报错的详细信息:OCI版本为空或OCI的架构与本地系统架构不符;如何排查1、查看yasdts日志,从日志报错信息得知libdrv_oracle.so少了依赖库libnsl.so.1tail-fyashan-migrate-platform/logs/dts_log/run.log2、检查是否将OCI客户端路径加入到环境变量LD_LI
Design Leetcode
xxxmmc
系统架构
DesignLeetcodeFunctionalRequirementsUserscanviewalistofproblemsUsersviewthedetailedproblemandcodesolutionsUsersareablesumbittheircodeaccordingtodifferentlanguageandgettheanswer.Usersareabletohavethele
Node.js安装及环境配置之Windows篇
Jerry ji
nodejs
Node.js安装及环境配置之Windows篇一、安装环境1、本机系统:Windows10Pro(64位)2、Node.js:v14.17.0LTS(64位)二、安装Node.js步骤1、下载对应你系统的Node.js版本:https://nodejs.org/en/download/2、选安装目录进行安装3、环境配置4、测试三、前期准备1、Node.js简介简单的说Node.js就是运行在服务端
解读 Uniapp: 从入门到精通的底层原理
xcLeigh
UniApp技术点解析uni-app
解读Uniapp:从入门到精通的底层原理一、前言二、Uniapp与Vue.js的关系2.1Vue.js基础回顾2.2Uniapp对Vue.js的继承与扩展三、Uniapp的组件系统3.1组件的基本概念与创建3.2组件的生命周期四、数据绑定与响应式原理4.1数据绑定的实现方式4.2响应式原理剖析五、Uniapp的跨平台实现原理5.1多端编译机制5.2条件编译六、总结结束语优质源码分享解读Uniapp
前端工程化Vue使用Node.js永久设置国内高速npm镜像源
会撸代码的懒羊羊
Nginx前端node.jsvue.js数据库npm
前端工程化Vue使用Node.js永久设置国内高速npm镜像源接续上篇错误收录,此篇通过简单配置永久设置国内高速npm镜像源方法1.更换新版镜像清空npm缓存npmcacheclean--force修改回原版镜像源或直接删除配置过的镜像源npmconfigsetregistryhttps://registry.npmjs.org/--删除镜像源npmconfigdeleteregistry更改新版
Node.js `node-gyp-build` 模块安装与使用指南
计蕴斯Lowell
Node.jsnode-gyp-build模块安装与使用指南node-gyp-buildBuildtoolandbindingsloaderfornode-gypthatsupportsprebuilds项目地址:https://gitcode.com/gh_mirrors/no/node-gyp-build一、项目目录结构及介绍node-gyp-build是一个辅助工具,用于简化Node.js原
飘还是不飘?“`“引发的惨案。
dushky
java前端开发语言
Failedtoconvertvalueoftype'java.lang.String'torequiredtype'int';Forinputstring:"${page}"当您的后端服务报这个错误时?发生什么?乍一看,什么都没问题。后端服务正常启动,用swagger(Knife4j)测试好着呢。前端也没什么问题,该传的,都传了呀?特别是眼神不太好的,还看不出来'和`的区别。:-)注意前端传参的
XPath vs CSS Selector 深度对比
test猿
css前端
核心差异总览对比维度XPathCSSSelector语法复杂度较高(需路径表达式)简洁(类似前端开发习惯)性能较慢(全局遍历)更快(浏览器原生优化)文本匹配✅支持(contains(text(),'abc'))❌不支持轴定位✅支持(父级、兄弟等)❌仅支持直接层级(>、+等)动态属性处理✅灵活(starts-with()等函数)✅有限(^=、$=等部分匹配)伪类
支持selenium的chrome driver更新到133.0.6943.126
代码的乐趣
seleniumchromepython
最近chrome释放新版本:133.0.6943.126如果运行selenium自动化测试出现以下问题,是需要升级chromedriver才可以解决的。selenium.common.exceptions.SessionNotCreatedException:Message:sessionnotcreated:ThisversionofChromeDriveronlysupportsChromev
支持selenium的chrome driver更新到133.0.6943.98
代码的乐趣
seleniumchromepython
最近chrome释放新版本:133.0.6943.98如果运行selenium自动化测试出现以下问题,是需要升级chromedriver才可以解决的。selenium.common.exceptions.SessionNotCreatedException:Message:sessionnotcreated:ThisversionofChromeDriveronlysupportsChromeve
springboot项目统一接口超时机制设计
gooluke
springboot后端java
springboot项目统一接口超时机制以及异常捕获设计因为不同的业务接口所需超时时间不同,例如上传或者下载,但是大多数接口都基本可以统一一个超时时间,同时捕获异常,方便上下游子系统设置超时时间能够包住,以及业务可以根据错误码更好地判断做对应的补偿措施,前端展示失败原因主要设计:编写BaseController,提供请求统一入口,线程池提交请求并设置超时时间,超时时间可以自定义,定义一个函数式接口
行为型模式 - 策略模式 (Strategy Pattern)
_真相只有一个
Java设计模式策略模式设计模式
行为型模式-策略模式(StrategyPattern)策略模式定义了一系列的算法,并将每个算法封装起来,使它们可以相互替换。策略模式让算法的变化独立于使用算法的客户端。以下是几个策略模式的经典案例。//一个经典的例子,支付方式、微信、支付宝、银联//1.策略接口publicinterfacePaymentStrategy{voidpay(doubleamount);}//2.具体策略实现//微信p
京东商品详情API性能优化:缓存分层与热点数据预加载策略
专注API从业者
电商平台经验分享API接口性能优化缓存大数据后端
在京东商品详情API的使用过程中,性能优化至关重要。缓存分层与热点数据预加载策略是两种有效的优化手段,下面详细介绍:缓存分层策略1.分层结构设计浏览器缓存原理:这是最接近用户的一层缓存。当用户首次访问商品详情页时,浏览器会将页面的静态资源(如CSS、JavaScript文件、图片等)以及部分不经常变化的数据(如商品的基本描述等)进行缓存。下次用户再次访问相同页面时,浏览器会首先检查本地缓存,如果缓
支持selenium的chrome driver更新到133.0.6943.141
代码的乐趣
seleniumchromepython
最近chrome释放新版本:133.0.6943.141如果运行selenium自动化测试出现以下问题,是需要升级chromedriver才可以解决的。selenium.common.exceptions.SessionNotCreatedException:Message:sessionnotcreated:ThisversionofChromeDriveronlysupportsChromev
前端学习Day4 CSS基础笔记
Yukukiii
前端css学习
目标能够说出什么是CSS能够使用CSS基础选择器能够设置字体样式能够设置文本样式能够说出CSS的三种引入方式能够使用Chrome调试工具调试样式CSS:层叠样式表(Cascadingstylesheets)语法:写在head里面p{color:brown;//文字变色font-size:30px;//字变大background-color:blue;//背景色为蓝色width:400px;heig
《从零到全栈:JavaScript新增的ES6语法》
CodeComposer
es6javascript前端开发语言
JavaScript是一门弱类型的脚本语言,广泛应用于网页开发中。ES6(ECMAScript2015)是JavaScript的第六个版本,引入了许多新特性,使得JavaScript更加现代化和强大。本文将详细介绍JavaScript的基础概念、ES6的新特性及其应用场景。一、JavaScript核心概念1.JavaScript的本质弱类型语言:变量声明无需指定类型,可动态存储任意数据。vara=
《从零到全栈:JavaScript入门指南(二)》
CodeComposer
javascript前端学习
DOM操作1、DOM基础概念定义:文档对象模型(DocumentObjectModel),将HTML/XML文档解析为树形结构,提供操作页面元素的接口。核心作用:通过JavaScript动态操作网页内容(增删改查元素、样式、属性、事件等)。节点类型:元素节点(如)文本节点(如标签内的文字)属性节点(如class="box")2、document对象入口对象:代表整个文档,提供访问和操作页面的属性和
《从零到全栈:Bootstrap 响应式布局指南》
CodeComposer
bootstrap前端html
一、概念1.Bootstrap是什么?Bootstrap是一个基于HTML、CSS和JavaScript的开源前端框架,主要用于快速构建响应式网页。它是UI库(CSS库),提供了丰富的预定义样式和组件,帮助开发者快速实现美观且功能强大的界面。文档地址:Bootstrap中文文档2.响应式布局响应式布局是一种网页设计方法,使页面能够根据设备屏幕尺寸自动调整布局和样式。核心原理:通过媒体查询(@med
《从零到全栈:AJAX基础概念》
CodeComposer
ajax前端javascript学习
一、AJAX基础概念AJAX,全称为AsynchronousJavaScriptandXML,它是一项极具创新性的技术,能借助异步JavaScript达成数据在前后端之间的交互,彻底革新了网页的交互模式。其核心特性意义重大:异步请求,局部刷新页面:传统网页交互往往是整页刷新,这不仅耗时,还会打断用户操作流程。而AJAX实现异步请求后,仅更新页面中需要变动的部分,大大提升了交互的流畅性与效率,用户无
指定元素全屏与退出全屏,Vue中处理监听esc并修改data数据(监听与作用域问题)
Program W
Vuejs大前端vue.jsjavascript前端
文章目录一、效果二、解决思路三、全屏与退出全屏(工具)四、实例一、效果解决的问题:vue本身监听不到全屏状态中的esc事件,导致无法修改这个按钮的样式icon和tooltip未全屏时:全屏时:二、解决思路一个重要方法:判断当前是否全屏问题:如果vue本身的话,在esc事件时是不会调用这个方法的/**浏览器当前是否全屏@return{*|boolean}*/exportfunctionisFullS
Idea 打Could not find artifact com.sun:tools:jar:1.8.0 at specified path D:\soft\jdk/../lib/tools.jar
松岛的枫叶
javaintellij-ideajar
Couldnotfindartifactcom.sun:tools:jar:1.8.0atspecifiedpathD:\soft\jdk/…/lib/tools.jar->报错如下错,原因可能有很多,我也尝试了多种,比如注释父项目pom文件的modulesCouldnotfindartifactcom.sun:tools:jar:1.8.0atspecifiedpathD:\soft\jdk/.
Springboot 文件下载
松岛的枫叶
springboot
文件下载添加依赖:通常,文件下载功能不需要额外的依赖,但确保你的pom.xml或build.gradle文件中包含SpringWeb依赖。org.springframework.bootspring-boot-starter-webpackagecom.sh.system.controller;importorg.springframework.core.io.ClassPathResource;
Vite 与 Webpack:性能差异解析
阿珊和她的猫
webpack前端node.js
前端开发工程师、技术日更博主、已过CET6阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1牛客高级专题作者、打造专栏《前端面试必备》、《2024面试高频手撕题》蓝桥云课签约作者、上架课程《Vue.js和Egg.js开发企业级健康管理项目》、《带你从入门到实战全面掌握uni-app》文章目录Vite与Webpack:性能差异解析开发模式下的性能ViteWebpack生产模式下的性能V
OpenAI函数调用:使用Assistants API函数工具的一个示例
营赢盈英
AIpythonopenaillmgptAssistants
AreyoulookingtoexpandGPT'scapabilities?CheckoutthistutorialforacompleteexampleofanAIAssistantthatcansendemailswheneverweaskitto.您是否希望扩展GPT的功能?查看这个教程,它提供了一个完整的示例,展示了一个AI助手如何在我们要求时发送电子邮件。Newupdateson17t
【leetcode】 最小差值 c++
m0_73805456
力扣leetcode算法数据结构leetcode贪心算法c++
目录一、leetcode908.最小差值I二、leetcode910.最小差值II一、leetcode908.最小差值I1.问题描述给你一个整数数组nums,和一个整数k。在一个操作中,您可以选择0&nums,intk){intsize=nums.size();intnmin=nums[0],nmax=nums[size-1];for(inti=0;i&nums,intk){sort(nums.b
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