- 微服务鉴权代码实现和网关过滤器验证token
给自己画重点
javaspringcloud微服务
1思路分析1.用户进入网关到网关过滤器判断是否是登录如果是登录就进入路由2.登录成功,后台管理微服务签发JWTtoken信息返回给用户3.用户再次进入网关开始访问,网关过滤器接受用户携带的token4.网关过滤解析token,判断是否有权限,有则放行,如果没有返回未认证错误2系统微服务签发token2.1导入依赖:io.jsonwebtokenjjwt0.9.02.2JwtUtil类(工具类直接c
- SpringBoot项目使用JWT令牌进行权限校验
还得是你大哥
java服务端springbootjava后端
要在SpringBoot中进行JWT校验,你需要遵循以下步骤:1.添加依赖在你的pom.xml文件中添加以下依赖:io.jsonwebtokenjjwt0.9.12.创建JWT工具类创建一个名为JwtUtil的工具类,用于生成和解析JWT令牌。importio.jsonwebtoken.Claims;importio.jsonwebtoken.Jws;importio.jsonwebtoken.J
- Springboot整合shiro+jwt---实现单点登录,权限认证和控制+实现代码
drnrrwfs
javajava后端
shiro用来认证用户及权限控制,jwt用来生成一个token,暂存用户信息。jwt生成一个token存储在客户端,每次请求将其存储在header中,解决了跨域,可以通过自定义的方法进行验证,解决了分布式验证的问题。大体包含哪些类(1)LoginAction.java(controller层)。(2)JwtUtil.java(工具类):实现了利用登陆信息生成token,更新token,根据toke
- jwt工具类(配置即用)
秃狼
SpringBootJavajava开发语言
jwtUtil.classpackagecom.huang.springsecuritydemo.Utils;importio.jsonwebtoken.Claims;importio.jsonwebtoken.JwtBuilder;importio.jsonwebtoken.Jwts;importio.jsonwebtoken.SignatureAlgorithm;importjavax.cry
- 【springboot】 静态(static)方法中调用接口(Service层)
lorogy
后端javaaop
@ComponentpublicclassJwtUtil{/***静态方法调用非静态接口层(Service层)*/publicstaticJwtUtiljwtUtil;//声明对象@PostConstruct//初始化publicvoidinit(){jwtUtil=this;jwtUtil.userService=this.userService;}@Autowired//注入UserServi
- (企业 / 公司项目) 企业项目如何使用jwt?
努力的小周同学
Java后端开发学习javaspringboot
按照企业的项目然后写的小demo,自己搞一个登录接口然后调用jwtUtil工具类后端实现创建一个通用模块common来实现jwt生成token登录注册的基本实现逻辑思路面试|ProcessOn免费在线作图,在线流程图,在线思维导图注释挺详细的jwtUtil工具类,封装的类直接在你的登录login中调用里面的方法进行传参登录校验,生成token,以及怎么使用token拿到对应的值三个方法packag
- Vue + Springboot数字签证校验
我的龙呢
分布式登入校验Vuespringboot颁发数字签证
Vue+Springboot登入校验1登入校验的内容2登入校验成功后用JwtUtil生成`token`(这个类在用户模块中)1生成和解析token的工具类`JwtUtil`(在pojo模块中)1导入jwt包2要点2后端的`/login`请求的内容,认证成功后返回`token`给前端(在用户模块中)1要点2登入通过后给token赋值1Vuex持久化插件`vuex-persistedstate`1安装
- SpringBoot开发笔记
日与快乐并
后端mybatisjavamysqlspringboot后端mavenspring
SpringBoot开发mybatis入门配置依赖连接mysql数据库的相关配置注解方式实现mybatis定义mapper接口(放在数据层dao或者mapper层)Mapper.xml映射文件实现mybatisxml映射文件注意事项修改Application启动端口的三种方式登录模块的拦截器功能实现1、JWT的介绍2、JWT的生成(JWTUtil工具类)(1)、配置JWT的属性(2)、创建属性对象
- Util工具类(JwtUtil、MD5Util、ThreadLocalUtil、拦截器配置)
林代码er
springboot+vuepython前端开发语言
utils.JwtUtilpackagecom.lin.springboot01.utils;importcom.auth0.jwt.JWT;importcom.auth0.jwt.algorithms.Algorithm;importjava.util.Date;importjava.util.Map;publicclassJwtUtil{privatestaticfinalStringKEY=
- java.lang.IllegalArgumentException: Last unit does not have enough valid bits 异常的解决
放风讲故事
java开发语言
前言本文主要jwt出现的异常问题,如果有什么需要改进的地方还请大佬指出⛺️作者简介:大家好,我是青衿☁️博客首页:CSDN主页放风讲故事每日一句:努力一点,优秀一点使用封装好的JwtUtil的工具类时,自定义设置秘钥明文,启动后报错:publicclassJwtUtil{//有效期为publicstaticfinalLongJWT_TTL=72*60*60*1000L;//60*60*1000一个
- .NetCore开发Jwt认证实现JwtUtil
!chen
.netcorePLCWCS系统
usingInfrastructure;usingInfrastructure.Extensions;usingModel;usingWMS.WebApi.Extensions;usingMicrosoft.IdentityModel.Tokens;usingNewtonsoft.Json;usingSystem.IdentityModel.Tokens.Jwt;usingSystem.Secu
- java.lang.IllegalArgumentException: Last unit does not have enough valid bits解决方案
明湖起风了
springjava开发语言
使用别人封装好的JwtUtil的工具类时,自定义设置秘钥明文,启动后报错://有效期为publicstaticfinalLongJWT_TTL=60*60*1000L;//60*60*1000一个小时//设置秘钥明文publicstaticfinalStringJWT_KEY="mhqfl";publicstaticStringgetUUID(){Stringtoken=UUID.randomUU
- springboot结合element-ui实现增删改查,附前端完整代码
yijianace
JAVAVUEspringbootui前端
实现功能前端完整代码后端接口登录,注册,查询所有用户,根据用户名模糊查询,添加用户,更新用户,删除用户前端注册,登录,退出,用户增删改查,导航栏,分页前端代码地址https://download.csdn.net/download/2301_76809965/88215774效果图后端接口主要代码Result类用于统一返回结果JwtUtil类用户生成验证tokencorsConfig处理跨域问题R
- Springboot整合JWT完成验证登录
吉屋安
前后端分离项目springbootjava后端
目录一、引入依赖二、JwtUtil代码解读三、LoginController代码解读四、整体代码五、结果展示一、引入依赖io.jsonwebtokenjjwt0.9.1二、JwtUtil代码解读这个Java类是一个工具类,用于生成和验证JSONWebTokens(JWT)。JWT是一种开放标准(RFC7519),它定义了一种紧凑且自包含的方式,用于在各方之间作为JSON对象安全地传输信息。这个信息
- 利用hutool生成和验证JWT
KobeSacre
Javajavaspringservlet
importcn.hutool.core.date.DateField;importcn.hutool.core.date.DateTime;importcn.hutool.jwt.JWT;importcn.hutool.jwt.JWTPayload;importcn.hutool.jwt.JWTUtil;importjava.util.Map;publicclassJwtUtil{private
- Spring security之JWT
甚也不会
springjava后端
JWT这里写目录标题JWT一级目录二级目录三级目录1.什么是JWT2.JWT的组成部分3.编码/解码4.特点5.为什么使用JWT5.1传统的验证方式5.2基于JWT的验证方式6.JWT进行登录验证6.1依赖安装6.2编写UserDetailServiceImpl类6.3编写UserDetailsImpl类6.4实现config.SecurityConfig类6.5实现utils.JwtUtil类6
- 十次方微服务鉴权
过客_hui
一、鉴权工具类(1)tensquare_common工程引入依赖(考虑到工具类的通用性)io.jsonwebtokenjjwt0.6.0org.springframework.bootspring-boot-configuration-processortrue(2)修改tensquare_common工程,创建util.JwtUtil@ConfigurationProperties("jwt.c
- Spring开发中JWT实现登录功能
小星星*
springpythonjavajwt
(部分代码待完善)1.自定义JwtToken拦截器JwtUtil.javaJWT工具packagecom.sky.utils;importio.jsonwebtoken.Claims;importio.jsonwebtoken.JwtBuilder;importio.jsonwebtoken.Jwts;importio.jsonwebtoken.SignatureAlgorithm;importj
- 从零构建后端项目-配置Shiro+JWT
chengbo_eva
在线协同办公小程序后端
目录Shiro和JWT技术一、Shiro简介什么是认证?什么是授权?Shiro靠什么做认证与授权的?二、JWT简介JWT可以用在单点登录的系统中JWT兼容更多的客户端创建JwtUtil工具类一、导入依赖库二、定义密钥和过期时间三、创建JWT工具类把令牌封装成认证对象创建OAuth2Realm类刷新令牌应该如何设计一、为什么要刷新Token的过期时间?二、客户端如何更新令牌?三、如何在响应中添加令牌
- uniapp和springboot微信小程序开发实战:后端架构搭建之使用shiro和jwt实现登录认证
程序员阿卢
VUE+SpringBoot前后端分离开发实战springbootuni-app微信小程序
文章目录shiro和jwt技术shiro什么是认证?什么是授权?Shiro靠什么做认证与授权的?JWTJWT(JsonWebToken)JWT可以用在单点登录的系统中JWT兼容更多的客户端shiro和jwt依赖shiro和jwt整合流程创建JwtUtil工具类定义密钥和过期时间创建JwtUtil工具类令牌封装成认证对象创建OAuth2Realm类刷新令牌设计为什么刷新令牌客户端如何更新令牌
- JWT工具类封装JSON Web Token
摸鱼佬
工具类jwtjava
JWT工具类封装JSONWebToken一、maven依赖二、JWTUtil.javaGitHub:link.欢迎star注意:本篇博客风格(不多比比就是撸代码!!!)一、maven依赖io.jsonwebtokenjjwt0.9.1二、JWTUtil.javaimportio.jsonwebtoken.Claims;importio.jsonwebtoken.Jwts;importio.json
- SpringBoot实现JWT token自动续期的示例代码
为什么要token自动续期token中一般会包含用户的基本信息,为了保证token的安全性,一般会将token的过期时间设置的比较短,但是这样会导致用户因为token过期需要频繁登录,因此需要token自动续期。//创建tokenStringtoken=JwtUtil.createToken(sysUser.getId(),user.getUserName());//将token放入redis中,
- springboot+shiro+jwt实现token认证登录
普通网友
javaspringbootjavaspring开发语言ssh
准备:springboot2.5.5jdk1.8没有操作刷新token功能,也没有放redis做缓存1.先贴代码2.后讲一下验证逻辑1.导入依赖org.apache.shiroshiro-spring1.7.1com.auth0java-jwt3.2.02.创建JWTUtil工具类importcom.auth0.jwt.JWT;importcom.auth0.jwt.JWTVerifier;imp
- 拦截器响应头中配置“Access-Control-Expose-Headers”实现跨域请求暴露token
拄杖忙学轻声码
springbootspringmvc
问题场景:和前端同事联调接口中,前端同事反映说在跨域请求的情况下无法获取token的值,后来找到解决办法解决:1】在登录拦截器处理类中的响应对象,把token对象暴露出来即可2】关键代码response.setHeader("Access-Control-Expose-Headers","token");示例如下:StringnewToken=JwtUtil.getToken(date,param
- 实现注册与登录模块
SMnK
springbootvue游戏
目录1、加载依赖2、实现jwt工具类jwtUtil类3、实现config.filter.JwtAuthenticationTokenFilter类4、配置config.SecurityConfig类5、创建后端api之前对数据库进行修改6、写API一共需要的三个地方7、实现三个接口8、验证用户登录用API+调试9、https://jwt.io/解析需要的小工具10、完成第二个用户授权用API+调试
- jwt的token过期刷新,过期时间
lin d q
javaspringboot
1:这种方式为在线刷新,比方说设定的token有效期为30min,那么每次访问资源时,都会在拦截器中去判断一下token是否过期,如果没有过期就刷新token的时间为30min,反之则会重新登录,需要注意的是这种方式我是在登录以后就将token存在了redis.//登录方法中将token存在redisStringtoken=JwtUtil.sign(userName,user.getId());r
- springboot+shiro+jwt实现token认证登录
回首丶掏
springbootjwtshirospringbootjavaspring
准备:springboot2.5.5jdk1.8没有操作刷新token功能,也没有放redis做缓存1.先贴代码2.后讲一下验证逻辑1.导入依赖org.apache.shiroshiro-spring1.7.1com.auth0java-jwt3.2.02.创建JWTUtil工具类importcom.auth0.jwt.JWT;importcom.auth0.jwt.JWTVerifier;imp
- springboot+shiro+jwt完成用户鉴权
高振05
springshirojwt登录
整体思路主要是利用shiro的鉴权机制,自定义鉴权的方法:1、登录接口,验证登录信息后,通过JWTUtil生成token,通过JWTtoken对象(实现AuthenticationToken中接口)存入subject中2、接口拦截逻辑,通过shiroConfig的shiroFilter确定匹配规则,在匹配规则上匹配访问的路径需要走自定义的JwtFilter(关键代码filterChainDefin
- springboot+vue项目使用jwt token验证登录,token验证失败
程序猿向前跑
springbootspringbootvue.js后端
booleanresult=JwtUtil.verify(token.substring(1,token.length()-1));验证token,可能携带了开头和结尾的双引号,只要像上面的截取字符串,去掉字符串的双引号,就解决问题了别人的文章,先记录一下,后面补上自己基于Springboot+vue+jwt实现的代码点击跳转
- 单点登录方案
独行客-编码爱好者
java基础知识Springbootjava数据库开发语言
目录1.用户认证历史发展1.1单一服务器用户认证1.2WEB应用集群session共享模式1.3分布式,SSO(singlesignon)模式2.单点登录业务介绍2.1业务流程图2.2登录功能(生成token)2.2.1思路分析:passport只负责认证和token的颁发2.2.2核对后台登录信息+用户登录信息载入缓存2.2.3生成token2.2.4制作JWT的工具类(JwtUtil)2.2.
- 戴尔笔记本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行上,同理