Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为媒体项目(照片、mp3、文档等)生成密钥的最佳实践_Java_Google App Engine_Google Cloud Datastore_Objectify - Fatal编程技术网

Java 为媒体项目(照片、mp3、文档等)生成密钥的最佳实践

Java 为媒体项目(照片、mp3、文档等)生成密钥的最佳实践,java,google-app-engine,google-cloud-datastore,objectify,Java,Google App Engine,Google Cloud Datastore,Objectify,我正在制作一个P2P媒体共享功能,用户可以与他人共享文件(图像、mp3等)。当一个用户与另一个用户共享一个文件时,我只需向他们发送指向该文件的链接。这些链接看起来像: 现在,unique_键必须是字母数字的,并且不容易猜测,所以我计划使用文件记录的编码键 这在我早期的Python GAE应用程序中很容易,但在我的新Java应用程序中,我无法获得这个键值,我得到的只是一个长的ID(数字) 我的实体有一个名为ID的长字段,但在我的GAE管理控制台中有一个实体编码的字母数字键,我希望这对于数据库中的

我正在制作一个P2P媒体共享功能,用户可以与他人共享文件(图像、mp3等)。当一个用户与另一个用户共享一个文件时,我只需向他们发送指向该文件的链接。这些链接看起来像:

现在,unique_键必须是字母数字的,并且不容易猜测,所以我计划使用文件记录的编码键

这在我早期的Python GAE应用程序中很容易,但在我的新Java应用程序中,我无法获得这个键值,我得到的只是一个长的ID(数字)

我的实体有一个名为ID的长字段,但在我的GAE管理控制台中有一个实体编码的字母数字键,我希望这对于数据库中的每个记录都是唯一的。那么,如何访问它呢

我正在使用Objectify,当我创建一个像这样的新键时

Key myKey=新密钥(FileEntity.class,entityID)

myKey是一个包含一些文本的字符串,但它是我正在寻找的uniqye字母数字id


很抱歉,我的模糊问题,请提供帮助。

因为您使用的是objectify,所以可以使用该方法获取字符串编码的密钥

ObjectifyService.factory().keyToString( myKey );

由于您使用的是objectify,因此可以通过使用

ObjectifyService.factory().keyToString( myKey );

编码的字符串密钥很容易猜测-它们是包含应用程序ID、种类名称和ID的编码协议缓冲区。如果您需要不容易猜测的值,我建议生成UUID,并将其用作密钥名称(字符串密钥),相反。

编码的字符串键很容易猜测-它们是包含应用ID、种类名称和ID的编码协议缓冲区。如果您需要不容易猜测的值,我建议生成UUID,并将其用作键名(字符串键)。

谢谢,此输入肯定会有所帮助。谢谢,这个输入肯定有帮助。谢谢Ashwin,你的代码在我的上下文中非常适合我。谢谢Ashwin,你的代码在我的上下文中非常适合我。