gpt4 book ai didi

java - 使用哈希表代替数据库系统

转载 作者:行者123 更新时间:2023-12-01 11:22:13 25 4
gpt4 key购买 nike

我被要求使用 html、jsp 和 servlet 开发一个登录系统。登录页面应要求用户输入用户 ID 和密码,并且在身份验证后应显示欢迎消息。还应该有添加新用户和更改现有用户密码的规定。然而,这里的问题是我被要求使用哈希表而不是数据库系统。我对使用 Oracle 实现这个系统有一个相当好的想法。据我所知,在核心java中,哈希表/ HashMap 的范围是程序本身的生命周期。当程序结束时,哈希表值就会丢失。如果我在 servlet 中实现 hashmap 有什么不同吗?如果是,我应该如何进行?

最佳答案

As far as I know in core java the scope of a hashtable/hashmap is the life of the program itself.

不一定。这取决于您的应用程序如何处理 HashMap 。但是,从生命周期不长到应用程序的生命周期的意义上来说,您是正确的。

When the program ends the hashtable values are lost.

正确。

Is it different if I implement a hashmap in a servlet?

没有。当应用程序服务器退出时, HashMap 将消失。

<小时/>

所以你没有问的问题是如何处理这个“要求”。我建议如下:

  • 查明登录系统的状态(即用户名和密码)是否应该在网络服务器重新启动后保持不变。如果没有,则使用 HashMap

  • 如果需要持久化,那么您需要找到一种在不使用数据库的情况下保存HashMap状态的方法。有多种可能性:

    • 使用 Java 对象序列化保存数据结构并再次加载。

    • 使用“绑定(bind)”技术序列化为 XML 或 JSON 或类似技术。

    • 编写一个临时机制,将数据结构保存到文件并重新加载。

问题在于,以“防弹”方式实现保存/重新加载是很棘手的;即,在出现错误、应用程序被终止、电源故障等情况下不会丢失或损坏状态。一个像样的数据库可以处理这些事情,这就是为什么数据库是首选的实现方法。

<小时/>

另一件事需要注意的是,以明文或加密形式存储实际密码都是不好的做法。无论您如何实现登录系统状态的持久性,这都适用。相反,您应该将用户的密码与“盐”一起进行哈希处理,并将其与之前记录的哈希值进行比较。

<小时/>

Its an homework assignment.The main thing is implementing it.

这意味着您可能可以忽略我上面提出的安全性和稳健性问题。 (但在现实世界的系统中......你不应该!)

关于java - 使用哈希表代替数据库系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31096561/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com