- 注解的使用(三):反射,运行时动态获取注解信息
bug喵喵
java自定义注解Java注解是附加在代码中的一些元信息,用于一些工具在编译、运行时进行解析和使用,起到说明、配置的功能。注解不会也不能影响代码的实际逻辑,仅仅起到辅助性的作用。包含在java.lang.annotation包中。1、元注解元注解是指注解的注解。包括@Retention@Target@Document@Inherited四种。1.1、@Retention:定义注解的保留策略@Ret
- Java自定义注解
Upaaui
#javajava开发语言
Java自定义注解Java自定义注解一般使用场景为:自定义注解+拦截器或者AOP配合使用,可以用来设计自己的框架,也可以用于开发中的权限校验一、什么是注解(Annotation)Java注解是什么,以下是引用自维基百科的内容Java注解又称Java标注,是JDK5.0版本开始支持加入源代码的特殊语法元数据。ava语言中的类、方法、变量、参数和包等都可以被标注。和Javadoc不同,Java标注可以
- 【Java】自定义注解:不仅仅是代码的装饰品
墨苏玩电脑
java数据库开发语言
Java自定义注解Java世界中的自定义注解(Annotations)是一项强大的功能,它允许开发者向代码中添加元数据,从而在编译时或运行时进行特殊处理。自定义注解不仅可以使代码更加清晰,还能大幅提升开发效率,实现各种魔法般的自动化操作。自定义注解入门首先,让我们快速了解一下如何自定义注解。只需五步,你就能打造出自己的注解:定义注解:使用@interface关键字,就像定义一个接口一样简单。指定保
- JAVA自定义注解
一只IT攻城狮
java自定义注解springboot面试
文章目录一、概念二、4种标准元注解1、@Target修饰的对象范围2、@Retention定义被保留的时间长短3、@Documented描述-javadoc4、@Inherited阐述了某个被标注的类型是被继承的三、(自定义注解)注解处理器1、定义注解2、Aspect切面类处理3、注解的使用一、概念Annotation(注解)是Java提供的一种对元程序中元素关联信息和元数据(metadata)的
- java注解定义类型变量,【面试加分项】java自定义注解之申明注解
欢小颜
java注解定义类型变量
之前的博客http://www.voidcn.com/article/p-ttusqgiv-kt.html介绍了java的注解的基本知识今天我们学习如何使用自定义注解。首先我们要声明一个注解,声明代码如下:importjava.lang.annotation.Documented;importjava.lang.annotation.ElementType;importjava.lang.anno
- Java自定义注解实现权限管理
小波同学
一、定义权限注解@Target({ElementType.METHOD,ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Documentedpublic@interfaceAuthorityAnnotation{AuthorityAnnotationEnums[]value();}定义权限CODE枚举publicenumAuthority
- java自定义注解校验开始时间小于结束时间
桌球新人
java开发语言spring
java自定义注解校验时间段需求示例代码1.自定义注解类2.注解的实现类3.实体类4.测试Controller5.postman测试常见问题及解决方式1.请求未进入注解的自定义处理类.2.注解处理类中获取不到"开始时间"和"结束时间"参数.3.校验错误.需求最近做了一个日历模块,用户可以在模块中新增日程,需要录入开始时间(scheduleStartTime)和结束时间(scheduleStartT
- java自定义注解的简单示例
公子乂
java开发语言
java自定义注解的简单示例为了给方法(或者变量)增加描述,我们通常会自定义注解,以下是一个方法自定义注解的示例。1.自定义注解类importjava.lang.annotation.ElementType;importjava.lang.annotation.Retention;importjava.lang.annotation.RetentionPolicy;importjava.lang.
- Java自定义注解实战
shenghaishxt
注解简介注解的本质是一个接口,该接口默认继承Annotation接口,使用@interface进行定义。注解主要有三类:元注解、自定义注解以及框架定义的注解。接口里面的成员方法称为注解的属性定义了属性,要在使用的时候给属性赋值如果定义属性时使用default关键字给属性默认初始值,则可以不进行赋值若只有一个属性且名为value,则使用时可以直接写值数组赋值时使用{}包裹,数组只有一个值时可以不用{
- Java自定义注解:优雅的代码标记
码农阿豪
好“物”分享java注解
Java自定义注解:优雅的代码标记前言:欢迎来到本篇博客,今天我们将深入探讨Java中一项强大的特性——自定义注解。通过自定义注解,你可以为代码添加更多的元信息,提高代码的可读性和可维护性。1.什么是自定义注解?自定义注解是Java中的一种元数据,它提供了一种在代码中添加信息的方式,用于辅助编写更清晰、更灵活的程序。通过使用元注解和注解处理器,我们可以定义和处理自己的注解。2.如何定义自定义注解?
- Java自定义注解的使用
.陌路
JavaJavaweb注解javaspringmavenspringbootmvc
自定义注解的方法及使用统一token的校验注解的定义说明---------@定义注解---------元注解@Target({METHOD,TYPE})表示这个注解可以用用在类/接口上,还可以用在方法上@Retention(RetentionPolicy.RUNTIME)表示这是一个运行时注解,即运行起来之后才能获取注解中的相关信息@Inherited表示这个注解可以被子类继承@Documente
- Java自定义注解及使用场景
马凡乐
SpringBootjavasejava开发语言
参考博客1.常用元注解Target:注解修饰的对象范围METHOD:用于描述方法PACKAGE:用于描述包PARAMETER:用于描述方法变量TYPE:用于描述类、接口或enum类型Retention:注解保留时间长短SOURCE:在源文件中有效,编译过程中会被忽略CLASS:随源文件一起编译在class文件中,运行时忽略RUNTIME:在运行时有效2.利用反射获取注解信息@Target({Ele
- Java自定义注解
张丶三岁
javaspringspringboot开发语言
1、注解定义Annotation(注解)是JDK1.5及以后版本引入的。它可以创建文档,跟踪代码中的依赖性,甚至执行基本编译时检查。注解是以@注解名称在代码中存在的,根据注解参数的数量,可以将注解分为三类:标记注解、单值注解、完整注解三类。他们都不会直接影响到程序的语义,只是作为注解(标识)存在,我们可以通过反射机制编程实现对这些元数据(元数据:用来描述数据的数据)的访问。另外,你可以在编译时选择
- Java 自定义注解
myprince003
javajava数据库开发语言
Java自定义注解,以及@interface@Target@Retention@Around@Before@AfterProceedingJoinPointJoinPoint等用法注解应用非常广泛,我们自定义注解能简化开发各种各种业务一、关键字解释(1)定义注解时,关键字@interface来表示注解类的类型@Target@Retention这两个具体值,需要分析注解的应用场景来确定;对于“调用方
- web项目理解
想要打 Acm 的小周同学呀
JAVA技术总结项目理解
1.注解开发这是一个Java自定义注解的定义,注解的名称是AutoFill。以下是对代码的解释:java@Target({ElementType.METHOD})//注解在方法上面,指定注解的作用范围为方法@Retention(RetentionPolicy.RUNTIME)//指定注解的生命周期为运行时public@interfaceAutoFill{OperationTypevalue();/
- 自定义注解实现字段有条件的判空
gb4215287
springbootjavajava
标签:java自定义注解判空背景自定义注解实现字段有条件的判空,例如Student有三个字段name、age、sex;name、age不能为空,sex只有当age=18时不能为空(可能例子不是很符合实际场景,只为实现说明)代码实现1、新建自动以注解类基本元注解含义请自行学习@Target、@Retention、@Documented、@Inherited。本例@ConditionalNotEmpt
- java自定义注解 @Pattern 为空字符串的时候,不需校验正则表达式
huahailing1024
java正则表达式开发语言
注解:BlankOrPattern.javaimportjava.lang.annotation.Documented;importjava.lang.annotation.ElementType;importjava.lang.annotation.Retention;importjava.lang.annotation.RetentionPolicy;importjava.lang.annot
- Junit单元测试框架详解
斯文~
Java基础junitjava
推荐阅读:Java自定义注解文章目录Junit概述快速入门使用流程单元测试常用注解代码示例Junit概述单元测试单元测试就是针对最小的功能单元编写测试代码,Java程序最小的功能单元是方法,因此,单元测试就是针对Java方法的测试,进而检查方法的正确性。手动测试的缺点只有一个main方法,如果一个方法的测试失败了,其他方法测试会受到影响。无法得到测试的结果报告,需要程序员自己去观察测试是否成功。无
- Java自定义注解导入和导出合并一对多单元格工具类
无了_wule
工具类javaexcel后端
excel工具类对poi的封装,所以需要导入poi的依赖,我用的是4.1.0版本,如果是4以下,工具里面的poi的相关api需要改变;导入/导出支持:一对多合并(不限制层级数,但每个类只能有一个子集)、必填字段检测(读取的时候能用到)、排序(导出能用到)、动态隐藏字段(导入导出会忽略该字段)导入依赖org.apache.poipoi4.1.0org.apache.poipoi-ooxml4.1.0
- JAVA自定义注解记录操作日志
响叮当!
java开发语言
背景:系统的操作日志、审计日志。在日常的管理还是维护中都会起到很大的作用。解决办法:可以在需要的方法中对日志进行保存操作,但是对业务代码入侵性大。或者使用切面针对控制类进行处理,但是灵活度不高。==》因此决定使用自定义注解+切面来针对方法进行日志记录。目前日志主要记录的有三方面:请求的入参,出参关于业务上的操作异常日常日志的打印一、自定义注解创建自定义注解@AuditLog:importjava.
- Java自定义注解+AOP
程序员Forlan
框架Javajavaspring后端
文章目录前言一、介绍1、注解2、AOP一、实现1、自定义注解2、滑动时间窗口算法3、定义切面类二、使用1、使用2、测试前言本文主要介绍如何定义实现注解,并配合AOP,来实现我们的滑动时间窗口算法一、介绍1、注解注解(Annotation),是JDK5.0新增的,也叫元数据其实就是代码里的特殊标记,这些标记可以在编译、类加载、运行时被读取,并执行相应的处理所以好处就是,我们使用注解,可以在不改变原有
- java 自定义注解 spring aop 实现注解
cbw100
java自定义注解1.几个常用的注解解释@Target说明了Annotation所修饰的对象范围:Annotation可被用于packages、types(类、接口、枚举、Annotation类型)、类型成员(方法、构造方法、成员变量、枚举值)、方法参数和本地变量(如循环变量、catch参数)。在Annotation类型的声明中使用了target可更加明晰其修饰的目标。作用:用于描述注解的使用范围
- java-使用spring AOP实现自定义注解
百里 Jess
#javaspringjavaspringboot
使用springAOP实现自定义注解前言一、自定义注解1、自定义注解是什么?2、元注解(@Target、@Retention、@Inherited、@Documented)二、SpringAOP详解三、自定义注解实现1)annotation2)aspect3)@PreventRepeat前言参考资料:Java自定义注解、SpringAOP、使用AOP实现和自定义注解实现日志记录注解的原理就是通过切
- java自定义注解实现切面
走在菜鸟路上
javaspring
自定义注解实现切面自定义注解切面方法自定义注解importjava.lang.annotation.ElementType;importjava.lang.annotation.Retention;importjava.lang.annotation.RetentionPolicy;importjava.lang.annotation.Target;@Retention(RetentionPoli
- JAVA自定义注解
nakey_xie
java开发语言
Java注解概念:Java注解(Annotation)是JDK5.0引入的一种注释机制,一种代码级别的说明,主要给计算机看的。注解与类、接口、枚举是在同一个层次,它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。JDK内置注解:Java定义了一套注解,共有7个,3个在java.lang中,剩下4个在java.lang.annotation中。作用在代码的注解
- java自定义注解(Annotation)
小花卷的dad
JavaWeb杂记java
概念注解(Annotation)是以“@注解名称”的形式存在于代码中的,相信用过spring的小伙伴们都会使用大量的注解。注解是JDK1.5之后引入的,它可以写在类、方法、属性上面,用于说明或标记某些含义,这些说明或标记可用于生成文档、程序编译时被读取、程序运行时被读取。定义注解@Target(ElementType.FIELD)@Retention(RetentionPolicy.RUNTIME
- JAVA自定义注解判断属性是否为空
dxx707099957
Spring学习
一、自定义注解Java@Target(value=ElementType.FIELD)@Retention(value=RetentionPolicy.RUNTIME)public@interfaceNotNull{Stringmessage()default"";}Target,Retention是元注解,也就是注解的注解Target:注解的范围,这里选ElementType.FIELD,表示作
- Java自定义注解
王林-wlin
javaspringboot
Java自定义注解一、Java自定注解定义注解packagecom.cloud.sample.base.annotation;importjavax.validation.Constraint;importjavax.validation.Payload;importjava.lang.annotation.ElementType;importjava.lang.annotation.Retent
- Java自定义注解
Java中的战斗机
java
自定义注解1.自定义一个注解类/***bpm应用业务实例日志注解**@author梁伟浩*@since2023-08-14*/@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)@Documentedpublic@interfaceBpmInstanceLog{/***日志描述**@return{String}*/@Alias
- java自定义注解
chushiyunen
java开发语言前端
注解的原理是反射。简单例子定义一个属性注解:@Target(ElementType.FIELD)@Retention(RetentionPolicy.RUNTIME)public@interfaceMyAnnotation{Stringdescription()default"默认注解";intlength();}注解的使用:publicclassMyAnnotationTest{privates
- 戴尔笔记本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行上,同理