我正在开发的网站希望生成自己缩短的网址,而不是依赖像tinyurl或bit.ly这样的第三方.
显然,我可以保留一个新的URL,因为它们被添加到站点并使用它来生成短URL.但是我试图避免这种情况,如果可能的话,因为看起来很多工作只是为了使这一件事成功.
由于需要短URL的东西都是网络服务器上的真实物理文件,我目前的解决方案是使用他们的inode编号,因为这些编号已经为我准备好使用并保证是唯一的.
function short_name($file) {
$ino = @fileinode($file);
$s = base_convert($ino, 10, 36);
return $s;
}
Run Code Online (Sandbox Code Playgroud)
这似乎有效.问题是,我该怎么做才能缩短短网址?
在使用它的系统上,新添加文件的inode在一个范围内,使上面的函数返回一个长度为7个字符的字符串.
我可以安全地扔掉一些(一半?)的inode位吗?如果是这样,它应该是高位还是低位?
我想过使用文件名的crc32,但实际上我的短名称比使用inode更长.
这样的事情有没有碰撞的风险?通过选择"$ referencefile"的正确值,我已经能够达到个位数.
function short_name($file) {
$ino = @fileinode($file);
// arbitrarily selected pre-existing file,
// as all newer files will have higher inodes
$ino = $ino - @fileinode($referencefile);
$s = base_convert($ino, 10, 36);
return $s;
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试为受保护的方法编写一个包装类,我希望对其进行单元测试.我的问题是,原始方法被声明为protected static new阻止我访问基本方法,因为它是静态的.
有没有其他方法来编写这个包装器方法?如果没有哪个其他选项我必须在不改变其范围的情况下对此方法进行单元测试?
编辑:已添加代码:
public class DerivedClassToTest : BaseClass
{
protected static new Type_A MehodeToTest()
{
Type_A A = new Type_A
{
//DoSomething...
};
return A;
}
}
Run Code Online (Sandbox Code Playgroud)
我如何测试MehodeToTest?
我试图从我的Unitest中的DerivedClassToTest派生,所以我可以访问Protected方法但它的静态因此我不能调用base.MethodeToTest.我如何访问MethodeToTest
谢谢.
是否有可能从他的参考ID中获取一个对象?
我得到一个包含对象引用ID的String列表,如:
com.test.test.business.model.Gamma@20
如何从这个引用ID获取对象?
它只是一个字符串,不能转换为对象本身
我想知道是否可以在另一个java类中使用java类的变量.假定变量Time在A类中定义和计算,我如何在B类中使用它?