给定一个数组nums,编写一个函数将所有0移动到数组的末尾,同时保持非零元素的相对顺序。请注意,必须在不复制数组的情况下原地对数组进行操作。classSolution{public:voidmoveZeroes(vector&nums){intn=nums.size();intleft=0;intright=0;while(right
FastAPI vs Flask vs Django:Python Web框架全面对比
天天进步2015
pythonpythonfastapiflask
Python作为最受欢迎的编程语言之一,其Web开发生态极为丰富。FastAPI、Flask和Django是当前主流的三大PythonWeb框架,各有千秋。本文将从架构设计、开发效率、性能表现、生态支持、适用场景等方面,全面对比这三大框架,帮助开发者选择最适合自己的技术栈。目录框架简介架构设计与理念开发效率与易用性性能对比生态与扩展性典型应用场景总结与选型建议参考资料框架简介FastAPI定位:新
LeetCode Hot100(回溯)
asom22
LeetCodeHot100题解leetcode算法职场和发展
46.全排列题意给定一个不含重复数字的数组nums,返回其所有可能的全排列。你可以按任意顺序返回答案。题解因为是所有的排列组合,我们每一个位置都取一遍数组的所有元素看看有没有重复的即可代码importjava.util.*;publicclassSolution{publicstaticvoidmain(String[]args){int[]nums={1,2,3};permute(nums);}
vscode插件和源码通过命令进行通信
zhouhangzooo
【VisualStudioCode】vscode通信vscode命令
本文讲述一下vscode插件和源码通过命令进行通信原文链接:https://zhouhangzooo.github.io/2019/04/10/vscode插件与源码通信/在之前"vscode插件与webview相互通信"文章中,讲述webview和插件进行通信,里面有个注册命令,之前文章没有详细代码,其实代码vscoode官网都有,##接下来要说命令,那么先贴一下注册命令的代码123456789
浏览器的垃圾回收机制
甘露寺
js浏览器javascript前端
深入解析现代浏览器的垃圾回收机制:分代回收与标记清除算法本文详细探讨了Chrome、Firefox等现代浏览器中JavaScript引擎的垃圾回收(GC)原理,重点讲解分代回收策略和标记清除/整理算法的工作流程,并通过示例帮助理解内存自动管理背后的机制。为什么需要垃圾回收?JavaScript是一种自动内存管理的语言。开发者通常不需要手动分配或释放内存(如C/C++中的malloc/free)。这
新手友好!从HTTP到HTTPS再到HTTP/2:网站通信的进化之路
甘露寺
浏览器httphttps网络协议
从HTTP到HTTPS再到HTTP/2:网站通信的进化之路作为一名刚接触Web开发的新手,你可能经常听说HTTPS和HTTP/2,但不太清楚它们具体解决了什么问题,又是如何一步步优化我们上网体验的。这篇博客就用大白话,带你了解网站通信技术的进化史!第一章:HTTP的烦恼-裸奔的网络想象一下,你在网上冲浪,就像在公共场所大声聊天。问题一:信息裸奔,谁都能偷听!HTTP协议:早期的网站大多使用HTTP
v-if、display、visibility、opacity隐藏元素的区别
甘露寺
前端vuereact
前端元素隐藏与条件渲染完全指南(Vuevs.Reactvs.CSS)本文对比v-if、v-show、display:none、opacity:0、visibility:hidden以及React条件渲染的差异,帮你彻底掌握它们的适用场景!核心概念1.DOM树vs.渲染树DOM树:完整的HTML节点结构(无论是否隐藏)。渲染树:浏览器实际绘制到屏幕上的内容(隐藏元素可能被跳过)。2.关键差异特性是否
免费实时AI图片编辑工具-多模态大模型:GPT-4o、grok、豆包、BAGEL、MagicQuill、OmniGen2
loong_XL
AIGCaigc
纯自然语言对话实现图像编辑;参考https://zhuanlan.zhihu.com/p/1890036563586577897GPT-4ohttps://chatgpt.com/geminihttps://gemini.google.com/grokhttps://grok.com/?referrer=website
CSS 与 JavaScript 加载优化
甘露寺
cssjavascript前端
CSS与JavaScript加载优化指南:位置、阻塞与性能让你的网页飞起来!本文详细解析CSS和JavaScript标签的放置位置如何影响页面性能,涵盖阻塞原理、浏览器机制和最佳实践。掌握这些知识可显著提升用户体验和SEO排名!一、核心问题:为什么位置很重要?浏览器渲染页面时需经历:解析HTML→2.下载资源→3.执行脚本→4.渲染页面错误的位置会阻塞关键路径,导致:⚠️长时间白屏(脚本阻塞)样式
React 元素渲染
小晗同学
Reactreactjsprops组件化
React学习:元素渲染元素是构成React应用的最小砖块,它描述了你在屏幕上想看到的内容。constelement=Hello,world;与浏览器的DOM元素不同,React元素是创建开销极小的普通对象。ReactDOM会负责更新DOM来与React元素保持一致。React元素是不可变对象。一旦被创建,你就无法更改它的子元素或者属性。但是将元素或属性封装到有状态组件中,就可以实现更新渲染。Re
Python爬虫短视频平台数据抓取:抓取视频和评论技术方案
数据狐(DataFox)
2025年爬虫实战项目python爬虫开发语言
一、摘要本方案提供完整的Python爬虫实现流程,涵盖短视频平台(以抖音为例)的视频与评论数据采集技术,包含环境配置、核心代码实现及反爬优化策略。通过模拟浏览器操作、API接口分析及数据持久化处理,实现高效合规的数据采集。二、引言短视频平台数据具有巨大商业价值,但直接爬取面临动态渲染、加密参数等反爬机制挑战。本方案采用混合技术路线,结合网页解析与移动端API分析,平衡效率与成功率。三、环境配置基础
Python HTTP日志分析:Nginx/Apache日志的Python解析
华科℡云
网络协议负载均衡运维
Web服务器日志是监控流量模式、性能瓶颈及安全威胁的关键数据源。Python凭借其丰富的库生态,可高效解析Nginx与Apache的日志格式,实现结构化数据提取与分析。日志格式解析基础Nginx默认采用combined格式,字段包括:$remote_addr(客户端IP)、$time_local(时间戳)、$request(请求方法+URL+协议)、$status(HTTP状态码)、$body_b
Lagent:从零搭建你的 Multi-Agent
Oculus Reparo!
人工智能
https://github.com/InternLM/Tutorial/blob/camp4/docs/L2/Agent/task.md一、Lagent框架中Agent的使用目标通过Lagent框架,基于InternLM2.5,搭建一个WebDemo,体验其智能体功能与工具集成能力。步骤与实现环境准备激活环境:condaactivatelagent确保已获取API授权令牌,并写入环境变量。代码实
Midscene.js介绍和使用
望华笙
测试工具ui前端
Midscene.js介绍和使用由于课程任务的需要,本人去寻找了AI+软件测试的相关应用,发现了Midscene这一便利的UI自动化测试工具。本篇博客主要对Midscene作了介绍,也给出了本人在使用Midscene过程中遇到的问题及摸索到的解决方案。Midscene.js是一个开源的基于多模态大型语言模型的UI自动化测试工具,它是由字节的web-infra团队开发。它能够智能地“解析”用户界面并
Midscene.js 安装与配置指南
孙爽知Kody
Midscene.js安装与配置指南midsceneLetAIbeyourbrowseroperator.项目地址:https://gitcode.com/gh_mirrors/mid/midscene1.项目基础介绍Midscene.js是一个开源项目,旨在通过AI驱动浏览器自动化操作。用户可以使用自然语言描述任务需求,Midscene.js将自动执行相应的浏览器操作,如数据提取、页面验证等。该
websocket多客户端接收消息_WebSocket之消息接收发送
weixin_39940344
WebSocket协议是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工(full-duplex)通信——允许服务器主动发送信息给客户端。在WebSocketAPI中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。http协议是单向通信,一般由客户端发起请求,然后接收服务端响应。如果要实现客户端实时消息跟新功能如:更新聊天消息,更新邮件信息,更
ASP.NET Core通过Websocket建立简单聊天室
什么是websocket?传统的HTTP协议是一个请求-响应协议,也即是由浏览器主动向服务器发起请求,随后服务器才能进行响应这个请求,再把数据发送给浏览器。也就是说,浏览器不主动发起请求,服务器是不能主动发送数据给浏览器的,很明显,这并不能满足实时聊天的需求。满足这个需求的解法总体来说有三种:轮询、长连接、Comet轮询:轮询是指浏览器通过JavaScript启动一个定时器,然后以固定的间隔给服务
工业控制系统安全综述
罗思付之技术屋
物联网及AI前沿技术专栏安全网络web安全
摘要工业控制系统除了应用于生产制造行业外,还广泛应用于交通、水利和电力等关键基础设施.随着工业数字化、网络化、智能化的推进,许多新技术应用于工业控制系统,提高了工业控制系统的智能化水平,但其也给工业控制系统的安全带来严峻的挑战.因此,工业控制系统的安全倍受研究人员的关注.为了让研究人员系统化地了解目前的研究进展,调研了近3年WebofScience核心数据库、EI数据库和CCF推荐网络与信息安全国
JAVA springboot Access-Control-Allow-Origin
墨着染霜华
javaspringbootspring
response.setHeader("Access-Control-Allow-Origin","https:/your-domain.com");意思是:只有来自https:/your-domain.com的前端页面(即请求的来源Origin是这个域名),才能通过浏览器发起跨域请求访问这个接口区分大小写&完全匹配这个设置是完全匹配的,也就是说:https://epos.whbswdt.com
Java web%10
好学且牛逼的马
java前端AI编程
%10新路线Javawebai笔记阶段时长内容Web前端基础2天HTML、CSS、JS、Vue3、AjaxWeb后端基础4天Maven、HTTP协议、SpringIOC、DI、MySQL、JDBC、MybatisWeb后端实战6天Tlias案例(基于案例讲解web开发的核心知识)Web后端进阶2天SpringAOP、SpringBoot原理、自定义Starter、Maven高级前端web实战4天V
嵌入式linux下基于boa cgic sqlite3的ajax web服务器搭建
モザイクカケラ
嵌入式linux-web嵌入式系统开发boacgicsqlite3嵌入式linuxajax
先上大家的资源全部亲测可用sqlite3数据库c语言常用接口应用实例sqlite3数据库交叉编译并移植到嵌入式开发环境步骤fprintf与stderr、stdout的使用Windows中IIS服务器被防火墙阻止导致外网无法访问sqlite3.OperationalError:unabletoopendatabasefileSQLiteDelete语句SQLite数据库中rowid使用基本操作交叉编
移动端测试——如何解决iOS端无法打开弹窗式网页(Webkit)
BoAiB
测试实战问题记录webkit前端
目录一、什么是webkit?1.核心定义2.iOS的特殊限制3.弹窗拦截的逻辑二、为什么iOS必须用WebKit?1.苹果的官方理由2.实际后果3.然而……三、如何解决iOS端无法打开弹窗式网页?1.用户1.1safari浏览器1.2夸克浏览器2.开发者#最近加入了实习,开始了针对实际业务的测试。在移动端测试时,我发现一个比较有趣的现象(被测网站采用弹出式窗口):Android端:浏览器提供弹窗权
关于Xcode安装不上/安装慢
行云流水zzz
xcodexcodemacos
我之前在appstore下载的Xcode,一直卡上安装上,到最后还是没有安装成功,最后在官网下载Xcode,xcode下载,点击其他下载,然后选择在web页面下,成功。(看清楚你的mac版本,最新版Xcode只兼容mac最新系统,不兼容旧系统
探秘SQLite:打造高效嵌入式数据库应用的实用指南
dfvcbipanjr
数据库sqliteoraclepython
探秘SQLite:打造高效嵌入式数据库应用的实用指南SQLite是一种广泛应用的嵌入式数据库引擎,因其不依赖于独立的服务器进程,且在各大操作系统、浏览器、手机等设备中都能找到它的身影,成为开发者的首选。这篇文章旨在介绍SQLite的基本概念、使用方法以及一些实用的编程示例,帮助您更好地在应用中嵌入SQLite数据库。主要内容1.SQLite简介SQLite是用C语言编写的一个轻量级数据库引擎,被设
5、旋转与自适应布局:iOS应用开发的关键
c7d8e9
8SDK入门iOS开发自适应布局旋转处理
旋转与自适应布局:iOS应用开发的关键1.旋转和自适应布局的重要性iPhone和iPad是令人惊叹的工程杰作。苹果的工程师们找到了各种方法,将最大功能压缩进一个小巧的包装里。其中一个例子就是这些设备可以以纵向(高而窄)或横向(短而宽)模式使用,而且这种方向可以在运行时通过简单旋转设备来改变。你可以在iOS的网页浏览器MobileSafari中看到这种被称为自动旋转的行为示例。像许多iOS应用程序一
机器学习模型监控警报系统设计:Prometheus+Evidently 实战教程
大熊计算机
机器学习prometheus人工智能
1.系统架构设计:从数据采集到智能告警(1)监控系统核心组件交互图预测请求监控指标告警规则通知渠道预测结果质量报告时序数据模型服务PrometheusExporterPrometheusServerAlertmanager邮件/Slack/WebhookEvidently服务可视化仪表盘图解:系统采用双引擎架构,Prometheus负责基础监控指标采集与告警触发,Evidently执行深度模型分析
【HarmonyOS next】ArkUI-X休闲益智记忆翻牌【进阶】
harmonyos-next
本文通过记忆翻牌游戏实现,揭秘网络图片在HarmonyOS与iOS设备上的渲染差异,并提供专业级优化方案。基于ArkUI-X的Web组件技术,我们实现了一套代码双端运行的混合架构。一、跨平台实现架构//ArkTS核心实现importweb_webviewfrom'@ohos.web.webview';@Entry@ComponentstructIndex{controller:web_webvie
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