Rand工具类
这篇文章已经废弃。
实际开发中,这个工具类用到得非常少。
RandN是主要类,用于生成指定位数的随机字符串,具体功能在这个类中实现
Rand8是修饰了RandN中每个对外方法的修饰类,用与生成8位的随机字符串(Deolin经常用到这个位数)
为了减少重复代码,RandN中的方法分了三层。这里选取一个方法系列为例。
第一层
以这两个方法为例,这里采用了两种策略——不提供种子和提供种子,由于这两种策略的不同指出仅仅体现在Random对象上,
所以将这两种策略封装成了new Random(),连同size一起,向下一层转递。
size在这层中只是一个过客。
第二层
从这一层开始,方法全部都是私有的,作为外部方法的代码封装使用。
而这个方法,因为让上一层生成的Random对象入参,所以它是那两个方法的共用部分。
它的作用是生成构建一个符合方法名的字符数组,连同Random对象和size一起,向下层传递
Random对象和size在这层中只是过客。
第三层
这是最后一层的方法了,这层只有它一个。
从参数可以看上,客户端和上两层生成的信息全部汇总到了这个,
这个方法可以根据任意的随机策略,在任意的字符数组里,生成任意长度的字符串,
最后一层层向外返回。
更具体的实现需要查看源码,最后放上使用实例。
package io.deolin.commons.simplify.test; import static io.deolin.commons.simplify.RandN.*;
import static io.deolin.commons.simplify.Rand8.*;
import static io.deolin.commons.simplify.Print.*; public class RandTest { public static void main(String[] args) {
long seed = 123L; ln(r8());
ln(r8(seed));
ln();
ln(nr8());
ln(nr8(seed));
ln();
ln(cr8());
ln(cr8(seed));
ln();
ln(lcr8());
ln(lcr8(seed)); ln(rn(20));
ln(rn(seed, 4));
ln();
ln(nrn(20));
ln(nrn(seed, 4));
ln();
ln(crn(20));
ln(crn(seed, 4));
ln();
ln(lcrn(20));
ln(lcrn(seed, 4));
} }
运行两次的结果
Rand工具类的更多相关文章
- PHP常用工具类
<?php namespace isslib\Util; use think\Config; /** * 常用工具类 * User: xaxiong * Date: 2016/12/19 * T ...
- PHP文件上传,下载,Sql工具类!
PHP文件上传,下载,Sql工具类! 对文件大小,文件类型 同名覆盖 中文转码的操作,可直接使用 前台 upload.html <!DOCTYPE html> <html> & ...
- C++ 之Boost 实用工具类及简单使用
本文将介绍几个 Boost 实用工具类,包括 tuple.static_assert.pool.random 和 program_options等等.需要对标准 STL 具备一定的了解才能充分理解本文 ...
- Java工具类-验证码工具
1.工具类,生成随机验证码字符串 import java.util.Arrays; /** * 工具类,生成随机验证码字符串 * * @version 1.0 * @author * */ publi ...
- servlet层调用biz业务层出现浏览器 500错误,解决方法 dao数据访问层 数据库Util工具类都可能出错 通过新建一个测试类复制代码逐步测试查找出最终出错原因
package com.swift.jztk.servlet; import java.io.IOException; import javax.servlet.ServletException; i ...
- 【转载】Asp.Net生成图片验证码工具类
在Asp.Net应用程序中,很多时候登陆页面以及其他安全重要操作的页面需要输入验证码,本文提供一个生成验证码图片的工具类,该工具类通过随机数生成验证码文本后,再通过C#中的图片处理类位图类,字体类,一 ...
- java 工具类 验证码
第一步: 引入工具类 工具类一: import java.awt.Color; import java.awt.Font; import java.awt.Graphics2D; import jav ...
- Laravel常用工具类
工具类函数 Geom转成字符串 如果项目中有大量的计算经纬度需求,强烈建议使用PgSql的geometry类型 public static function formatGeomToStr($geom ...
- Java基础Map接口+Collections工具类
1.Map中我们主要讲两个接口 HashMap 与 LinkedHashMap (1)其中LinkedHashMap是有序的 怎么存怎么取出来 我们讲一下Map的增删改查功能: /* * Ma ...
随机推荐
- (六)Activiti之实现学生请假流程
一.实现学生请假流程 1.1 用activiti插件生成bpmn和png文件 1.2 部署流程定义 package com.shyroke.activiti.firstActiviti; import ...
- (八)mybatis之多对多
一.需求分析 需求:查询所有用户的信息以及每个用户所属的组的信息 分析:一个用户可以有多个组,一个组也可以由多个用户. 多对多,可以设置一张中间表,该表存放的是用户表和组表的对应关系. 二.创建数据库 ...
- 数据库与MySQL进阶(4)
1,事务 事务指的是满足 ACID 特性的一组操作,可以通过 Commit 提交一个事务,也可以使用 Rollback 进行回滚. 1.1 ACID四大特性 原子性(Atomicity) 事务被视为不 ...
- ASP.NET 使用 SyndicationFeed 输出 Rss
以前生成 RSS 都是使用拼接 Xml 的方式生成的,不仅麻烦而且还不规范. #region 输出指定分类编号的消息源内容... /// <summary> /// 输出指定分类编号的消息 ...
- pytorch神经网络实现的基本步骤
转载自:https://blog.csdn.net/dss_dssssd/article/details/83892824 版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载 ...
- css 关于"浮动边距加倍"及其解决方法-------解决方案是在这个div里面加上display:inline;
写div代码的时候,经常发现明明宽度算得很准确,但是莫明其妙的会和计划的布局不太一样- -|||开始以为自己代码写的有问题,拼命找bug也一无所获,最后可能会稍微修改样式来达到想要的效果,但终究也是外 ...
- JavaScript 和 Java 是完全不同的语言
JavaScript 和 Java 是完全不同的语言这个是定论,两者是概念http://www.gzaos.com还是设计都不同. JavaScript 在 1995 年由 Brendan Eich ...
- 四、TreeSet
HashSet 是无序的,如果要对集合实现排序,那么就需要使用TreeSet 让TreeSet 实现集合有序有两种方法 一.让元素自身具备比较排序功能,具备比较排序功能的元素只需要实现Comparab ...
- [转]Spring Security Oauth2 认证流程
1.本文介绍的认证流程范围 本文主要对从用户发起获取token的请求(/oauth/token),到请求结束返回token中间经过的几个关键点进行说明. 2.认证会用到的相关请求 注:所有请求均为po ...
- python 链接impala执行SQL
项目中用python来链接impala数据库最常见,一个简单的链接,获取结果. #!/usr/bin/python # -*- coding:utf-8 -*- from impala.dbapi i ...