- 好看的vue登录页面(附 源代码 背景图)
小小薛定谔
vue.jsjavascriptcss前端
一、效果展示二、代码你好!欢迎回来登录忘记密码?注册exportdefault{name:"MedLogin",data(){return{confirm_disabled:false,loginForm:{no:'',password:''},rules:{no:[{required:true,message:'请输入账号',trigger:'blur'},{min:3,max:6,messag
- Mac清倒废纸篓提示“voicetrigger“在使用中
ReddingtonLin
MacMac
删除Mac下的user以后,清倒废纸篓,提示“voicetrigger”在使用中。解决办法:重启Mac,开机的时候按住Cmd+R进入Recovery模式选择语言-简体中文从工具菜单中启动终端,输入密码。输入csrutildisable命令,即可关闭SIP服务。重启电脑。(正常重启即可,不用按住Cmd+R进入Recovery模式)再尝试清空废纸篓。如果还不行,就尝试用命令行删除。处理好后,再开启SI
- 【OCPP】ocpp1.6协议第5.17 TriggerMessage章节的介绍及翻译
"啦啦啦"
ocpp1.6协议开源协议学习
目录5.17TriggerMessage-概述主要内容1.概要2.操作流程3.参数说明4.示例4.1.TriggerMessage请求示例4.2.TriggerMessage响应示例5.应用场景实际应用结论5.17TriggerMessage-原文译文5.17TriggerMessage-概述在OCPP1.6协议中,第5.17章节描述了TriggerMessage操作。这个操作允许中央系统(Cen
- 【Vue3源码实现】Ref isRef unRef proxyRefs实现
ZhaiMou
vue.jsjavascript前端数据结构前端框架开发语言
前言在上篇文章中我们了解了响应式原理,并在最后实现了reactive。上文链接Vue3响应式原理实现与track和trigger依赖收集和触发依赖在我们的日常业务中,我们有可能需要将一个基础数据类型的值也转换成响应式的,而reactive只能代理对象,我们需要对基础数据类型的值也进行读写操作的拦截,但Proxy无法实现对基础数据类型值读写操作的拦截。所以Vue设计了Ref,以及相关api本篇文章实
- [深入vue3之refs] ref、unref、toRef、toRefs、isRef、customRef、shallowRef、triggerRef等使用与讲解
oumae-kumiko
vue前端vue.js前端javascript
本章涉及的compositionapi:ref、unref、toRef、toRefs、isRef、customRef、shallowRef、triggerRefrefsapi中的重点为:ref、toRefs、shallowRef、customRef,其次是isRef等。ref接受一个内部值并返回一个响应式且可变的ref对象。ref对象仅有一个`.value`property,指向该内部值。如果将对
- 微信小程序自定义组件及传参
墨染凉梦
微信小程序小程序
1.新建文件夹,然后右键选择新建components2.组件的js结构如下图所示3.使用组件,在需要引用组件的页面json配置中引入组件4.组件传参之父传子父组件直接传参子组件在properties中接收,直接使用即可5.子组件传参给父组件子组件使用this.triggerEvent('事件名',参数)进行传参。父组件bind+事件名='回调方法'进行接收,并在回调方法中可以获得传递的参数
- Apache Beam简介及相关概念
奋斗的源
Apache基础知识ApacheBeam其他
文章目录一.简介二.基本概念1.Pipelines2.PCollection3.Transforms4.ParDo5.PipelineI/O6.Aggregation7.User-definedfunctions(UDFs)8.Runner三.高级概念1.Eventtime2.Windowing3.Watermarks4.Trigger四.工作原理一.简介ApacheBeam是一个开放源码的统一模
- vue3 el-menu 菜单Maximum recursive updates exceeded 报错
supming1
vue.js
vue3用el-menu实现管理后台左侧菜单,报Uncaught(inpromise)Maximumrecursiveupdatesexceededincomponent.Thismeansyouhaveareactiveeffectthatismutatingitsowndependenciesandthusrecursivelytriggeringitself.Possiblesourcesi
- wpf 面试
云淡风轻的小白
1ref和out2对封装,继承,多态的理解3接口和抽象类的区别4trigger(4种)5什么是单例(手写),多线程调用单例时怎么保证唯一(lock)6自定义界面控件7改变界面控件的值,绑定方式或Dispatcher8值类型和引用类型的区别,内存的存储和释放struct是引用类型吗?9委托,委托是类型安全的吗10绑定的5种方式11按钮点击后时间是个怎么的过程(路由种冒泡或者隧道详解)12程序崩溃如何
- 三种方式mysql给id设置默认值为UUID
java知路
dbmysql数据库database
3种方式方式一给id设置默认值uuid()或者REPLACE(UUID(),"-","")方式二: INSERTINTOuser(`id`,`age`,`name`)VALUES(REPLACE(UUID(),"-",""),11,'zhagnsan');方式三:通过触发器给id设置默认值为UUIDcreatetriggerid_triggerbeforeinsertont_student_cou
- Quartz.net-IJobFactory实现任务实例创建的依赖注入
tanzhenyuan
Quartz.net
在使用Quartz.net执行调度任务时,任务类必须实现IJob接口,如下`publicclassDLLExecutor:IJob{publicasyncTaskExecute(IJobExecutionContextcontext){//你的处理逻辑}}`具备如上任务类之后,需要做的就是与JobDetial、Trigger进行关联,为了精简,忽略JobDetial、Trigger相关属性设置,代
- 登录请求
amanohina
表单校验通过Element中Form组件的表单验证功能进行验证功能中需要使用的属性需要给绑定的属性:model:绑定表单数据的对象rules:表单验证对象,内部的属性名对应要验证的的prop(属性设置为数组,内部可以同时制定多条规则)required:是否必选message:验证失败的提示信息trigger:触发方式,比如bulr就是焦点时触发校验max:最大长度min:最小长度pattern:验
- 如何在oracle实现自增数列
bhots
oracle数据库
如果您想在Oracle数据库中使用触发器(Trigger)实现自增功能,可以考虑通过序列(Sequence)结合触发器实现自增功能。以下是一个简单的示例:创建序列:首先创建一个序列,用于生成自增的值。CREATESEQUENCEyour_sequence_nameSTARTWITH1INCREMENTBY1;创建触发器:创建一个触发器,在插入数据时触发,将序列的值插入到相应的列中。CREATEOR
- Quartz.Net_错过策略
Mudrock__
Quartz.Netquartz.net
SimpleTrigger的Misfire策略:FireNow:立即执行一次,然后按计划执行(忽略Misfire)IgnoreMisfirePolicy:忽略Misfire,按原计划继续执行RescheduleNowWithExistingRepeatCount:立即执行一次,然后根据当前时间、执行间隔、余下重复次数(含错过次数)重新安排后续的执行后续执行次数=原总次数-已执行次数总次数=原总次数
- Quartz.Net_侦听触发器
Mudrock__
Quartz.Net.netquartz.net
简述触发器执行任务时存在数个阶段,利用侦听器可以在对应的阶段执行一些代码如何侦听1.实现ITriggerListener接口,并实现其函数,具体说明见代码注释publicclassDeleteAfterCompleted:ITriggerListener{publicstringName=>"X";//触发时publicasyncTaskTriggerFired(ITriggertrigger,I
- Day 49 英国首相无礼行为遭群嘲
居燃心理咨询师
Aphoto(picture)ofBorisJohnson(美国版的特朗普)sticking(putting,随意的放)hisfootonatableduringtalksinPariswiththeFrenchpresidenttriggered(扣动扳机,引发,引起)unflatteringcomments(负面评论)onsocialmedia.Butusersonbothsidesofthe
- SpringBoot集成Quartz发布、修改、暂停、删除定时任务
缓慢移动的蜗牛
一、基本概念Quartz核心的概念:scheduler任务调度、Job任务、Trigger触发器、JobDetail任务细节。scheduler任务调度:是最核心的概念,需要把JobDetail和Trigger注册到scheduler中,才可以执行。Job任务:其实Job是接口,其中只有一个execute方法:Trigger触发器a)作用:它是来执行工作任务,在什么条件下触发,什么时间执行,多久执
- echarts柱形图X轴Y轴相关配置
船长㉿
可视化
可配置XY轴刻度线,字体大小,柱形图大小颜色等constoptions={tooltip:{trigger:'axis',axisPointer:{//坐标轴指示器,坐标轴触发有效type:'shadow'//默认为直线,可选为:'line'|'shadow'},textStyle:{//鼠标hover遮罩层字体大小fontSize:'12'}},xAxis:[{data:['大学食堂100间',
- vue遍历表单加规则校验
33455432
vue.jsjavascript前端
添加指标删除型号主要代码:prop=“guOrderProductList.${i}.productModel”:rules=“[{required:true,message:‘产品型号不能为空’,trigger:‘blur’}]”>
- 虚幻5|按键触发学习
qwq!6
虚幻5增强输入ue5学习笔记虚幻引擎虚幻c++
一,如图参考1.下移驱动阈值越大按时间长才会触发,越小很快就可以触发2.按下当按下超出驱动阈值大小就会触发一次,这里的驱动阈值只能设置再0.1~1的大小3.已松开当按下的时候,先触发单次的started,如果按压,则持续触发ongoing内容,松开后触发Trigger内容,4.弦操作类似组合键需要多准备一个输入,弦操作的键绑定这个多准备的一个输入键,称为组合键,同时按才会触发例如,你按鼠标左键进行
- mysql创建quartz定时任务相关表sql
提高记忆力
mysqlsql
DROPTABLEIFEXISTSQRTZ_FIRED_TRIGGERS;DROPTABLEIFEXISTSQRTZ_PAUSED_TRIGGER_GRPS;DROPTABLEIFEXISTSQRTZ_SCHEDULER_STATE;DROPTABLEIFEXISTSQRTZ_LOCKS;DROPTABLEIFEXISTSQRTZ_SIMPLE_TRIGGERS;DROPTABLEIFEXISTS
- 【avue+vue2+elementui】删除、rules、页面跳转、列表数据过长、日期dayjs
傻傻有内涵的我
avuevueelementui前端javascript
这里写目录标题一、删除二、rules1.格式2.`trigger:"blur"`和`trigger:"change"`区分三、页面跳转四、列表数据过长截断五、日期dayjs一、删除API/***删除.*@param{*}data*@returns返参*/exportconstdeleteOrder=(data)=>{returnrequest({url:'/api/Order/deleteOrde
- 使用PowerShell自动化Windows系统管理任务
小绵羊不怕大灰狼
windows
1.管理服务列出所有服务Get-Service启动服务Start-Service-Name"ServiceName"停止服务Stop-Service-Name"ServiceName"2.管理计划任务创建计划任务$Action=New-ScheduledTaskAction-Execute"C:\Path\To\Executable.exe"$Trigger=New-ScheduledTaskTr
- vue+elementUI用户修改密码的前端验证
zj_zjk_sjz
vue.js前端elementuijavascript
用户登录后修改密码,密码需要一定的验证规则。旧密码后端验证是否正确;前端验证新密码的规范性,新密码规范为:6-16位,至少含数字/字母/特殊字符中的两种;确认密码只需要验证与新密码是否一致;弹窗结构取消确认form验证规则passRules:{oldPassword:[{required:true,message:'请输入旧密码',trigger:'blur'}],newPassword:[{va
- SinoDB V16.8 版本新特性
Sinoregal
SinoDB数据库国产数据库
1、Oracle兼容兼容withas语法兼容insertall/first语法兼容(+)形式的左外连接和右外连接语法兼容ROLLUP/CUBE/GROUPINGSETS语法兼容createorreplaceview/trigger/procedure/function/index语法兼容renameprocedure/function语法2、新增功能条件索引(ConditionalIndex)新增
- 论文翻译 - BITE: Textual Backdoor Attacks with Iterative Trigger Injection
anniewwy
LLMBackdoorAttack
论文链接:https://arxiv.org/pdf/2205.12700.pdf项目代码:https://github.com/INK-USC/BITEBITE:TextualBackdoorAttackswithIterativeTriggerInjectionAbstract1Introduction2ThreatModel3Methodology3.1BiasMeasurementonLa
- Monitoring Changes in Your Database Using DDL Triggers
lchstudy
databasetriggersparsingtablecommandcmd
IntroductionAdditions,deletions,orchangestoobjectsinadatabasecancauseagreatdealofhardshipandrequireadbaordevelopertorewriteexistingcodethatmayreferenceaffectedentities.Tomakemattersworsetrackingdownth
- vue element plus Cascader 级联选择器
跟Bug双向奔赴
vue.jselementuijavascript
当一个数据集合有清晰的层级结构时,可通过级联选择器逐级查看并选择。TIP在SSR场景下,您需要将组件包裹在之中(如:Nuxt)和SSG(e.g:VitePress).基础用法#有两种触发子菜单的方式只需为Cascader的options属性指定选项数组即可渲染出一个级联选择器。通过props.expandTrigger属性控制子节点的展开方式Childoptionsexpandwhenclicke
- vue3生命周期
栗子daisy
vue3的钩子函数基本是再vue2的基础上加了一个on,但也有两个钩子函数发生了变化。BeforeDestroy变成了onBeforeUnmount,destroyed变成了onUnmounted(尤大神的介绍是mount比Destroy更形象,也和beforeMount相对应。)除了这些钩子函数外,Vue3.x还增加了用来调试使用的onRenderTracked和onRenderTriggere
- mysql3.7之触发器
job_csdn
oracle数据库sqlmysql
1.触发器的定义触发器是由事件来触发某个操作,这些事件包括INSERT、UPDATE、DELETE事件。所谓事件就是指用户的动作或者触发某项行为。如果定义了触发程序,当数据库执行这些语句时候,就相当于事件发生了,就会自动激发触发器执行相应的操作。2.触发器的语法CREATETRIGGER触发器名称{BEFORE|AFTER}{INSERT|UPDATE|DELETE}ON表名FOREACHROW触
- 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