- 使用AI python实现将前端angularjs工程转换成vue工程案例
银行金融科技
前端人工智能python
以下是一个结合Python和AI技术实现AngularJS到Vue工程迁移的完整案例,包含关键转换策略和代码实现:案例背景目标:将使用AngularJS1.x的电商后台管理系统转换为Vue3工程,主要转换以下部分:模板语法控制器逻辑服务依赖路由配置状态管理原始AngularJS代码片段:javascript//app.jsangular.module('app',['ui.router']).co
- Seaborn 数据可视化指南:核心功能与实战技巧
奋斗者1号
信息可视化
Seaborn数据可视化指南:核心功能与实战技巧一、Seaborn核心功能1.高级统计图表接口自动统计计算:内置聚合、分布拟合、误差线计算等功能,无需手动处理数据。importseabornassnssns.histplot(data=df,x="age",hue="gender",kde=True)#自动分箱并拟合分布2.美观的默认主题提供darkgrid、whitegrid、dark、whit
- react加antd封装表格单、多选组件,支持跨页选择缓存
Cirrod
react.js缓存javascript
页面效果子组件importReact,{useState,useEffect,forwardRef,useImperativeHandle}from'react';import{Modal,Input,Table,Pagination,Avatar,Select}from'antd';import{UserOutlined}from'@ant-design/icons';importtype{Ta
- 如何针对大Excel做文件读取?
F_windy
excel
针对大Excel文件(如超过百万行)的读取,传统的一次性加载到内存的方式会导致内存溢出(OOM),需采用流式读取(Streaming)或分块读取(Chunk)的策略。以下是具体方案及优化建议:一、核心解决方案1.使用ApachePOI的SAX模式(事件驱动)适用场景:处理.xlsx文件(不支持.xls),逐行解析避免内存溢出。代码示例(Java):importorg.apache.poi.open
- 使用LoRA微调LLaMA3
想胖的壮壮
深度学习人工智能
使用LoRA微调LLaMA3的案例案例概述在这个案例中,我们将使用LoRA微调LLaMA3模型,进行一个文本分类任务。我们将使用HuggingFace的Transformers库来完成这个过程。步骤一:环境搭建安装必要的Python包pipinstalltransformersdatasetstorch配置GPU环境确保你的环境中配置了CUDA和cuDNN,并验证GPU是否可用。importtor
- python orm框架sqlalchemy_Python的ORM框架SQLAlchemy入门教程
weixin_39758041
pythonorm框架sqlalchemy
SQLAlchemy的核心理念是,SQL数据库查询的数量级和特性关键于目标结合;而目标结合的抽象性又关键于表和行。一安裝SQLAlchemy编码以下:pipinstallsqlalchemy导进要是没有出错则安裝取得成功编码以下:importsqlalchemysqlalchemy.__version__‘0.9.1’二应用sqlalchemy对数据库操作1.界定元信息内容,关联到模块编码以下:(
- 【python】pathlib模块
m 宽
python
#!/usr/bin/envpython#coding:utf-8#In[2]:frompathlibimportPath#In[3]:#创建路径c_path=Path("C:/")print(c_path)#In[4]:#当前目录cwd=Path.cwd()print(cwd)#In[5]:#用户目录Path.home()#In[6]:#父目录cwd.parent#In[7]:#子目录fpath
- python:一次简单的爬虫
wstkqzl
python爬虫开发语言
importrequestsimportparselimporttimefromparselimportSelector#第一章链接https://www.qu04.cc/book/45808/2.html#第二章链接https://www.qu04.cc/book/45808/3.html#小说目录:https://www.qu04.cc/book/45808/url="https://www.
- GEE下载REMA strip和mosaic数据的python脚本
WiIsonEdwards
pythonwindowslinux
EarthEngineDataCatalog:https://developers.google.com/earth-engine/datasets/catalog搜索REMA:importeeimportgeemapimportosimportwarnings#忽略所有警告warnings.filterwarnings("ignore")#下载REMAStrips数据(2m和8m)defdown
- python实现http协议
ajie1117
pythonhttp开发语言
在Python中,可以使用socket库实现一个简单的HTTP服务器和客户端,手动处理HTTP请求和响应。下面是一个Python版本的HTTP服务器和客户端示例。一、使用socket实现HTTP服务器HTTP服务器的基本原理是监听指定端口,等待客户端请求,解析HTTP请求,并返回HTTP响应。简单的HTTP服务器importsocketdefrun_http_server(host='127.0.
- 智能小程序 Ray 开发界面 API —— 交互 API 合集
IoT砖家涂拉拉
前端javascript开发语言小程序APISDK物联网
showModal显示模态对话框引入import{showModal}from'@ray-js/ray';需引入BaseKit,且在>=1.2.10版本才可使用参数Objectobject属性类型默认值必填说明titlestring是提示的标题contentstring否提示的内容showCancelboolean否是否显示取消按钮cancelTextstring否取消按钮的文字,最多4个字符ca
- Uni-app 笔记二 (项目笔记)
天籁晴空
#vue3#TS#小程序--uni-appuni-app笔记
/***@authorwn*@date2023/07/2610:14:15*@description:uniapp笔记*//*1安全区域屏幕去掉状态栏+刘海剩余展示内容的区域--可通过uni.getSystemInfoSync()获取屏幕上边界到安全区顶部的距离。safeAreaInsets={top:59,left:0,right:0,bottom:34}"navigationStyle":"c
- 大疆无人机航点飞行KMZ文件提取航点坐标
程序员南飞
无人机macosjavaspring
一、需要插件jaxenjaxen1.1.4dom4jdom4j1.6.1二、KMZ解压成KMLpackagecom.dji.sample.common.util;importorg.dom4j.Document;importorg.dom4j.io.SAXReader;importjava.io.File;importjava.io.FileInputStream;importjava.io.In
- Qt动态设置样式,实现样式实时切换
水瓶丫头站住
样式表Qtqt开发语言样式设置
文章目录概要插件实现界面核心代码设置样式扩展导入样式导出样式概要最近需要设计界面,但是使用Qt的Designer只能看到每个界面单独的样式,程序中有些事需要主界面调用进行组合的界面,因此需要写一个插件Ui可以直接输入样式内容,进行实时设置,查看样式效果。插件实现界面应用样式前应用样式后核心代码设置样式voidSetSheetStyle::on_pbtn_Apply_clicked(){qApp->
- How Spark Read Sftp Files from Hadoop SFTP FileSystem
IT•轩辕
CloudyComputationsparkhadoop大数据
GradleDependenciesimplementation('org.apache.spark:spark-sql_2.13:3.5.3'){excludegroup:"org.apache.logging.log4j",module:"log4j-slf4j2-impl"}implementation('org.apache.hadoop:hadoop-common:3.3.4'){exc
- 摄像头技术OpenCV
yzx991013
计算机视觉项目机器学习人工智能python
进一步添加功能:运动检测、调整亮度对比度、截图时添加日期水印、保存视频时可选择不同编码格式完整代码:importcv2importtimeimportdatetimedefcamera_system():#打开摄像头cap=cv2.VideoCapture(0)ifnotcap.isOpened():print("无法打开摄像头")return#获取摄像头的宽度和高度frame_width=int
- SpringBoot获取不到用户真实IP怎么办
在SpringBoot应用中获取用户的真实IP地址,对于实现安全控制、日志记录以及个性化服务至关重要。以下是详细的方法及步骤:️方法概述通过HttpServletRequest对象,可以从用户请求中提取IP地址。由于请求可能经过多个代理服务器,因此需要依次检查多个请求头,以确保获取到用户的真实IP。代码示例以下是一个完整的Controller方法示例,用于获取用户的真实IP地址:importjav
- Android通过uri 获取文件路径
迷路国王
Android知识
话不多说,通过uri获取文件路径遇到了很多坑,但也最终解决了,直接上代码。importandroid.content.ContentResolver;importandroid.content.ContentUris;importandroid.content.Context;importandroid.database.Cursor;importandroid.net.Uri;importand
- 部分激活函数可视化
Keyshal_Wei
python机器学习开发语言
importnumpyasnpimportmatplotlib.pyplotasplt#定义激活函数defsigmoid(x):return1/(1+np.exp(-x))deftanh(x):returnnp.tanh(x)defrelu(x):returnnp.maximum(0,x)defleaky_relu(x,alpha=0.01):returnnp.where(x>0,x,alpha*
- 深度学习框架PyTorch——从入门到精通(5)构建神经网络
Fansv587
Torch框架学习深度学习pytorch神经网络经验分享
构建神经网络获取训练设备定义类模型层nn.Flattennn.Linearnn.ReLUnn.Sequentialnn.Softmax模型参数补充说明argmax神经网络是由一些层或者模块组成的,这些层和模块会对数据进行各种操作。在PyTorch里,torch.nn这个命名空间提供了你搭建自己神经网络所需要的所有基础组件。PyTorch里的每一个模块都是nn.Module类的子类。一个神经网络本身
- 做个简易的计算器
酷小亚
java基础面向对象
使用多态实现计算器的加减乘除,根据运算符不同实例化不同子类进行计算(运算符可键盘接收输入)例如:加法有num1、num2属性,方法:计算求和减法有num1、num2属性,方法:计算求差乘法有num1、num2属性,方法:计算求乘除法有num1、num2属性,方法:计算求除先看效果图:代码如下:packagecom_03.jin;importjava.util.Scanner;/***使用多态实现计
- python面向对象之抽象类
liangblog
python基础技能抽象类python面向对象
抽象类概念:抽象类是一个特殊的类,它的特殊之处在于只能被继承,不能被实例化,需要借助python模块实现;抽象类是从一堆类中抽取相同的内容而来的,内容包括数据属性和函数属性。抽象类与普通类的不同之处在于:抽象类中有抽象方法,该类不能被实例化,只能被继承,且子类必须实现抽象方法python中的abc模块python中需要利用abc模块实现抽象类importabc#利用abc模块实现抽象类classs
- 对接马来西亚、印度、韩国、越南等全球金融数据示例
CryptoPP
金融pythonwindows
Python对接StockTV全球金融数据API的封装实现及使用教程:importrequestsimportwebsocketsimportasynciofromtypingimportDict,List,Optional,UnionfromdatetimeimportdatetimeclassStockTVClient:"""StockTV全球金融数据API客户端支持股票、外汇、期货、加密货币
- [AtCoder Regular Contest 125] A-F全题解
ikrvxt
结论和构造DP构造网络流dp分块数学
文章目录A-DialUpB-SquaresC-LIStoOriginalSequenceD-UniqueSubsequenceE-SnackF-TreeDegreeSubsetSum网址链接A-DialUp签到题特判一下有没有0/1在目标串中出现而没在原串出现除了第一次0/1数字互换时,需要从a1a_1a1左右找距离最近的不同数字后面互换就是左/右转一次#include#includeusingn
- MySQL实现全量同步和增量同步到SQL Server或其他关系型库
大博士.J
mysqladb数据仓库python人工智能
在将MySQL中的两张表同步到SQLServer的过程中,全量同步和增量同步各有其优缺点。全量同步简单直接但可能耗时较长且资源消耗大,而增量同步则更加高效但需要额外的逻辑来处理数据的变更。以下是对这两种同步方式的详细解释及代码示例的完善。完整代码示例以下是一个完整的示例,包括全量同步和增量同步,以及使用schedule库来设置定时任务。importpymysqlimportpyodbcfromda
- python ERA-5气象数据NetCDF格式解析(一)
自动驾驶探索站
python图像算法开发python开发语言算法数据分析
ERA-5气象数据NetCDF格式解析(一)1功能2数据来源3代码4测试数据1功能 读取并解析.nc文件(NetCDF)中的信息;2数据来源 ERA-5气象数据下载网址:https://cds.climate.copernicus.eu/cdsapp#!/search3代码#ERA-5气象数据.nc格式解析importosimportnetCDF4asNcimportnumpyasnpfrom
- 使用独立Ironpython 脚本运行Ansys electronics进行建模(二)————脚本自动打开项目并自动运行
加点油。。。。
Ironpython电机建模python自动化
参考文档官方文档——Maxwellhelp—2022R1官方文档——MaxwellScriptingGuide代码实现功能通过Pycharm运行脚本,来自动打开已有程序,进行运行importsyssys.path.append(r"F:\ProgramFiles\AnsysEM\v221\Win64")sys.path.append(r"F:\ProgramFiles\AnsysEM\v221\W
- kotlin 万能适配器
шесай-ай-ай-ай-ай, ч
kotlinkotlinandroid开发语言
Kotlin语言的直接考这四个类直接拿来用就可以了RecyclerBaseAdapter类packagecom.xxxx.pad.base.adapterimportandroid.content.Contextimportandroid.view.LayoutInflaterimportandroid.view.Viewimportandroid.view.ViewGroupimportandr
- python的导包使用
power_kai
python
1、查看文件的创建时间importtimeimportosprint(time.localtime(os.path.getatime('E:\\a.txt')))2、查看文件的修改时间print(time.localtime(os.path.getmtime('E:\\a.txt')))3、pickle数据转换模块,这个写入的文件是一个二进制文件,普通文本编辑器打开是乱码importpickle#
- CSP认证-202212
搞笑症患者
算法
前言使用java,根据官方模拟考试的试题列表刷题试题清单目前只更新了前三题的满分思路,后面两题先放一放,随缘更新~202212202212-1现值计算满分思路:计算第k年的x元在今年的价值x/Math.pow(1+i,k),将每年结果累加注意:题目要将未来的款项转换为今年的价值importjava.util.*;publicclassMain{publicstaticvoidmain(String
- 戴尔笔记本win8系统改装win7系统
sophia天雪
win7戴尔改装系统win8
戴尔win8 系统改装win7 系统详述
第一步:使用U盘制作虚拟光驱:
1)下载安装UltraISO:注册码可以在网上搜索。
2)启动UltraISO,点击“文件”—》“打开”按钮,打开已经准备好的ISO镜像文
- BeanUtils.copyProperties使用笔记
bylijinnan
java
BeanUtils.copyProperties VS PropertyUtils.copyProperties
两者最大的区别是:
BeanUtils.copyProperties会进行类型转换,而PropertyUtils.copyProperties不会。
既然进行了类型转换,那BeanUtils.copyProperties的速度比不上PropertyUtils.copyProp
- MyEclipse中文乱码问题
0624chenhong
MyEclipse
一、设置新建常见文件的默认编码格式,也就是文件保存的格式。
在不对MyEclipse进行设置的时候,默认保存文件的编码,一般跟简体中文操作系统(如windows2000,windowsXP)的编码一致,即GBK。
在简体中文系统下,ANSI 编码代表 GBK编码;在日文操作系统下,ANSI 编码代表 JIS 编码。
Window-->Preferences-->General -
- 发送邮件
不懂事的小屁孩
send email
import org.apache.commons.mail.EmailAttachment;
import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.HtmlEmail;
import org.apache.commons.mail.MultiPartEmail;
- 动画合集
换个号韩国红果果
htmlcss
动画 指一种样式变为另一种样式 keyframes应当始终定义0 100 过程
1 transition 制作鼠标滑过图片时的放大效果
css
.wrap{
width: 340px;height: 340px;
position: absolute;
top: 30%;
left: 20%;
overflow: hidden;
bor
- 网络最常见的攻击方式竟然是SQL注入
蓝儿唯美
sql注入
NTT研究表明,尽管SQL注入(SQLi)型攻击记录详尽且为人熟知,但目前网络应用程序仍然是SQLi攻击的重灾区。
信息安全和风险管理公司NTTCom Security发布的《2015全球智能威胁风险报告》表明,目前黑客攻击网络应用程序方式中最流行的,要数SQLi攻击。报告对去年发生的60亿攻击 行为进行分析,指出SQLi攻击是最常见的网络应用程序攻击方式。全球网络应用程序攻击中,SQLi攻击占
- java笔记2
a-john
java
类的封装:
1,java中,对象就是一个封装体。封装是把对象的属性和服务结合成一个独立的的单位。并尽可能隐藏对象的内部细节(尤其是私有数据)
2,目的:使对象以外的部分不能随意存取对象的内部数据(如属性),从而使软件错误能够局部化,减少差错和排错的难度。
3,简单来说,“隐藏属性、方法或实现细节的过程”称为——封装。
4,封装的特性:
4.1设置
- [Andengine]Error:can't creat bitmap form path “gfx/xxx.xxx”
aijuans
学习Android遇到的错误
最开始遇到这个错误是很早以前了,以前也没注意,只当是一个不理解的bug,因为所有的texture,textureregion都没有问题,但是就是提示错误。
昨天和美工要图片,本来是要背景透明的png格式,可是她却给了我一个jpg的。说明了之后她说没法改,因为没有png这个保存选项。
我就看了一下,和她要了psd的文件,还好我有一点
- 自己写的一个繁体到简体的转换程序
asialee
java转换繁体filter简体
今天调研一个任务,基于java的filter实现繁体到简体的转换,于是写了一个demo,给各位博友奉上,欢迎批评指正。
实现的思路是重载request的调取参数的几个方法,然后做下转换。
- android意图和意图监听器技术
百合不是茶
android显示意图隐式意图意图监听器
Intent是在activity之间传递数据;Intent的传递分为显示传递和隐式传递
显式意图:调用Intent.setComponent() 或 Intent.setClassName() 或 Intent.setClass()方法明确指定了组件名的Intent为显式意图,显式意图明确指定了Intent应该传递给哪个组件。
隐式意图;不指明调用的名称,根据设
- spring3中新增的@value注解
bijian1013
javaspring@Value
在spring 3.0中,可以通过使用@value,对一些如xxx.properties文件中的文件,进行键值对的注入,例子如下:
1.首先在applicationContext.xml中加入:
<beans xmlns="http://www.springframework.
- Jboss启用CXF日志
sunjing
logjbossCXF
1. 在standalone.xml配置文件中添加system-properties:
<system-properties> <property name="org.apache.cxf.logging.enabled" value=&
- 【Hadoop三】Centos7_x86_64部署Hadoop集群之编译Hadoop源代码
bit1129
centos
编译必需的软件
Firebugs3.0.0
Maven3.2.3
Ant
JDK1.7.0_67
protobuf-2.5.0
Hadoop 2.5.2源码包
Firebugs3.0.0
http://sourceforge.jp/projects/sfnet_findbug
- struts2验证框架的使用和扩展
白糖_
框架xmlbeanstruts正则表达式
struts2能够对前台提交的表单数据进行输入有效性校验,通常有两种方式:
1、在Action类中通过validatexx方法验证,这种方式很简单,在此不再赘述;
2、通过编写xx-validation.xml文件执行表单验证,当用户提交表单请求后,struts会优先执行xml文件,如果校验不通过是不会让请求访问指定action的。
本文介绍一下struts2通过xml文件进行校验的方法并说
- 记录-感悟
braveCS
感悟
再翻翻以前写的感悟,有时会发现自己很幼稚,也会让自己找回初心。
2015-1-11 1. 能在工作之余学习感兴趣的东西已经很幸福了;
2. 要改变自己,不能这样一直在原来区域,要突破安全区舒适区,才能提高自己,往好的方面发展;
3. 多反省多思考;要会用工具,而不是变成工具的奴隶;
4. 一天内集中一个定长时间段看最新资讯和偏流式博
- 编程之美-数组中最长递增子序列
bylijinnan
编程之美
import java.util.Arrays;
import java.util.Random;
public class LongestAccendingSubSequence {
/**
* 编程之美 数组中最长递增子序列
* 书上的解法容易理解
* 另一方法书上没有提到的是,可以将数组排序(由小到大)得到新的数组,
* 然后求排序后的数组与原数
- 读书笔记5
chengxuyuancsdn
重复提交struts2的token验证
1、重复提交
2、struts2的token验证
3、用response返回xml时的注意
1、重复提交
(1)应用场景
(1-1)点击提交按钮两次。
(1-2)使用浏览器后退按钮重复之前的操作,导致重复提交表单。
(1-3)刷新页面
(1-4)使用浏览器历史记录重复提交表单。
(1-5)浏览器重复的 HTTP 请求。
(2)解决方法
(2-1)禁掉提交按钮
(2-2)
- [时空与探索]全球联合进行第二次费城实验的可能性
comsci
二次世界大战前后,由爱因斯坦参加的一次在海军舰艇上进行的物理学实验 -费城实验
至今给我们大家留下很多迷团.....
关于费城实验的详细过程,大家可以在网络上搜索一下,我这里就不详细描述了
在这里,我的意思是,现在
- easy connect 之 ORA-12154: TNS: 无法解析指定的连接标识符
daizj
oracleORA-12154
用easy connect连接出现“tns无法解析指定的连接标示符”的错误,如下:
C:\Users\Administrator>sqlplus username/
[email protected]:1521/orcl
SQL*Plus: Release 10.2.0.1.0 – Production on 星期一 5月 21 18:16:20 2012
Copyright (c) 198
- 简单排序:归并排序
dieslrae
归并排序
public void mergeSort(int[] array){
int temp = array.length/2;
if(temp == 0){
return;
}
int[] a = new int[temp];
int
- C语言中字符串的\0和空格
dcj3sjt126com
c
\0 为字符串结束符,比如说:
abcd (空格)cdefg;
存入数组时,空格作为一个字符占有一个字节的空间,我们
- 解决Composer国内速度慢的办法
dcj3sjt126com
Composer
用法:
有两种方式启用本镜像服务:
1 将以下配置信息添加到 Composer 的配置文件 config.json 中(系统全局配置)。见“例1”
2 将以下配置信息添加到你的项目的 composer.json 文件中(针对单个项目配置)。见“例2”
为了避免安装包的时候都要执行两次查询,切记要添加禁用 packagist 的设置,如下 1 2 3 4 5
- 高效可伸缩的结果缓存
shuizhaosi888
高效可伸缩的结果缓存
/**
* 要执行的算法,返回结果v
*/
public interface Computable<A, V> {
public V comput(final A arg);
}
/**
* 用于缓存数据
*/
public class Memoizer<A, V> implements Computable<A,
- 三点定位的算法
haoningabc
c算法
三点定位,
已知a,b,c三个顶点的x,y坐标
和三个点都z坐标的距离,la,lb,lc
求z点的坐标
原理就是围绕a,b,c 三个点画圆,三个圆焦点的部分就是所求
但是,由于三个点的距离可能不准,不一定会有结果,
所以是三个圆环的焦点,环的宽度开始为0,没有取到则加1
运行
gcc -lm test.c
test.c代码如下
#include "stdi
- epoll使用详解
jimmee
clinux服务端编程epoll
epoll - I/O event notification facility在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。并且,在linu
- Hibernate对Enum的映射的基本使用方法
linzx0212
enumHibernate
枚举
/**
* 性别枚举
*/
public enum Gender {
MALE(0), FEMALE(1), OTHER(2);
private Gender(int i) {
this.i = i;
}
private int i;
public int getI
- 第10章 高级事件(下)
onestopweb
事件
index.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/
- 孙子兵法
roadrunners
孙子兵法
始计第一
孙子曰:
兵者,国之大事,死生之地,存亡之道,不可不察也。
故经之以五事,校之以计,而索其情:一曰道,二曰天,三曰地,四曰将,五
曰法。道者,令民于上同意,可与之死,可与之生,而不危也;天者,阴阳、寒暑
、时制也;地者,远近、险易、广狭、死生也;将者,智、信、仁、勇、严也;法
者,曲制、官道、主用也。凡此五者,将莫不闻,知之者胜,不知之者不胜。故校
之以计,而索其情,曰
- MySQL双向复制
tomcat_oracle
mysql
本文包括:
主机配置
从机配置
建立主-从复制
建立双向复制
背景
按照以下简单的步骤:
参考一下:
在机器A配置主机(192.168.1.30)
在机器B配置从机(192.168.1.29)
我们可以使用下面的步骤来实现这一点
步骤1:机器A设置主机
在主机中打开配置文件 ,
- zoj 3822 Domination(dp)
阿尔萨斯
Mina
题目链接:zoj 3822 Domination
题目大意:给定一个N∗M的棋盘,每次任选一个位置放置一枚棋子,直到每行每列上都至少有一枚棋子,问放置棋子个数的期望。
解题思路:大白书上概率那一张有一道类似的题目,但是因为时间比较久了,还是稍微想了一下。dp[i][j][k]表示i行j列上均有至少一枚棋子,并且消耗k步的概率(k≤i∗j),因为放置在i+1~n上等价与放在i+1行上,同理