- 力扣 hot100 Day34
qq_51397044
Hot100leetcode算法
226.翻转二叉树给你一棵二叉树的根节点root,翻转这棵二叉树,并返回其根节点翻转的定义是,对于每个节点,交换它的左右子树//抄的classSolution{public:TreeNode*invertTree(TreeNode*root){if(root==nullptr)returnnullptr;TreeNode*left=invertTree(root->left);TreeNode*r
- qt 信号和槽
随意023
Qtqt开发语言
理解基本概念信号(Signals):是特殊的函数,当对象的状态发生变化时会发出信号。信号无需实现体,只需在类中声明。例如,当用户点击一个按钮时,按钮对象会发出clicked()信号。槽(Slots):是普通的C++成员函数,可以被连接到信号上。当信号被发出时,与之连接的槽函数会被自动调用。槽函数可以有参数和返回值,也可以是虚函数。连接(Connection):使用QObject::conne
- JVM类加载过程
JVM类加载过程是将类的字节码文件(.class)加载到内存,并转换为运行时数据结构的过程,核心分为加载(Loading)、链接(Linking)、初始化(Initialization)三个阶段,其中链接又包含验证、准备、解析三个子阶段。以下是详细流程:1.加载(Loading)任务:查找并加载类的二进制数据。过程:通过类的全限定名(如com.example.MyClass)获取字节码。将字节
- python语言视频格式转换工具程序代码ZXQZQ
EYYLTV
python开发语言
importsubprocessimportosimporttkinterastkfromtkinterimportfiledialog,messagebox,ttkimportthreadingimportreclassVideoConverter:def__init__(self,ffmpeg_path):self.ffmpeg_path=ffmpeg_pathdefconvert_video
- Java基础:Java运行原理
1024de小shen
Java基础java
文章目录一、Java运行原理二、Java虚拟机2.1JVM概念2.2JVM体系结构2.2.1ClassLoader:类装载器2.2.2执行引擎2.2.3运行时数据区三、Java线程四、Java方法调用五、Java字节码执行一、Java运行原理我们都知道,机器只能识别0和1,那么程序是如何在机器上运行的呢?当我们在IDEA等开发工具上编写Java代码,经过构建(javac.exe编译)后,会生成字节
- mybatis考试
题目:学生选课管理系统(高级版,无事务)数据库表结构(保持不变)1.学生表(student)id(主键,自增)name(学生姓名)gender(性别)age(年龄)class_id(班级ID)2.班级表(class)id(主键,自增)class_name(班级名称)课程表(course)id(主键,自增)course_name(课程名称)teacher(授课老师)3.选课表(student_cou
- windows安装ELK
ELK是什么?ELK是Elasticsearch、Logstash和Kibana三款开源软件的组合,主要用于日志收集、存储、分析和可视化。三款软件版本必须保持一致三款软件下载地址通过网盘分享的文件:elasticsearch-9.0.3-windows-x86_64.zip等3个文件链接:https://pan.baidu.com/s/16Y7T6TYIZZ4uAou4ZeoQ4w?pwd=e8x
- python文件遍历夹,python实现文件夹遍历
kpbs
python文件遍历夹
python中os.path模块用于操作文件或文件夹os.path.exists(path)判断文件路径是否存在dir="c:\windows"ifos.path.exists(dir):print"direxists"else:print"noexists"os.path.isfile(path)判断path是否是文件dir="c:\windows\system32\cmd.exe"ifos.p
- 2958、最多K个重复元素的最长子数组
椎名ひる
#滑动窗口leetcodeleetcode算法数据结构
题目:解答:在上一题的基础上,修改一下即可。上一题是哈希表的value与1相比,本题改成与k相比即可。classSolution{public:intmaxSubarrayLength(vector&nums,intk){unordered_mapcnt;intleft=0,right=0;intlen=nums.size();intans=0;for(right;rightk){cnt[nums
- Python tip:优先使用函数
CS创新实验室
Pythonpythonjava服务器
1.优先使用函数而非方法静态方法通常可以直接作为函数存在。对于大多数不使用传入的实例或类的方法来说,同样如此。换句话说,不要这样写:frommathimportisqrtclassTools:@staticmethoddefis_prime(n):ifn>>Tools.is_prime(7)True而不是这样:>>>is_prime(7)True把is_prime函数放在类里,既让实现变得复杂,又
- jmeter如何做自动化接口测试?
AIZHINAN
jmeter自动化接口测试jmeter接口测试
JMeter不仅可以做性能测试,还能用于自动化接口测试,结合断言、参数化和报告生成,实现持续集成(CI)。以下是简明步骤:2小时讲解自动化测试工具Jmeter,如何实现接口测试(快速上手教程)1.核心步骤(1)创建测试计划新建ThreadGroup(线程组),设置线程数=1(单次执行)。添加HTTPRequest定义接口请求(URL、Method、Headers、Body)。(2)参数化CSV文件
- Python AI 绘画安装
只只283
python人工智能
安装PythonAI绘画环境(如StableDiffusion)可以让你在本地或云端用文本生成图像。下面是适合Windows用户的完整安装步骤,包括主流工具如StableDiffusion、ComfyUI、WebUI等。一、推荐工具:StableDiffusionWebUI(AUTOMATIC1111)这是最稳定、最受欢迎的本地AI绘图框架,支持:✅文生图(txt2img)、图生图(img2img
- Windows中安装python-embed版本和VSCode免安装版本python开发环境
Effordson
Python学习windowspythonvscode
python-embed版本下载安装官网下载:下载地址Tips:下载Windowsembeddablepackage安装方法:解压到指定目录即可,无需安装配置环境变量python.exe文件目录配置到Path变量中,cmd中运行python--version查看配置是成功pip安装检查是否安装:python-mensurepip--default-pip下载地址:官方下载安装方法:pythonge
- MYSQL8.0 WITH RECURSIVE递归查询
MYSQL8.0版本以上使用WITHRECURSIVE实现递归注意:写法比较简单,也比较灵活,但是只适用于MySQL8.0及以上版本,这种写法其实和PostgreSQL的写法是一样的。WITHRECURSIVE语法WITHrecursive表名AS(初始语句(非递归部分)UNIONALL递归部分语句)[SELECT|INSERT|UPDATE|DELETE]withrecursive由两部分组成。
- Web自动化测试的八大元素定位
今天记单词了嘛
前端javascript自动化
1.什么时候适合用文本自动化?1.1软件需求变更不频繁1.2项目周期比较长1.3自动化的脚本能够重复利用2.在Web自动化中元素的8大定位方法id,name,class_name,xpath,css,tag_name,link_text,partail_link_text下面例子以百度为例ID定位:driver,find_element(By.ID).send_keys("学院")name定位:d
- 小程序海报生成神器之一lime-painter配合uniapp简单使用示例
hackchen
小程序uni-app
组件介绍lime-painter是一个运行在uniapp上优雅的海报生成插件,支持JSON方式和template方式生成海报资源完整demo:https://gitee.com/hackchen/demo-collection/tree/master/front-end/uniapp/lime-painter-demo需要注意的问题包含图片最好的地址最好要支持跨域nvue必须为HBX3.4.11及
- mysql5.7 windows版本 忘记密码
目录1.编辑配置文件2.重启服务3.无密码登录4.修改密码1.编辑配置文件找到你的my.cnf/my.ini文件:[mysqld]skip-grant-tables#添加这行如果忘记配置文件,打开服务,参考下图,一般情况下可以找到mysql部署目录。2.重启服务3.无密码登录mysql-uroot4.修改密码先刷新FLUSHPRIVILEGES;执行修改密码ALTERUSER'root'@'loc
- java分析tomcat日志_tomcat日志分析详解
Z张N
java分析tomcat日志
在server.xml里的标签下加上directory="logs"prefix="localhost_access_log."suffix=".txt"pattern="common"resolveHosts="false"/>就可以了,下面咱们逐一分析各个参数。className官方文档上说了ThisMUSTbesettoorg.apache.catalina.valves.AccessLog
- Python 3.7 安装包及详细安装指南:助你轻松搭建开发环境
金琴莺
Python3.7安装包及详细安装指南:助你轻松搭建开发环境python3.7安装包附安装教程.zip项目地址:https://gitcode.com/open-source-toolkit/a278c项目介绍在编程的世界里,Python以其简洁易读的语法和强大的功能,成为了众多开发者的首选语言。然而,对于初学者或需要在Windows系统上搭建Python开发环境的用户来说,安装Python可能是
- 修改阿里云vps为自定义用户登录
mgx_718
服务器
win系统上找到控制面板-->用户账户-->更改账户类型点击更改账户类型,此时我们看到vps的默认管理员账户Administrator。为了防止vps被别人使用默认账户Administrator攻击,我们添加一个用户账户,点击添加用户账户。用户名建议奇葩点,可在用户名生成器-随机大全网页上随机生成用户名(该用户名要记录下来,避免忘记),按要求添加用户。添加好新的账户后,双击新增的用户Zyh6qtR
- Oracle 中的 JOB
Oracle中的JOB是一种用于自动化执行特定任务的机制,它允许你在指定的时间间隔或特定时间点执行SQL语句或PL/SQL块。以下是关于OracleJOB的详细讲解:1.JOB的基本概念OracleJOB是数据库中调度任务的一种方式,类似于操作系统的定时任务(如Linux的cron或Windows的任务计划程序)。通过JOB,你可以:在指定时间点执行一次性任务。按固定间隔(如每天、每周)重复执行任
- Lua 安装使用教程
小奇JAVA面试
安装使用教程lua开发语言
一、Lua简介Lua是一门轻量级、高性能的脚本语言,具有简洁语法、嵌入性强、可扩展性高等特点。广泛应用于游戏开发(如Roblox、WorldofWarcraft)、嵌入式开发、配置脚本、Nginx扩展(OpenResty)等领域。二、Lua安装方式2.1Windows安装方法一:使用LuaforWindows(Luarocks支持)下载地址:https://github.com/rjpcomput
- LeetCode——二分查找(704. 二分查找,278. 第一个错误的版本,35. 搜索插入位置)
荒野大飞
leetcode算法散列表
目录练习题目题解704.二分查找278.第一个错误的版本35.搜索插入位置练习题目练习题目题目链接704.二分查找传送门.278.第一个错误的版本传送门.35.搜索插入位置传送门.题解704.二分查找classSolution{public
- vue | 不同系统 清理文件的方式
要加油哦~
问题导向vue项目笔记vue.js前端javascript
省流总结:清理文件的几种写法:①手动清理dist文件rm-rfdist(mas的写法),在重新运行npmrunbuild②rd/s/q要删除的文件名(Windows的CMD写法)③Remove-Item-Recurse-Force要删除的文件名(✔WindowsPowerShell的写法)【vue常用写法,注意是强制删除!不要删除错了】-Recurse:递归删除-Force:强制删除(包括只读文件
- 关于系统无法找到 arm-linux-gcc 命令,这表明你的环境中尚未安装 ARM 交叉编译工具链。以下是详细的解决方案:(DIY机器人工房)
DIY机器人工房
软件问题解决方法大全arm开发linux运维交叉编译嵌入式
1.错误原因分析错误信息:无法将“arm-linux-gcc”项识别为cmdlet/函数/程序这说明Windows或Cygwin环境中没有安装ARM交叉编译工具,或者工具路径未添加到系统PATH中。当前环境:你之前使用的是Cygwin环境下的x86_64架构GCC(用于编译x86程序),而arm-linux-gcc是专门用于编译ARM架构程序的工具链,需要额外安装。2.解决方案:安装ARM交叉编译
- Notepad--下载安装教程
以下是Notepad–的下载和安装教程(以Windows系统为例):1.下载Notepad–访问官网打开浏览器,进入Notepad--的官方GitHub页面:https://github.com/cxasm/notepad–加载慢可以直接访问gitee下载:https://gitee.com/cxasm/notepad–/releases/tag/v3.2选择下载版本在页面右侧的“Releases
- React JSX属性传递规则(事件处理函数名必须用驼峰式;内联样式必须是JavaScript对象,键名用驼峰命名;className、htmlFor;自定义属性要以data-开头、动态属性绑定)
Dontla
reactjavascriptreact.js前端
文章目录**1.驼峰式命名法(CamelCase)****2.属性值的类型**-**字符串属性**:直接使用双引号包裹的字符串。-**表达式属性**:使用`{}`包裹JavaScript表达式,动态计算属性值。-**布尔属性**:如果属性值为`true`,可以直接省略值;如果为`false`,则不传递该属性。**3.事件处理**-**规则**:事件处理函数的命名必须使用驼峰式(如`onClick`
- 性能测试中Socket协议
大、大摩王
性能测试Socket
其实在性能测试中HTTP协议居多。但是Socket也是偶尔能遇到1.如何开始录制一个最简单的收发数据包脚本开始录制脚本的时候,使用了一个绿色软件SocketTool.exe,在本机启动了一个TCP服务器端:使用loadrunner录制windowsapplication,启动一个新的SocketTool.exe,创建一个TCPClient,链接刚才启动的服务器,钩选上显示十六进制值,发送31323
- C#生成DLL给C语言调用的例子
caimouse
C#入门到精通c#c语言
usingSystem;usingSystem.Runtime.InteropServices;namespaceCSharpDll{publicclassMathOperations{//使用DllExport特性导出函数,采用Cdecl调用约定[DllExport("Add",CallingConvention=CallingConvention.Cdecl)]publicstaticintA
- 从0开始,手搓一个ViT
星光银河
学习python深度学习机器学习学习神经网络人工智能transformer
importtorchimporttorch.nnasnnimporttorch.nn.functionalasFclassPatchEmbedding(nn.Module):def__init__(self,img_size,patch_size,in_chans,embed_dim):super().__init__()assertimg_size%patch_size==0,"Imagedi
- 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