- golang实现从服务器下载文件到本地指定目录
余生逆风飞翔
golang服务器开发语言
一、连接服务器,采用sftp连接模式packagemiddlewaresimport("fmt""time""github.com/pkg/sftp""golang.org/x/crypto/ssh")//建立服务器连接funcConnect(user,password,hoststring,portint)(*sftp.Client,error){var(auth[]ssh.AuthMethod
- CTF-bugku-crypto-[7+1+0]-base64解码之后做偏移
沧海一粟日尽其用
算法安全python
CTF-bugku-crypto-[7+1+0]-base64解码之后做偏移1.题目2.解题思路2.1base64编码原理2.2解题思路2.2.1base64解码找规律2.2.2破解思路3.解题脚本4.flag5.附EASCII码表1.题目提示信息:7+1+0?格式bugku{xxxxx}密文:4nXna/V7t2LpdLI44mn0fQ==要求:破解密文获得flag2.解题思路2.1base64
- ExoPlayer架构详解与源码分析(7)——SampleQueue(4)
2401_83740189
程序员架构
long[]newSourceIds=newlong[newCapacity];long[]newOffsets=newlong[newCapacity];long[]newTimesUs=newlong[newCapacity];int[]newFlags=newint[newCapacity];int[]newSizes=newint[newCapacity];CryptoData[]newC
- Vue项目中实现AES加密解密
小金子J
前端框架JavaScript分享vue.js前端javascript
在前端开发中,保护用户数据的安全性至关重要。AES(高级加密标准)作为一种广泛使用的对称加密算法,因其高效性和安全性而受到青睐。本文将介绍如何在Vue项目中实现AES加密解密,包括ECB和CBC两种模式。环境搭建在Vue项目中使用AES加密解密功能之前,需要先安装crypto-js库。通过执行以下命令,可以轻松地将crypto-js添加到项目中:npminstallcrypto-js--save-
- Python 对文件的加密和解密
Jinx Boy
python哈希算法开发语言
cryptography库中的Fernet模块提供了一种简单的方法来加密和解密数据。它使用对称加密算法,其中相同的密钥用于加密和解密数据。以下是用Fernet模块对文件进行的加密和解密。加密:importhashlibimportbase64fromcryptography.fernetimportFernetimportosdefstring_to_fernet_key(input_string
- 现代密码学2.2、2.3--由“一次一密”引出具有完美安全的密码方案共同缺点
WeidanJi
现代密码学概率论密码学数学
现代密码学2.2、2.3--由“一次一密/One-TimePad”引出具有完美安全的密码方案共同缺点One-TimePad密码方案定义正确性/correctness完美隐藏性/perfectlysecret具有完美隐藏性的密码方案的共同缺点特例缺点共同缺点博主正在学习INTRODUCTIONTOMODERNCRYPTOGRAPHY(SecondEdition)--JonathanKatz,Yehu
- 下载并解密的ts文件,发现一部分ts文件能播放,一部分不能播放
weixin_41956627
python
问题说明按参考资料中两个链接,获取网站上的m3u8视频,下载并解密了ts文件,发现一部分ts文件能播放,一部分不能播放(解密失败)。解决经过反复尝试,发现疑似是多线程下载ts文件时,解密函数cryptor=AES.new(key,AES.MODE_CBC,key)的问题。当解密函数在线程函数外面(即所有线程每次运行都是用同一个cryptor)发现均有一定概率导致ts文件无法播放。当解密函数在线程函
- 解锁Apache Shiro:新手友好的安全框架指南(一)——整体架构与身份认证_apache shiro的配置包括安全管理器(2)
2401_84281748
程序员apache安全架构
ApacheShiro是一个功能强大且易于使用的Java安全框架,它执行身份验证、授权、加密和会话管理,可用于保护任何应用程序——从命令行应用程序、移动应用程序到最大的web和企业应用程序。Shiro提供了应用程序安全API来执行以下方面:Authentication(认证):验证用户身份,即用户登录。Authorization(授权):访问控制Cryptography(密码学):保护或隐藏私密数
- GO怎么给手机发短信对接验证码短信接口DEMO示例
樱桃桃
发现一个超简单验证码短信接口对接DEMO示例步骤1.注册互亿无线账号2.查找APIID和APIKEY3.代码的书写注册互亿无线账号网站:http://user.ihuyi.com/?JA9Ewr查找APIID和APIKEY注意事项:(1)调试期间,请使用用系统默认的短信内容:您的验证码是:【变量】。请不要把验证码泄露给其他人。packagemainimport("crypto/md5""encod
- http、https、https原理
Vivqst
httphttps网络协议
1.HTTP是超文本传输协议,明文传输,在传输的过程中可以对数据进行篡改或拦截2.HTTPS是超文本传输安全协议,协议的主要功能都依赖于SSL/TLS协议实现的,SSL/TLS的功能实现主要涉及到三种算法:摘要算法、对称加密和非对称加密。3.https中包含3种加密方法,对称加密、非对称加密、散列函数4.由于对称加密的计算量小、加密解密速度快,适合处理大量数据,因此客户端与服务端通信时传输数据使用
- SuperMap iManager云套件iServer镜像定制与更新-以定制达梦依赖为例
Q行天下
SuperMapSuperMapiManagergisjavalinux
文章目录0.应用场景需求1.实现步骤1.1首先云套件新建节点,以该节点为模板1.2复制依赖或文件进入容器1.3进入容器1.4容器内授权文件权限(默认只有读写权限,无执行权限)1.5查看“libcrypto.so”软连接并删除软连接1.6复制达梦依赖到/opt/UGO/Bin目录下1.7提交容器成镜像1.8镜像推送到仓库1.9使用新镜像0.应用场景需求当需要对既有镜像更新依赖或文件以实现新功能时,需
- Java的Base64加密解密详解
微赚淘客系统开发者
java开发语言
Java的Base64加密解密详解大家好,我是免费搭建查券返利机器人赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!在当今数字化时代,数据的安全性和可传递性变得尤为重要。Java编程语言提供了Base64编码和解码的工具,成为保障数据传输和存储安全性的一项重要技术。让我们深入探讨Java中Base64加密解密的原理及应用。什么是Base64?Base64是一种基于64个
- 今后QQ头像可能价值不菲?
我是璐璐ll
据区块链领域的专业媒体ChainNews报道:9月5日,位于中国香港的亚洲首家NFT实体画廊StartArtGallery即将开幕。该画廊此前买入了两件近期十分火爆的NFT作品“加密朋克(CryptoPunk)”系列中的8236号与1970号,成交价格约合人民币450万元。它们作为画廊的重要藏品之一,将与其余NFT展品一同呈现在开幕展上。这两件“重磅”作品放在电脑或手机屏幕上看的话,仅仅是两个像素
- /usr/bin/ld: warning: libssl.so.10, needed by xxx/lib//libcurl.so, may conflict with libssl.so.1.0.0
iummature
linux运维服务器
编译时出现warning/usr/bin/ld:warning:libssl.so.10,neededby/opt/cmms/3thrdparty/libcurl/lib//libcurl.so,mayconflictwithlibssl.so.1.0.0/usr/bin/ld:warning:libcrypto.so.10,neededby/opt/cmms/3thrdparty/libcurl
- Python安装pycrypto报错
爱睡觉的劳拉
python
尝试很多下载VS的,好像都失败了设置环境变量失败了最后做支付接口时调用Crypto时,首先要把开头的字母变成小写,然后pipinstallpycrypto失败各种各样的原因都有。改用下面,一次就好了pipinstallpycryptodome
- python的Crypto加密模块安装失败
hzw0510
pythonpython开发语言
1、报错信息ModuleNotFoundError:NomodulenamedCrypto2、解决方法2.1、先把相关的都卸载pipuninstallpycryptopipuninstallcryptographypipuninstallcryptopipuninstallpycryptodome2.2、直接安装pycryptodomepipinstallpycryptodome==3.19.0#
- python 加密解密
weixin_34194359
python开发工具
1.使用base64s1=base64.encodestring('helloworld')s2=base64.decodestring(s1)prints1,s2结果aGVsbG8gd29ybGQ=helloworldBase64编码,64指A-Z、a-z、0-9、+和/这64个字符,还有“=”号不属于编码字符,而是填充字符。为什么发明这么个编码呢,这个编码的原理很简单,“破解”也很容易,原因是
- python中rsa解密_Python中RSA的加解密
蒲牢森
python中rsa解密
#coding:utf-8from__future__importunicode_literalsimportbase64importosimportsixfromCryptoimportRandomfromCrypto.PublicKeyimportRSAclassPublicKeyFileExists(Exception):passclassRSAEncryption(object):PRIV
- SPIRNGBOOT+VUE实现浏览器播放音频流并合成音频
定制开发才有价值
音视频人工智能语音合成
一、语音合成支持流式返回,通过WS可以实时拿到音频流,那么我们如何在VUE项目中实现合成功能呢。语音合成应用非常广泛,如商家广告合成、驾校声音合成、新闻播报、在线听书等等场景都会用到语音合成。二、VUE下实现合成并使用浏览器播放代码如下:在线语音合成流式版{{ttsText}}立即合成DOWNWAVimport*asbase64from'js-base64'importCryptoJSfrom'.
- paramiko出现CryptographyDeprecationWarning
士大夫11123
pythonparamiko
paramiko出现CryptographyDeprecationWarning解决方法:卸载当前cryptography版本pipuninstallcryptography2.5(2.6…)安装2.4.2版本pipinstallcryptography2.4.2
- paramiko CryptographyDeprecationWarning
weixin_34228387
报错如图:解决:importwarningswarnings.filterwarnings(action='ignore',module='.*paramiko.*')复制代码详细可以看:github.com/ansible/ans…
- 执行ansible报CryptographyDeprecationWarning
rockstics
ansiblepython开发语言
现象:执行ansible报CryptographyDeprecationWarning/usr/local/lib/python3.6/site-packages/ansible/parsing/vault/init.py:44:CryptographyDeprecationWarning:Python3.6isnolongersupportedbythePythoncoreteam.Theref
- python paramiko CryptographyDeprecationWarning
三支烟
pythonparamiko
importparamikoclient=paramiko.SSHClient()client.set_missing_host_key_policy(paramiko.AutoAddPolicy())#允许连接不在know_hosts文件中的主机。client.connect(serverIp,port=serverPort,username=serverUser)报警告如下:paramiko\
- Python2中Paramiko模块遇到CryptographyDeprecationWarning的解决方法
lishixiongbishe
java
使用Python2的paramiko模块,写了一个简单的ssh登录主机执行命令的脚本,发现每次执行都有一个报错:/data/sshenv/lib/python2.7/site-packages/paramiko/transport.py:33:CryptographyDeprecationWarning:Python2isnolongersupportedbythePythoncoreteam.S
- paramiko和cryptography的关系
0914_h
安全python3cryptography
1、错误:fromcryptography.hazmat.bindings._constant_timeimportlibModuleNotFoundError:解答:先安装:sudoapt-getinstalllibffi-dev之后安装:sudopip3installcryptographysudoapt-getinstallopenssl还得安装:pipinstallparamiko2、
- CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.alg
L202134870
python
出现这个问题可以降低cryptography的版本,如将43.0.0改为42.0.0ModuleNotFoundError:Nomodulenamed'paramiko.py3compat'paramiko版本过高,可指定版本安装pipinstallparamiko-2.11.0
- 私人工具集4——C#加密解密类(CryptoHelper)
gzhosp_redAnt
小徐的私人工具集加密解密.netrsamd5c#
子曰:“工欲善其事,必先利其器”github地址:https://github.com/redAntCpp/CSharpTools加密解密在日常开发中也是经常用到,尤其是在写登录功能时,对用户的密码进行加密,有时,对信息安全要求较高时,也需要对传输的数据进行加密,然后本地解密后得到相应的报文,然后继续进行业务。比如银行的金额,医院的患者病历信息等。简单的加密方式介绍加密分为:对称加密和非对称加密。
- 数据传输安全——混合加解密(国密)
SheldonChang
加解密安全网络
国密SM2与SM4混合加密解密工具类详解及其与其他加密算法的对比分析在当今互联网时代,信息安全变得尤为重要。随着国家密码局发布的商用密码算法(即国密算法)逐渐普及,SM2和SM4等算法因其高效性和安全性成为了国内应用中的重要组成部分。本文不仅将详细介绍一个基于Java的国密SM2与SM4混合加密解密工具类,还将探讨这些算法与国际通用的RSA和AES算法之间的对比分析。一、国密算法简介SM2:这是一
- 数据传输安全——混合加解密
SheldonChang
加解密安全网络java
使用Hutool实现AES与RSA混合加密解密——构建安全的数据传输通道在当今数字化社会中,信息安全已经成为企业和个人不可忽视的重要议题。加密技术作为保障数据安全的重要手段,其作用愈发突出。本文将深入探讨如何利用Hutool库实现AES与RSA混合加密解密方案,并进一步扩展其背后的技术原理及具体的应用场景。国密加解密实现参考链接加密技术概述在加密领域,我们通常会遇到两种类型的加密算法:对称加密和非
- kotlin版本RSA非对称加密解密与分段加密解密
DunerGee
基于kotlin语言的RSA非对称加密解密与分段加密解密RSA非对称加密RSA非对称加密的具体算法与来源我就不写了,感兴趣的可以自己找度娘或者维基百科前面我的两篇文章讲了DES和AES对称加密,我们可以看出他们加密和解密时都使用的是同一个密钥,那么:非对称加密就是加密和解密使用不同的密钥:我们将它称为密钥对,密钥对包含公钥私钥两个,如果使用公钥加密则要使用私钥解密,反之使用私钥加密则要用公钥解密,
- 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