- Redis学习总结(15)——Redis 基本数据类型使用场景
一杯甜酒
RedisRedis基本数据类型使用场景
一、StringStrings数据结构是简单的key-value类型,value其实不仅是String,也可以是数字.常用命令:set,get,decr,incr,mget等。应用场景:String是最常用的一种数据类型,普通的key/value存储都可以归为此类.即可以完全实现目前Memcached的功能,并且效率更高。还可以享受Redis的定时持久化,操作日志及Replication等功能。除
- Redis 集群批量删除key报错 CROSSSLOT Keys in request don‘t hash to the same slot
John Song
Redisredis哈希算法数据库
Redis集群报错CROSSSLOTKeysinrequestdon'thashtothesameslot的原因及解决方案1.错误原因在Redis集群模式下,数据根据哈希槽(Slot)分散存储在不同的节点上(默认16384个槽)。当执行涉及多个key的命令(如DELkey1key2、MGET、MSET等)时,这些key必须属于同一个哈希槽,否则会触发此错误。示例场景:#错误:key1和key2属于
- ansible的get_url模块
教Linux的李老师
ansibleansible
ansible的get_url模块get_url模块--下载文件get_url示例cliget_url示例palybookget_url模块–下载文件参考链接:https://www.jianshu.com/p/0d63d34d526bget_url示例cli#1、下载文件到指定目录:ansibleall-mget_url-a"url=http://www.guojinbao.comdest=/t
- Redis设计与实现——Redis命令参考与高级特性
Aurora_NeAr
redis数据库缓存
Redis命令参考数据类型相关命令SET:设置键值,支持过期时间、不存在/存在条件。GET:获取键值,若键不存在返回nil。INCR/DECR:将键的整数值增1/减1,键不存在时初始化为0。MSET/MGET:批量设置/获取多个键值。LPUSH/RPUSH:从列表左/右侧插入元素。LPOP/RPOP:移除并返回列表左/右侧第一个元素。LRANGE:获取列表指定范围的元素。HSET/HGET:设置/
- Nodejs: redis客户端通过mget方法一次性批量读取多个key的值
pengpengzhou
nodejsnodejsmgetmultiplekey
redis客户端一次性批量读入multiplekeys对应的值可以减少网络操作。代码如下:constredis=require("redis");constclient=redis.createClient();client.on("error",function(error){console.error(error);});client.set("key1","value1",redis.pri
- redis mget 获取多个key数据
fzysmile
publicfunctionmget(array$keys){if(MEMCACHE_FLAG==2){returnnull;}if(!$this->connect){$this->connect();}$ret=parent::mget($keys);$res=array();$i=0;foreach($keysas$key){if(!isset($ret[$i])){$res[$key]=fa
- 面试题:Redis 一次性获取大量Key的风险及优化方案
JavaAlpha
redisbootstrap数据库
Redis一次性获取大量Key的风险及优化方案在Redis中一次性获取大量Key(如使用KEYS命令或大量GET操作)会带来多种风险和性能问题,以下是详细分析和解决方案:主要风险1.阻塞风险KEYS命令阻塞:KEYS*会扫描整个数据库,在数据量大时(如百万级Key)可能导致Redis阻塞数秒长耗时命令:大量MGET或循环GET操作会占用Redis单线程处理时间,阻塞其他请求2.内存与网络压力返回数
- 在tp6中,使用redis 缓存列表。
admin
缓存redis数据库
getRedisKey('shopProductList');$cached=[];$missIds=[];$cacheKeys=array_map(fn($id)=>$cacheKeyPrefix.$id,$ids);$cacheData=Cache::store('redis')->mget($cacheKeys);$cacheData=array_combine($cacheKeys,$ca
- Java八股文九:Redis
m78探索者
java八股文
文章目录九、Redis1、数据类型2、Redis如何实现key的过期删除?3、Redis的持久化机制4、如何解决Redis缓存雪崩和缓存穿透?5、如何使用Redis实现消息队列?九、Redis1、数据类型String常用命令:set,get,decr,incr,mget等。Hash常用命令:hget,hset,hgetall等List常用命令:lpush,rpush,lpop,rpop,lrang
- ES03 - ES其他知识点
是小崔啊
#elasticSearchelasticsearch大数据搜索引擎
ES其他知识点文章目录ES其他知识点一:分布式集群和路由计算1:单节点集群2:故障转移3:水平扩容4:宕机故障5:路由计算二:分片控制流程1:协调节点2:写流程3:读流程4:更新流程5:多文档操作流程5.1:mget操作流程5.2:bulk操作流程6:ES数据一致性的保证6.1:乐观并发控制-版本号6.2:乐观并发控制-外部系统三:分片原理(重要)1:文档搜索-segment的引入1.1:不可变的
- Redis 数据结构与操作详解:从基本命令到高效缓存策略mget-0707
raiseup2
mybatis数据库redis缓存java后端
集群中执行mgetk1k2可能会出现(error)CROSSSLOTKeysinrequestdon'thashtothesameslot因为k1k2不在同一个槽位中只有他们在同一个槽位中,才能mget带标签的mset可以将两个键放到同一个槽位msetk1{tag1}value1k2{tag1}value2tag1是一个标签,保证k1{tag1}和k2{tag1}放到同一个槽位k1{tag1}和k
- ElasticSearch批量(mget)查询
书香水墨
数据库elasticsearch
一、批量(mget)查询1.1不同索引POST'http://localhost:9200/_mget?pretty/'{"docs":[{"_index":"index1","_type":"type1","_id":"1"},{"_index":"index2","_type":"type2","_id":"3"}]}1.2相同索引//相同index不同typePOST'http://loca
- windows通过cmd命令行下载FTP中文件的几种方式
程序员学习随笔
windows通过命令行下载FTP中文件的几种方式方式总结windows通过命令行下载FTP中文件的几种方式使用ftp命令使用映射方式copy使用ftp命令如果使用窗口操作直接输入命令即可(1)登录匿名(服务器支持的话):ftp-Ahost不匿名:1.ftp2.openhost3.输入用户名密码(2)下载使用mget地址即可下载(3)退出输入bye或quit使用脚本方式,不能直接把上面命令放到脚本
- Redis合集 第一章 数据结构 第一节 String数据结构
不服就1v1男人大战
redisredis数据结构数据库
String的分类String普通字符串int整数可以做自增自减float浮点类型可以做自增自减注意:底层都是用字节数组存储只不过编码的方式不同常用命令set新增或修改key的valueget得到key的valuemset设置多个键值对mget得到多个key的valueincr让一个int的key增加1incrby让一个int的key自增并指定步长incrbyfloat让一个浮点数的数字自增并指定
- Jedis
niceffking
javaEE进阶Redisredisjedisjava
目录依赖下载配置SSH转发连接到redis服务器客户端的使用get/setexists/delkeysexpire/ttltype字符串命令mget/msetgetrange/setrangeappendincr/decr列表listpush/pop/lrangeblpop/brpopllen集合setsaddsismemberscardspopsintersinterstorehashhset/
- ubuntu 之 lftp 上传 和下载
卫龙~
Ubuntuubuntulinux运维
座右铭:怎么简单怎么来,以实现功能为主。欢迎大家关注公众号与我交流1.安装sudoapt-getinstalllftp2.简单教程2.0声明:上传或下载文件用get或mget,这种方式不包含文件夹本身,如果需要连文件夹一起上传或下载则需要使用mirror2.1查看当前目录下有哪些东西:ls2.2进入到指定目录:cd目录2.3选择文件下载的本地储存位置:lcd本地目录2.4下载文件:mgetrdir
- MGET
彳亍口巴
MGET源码publicRedisFuture>>mget(Iterablekeys){//获取分区slot和key的映射关系Map>partitioned=SlotHash.partition(codec,keys);//如果分区数小于2也就是只有一个分区即所有key都落在一个分区就直接获取if(partitioned.size()slots=SlotHash.getSlots(partitio
- Redis Cluster基于客户端对mget的性能优化
转转技术团队
redis性能优化数据库
文章目录1背景2分析原因2.1现象2.2定位问题2.2.1RedisCluster的架构设计2.2.2Lettuce的mget实现方式3解决问题3.1使用hashtag3.2客户端改造3.2.1改造JedisCluster3.2.2处理异常case4效果展示4.1性能测试4.1.1mget100key4.1.2mget500key4.1.3mget1000key4.2结论5总结1背景Redis是知
- Redis学习笔记 ——(8)Pipeline
码农小高
Redisredis数据库
Redis学习笔记——(8)PipelineRedis可以通过Pipeline机制有效提高客户端性能。Redis的执行命令过程如下:发送命令命令排队命令执行返回结果其中1和4倍成为RoundTripTime(RTT,往返时间)。为什么要使用PipelineRedis提供来批量操作命令,例如mget、mset等,有效的节约RTT,但是大部分命令是不支持批量操作的,录入要执行n次hgetall命令,并
- Redis常见命令
Shen-Childe
Redisredis数据库缓存
文章目录Redis常见命令一、Redis数据结构介绍1、简介2、官网命令查询3、help命令查询二、Redis通用命令1、set(设置或修改数据)2、get(获取数据)3、select(切换库)4、keys(查看所有key)5、mset(设置多个key)6、mget(通过key获取多个value)7、del(删除一个或多个key)8、exists(判断key是否存在)9、expire(设置key的
- Redis(五)管道
Lucky_Turtle
Javaredis数据库缓存
文章目录官网总结Pipeline与原生批量命令对比Pipeline与事务对比使用Pipeline注意事项官网https://redis.io/docs/manual/pipelining/Pipeline是为了解决RTT往返回时,仅仅是将命令打包一次性发送对整个Redis的执行不造成其它任何影响总结Pipeline与原生批量命令对比原生批量命令是原子性(例如:mset,mget),pipeline
- 72.批量执行Redis命令的4种方式!
百里守约学编程
goredis数据库
文章目录前言一、Redis命令执行过程二、原生批量命令三、pipeline(管道)四、Lua脚本五、Redis事务六、RedisCluster模式下该如何正确使用批量命令操作?前言在我们的印象中Redis命令好像都是一个个单条进行执行的,但实际上我们是可以批量执行Redis命令的。最容易想到的是Redis的一些批量命令,例如MGET总结而言,一共四种批量执行Redis命令的方式一、Redis命令执
- 1 - 搭建Redis数据库服务器|LNP+Redis
桑_榆
数据库数据库redis服务器
搭建Redis数据库服务器|LNP+Redis搭建Redis数据库服务器相关概念Redis介绍安装RedisRedis服务常用管理命令命令set、mset、get、mget命令keys、type、exists、del命令ttl、expire、move、flushdb、flushall、save、shutdown配置文件解析LNP+Redis部署网站运行环境LNP环境统一使用host50做网站服务器
- 2024.1.11 关于 Jedis 库操作 Redis 基本演示
茂大师
Redisredisbootstrap数据库
目录引言通用命令SET&GETEXISTS&DELKEYSEXPIRE&TTLTYPEString类型命令MGET&MSETGETRANGE&SETRANGEAPPENDINCR&DECRList类型命令LPUSH&LRANGLPOP&LPOPBLPOP&BRPOPLLENSet类型命令SADD&SMEMBERSSISMEMBERSSCARDSPOPSINTERSINTERSTOREHash类型命
- Elasticsearch初识之索引的批量操作
hcj_ER
elasticsearch搜索引擎
批量查询和批量增删改批量查询GET/_mget批量写入:POST/_bulkPOST//_bulk{"action":{"metadata"}}{"data"}注意:bulkapi对json的语法有严格的要求,除了delete外,每一个操作都要两个json串(metadata和businessdata),且每个json串内不能换行,非同一个json串必须换行,否则会报错;bulk操作中,任意一个操
- Redis小计(4)
不会敲代码的运气选手^
知识记录redis
目录1.Set和Get操作2.mset和mget3.mset,mget,set后加参数的优点4.incr,incrby,incrbyfloat1.Set和Get操作flushall:清除所有k-v键值对。(删库跑路小技巧)setkv[ex|px]:设置超时时间,ex秒级,px毫秒级。setkv[nx|xx]:nx:当key不存在时再设置。xx:当key存在时再设置(刷新value)。否则返回nil
- redis核心技术梳理(持续更新)
泡^泡
Redisredisjava缓存
redis常用命令get/set/exists/del/keys/rename/dbsize/type/mget/mset/expire/setnx/incr/decr/append/flushallredis的数据类型String/Hash/List/Set/Zset/Hyperloglog/Geo/Stream/BitMapsMemcached和Redis的主要区别是什么Memcached:只
- Redis 大/热Key故障处理流程
Evan_su
Redisredis
一、背景应用持续访问又大又热的key,会造成Redis实例CPU高、流量被打满、数据在内存积压,甚至导致实例达到配额限制被oom-kill。在异步调用、pipeline、mget等批量调用场景比较常见。大key分为两种情况集合元素多且全量获取集合数据:命令时间复杂度是O(N),持续访问这样的key会导致CPU打满,业务响应变慢,甚至超时。而且响应得不到及时发送,积压在内存,最终触发oom-kill
- 2023.12.22 关于 Redis 数据类型 String 常用命令
茂大师
Redisredis数据库缓存
目录引言String类型基本概念SET&GETSET命令GET命令MSET&MGETMSET命令MGET命令SETNX&SETEX&PSETEXSETNX命令SETEX命令PSETEX命令计数命令INCR命令INCRBY命令DECR命令DECRBY命令INCRBYFLOAT命令总结字符串操作命令APPEND命令GETRANGE命令SETRANGE命令STRLEN命令引言redis中所有的key均为
- 5.Redis管道(pipeline)
凇:)
Redisjava开发语言redis
5.Redis管道(pipeline)如何优化频繁命令往返造成的性能瓶颈?引出管道这个概念管道(pipeline)可以一次性发送多条命令给服务端,服务端依次处理完毕后,通过一条响应一次性结果返回,通过减少客户端与Redis的通信次数来实现降低往返延迟时间。管道实现的原理是队列,先进先出特性就保证数据的顺序性。是什么?批处理命令变种优化措施,类似Redis的原生批命令(mget、mset)管道与原生
- 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