본문 바로가기

개발 일기/주소단축 프로그램

(4)
주소(URL)를 단축하기 위해선 어떻게 해야할까? 일전에 해당 게시글에서 주소 단축을 위해 .hashcode()를 사용하려했을 때, 문제점에 대해 설명했었다. 중복의 문제뿐만 아니라, hashcode() 메소드를 사용했을 때, 주소가 너무 길어지는 단점이 있었다. 따라서, 해당 단점을 해결하기 위해 다른 방법들을 찾아보게 되었다. 1. 단축된 URL을 만들어야 하는데, 오히려 URL이 길어지는 현상 => 해당 현상을 해결하려 찾아본 결과, 많은 사람들이 기존의 긴URL을 단축하는 것이 아닌, 긴 URL의 ID값을 인코딩하고 있었다. 2. 그래서 어떻게 URL을 줄여야할까? BASE62 방법을 사용하고 있다고 한다. 나는 BASE64만 알고 있었는데, 이는 + = / 와 같은 문자를 포함하기 때문에 URL이 SAFE하지 않게 된다고 한다. 그래서 [a-z..
String에 .hashcode()를 적용하면, 다른 값을 반환할까? 주소 단축 프로그램(웹)을 제작하던 중, 원래의 긴 주소를 짧은 주소를 변환하는 과정이 존재한다. 이 과정에서 짧은 주소는 긴 주소하나에 유일하게 대응되어야 한다. 하지만, 해시함수에 대해 아는 바가 없어 일단, hashcode()를 생각하게 되었다. 내가 아는 hashcode()는 각자 다 다른 값을 배정해준다고 알고 있었는데, 문득 찝찝해졌다. Hashcode() ? hashCode는 두 객체가 같은 객체인지 확인하는 Method입니다. Hashcode 메소드의 내부입니다. int형으로 반환되는 것을 보실 수 있는데, int 형은 4byte입니다. 따라서, 0부터 0xFFFFFFFF(4,294,967,295)까지 만큼의 숫자를 반환할 수 있는데, String의 갯수가 과연 저 안에서 끝날까요? 절대 ..
진행중인 또다른 프로젝트 현재 Redis를 사용하여 주소 단축 프로그램을 제작하고 있다. 해당 과정에서 현재 생각해야하거나 공부해야 하는 것은 1. Redis의 동작 과정 2. 각 어노테이션이 무슨 역할을 하는지? 3. 인덱스를 어떤 것으로 지정해줘야하는지? 4. 유저가 짧은 주소를 입력했을 때 Redirection을 어떻게 해야하는지 5. 캐시 만료기간을 어떻게 정해야하는지. 6. 많은 수의 유저가 접속했을 때 어떻게 해야하는지 7. Crud Repository vs JPA Repository 공부하면서 추가할 예정
Redis (1) RemoteDictionaryServer (=REDIS) "Key - Value" 구조로 비정형 데이터를 저장, 관리할 수 있는 오픈 소스 기반의 비관계형 DBMS Redis의 특징 Redis가 가지는 가장 큰 강점은 다양한 Collection(String, List, Set, SortedSet, Hash)_을 지원한다는 것입니다. 또한, Redis는 single thread로 동작하기 때문에 atomic operation이 보장됩니다. (싱글쓰레드로 운영되기 때문에, 데이터가 많다면 저장된 전체 키를 확인하는 명령어는 이를 조회하는 동안 레디스가 다른 일을 하지 못한다. (scan으로 대체 가능하다고 함.)) In-Memory로 높은 처리 속도를 보여주며, persistence (dataset dump..