- Django 操作数据库mySQL
Katherine1029
数据库djangomysql
Pythonmanage.pymakemigrationspythonmanage.pymigrateviews.pyfromdjango.shortcutsimportrenderfromdjango.shortcutsimportHttpResponsefromdjango.shortcutsimportredirect#Createyourviewshere.defindex(request
- open-spider开源爬虫工具:抖音数据采集_抖音直播爬虫采集
2401_84010165
程序员爬虫
静态内容抓取是指从网页中直接提取信息的过程。这通常涉及到以下几个步骤:使用requests库发送HTTP请求,获取网页的原始数据。例如,你可以使用requests.get(url)来获取抖音首页的HTML内容。利用BeautifulSoup库对获取到的HTML进行解析。BeautifulSoup提供了丰富的方法来处理和提取HTML文档中的数据。例如,你可以使用find()或find_all()方法
- 【C++】C++中的find与find_if函数
Mr_Dwj
C++c++算法c语言开发语言
目录一、find1.1在vector中查询1.2在string中查询二、find_if在C++编程语言中,find()和find_if()函数都可以用来在容器中查找指定元素,但它们有一些区别一、findfind函数用于查找容器中第一个等于指定值的元素,并返回指向该元素的迭代器。如果在容器中找不到指定值,则返回指向容器末尾的迭代器。1.1在vector中查询例如,下面的代码使用find函数在vect
- Qt编写简单Tcp通信server端
伏彦
Qt学习qttcp通信最简单
参考:http://www.cnblogs.com/findumars/p/5838531.html新建一个widgetapplication一路确定在新建的.pro文件中添加QT+=network在.h文件中添加头文件#include#include.h文件也不长直接贴上来算啦#ifndefMAINWINDOW_H#defineMAINWINDOW_H#include#include#inclu
- Leetcode 刷题笔记 图论part05
平乐君
leetcode笔记图论
卡码网107寻找存在的路径初识并查集并查集功能:寻找根节点,函数:find(intu),也就是判断这个节点的祖先节点是哪个将两个节点接入到同一个集合,函数:join(intu,intv),将两个节点连在同一个根节点上判断两个节点是否在同一个集合,函数:isSame(intu,intv),就是判断两个节点是不是同一个根节点classUnionFind:def__init__(self,size):s
- centos yum报错:Could not resolve host: mirrorlist.centos.org; 未知的错误
flying_fish79
Linuxcentoslinux运维
1报错信息Couldnotretrievemirrorlisthttp://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=stockerrorwas14:curl#6-“Couldnotresolvehost:mirrorlist.centos.org;未知的错误”Cannotfindavalidbaseurlforrepo:
- 印度BIS认证的流程费用及周期,一文全解
hsjc_demon
印度印度bis检测认证华商检测
关注我们,解锁更多实用知识与独家资讯,你的成长路上,我们一路相伴!在当今全球化的商业格局中,印度市场凭借其庞大的消费群体和持续增长的经济活力,成为众多企业眼中极具潜力的发展方向。然而,要顺利进入印度市场,企业需跨越诸多门槛,其中BIS认证便是极为关键的一环。今天,就让我们全面深入地了解印度BIS认证,为企业开拓印度市场奠定基础。印度BIS认证BIS认证由印度标准局(TheBureauofIndia
- 单链表的查找和插入,删除操作
所以什么名字没被取
数据结构
1.单链表的查找snode*slistfind(snode*stlheap,stltypex){while(stlheap){if(stlheap->data==x){returnstlheap;}stlheap=stlheap->next;}returnNULL;}2.单链表的插入操作2.1在指定位置之前插入节点voidslistinsert(snode**stlheap,snode*pos,s
- json处理(jackson)
郑重其事,鹏程万里
常用类库APIjson
ObjectMapper配置方法(链式调用)方法描述registerModule(Modulemodule)注册模块registerModules(Module…modules)注册多个模块findAndRegisterModules()查找并注册模块setSerializerFactory(SerializerFactoryf)设置序列化工厂setSerializerProvider(Defau
- 爬虫技术——抓取滴滴打车优惠券
weixin_30363509
爬虫python
本文介绍如何抓取滴滴打车优惠券一、数据来源券妈妈。二、抓取方法使用simple_html_dom的方式先抓取整个页面,再进行元素分析。实现代码如下find('tabletbody',0);echo$html_bj_content;foreach($html_bj_content->find('tr')as$item){$title=$item->find('td',0)->plaintext;$s
- Mac 中批量修改文件编码格式
空幻无灵
操作系统
由于编码原因,在sublime等编辑器打开的文件中文出现乱码,需要将文件的编码格式修改为UTF-81、进入需要修改文件目录//方法一:修改目下所有文件编码格式find*-execsh-c"enconv-Lzh_CN-xUTF-8{}"\;//注意后面的结束标示"\;"//方法二mkdiroutputfind*.txt-execsh-c"iconv-fGB2312-tUTF-8{}>output/{
- (UI自动化测试web端)第二篇:元素定位的方法_css定位ID选择器
_庄@雅@丽
UI自动化测试csscss元素定位id选择器
看代码里的【find_element_by_css_selector()】()里的表达式怎么写?文章介绍了第一种写法id选择器,其实XPath元素定位要比CSS好用,原因是CSS无法使用下标(工作当中也是常用的xpath),但CSS定位速度比XPath快,原因是xpath是扫描整个文档的,而CSS不是。1、什么是CSS定位?css是可以用来在selenium中定位元素的。在selenium中推荐使
- UI自动化测试之八大元素定位方法(最新版)
软测小子
UI自动化测试pythonselenium功能测试
Selenium—UI自动化测试之八大元素定位方法(最新版)前言UI界面本质上就是HTML直接体现,脚本通过HTML标签信息来找到具体的元素。元素定位:通过代码调用方法查找元素一、ID定位概念:通过元素的id属性来定位元素前置:所要定位的元素必须要有id属性方法:driver.find_element(By.ID,“”)**示例:**输入用户名和密码importtimefromseleniumim
- 【leetcode hot 100 153】寻找旋转排序数组中的最小值
longii11
leetcode算法数据结构
解法一:(二分查找)变化的地方为最小的数。若左边有序,先记录最左边的元素未最小值(可能存在没有变化的数组:最左边为最小),再往右找最小的数;否则右边有序,说明变化在左边,继续往右边寻找。classSolution{publicintfindMin(int[]nums){//左边有序:先记录最左边的元素未最小值,再往右找最小的数intn=nums.length;intmin=Integer.MAX_
- 《Operating System Concepts》阅读笔记:p473-p480
操作系统
《OperatingSystemConcepts》学习第38天,p473-p480总结,总计8页。一、技术总结1.RAIDs(1)定义redundantarraysofindependentdisks(RAID):Adiskorganizationtechniqueinwhichtwoormorestoragedevicesworktogether,usuallywithprotectionfro
- 蓝桥杯--新手入门day7
城南花已开226
蓝桥杯新手入门python每日一题算法
7.整数删除题目:解法1:暴力for循环代码1:deffind(n):miv=arry[0]mid=0foriinrange(1,len(arry)-1):ifn[i]0:arry[i-1]+=mivifmidarr[left]:smallest=left#如果右子节点存在,且小于当前节点,更新最小值ifrightarr[right]:smallest=right#如果最小值不是当前节点,交换它们
- 正则表达式基本语法和Java中的简单使用
XF鸭
SX记录正则表达式
先来个例子publicstaticfinalPatternCHINESE_PATTERN=Pattern.compile("[\\u4e00-\\u9fa5]");/检测字符串是否包含汉字Stringtext="Hello世界";booleanhasChinese=CHINESE_PATTERN.matcher(text).find();//返回true//提取所有汉字Matchermatcher
- Linux第零节:Linux命令速查图表(按功能分类)
熊峰峰
5.Linuxlinuxphp
Linux命令速查图表(按功能分类)思维导图示意Linux命令文件操作权限管理系统管理网络操作文本处理压缩归档ls/cd/pwdmkdir/rm/cpcat/less/findchmodchownps/top/killshutdown/unamecurl/netstatnc/tcpdumpgrep/awk/sedtar/zip/unzip一、文件与目录操作命令功能描述常用选项示例ls列出目录内容-
- Mac 清理 maven仓库无效引用
潇凝子潇
macosmaven
clean_maven_repo.sh#!/bin/bash#设置Maven仓库路径MAVEN_REPO="$HOME/.m2/repository"echo"$MAVEN_REPO"#进入Maven仓库目录cd"$MAVEN_REPO"||exit#查找并删除无效的引用find.-name"*.lastUpdated"-execrm{}\;#查找并删除空目录find.-typed-empty-d
- 力扣算法ing(35 / 100)
菥菥爱嘻嘻
小白学习算法算法leetcodetypescriptjavascript
3.22104.二叉树的最大深度我的思路:dfs,深度优先搜索或者说能不能先根搜索,根层数3192nullmax=2202153nullmax=373nullmax=3我的代码:if(head.next===null)maxreturnfunctionmaxDepth(root:TreeNode|null):number{functionfindMax(root:TreeNode|null,dep
- ZTE MU5001 5G Mobile WiFi Router Review
小2不语
5Gandroid
ZTEMU5001isanew5GmobileWiFiHotspotwithWiFi6whichiswidelyavailableformanynetworkprovidersinmanycountries.IfyouhadusedtheZTE4GMobileWiFiRoutersuchasZTEMF970orZTEMF980,youwillfindthenew5GpocketWiFirouter
- 代码随想录算法训练营DAY59|110.字符串接龙、105.有向图的完全可达性、106. 岛屿的周长
阿緑
代码随想录打卡算法
110.字符串接龙fromcollectionsimportdequedeffindshortestpath(strlist,beginstr,endstr):que=deque()visited={}que.append(beginstr)visited[beginstr]=1result=0whileque:cur=que.popleft()result=visited[cur]foriinr
- Android Studio 中将 AAR 包发布到 Maven 本地仓库
帅次
AndroidStudioandroidstudiomavenandroidkotlinfluttergradlemacos
目录1.配置build.gradle.kts(或build.gradle)2.配置publishing任务3.发布到本地Maven仓库3.1Couldnotfindmethodpublications()forarguments...3.2bash:./gradlew:Permissiondenied3.3AndroidGradlepluginrequiresJava17torun.Youarec
- 笔记:代码随想录算法训练营day60:并查集理论基础、寻找存在的路径
jingjingjing1111
笔记
本文为学习并查集理论基础|代码随想录、代码随想录过程中的思考find是找的顶头上司,而不是当前上司,最后怎么也得找到一个顶头上司的上司是自己,要不然这个结构也不成立使用issame替换会使被操作者为当前节点,而非根节点。join(u,v)的功能为将v的根节点挂到u的根节点下模拟过程可以看出,join中的find中的路径压缩要在长度大于2(路径大于1)的时候才会体现出来107.寻找存在的路径卡码网题
- unity3D获取游戏物体的四种方式
qq_35430208
unity3d游戏uinity3d图形渲染3d渲染游戏引擎unity3D获取游戏物体
一、第一种:二、第二种:voidStart(){print(transform.Find("GameObject(1)/GameObject"));print(transform.Find("GameObject(2)"));}三、第三种:比较耗性能,不推荐使用voidStart(){GameObjectmainCameraGo=GameObject.Find("MainCamera");//查找
- Docker build 报错 “ Cannot find a valid baseurl for repo: base/7/x86_64 ” 解决
EricLi404
linuxDockercentosyumdockercentos7linux
错误内容dockerbuild阶段报错如下:SendingbuildcontexttoDockerdaemon2.048kBStep1/3:FROMcentos:7--->8652b9f0cb4cStep2/3:RUNyum-yupdate--->Runningin4e4e11d880f3Loadedplugins:fastestmirror,ovlDeterminingfastestmirror
- 解决Centos使用yum命令报错“Cannot find a valid baseurl for repo: base/7/x86_64”问题
牛奶咖啡13
运维/测试centoslinux解决Centos仓库源失效InfluxDB作服务失败问题[Errno256]HTTPSError404
一、问题描述我们在使用Centos7.9使用【sudoyuminstallinfluxdb2】命令安装influxDB数据库的时候提示“LoadingmirrorspeedsfromcachedhostfileCouldnotretrievemirrorlisthttp://mirrorlist.centos.org/release=7&arch=x86_64&repo=os&infra=stoc
- 根据文件名称查询文件所在位置
姚不倒
linux运维数据库
在Linux中,根据文件名称查询文件所在位置主要通过命令行工具实现,以下是几种常用方法:---###**1.使用`find`命令(最灵活)**`find`命令可以递归搜索指定目录下的文件,支持按名称、类型、时间等条件过滤。####**基础语法**```bashfind[搜索路径]-name"文件名"```####**示例**-全局搜索名为`example.txt`的文件:```bashfind/-
- LeetCode 160 Intersection of Two Linked Lists(链表)
nudt_oys
数据结构LeetCode
Writeaprogramtofindthenodeatwhichtheintersectionoftwosinglylinkedlistsbegins.Forexample,thefollowingtwolinkedlists:A:a1→a2↘c1→c2→c3↗B:b1→b2→b3begintointersectatnodec1.Notes:Ifthetwolinkedlistshavenoin
- [LeetCode]--160. Intersection of Two Linked Lists
杜鲁门
LeetCodeLeetCode算法分析leetcode链表相同尾部算法链表遍历算法算法遍历
Writeaprogramtofindthenodeatwhichtheintersectionoftwosinglylinkedlistsbegins.Forexample,thefollowingtwolinkedlists:A:a1→a2↘c1→c2→c3↗B:b1→b2→b3begintointersectatnodec1.Notes:Ifthetwolinkedlistshavenoin
- 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