{"id":5623,"date":"2018-09-21T15:44:33","date_gmt":"2018-09-21T06:44:33","guid":{"rendered":"http:\/\/www.gisdeveloper.co.kr\/?p=5623"},"modified":"2020-05-28T13:21:29","modified_gmt":"2020-05-28T04:21:29","slug":"java-%ea%b3%a0%ec%9c%a0%ea%b0%92-%eb%a7%8c%eb%93%a4%ea%b8%b0","status":"publish","type":"post","link":"http:\/\/www.gisdeveloper.co.kr\/?p=5623","title":{"rendered":"[Java] \uace0\uc720\uac12 \ub9cc\ub4e4\uae30"},"content":{"rendered":"<p>\uace0\uc720\ud55c \uac12\uc73c\ub85c \uc0ac\uc6a9\ud560 \ub9cc\ud55c \uac83\uc740 UUID\uc774\ub2e4. UUID\ub294 \uadf8 \uc758\ubbf8\uac00 \uac00\uc9c0\ub294 \uac83 \uadf8\ub300\ub85c \uace0\uc720\ud55c \uac12\uc774\ub2e4. \uadf8\ub7ec\ub098 \uc800\uc7a5\uc18c\uc758 \uacf5\uac04\uc740 128 bits\uc774\uba70 \ubb38\uc790\uc5f4\ub85c \ud45c\ud604\ub420 \ub54c 550e8400-e29b-41d4-a716-446655440000 \ucc98\ub7fc \uadf8 \uae38\uc774\uac00 \uc0c1\ub2f9\ud788 \uae38\ub2e4. \ubb3c\ub860 UUID\ub294 \uc774 \uae30\uc885\uc758 \ud558\ub4dc\uc6e8\uc5b4\ub098, \uc2dc\uac04 \ub610\ub294 \uacf5\uac04\uc801\uc73c\ub85c \ub2e4\ub978 \ud658\uacbd \ubaa8\ub450\uc5d0\uc11c \uace0\uc720\ud55c \uac12\uc744 \uc81c\uacf5\ud574 \uc8fc\ub294 \uc7a5\uc810\uc774 \uc788\ub2e4. \uadf8\ub7f0\ub370, \ub9cc\uc57d \ud558\ub098\uc758 \uc11c\ubc84 \ub0b4\ubd80\uc5d0\uc11c \uace0\uc720\ud55c \uac12\uc774 \ud544\uc694\ud558\ub2e4\uba74 \uc5b4\ub5a8\uae4c? \ud55c\uacc4\ub294 \uc788\uaca0\uc73c\ub098, \ud544\uc790\uc5d0\uac8c\ub294 \uc801\ud569\ud55c \ubc29\ubc95 \uc911\uc5d0 \ud558\ub098\ub294 \uc11c\ubc84 \uce21\uc758 \uc2dc\uac04\uc744 \ud65c\uc6a9\ud558\ub294 \uac83\uc774\ub2e4. Java\uc5d0\uc11c \uc11c\ubc84\uc758 \uc2dc\uac04\uc744 \uc5bb\ub294 \ud568\uc218\ub294 System.currentTimeMillis, \uc11c\ubc84\uac00 \uae30\ub3d9 \ub41c \ud6c4\uc758 \uacbd\uacfc\ub41c \uc2dc\uac04\uc740 System.nanoTime\ub97c \ud1b5\ud574 \uc5bb\uc744 \uc218 \uc788\ub2e4. \uadf8 \uacb0\uacfc\ub294 long\ud615\uc774\ubbc0\ub85c 64 Bits\uc774\uba70, \ubb38\uc790\uc5f4\ub85c \ud45c\ud604\ud558\uba74 \ub300\ubd80\ubd84 21220887433392\uc640 \uac19\uc774 14\uac1c\uba74 \ud45c\ud604\uc774 \uac00\ub2a5\ud558\ub2e4. \uadf8\ub7ec\ub098 \ub098\uc5d0\uac8c \uace0\uc720\uac12\uc774 \ud544\uc694\ud55c \ubaa9\uc801\uc740 \uc800\uc7a5\uc18c\uc5d0 \uc800\uc7a5\ud560 \ud544\uc694\ub294 \uc5c6\uace0 \ubb38\uc790\uc5f4\ub85c \ud45c\ud604\ud588\uc744\ub54c, \ucd5c\ub300\ud55c \uc9e7\uc544\uc57c \ud55c\ub2e4\ub294 \uac83\uc774\ub2e4. \uadf8\ub7f0\ub370 \uc774 long \ud0c0\uc785\uc744 \ubb38\uc790\uc5f4\ub85c \ud45c\ud604\ud558\uba74 14\uac1c\uc758 \uc790\ub9ac\ub97c \ucc28\uc9c0\ud558\ub294 \uac83\uc740 \ub108\ubb34 \uae38\ub2e4. \uc9e7\uac8c \ud45c\ud604\ud558\ub294 \ubc29\ubc95\uc740 \uc5c6\uc744\uae4c? \uc774 long \uac12\uc740 10\uc9c4\uc218\uc774\ub2e4. \uc774\ub97c \uc880 \ub354 \ub192\uc740 \uc9c4\uc218\ub85c \ud45c\ud604\ud55c\ub2e4\uba74 \uadf8 \uae38\uc774\ub294 \uc904\uc5b4\ub4e4 \uac83\uc774\ub2e4. 16\uc9c4\uc218, 32\uc9c4\uc218, 64\uc9c4\uc218, 128\uc9c4\uc218 \ub4f1\uc774 \uac00\ub2a5\ud55c\ub370.. \ud45c\ud604 \uac00\ub2a5\ud55c \ubb38\uc790\uc5ec\uc57c \ud558\ubbc0\ub85c 64\uc9c4\uc218\uac00 \ucd5c\uc801\uc774\ub2e4.<\/p>\n<p>\uc774\ub7ec\ud55c \uc0c1\ud669\uc5d0\uc11c \uc544\ub798\uc758 \ucf54\ub4dc \uc911 longToBase64\ub77c\ub294 \ud568\uc218\ub294 long \ud0c0\uc785\uc758 \uac12\uc744 \ubc1b\uc544 64\uc9c4\uc218\ub85c \uc9c4\uc218 \ubcc0\ud658 \ubc29\uc2dd\uc744 \ud1b5\ud574 \ubb38\uc790\uc5f4\ub85c \ubcc0\ud658\ud574 \uc8fc\ub294 \ud568\uc218\uc774\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\">\r\npublic static String longToBase64(long v) {\r\n    final char[] digits = {\r\n        '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', \r\n        'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', \r\n        'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', \r\n        'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D',\r\n        'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', \r\n        'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', \r\n        'Y', 'Z', '#', '$'\r\n    };\r\n\r\n    int shift = 6;\r\n    char[] buf = new char[64];\r\n    int charPos = 64;\r\n    int radix = 1 << shift;\r\n    long mask = radix - 1;\r\n    long number = v;\r\n\r\n    do {\r\n        buf[--charPos] = digits[(int) (number &#038; mask)];\r\n        number >>>= shift;\r\n    } while (number != 0);\r\n\r\n    return new String(buf, charPos, (64 - charPos));\r\n}\r\n<\/pre>\n<p>\uc544\ub798\uc758 \ucf54\ub4dc\ub294 \uc704\uc758 \ud568\uc218\ub97c \ud14c\uc2a4\ud2b8\ud55c \uac83\uc73c\ub85c, 1000\uac1c\uc758 \uace0\uc720\ud55c \uac12\uc744 \uc5bb\ub294 \uae30\ub2a5\uc744 \uc218\ud589\ud55c\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\">\r\nfor(int i=0; i<1000; i++) {\r\n    long time =  System.nanoTime();\r\n    System.out.println(time + \" -> \" + longToBase64(time));\r\n}\r\n<\/pre>\n<p>\uc704\uc758 \ucf54\ub4dc\uc758 \uacb0\uacfc\ub294 \uc544\ub798\uc640 \uac19\uc740\ub370, \uc2e4\ud589\ud558\ub294 \ub9e4 \uc21c\uac04\ub9c8\ub2e4 \ub2e4\ub974\uac8c \ud45c\uc2dc\ub420 \uac83\uc774\ub2e4.<\/p>\n<p><code>...<\/p>\n<p>21767297606161 -> 4YMo2G8h<br \/>\n21767297618803 -> 4YMo2JdP<br \/>\n21767297627494 -> 4YMo2LlC<br \/>\n21767297634210 -> 4YMo2M#y<br \/>\n21767297647642 -> 4YMo2Qgq<br \/>\n21767297654358 -> 4YMo2RVm<br \/>\n21767297661469 -> 4YMo2TEt<br \/>\n21767297668185 -> 4YMo2Vhp<br \/>\n21767297676877 -> 4YMo2Xpd<br \/>\n21767297683593 -> 4YMo2Z29<br \/>\n21767297690704 -> 4YMo2#Ng<br \/>\n21767297697420 -> 4YMo30qc<br \/>\n21767297704531 -> 4YMo329j<br \/>\n21767297718753 -> 4YMo35Dx<br \/>\n21767297727445 -> 4YMo37Ll<br \/>\n21767297741272 -> 4YMo3b7o<br \/>\n21767297748383 -> 4YMo3cSv<br \/>\n21767297755099 -> 4YMo3evr<br \/>\n21767297762210 -> 4YMo3gey<br \/>\n21767297776037 -> 4YMo3jCB<br \/>\n21767297783148 -> 4YMo3llI<\/p>\n<p>...<\/code><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\uace0\uc720\ud55c \uac12\uc73c\ub85c \uc0ac\uc6a9\ud560 \ub9cc\ud55c \uac83\uc740 UUID\uc774\ub2e4. UUID\ub294 \uadf8 \uc758\ubbf8\uac00 \uac00\uc9c0\ub294 \uac83 \uadf8\ub300\ub85c \uace0\uc720\ud55c \uac12\uc774\ub2e4. \uadf8\ub7ec\ub098 \uc800\uc7a5\uc18c\uc758 \uacf5\uac04\uc740 128 bits\uc774\uba70 \ubb38\uc790\uc5f4\ub85c \ud45c\ud604\ub420 \ub54c 550e8400-e29b-41d4-a716-446655440000 \ucc98\ub7fc \uadf8 \uae38\uc774\uac00 \uc0c1\ub2f9\ud788 \uae38\ub2e4. \ubb3c\ub860 UUID\ub294 \uc774 \uae30\uc885\uc758 \ud558\ub4dc\uc6e8\uc5b4\ub098, \uc2dc\uac04 \ub610\ub294 \uacf5\uac04\uc801\uc73c\ub85c \ub2e4\ub978 \ud658\uacbd \ubaa8\ub450\uc5d0\uc11c \uace0\uc720\ud55c \uac12\uc744 \uc81c\uacf5\ud574 \uc8fc\ub294 \uc7a5\uc810\uc774 \uc788\ub2e4. \uadf8\ub7f0\ub370, \ub9cc\uc57d \ud558\ub098\uc758 \uc11c\ubc84 \ub0b4\ubd80\uc5d0\uc11c \uace0\uc720\ud55c \uac12\uc774 \ud544\uc694\ud558\ub2e4\uba74 \uc5b4\ub5a8\uae4c? \ud55c\uacc4\ub294 &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/www.gisdeveloper.co.kr\/?p=5623\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;[Java] \uace0\uc720\uac12 \ub9cc\ub4e4\uae30&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[60],"tags":[],"class_list":["post-5623","post","type-post","status-publish","format-standard","hentry","category-java"],"_links":{"self":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/5623","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=5623"}],"version-history":[{"count":3,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/5623\/revisions"}],"predecessor-version":[{"id":9574,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/5623\/revisions\/9574"}],"wp:attachment":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=5623"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=5623"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=5623"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}