저는 C#을 사용하고 있지만 모르는 경우에도이 질문과 함께 따라야합니다.고유 ID를 생성하는 클래스/객체
여기 내 문제가 있습니다 : 나는 그 객체들을 int
ID를 기반으로 볼 수 있도록 해시 셋과 같은 데이터 구조로 유지하고자하는 객체를 가지고 있습니다. 이러한 객체에는 속성이 변경 될 수 있으므로 해시는 옵션이 아닙니다 (해시 할 때마다 상수가 필요합니다.).
public interface IUniqueIDCollection
{
// Can return any int that hasn't been requested yet.
public int RequestUniqueID();
// Undos the requesting of an int
public int ReleaseUniqueID(int uniqueID);
}
내 초기 생각은 단지 아이디의 요청대로 증가시키는 IUniqueIDCollection
의 내부 카운터를 저장하는 것입니다 : 내가 무슨 짓을했는지
는 다음과 같은 인터페이스를 개발하는 것입니다. 그러나 일단 ID가 발급되면 삭제 된 범위 또는 개별 ID를 추적해야합니다. 나는 후자가 더 좋을 것이라고 생각한다. 그러나 ID를 생성하기 위해 카운터 (또는 주기적 함수)를 사용하면 카운터가 래핑 된 후에도 ID가 연속적으로 요청되지 않은 시퀀스를 확인해야하는 문제가 발생합니다.
발견 방법은 다음과 같습니다. 한 번에 최대 5,000 개의 ID가 요청됩니다. 그러나 ID의 요청을 받고 나서 매우 자주 발표 될 것입니다. 이탈은 범위에서 발생하는 경향이 있습니다. 즉, 한 번에 100 개를 모두 요청한 다음 짧은 시간 간격으로 모두 100 개를 릴리스합니다.
나는 GUID 대신 int를 사용할 수 있지만 ID의 공간/대역폭/처리 시간을 절약하고 싶습니다.
제 질문은 : 위의 인터페이스에서 의사 코드에 주어진 의사 코드와 관련하여 요청 및 릴리스 방법이 어떻게되어야합니까?
Perfect! 감사! –