- 通用图片 OCR 到 Word API 数据接口
2301_78772565
ocr
通用图片OCR到WordAPI数据接口高可用图像识别引擎,基于机器学习,超精准识别率。1.产品功能通用的识别接口,支持多种图片格式;支持中英文字符混合识别;支持Base64以及网络地址传参;基于机器学习不断提高的识别率;输出的Word文件永久存储;数据持续更新与维护;全接口支持HTTPS(TLSv1.0/v1.1/v1.2/v1.3);全面兼容AppleATS;全国多节点CDN部署;接口极速响应,
- ASP开发中的常用加密与解密技术
安检
本文还有配套的精品资源,点击获取简介:ASP开发中,为了确保数据安全和代码保护,开发者需要利用加密和解密技术。本文将介绍ASP常用的加密解密方法,包括字符串的哈希处理、对称加密算法、Base64编码以及HTML和JavaScript中的编码与解码。文中不仅解释了各种方法的使用原理,还提供了实例代码。通过这些内容,读者可以了解如何在ASP应用中安全地处理敏感数据。1.ASP常用加密解密方法介绍在信息
- 使用@RequestBodyAdvice处理客户端的加密请求体
SpringBoot中文社区
业务场景:客户端把json数据进行加密后,编码成Base64字符串,提交给服务器。服务器再进行解密。使用@RequestBodyAdvice,可以在不修改任何Controller代码的前提下,轻松完成。之前写过一篇帖子,使用@ResponseBodyAdvice统一对响应的数据进行处理。演示了,使用ResponseBodyAdvice统一对响应给客户的json进行AES加密。RequestBody
- AndroidStudio 打印超长Log显示不全的解决方法
追梦小乐
比如有时候,在调试接口的时候,我们想把Bitmap转成Base64字符串,然后粘贴到网上的小工具转换为图片,看看是不是某一张图片,你会发现图片的Base64字符串超级长,而且还显示不全,下面是获取超长字符串的俩种方法:1、更改Log输出的最大长度(代码来自网上)publicstaticvoidi(Stringtag,Stringmsg){//信息太长,分段打印//因为String的length是字
- Spring Boot + AOP + Jasypt,3 步实现敏感数据脱敏
在企业级应用开发中,用户敏感信息(如手机号、邮箱、密码等)的保护至关重要。SpringBoot生态提供了Jasypt加密框架与AOP编程模型的组合方案,可在不侵入业务逻辑的前提下实现数据全生命周期的脱敏管理。加密工具类importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;importsun.misc.BASE64Decoder;importsun
- 网络安全渗透攻击案例实战:某公司内网为目标的渗透测试全过程
目录一、案例背景二、目标分析(信息收集阶段)外部信息搜集指纹识别和端口扫描三、攻击流程(渗透测试全过程)步骤1:Web漏洞利用——泛微OA远程命令执行漏洞(CVE-2023-2648)步骤2:权限维持与横向移动2.1获取本地密码信息2.2利用数据库读取其他管理员账号密码(Base64加密)2.3横向移动尝试:步骤3:提权(本地提权)漏洞利用:CVE-2016-0099(WindowsKernel提
- goframe框架中获取url内容并转成Base64字符串
大叔是90后大叔
gogo
goframe框架中获取url内容并转成Base64字符串packagetoolsimport("context""encoding/base64""github.com/gogf/gf/v2/frame/g")funcConvertUrlContentToBase64String(urlStrstring)(base64StrContentstring,errerror){ctx:=contex
- php中的hmac,JavaScript通过CryptoJS等效实现php中hash_hmac函数加密raw_output配置
好想不取名
php中的hmac
在一个项目中,客户需要从前端签名,加密插件使用的cryptoJS,使用与后端一样的签名流程(HmacSHA1后Base64.encode)发现并不能通过签名认证,签名校验方后端php代码中使用hash_hmac函数,先来看一下则会个函数的官网说明:说明hash_hmac(string$algo,string$data,string$key[,bool$raw_output=FALSE]):stri
- 图片base64转存本地url
石小菜
图片php
//图片base64转存本地urlfunctionbase64_to_local_url(){$base64="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2
- python ffmpeg pipe,管道的ffmpeg的输入和输出在python
呼呼啦啦就瘸了
pythonffmpegpipe
I'musingffmpegtocreateavideo,fromalistofbase64encodedimagesthatIpipeintoffmpeg.Outputtingtoafile(usingtheattachedcodebelow)worksperfectly,butwhatIwouldliketoachieveistogettheoutputtoaPythonvariableins
- tiktok 弹幕 LikeMessage分析
wx a15018601872
javagonode.jspythontiktok弹幕probuf
声明:本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!逆向分析编写解析文件序号必须和浏览器序号一致否则没有数据。数据为空情况。部分代码如下functiondecrypt(res){D=newwindow.K()returnD.decodeResponse(base64ToArrayB
- Flink cdc同步增量数据timestamp字段相差八小时(分析|解决)不是粘贴复制的!
BUG FIXER
大数据flinkandroid大数据
问题我使用flinkcdc同步mysql到mysql遇到了timestamp字段缺少八小时的问题。很少无语,flink,cdc,debezium时区都设置了,没有任何效果!分析问题出现在mysqlbinlog身上!!!因为默认mysql会使用UTC来存储binlog,你可以使用下方的sql验证:mysqlbinlog--base64-output=DECODE-ROWS-v--start-date
- Python-DES加密和解密
Python有着丰富的类库,可以快速实现基于DES的加密和解密。下面就是简单的几行代码就可以实现DES-CBC,采用PKCS5进行填充的标准加密和解密。importpyDes,base64def__encrypt(data,key):des=pyDes.des(key,pyDes.CBC,b"\0\0\0\0\0\0\0\0",pad=None,padmode=pyDes.PAD_PKCS5)ec
- 第二十八:Fiddler抓包-抓取Android7.0以上的Https包(三)-夜神模拟器+Xposed+JustTrustMe
卢卡平头哥
Fiddlerfiddlerhttpsandroid
一.简介1.二次加密:有的APP,在涉及到关键数据通信时,会将正文二次加密后才通过HTTPS发送1.1.抓包抓到的是一堆二进制base642.自带HTTPClient:像支付宝那样的变态,自己带一个基于so的HTTPClient库2.1.对于关键数据,都不走URLConnection和OkHttp,而是走自己的HTTPClient库2.2.甚至一些
- Python淘宝拍立淘按图搜索API接口,json数据示例参考
ID_18007905473
pythonAPI数据库json大数据python
淘宝拍立淘按图搜索API接口示例淘宝的拍立淘(图片搜索)功能通常是通过淘宝开放平台提供的API实现的。以下是一个模拟的JSON数据示例和接口调用参考:模拟API请求示例importrequestsimportbase64#示例图片路径image_path="example.jpg"#读取图片并编码为base64withopen(image_path,"rb")asimage_file:encode
- 原生cesium 实现 多图例展示+点聚合(base64图标)
个人简介:某大型测绘遥感企业资深Webgis开发工程师,软件设计师(中级)、CSDN优质创作者作者:柳晓黑胡椒❣️专栏:cesium实践(原生)若有帮助,还请关注➕点赞➕收藏,不行的话我再努努力需求背景解决思路解决效果index.vue需求背景1.需要展示多个站点图例的图表及闪烁效果2.需要考虑层级高时,多图例的点聚合效果,且点聚合显示需要采用设计的圆形图标解决思路闪烁效果:采用css3的anim
- java之x509证书解析
我不是程序员~~~~
python实战javapython开发语言
importjava.io.ByteArrayInputStream;importjava.security.cert.*;importjava.security.*;importjava.util.Base64;importjava.util
- 铜墙铁壁 - 密钥管理的最佳实践
weixin_42587823
云原生安全密钥安全
铜墙铁壁-密钥管理的最佳实践第一部分:回顾KubernetesSecret的局限性我们在之前的系列中已经接触过K8sSecret对象。它提供了一种将敏感数据与Pod定义分离的基础机制。但对于追求极致安全的生产环境,它存在几个显著的局限性:默认仅编码非加密:etcd中存储的Secret数据默认只经过了Base64编码,这是一种可逆的编码方式,并非加密。任何人只要能访问到etcd的数据,就能轻易解码获
- 【Python】Python 3.10 新特性
月落一寸光
Python新特性python开发语言
文章目录前言:一、新特性1.1PEP617;带括号的上下文管理器1.2更清楚的错误消息1.3PEP634:结构化模式匹配(match)1.4PEP604:有关类型提示的新增特性1.5PEP613:类型别名二、改进的模块2.1`asyncio`2.2`argparse`2.3`base64`2.4`collections.abc`2.5`dataclasses``__slots__`2.6`trac
- 图片转字符串存储在SQLite中
你就是乌鸦嘴
qt6.3笔记qt
将图片转化为字符串放入Sqlite数据库,以BLOB类型存储。一、主要函数1、图片转字符串使用内存读写器,指定格式存入字节数组,字节数组转Base64以Latin1编码输出到文本框。voidMainWindow::on_actPtB_triggered(){ui->plainTextEdit->clear();if(ui->labPhoto->pixmap().isNull()){labtext-
- 前端sm2国密加密解密
sghu8023
前端javascript开发语言安全
1.下载国密包npmism-crypto2.获取后端的公钥注sm-crypto使用BC库加解密前端密钥与后端密钥是两队,非常规的base64密钥前端公钥需要在前面加04占位否则无法解密//前端公钥constpublicKey='0453bac6d2499e427529b3fcd213c33fed87a596d27c52334d457c222c729727925bae7bd7937b2dee4493
- uniapp开发小程序时,css设置的背景图无法显示?
小跳不会Coding
uniapp前端
uniapp开发小程序时,css设置的背景图无法显示问题:(如何解决)第一种方式:将图片转为base64格式。使用站长工具,base64图片在线转换工具(https://tool.chinaz.com/tools/imgtobase)第二种方式:</view
- 金蝶api对接沙箱环境python代码调试
Python大数据分析
python
根据官网文档加密规则importtimeimportrandomimporthmacimporthashlibimportbase64importrequestsimporturllib.parse#基础参数method="GET"path="/jdy/v2/scm/pur_order"base_url="https://api.kingdee.com"full_url=base_url+path
- Flutter学习之Base64加密及解密
Pillar~
FlutterFlutter
1、导包:import'dart:convert';2、使用方法:/**Base64加密*/staticStringencodeBase64(Stringdata){varcontent=utf8.encode(data);vardigest=base64Encode(content);returndigest;}/**Base64解密*/staticStringdecodeBase64(Stri
- 【无标题】
妮妮喔妮
前端javascript开发语言
使用yarnaddclassnames安装。这是antd中关于button组件的写法!所以我们自己取类名也可以这么取!现在我们直接模仿antd官网中button组件的样式搜索网站UNPKG这是自己写组件的大致导入导出格式。写好组件之后记得引入。好像看到很多次JSX了确实应该了解一下然后图片的Base64格式也应该学习一下。目前的包管理器我知道的有npm、pnpm、yarn、cnpm这些,cnpm就
- python使用sqllite处理db文件中的图片存读问题
clown_38501
数据库python
脚本如下:#1.SQlite原生类型:BLOB对应python的bytes字节码"""date:2024.03.04author:clownpython3使用sqlite3处理db类型文件中图片存读"""importsysimportsqlite3importbase64importcv2importnumpyasnpprint("python版本:",sys.version)#3.6.8(tag
- 仿 Twitter 点赞爱心动画效果 其中用到 animation
hackchen
html前端css
大概的原理,准备一张雪碧图,通过hover改变雪碧图的X坐标,达到动画的效果HTML:CSS:.heart{width:100px;height:100px;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background:url("data:image/png;base64,iVBORw0KGgoAAAANS
- CTF-bugku-[where is flag 4]-base64和zip压缩包
沧海一粟日尽其用
安全python
step1:base64解码为16进制数据Base64解码Base64编码UTF8GB2312UTF16GBK二进制十六进制解密-TheX在线工具支持常见的utf8/gbk/utf16/gb2312编码。本工具可以自动探测识别一些常用的数据,并对他进行优化输出。如自动格式化xml和json数据、检测出图片的尺寸并可另存到文件。https://the-x.cn/base64/16进制的数据5D034
- jdk升级到11问题系列-第三方依赖使用了BASE64Decoder
uplinker
javajavajdk11
问题描述:第三方依赖包,目前出现问题的是某银行的sdk导致的使用了sun.misc.BASE64Decoder但是在jdk11这个版本该类已经被删除,导致运行是出现错误Causedby:java.lang.NoClassDefFoundError:sun/misc/BASE64Encoder替换方式:Base64.Encoderencoder=Base64.getEncoder();Base64.
- 前端base64遇到的坑:window.btoa中文报错的修复方案
前端
问题是这样的:同事在使用的过程中发现一个问题:点击确定按钮后,有个报错提示。如下截图所示:报错文本是:invalidcharactererrorfailedtoexecutebtoaonwindowthestringtobeencodedcontainscharactersoutsideofthelatin1range详情:前端base64遇到的坑:window.btoa中文报错的修复方案
- 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