- mybatisPlus多数据源方案
平原人
springbootmybatis
背景在微服务李娜一般一个服务只有一个数据源,但是在有的老项目或者一些特定场景需要多数据源链接不同的数据库,本文以mybatisPlus为基础给出解决方案多数据源场景分类情形一:项目启动就确定了情形一:一些sass系统里面动态确定的,比如说运行时建立的数据源,还有一些报表场景也是如此本文暂不讨论相关解决方案(本人都有使用过):1.mybatisPlus官网提供的提供框架,使用是使用注解切换缺点很大,
- flink读kafka写入mysql_Flink 1.9 实战:使用 SQL 读取 Kafka 并写入 MySQL
苏远岫
上周六在深圳分享了《FlinkSQL1.9.0技术内幕和最佳实践》,会后许多小伙伴对最后演示环节的Demo代码非常感兴趣,迫不及待地想尝试下,所以写了这篇文章分享下这份代码。希望对于FlinkSQL的初学者能有所帮助。完整分享可以观看Meetup视频回顾:https://developer.aliyun.com/live/1416这份代码主要由两部分组成:1)能用来提交SQL文件的SqlSubmi
- c#读取json某一节点数据,如何在C#上从json读取数据
我是种草囤货菌
c#读取json某一节点数据
IhavethefollowingjsonObjectthatIpasstomyc#server[{"ID":1,"FirstName":"Jay","LastName":"Smith"},{"ID":2,"FirstName":"Rich","LastName":"Son"},{"ID":3,"FirstName":"Emmy","LastName":"Wat"}]IcreateaClassli
- vue判断视频链接是否有效
指针满天飞
vue.js音视频javascript
//判断视频链接是否有效functioncheckVideoUrl(src){//创建一个隐藏的元素letvideo=document.createElement("video");video.style.display="none";//隐藏该元素document.body.appendChild(video);//设置视频源video.src=src;//监听视频元数据加载完成事件video.
- openfeign发送 多部分请求
荭色海湾
SpringBootjava前端服务器
@PostMapping(value="/upload",consumes=MediaType.MULTIPART_FORM_DATA_VALUE)publicResultVoupload(@RequestPart("file")MultipartFile[]file,@RequestParam("path")Stringpath);
- 力扣-数组-69 x的平方根
夏末秋也凉
力扣#数组leetcode数据结构算法
思路和时间复杂度思路:二分寻找符合要求的元素,在mid小于当时的元素时,记录更新结果,这样可以满足要求,而且由于是计算平方,所以可以右边界为之前的一半时间复杂度:代码classSolution{public:intmySqrt(intx){if(x==0)return0;if(x==1)return1;//左闭右闭区间longlongleft=0,right=x/2;longlongcur=0;w
- mysqlbinlog和binlog2sql的使用及mysql通过binlog日志恢复数据库数据
向宇it
#mysqlmysqllinuxbinlogbinlog2sqlmysqlbinlog
如果没有开启binlog,也没有预先生成回滚SQL,那可能真的无法快速回滚了。对存放重要业务数据的MySQL,强烈建议开启binlog。查看binklog是否开启showvariableslike'%log_bin%';值为OFF,需开启,值为ON,已开启。查看binlog存放日志文件目录(如下图,博主binlog目录为/var/lib/mysql):showvariableslike'%data
- Flink 1.17.2 版本用 java 读取 starrocks
小强签名设计
flinkjavapython
文章目录方法一:使用FlinkJDBC连接器(兼容MySQL协议)方法二:使用StarRocksFlinkConnector(推荐) 在Flink1.17.2中使用Java读取StarRocks数据,可以通过JDBC连接器或StarRocks官方提供的FlinkConnector实现。以下是两种方法的详细步骤:方法一:使用FlinkJDBC连接器(兼容MySQL协议) StarRocks兼容M
- Ranger 安装报错日志
第一次看海
hadoop大数据rangerapacheranger
1,导入失败,log_bin_trust_function_creators为OFFErrorexecuting:CREATEFUNCTION`getXportalUIdByLoginId`(input_valVARCHAR(100))RETURNSint(11)BEGINDECLAREmyidINT;SELECTx_portal_user.idintomyidFROMx_portal_userW
- 基于支持向量机SVM的电网负荷预测,libsvm工具箱详解,SVM详细原理
神经网络机器学习智能算法画图绘图
支持向量机SVM支持向量机算法机器学习SVM电网负荷预测svr
目录支持向量机SVM的详细原理SVM的定义SVM理论Libsvm工具箱详解简介参数说明易错及常见问题SVM应用实例,基于支持向量机SVM的电网负荷预测代码结果分析展望摘要基于支持向量机SVM的电网负荷预测,SVM原理,SVM工具箱详解,SVM常见改进方法支持向量机SVM的详细原理SVM的定义支持向量机(supportvectormachines,SVM)是一种二分类模型,它的基本模型是定义在特征空
- Flink SQL 读取 Kafka 数据到 Mysql 实战
小技工丨
大数据技术学习flinksqlkafka
Flink1.9.2SQL读取Kafka数据到Mysql实战案例需求通过Flinksql使用DDL的方式,实现读取kafka用户行为数据,对数据进行实时处理,根据时间分组,求PV和UV,然后输出到mysql中。1、kafka中的消息的格式数据以JSON格式编码,格式如下:{"user_id":1101,"item_id":1875,"category_id":456876,"behavior":"
- ranger集成starrock报错
蘑菇丁
大数据+机器学习+oracle大数据
org.apache.ranger.plugin.client.HadoopException:initConnection:UnabletoconnecttoStarRocksinstance,pleaseprovidevalidvalueoffield:{jdbc.driverClassName}..com.mysql.cj.jdbc.Driver.可能的原因JDBC驱动缺失:运行环境中没有安
- python连接数据库速查示例
qq_25737959
数据库python开发语言
python连接数据库importpymysqlDBHOST='localhost'DBUSER='root'DBPASS='123456'DBNAME='dbtest'db=pymysql.connect(host=DBHOST,user=DBUSER,password=DBPASS,database=DBNAME)新建一张新表importpymysqlDBHOST='localhost'DBU
- 详细介绍ListView_DeleteItem
程工助力英语中国话
VisualC++2017从入门到精通windowswin32
书籍:《VisualC++2017从入门到精通》的2.3.8Win32控件编程环境:visualstudio2022内容:【例2.27】支持按Delete键删除某行的列表视图控件说明:以下内容大部分来自腾讯元宝。以下是关于**ListView_DeleteItem**函数的详细介绍,结合微软官方网页及搜索资料的核心内容:1.定义与作用ListView_DeleteItem是WindowsAPI中用
- Ubuntu22.04安装数据
@-wyy
mysql
数据库安装步骤:sudoapt-getupdatesudoaptinstallmysql-servermysql-clientsudosystemctlstartmysqlsudosystemctlstatusmysql(1)在命令行登录MySQL数据库,并使用mysql数据库(必须使用这个库,因为root在这里面)sudomysql-uroot-pusemysql(2)修改连接权限,执行:upd
- Ubuntu-配置apt国内源
木卫二号Coding
Linuxubuntulinux运维
Ubuntu-配置apt国内源安装vimapt-getupdateapt-getinstall-yvim备份cp/etc/apt/sources.list/etc/apt/sources.list.bak编辑源数据vim/etc/apt/sources.listdebhttp://mirrors.aliyun.com/ubuntu/jammymainrestricteduniversemultiv
- bug修改模板(日志)
严欣铷
bugjava开发语言
第一段:前端报错:Uncaught(inpromise)TypeError:Cannotreadpropertiesofundefined(reading'bookDetailList')第二段:后端报错:Failedtoconvertvalueoftype‘java.lang.String‘torequiredtype‘java.lang.Long环境:点击修改按钮时,先查询一次,查询结果为报错
- Vue.Js 是一个渐进式的 JavaScript 框架,专为构建用户界面而生,尤其擅长打造单页应用(SPA)。其核心设计理念在于组件化,即将用户界面拆解为独立且可复用的组件单元。以下是 Vue.Js
一一代码
pythonvue.js
1.创建Vue.Js组件在Vue.js中,组件是一个Vue实例,可以包含模板、数据、方法、生命周期钩子等。1.1全局组件全局组件可以在任何Vue实例中使用。```javascript//定义一个全局组件Vue.component('my-component',{template:'这是一个全局组件'});//创建Vue实例newVue({el:'#app'});```在HTML中使用:```htm
- python远程连接mysql数据库_python远程连接MySQL数据库
weixin_39528697
python远程连接MySQL数据库本文实例为大家分享了python远程连接MySQL数据库的具体代码,供大家参考,具体内容如下连接数据库这里默认大家都已经配置安装好MySQL和Python的MySQL模块,且默认大家的DB内表和访问账号权限均已设置无误,下面直接代码演示:#-*-coding:utf-8-*-"""CreatedonFriDec3010:43:352016@author:zhen
- 【Python实用教学篇】手把手4步教会你用Python连接数据库!
田野猫咪
数据库python开发语言
一,打开数据库(Mysql)服务二,用Sqlyog(回复yog获取sqlyog工具使用方法)连接自己要测试的数据库,创建测试用数据库和表三,打开PyCharm,(python开发2.*版本可以直接使用MySQL,python3.*版本需要下载使用PyMySQL包才能连接数据库),按照下图方法安装PyMySql包1.ctrl+alt+s调出设置面板,选择project下的pythoninterpre
- python 代码连接数据库汇总(一)
xinxiyinhe
pythonpython数据库开发语言
以下是Python调用常见数据库的代码示例:1.MySQL#安装库:pipinstallmysql-connector-pythonimportmysql.connector#连接数据库conn=mysql.connector.connect(host="localhost",user="root",password="your_password",database="test_db")curso
- 数据库-python SQLite3
45度看我
数据库python数据库
数据库-pythonSQLite3一:sqlite3简介二:sqlite3流程1>demo2>sqlite3流程三:sqlite3step1>createtable2>insertinto3>update4>select1.fetchall()2.fetchone()3.fetchmany()5>delete6>otherstep四:Mysql1>Mysql知识详解一:sqlite3简介sqlit
- Pandas使用教程 - Pandas 与 SQL 数据库交互
闲人编程
Pandas使用教程数据库pandassql数据分析存储加载数据
目录进阶篇40.Pandas与SQL数据库交互1.引言2.数据读取:从SQL加载数据2.1使用pd.read_sql()示例:使用SQLAlchemy连接SQLite数据库2.2使用pd.read_sql_table()3.数据写入:将DataFrame写入SQL数据库3.1使用DataFrame.to_sql()示例:写入数据到SQLite数据库4.数据库连接与SQLAlchemy4.1使用SQ
- 基于SpringBoot的医院电子病历系统设计与实现(源码+万字报告+讲解)
炳烛之明科技
springboot后端java
目录摘要IABSTRACTII第一章绪论11.1研究背景与意义11.2国内外研究现状11.3研究内容2第二章相关技术工具简介32.1Java语言32.2SpringBoot框架32.3MySQL数据库3第三章系统需求分析43.1可行性分析43.2系统总体功能需求分析43.3管理员总体功能需求分析43.4患者总体功能需求分析63.5医生总体功能需求分析6第四章系统设计84.1系统的总体设计84.2系
- 回溯法——跳房子
小赵起名困难户
算法练习算法动态规划数据结构
跳房子是小朋友玩的游戏。地面上画出一连串格子,每个格子里有一个整数,小朋友从外面跳入格子,并继续往前跳,直到跳出所有格子。每次跳跃的规则是,可以跳入下一格或下下格或下下下格。怎么跳能让落脚格子里的数的累加和最小。输入格式:第一行输入格子数n(1usingnamespacestd;#defineL110intn;inta[L];intv[L];intmain(){cin>>n;for(inti=0;
- elementPlus 中表单验证方法(手机号、正整数、邮箱)
魏时烟
vue3+ts+scssjava前端算法
1、手机号验证construle:ElFormRules={mobile:[{validator:validateMobile,trigger:'blur'}]}//手机号验证(1)constvalidateMobile=(rule,value,callback)=>{constreg=/^1[3-9]\d{9}$/if(value&&!reg.test(value)){callback(newE
- 单元测试-vitest笔记
小天呐
笔记前端vitest
一、关于测试1、测试分类单元测试:unittest集成测试端对端测试:e2e2、通用测试框架:jestvitest只能做js、ts测试。运行环境是node,没有dom和window如果需要测试dom,需要安装jsdom,用于在node环境中模拟dom二、vitest1、基本使用安装npmivitest-D配置启动命令"scripts":{"test":"vitest"}新建以.spec.ts或.t
- Easyliev在线视频分享平台项目总结——SpringBoot、Mybatis、Redis、ElasticSearch、FFmpeg
周小闯
项目总结springbootmybatisredis
EasyLive项目总结登陆注册获取图片验证码captchat插件base编码(图片,用于前端展示)checkCodeKey验证码标识(用于匹配redis缓存,校验验证码)redis缓存保存验证码缓存用于登录注册校验(checkCodeKey为标识)注册校验验证码根据前端传递的checkCodeKey,在Redis缓存中查找验证码并进行比较注册昵称是否被使用邮箱是否被使用清除Redis中的验证码缓
- C++之创建线程
C嘎嘎嵌入式开发
C++c++开发语言
1.使用函数指针最简单的方式是使用一个普通的函数作为线程的入口点。#include#includevoidthreadFunction(){std::cout#includeintmain(){std::threadt([]{std::cout#includeclassMyClass{public:voidmemberFunction(){std::cout#includevoidthreadFu
- STM32 HAL库 CAN_1
泠君
stm32arm嵌入式硬件
"can.c"#include"stdio.h"CAN_TxHeaderTypeDefmycan_tx;CAN_RxHeaderTypeDefmycan_rx;voidCANFilter_Config(void)//滤波{CAN_FilterTypeDefsFilterConfig;sFilterConfig.FilterBank=0;//CAN过滤器编号,范围0-27sFilterConfig.
- 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