1.小皮面板官网下载phpstudy8.1.1.3。双击运行exe,一路next。2.放在D:\phpstudy_pro路径中。3.双击桌面图标:phpstedy_pro,面板左方<数据库<创建数据库,填写database_name,user_name,passwd。(所以,小皮是可多用户创建不同的数据库)4.配置全局环境。5.面板左方<软件管理
Linux服务器上安装elasticsearch和kibana
Jinkxs
linuxelasticsearchjenkins
Linux服务器上安装elasticsearch和kibanalinux查询指定端口服务:netstat-tunlp|grep9200一、elasticsearch1、软件下载去镜像网站下载:https://www.newbe.pro/Mirrors/Mirrors-Elasticsearch版本选择7.5.22、新建服务器用户创建用户:useraddesuser设置密码:passwdesuser
[MySql] insert避免(非主键)重复column数据的插入
数据库mysqlinsert
有这样的场景,本系统(系统A)有一张自行维护的用户信息表,这张表的主键是id,会自增(用户在本系统上的id不会重复,id是用户在本系统内的唯一标识)。在这张用户信息表中,还有一列记录用户在企业内的唯一标识,我们把它叫做"unique_id"。现在一个企业内的用户带着自身信息(如token)首次登录系统A,系统A会给这个企业内用户创建本系统的用户(用户信息落表)。先定义下面这样一张用户信息表CREA
【Rust日报】2021-12-21 Embark Studio 使用 Rust 进行本地渲染
Rust语言中文社区
游戏javapython编程语言人工智能
EmbarkStudio使用Rust进行本地渲染作为Rust的忠实拥护者,EmbarkStudio的工程师们正在使用Rust开发渲染引擎和游戏,并且贡献了rust-gpu这个项目。在这篇技术博客中,一位来自Embark的工程师讲述了如何处理用户创建的世界的3D渲染,以及Rust如何帮助他们更好地实现这个目标。原文链接:https://medium.com/embarkstudios/homegro
linux用户管理
千航@abc
linux运维服务器
用户创建:useradd(用户创建命令的详细使用:用户创建命令的详细使用与参数说明-CSDN博客)用户信息配置文件:/etc/passwdabc:x:1000:1000:abc:/home/abc:/bin/bash第一段:用户名(设置你自己的用户名)第二段:密码占位符(就是字面上的意思,一个占位符,真正的密码在配置文件/etc/shadow里)第三段:UID(用户ID:是系统用来唯一标识一个用户
DDD架构实战第六讲总结:领域驱动设计中的聚合
每天三杯咖啡
DDD
云架构师系列课程之DDD架构实战第六讲总结:领域驱动设计中的聚合聚合提升了对象系统的粒度,保证了业务逻辑的完整性,减少了错误产生的概率一、引言本讲将探讨领域驱动设计(DDD)中的重要概念——聚合。聚合是业务完整性的单元,是一个更大力度的封装。在领域驱动设计中,聚合处于生命周期模型的核心位置。理解聚合有助于理解资源库和工厂的概念。二、领域模型复习回顾领域模型出行计划:用户创建出行计划,包含出发时间、
Cline 3.2 重磅更新:免费调用 Claude Sonnet 3.5 和 GPT 4o,开发效率直接拉满!
surfirst
LLM人工智能AI编程
1.Cline简介Cline是一款结合了AI助手与VSCode的智能工具,旨在通过其深度集成的能力协助开发者完成复杂的软件开发任务。从创建与编辑文件到执行终端命令,Cline借助Claude3.5Sonnet的代理编程能力,将开发者从繁琐的手动任务中解放出来。同时,它通过ModelContextProtocol(MCP)支持扩展能力,可以为用户创建新的工具,进一步提升开发效率。Cline还注重安全
人设崩塌还是对行业心寒?ZachXBT:这么多年终究是错付了
区块链web3安全
作者:Techub热点速递撰文:Yangz,TechubNews继特朗普夫妇先后发行个人MemecoinTRUMP及MELANIA后,关于名人Memecoin的故事还在继续。昨日,备受行业拥趸的链上侦探ZachXBT在收到社区用户创建的同名Memecoin的50%供应并疑似通过OTC卖出16348枚SOL获利约389万美元后,受到诸多非议。一方面,不少投资者直呼ZachXBT通过类似TRUMP的形
如何在 Flask 中实现用户认证?
Channing Lewis
Pythonflaskpython后端
在Flask中实现用户认证,可以通过以下方式完成:基础步骤设置用户数据库:存储用户信息(如用户名、密码)。注册功能:允许用户创建账号。登录功能:验证用户输入的凭据。会话管理:使用Flask的session或第三方工具管理登录状态。登出功能:清除用户的登录状态。实现步骤以下是一个完整示例,展示如何实现用户认证功能:1.项目文件结构flask_auth/├──app.py#主应用├──auth/#用户
Oracle 创建DBLink方法
夜光小兔纸
数据库Oracleoracle
一、创建新的DBLink需求说明:现有两个测试库,现想通过DBLink在测试库1连接测试库2。创建DBLink1)在测试库查看是否拥有创建DBLink的权限select*fromuser_sys_privswhereprivilegelikeupper('%DATABASELINK%');查询无结果输出,说明当前用户没有创建DBLink的权限。2)赋权当前用户创建DBLink的权限$sqlplus
Prometheus + MySQL Exporter + Grafana 配置指南
洒家不吃香菜
prometheusmysqlgrafanadocker数据分析
Prometheus+MySQLExporter+Grafana配置指南本指南介绍如何使用DockerCompose来部署Prometheus、MySQLExporter和Grafana,以实现对MySQL数据库的监控与可视化展示。1.创建MySQL用户并授予权限首先,登录MySQL数据库,使用root用户创建一个新的exporter用户,并赋予其必要的权限。该用户将用于MySQLExporter
利用Redis实现付款倒计时
写完bug就找女朋友
javaWeb项目笔记工作笔记/后端Redisredis订单倒计时倒计时付款
一、前言文本源自微博客且已获授权,请尊重知识产权。公司项目最近在做一个交易系统,需要实现用户下订单以后一定时间内,不付款自动取消该订单,这种功能也是涉及到交易的系统很常见的需求,那么应该如何实现呢?二、思路为了实现上述需求,我们可以使用Redis的订阅功能,在用户创建订单的时候,保存订单信息、设置过期时间,并且订阅该缓存信息;在这段过期时间期间内,如果用户付款,那么就删除该缓存信息,否则等到缓存过
vsftpd虚拟用户部署
后端
vsftpd虚拟用户部署案例提供两个用户如下,使用centos7验证可行。test*AO9ih&7ftpD@Tx4zp_shell脚本运行一键安装vsftp#!/bin/bashyum-yinstallvsftpdftp>/etc/vsftpd/vsftpd.confcat>/etc/vsftpd/vsftpd.confanonymous_enable=NOlocal_enable=YESwrit
06 SpringBoot 配置文件详解-application.yaml
KinMan谨漫
springbootjavaspring
SpringBoot提供了大量的自动配置,极大地简化了spring应用的开发过程,当用户创建了一个SpringBoot项目后,即使不进行任何配置,该项目也能顺利的运行起来。当然,用户也可以根据自身的需要使用配置文件修改SpringBoot的默认设置。SpringBoot默认使用以下2种全局的配置文件,其文件名是固定的。application.propertiesapplication.ymlapp
在 Azure 100 学生订阅中新建 Ubuntu VPS 并部署 Mastodon 服务器
shelby_loo
服务器azureubuntu
今天想和大家分享一下如何在Azure的100学生订阅中,创建一台UbuntuVPS,并通过Docker部署Mastodon服务器。Mastodon是一个开源的社交网络平台,允许用户创建自己的实例,类似于Twitter,但更加去中心化。Docker则是一个容器化技术,能够让我们轻松地打包和运行应用程序,使得部署和管理变得简单高效。使用到的Docker和Mastodon软件简介Docker是一种开源平
MySQL用户权限管理
hzw0510
MySQLmysqloracle数据库
创建/授权用户创建用户格式创建用户命令一般格式:createuser[用户名]@[访问地址]identifiedby[密码]举例1:创建zhangsan用户,只是创建用户并没有权限,'localhost'表示只能在本地登录,无法通过远程连接;密码是passwordCREATEUSER'zhangsan'@'localhost'
oracle用户管理
sinat_38878030
第二章Oracle用户管理【目标】1.掌握用户的创建、删除、修改2.掌握基本的权限管理3.了解数据字典及基本操作【内容】一、用户的创建、删除、修改u创建用户语法:createuser用户名identifiedby密码;注:在oracle中创建用户只能由管理员或者具有管理员的权限的用户创建。案例:新建用户abc新建的用户是没有任何权限的,包括连接数据库的权限。新创建的用户是没有任何权限的,直接登录会
linux运维常见命令行
问道飞鱼
运维linux服务器
文章目录用户管理创建用户修改用户信息列出用户信息添加用户到组删除用户创建和管理组查看用户和组的信息其他相关命令文件管理文件和目录的基本操作文件权限管理文件压缩和归档磁盘管理查看磁盘使用情况查看文件和目录的磁盘使用情况磁盘分区管理挂载和卸载文件系统磁盘配额管理LVM(LogicalVolumeManager)管理网络管理查看网络接口状态配置网络接口查看和管理路由表管理DNS和主机名网络诊断工具网络流
Linux 用户和组的增删改查,用户切换及权限超详细解读
人工智障调包侠
Linuxlinux运维服务器
目录用户和组及权限简单介绍用户及组创建和删除用户创建useradd-m创建用户john-g创建用户john-d创建指定家目录的用户john-m-g-d的组合使用用户删除userdel用户密码设置组创建groupadd组删除groupdel主组和附加组修改用户所在主组或附加组usermod更换或添加附加组更换主组用户及组的信息查询用户信息查询id/getentpasswdidgetentpasswd
13款常用AI编程工具
liyy614
ai编程人工智能AI编程
AI编程工具的选择和使用,主要取决于具体的项目需求、编程语言、以及AI任务的类型(如机器学习、自然语言处理、计算机视觉等)。下面是一些广泛使用的AI编程工具合集,涵盖了从开发、训练、到部署的各个环节:JupyterNotebook定义:JupyterNotebook是一个开放源代码的Web应用程序,允许用户创建和共享包含实时代码、方程式、可视化和叙述性文本的文档。特点和优势:支持多种编程语言,如P
最受DBA欢迎的250篇学习文档_dba学习资料
2401_84281638
程序员dba学习数据库
├──Oracle+数据库表空间扩容v1.5.pdf├──Oracle+数据库归档日志清理v1.5.pdf├──Oracle+数据库静态参数修改v1.5.pdf├──Oracle+数据库索引创建及重建v1.5.pdf├──Oracle+数据库用户创建及属性修改v1.5.pdf├──Oracle+在不同的场景下选择最合适的性能诊断工具.pdf├──Oracle19c+RAC+for+Centos7.
Laravel 用户授权 policy
CaptainRoy
应用场景:比如一个用户创建一篇文章,或者对文章进行修改,这个时候就要对其进行认证,是否有权进行修改或创建.用户表:users表id;文章表:posts表对应user_id1.phpartisanmake:policyPostPolicy生成策略,生成的策略将放置在app/Policies目录2.在PostPolicy里面添加需要增加的权限,比如用户修改,删除权限,判断当前用户的id和要修改的文章用
关于jmeter的一些面试题及回答
ruanxinyan12345
jmeter
1、说明jmeter的工作原理jmeter就像一个虚拟用户模拟器,你创建一个测试计划,指定这些虚拟用户(线程)要做什么,比如你要访问网站的不同页面,jmeter会按照你设定的规则,让这些虚拟用户同时发起请求,然后记录下这些请求的响应时间和结果,最后,你可以通过查看这些数据来分析网站在不同负载下的表现,找出潜在的性能问题2、在哪里可以使用函数和变量任何测试组件的任何字段3、解释下什么是采样器和线程组
在 Patient Tracking Android 应用程序 (Kotlin) 中集成华为 Account Kit_kotlin 华为应用
2401_84132496
程序员androidkotlin华为
在androidstudio中创建项目,请参阅创建AndroidStudio项目。生成SHA-256证书指纹。生成SHA-256证书指纹。在android项目右上角点击Gradle,选择ProjectName>Tasks>android,然后点击signingReport,如下。注意:项目名称取决于用户创建的名称。在AppGalleryConnect中创建一个应用程序。从App信息中下载agcon
Locust配置-通篇讲解 Locust 性能测试
Wade_Crab
python开发语言jmeter
Locust配置-登堂入室在Locust负载测试工具中,User类和Shape类用于定义和组织测试场景和行为。下面是它们的基本概念:User类User类(也称为用户类)用于定义负载测试中的虚拟用户行为。这些类继承自HttpUser或其他基于Locust的用户基类,并通过定义任务(使用@task装饰器)来模拟用户的交互。示例fromlocustimportHttpUser,taskclassMyUs
k8s POD控制器
条纹布鲁斯
kubernetes容器云原生
POD控制器Pod控制器,又称为工作负载(workload),是Kubernetes中用于实现管理Pod的中间层,它确保Pod资源符合预期的状态。当Pod资源出现故障时,Pod控制器会尝试进行重启,若根据重启策略无效,则会重新新建Pod资源。以下是Pod控制器的详细介绍:一、Pod控制器的作用1.1.确保Pod副本数量:Pod控制器代用户创建指定数量的Pod副本,并确保这些副本数量符合预期状态。1
MySQL系列—5.用户管理
奥德彪的蕉
Mysqlmysql数据库
目录1、MySQL用户介绍2、用户创建1.正常形式2.隐式创建3.查看用户权限4.root用户创建5.DML用户创建6.备份恢复用户权限7.复制用户3、用户删除1.删除普通用户2.删除MySQL默认账户4、修改用户密码5、密码找回1、MySQL用户介绍用户名@'白名单'比如
[email protected]@192.168.10.10是两个不一样的用户所有网段:'dbadmin'@%指定网段:'
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