은 매우 간단합니다 :
- 스토어의 URL과는 일련 번호의에 매핑.
- 시퀀스 번호 (ID)를 고정 길이 문자열로 변환하십시오.
두 번째 단계에서 단지 여섯 개의 소문자를 사용하면 현재 응용 프로그램에 필요한 더 많은 (24^6) 조합을 얻을 수 있으며 특정 시점에 더 큰 순서의 사용을 방해하는 요소는 없습니다. 숫자 나 대문자를 허용하면 짧은 시퀀스를 사용할 수 있습니다.
변환 알고리즘은 (16 진수로 변환 할 때와 같은) 기본 변환이며, 0을 나타내는 기호가있는 모든 패딩이 사용됩니다.
LOWER = [chr(x + ord('a')) for x in range(25)]
DIGITS = [chr(x + ord('0')) for x in range(10)]
MAP = DIGITS + LOWER
def i2text(i, l):
n = len(MAP)
result = ''
while i != 0:
c = i % n
result += MAP[c]
i //= n
padding = MAP[0]*l
return (padding+result)[-l:]
print i2text(0,4)
print i2text(1,4)
print i2text(12,4)
print i2text(36,4)
print i2text(400000,4)
print i2text(1600000,4)
결과 :
0000
0001
000c
0011
kib9
4b21
귀하의 URL은 다음 양식 http://mydomain.com/myapp/short/kib9의 것이 변환에 대한 몇 가지 파이썬 코드입니다.
귀하의 고객이 공개 단축키 (goo.gl, bit.ly 등) 중 하나를 통해 조회수를 리디렉션하는 것에 만족할 것이라고 생각하십니까? 리디렉터로 사용하지 않는 서비스를 통해 단축 URL을 생성 할 수 있다고 생각하지 않습니다. 어떤 이유에서든 자신의 단축 알고리즘을 구현할 수없고 대신 클라이언트 사이트에서 짧은 리디렉터를 실행할 수 있습니까? –
대량 프로세스에서 400,000 번 공격 대상이 될 수도 있습니다! 당신이 그것을 정상적으로하고 4.5 일 이상 계속 걸릴 것 인 1 초를했지만, 그것을 빨리하는 것이 "비우호적"일 것입니다. –