如何在服务器重新启动时生成唯一整数



每次收到来自客户端的特定 post 请求时,服务器都应该生成一个唯一的整数来生成一个链接(uri:website/question/id/details),并将该整数作为索引(主键)存储在数据库中。我已经尝试过int idForUri = UniqueInteger.uri.incrementAndGet();但是如果服务器重新启动,这不起作用。我该如何解决这个问题?

class UniqueInteger {
public static AtomicInteger uri = new AtomicInteger(212043);
}

添加
表格 文章
------------
id int(11) 无符号auto_increment主键
标题 瓦尔查尔(50) 内容文本
乌里瓦尔查尔(50)

来自浏览器的每个特定 post 请求都会导致服务器生成新的 URI。用户通过 uri 访问该页面,该 uri 由"网站/问题/ID/详细信息"组成(id 是主键)。但是在不知道新 id 的情况下,uri 也是未知的。例如,21000 是表项目中当前存在的最大 id。所以需要insert into article(title, content, uri) values (?, ?, 'website/questions/21001/details')。但是服务器不知道 21001 的值,因为自动增量(可能会导致在执行insert之前出现 sqlselect语句)。

用户通过在浏览器中键入特定的uri来访问每个文章页面,一个HTTP请求。服务器应该知道仅通过接收链接发送哪篇文章。所以我在uri中添加了id(就像SO中的uri一样,即问题/问题ID/标题)。然后通过解析 uri 中归档的 id,服务器可以找到特定的文章。
如何修复设计?

使用数据库中的 SEQUENCE 或等效概念。

根据您的评论,最简单的方法是让数据库插入正常使用自动生成的键,

并且更改 getUri 方法以在其中追加或插入 id 字段

return String.format ("website/question/%d/details", id);

最新更新