- 使用LVS的 NAT 模式实现 3 台RS的轮询访问
Sky---dog
lvs服务器运维
节点规划1、配置RSRS的网络配置为NAT模式,三台RS的网关配置为192.168.10.81.1配置RS11.1.1修改主机名和IP地址[root@localhost~]#hostnamectlhostnamers1[root@localhost~]#nmclicmodifyens160ipv4.methodmanualipv4.addresses192.168.10.7/24ipv4.gate
- 【Unity网络编程知识】使用Socket实现简单TCP通讯
为你写首诗ge
Unity网络编程unity网络tcp/ip
1、Socket的常用属性和方法创建SocketTCP流套接字SocketsocketTcp=newSocket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);1.1常用属性1)套接字的连接状态socketTcp.Connected2)获取套接字的类型socketTcp.SocketType3)获取套接字的协议类型so
- Linux的账号和权限管理
YUNYINGXIA
linux服务器运维
目录一、用户账号和组账号的概述1.用户账号2.组账号3.UID和GID二、用户账号管理1.用户账号文件(1)passed文件中配置格式(2)shadow文件中配置格式2.添加、修改、删除用户账号(1)useradd--添加用户账号注意事项(2)passwd--为用户账号设置密码注意事项(3)usermod--修改用户账号属性注意事项(4)userdel--删除用户账号注意事项3.用户账号的初始配置
- GIT windows中的换行符为 CRLF, 而在linux下的换行符为LF,所以在执行add . 时出现提示,解决办法
whaxkl
学习git
一、常用命令gitconfig--globaluser.email“you@example.com”gitconfig--globaluser.name“YourName”切换到master分支:gitcheckoutmaster1.warning:LFwillbereplacedbyCRLFinapplication.yml.Thefilewillhaveitsorigina解决方法window
- 【Git】“LF will be replaced by CRLF“警告详解
Orangejuz
编程发现问题git
一、背景在Windows中使用CRLF标识一行的结束,而在Linux/UNIX系统中只使用LF标识一行的结束。CRLF即Carriage-ReturnLine-Feed的缩写。通常情况下,Git库不会自动修改文件内容,但是默认会将入库的文件的行尾符设置为LF,会将检出的文件的行尾符设置为CRLF。但是在执行如下操作时出现如下警告:gitaddtest.pywarning:LFwillberepla
- 指定python版本的venv创建django项目
啊欧丶
python开发环境pythondjango
特点本文引导的创建方法,有以下特点:将venv放在了django根目录下,与djangoapp目录同级,便于查看管理,对于有强迫症的人来说是一大福音直接生成指定python版本的虚拟环境+django配置过程简单,属于开箱即用,及其适合配置本地windows开发环境准备工作到python官网,下载任意你喜欢的python版本,安装时,记得勾选AddPythonx.x.xtoPATH,用作全局pyt
- lua面向对象
剑决浮云气
lualua开发语言
1.self,也就是C++语言的this指针localAccount={balance=0}functionAccount.add(this,v)this.balance=this.balance+vendfunctionAccount:sub(v)self.balance=self.balance-vend--[[当我们用.去调用一个函数的时候需要显示的把对象自己传递过去]]Account.ad
- Redis原理:watch命令
csjane1079
redisredisjava
在前面的文章中有提到,在multi前可以通过watch来观察哪些key,被观察的这些key,会被redis服务器监控,涉及该key被修改时,则在exec命令执行过程中会被识别出来,exec就不会再执行命令。源码分析//监控对应的keyvoidwatchCommand(client*c){intj;if(c->flags&CLIENT_MULTI){addReplyError(c,"WATCHins
- C++中的异常和智能指针
九州~空城
c++开发语言
一、C++中的异常1.1C语言中关于错误的处理(回顾)1.1.1处理一:文件中的错误码,错误信息C语言中,文件打开成功则返回地址,不成功返回0FILE*fout=fopen("Test.txt","r");cout在,查catch有无类型匹配2>不在或无类型匹配,退出当前函数,沿着函数栈去调用它的函数中查找有无try,再走一遍①的逻辑,如果到达main()结束时仍无匹配,则终止程序如intadd(
- vue项目初始化CSS样式
晕fufufu
vue知识点cssvue.js前端
html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd
- WX小程序/公众号
不努力谁会可怜你?
前端技术微信小程序
1WX中的基础知识和应用案例X.1箭头>符号的css写法.address-box{display:flex;justify-content:space-between;color:#999;line-height:90rpx;font-size:28rpx;margin-left:40rpx;}.address-box.address-manage{position:relative;height
- Android RecyclerView item动态添加控件重复问题
893151960
android开发日记item动态添加控件重复问题
比如item中的linearLayout根据数据动态addView。只要在添加之前linearLayout.removeAllViews();就行。
- neo4j-如何让外部设备访问wsl中的neo4j
Gratitute_林腾
neo4jLinuxwindowsneo4j
WSL运行在一个虚拟网络环境中,它的IP只能被宿主Windows访问,外部设备无法直接访问WSL的端口。你需要在Windows上转发端口,让外部设备可以访问Windows并映射到WSL。1.获取WSL的IP地址在WSL中运行以下命令获取其IP地址:ipaddrshoweth0输出类似:3:eth0:mtu1500inet172.26.112.1/20brd172.26.127.255scopegl
- 打开项目报错:If the artifact you are trying to retrieve can be found in the repository but without metadat
木子庆五
gradlemavenjava
Iftheartifactyouaretryingtoretrievecanbefoundintherepositorybutwithoutmetadatain'M更换gradle和gradle插件后,编译报错,在项目的gradle增加仓库//Top-levelbuildfilewhereyoucanaddconfigurationoptionscommontoallsub-projects/mo
- linux系统如何配置host.docker.internal
2401_89793006
热门话题linuxdockereureka
方法1:使用--add-host参数在运行容器时,可以通过--add-host参数手动将宿主机的IP地址映射到host.docker.internal。获取宿主机的IP地址:iprouteshowdefault|awk'/default/{print$3}'通常,宿主机的IP地址是172.17.0.1(Docker默认网桥的网关地址)。运行容器时添加--add-host参数:dockerrun--
- 深度学习篇---断点重训&模型部署文件
Ronin-Lotus
图像处理篇程序代码篇深度学习篇深度学习r语言人工智能pythonpaddlepaddle断点重训模型部署
文章目录前言一、断点重训(Checkpoint)文件1.动态图(DyGraph)模式.pdparams文件.pdopt文件.pdscaler文件.pdmeta或.pkl文件2.静态图(StaticGraph)模式.pdparams和.pdopt文件.ckpt文件3.恢复训练二、模型部署文件1.动态图部署文件.pdmodel.pdiparams示例代码2.PaddleInference部署三、核心区
- Git分布式版本控制工具
cloudy-m
git分布式
1.Git工作流程命令如下:clone(克隆):从远程仓库中克隆代码到本地仓库中checkout(检出):从本地仓库中检出一个仓库分支进行修订/切换子分支add(添加):在提交前现将代码提交到暂存区commit(提交):提交到本地仓库。本地仓库中保存修改的各个历史版本fetch(抓取):从远程库,抓取到本地仓库,不进行任何的本地操作,一般操作比较少pull(拉去):从远程库拉到本地库,自动进行合并
- 链表使用基础——如何创建链表
榛果咖啡有点苦
链表
链表使用基础——如何创建链表前言leetcode题2两数相加已知两个非空链表,表示两个非负整数,每位数字都是按照逆序方式存储,每个节点存储一位数字将这两个数相加,并以相同形式返回一个表示和的链表假设:除了数字0以外,这两个数不会以0开头示例:建立结果链表structListNode*addTwoNumbers(structListNode*l1,structListNode*l2){intadd=
- 安全研发----64位和32位程序在Visual Studio中使用汇编方法总结
信安成长日记
Windows终端安全安全研发visualstudioidevisualstudio
目录一.32位程序使用方法二.64位程序使用方法一.32位程序使用方法直接可以在代码中直接嵌入 __asm { leaeax,shellcode; jmpeax; } 二.64位程序使用方法64位中不像32位程序一样能够在程序中书写代码段,要嵌入到文件中新建一个.asm文件.codefun1procmovrax,120addrax,34subrax,130r
- 十五、实战开发 uni-app x 项目(仿京东)- 收货地址
九班长
uni-appxuni-appjava前端jsvue大数据数据库
不再讲如何添加新页面了,如不会,可以看六、实战开发uni-appx项目(仿京东)-分类页-CSDN博客添加新页面addres.uvue文件,我们先逐行讲解代码,最后附上整个代码页面功能展示收货地址列表:展示用户保存的收货地址,包括收货人姓名、电话、详细地址等信息。添加/编辑收货地址:用户可以添加新的收货地址或编辑已有的收货地址。删除收货地址:用户可以删除不需要的收货地址。设置默认地址:用户可以设置
- C++进阶——指针
徐行tag
C++进阶c++开发语言
第一部分:指针的本质(内存视角)内存地址的物理意义计算机内存是一系列连续编址的存储单元每个变量占据特定内存区域(如intx占4字节)地址:内存单元的唯一编号(如0x7ffeeb0c)指针的定义cppintx=42;//普通变量int*ptr=&x;//ptr保存x的地址&操作符:取地址操作符(Address-ofOperator)*操作符:声明指针类型或解引用操作符(DereferenceOper
- 【算法练习】寻找链表的中间结点
YaYa521520yaya
算法练习链表算法数据结构
题目描述:给定一个单链表L,请编写程序输出L中间结点保存的数据。如果有两个中间结点,则输出第二个中间结点保存的数据。例如:给定L为1→7→5,则输出应该为7;给定L为1→2→3→4,则输出应该为3。输入描述:每个输入包含1个测试用例。每个测试用例第1行给出链表首结点的地址、结点总个数正整数N(≤10)。结点的地址是5位非负整数,NULL地址用−1表示。接下来有N行,每行格式为:AddressDat
- 4、匿名函数lambda的使用
周Echo周
c++特性11等等常用的开发语言c++数据结构后端c语言
一、格式[捕获列表](参数列表)mutable(可选)异常属性->返回类型{//函数体}捕获列表是可以自动捕获参数的。一般编译器可以自己推断出返回类型,所以可以不用写。如下:[捕获列表](参数列表){函数体}二、捕获列表1、按值和引用传递捕获列表是可以自动捕获参数的。voidtest(){intc=12;intd=30;inte=10;autoadd=[c,d,&e](inta,intb)->in
- dockerfile内容例子
康康!!
容器
FROMros:kineticRUNcp/etc/apt/sources.list/etc/apt/sources.list.bakADDsources.list*/opt/RUNcp-f/opt/sources.list.ustc/etc/apt/sources.listRUNmkdir-p~/.pip&&echo“[global]\nindex-url=http://mirrors.aliyu
- 解决hash冲突的办法有哪些?HashMap用的哪种?
胡图蛋.
哈希算法java散列表
解决哈希冲突的办法在哈希表中,不同的键可能被映射到同一个索引位置,这种情况称为哈希冲突(HashCollision)。为了解决哈希冲突,主要有以下几种方法:1.开放定址法(OpenAddressing)开放定址法的基本思想是,当发生哈希冲突时,按照某种固定的方式在哈希表中寻找下一个空闲的位置来存储发生冲突的键值对。常见的开放定址法包括:线性探测(LinearProbing):当发生冲突时,在哈希表
- Qt Creator里面添加Python库
吃草的骆驼
C++QTlibrarypythonQtCreator
测试环境:Win7,QtCreator3.0,Python2.7在项目名称右键,点AddLibrary。直接上图,要特别注意的是,那个Add''d''suffixfordebugversion一定不能勾选!!最终你的.pro文件里面一定要是这样的(把Qt自动加的”CMD“删去):win32:LIBS+=-LD:/Python27/libs/-lpython27INCLUDEPATH+=D:/Pyt
- 【MySQL】超详细MySQL常用日期格式转换函数、字符串函数、聚合函数(最新版)
m0_74824845
面试学习路线阿里巴巴mysql数据库
文章目录一、MySQL常用日期格式转换函数1、查看当前日期时间2、日期函数3、日期格式转换4、字符串日期转换5、时间单位转换6、DATE_ADD(date,intervalexprtype)从日期加上指定的时间间隔[expr为正数是往后加,为负数是往前减]7、DATE_SUB(date,intervalexprtype)从日期减去指定的时间间隔[expr为正数是往前减,为负数是往后加]8、PERI
- 【C#】字符串字节转16进制字节数组
加号3
c#
publicstaticbyte[]ConvertStringToBytes(Stringstr){ListlistBytes=newList();string[]hexValuesSplit=str.Trim().Split('');foreach(stringhexinhexValuesSplit){listBytes.Add(Convert.ToByte(hex,16));}returnli
- C++ 仿函数
azaz_plus
C++c++开发语言仿函数
1.仿函数的基本用法仿函数是一个类或结构体对象,它通过重载函数调用运算符operator(),使得该对象可以像普通函数一样被调用。示例1:实现一个加法器classAdder{public:Adder(intnum):num_(num){}//构造函数保存状态(加数)//重载operator(),执行加法intoperator()(intx)const{returnx+num_;}private:i
- 【C++】通讯录管理系统+少量数据结构
XYN5114
C++c++学习方法数据结构笔记开发语言
#include#includeusingnamespacestd;#definemax1000structnewp{stringname;intsex;intage;stringnumber;stringadd;};structbooks{structnewpa[max];intsize;};staticvoidshowMenu(){coutsize==max){cout>name;abs->a
- 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