- 修改SpringBoot生成的jar文件后重新打包
wovski
后端springbootjarjavac
前言在日常Java开发中,我们有时需要对已有的Java项目进行修改和重新打包,特别是当我们需要对编译后的class文件进行反编译修改时。本文将详细介绍如何使用javac命令配合-encoding和-cp参数编译Java代码,以及如何使用jar命令将修改后的文件重新打包到原有的JAR包中。一、使用javac命令编译Java代码1.基本命令格式javac-encodingUTF-8-cp"lib/*"
- threejs-夜景
记录threejs实现夜景光照、投影、阴影、反射、材质颜色编码的效果主要是光源设置了shadow、encodingThree.jsScenebody{margin:0;}canvas{width:100%;height:100%}{"imports":{"three":"./three172/build/three.module.js","three/addons/":"./three172/ex
- 爬取微博热搜+关键词爬取评论
2301_80365274
python爬虫
获取第一级评论(可翻页)importrequestsimportcsvf=open('5.3微博热搜top50.csv',mode='a',encoding='utf-8',newline='')csv_write=csv.writer(f)csv_write.writerow(['id','screen_name','text_raw','create_at','like_counts','to
- educoder机器学习 --- 神经网络
木右加木
educoder机器学习神经网络
第1关:神经网络基本概念1、C第2关:激活函数#encoding=utf8defrelu(x):'''x:负无穷到正无穷的实数'''#*********Begin*********#ifx<=0:return0else:returnx#*********End*********#第3关:反向传播算法#encoding=utf8importosimportpandasaspdfromsklearn.
- Python 的内置函数 open
IMPYLH
python笔记
Python内建函数列表>Python的内置函数openPython的内置函数open()是用于打开文件的重要函数,它提供了与文件系统交互的基本接口。该函数返回一个文件对象(fileobject),可用于读取、写入或追加文件内容。函数签名open(file,mode='r',buffering=-1,encoding=None,errors=None,newline=None,closefd=Tr
- Python 数据分析与可视化 Day 11 - 特征工程基础
蓝婷儿
pythonpython数据分析人工智能
✅今日目标理解特征工程在数据分析和机器学习中的意义掌握常见特征类型的处理方式:数值型、类别型、时间型学习特征提取、转换、标准化、独热编码(One-HotEncoding)等核心操作为后续建模任务做好特征准备工作一、什么是特征工程?特征工程是将原始数据转换为模型可学习的“特征向量”的过程,是机器学习效果好坏的核心因素之一。常见任务包括:缺失值处理(已学)异常值处理(已学)数值归一化、标准化类别变量编
- Pthon httpx 使用代理下载文件(qbit)
前言技术栈Python3.11.8httpx0.28.1示例代码#encoding:utf-8#author:qbit#date:2025-06-30#summary:httpx使用代理下载文件importhttpxproxy='http://127.0.0.1:8081'defDownFile(url,file):withopen(file,'wb')asf:withhttpx.stream('
- 最新 抖音 iOS 设备注册算法(配合心跳做不上榜人气用)
qq_1771238069
ios算法cocoa
最新业务需要研究了一周时间做出来了可以配合心跳包做抖音人气用一下部分代码#-*-encoding:utf-8-*-importjson,random,time,sysimportrequestsfromurllib.parseimporturlparse,parse_qsimportratelimitfromloguruimportloggerfromspiders.reg.confimportm
- C#使用ExcelDataReader高效读取excel文件写入数据库
香煎三文鱼
.netcore.Net6C#C#读取excel
分享一个库ExcelDataReader,它专注读取、支持.xls/.xlsx、内存优化。首先安装NuGet包dotnetaddpackageExcelDataReaderdotnetaddpackageSystem.Text.Encoding.CodePages编码内存优化:每次仅读取一行,适合处理百万级数据。类型安全方法:可用GetString(0)、GetDouble(1)等强类型方法(需确
- could not import google.golang.org/protobuf/proto
ezreal_pan
Go后端golang前端开发语言
背景import("encoding/json""testing""google.golang.org/protobuf/proto")在测试中需要使用proto,但是,import这个包之后,一直报couldnotimportgoogle.golang.org/protobuf/proto这个错误,尝试了各种方法,依然没有解决这个问题。临时方案执行gomodvendor这个命令。项目的目录下多了
- Redis 内存压缩原理
zxfBdd
数据库
Redis无疑是一个大量消耗内存的数据库,因此Redis引入了一些设计巧妙的数据结构进行内存压缩来减轻负担。ziplist、quicklist以及intset是其中最常用最重要的压缩存储结构。了解编码类型#Redis对外提供了string,list,hash,set,zset等数据类型,每种数据类型可能存在多种不同的底层实现,这些底层数据结构被称为编码(encoding)。以list类型为例,其经
- [报错] VSCODE无法识别相对路径
这么神奇
报错解决方案vscode
报错背景:在使用VSCODE进行代码运行时,明明是正确的相对路径,文件却无法被打开;报错为:无法找到对应文件;解决方法:打开VSCODE-->setting-->execute-->勾选ExecuteinfileDir选项;如下图所示:设置完毕后再执行对应语句:df=pd.read_csv(r'./Game_Data.csv',encoding='gbk')执行结果:问题解决!
- 谨慎使用Encoding.Default
奔跑的大大晚
乱码
在处理文本时,经常需要处理Encoding的概念。存在这个问题的原因在于,在.NET程序内文本只是string和char对象,而保存到硬盘时,或者准备用socket把它发送出去时,都得先转换成byte[]或者字节流。而转换的算法,就是Encoding。Encoding不同文本文件的行数也不同。老外的程序里面,都喜欢用Encoding.ASCII,这是因为他们主要只使用western字符;于是我们经
- windows使用mingw+cmake编译二维码生成库libqrencode
百口可乐__
WindowsGNU/Linux付费windowslinuxmicrosoft
libqrencode介绍LibqrencodeisafastandcompactlibraryforencodingdatainaQRCodesymbol,a2DsymbologythatcanbescannedbyhandyterminalssuchasamobilephonewithCCD.ThecapacityofQRCodeisupto7000digitsor4000characters
- Qwen LLM(通义千问大模型 )的词编码原理:字节级别字节对编码(BBPE,Byte - level Byte Pair Encoding)
ZhangJiQun&MXP
教学2024大模型以及算力2021AIpython人工智能语言模型自然语言处理深度学习prompt
QwenLLM(通义千问大模型)的词编码原理:字节级别字节对编码(BBPE,Byte-levelBytePairEncoding)QwenLLM(通义千问大模型)的词编码基于字节级别字节对编码(BBPE,Byte-levelBytePairEncoding),以下从原理、方法、举例展开说明:一、核心原理BBPE本质是子词分词+编码的混合逻辑,核心目标是让文本高效转化为模型可理解的token(令牌)
- python(点点点工程师自我代码修养)--小案例--爬取静态网页
小案例–爬取静态网页(猫咪交易网)importrequestsimportparselimportcsv#创建一个用于存储数据的csv文件f=open('猫咪.csv',mode='a',encoding='utf-8',newline='')csv_write=csv.DictWriter(f,fieldnames=['标题','商店','价格','浏览量','卖家承诺','连接','地区'])
- 各种数据库产品的细节比较
demon7552003
数据库数据库细节对比
JdbcUrlmysqlspring:datasource:type:com.zaxxer.hikari.HikariDataSourcedriver-class-name:com.mysql.cj.jdbc.Driverusername:xxxpassword:xxxurl:jdbc:mysql://192.168.1.54:3306/tmp?characterEncoding=utf8&zer
- C# 利用HttpWebRequest模拟登陆获取数据设置Accept-Encoding为gzip,deflate后返回的网页是乱码处理
蝶恋花雨
Accept-Encodinggzipdeflate乱码
原由:在解决模拟登陆抓取数据的时候post一个地址时老是获取的内容是乱码。经过检查最终应该是编码是HttpWebRequest.Headers.Add("Accept-Encoding","gzip,deflate");导致的,其中此行代码完全按照抓包工具分析数据后对应抓包工具分析的信息,就设置了对应的Accept-Encoding为gzip,deflate了。这样的代码,获得的网页源代码是乱码的
- Windows执行jar包
琪丶琪
windowsjarjava
配置环境变量:命令行测试:java-version将jar包上传至指定目录,在该目录下创建运行脚本:chcp65001java-Dfile.encoding=utf-8-jarjxpaddle-admin.jarchcp65001:将当前cmd编码改为UTF-8,仅对当前cmd有效-Dfile.encoding=utf-8:指定运行jar包编码为UTF-8
- Python实现MySQL建表语句转换成Clickhouse SQL
weixin_30777913
pythonmysqlclickhousesql数据库
主程序:**main_converter.py**importreimportjsonimportargparsedefload_config(config_path:str)->dict:'''配置管理模块:加载JSON格式配置文件'''withopen(config_path,mode="r",encoding="utf-8")asf:returnjson.load(f)classBaseCo
- SSM项目中JS文件中文乱码
浏览器端访问SSMWeb项目js文件/CSS文件中文乱码问题解决方案其他原因,本文不再介绍,请参考如下链接:https://www.cnblogs.com/kennyliu/p/4086601.html问题原因:配置了Spring编码格式过滤器问题代码展示,项目中web.xml代码,Spring编码过滤器代码片`encodingorg.springframework.web.filter.Char
- Transformer结构介绍
大写-凌祁
transformer深度学习人工智能
[编码器Encoder]←→[解码器Decoder]编码器:输入:源语言序列输出:每个词的上下文表示(embedding)解码器:输入:目标语言序列+编码器输出输出:下一个词的概率分布(目标句子生成)inputs->inputsEmbedding+PositionalEncoding->N*encoderoutput->outputsEmbedding+PositionalEncoding->N*
- Spring-MyBatis的配置
Small black human
#JavaEE开发springmybatisjava
一.连接数据库1.yml文件中的配置#数据库连接配置spring:datasource:url:jdbc:mysql://127.0.0.1:3306/mybatis_test?characterEncoding=utf8&useSSL=falseusername:rootpassword:rootdriver-class-name:com.mysql.cj.jdbc.Driver2.proper
- Incremental Transformer Structure EnhancedImage Inpainting with Masking Positional Encoding笔记
毕设做完了吗?
transformer笔记深度学习
摘要:近年来,图像修复取得了重大进展。然而,恢复具有生动纹理和合理结构的损坏图像仍然具有挑战性。由于卷积神经网络(CNN)的感受野有限,一些特定方法只能处理常规纹理,同时失去整体结构。另一方面,基于注意力的模型可以更好地学习结构恢复的长程依赖性,但它们受到大图像尺寸推理的大量计算的限制。为了解决这些问题,我们建议利用一个额外的结构恢复器来促进图像的增量修复。所提出的模型在固定的低分辨率草图空间中,
- 详解Byte Pair Encoding (BPE)原理
强化学习曾小健
大模型LLM面试指南多模态MLLM大模型面试指南人工智能深度学习计算机视觉
答案字节对编码(BytePairEncoding,BPE)是一种有效的数据压缩算法,广泛应用于自然语言处理(NLP)中的子词分割。其核心思想是通过迭代合并频率最高的字符对,逐步构建出一个可变长度的词汇表,以此来减少文本中的不同字符组合数量。BPE的基本原理BPE的工作流程可以概括为以下几个步骤:初始化:将输入文本中的每个词切分为单个字符,并在每个词的末尾添加一个特殊的结束符(如),以便于后续的处理
- IDEA21中文乱码解决办法
波诺波
java开发语言
我改了很多,可能也改了一些没用的1.在VMoptions中添加-Dstdout.encoding=UTF-8-Dstderr.encoding=UTF-82.IDEA控制台输出设置为UTF-8打开IDEA→File→Settings(或Ctrl+Alt+S)搜索"Encoding"设置ProjectEncoding和Defaultencodingforpropertiesfiles为UTF-8勾选
- NodeJS的fs模块的readFile和createReadStream区别以及常见方法
穗余
全栈vim编辑器linux
Node.js本身没有像Java那样严格区分字符流和字节流,区别主要靠编码(encoding)来控制数据是以Buffer(二进制字节)形式还是字符串(字符)形式处理。详细解释:方面JavaNode.js字节流InputStream/OutputStream默认情况下的Readable/Writable流,数据是Buffer(二进制)字符流Reader/Writer流上设置encoding,数据自动
- PythonCookBook笔记——文件与IO
weixin_30695195
json数据库python
文件与IO所有的程序都要处理输入与输出,涉及到文本、二进制文件、文件编码和对文件名、目录的操作。读写文本数据需要读写各种不同编码的文本数据,使用rt模式的open()函数。该读写操作使用系统默认编码,可通过sys.getdefaultencoding()来得到,大部分都是utf-8。打印输出到文件中将print()函数的输出重定向到文件中。#指定file关键字参数,文件必须是文本形式打开witho
- 第七十六篇 数据结构探秘:字符串——代码世界与生活场景的隐形编织者
随缘而动,随遇而安
后端大数据数据结构
目录一、字符串的本质:字符的序列与不可变性生活映射:社交平台的“用户昵称”二、核心操作:字符串的高频“技能包”1.查找(Search)2.拼接(Concatenation)3.比较(Comparison)三、高级应用:字符串的“隐藏实力”1.编码与解码(Unicode/UTF-8)2.字符串压缩(Run-LengthEncoding)3.正则表达式(Regex)四、优化策略:处理海量文本的“利器”
- python3转为unicode编码_Python3的unicode编码转换成中文的问题及解决方案
AllFiredUp
python中怎样将unicode转换成原来的中文?[这世界上一定有另一个小编做着小编不敢做的事过着小编想过的生活]前端将中文编码后传到后台,后台对传来的数据进行json.dumps存入mysql数python默认就是unicode存储。如果是从文件读取的,在open的参数中指定encoding关键字参数就行。如下:#coding=utf-8/importjson/defLoadQuestion(
- 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