- maven项目导入本地依赖jar包
Focusty
mavenjar
项目场景:maven项目导入本地依赖jar包问题描述在开发过程中已有的maven库没有需要的依赖,在链接:https://mvnrepository.com/中下载对应依赖的jar包到本地后进行导入。解决方案:1、确定电脑是否配置maven环境变量,cmd进入命令行窗口,使用命令"mvn-v"查看是否正确返回maven的版本信息。2、如果返回了maven的版本信息说明maven的环境变量配置好了,
- Domain 层完全指南(面向 iOS 开发者)
依旧风轻
AppArchitectureSQIiOSDomainEntity
目录为什么需要Domain层清晰的三层架构核心概念:Entity/ValueObject/UseCase/RepositorySwift代码实战测试策略在旧项目中落地的步骤结语1为什么需要Domain层在传统MVC/MVVM中,我们往往把业务规则写进ViewController或ViewModel。问题随规模放大而爆发:痛点具体表现可测试性差单元测试必须启动UIKit,跑真机或模拟器业务难复用同样
- 【.net core】【sqlsugar】在where条件查询时使用原生SQL
MoFe1
.netcoresql数据库
//初始化查询varquery=repository.IQueryable();//添加原生SQLWHERE条件query=query.Where("fieldAWhere(stringwhereString,objectparameters=null);
- Sonatype Nexus3安装配置及使用
無法複制
nexus
1、简介SonatypeNexusRepositoryManager是一款强大的仓库管理工具,用于存储、管理和发布软件组件。它能够支持多种格式的仓库,如Maven、npm、Docker等。在企业开发中,私有Maven仓库常用于存储自定义依赖和发布组件,确保代码安全性和内部共享。本文将从服务器环境搭建、Nexus安装与配置、仓库创建、依赖上传,再到Maven项目中使用私有仓库的全过程,帮助你掌握如何
- Springboot --- 整合spring-data-jpa和spring-data-elasticsearch
百世经纶『一页書』
SpringbootJavaspringboot
Springboot---整合spring-data-jpa和spring-data-elasticsearch1.依赖2.配置文件3.代码部分3.1Entity3.2Repository3.3Config3.4Service3.5启动类3.6Test3.7项目结构SpringBoot:整合Ldap.SpringBoot:整合SpringDataJPA.SpringBoot:整合Elasticse
- java aspose.words_Aspose.Words for java 示例
PraiseSunMan
javaaspose.words
安装Aspose.Words.jdk16.jar到本地mavenrepository:mvninstall:install-file-Dfile=Aspose.Words.jdk16.jar-DgroupId=com.aspose-DartifactId=aspose-words-Dversion=13.9.0.0-Dpackaging=jarpom.xml文件中依赖:com.asposeaspo
- Rust 服务端项目分层结构
幺零九零零
rust开发语言后端
DDDsrc/├──main.rs#程序入口,负责启动和依赖注入├──lib.rs#公共库入口,便于单元测试和复用├──config.rs#配置管理(如数据库、端口、环境变量等)├──entities/#数据库实体(ORM模型)│├──mod.rs│└──user.rs├──schema.rs#数据库表结构(如diesel/sea-orm生成)├──repository/#数据访问层(Reposi
- 2.深入剖析:Spring 中如何巧妙玩转依赖注入的多种方式
代码世界的浪客
springjava
一、构造函数注入的深入剖析1.严格的依赖初始化构造函数注入使得依赖关系在对象创建时就被严格初始化。这符合面向对象编程中对象的不变性原则,一旦对象创建完成,其依赖关系就不会再改变。这对于一些需要保证数据一致性和安全性的场景非常重要。例如,在金融系统中,账户服务类AccountService依赖于账户存储库AccountRepository,使用构造函数注入可以确保在AccountService实例创
- DDD架构实战 充血模型 电商订单
我是Dduo不是dduo
web后端开发#SpringBoot#分布式与微服务java微服务开发语言责任链模式缓存链表jvm
目录一、充血模型的核心概念1.领域对象的职责2.领域层的核心地位二、充血模型的特点1.以领域为中心的设计2.强封装性3.支持复杂业务逻辑4.便于领域知识传递三、充血模型的优势四、充血模型的实现要点1.明确实体与值对象2.领域服务的定位3.领域事件的应用4.仓储模式(Repository)五、充血模型vs.贫血模型六、充血模型的应用挑战七、充血模型的典型应用场景总结代码示例在领域驱动设计(DDD)架
- Git 使用手册:从入门到精通
蒂法就是我
git大数据
git高速下载一、Git核心概念1.三个工作区域gitaddgitcommitgitpushgitpull工作目录WorkingDirectory暂存区StagingArea本地仓库LocalRepository远程仓库RemoteRepository2.文件生命周期新文件gitaddgitcommit编辑文件gitaddgitaddgitrmUntrackedStagedUnmodifiedMo
- Ubuntu18.04全命令行在3090显卡上安装pytorch环境
镜中隐
深度学习pytorch深度学习3090全命令行安装ubuntu18.04
1.3090驱动安装:sudoadd-apt-repositoryppa:graphics-drivers/ppasudoaptupdatesudoaptinstallnvidia-driver-470sudoaptautoremovexserver-xorgsudoaptautoremove--purgexserver-xorgsudoapt-markholdnvidia-driver-470#
- android gradle的优化
安卓程序员_谢伟光
android
在setting.gradle.kts配置google()maven("https://maven.aliyun.com/repository/google")//官方MavenCentral,最通用mavenCentral()//特殊仓库(4thline,Cling用)maven{url=uri("http://4thline.org/m2")isAllowInsecureProtocol=tr
- Docker
YUNYINGXIA
云原生docker
目录一、Docker概述1.1Docker的定义与核心价值1.2容器技术与传统虚拟化的对比1.3Docker的三大核心概念(1)镜像(Image)(2)容器(Container)(3)仓库(Repository)1.4Docker的应用场景二、Docker环境部署(CentOS系统)2.1安装前的准备工作(1)关闭系统防火墙与SELinux(2)配置Docker软件源2.2安装DockerCE2.
- 容器技术技术入门与 Docker 环境部署
眠修
docker容器运维
目录一:Docker概述1、Docker的优势:(1)环境一致性(2)隔离性(3)资源高效(4)便捷性和可扩展性2、Docker容器与传统虚拟机的区别3、Docker的应用场景4、Docker核心(1)镜像(Image)(2)容器(Container)(3)仓库(Repository)二:Docker安装1:本安装方式使用阿里的软件仓库(1)关闭系统防火墙(2)下载Docker的repo文件(3)
- maven配置两个远程仓库源,第一个获取不到,去第二个源下载
缺的不是资料,是学习的心
mavenjavaintellij-idea
maven配置多个镜像是无用的,默认只会从第一个有效镜像搜索包,当找不到依赖时候就会报错,而这我们可以配置先去阿里maven仓库寻找,找不到然后再去maven官方仓库寻找,关于这个策略如何配置,可以查看下面的,拷贝着去修改maven的setting.xml文件myRepository1myRepository1_1http://maven.aliyun.com/nexus/content/grou
- Spring框架中接口需要添加注解吗?
在Spring框架中,接口本身不需要也不能添加@Component或其他Spring的Bean注册注解(如@Service,@Repository,@Controller)来放入IoC容器。原因很直接:接口不能被实例化!SpringIoC容器管理的是对象实例(Bean),而接口只是一个抽象契约,它本身不能被创建成一个具体的对象。核心原则:Spring管理的是实现类的实例:你需要将实现了接口的具体类
- windows,java后端开发常用软件的下载,使用配置
com-ing
windows
以下软件尽量从官网下载,流程为:确定版本下载->配置环境变量->修改配置文件->启动版本选择的话,可参考阿里巴巴和apache官网推荐。1.idea,jdk,maven,MySQL,tomcat官网下载maven3.3.9的setting.xml配置阿里云仓库,jdk1.8,根据需求自己改mirrorIdrepositoryIdHumanReadableNameforthisMirror.http
- `Could not find artifact...`等Maven 依赖问题排查终极指南 (SOP)
三无少女指南
mavenjava
我们在执行mvncleancompile时经常会被Couldnotfindartifact…:Non-resolvableparentPOM…:‘dependencies.dependency.version’…ismissing:…wascachedinthelocalrepository…:等爆红烦恼,本文的定位是一站式解决maven爆红问题,出现爆红参考本文即可游刃有余核心原则:理解Mave
- AI博客搭建实战指南
钟炯默
AI博客搭建实战指南AI-blogAccompanyingrepositoryforLet'smakeaDQN/A3Cseries.项目地址:https://gitcode.com/gh_mirrors/ai/AI-blog项目介绍AI博客是由Jaromiru开发的一个开源项目,旨在提供一个简单易用的平台,让技术爱好者能够轻松分享他们在人工智能领域的洞见和实验。这个项目基于GitHubPages,
- Docker 安装oracle11g 手把手详细教程
一、在线拉去镜像因为镜像比较大,所以请划水等拉去好命令:dockerpullregistry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g查看拉去好的镜像:最新版本6.85GB[root@syf~]#dockerimagesREPOSITORYTAGIMAGEIDCREATEDSIZEdockertest1.07f4faa2061719monthsago7
- 注入Java Bean的方式
后端java
SpringBoot中注入Bean的常见方式如下,每种方式适用于不同的场景:@Autowired注解(字段注入)说明:按类型自动装配,可作用于构造器、Setter方法、字段或普通方法。场景:大多数情况下的依赖注入。示例:java体验AI代码助手代码解读复制代码@ServicepublicclassMyService{@Autowired//字段注入privateMyRepositoryreposi
- Ubuntu22.04.5 桌面版然后安装 VMware 17
爱辉弟啦
linux运维运维linuxUbuntuVMware
安装VMware需要GCC12版本标题通过PPA安装这是最简单的方法,适用于大多数Ubuntu版本。步骤1:添加PPA仓库sudoaptupdatesudoaptinstallsoftware-properties-commonsudoadd-apt-repositoryppa:ubuntu-toolchain-r/testsudoaptupdate安装GCC12sudoaptinstallgcc
- hadoop yarn 获取日志_Hadoop YARN日志查看方式
weixin_30131105
hadoopyarn获取日志
HadoopYARN日志查看方式实验环境CDH6.3.2Hadoop版本$hadoopversionHadoop3.0.0-cdh6.3.2Sourcecoderepositoryhttp://github.com/cloudera/hadoop-r9aff20de3b5ecccf3c19d57f71b214fb4d37ee89Compiledbyjenkinson2019-11-08T13:49
- JPA Hibernate直接执行sql 转换成dto AliasToEntityMapResultTransformer
有答案直接发给我
hibernatesql
前言公司中有一个老的项目使用了JPA+Hibernate框架,在接触了这个项目之后我的感受就是异常难用(o(╥﹏╥)o),相对于目前主流使用的Mybatis框架,在使用这种框架的项目中查询数据库有以下几种方式:使用JpaRepository映射实体类和表。@Repository@Transactional(rollbackFor=Exception.class)publicinterfaceOrd
- CentOS7报错:Cannot find a valid baseurl for repo: base/7/x86_64
这个错误通常出现在CentOS/RHEL7系统中,当你尝试运行yumupdate或yuminstall时,系统无法连接到默认的软件仓库(repository)。可能的原因网络连接问题:系统无法访问互联网或仓库服务器。错误的仓库配置:/etc/yum.repos.d/下的.repo文件可能配置错误。仓库服务器不可用:官方仓库可能已迁移或停止支持(如CentOS7已进入EOL)。DNS解析问题:系统无
- springboot项目--数据库配置(使用JpaRepository进行增删改查)(1)
2301_79987255
程序员springboot数据库后端
CREATETABLEproduct_category(category_idintnotnullAUTO_INCREMENT,category_namevarchar(64)notnullcomment’类目名字’,category_typedecimal(8,2)notnullcomment’类目编号’,create_timetimestampnotnulldefaultcurrent_tim
- maven打包或者install的时候,总是不走本地依赖的原因排查
骆子无悔
mavenjava
1、检查idea的setting配置是否正确指向2、检查setting的mirro是不是拦截了所有的jar包指向,要么修改拦截范围要么直接删除3、检查setting的localRepository是没有配置(这个最重要,没配置的话将导致maven到爆的时候总是以项目目录作为依赖仓库的位置导致一直去远程下载)
- Oracle日志体系和遇到问题后日志排查路径
潇湘秦
oracle概念数据库oracle
一、Oracle日志体系概述Oracle11g引入了AutomaticDiagnosticRepository(ADR),用于统一管理数据库和集群相关的诊断日志和跟踪文件,取代了10g及之前版本的分散日志结构(如bdump、udump等目录)。日志主要分为以下几类:Alert日志:记录数据库或集群的重大事件(如启动、关闭、错误、死锁等)。Trace文件:记录详细的诊断信息,通常与特定进程或错误相关
- 15个Spring Boot常见编程误区解析与代码优化建议
java干货
springboot后端java
SpringBoot让Java开发变得更快、更简单、也更整洁。但即使是经验丰富的开发者,也常常会犯一些错误,这些错误会导致性能瓶瓶颈、Bug和安全问题。让我们来探讨一下最常见的SpringBoot错误,通过完整的代码示例,学习如何像专家一样避免它们。1.❌未正确使用@Service,@Component或@Repository注解•糟糕的代码://这个类没有被标记为Spring的组件public
- 探索Visual Studio Code的Git图形扩展:Git Graph
黎情卉Desired
探索VisualStudioCode的Git图形扩展:GitGraphvscode-git-graphViewaGitGraphofyourrepositoryinVisualStudioCode,andeasilyperformGitactionsfromthegraph.项目地址:https://gitcode.com/gh_mirrors/vs/vscode-git-graph在编程世界中,
- 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