- PetaLinux开发流程
非鱼知乐
1.Createanewprojectpetalinux-create-tproject--templatezynq-n$(project_name)orpetalinux-create-tproject-s$(bsp_file)2.Importhardwareinformationpetalinux-config--get-hw-description=$(path_to_hdf)The.hdf
- 4-2.Android Camera 之预览图像编码模板(SurfaceView)
我命由我12345
Android-简化编程androidjavajava-eeandroid-studioandroidstudio视频
一、CameraCamera用于捕获图像和视频在Android开发的早期阶段,Android提供android.hardware.CameraAPI,开发者用它来访问和控制设备的摄像头硬件然而,随着Android系统的发展,从Android5.0(API级别21)开始,Android引入了一个新的Camera2API,以提供更强大和灵活的控制功能二、Camera预览图像1、UtilMyCamera
- iOS前后台处理
rogerwu1228
关于OpenGL的前后台问题:BackgroundAppsMayNotExecuteCommandsontheGraphicsHardwareAnOpenGLESappisterminatedifitattemptstoexecuteOpenGLEScommandsonthegraphicshardware.iOSpreventsbackgroundappsfromaccessingthegrap
- 硬件抽象层(Hardware Abstraction Layer, HAL)概述
小蘑菇二号
操作系统
目录一硬件抽象层概述二举例说明一硬件抽象层概述硬件抽象层(HardwareAbstractionLayer,HAL)是一种软件层,它位于操作系统内核或运行时环境与硬件设备驱动之间,目的是隐藏具体的硬件细节,为上层软件提供一致的接口,使得上层软件不必关心底层硬件的实现细节,从而提高代码的可移植性和复用性。**HAL的工作原理和功能:**1.**接口标准化**:HAL为不同硬件平台提供统一的API(应
- STM32-HAL库串口DMA空闲中断的正确使用方式及SBUS信号解析
AI_Guru人工智呢
stm32单片机嵌入式硬件
概述STM32微控制器广泛用于嵌入式系统,其HAL(HardwareAbstractionLayer)库简化了硬件访问,提高了开发效率。在STM32中,使用DMA(DirectMemoryAccess)进行串口通信可以显著提高数据传输效率,减少CPU负载。本文将介绍如何在STM32中正确使用串口DMA空闲中断,并解析SBUS信号。串口DMA空闲中断在STM32中,串口DMA传输完成后,可以通过配置
- ubuntu设置时间为utc标准时间
野生猕猴桃
Linux运维ubuntu设置utc时间linux设置utc时间utc时间设置服务器更改时间为utc时间
rm/etc/localtimeln-s/usr/share/zoneinfo/Universal/etc/localtime或timedatectl#查看时间系统时间systemtime:查询方式:date修改方式:date-s"WedMay2006:08:10UTC2020"特点:设置后,重启失效。硬件时间hardwareclock:查询方式:hwclock--show修改方式:hwclock
- 鸿蒙南向实战:LCD驱动框架开发
小小煤球
鸿蒙开发HarmonyOSOpenHarmony计算机外设鸿蒙harmonyos华为前端鸿蒙系统驱动开发
功能简介LCD(LiquidCrystalDisplay)驱动编程,通过对显示器上电、初始化显示器驱动IC(IntegratedCircuit)内部寄存器等操作,使其可以正常工作。基于HDF(HardwareDriverFoundation)驱动框架构建的Display驱动模型作用如下:为LCD器件驱动开发提供了基础驱动框架,提升驱动开发效率。便于开发的器件驱动实现跨OS、跨芯片平台迁移。基于HD
- HAL库和标准库的区别?
华清远见西安中心
人工智能边缘计算嵌入式硬件linux
HAL库(HardwareAbstractionLayer,硬件抽象层库)和标准库都是用于STM32微控制器开发的软件库,但它们存在以下一些主要区别:一、开发理念HAL库:强调跨产品线的通用性和可移植性。HAL库旨在为不同系列的STM32微控制器提供一致的编程接口,使得开发者在切换不同型号的芯片时,能够更容易地进行代码移植。注重软件的抽象层次,将硬件细节封装在底层,为开发者提供更高层次的抽象函数,
- 开源虚拟化ACNR
a2591748032-随心所记
hypervisor虚拟化
OverViewTheACRNHypervisorisaType1referencehypervisorstack,runningdirectlyonthebare-metalhardware,andissuitableforavarietyofIoTandembeddeddevicesolutions.TheACRNhypervisoraddressesthegapthatcurrentlyex
- Android4.4.4双声卡同时出声
stxinu
Androidandroid
在调试RK3288Android4.4.4,该方案默认配置上SPDIF时HDMI就没声音,但客户需求是同时要有声音的,于是驱动配置上后,呈现两个声卡状态,此时需要通过修改HAL层来处理(RK3288Android4.4.4对应的HAL层源码为hardware/rk29/audio目录),修改如下:1.修改AudioHardware.cpp文件,在AudioHardware::AudioHardwa
- IPQ6010 vs IPQ9574 Platform Comparison|1588 TSN in WiFi6 WiFi7
linux
IPQ6010vsIPQ9574PlatformComparison|Achieve1588TSNinWiFi6WiFi7HardwareIntherealmofsynchronizationstandardsforwirednetworks,twoprominenttechnologies,IEEE1588(802.1AS)andTime-SensitiveNetworks(TSN),playp
- 鸿蒙LiteOS-M 内核初始化
嵌入式底层
c语言开发语言OpenHarmonyLiteOS物联网
目录一、LiteOS-M初始化内核二、LOS_KernelInit代码分析三、LOS_Start代码解析坚持就有收获一、LiteOS-M初始化内核在LiteOS-M应用程序中,系统初始化如下:/***@briefThisistheohosentry,andyoucouldcallthisinyourmainfuncitonafterthe*necessaryhardwarehasbeeniniti
- keil MDK连接JTAG下载代码报错No Cortex-M Device found in JTAG chain. Target DLL has been cancelled.
Lulifer。
单片机stm32嵌入式硬件
解决方案:1、查看魔术棒“Debug”里面是否选择了JLINK2、确认JLINK连接正常(√),但是找不到设备(❌).选择JTAG端口的时候,报错:JLinkinfo:------------DLL:V6.30h,compiledMar16201818:02:51Firmware:J-LinkV9compiledMay7202116:26:12Hardware:V9.60S/N:66663203F
- 【计算机科学引论 Computing Essentials 2021】【英文原版】【单选练习】【第1章】
不是AI
英文干货大宗技术网络系统架构服务器
MULTIPLECHOICECirclethecorrectanswer.1.Thekeyboard,mouse,display,andsystemunitare:a.hardwareb.outputdevicesc.storagedevicesd.software(Answer:a.hardware)2.Programsthatcoordinatecomputerresources,provid
- 【计算机科学引论 Computing Essentials 2021】【英文原版】【单选练习】【第3章】
不是AI
英文干货大宗技术计算机网络系统架构
ComputingEssentials2021Chapter3:ApplicationSoftwareMULTIPLECHOICECirclethecorrectanswer.1.Thistypeofsoftwareworkswithendusers,applicationsoftware,andcomputerhardwaretohandlethemajorityoftechnicaldetai
- [译] ARMv8-A系统安全之TrustZone硬件架构
赵国开
[译]ARMv8-A系统安全之TrustZone硬件架构原文https://developer.arm.com/products/architecture/a-profile/docs/100935/latest/the-trustzone-hardware-architecture
- 【STM32 CubeMX】HAL库的本质读写寄存器
人才程序员
stm32嵌入式硬件单片机c语言mcu点灯
文章目录前言一、HAL库的本质1.1HAL库的本质是操作寄存器1.2自己实现HAL_GPIO_WritePin寄存器通过寄存器的操作点灯代码概况Portbitset/resetregister寄存器总结前言在嵌入式系统开发中,HAL(HardwareAbstractionLayer)库是一个重要的概念,它提供了一个抽象层,使开发者可以更容易地编写可移植的代码,而不必担心底层硬件的细节。STM32C
- 【Vivado】JTAG连着FPGA启动失败问题
jjzw1990
vivado
问题描述:Vivado2016以后的版本,JTAG连着FPGA并且VivadoHardwareManger打开的情况下,会出现上电后启动失败的问题。解决办法:1、上电时,关闭VivadoHardwareManger;2、将Vivado_init.tcl放在Vivado安装目录下或者启动目录下;…/Vivado/2018.3/scripts/Vivado_init.tcl‘Tcl脚本命令:set_p
- dx 理想windows安装docker 并且运行项目
wzerofeng
docker
安装docker地址:https://docs.docker.com/desktop/install/windows-install/安装后运行两个报错:1.wsl直接下载更新该win库即可:https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi2.报错Hardwareassistedvirtualizati
- Debian 11与intel AX210无线网卡之间的问题
望花动
今天要在联想thinkpadT14上安装Debian11,结果发现安装过程中出现这个报错:someofyourhardwareneedsnon-freefirmwarefilestooperate这个报错起先每当回事,所以就跳过了,结果系统安装完成之后,重启之后就这个报错刷屏了:Intelreadversionfailed-22于是google大法找到了类似的问题,该问题说了是debiankern
- ERROR: x86 emulation currently requires hardware acceleration!的解决方法
chjqxxxx
Android
前提:CPU支持VT(VirtualizationTechnology),而且仅限于IntelCPU首先要打开SDKManager下载intelhaxm,下载位置:android-sdk\extras\intel\Hardware_Accelerated_Execution_Manager\IntelHaxm.exe下载完毕后运行IntelHaxm.exe安装,完毕后命令行执行scqueryint
- 获取MAC地址
珠光
代码
privateStringgetMACAddress()throwsException{InetAddressia=InetAddress.getLocalHost();byte[]mac=NetworkInterface.getByInetAddress(ia).getHardwareAddress();StringBuffersb=newStringBuffer();for(inti=0;i<
- 【STM32】 HAL库+STM32CubeMX 系列教学
soledade
stm32单片机嵌入式硬件
HAL库简介STM32HAL固件库是HardwareAbstractionLayer的缩写,中文名称是:硬件抽象层。HAL库是ST公司为STM32的MCU最新推出的抽象层嵌入式软件,为更方便的实现跨STM32产品的最大可移植性。HAL库的推出,可以说ST也慢慢的抛弃了原来的标准固件库。STM32CubeMX简介STM32CubeMX是ST意法半导体近年来力推的图形化配置工具,从MCU/MPU选型,
- JavaFX IDEA 打包exe
cyy298
intellij-ideajavaide
io.github.fvarruijavapackager1.6.6packagepackagecom.navinfo.logconvert.MaintrueC:\ProgramFiles\Java\jre-17.0.2-->truefalsewindowstruelogconvertlogconvert1.0D:\Item\GD_AmtHardwareTest1.0\datasD:\Item\G
- OPENGL NCNN GPU零拷贝实现
陈立里
ncnn
概要OPENGL拿到的相机帧,通过有拷贝的方式进行GPU推理CPU占用率太高,而NCNN没有提供OPENGL零拷贝GPU推理的接口,因此只能自己实现整体流程主要方法是使用AndroidHardwareBuffer实现纹理的共享,在OPENGL上对相机数据进行预处理后,将纹理信息写入到AndroidHardwareBuffer,随后在vulkan上进行转格式,最后使用NCNN的GPU推理,实现GPU
- ctFS: Replacing File Indexing with Hardware Memory Translation through Contiguous File Allo...——泛读笔记
妙BOOK言
论文阅读论文阅读文件系统
FAST2022Paper分布式元数据论文汇总问题持久的字节寻址内存(PM)有望在未来的计算机系统中变得普遍。与磁盘存储相比,PM的速度显着更快,并且对PM的访问受到内存管理单元(MMU)的控制,就像对易失性RAM的访问一样。这些独特的特性将性能瓶颈从I/O转移到了块地址查找的操作上,例如,在写入工作负载中,ext4-DAX中高达45%的开销是由于构建和搜索范围树以将文件偏移转换为持久内存上的地址
- 1879_什么是丝印
grey_csdn
硬件设计硬件设计
Grey全部学习内容汇总:GitHub-GreyZhang/g_hardware_basic:Youshouldlearnsomehardwaredesignknowledgeincasehardwareengineerwouldaskyoutoproveyoursoftwareisrightwhentheirhardwaredesigniswrong!1873_什么是丝印丝印这个词在很久以前就听
- SIMON加密算法的原理
鸥梨菌Honevid
SIMONfpga开发抽象代数
参考资料:[1]李斌,朱浩文,邢鑫怡,etal.一种高性能多模式可配置SIMON加密电路设计[J].合肥工业大学学报(自然科学版),2022(006):045.[2]Anand,R.,Maitra,A.&Mukhopadhyay,S.GroveronSIMON[J].QuantumInfProcess19,340(2020).[3]FeiziS,AhmadiA,NematiA.Ahardwarei
- AVD Manager创建Android模拟器时,报错CPU acceleration status: HAXM is not installed on this machine解决方法
猫姐°
创建Android模拟器时,报错CPUaccelerationstatus:HAXMisnotinstalledonthismachine解决方法报错:ERROR:resizingpartitione2fsckfailedwithexitcode8emulator:ERROR:x86_64emulationcurrentlyrequireshardwareacceleration!Pleaseen
- Python-can库的使用(5)——API库之Hardware Interfaces
纯良思安
Python-canpython
♂️我是纯良思安,爱技术、爱分享,更爱生活♂️喜欢的朋友可以关注一下,下次更新不迷路目录支持的硬件接口VectorCAN使用ConfigurationVectorBus支持的硬件接口目前Python-can库支持一下硬件接口:CANalyst-IICANtactCANInterfaceETASGeschwisterSchneiderandcandleLightisCANIXXATVirtual
- 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