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 ...
随机推荐
- 浅谈人脸识别中的loss 损失函数
浅谈人脸识别中的loss 损失函数 2019-04-17 17:57:33 liguiyuan112 阅读数 641更多 分类专栏: AI 人脸识别 版权声明:本文为博主原创文章,遵循CC 4.0 ...
- 给初学PHP的学习线路和建议
直入主题 1.熟悉HTML/CSS/JS等网页基本元素,完成阶段可自行制作简单的网页,对元素属性相对熟悉. 2.理解动态语言的概念和运做机制,熟悉基本的PHP语法. 3.学习如何将PHP与HTML结 ...
- Android 自定义控件之 日期选择控件
效果如下: 调用的代码: @OnClick(R.id.btn0) public void btn0() { final AlertDialog dialog = new AlertDialog.Bui ...
- 2、Java基础:概念
1.面向对象和面向过程的区别 面向过程 优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机.嵌入式开发.Linux/Unix等一般采用面向过程开发,性能是最重要的因素 ...
- form-create教程:移除默认提交按钮
本文将介绍form-create如何修改,隐藏默认提交按钮 form-create 是一个可以通过 JSON 生成具有动态渲染.数据收集.验证和提交功能的表单生成器.并且支持生成任何 Vue 组件.结 ...
- Python 多进程编程
import multiprocessing import time import os import random g_nums = [11, 22, 33] def test1(): while ...
- [转]Spring Security Oauth2 认证流程
1.本文介绍的认证流程范围 本文主要对从用户发起获取token的请求(/oauth/token),到请求结束返回token中间经过的几个关键点进行说明. 2.认证会用到的相关请求 注:所有请求均为po ...
- jq 停止/结束多个ajax请求
页面按钮: <button id="song">abort</button> 请求: var str = {} str.xhr = $.ajax({ typ ...
- css border-raidus 百分比和数值设置效果不同
1.水平方向和竖直方向半径相等:设置数值和百分比的效果是一样的: 2.水平方向和竖直方向半径不相同:则效果不一致,具体参见:http://www.zhangxinxu.com/wordpress/20 ...
- 【Hibernate】Hibernate关联关系的映射
一.实体之间的关系 二.一对多的配置 2.1 第一步创建两个实体 2.2 第二步:配置映射文件 2.3 第三步:将映射放到核心配置文件中 三.级联 3.1 Hibernate中级联保存的效果 3.2 ...