zoukankan      html  css  js  c++  java
  • 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));
        }
    
    }

    运行两次的结果

  • 相关阅读:
    自考新教材--p78
    自考新教材--p76_2
    自考新教材--p76_1
    自考新教材--p75
    自考新教材--p70
    自考新教材--p69
    以HTML5及其衍生技术为基础的B/S架构实时视频监控解决方案
    智能化安防视频监控行业发展是如何转变的?
    摄像头视频监控是如何与流媒体服务器云平台连接的?
    如何实现摄像头监控数据实时存储及传输?
  • 原文地址:https://www.cnblogs.com/deolin/p/6985481.html
Copyright © 2011-2022 走看看