public(float[]x,float[]y)GetPolygonCollider2DPoints(PolygonCollider2Dobjects){Vector2[]points=objects.points;float[]x=newfloat[points.Length];float[]y=newfloat[points.Length];for(inti=0;i
C++---初始化列表(initializer_list)
MzKyle
C/C++c++listjava
在C++编程中,我们经常会用到形如vectorv={1,2,3,4};的语法——用花括号包裹一组元素直接初始化容器。这种直观且简洁的写法背后,依赖于C++11引入的一个特殊类型:std::initializer_list。它不仅是列表初始化的“桥梁”,更是C++标准库设计中连接语法糖与底层实现的关键机制。一、initializer_list的本质std::initializer_list是C++1
数据结构之顺序表&链表&栈
tryxr
数据结构顺序表链表栈
顺序表什么是listlist的使用线性表是什么顺序表是什么顺序表和线性表的关系顺序表和数组的区别List和ArrayList的关系如何自己模拟实现myArrayListArrayList的构造ArrayList的常见方法以下两种写法有什么区别ArrayListarrayList=newArrayListlist=newArrayList是什么意思返回值是List>是什么意思ArrayList实现杨
Thymeleaf th:object核心用法精解
bemyrunningdog
thymeleaf前端javascriptjava
一、核心功能作用机制创建局部上下文:th:object="${user}"绑定对象到当前元素及其子元素替代重复写法:*{field}≡${user.field}语法对比场景传统写法th:object写法显示属性${user.name}*{name}表单绑定th:field="${user.email}"th:field="*{email}"嵌套对象${user.address.city}*{add
一次面向初学者的完整实战:从零构建SpringBoot测试类
目录一、问题的提出二、准备工作:依赖与目录结构三、被测代码简介四、编写第一个测试类五、逐行解读:注解与运行时行为六、运行测试的三种方式七、运行结果示例八、常见错误与排查策略九、测试设计的延伸思考十、JUnit5的简洁写法十一、结语一、问题的提出在日常开发中,我们往往先写出业务Mapper、Service或Controller,随后才想起“应该补一个测试”。这种做法虽然普遍,却容易让测试沦为事后的形
复制富文本内容带换行
//拷贝详情文字copyToClipboard(stripHtmlKeepNewlines(account.details))functionstripHtmlKeepNewlines(html){//用特殊占位符替换所有换行标签(需覆盖不同写法的)constwithPlaceholders=html.replace(//gi,'\n')//处理.replace(//gi,'\n')//处理段落结
零基础也能看懂的 Tkinter 完全指南:从“Hello, World!” 到“桌面级应用”全流程实战
目录前言一、为什么选择Tkinter?二、5分钟跑通“Hello,Tkinter”三、核心概念一张图四、控件速查表(常用10个)五、布局管理器:packvsgridvsplace1.pack(适合纵向/横向堆叠)2.grid(表格,最常用)3.place(绝对坐标,极少用)六、事件处理3种写法七、完整实战:To-DoList(100行以内)八、进阶:ttk与主题美化九、打包成exe(PyInsta
WPF-引用不同位置的文件URL写法,你都了解吗?
code-Study
C#.NETWPFwpfc#开发语言
本地资源文件编译到本地程序集中的资源文件的packURI使用以下授权和路径:●授权:application:///。●路径:资源文件的名称,包括它的相对于本地程序集项目文件夹根目录的路径。示例1.资源文件位于本地程序集的项目文件夹的根目录中。pack://application:,,,/ResourceFile.xaml2.该资源文件位于本地程序集的项目文件夹的子文件夹中。pack://appli
react class和function 如何模拟vue中的 双向绑定 监听 computed的方式
在React中,类组件和函数组件的写法有所不同。你提到的「双向绑定」、「监听」和「computed(计算属性)」这几个概念,原本来源于Vue,但在React中我们也可以通过特定方式实现类似功能。下面我将分别介绍:1.类组件中的双向绑定在类组件中,要实现双向绑定(如表单输入),我们通常使用state和onChange:importReactfrom'react';classMyFormextends
lua的注释写法
程序员乐逍遥
Lua编程lua注释
lua中的注释不是//,/**/,而是标新立异的,--print("单行注释")---print("单行注释")--[[print("整段注释")print("整段注释")print("整段注释")]]--[=[print("整段注释,=号个数随意")print("整段注释,=号个数随意")print("整段注释,=号个数随意")--]=]---[[print("取消段注释,只需加个-")--]]
python—— 柯里化 & 部分应用函数
青衫客36
Pythonpython开发语言POPL
functools.partial(agent_node,agent=...,name=...)和lambdastate:agent_node(state,agent=...,name=...)这类写法与柯里化(Currying)类似,但要注意它们不是严格意义上的柯里化,而是“部分应用函数”的实现方式,两者关系紧密但不完全等价。一、什么是柯里化(Currying)?柯里化是函数式编程中的一种变换方
20172332 2018-2019-2《程序设计与数据结构》课程总结
weixin_30576827
java后端数据结构与算法
201723322018-2019-2《程序设计与数据结构》课程总结自己对于本学期java课的一些想法及自己一学期的心理变化。整体来说本学期学的就是数据结构方面的知识。在博客方面,我觉得现如今的评分方式并不客观,没有具体的评分点,我们现在的博客包括实验博客并没有不符合博客的要求,但是还是会扣分,怎么样都不可能得到满分,对于博客的写法就没有一个目标,可能自己觉得写得还可以但是助教看来就是不行,助教认
Netty中 ? extends Future<? super V>这种的写法的理解
Jooou
java
1.语法与结构分解1.1分解解释外层:?extendsFuture含义:?表示某种类型,限制为Future或其子类(如ChannelFutureextendsFuture)。作用:使监听器能够处理任何Future的子类型,增强灵活性。PECS原则:外层是“生产者”(Producer),适合只读场景,监听器读取Future的状态(如isSuccess())。内层:Future含义:?superV表示
微信小程序之自定义模态弹窗(带动画)实例-——-微信小程序实战系列(8)(1)
2401_84149213
程序员微信小程序notepad++小程序
这样的模态弹窗,充其量只能做个alert,提示一下信息。但是并不能使用它来处理复杂性的弹窗业务,因此写了Michael从新自定义了一个,采用了仿原生的样式写法wxml:button弹窗标题标题标题标题标题备注确定wxss:/button/.btn{width:80%;padding:20rpx0;border-radius:10rpx;text-align:center;margin:40rpx1
代码随想录算法训练营day9(python版)|第四章 字符串part02|●151.翻转字符串里的单词●卡码网:55.右旋转字符串●28. 实现 strStr()●459.重复的子字符串
清水泛轻舟
算法
目录151.翻转字符串里的单词空间复杂度为O(1):卡码网:55.右旋转字符串卡码笔记写法28.实现strStr()(本题可以跳过)单纯解题:KMP前缀表可加速情况前缀表构建过程完整代码:459.重复的子字符串(本题可以跳过)题目代码returnl>0andn%(n-l)==0怎么理解字符串总结双指针回顾151.翻转字符串里的单词建议:这道题目基本把刚刚做过的字符串操作都覆盖了,不过就算知道解题思
c#基本语法
1.C#中的命名空间是namespace,类似于Java中的package(包),在Java中导入包用import而c#中用using;2.c#和Java都是从main函数入口的,但是c#中的main函数的首字母必须大写,而且有4种写法;3.数据类型:Java跟c#基本都差不多,但是Java的String类型的首字母必须大写,而c#中可以小写也可以大写;还有布尔型,Java中是boolean,c#
KMP算法
KMP模板和一些典型题一、模板二、无线传输三、记录详情四、二叉树中的链表一、模板这里的求next有两种写法,思路是一样的。作者喜欢用第一种:voidcalnext(string&s2){nt[0]=-1;nt[1]=0;for(inti=2;i0&&s2[nt[t]]!=s2[i-1]){t=nt[t];}//for(inti=0;i0){cn=ne[cn];}else{ne[i++]=0;}}整
ES6语法
壹豪
1.变量的结合//声明两个变量letvariable1='结合';letvariable2='2';//写法一letconstant1='常量和变量的'+variable1+'有'+'variable2'+'种写法!';//写法二letconstant2='常量和变量的${variable1}有${variable2}种写法!';//结果console.log(constant1);//常量和变量
C# 安全高效玩转内存:深入剖析 Span 的本质
bpluo42657
算法
在C#开发中,你是否曾为以下问题困扰?需要处理多种内存(数组、栈内存、非托管内存)但写法各异大量数组切片操作导致复制开销使用unsafe指针时如履薄冰Span正是为解决这些问题而生的利器!它提供了一种统一、安全且高效的内存操作方式。一、Span的本质:内存的“安全视图”Span的核心价值在于它自身不拥有内存,而是为现有内存提供类型安全且高性能的视图。csharp//1.基于数组的视图byte[]b
初学HTML
Pretend________
html5css
一周HTML+CSS新手闯关记!居然真的仿出了起点首页?!从对着教程发呆到能敲出完整页面,这七天像开了倍速——但谁懂啊!垂直居中到底有多少种写法?每次调都像拆盲盒,水平居中偶尔还能蒙对,垂直居中直接让我怀疑人生…后来硬记了flex的justify-content和align-items,总算摸到点门道~伪类和定位真的是王炸组合!刚开始写hover效果,按钮死活没反应,查了半天才发现选择器选错了原来
算法日记 42 day 图论
橘子遇见BUG
算法日记算法图论
今天来看看广度优先搜索,并且写几个题。刷到这里我才想起来,当时第一次面试的时候问的就是这个题,当时大概知道一点思路,但不清楚是图论方面的,更别说写出来了。广度优先搜索(BFS)不同于深度优先,广度优先讲究的是先遍历完一层,在遍历下一层,就这转圈圈,直到遍历完所有。就像这样那么对于广搜的写法来说,不管是队列,栈,或者数组都可以。不过方便遍历,大多使用的是队列,接下来的题目我也使用队列。那么广搜的代码
Golang 模块代理配置:go.mod 与 GOPROXY 最佳实践
Golang编程笔记
Golang开发实战Golang编程笔记golang网络开发语言ai
Golang模块代理配置:go.mod与GOPROXY最佳实践关键词:GoModules、go.mod、GOPROXY、依赖管理、私有仓库、模块代理、依赖解析摘要:本文从Go语言模块管理的核心痛点出发,结合开发者日常遇到的依赖下载慢、私有仓库访问难等问题,系统讲解go.mod文件的作用与写法、GOPROXY环境变量的配置逻辑,以及如何通过两者配合实现高效可靠的依赖管理。通过生活类比、流程图解和实战
Java 8、17、21:核心特性与升级指南
爱编程的程序猿
javajvm开发语言
1.Java8(2014年发布,LTS)核心特性:Lambda表达式简化匿名内部类写法,支持函数式编程。示例:list.forEach(n->System.out.println(n));StreamAPI提供声明式数据处理(过滤、映射、排序等)。示例:list.stream().filter(n->n>2).collect(Collectors.toList());默认方法与静态方法接口可定义默
我是如何一天赚到八百块的
猫和秋叨鱼
作为一个还没有毕业的我,一直不知道汉语言文学相对其他专业到底有什么优势,大学三年也读得浑浑噩噩,早在高中时期,就在日记本上写下了高中时期的个人目标,没想到到了大学真正实现的少之又少。大三那年我决定改变,生活出现了转机。我开始认真地看老师布置和要求的书目,开始琢磨文字的写法,开始想尽办法将每次平时作业拿到比较满意的分数,开始为每一篇论文惊心准备,开始学会去向老师请教写论文或是文学作品分析方面的问题,
sqlsuger 子表获取主表中的一个字段的写法
海天胜景
数据库
在使用SQL语言进行数据库操作时,如果你想要从子表获取数据,同时关联到主表中的一个字段,通常我们会使用SQL的JOIN语句。JOIN语句允许你通过一个或多个共同的字段将两个或多个表连接起来。这里我将展示几种常见的JOIN类型(INNERJOIN,LEFTJOIN,RIGHTJOIN)以及如何实现你的需求。1.INNERJOININNERJOIN返回两个表中存在匹配的记录。假设我们有两个表:主表(M
前端-CSS知识复习
敦煌璧画
css前端css3
CSS知识复习1.css样式介绍1.css样式写法有内部样式,外部样式,和行内样式三种写法。2.css代码需要写在3.css外部样式写法主要用于大型的项目,需要建立css文件夹,通过引入4.css代码的注释方式是/*…*/2.css样式写法优缺点1.内部样式优缺点:优点:1.比较好维护,结构与样式分离缺点:不方便重复利用2.外部样式优缺点:优点:1.方便重复利用缺点:代码少,引入麻烦3.行内样式优
【GO】go语言实例化结构体3中方式
Go语言可以通过多种方式实例化结构体,根据实际需要可以选用不同的写法。基本的实例化形式结构体本身是一种类型,可以像整型、字符串等类型一样,以var的方式声明结构体即可完成实例化。基本实例化格式如下:varinsT其中,T为结构体类型,ins为结构体的实例。用结构体表示的点结构(Point)的实例化过程请参见下面的代码:typePointstruct{XintYint}varpPointp.X=10
如何用keepAlive实现标签页缓存
It's Leah
网络tcp/ip网络协议
什么是KeepAlive首先,要明确所说的是TCP的KeepAlive还是HTTP的Keep-Alive。TCP的KeepAlive和HTTP的Keep-Alive是完全不同的概念,不能混为一谈。实际上HTTP的KeepAlive写法是Keep-Alive,跟TCP的KeepAlive写法上也有不同。TCP的KeepAliveTCP的KeepAlive是侧重在保持客户端和服务端的连接,一方会不定期
Node.js:常用工具、GET/POST请求的写法、工具模块
Littlewith
Node.js技术node.jsc++java开发语言服务器面试
Node.js常用工具util是一个Node.js的核心模块,用于弥补Javascript过于精简的不足constutil=require("util");util.callbackify将async异步函数(或者一个返回值为Promise的函数)转换成遵循异常优先的回调风格的函数,例如将(err,value)=>…回调作为最后一个参数。在回调函数中,第一个参数为拒绝的原因(如果Promise解决
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