这篇文章已经废弃。

实际开发中,这个工具类用到得非常少。

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工具类的更多相关文章

  1. PHP常用工具类

    <?php namespace isslib\Util; use think\Config; /** * 常用工具类 * User: xaxiong * Date: 2016/12/19 * T ...

  2. PHP文件上传,下载,Sql工具类!

    PHP文件上传,下载,Sql工具类! 对文件大小,文件类型 同名覆盖 中文转码的操作,可直接使用 前台 upload.html <!DOCTYPE html> <html> & ...

  3. C++ 之Boost 实用工具类及简单使用

    本文将介绍几个 Boost 实用工具类,包括 tuple.static_assert.pool.random 和 program_options等等.需要对标准 STL 具备一定的了解才能充分理解本文 ...

  4. Java工具类-验证码工具

    1.工具类,生成随机验证码字符串 import java.util.Arrays; /** * 工具类,生成随机验证码字符串 * * @version 1.0 * @author * */ publi ...

  5. servlet层调用biz业务层出现浏览器 500错误,解决方法 dao数据访问层 数据库Util工具类都可能出错 通过新建一个测试类复制代码逐步测试查找出最终出错原因

    package com.swift.jztk.servlet; import java.io.IOException; import javax.servlet.ServletException; i ...

  6. 【转载】Asp.Net生成图片验证码工具类

    在Asp.Net应用程序中,很多时候登陆页面以及其他安全重要操作的页面需要输入验证码,本文提供一个生成验证码图片的工具类,该工具类通过随机数生成验证码文本后,再通过C#中的图片处理类位图类,字体类,一 ...

  7. java 工具类 验证码

    第一步: 引入工具类 工具类一: import java.awt.Color; import java.awt.Font; import java.awt.Graphics2D; import jav ...

  8. Laravel常用工具类

    工具类函数 Geom转成字符串 如果项目中有大量的计算经纬度需求,强烈建议使用PgSql的geometry类型 public static function formatGeomToStr($geom ...

  9. Java基础Map接口+Collections工具类

    1.Map中我们主要讲两个接口 HashMap  与   LinkedHashMap (1)其中LinkedHashMap是有序的  怎么存怎么取出来 我们讲一下Map的增删改查功能: /* * Ma ...

随机推荐

  1. 分布式服务追踪与调用链 Zikpin

    分布式服务追踪与调用链系统产生的背景 在为服务中,如果服务与服务之间的依赖关系非常复杂,如果某个服务出现了一些问题,很难追查到原因,特别是服务与服务之间调用的时候. 在微服务系统中,随着业务的发展,系 ...

  2. Windows 10 下 Linux 子系统的安装和使用

    介绍 适用于 Windows 的 Linux 子系统(英语:Windows Subsystem for Linux,简称 WSL)是一个为在 Windows 10 和 Windows Server 2 ...

  3. JDBC 复习4 批量执行SQL

    1使用jdbc进行批量执行SQL在实际的项目开发中,有时候需要向数据库发送一批SQL语句执行,这时应避免向数据库一条条的发送执行,而应采用JDBC的批处理机制,以提升执行效率. package dbe ...

  4. java 框架-缓冲-Redis 2Jedis操作

    https://www.cnblogs.com/wlandwl/p/redis.html Redis介绍及Jedis基础操作   1.Redis简介 Redis 是一个开源(BSD许可)的,内存中的数 ...

  5. JS原型的动态性

    由于在原型中查找成员的过程是一次搜索,所以我们对原型对象所做的任何修改都能立即从实例上反映出来(但不包括对原型对象的重写,下面会介绍到),即使是对原型的修改操作在创建实例之后.如下面的示例所示: fu ...

  6. [学习笔记]pb_ds库

    前言 其实我很早开始就用pb_ds库了,用起来确实方便.但最近感觉还是对这个了解颇少,还是来补一下 话说有人会忘记头文件,其实这有个伎俩,找到电脑上的g++文件夹.Ubuntu应该在etc中,Wind ...

  7. Hackthebox--------irked

    菜鸟一枚,大佬轻喷!! Web页面就一张表情图和一句IRC is almost working!(是irc服务么??!!) 查看图片信息,貌似图片没这么简单.... 果然没这么简单,不行,得想办法得到 ...

  8. 操作RDS文档说明

    操作RDS文档,让你对阿里云的知识更加了解.

  9. oracle exists和 not exists 的用法

    比如 a,b 关联列为 a.id = b.id,现在要取 a 中的数据,其中id在b中也存在: select * from a where exists(select 1 from b where b ...

  10. sql语句开启事务

    以下为示例代码: begin tran update 表 where 姓名='A' update 表 where 姓名='B' rollback else commit