ak3*_*t0n 4 .net base64 guid auto-generate
我想在我的网站上创建随机文件夹名称来存储图像和缩略图,但是我没有使用生成的guid的完整版本,而是考虑使用它的一部分,可能只是前8个字符,可能还有base64编码它.我担心可能的碰撞.
有人能指出我是否是一个好主意的正确方向?如果我想将名称保留在一定数量的字符下,是否有可以使用的替代解决方案?
更新:我试图远离path.GetRandomFileName,因为它使用原始guid并且它不是12个字符长...
Jon*_*eet 13
为什么不只是使用这样的东西,并循环,直到你可以创建文件没有冲突?
const string ValidChars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
static string GenerateName(Random random, int length)
{
char[] chars = new char[length];
for (int i=0; i < length; i++)
{
chars[i] = ValidChars[random.Next(ValidChars.Length)];
}
return new string(chars);
}
Run Code Online (Sandbox Code Playgroud)
传递RNG的原因是为了避免在不使用静态RNG(非线程安全)的情况下在方法中创建新RNG(在快速连续调用时重复)的典型问题.
另一种方法是使用单个静态只读RNG,并GenerateName通过锁定序列化调用.
重点是,你不知何故生成一个随机名称,你只是继续尝试创建具有随机名称的文件,直到你成功为止,这很可能很快发生(12个字符[AZ 0-9]给出4,738,381,338,321,616,896种可能的组合).
| 归档时间: |
|
| 查看次数: |
4458 次 |
| 最近记录: |