URL สั้น ๆ ตามชื่อหมายถึงเว็บที่ดูสั้น นับตั้งแต่เปิดตัวบริการ URL สั้น ๆ ของ Twitter บริษัท อินเทอร์เน็ตรายใหญ่ได้เปิดตัวบริการ URL สั้น ๆ ของตนเอง ข้อได้เปรียบที่ใหญ่ที่สุดของ URL สั้น ๆ นั้นสั้นตัวละครไม่กี่ตัวซึ่งสะดวกสำหรับการเผยแพร่การเผยแพร่การจำลองแบบและการจัดเก็บ
ผ่านการค้นหาออนไลน์อัลกอริทึม URL สั้น ๆ สองตัวได้รับการหมุนเวียน หนึ่งนั้นขึ้นอยู่กับ MD5 หลาและอื่น ๆ จะขึ้นอยู่กับลำดับการเพิ่มขึ้นของตัวเอง
1. ตามรหัส MD5: ความยาวของ URL สั้น ๆ ที่คำนวณโดยอัลกอริทึมนี้โดยทั่วไปคือ 5 หรือ 6 หลัก
5 หรือ 6 ภูมิภาค รู้สึกว่า Google (http://goo.gl), Weibo ใช้อัลกอริทึมที่คล้ายกัน (เดา) ซึ่งอาจดูสวยงามมากขึ้น
2. ขึ้นอยู่กับลำดับการเพิ่มขึ้นของตัวเอง: การใช้อัลกอริทึมนี้ค่อนข้างง่ายความเป็นไปได้ของการชนคือ 0 การแสดงออกของการแสดงออกอาจไม่มีที่สิ้นสุดความยาวเริ่มต้นจาก 1 ดูเหมือนว่าบริการ URL สั้น ๆ ของ Baidu (http://dwz.cn/) เป็นอัลกอริทึมนี้
อัลกอริทึมเฉพาะ
1. รหัส MD5 : สมมติว่าความยาวของ URL คือ N
.
b. ดู 8 สตริงที่ได้รับจาก A เป็นเลขฐานสิบหกและดำเนินการและดำเนินการกับ N * 6 1 ที่แสดงโดยหมายเลขไบนารีที่แสดงโดย N * 6 1
รับหมายเลขไบนารี n * 6 -long
c
ตัวเลขถูกใช้เป็นตัวอักษรหรือตัวเลขที่สอดคล้องกันเป็นตัวอักษรดัชนีและการเย็บเป็น URL สั้น ๆ ที่มีความยาว n
ถ่านสุดท้ายคงที่ [] ตัวเลข = {'0', '1', '2', '3', '4', '5', '6', '7', '8' 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'M', 'M, ',' m ',' m ',' m ',' m ',' n ',' o ',' p ',' q ',' r ',' s ',' t ',' u ', 'v', 'w', 'x', 'y', 'z,' z 'a,' b ',' c ',' c ',' d ',' e ',' f ',' g ' ',' h ',' i ',' j ',' k ',' l ',' l ',' l ',' l ',' l ',' l ',' l ',' l ',' l ' 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y y y y ',' z '};
สตริงสาธารณะสั้นลง (สตริง longurl, int urllength) {ถ้า (urllength <0 || urllength> 6) {โยน ullegalarguments ใหม่ ("ความยาวของ url จะต้องเป็น etween 0 และ 6"));} สตริง md5hex = digestutils MD5HEX (Longurl); // 6 Digit Binary สามารถระบุตัวอักษร 62 ตัวจาก 0-9a-za-za-za-za-za-Za-Zaint Binangth = urllLength * 6; , ไบนารี); Long.valueof (Substring, 1 6) & BinaryLengthFixer); Substring, J * 6, (J + 1) * 6); (shorturl)!
2. ลำดับเพิ่มตัวเอง:
.
Atomiclong Sequence = Atomiclong ใหม่ (0); = Stringbuilder () (จริง) {int remair = (int) (seq % 62); } return sbuilder.toString ();}
รหัสในโครงการ Maven ใช้ 2 แผนที่เพื่อจำลองการแมปร่วมกันของ URL ที่สั้นกว่าที่เก็บของ
หวังว่าบทความนี้จะเป็นประโยชน์สำหรับทุกคนในการเรียนรู้บริการ URL สั้น ๆ