{"id":1004,"date":"2009-11-09T05:27:38","date_gmt":"2009-11-08T20:27:38","guid":{"rendered":"http:\/\/www.gisdeveloper.co.kr\/?p=1004"},"modified":"2017-01-31T19:47:34","modified_gmt":"2017-01-31T10:47:34","slug":"java%ec%99%80-c%ec%9d%98-zip-%ec%95%95%ec%b6%95-%ec%97%b0%ec%82%b0%ec%97%90-%eb%8c%80%ed%95%9c-%ed%8d%bc%ed%8f%ac%eb%a8%bc%ec%8a%a4-%eb%b9%84%ea%b5%90","status":"publish","type":"post","link":"http:\/\/www.gisdeveloper.co.kr\/?p=1004","title":{"rendered":"Java\uc640 C\uc758 zip \uc555\ucd95 \uc5f0\uc0b0\uc5d0 \ub300\ud55c \ud37c\ud3ec\uba3c\uc2a4 \ube44\uad50"},"content":{"rendered":"<p>\uba3c\uc800 C\uc758 zip \uc555\ucd95\uc740 Jean-loup Gailly\ub2d8\uc774 \ub9cc\ub4e4\uc5b4 \uacf5\uac1c\ud55c zlib 1.2.2\ub97c \uc0ac\uc6a9\ud588\uc2b5\ub2c8\ub2e4. C\/C++\uc5d0\uc11c \ub370\uc774\ud130\uc758 \uc555\ucd95\uc5d0\uc11c \uc0ac\uc6a9\ud558\ub294 \uc555\ucd95 \ub77c\uc774\ube0c\ub7ec\ub9ac\ub294 \ud754\ud788 \uc774 zlib\ub97c \uc0ac\uc6a9\ud569\ub2c8\ub2e4.\u00a0 \uadf8\ub9ac\uace0 Java\uc5d0\uc11c \uc555\ucd95\uc740 \uae30\ubcf8\uc801\uc73c\ub85c \uc81c\uacf5\ud558\ub294 java.util.zip.Deflater \ud074\ub798\uc2a4\ub97c \uc0ac\uc6a9\ud588\uc2b5\ub2c8\ub2e4. \ud14c\uc2a4\ud2b8\ub97c \ud55c \uc774\uc720\ub294 Java\uac00 C\/C++\uc5d0 \ube44\ud574\uc11c \uc5bc\ub9c8\ub098 \ub290\ub9b4\uae4c&#8230; \ud558\ub294 \uae30\ub300\uc600\uc2b5\ub2c8\ub2e4. =_=;<\/p>\n<p>Java\uc640 C\/C++ \ubaa8\ub450 \uc0ac\uc6a9\ud55c \uc555\ucd95 \ub370\uc774\ud130\ub294 0.2\uba54\uac00 \uc815\ub3c4\ub418\ub294 jpg \ud30c\uc77c\ub85c \ud588\uc2b5\ub2c8\ub2e4. \uadf8\ub9ac\uace0 Java\uc640 C\/C++ \ubaa8\ub450 \uacb0\uacfc\ub294 \uc555\ucd95 \ub808\ubca8\uc744 3\uc73c\ub85c \ud588\uc744\ub54c \ub3d9\uc77c\ud55c \uacb0\uacfc\uc640 \ud06c\uae30\uc600\uc73c\uba70 \uc6d0\ubcf8 \ud06c\uae30\uc5d0 \ube44\ud574 75% \uc815\ub3c4\uc758 \uc555\ucd95\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \uacb0\uacfc\ub294 \ub2e4\uc74c \uac19\uc2b5\ub2c8\ub2e4. \uccab\ubc88\uc9f8 \uc774\ubbf8\uc9c0\ub294 Java\uc758 \uacb0\uacfc\uc774\uace0.. \ub450\ubc88\uc9f8\ub294 C\/C++\uc758 \uacb0\uacfc\uc785\ub2c8\ub2e4.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"align aligncenter\" src=\"http:\/\/www.gisdeveloper.co.kr\/wp-content\/uploads\/1\/1005694545.jpg\" alt=\"\uc0ac\uc6a9\uc790 \uc0bd\uc785 \uc774\ubbf8\uc9c0\" width=\"200\" height=\"472\" \/><br \/>\n\uc640\uc6b0!! Java\uac00 C\/C++\uc5d0 \ube44\ud574 \uc0c1\ub2f9\ud788 \ub290\ub9b4\uac83\uc73c\ub85c \uae30\ub300\ud588\ub294\ub370&#8230; \uadf8\ub807\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4. C\/C++\uc640 \uc131\ub2a5\uc740 \uac70\uc758 \ube44\uc2b7\ud55c \uac83\uc73c\ub85c \uc0dd\uac01\ub429\ub2c8\ub2e4. \ub450 \uacbd\uc6b0 \ubaa8\ub450 \ucd5c\uc545\uc758 \uacbd\uc6b0 0.016\ucd08\uc815\ub3c4 \uc18c\uc694\ub429\ub2c8\ub2e4. \ub2e4\ub9cc&#8230;. Java\uc758 \uacbd\uc6b0 \uac00\ub054\uc529 \ud280\ub294 \ubd80\ubd84\uc774 \uc788\uc5c8\ub294\ub370.. 0.031\ucd08 \uc815\ub3c4 \uc18c\uc694\ub418\ub294 \ubd80\ubd84\uc774 \uac00\ub054 \ub098\uc635\ub2c8\ub2e4. \uc544\ub9c8\ub3c4 Java\uc758 gc\uae30\ub2a5 \ub54c\ubb38\uc774 \uc544\ub2cc\uac00&#8230; \uac00\ubccd\uac8c \uc9d0\uc791\ud574\ubd05\ub2c8\ub2e4. \ud558\uc9c0\ub9cc \uc774\ub7f0 \ubd80\ubd84\uc740 \uc81c\uc678\ud558\uba74 \uc815\ub9d0 C\/C++\uacfc \uac19\uc740 Native \ucef4\ud30c\uc77c\ub7ec \ubabb\uc9c0 \uc54a\uc740 \uc131\ub2a5\uc774\ub77c\uace0 \ud310\ub2e8\ub429\ub2c8\ub2e4.<\/p>\n<p>\uc544\ub798\ub294 Java\uc5d0\uc11c \ud37c\ud3ec\uba3c\uc2a4 \ud14c\uc2a4\ud2b8\ub85c \uc0ac\uc6a9\ud588\ub358 \ucf54\ub4dc\uc785\ub2c8\ub2e4.<\/p>\n<pre>\r\nimport java.io.ByteArrayOutputStream;\r\nimport java.io.IOException;\r\nimport java.util.zip.DataFormatException;\r\nimport java.util.zip.Deflater;\r\nimport java.util.zip.Inflater;\r\nimport java.io.*;\r\n\r\npublic class TestMain {\r\n\u00a0 \u00a0 public static void main(String[] args) \r\n\u00a0 \u00a0 \u00a0 \u00a0 throws IOException, DataFormatException\r\n\u00a0 \u00a0 {\r\n\u00a0 \u00a0 \u00a0 \u00a0 FileInputStream fis = new FileInputStream(\"d:\/a.jpg\");\r\n\u00a0 \u00a0 \u00a0 \u00a0 ByteArrayOutputStream baos = new ByteArrayOutputStream(fis.available());\r\n\u00a0 \u00a0 \u00a0 \u00a0 byte [] buffer = new byte[512];\r\n\u00a0 \u00a0 \u00a0 \u00a0 int cntRead;\r\n\u00a0 \u00a0 \u00a0 \u00a0 while((cntRead=fis.read(buffer)) != -1) {\r\n\u00a0 \u00a0 \u00a0 \u00a0\u00a0 \u00a0 \u00a0baos.write(buffer, 0, cntRead);\r\n\u00a0 \u00a0 \u00a0 \u00a0 }\r\n\r\n\u00a0 \u00a0 \u00a0 \u00a0 byte[] compressedBytes = null;\r\n\u00a0 \u00a0 \u00a0 \u00a0 for(int i=0; i&lt;20; i++) { \/\/ 20 times repeat..\r\n\u00a0 \u00a0 \u00a0 \u00a0\u00a0 \u00a0 \u00a0System.out.println(\"Performance Test Start...\");\r\n\u00a0 \u00a0 \u00a0 \u00a0\u00a0 \u00a0 \u00a0long stime = System.currentTimeMillis();\r\n\u00a0\r\n\u00a0 \u00a0 \u00a0 \u00a0\u00a0 \u00a0 \u00a0compressedBytes = Compress(baos.toByteArray());\r\n\u00a0 \u00a0\r\n\u00a0 \u00a0 \u00a0 \u00a0\u00a0 \u00a0 \u00a0long etime = System.currentTimeMillis();\r\n\u00a0 \u00a0 \u00a0 \u00a0\u00a0 \u00a0 \u00a0System.out.println(\"Performance Test Result : \" \r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 + (etime-stime)+\" MS.\");\r\n\u00a0 \u00a0 \u00a0 \u00a0 } \u00a0 \r\n\u00a0\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0FileOutputStream fos = new FileOutputStream(\"d:\/a_java.jpg.zip\");\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0ByteArrayInputStream bais = new ByteArrayInputStream(compressedBytes);\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0while((cntRead=bais.read(buffer)) != -1) {\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0fos.write(buffer, 0, cntRead);\r\n\u00a0 \u00a0 \u00a0\u00a0 \u00a0 }\r\n\u00a0 \u00a0 }\r\n\r\n\u00a0 \u00a0 private static byte[] Compress(byte[] bytesToCompress) throws IOException\r\n\u00a0 \u00a0 {\r\n\u00a0 \u00a0 \u00a0 \u00a0 Deflater compressor = new Deflater(3);\r\n\u00a0 \u00a0 \u00a0 \u00a0 compressor.setInput(bytesToCompress);\r\n\u00a0 \u00a0 \u00a0 \u00a0 compressor.finish();\r\n\u00a0\r\n\u00a0 \u00a0 \u00a0 \u00a0 ByteArrayOutputStream bos = \r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 new ByteArrayOutputStream(bytesToCompress.length);\r\n\u00a0\r\n\u00a0 \u00a0 \u00a0 \u00a0 byte[] buf = new byte[bytesToCompress.length + 100];\r\n\u00a0 \u00a0 \u00a0 \u00a0 while (!compressor.finished())\r\n\u00a0 \u00a0 \u00a0 \u00a0 {\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 bos.write(buf, 0, compressor.deflate(buf));\r\n\u00a0 \u00a0 \u00a0 \u00a0 }\r\n\r\n\u00a0 \u00a0 \u00a0 \u00a0 bos.close();\r\n\u00a0\r\n\u00a0 \u00a0 \u00a0 \u00a0 return bos.toByteArray();\r\n\u00a0 \u00a0 }\r\n}<\/pre>\n<p>\ub300\ub7b5 \uc0b4\ud3b4\ubcf4\uc2dc\uba74 \uc704\uc758 \ucf54\ub4dc\uc5d0\ub294 IO\uc5d0 \ub300\ud55c Buffer \uae30\ub2a5\uacfc \uac19\uc740.. \uc5ec\uc804\ud788 \ucd5c\uc801\ud654\uc758 \uc5ec\uc9c0\uac00 \ub0a8\uc544 \uc788\uc2b5\ub2c8\ub2e4. \ub354 \uc774\uc0c1 \uc81c\uac00 \uac16\uace0 \uc788\ub294 &#8220;\uc790\ubc14\ub294 \ub290\ub9ac\ub2e4&#8221;\ub77c\ub294 \uc120\uc785\uacac\uc774 \uc0c1\ub2f9 \ubd80\ubd84 \uae68\uc9c4 \ub290\ub08c\uc785\ub2c8\ub2e4.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\uba3c\uc800 C\uc758 zip \uc555\ucd95\uc740 Jean-loup Gailly\ub2d8\uc774 \ub9cc\ub4e4\uc5b4 \uacf5\uac1c\ud55c zlib 1.2.2\ub97c \uc0ac\uc6a9\ud588\uc2b5\ub2c8\ub2e4. C\/C++\uc5d0\uc11c \ub370\uc774\ud130\uc758 \uc555\ucd95\uc5d0\uc11c \uc0ac\uc6a9\ud558\ub294 \uc555\ucd95 \ub77c\uc774\ube0c\ub7ec\ub9ac\ub294 \ud754\ud788 \uc774 zlib\ub97c \uc0ac\uc6a9\ud569\ub2c8\ub2e4.\u00a0 \uadf8\ub9ac\uace0 Java\uc5d0\uc11c \uc555\ucd95\uc740 \uae30\ubcf8\uc801\uc73c\ub85c \uc81c\uacf5\ud558\ub294 java.util.zip.Deflater \ud074\ub798\uc2a4\ub97c \uc0ac\uc6a9\ud588\uc2b5\ub2c8\ub2e4. \ud14c\uc2a4\ud2b8\ub97c \ud55c \uc774\uc720\ub294 Java\uac00 C\/C++\uc5d0 \ube44\ud574\uc11c \uc5bc\ub9c8\ub098 \ub290\ub9b4\uae4c&#8230; \ud558\ub294 \uae30\ub300\uc600\uc2b5\ub2c8\ub2e4. =_=; Java\uc640 C\/C++ \ubaa8\ub450 \uc0ac\uc6a9\ud55c \uc555\ucd95 \ub370\uc774\ud130\ub294 0.2\uba54\uac00 \uc815\ub3c4\ub418\ub294 jpg \ud30c\uc77c\ub85c \ud588\uc2b5\ub2c8\ub2e4. \uadf8\ub9ac\uace0 Java\uc640 C\/C++ \ubaa8\ub450 &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/www.gisdeveloper.co.kr\/?p=1004\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;Java\uc640 C\uc758 zip \uc555\ucd95 \uc5f0\uc0b0\uc5d0 \ub300\ud55c \ud37c\ud3ec\uba3c\uc2a4 \ube44\uad50&#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,8],"tags":[51],"class_list":["post-1004","post","type-post","status-publish","format-standard","hentry","category-java","category-programming","tag-java"],"_links":{"self":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/1004","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=1004"}],"version-history":[{"count":1,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/1004\/revisions"}],"predecessor-version":[{"id":3407,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/1004\/revisions\/3407"}],"wp:attachment":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1004"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1004"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1004"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}