- Tensorflow-gpu运行时报错Non-OK-status: GpuLaunchKernel
GEM的左耳返
pythontensorflow深度学习python
Tensorflow-gpu运行时报错Non-OK-status:GpuLaunchKernel(FillPhiloxRandomKernelLaunch,num_blocks,block_size,0,d.stream(),gen,data,size,dist)status:Internal:invaliddevicefunctionFatalPythonerror:Aborted说明你安装的C
- 用AbortController移出监听防止内存泄漏
web前端神器
java开发语言
代码如下:constcontroller=newAbortController();window.addEventListener('getData',handleResize,{signal:controller.signal,});window.addEventListener('getList',handleHashChange,{signal:controller.signal,});//
- 预取内存 和 非预取内存区别
zly8865372
macos
在PCIe(PCIExpress)设备中,预取内存(PrefetchableMemory)和非预取内存(Non-PrefetchableMemory)是两种不同的内存区域类型,主要区别在于它们的访问特性、使用场景以及硬件优化方式。以下是详细对比:1.定义与核心区别特性预取内存(Prefetchable)非预取内存(Non-Prefetchable)数据访问行为允许预读(Prefetch)和缓存,数
- 【PCIe】6: PCIe prefetchable和nonprefetchable
smartvxworks
PCIe高速总线专栏PCIePCI串行高速总线
目录1.什么是prefetchable2.什么是nonprefetchable3.PCIe中的使用1.什么是prefetchableprefetchable可预取指的是CPU可缓存它的内容并且对它做所有类型的优化;可预取性内存是指存储器空间的可预取能力。例如如果读操作没有副作用(即如同从RAM中读数据一样不会破坏数据),则称存储器空间可预取。2.什么是nonprefetchablenonprefe
- C# 线程--Thread类
目录什么是线程?Thread类的定义创建和启动线程使用ThreadStart委托使用ParameterizedThreadStart委托Lambda简写使用线程池(ThreadPool)使用线程池的优点使用ThreadPool的一般步骤常用方法Start()Join()Sleep(intmillisecondsTimeout)Abort()IsAliveManagedThreadIdSetApar
- HW prefetcher之CDP(Content-Directed Data Prefetching)
Chip Design
xPUChipDesignCPUGEM5
CDP是Content-DirectedDataPrefetching的缩写,它基于RobertCooksey和StephanJourdan提出的"Stateless,Content-DirectedDataPrefetchingMechanism"论文实现。是一种内容导向的数据预取机制,CDP通过分析内存中的数据内容来识别可能的指针,当识别到指针时,它会预取指针指向的内存地址。CDP使用VPN表
- 硬件预取的几个问题 1
1.硬件预取的定义和目标是什么?答案:硬件预取是CPU在程序执行前自动预测并加载可能使用的数据到缓存中的技术,目标是减少缓存未命中带来的延迟,提升指令吞吐量。2.硬件预取与软件预取的核心区别?答案:硬件预取由CPU内部逻辑自动触发,透明且通用;软件预取需程序员显式插入指令(如prefetch),可针对特定场景优化,但依赖代码适配。3.预取算法的主要分类?答案:分为规则驱动型(如顺序、步长预取)和机
- mac 安装docker,完美解决
Ai君臣
dockerdockermacos运维
1、下载安装最可靠brewinstall不建议用,如果用brewinstall正常,那就不用看后面的2、现象docker.errors.DockerException:ErrorwhilefetchingserverAPIversion:(‘Connectionaborted.‘,File原因:就是docker没安装好macos版本:macosCatalina10.15到这个网站DockerDes
- Flask 应用路由优化与功能增强
code36
flaskpython后端
分析了您提供的Flask路由代码,以下是针对各功能模块的优化建议及实现方案,涵盖错误处理、模板渲染、表单验证和请求处理等核心场景。一、错误处理优化:结构化错误响应当前abort(404)和自定义错误处理较为基础,建议升级为标准化错误响应:#标准化错误响应结构classAPIError(Exception):def__init__(self,message,status_code=400,error
- js FileReader对象
刘建状
jsjavascript前端开发语言
FileReaderd对象Document读取文本文件/**FileReader对象允许Web应用程序异步读取存储在用户计算机上的文件(或原始数据缓冲区)的内容,使用File或Blob对象指定要读取的文件或数据。*FileReader的实例拥有4个⽅法,其中3个⽤以读取⽂件,另⼀个⽤来中断读取*方法:*abortnone用于中断读取读取*readAsBinaryStringfile将文件读取为二进
- 深度模型训练,加速数据读取遇到显卡跑不满的问题
不是吧这都有重名
遇到的问题llama人工智能LLMpython
实测在pytorch的dataloader中使用prefetch_factor参数的时候,如果数据在机械硬盘上显卡始终是跑不满的,瓶颈在数据预加载速度上,当数据放在固态硬盘的时候就可以跑满。问题排查过程:一直在跑模型,但是数据量比较大,之前有段时间还是比较头疼显卡跑不满的。后来直接用钞能力,加了内存条,将数据缓存后一次性读到内存中终于可以跑满了,然后后面就一直没管这个了,唯一的缺点就是每次开始训练
- flask +layUI+ ajax 上传图片
weixin_44040169
Pythonflaskajaxlayuipython
flask+layUI+ajax上传图片-放到本地文件夹中记录:1、在使用layui时出现的问题,加载css,js出现问题GEThttp://127.0.0.1:5000/layui/css/layui.cssnet::ERR_ABORTED404(NOTFOUND)然后我将layui文件夹放到static里改成,就行了(好像对于layui文件相对位置的加载,以当前的html位置为基准)2、使用a
- 解决报错:org.apache.catalina.connector.ClientAbortException: java.io.IOException: Broken pipe
天黑请闭眼
Java异常处理java
目录一、场景二、报错信息三、原因四、解决一、场景1、前端调用后端接口报错2、接口功能为导出excel二、报错信息org.apache.catalina.connector.ClientAbortException:java.io.IOException:Brokenpipeatorg.apache.catalina.connector.OutputBuffer.realWriteBytes(Out
- 【HTTP】取消已发送的请求
Am1nnn
前端javascript开发语言
场景在页面中,可能会因为某些操作多次触发某个请求,如多次点击某按钮触发请求,实际上我们只需要最后一次请求的返回值,但是由于请求的耗时不一,请求未必会按发送的顺序返回,导致我们最终获取到的值≠最后一次发送请求的返回值。根据项目经验,目前一共尝试过两种方法1.设置请求的唯一id2.使用axios官方方法:AbortController解决1.设置请求的唯一id为每个请求设置一个唯一id,每触发一次请求
- Vue + AbortController 请求取消弹窗 hook 封装
詹姆斯bind
vueJavaScriptvue.js前端javascript
背景实际业务开发场景中,往往存在有些大数据请求的需求,一旦请求发起加载遮罩后用户就无法操作了,直接尬住,所以提供一个支持取消查询的功能还是很有必要的,为了在全业务接口都能使用封装一个hook。✋为什么要用AbortController?AbortController是浏览器提供的原生API,用于中止Web请求(如Fetch)。你可以通过调用abort()来通知一个绑定了该信号(signal)的请求
- AXI (Transaction Attributes)
Jay丶ke
AMBA协议verilogfpga开发
目录:AXI(TransactionAttributes)1.事务类型与属性:2.存储相关属性信号:3.存储类型:AXI(TransactionAttributes)1.事务类型与属性:现代计算机架构中,对memory的读写有若干种优化,prefetch,cache,writebuffer。同时,对host来说,一些其他的外部设备的寄存器或者外部设备的内存也会被映射到host端的地址上。这部分地址
- 提升 SC性能的技术
__pop_
verilog内存一致性
文章目录**逻辑架构****总结要点**✅**修正版总结(精炼版)**:L->L例子✅**设定目标**:**例子:L1→L2场景中,L2读取值改变**系统设定:程序:在P1:在P2:⏱️执行时序:最终结果:✅结论:S->L例子1.加快内存访问执行速度1.一旦load/store的目标地址已知,就发起预取数据(prefetch)请求;2.一旦load/store的目标地址能预测地址,就提前预取数据;
- Vue3 axios 请求设置 signal 信号属性,以便 abort 取消请求
BillKu
vue.jsjavascript前端
api:taskMessage.ts//通过用户名(账号),查询任务列表exportconsttaskService=(signal?:AbortSignal)=>{returnrequest.get("/task",{//设置signal信号属性,后续就可以通过abort取消请求signal:signal});};//通过用户名(账号),查询消息列表exportconstmessageServi
- preload、preconnect、prefetch 的作用
从未、淡定
前端
preload、preconnect、prefetch的作用这些是现代HTML中用于预加载资源(preloadingresources)、预连接服务器(preconnectingtoservers)以及预获取资源(prefetchingresources)的标签和属性,都是为了优化网页加载性能,尤其是在首次渲染时。1.preload作用:在文档加载过程中,提前加载一些关键资源,如图片、字体、脚本、
- C++知识点—01 <noexcept>
Kilicc_
C++c++开发语言
—工作所遇随手记,方便自己查看参考文章一、关键字noexcept该关键字告诉编译器,函数中不会发生异常(有利于编译器对程序做更多的优化)在运行时,noexcept函数向外抛出异常(如果函数内部捕捉了异常并完成处理,不算抛出异常),程序会直接终止,调用std::terminate()函数,该函数内部会调用std::abort()终止程序
- c++ assert()
assert宏的原型定义在#includevoidassert(intexpression);assert的作用是现计算表达式expression,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用abort来终止程序运行。用法总结与注意事项:0)程序一般分为Debug版本和Release版本,Debug版本用于内部调试,Release版本发行给用户使用。断言assert
- C++之assert和NDEBUG
叫我Zane
C++c++开发语言
assert()断言机制原理以及使用1.简介assert是一种预处理宏。assert的作用是计算表达式expression,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用abort来终止程序运行。voidanalyze_string(char*string){assert(string!=NULL);//CannotbeNULLassert(*string!='\0'
- 深入理解 AbortController:控制异步操作的终止
程序员流年大运
JavaScriptnode.jsjavascript前端
深入理解AbortController:控制异步操作的终止AbortController是现代JavaScript中用于中止一个或多个Web请求的API,它为解决"取消异步操作"这一长期存在的难题提供了标准解决方案。下面我将全面介绍AbortController的工作原理和应用场景。一、AbortController基础1.核心概念AbortController:控制器对象,用于创建和发送中止信号
- RabbitMQ work模型
斯kk
rabbitmq分布式
Work模型是RabbitMQ最基础的消息处理模式,核心思想是多个消费者竞争消费同一个队列中的消息,适用于任务分发和负载均衡场景。同一个消息只会被一个消费者处理。当一个消息队列绑定了多个消费者,每个消息消费的个数都是平摊的,一人一个消息,不会考虑哪个消费者能力强弱。这样会造成消息堆积。如何解决:修改yml文件,修改preFetch参数,控制消费者预取的消息数量,处理完再处理下一条,能者多劳
- pyspark依赖环境设置
pypspark异常py49-protocol.Py433avaError:Anerroroccurredwhilecalling0117.sql.org.apache.spark.SparkException:Jobabortedduetostagefailure:Task®instage0.0failed4times,mostrecentfailure:Losttask0.3instage0.
- 【Python】多任务执行与停止控制实现
魔都吴所谓
Python实用工具python开发语言数据库
需求:一共有5个任务等待执行,触发执行后,某一时间按停止,已经运行的任务返回实际状态,没有运行的状态就改为abort;codeimportthreadingimporttimeimportrandomfromenumimportEnum,autoclassTaskStatus(Enum):PENDING=auto()RUNNING=auto()COMPLETED=auto()FAILED=auto
- Asynchronous JavaScript And XML
DUCKRUN~
ajax
1.作用不刷新页面更新网页在页面加载后从服务器请求和接收数据在后台向服务器发送数据2.工作流程3.XMLHttpRequest对象(1)方法newXMLHttpRequest()创建新的XMLHttpRequest对象abort()取消当前请求getAllResponseHeaders()返回头部信息getResponseHeader()返回特定的头部信息open(method,url,async
- git冲突解决
chenzhanpeng_
gitgithub
同事在使用gitpull代码时,经常会碰到有冲突的情况,提示如下信息:error:Yourlocalchangesto'c/environ.c'wouldbeoverwrittenbymerge.Aborting.Please,commityourchangesorstashthembeforeyoucanmerge.这个意思是说更新下来的内容和本地修改的内容有冲突,先提交你的改变或者先将本地修改
- camx eap问题分析二:【减法溢出sub-overflow‘】/vendor/bin/hw/vendor.qti.camera.provider crash 8655127
一起搞IT吧
camxeap问题android相机
【关注我,后续持续新增专题博文,谢谢!!!】这一篇我们开始讲:camxeap问题分析二:【减法溢出】/vendor/bin/hw/vendor.qti.camera.providercrash目录【关注我,后续持续新增专题博文,谢谢!!!】我们看看eapcrash堆栈Abortmessage:'ubsan:sub-overflow'问题我们解析并看看代码情况我们分析代码会发现这个函数只有一个减法运
- 前端请求乱序问题分析与AbortController、async/await、Promise.all等解决方案
Micro麦可乐
前端技术前端请求乱序同步请求请求队列vuefetchaxios
古之立大事者,不惟有超世之才,亦必有坚忍不拔之志个人CSND主页——Micro麦可乐的博客《Docker实操教程》专栏以最新的Centos版本为基础进行Docker实操教程,入门到实战《RabbitMQ》专栏主要介绍使用JAVA开发RabbitMQ的系列教程,从基础知识到项目实战《设计模式》专栏以实际的生活场景为案例进行讲解,让大家对设计模式有一个更清晰的理解《Jenkins实战》专栏主要介绍Je
- 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