每次從客戶端收到特定的發佈請求時,服務器應生成一個唯一的整數以生成鏈接(uri:website/question/id/details)並將該整數存儲爲索引鍵)在數據庫中。我試過int idForUri = UniqueInteger.uri.incrementAndGet();
但是如果服務器重新啓動,這不起作用。我怎樣才能解決這個問題?即使服務器重新啓動,如何生成唯一的整數
class UniqueInteger {
public static AtomicInteger uri = new AtomicInteger(212043);
}
添加
表文章
------------
ID INT(11)無符號的auto_increment主鍵
標題爲varchar(50)
內容的文字
uri varchar(50)
每個來自瀏覽器的具體發佈請求導致服務器產生一個新的uri。用戶通過uri訪問該頁面,該頁面由「網站/問題/ id/details」(id是主鍵)組成。但是如果不知道新的身份證,那麼Uri也是未知的。例如,21000是當前表格文章中存在的最大ID。所以需要insert into article(title, content, uri) values (?, ?, 'website/questions/21001/details')
。但由於自動增量,服務器不知道21001的值(可能會導致在執行insert
之前執行sql select
語句)。
用戶通過在瀏覽器中輸入特定的URI來訪問每個文章頁面,一個HTTP請求。服務器應該知道哪些文章僅由接收鏈接發送。所以我給uri添加id(就像SO中的uri,它是questions/question-id/title)。然後通過解析uri中的id字段,服務器可以找到具體的文章。
如何修復設計?
如果服務器重新啓動應該再次生成唯一的int? –
條件是:每次從客戶端收到特定的發佈請求,然後生成一個唯一的整數。最好生成獨特的整數,其值不能太大(小於1000,000,00)。 – user7328234
我認爲你要進行這種背對背的操作 - 插入數據庫並使用自動生成的密鑰 –