{"id":1521,"date":"2016-03-30T10:50:58","date_gmt":"2016-03-30T02:50:58","guid":{"rendered":"https:\/\/ai.zhousir.top\/?p=1521"},"modified":"2016-03-30T10:50:58","modified_gmt":"2016-03-30T02:50:58","slug":"java%e5%b7%a5%e7%a8%8b%e5%b8%88%e6%88%90%e7%a5%9e%e4%b9%8b%e8%b7%af","status":"publish","type":"post","link":"https:\/\/ai.zhousir.top\/?p=1521","title":{"rendered":"Java\u5de5\u7a0b\u5e08\u6210\u795e\u4e4b\u8def"},"content":{"rendered":"<h2>\u4e00\u3001\u57fa\u7840\u7bc7<\/h2>\n<h3>1.1 JVM<\/h3>\n<h4>1.1.1. Java\u5185\u5b58\u6a21\u578b\uff0cJava\u5185\u5b58\u7ba1\u7406\uff0cJava\u5806\u548c\u6808\uff0c\u5783\u573e\u56de\u6536<\/h4>\n<p><!--more--><\/p>\n<blockquote><p><a href=\"http:\/\/www.jcp.org\/en\/jsr\/detail?id=133\">http:\/\/www.jcp.org\/en\/jsr\/detail?id=133<\/a><\/p>\n<p><a href=\"http:\/\/ifeve.com\/jmm-faq\/\">http:\/\/ifeve.com\/jmm-faq\/<\/a><\/p><\/blockquote>\n<h4>1.1.2. \u4e86\u89e3JVM\u5404\u79cd\u53c2\u6570\u53ca\u8c03\u4f18<\/h4>\n<h4>1.1.3. \u5b66\u4e60\u4f7f\u7528Java\u5de5\u5177<\/h4>\n<blockquote><p><a href=\"http:\/\/www.hollischuang.com\/archives\/105\">jps<\/a>, <a href=\"http:\/\/www.hollischuang.com\/archives\/110\">jstack<\/a>, <a href=\"http:\/\/www.hollischuang.com\/archives\/303\">jmap<\/a>, jconsole, jinfo, jhat, javap, \u2026<\/p>\n<p><a href=\"http:\/\/kenai.com\/projects\/btrace\">http:\/\/kenai.com\/projects\/btrace<\/a><\/p>\n<p><a href=\"http:\/\/www.crashub.org\/\">http:\/\/www.crashub.org\/<\/a><\/p>\n<p><a href=\"https:\/\/github.com\/taobao\/TProfiler\">https:\/\/github.com\/taobao\/TProfiler<\/a><\/p>\n<p><a href=\"https:\/\/github.com\/CSUG\/HouseMD\">https:\/\/github.com\/CSUG\/HouseMD<\/a><\/p>\n<p><a href=\"https:\/\/github.com\/CSUG\/HouseMD\">http:\/\/wiki.cyclopsgroup.org\/jmxterm<\/a><\/p>\n<p><a href=\"https:\/\/github.com\/jlusdy\/TBJMap\">https:\/\/github.com\/jlusdy\/TBJMap<\/a><\/p><\/blockquote>\n<h4>1.1.4. \u5b66\u4e60Java\u8bca\u65ad\u5de5\u5177<\/h4>\n<blockquote><p><a href=\"http:\/\/www.eclipse.org\/mat\/\">http:\/\/www.eclipse.org\/mat\/<\/a><\/p>\n<p><a href=\"http:\/\/visualvm.java.net\/oqlhelp.html\">http:\/\/visualvm.java.net\/oqlhelp.html<\/a><\/p><\/blockquote>\n<h4>1.1.5. \u81ea\u5df1\u7f16\u5199\u5404\u79cdoutofmemory\uff0cstackoverflow\u7a0b\u5e8f<\/h4>\n<blockquote><p>HeapOutOfMemory<\/p>\n<p>Young OutOfMemory<\/p>\n<p>MethodArea OutOfMemory<\/p>\n<p>ConstantPool OutOfMemory<\/p>\n<p>DirectMemory OutOfMemory<\/p>\n<p>Stack OutOfMemory Stack OverFlow<\/p><\/blockquote>\n<h4>1.1.6. \u4f7f\u7528\u5de5\u5177\u5c1d\u8bd5\u89e3\u51b3\u4ee5\u4e0b\u95ee\u9898\uff0c\u5e76\u5199\u4e0b\u603b\u7ed3<\/h4>\n<blockquote><p>\u5f53\u4e00\u4e2aJava\u7a0b\u5e8f\u54cd\u5e94\u5f88\u6162\u65f6\u5982\u4f55\u67e5\u627e\u95ee\u9898 \u5f53\u4e00\u4e2aJava\u7a0b\u5e8f\u9891\u7e41FullGC\u65f6\u5982\u4f55\u89e3\u51b3\u95ee\u9898\uff0c\u5982\u4f55\u67e5\u770b\u5783\u573e\u56de\u6536\u65e5\u5fd7 \u5f53\u4e00\u4e2aJava\u5e94\u7528\u53d1\u751fOutOfMemory\u65f6\u8be5\u5982\u4f55\u89e3\u51b3\uff0c\u5e74\u8f7b\u4ee3\u3001\u5e74\u8001\u4ee3\u3001\u6c38\u4e45\u4ee3\u89e3\u51b3\u529e\u6cd5\u4e0d\u540c\uff0c\u5bfc\u81f4\u539f\u56e0\u4e5f\u4e0d\u540c<\/p><\/blockquote>\n<h4>1.1.7. \u53c2\u8003\u8d44\u6599<\/h4>\n<blockquote><p><a href=\"http:\/\/docs.oracle.com\/javase\/specs\/jvms\/se7\/html\/\">http:\/\/docs.oracle.com\/javase\/specs\/jvms\/se7\/html\/<\/a><\/p>\n<p><a href=\"http:\/\/www.cs.umd.edu\/~pugh\/java\/memoryModel\/\">http:\/\/www.cs.umd.edu\/~pugh\/java\/memoryModel\/<\/a><\/p>\n<p><a href=\"http:\/\/gee.cs.oswego.edu\/dl\/jmm\/cookbook.html\">http:\/\/gee.cs.oswego.edu\/dl\/jmm\/cookbook.html<\/a><\/p><\/blockquote>\n<h3>1.2. Java\u57fa\u7840\u77e5\u8bc6<\/h3>\n<h4>1.2.1. \u9605\u8bfb\u6e90\u4ee3\u7801<\/h4>\n<blockquote><p><code>java.lang.String<\/code> <code>java.lang.Integer`` java.lang.Long<\/code> <code>java.lang.Enum<\/code><code>java.math.BigDecimal<\/code> <code>java.lang.ThreadLocal<\/code> <code>java.lang.ClassLoader &amp; java.net.URLClassLoader<\/code> <code>java.util.ArrayList &amp; java.util.LinkedList`` java.util.HashMap &amp; java.util.LinkedHashMap &amp; java.util.TreeMap<\/code> <code>java.util.HashSet &amp; java.util.LinkedHashSet &amp; java.util.TreeSet<\/code><\/p><\/blockquote>\n<h4>1.2.2. \u719f\u6089Java\u4e2d\u5404\u79cd\u53d8\u91cf\u7c7b\u578b<\/h4>\n<h4>1.2.3. \u719f\u6089Java String\u7684\u4f7f\u7528\uff0c\u719f\u6089String\u7684\u5404\u79cd\u51fd\u6570<\/h4>\n<h4>1.2.4. \u719f\u6089Java\u4e2d\u5404\u79cd\u5173\u952e\u5b57<\/h4>\n<h4>1.2.5. \u5b66\u4f1a\u4f7f\u7528List\uff0cMap\uff0cStack\uff0cQueue\uff0cSet<\/h4>\n<blockquote><p>\u4e0a\u8ff0\u6570\u636e\u7ed3\u6784\u7684\u904d\u5386 \u4e0a\u8ff0\u6570\u636e\u7ed3\u6784\u7684\u4f7f\u7528\u573a\u666f Java\u5b9e\u73b0\u5bf9<code>Array<\/code>\/<code>List<\/code>\u6392\u5e8f<code>java.uti.Arrays.sort()<\/code> <code>java.util.Collections.sort()<\/code> Java\u5b9e\u73b0\u5bf9List\u53bb\u91cd Java\u5b9e\u73b0\u5bf9List\u53bb\u91cd\uff0c\u5e76\u4e14\u9700\u8981\u4fdd\u7559\u6570\u636e\u539f\u59cb\u7684\u51fa\u73b0\u987a\u5e8f Java\u5b9e\u73b0\u6700\u8fd1\u6700\u5c11\u4f7f\u7528cache\uff0c\u7528<code>LinkedHashMap<\/code><\/p><\/blockquote>\n<h4>1.2.6. Java IO&amp;Java NIO\uff0c\u5e76\u5b66\u4f1a\u4f7f\u7528<\/h4>\n<blockquote><p><code>java.io.*<\/code> <code>java.nio.*<\/code> nio\u548creactor\u8bbe\u8ba1\u6a21\u5f0f \u6587\u4ef6\u7f16\u7801\uff0c\u5b57\u7b26\u96c6<\/p><\/blockquote>\n<h4>1.2.7. Java\u53cd\u5c04\u4e0ejavassist<\/h4>\n<blockquote><p>\u53cd\u5c04\u4e0e\u5de5\u5382\u6a21\u5f0f <code>java.lang.reflect.*<\/code><\/p><\/blockquote>\n<h4>1.2.8. Java\u5e8f\u5217\u5316<\/h4>\n<blockquote><p><code>java.io. Serializable<\/code> \u4ec0\u4e48\u662f\u5e8f\u5217\u5316\uff0c\u4e3a\u4ec0\u4e48\u5e8f\u5217\u5316 \u5e8f\u5217\u5316\u4e0e\u5355\u4f8b\u6a21\u5f0f google\u5e8f\u5217\u5316protobuf<\/p><\/blockquote>\n<h4>1.2.9. \u865a\u5f15\u7528\uff0c\u5f31\u5f15\u7528\uff0c\u8f6f\u5f15\u7528<\/h4>\n<blockquote><p><code>java.lang.ref.*<\/code> \u5b9e\u9a8c\u8fd9\u4e9b\u5f15\u7528\u7684\u56de\u6536<\/p><\/blockquote>\n<h4>1.2.10. \u719f\u6089Java\u7cfb\u7edf\u5c5e\u6027<\/h4>\n<blockquote><p><code>java.util.Properties<\/code><\/p><\/blockquote>\n<h4>1.2.11. \u719f\u6089Annotation\u7528\u6cd5<\/h4>\n<blockquote><p><code>java.lang.annotation.*<\/code><\/p><\/blockquote>\n<h4>1.2.12. JMS<\/h4>\n<blockquote><p><code>javax.jms.*<\/code><\/p><\/blockquote>\n<h4>1.2.13. JMX<\/h4>\n<blockquote><p><code>java.lang.management.*<\/code> <code>javax.management.*<\/code><\/p><\/blockquote>\n<h4>1.2.14. \u6cdb\u578b\u548c\u7ee7\u627f\uff0c\u6cdb\u578b\u548c\u64e6\u9664<\/h4>\n<h4>1.2.15. \u81ea\u52a8\u62c6\u7bb1\u88c5\u7bb1\u4e0e\u5b57\u8282\u7801<\/h4>\n<h4>1.2.16. \u5b9e\u73b0Callback<\/h4>\n<h4>1.2.17. java.lang.Void\u7c7b\u4f7f\u7528<\/h4>\n<h4>1.2.18. Java Agent\uff0cpremain\u51fd\u6570<\/h4>\n<blockquote><p><code>java.lang.instrument<\/code><\/p><\/blockquote>\n<h4>1.2.19. \u5355\u5143\u6d4b\u8bd5<\/h4>\n<blockquote><p>Junit\uff0c<a href=\"http:\/\/junit.org\/\">http:\/\/junit.org\/<\/a><\/p>\n<p>Jmockit\uff0c<a href=\"https:\/\/code.google.com\/p\/jmockit\/\">https:\/\/code.google.com\/p\/jmockit\/<\/a><\/p>\n<p>djUnit\uff0c<a href=\"http:\/\/works.dgic.co.jp\/djunit\/\">http:\/\/works.dgic.co.jp\/djunit\/<\/a><\/p><\/blockquote>\n<h4>1.2.20. Java\u5b9e\u73b0\u901a\u8fc7\u6b63\u5219\u8868\u8fbe\u5f0f\u63d0\u53d6\u4e00\u6bb5\u6587\u672c\u4e2d\u7684\u7535\u5b50\u90ae\u4ef6\uff0c\u5e76\u5c06@\u66ff\u6362\u4e3a#\u8f93\u51fa<\/h4>\n<blockquote><p><code>java.lang.util.regex.*<\/code><\/p><\/blockquote>\n<h4>1.2.21. \u5b66\u4e60\u4f7f\u7528\u5e38\u7528\u7684Java\u5de5\u5177\u5e93<\/h4>\n<blockquote><p><code>commons.lang<\/code>, <code>commons.*...<\/code> <code>guava-libraries<\/code> <code>netty<\/code><\/p><\/blockquote>\n<h4>1.2.22. \u4ec0\u4e48\u662fAPI&amp;SPI<\/h4>\n<blockquote><p><a href=\"http:\/\/en.wikipedia.org\/wiki\/Application_programming_interface\">http:\/\/en.wikipedia.org\/wiki\/Application_programming_interface<\/a><\/p>\n<p><a href=\"http:\/\/en.wikipedia.org\/wiki\/Service_provider_interface\">http:\/\/en.wikipedia.org\/wiki\/Service_provider_interface<\/a><\/p><\/blockquote>\n<h4>1.2.23. \u53c2\u8003\u8d44\u6599<\/h4>\n<blockquote><p>JDK src.zip \u6e90\u4ee3\u7801<\/p>\n<p><a href=\"http:\/\/openjdk.java.net\/\">http:\/\/openjdk.java.net\/<\/a><\/p>\n<p><a href=\"http:\/\/commons.apache.org\/\">http:\/\/commons.apache.org\/<\/a><\/p>\n<p><a href=\"https:\/\/code.google.com\/p\/guava-libraries\/\">https:\/\/code.google.com\/p\/guava-libraries\/<\/a><\/p>\n<p><a href=\"http:\/\/netty.io\/\">http:\/\/netty.io\/<\/a><\/p>\n<p><a href=\"http:\/\/stackoverflow.com\/questions\/2954372\/difference-between-spi-and-api\">http:\/\/stackoverflow.com\/questions\/2954372\/difference-between-spi-and-api<\/a><\/p>\n<p><a href=\"http:\/\/stackoverflow.com\/questions\/11404230\/how-to-implement-the-api-spi-pattern-in-java\">http:\/\/stackoverflow.com\/questions\/11404230\/how-to-implement-the-api-spi-pattern-in-java<\/a><\/p><\/blockquote>\n<h3>1.3. Java\u5e76\u53d1\u7f16\u7a0b<\/h3>\n<h4>1.3.1. \u9605\u8bfb\u6e90\u4ee3\u7801\uff0c\u5e76\u5b66\u4f1a\u4f7f\u7528<\/h4>\n<blockquote><p><code>java.lang.Thread<\/code> <code>java.lang.Runnable<\/code> <code>java.util.concurrent.Callable<\/code><code>java.util.concurrent.locks.ReentrantLock<\/code><code>java.util.concurrent.locks.ReentrantReadWriteLock<\/code><code>java.util.concurrent.atomic.Atomic*<\/code> <code>java.util.concurrent.Semaphore<\/code><code>java.util.concurrent.CountDownLatch<\/code> <code>java.util.concurrent.CyclicBarrier<\/code><code>java.util.concurrent.ConcurrentHashMap<\/code> <code>java.util.concurrent.Executors<\/code><\/p><\/blockquote>\n<h4>1.3.2. \u5b66\u4e60\u4f7f\u7528\u7ebf\u7a0b\u6c60\uff0c\u81ea\u5df1\u8bbe\u8ba1\u7ebf\u7a0b\u6c60\u9700\u8981\u6ce8\u610f\u4ec0\u4e48<\/h4>\n<h4>1.3.3. \u9501<\/h4>\n<blockquote><p>\u4ec0\u4e48\u662f\u9501\uff0c\u9501\u7684\u79cd\u7c7b\u6709\u54ea\u4e9b\uff0c\u6bcf\u79cd\u9501\u6709\u4ec0\u4e48\u7279\u70b9\uff0c\u9002\u7528\u573a\u666f\u662f\u4ec0\u4e48 \u5728\u5e76\u53d1\u7f16\u7a0b\u4e2d\u9501\u7684\u610f\u4e49\u662f\u4ec0\u4e48<\/p><\/blockquote>\n<h4>1.3.4. synchronized\u7684\u4f5c\u7528\u662f\u4ec0\u4e48\uff0csynchronized\u548clock<\/h4>\n<h4>1.3.5. sleep\u548cwait<\/h4>\n<h4>1.3.6. wait\u548cnotify<\/h4>\n<h4>1.3.7. \u5199\u4e00\u4e2a\u6b7b\u9501\u7684\u7a0b\u5e8f<\/h4>\n<h4>1.3.8. \u4ec0\u4e48\u662f\u5b88\u62a4\u7ebf\u7a0b\uff0c\u5b88\u62a4\u7ebf\u7a0b\u548c\u975e\u5b88\u62a4\u7ebf\u7a0b\u7684\u533a\u522b\u4ee5\u53ca\u7528\u6cd5<\/h4>\n<h4>1.3.9. volatile\u5173\u952e\u5b57\u7684\u7406\u89e3<\/h4>\n<blockquote><p>C++ volatile\u5173\u952e\u5b57\u548cJava volatile\u5173\u952e\u5b57 happens-before\u8bed\u4e49 \u7f16\u8bd1\u5668\u6307\u4ee4\u91cd\u6392\u548cCPU\u6307\u4ee4\u91cd\u6392<\/p>\n<p><a href=\"http:\/\/en.wikipedia.org\/wiki\/Memory_ordering\">http:\/\/en.wikipedia.org\/wiki\/Memory_ordering<\/a><\/p>\n<p><a href=\"http:\/\/en.wikipedia.org\/wiki\/Volatile_variable\">http:\/\/en.wikipedia.org\/wiki\/Volatile_variable<\/a><\/p>\n<p><a href=\"http:\/\/preshing.com\/20130702\/the-happens-before-relation\/\">http:\/\/preshing.com\/20130702\/the-happens-before-relation\/<\/a><\/p><\/blockquote>\n<h4>1.3.10. \u4ee5\u4e0b\u4ee3\u7801\u662f\u4e0d\u662f\u7ebf\u7a0b\u5b89\u5168\uff1f\u4e3a\u4ec0\u4e48\uff1f\u5982\u679c\u4e3acount\u52a0\u4e0avolatile\u4fee\u9970\u662f\u5426\u80fd\u591f\u505a\u5230\u7ebf\u7a0b\u5b89\u5168\uff1f\u4f60\u89c9\u5f97\u8be5\u600e\u4e48\u505a\u662f\u7ebf\u7a0b\u5b89\u5168\u7684\uff1f<\/h4>\n<pre class=\"prettyprint prettyprinted\"><code><span class=\"kwd\"><span class=\"kwd\">public<\/span><\/span> <span class=\"kwd\"><span class=\"kwd\">class<\/span><\/span> <span class=\"typ\"><span class=\"typ\">Sample<\/span><\/span> <span class=\"pun\"><span class=\"pun\">{<\/span><\/span>\r\n  <span class=\"kwd\"><span class=\"kwd\">private<\/span><\/span> <span class=\"kwd\"><span class=\"kwd\">static<\/span><\/span> <span class=\"kwd\"><span class=\"kwd\">int<\/span><\/span><span class=\"pln\"><span class=\"pln\"> count <\/span><\/span><span class=\"pun\"><span class=\"pun\">=<\/span><\/span> <span class=\"lit\"><span class=\"lit\">0<\/span><\/span><span class=\"pun\"><span class=\"pun\">;<\/span><\/span>\r\n  <span class=\"kwd\"><span class=\"kwd\">public<\/span><\/span> <span class=\"kwd\"><span class=\"kwd\">static<\/span><\/span> <span class=\"kwd\"><span class=\"kwd\">void<\/span><\/span><span class=\"pln\"><span class=\"pln\"> increment<\/span><\/span><span class=\"pun\"><span class=\"pun\">()<\/span><\/span> <span class=\"pun\"><span class=\"pun\">{<\/span><\/span><span class=\"pln\"><span class=\"pln\">\r\n    count<\/span><\/span><span class=\"pun\"><span class=\"pun\">++;<\/span><\/span>\r\n  <span class=\"pun\"><span class=\"pun\">}<\/span><\/span>\r\n<span class=\"pun\"><span class=\"pun\">}<\/span><\/span><\/code><\/pre>\n<h4>1.3.11. \u89e3\u91ca\u4e00\u4e0b\u4e0b\u9762\u4e24\u6bb5\u4ee3\u7801\u7684\u5dee\u522b<\/h4>\n<pre class=\"prettyprint prettyprinted\"><code><span class=\"com\"><span class=\"com\">\/\/ \u4ee3\u78011<\/span><\/span>\r\n<span class=\"kwd\"><span class=\"kwd\">public<\/span><\/span> <span class=\"kwd\"><span class=\"kwd\">class<\/span><\/span> <span class=\"typ\"><span class=\"typ\">Sample<\/span><\/span> <span class=\"pun\"><span class=\"pun\">{<\/span><\/span>\r\n  <span class=\"kwd\"><span class=\"kwd\">private<\/span><\/span> <span class=\"kwd\"><span class=\"kwd\">static<\/span><\/span> <span class=\"kwd\"><span class=\"kwd\">int<\/span><\/span><span class=\"pln\"><span class=\"pln\"> count <\/span><\/span><span class=\"pun\"><span class=\"pun\">=<\/span><\/span> <span class=\"lit\"><span class=\"lit\">0<\/span><\/span><span class=\"pun\"><span class=\"pun\">;<\/span><\/span>\r\n  <span class=\"kwd\"><span class=\"kwd\">synchronized<\/span><\/span> <span class=\"kwd\"><span class=\"kwd\">public<\/span><\/span> <span class=\"kwd\"><span class=\"kwd\">static<\/span><\/span> <span class=\"kwd\"><span class=\"kwd\">void<\/span><\/span><span class=\"pln\"><span class=\"pln\"> increment<\/span><\/span><span class=\"pun\"><span class=\"pun\">()<\/span><\/span> <span class=\"pun\"><span class=\"pun\">{<\/span><\/span><span class=\"pln\"><span class=\"pln\">\r\n    count<\/span><\/span><span class=\"pun\"><span class=\"pun\">++;<\/span><\/span>\r\n  <span class=\"pun\"><span class=\"pun\">}<\/span><\/span>\r\n<span class=\"pun\"><span class=\"pun\">}<\/span><\/span>\r\n\r\n<span class=\"com\"><span class=\"com\">\/\/ \u4ee3\u78012<\/span><\/span>\r\n<span class=\"kwd\"><span class=\"kwd\">public<\/span><\/span> <span class=\"kwd\"><span class=\"kwd\">class<\/span><\/span> <span class=\"typ\"><span class=\"typ\">Sample<\/span><\/span> <span class=\"pun\"><span class=\"pun\">{<\/span><\/span>\r\n  <span class=\"kwd\"><span class=\"kwd\">private<\/span><\/span> <span class=\"kwd\"><span class=\"kwd\">static<\/span><\/span> <span class=\"typ\"><span class=\"typ\">AtomicInteger<\/span><\/span><span class=\"pln\"><span class=\"pln\"> count <\/span><\/span><span class=\"pun\"><span class=\"pun\">=<\/span><\/span> <span class=\"kwd\"><span class=\"kwd\">new<\/span><\/span> <span class=\"typ\"><span class=\"typ\">AtomicInteger<\/span><\/span><span class=\"pun\"><span class=\"pun\">(<\/span><\/span><span class=\"lit\"><span class=\"lit\">0<\/span><\/span><span class=\"pun\"><span class=\"pun\">);<\/span><\/span>\r\n  <span class=\"kwd\"><span class=\"kwd\">public<\/span><\/span> <span class=\"kwd\"><span class=\"kwd\">static<\/span><\/span> <span class=\"kwd\"><span class=\"kwd\">void<\/span><\/span><span class=\"pln\"><span class=\"pln\"> increment<\/span><\/span><span class=\"pun\"><span class=\"pun\">()<\/span><\/span> <span class=\"pun\"><span class=\"pun\">{<\/span><\/span><span class=\"pln\"><span class=\"pln\">\r\n    count<\/span><\/span><span class=\"pun\"><span class=\"pun\">.<\/span><\/span><span class=\"pln\"><span class=\"pln\">getAndIncrement<\/span><\/span><span class=\"pun\"><span class=\"pun\">();<\/span><\/span>\r\n  <span class=\"pun\"><span class=\"pun\">}<\/span><\/span>\r\n<span class=\"pun\"><span class=\"pun\">}<\/span><\/span><\/code><\/pre>\n<h4>1.3.12. \u53c2\u8003\u8d44\u6599<\/h4>\n<blockquote><p><a href=\"http:\/\/book.douban.com\/subject\/10484692\/\">http:\/\/book.douban.com\/subject\/10484692\/<\/a><\/p>\n<p><a href=\"http:\/\/www.intel.com\/content\/www\/us\/en\/processors\/architectures-software-developer-manuals.html\">http:\/\/www.intel.com\/content\/www\/us\/en\/processors\/architectures-software-developer-manuals.html<\/a><\/p><\/blockquote>\n<h2>\u4e8c\u3001 \u8fdb\u9636\u7bc7<\/h2>\n<h3>2.1. Java\u5e95\u5c42\u77e5\u8bc6<\/h3>\n<h4>2.1.1. \u5b66\u4e60\u4e86\u89e3\u5b57\u8282\u7801\u3001class\u6587\u4ef6\u683c\u5f0f<\/h4>\n<blockquote><p><a href=\"http:\/\/en.wikipedia.org\/wiki\/Java_class_file\">http:\/\/en.wikipedia.org\/wiki\/Java_class_file<\/a><\/p>\n<p><a href=\"http:\/\/en.wikipedia.org\/wiki\/Java_bytecode\">http:\/\/en.wikipedia.org\/wiki\/Java_bytecode<\/a><\/p>\n<p><a href=\"http:\/\/en.wikipedia.org\/wiki\/Java_bytecode_instruction_listings\">http:\/\/en.wikipedia.org\/wiki\/Java_bytecode_instruction_listings<\/a><\/p>\n<p><a href=\"http:\/\/www.csg.ci.i.u-tokyo.ac.jp\/~chiba\/javassist\/\">http:\/\/www.csg.ci.i.u-tokyo.ac.jp\/~chiba\/javassist\/<\/a><\/p>\n<p><a href=\"http:\/\/asm.ow2.org\/\">http:\/\/asm.ow2.org\/<\/a><\/p><\/blockquote>\n<h4>2.1.2. \u5199\u4e00\u4e2a\u7a0b\u5e8f\u8981\u6c42\u5b9e\u73b0javap\u7684\u529f\u80fd\uff08\u624b\u5de5\u5b8c\u6210\uff0c\u4e0d\u501f\u52a9ASM\u7b49\u5de5\u5177\uff09<\/h4>\n<p>\u5982Java\u6e90\u4ee3\u7801\uff1a<\/p>\n<pre class=\"prettyprint prettyprinted\"><code>  <span class=\"kwd\"><span class=\"kwd\">public<\/span><\/span> <span class=\"kwd\"><span class=\"kwd\">static<\/span><\/span> <span class=\"kwd\"><span class=\"kwd\">void<\/span><\/span><span class=\"pln\"><span class=\"pln\"> main<\/span><\/span><span class=\"pun\"><span class=\"pun\">(<\/span><\/span><span class=\"typ\"><span class=\"typ\">String<\/span><\/span><span class=\"pun\"><span class=\"pun\">[]<\/span><\/span><span class=\"pln\"><span class=\"pln\"> args<\/span><\/span><span class=\"pun\"><span class=\"pun\">)<\/span><\/span> <span class=\"pun\"><span class=\"pun\">{<\/span><\/span>\r\n    <span class=\"kwd\"><span class=\"kwd\">int<\/span><\/span><span class=\"pln\"><span class=\"pln\"> i <\/span><\/span><span class=\"pun\"><span class=\"pun\">=<\/span><\/span> <span class=\"lit\"><span class=\"lit\">0<\/span><\/span><span class=\"pun\"><span class=\"pun\">;<\/span><\/span><span class=\"pln\"><span class=\"pln\">\r\n    i <\/span><\/span><span class=\"pun\"><span class=\"pun\">+=<\/span><\/span> <span class=\"lit\"><span class=\"lit\">1<\/span><\/span><span class=\"pun\"><span class=\"pun\">;<\/span><\/span><span class=\"pln\"><span class=\"pln\">\r\n    i <\/span><\/span><span class=\"pun\"><span class=\"pun\">*=<\/span><\/span> <span class=\"lit\"><span class=\"lit\">1<\/span><\/span><span class=\"pun\"><span class=\"pun\">;<\/span><\/span>\r\n    <span class=\"typ\"><span class=\"typ\">System<\/span><\/span><span class=\"pun\"><span class=\"pun\">.<\/span><\/span><span class=\"kwd\"><span class=\"kwd\">out<\/span><\/span><span class=\"pun\"><span class=\"pun\">.<\/span><\/span><span class=\"pln\"><span class=\"pln\">println<\/span><\/span><span class=\"pun\"><span class=\"pun\">(<\/span><\/span><span class=\"pln\"><span class=\"pln\">i<\/span><\/span><span class=\"pun\"><span class=\"pun\">);<\/span><\/span>\r\n  <span class=\"pun\"><span class=\"pun\">}<\/span><\/span><\/code><\/pre>\n<p>\u7f16\u8bd1\u540e\u8bfb\u53d6class\u6587\u4ef6\u8f93\u51fa\u4ee5\u4e0b\u4ee3\u7801\uff1a<\/p>\n<pre class=\"prettyprint prettyprinted\"><code><span class=\"kwd\"><span class=\"kwd\">public<\/span><\/span> <span class=\"kwd\"><span class=\"kwd\">static<\/span><\/span> <span class=\"kwd\"><span class=\"kwd\">void<\/span><\/span><span class=\"pln\"><span class=\"pln\"> main<\/span><\/span><span class=\"pun\"><span class=\"pun\">(<\/span><\/span><span class=\"pln\"><span class=\"pln\">java<\/span><\/span><span class=\"pun\"><span class=\"pun\">.<\/span><\/span><span class=\"pln\"><span class=\"pln\">lang<\/span><\/span><span class=\"pun\"><span class=\"pun\">.<\/span><\/span><span class=\"typ\"><span class=\"typ\">String<\/span><\/span><span class=\"pun\"><span class=\"pun\">[]);<\/span><\/span>\r\n  <span class=\"typ\"><span class=\"typ\">Code<\/span><\/span><span class=\"pun\"><span class=\"pun\">:<\/span><\/span>\r\n   <span class=\"typ\"><span class=\"typ\">Stack<\/span><\/span><span class=\"pun\"><span class=\"pun\">=<\/span><\/span><span class=\"lit\"><span class=\"lit\">2<\/span><\/span><span class=\"pun\"><span class=\"pun\">,<\/span><\/span> <span class=\"typ\"><span class=\"typ\">Locals<\/span><\/span><span class=\"pun\"><span class=\"pun\">=<\/span><\/span><span class=\"lit\"><span class=\"lit\">2<\/span><\/span><span class=\"pun\"><span class=\"pun\">,<\/span><\/span> <span class=\"typ\"><span class=\"typ\">Args_size<\/span><\/span><span class=\"pun\"><span class=\"pun\">=<\/span><\/span><span class=\"lit\"><span class=\"lit\">1<\/span><\/span>\r\n   <span class=\"lit\"><span class=\"lit\">0<\/span><\/span><span class=\"pun\"><span class=\"pun\">:<\/span><\/span><span class=\"pln\"><span class=\"pln\">   iconst_0\r\n   <\/span><\/span><span class=\"lit\"><span class=\"lit\">1<\/span><\/span><span class=\"pun\"><span class=\"pun\">:<\/span><\/span><span class=\"pln\"><span class=\"pln\">   istore_1\r\n   <\/span><\/span><span class=\"lit\"><span class=\"lit\">2<\/span><\/span><span class=\"pun\"><span class=\"pun\">:<\/span><\/span><span class=\"pln\"><span class=\"pln\">   iinc    <\/span><\/span><span class=\"lit\"><span class=\"lit\">1<\/span><\/span><span class=\"pun\"><span class=\"pun\">,<\/span><\/span> <span class=\"lit\"><span class=\"lit\">1<\/span><\/span>\r\n   <span class=\"lit\"><span class=\"lit\">5<\/span><\/span><span class=\"pun\"><span class=\"pun\">:<\/span><\/span><span class=\"pln\"><span class=\"pln\">   iload_1\r\n   <\/span><\/span><span class=\"lit\"><span class=\"lit\">6<\/span><\/span><span class=\"pun\"><span class=\"pun\">:<\/span><\/span><span class=\"pln\"><span class=\"pln\">   iconst_1\r\n   <\/span><\/span><span class=\"lit\"><span class=\"lit\">7<\/span><\/span><span class=\"pun\"><span class=\"pun\">:<\/span><\/span><span class=\"pln\"><span class=\"pln\">   imul\r\n   <\/span><\/span><span class=\"lit\"><span class=\"lit\">8<\/span><\/span><span class=\"pun\"><span class=\"pun\">:<\/span><\/span><span class=\"pln\"><span class=\"pln\">   istore_1\r\n   <\/span><\/span><span class=\"lit\"><span class=\"lit\">9<\/span><\/span><span class=\"pun\"><span class=\"pun\">:<\/span><\/span><span class=\"pln\"><span class=\"pln\">   getstatic       <\/span><\/span><span class=\"com\"><span class=\"com\">#2; \/\/Field java\/lang\/System.out:Ljava\/io\/PrintStream;<\/span><\/span>\r\n   <span class=\"lit\"><span class=\"lit\">12<\/span><\/span><span class=\"pun\"><span class=\"pun\">:<\/span><\/span><span class=\"pln\"><span class=\"pln\">  iload_1\r\n   <\/span><\/span><span class=\"lit\"><span class=\"lit\">13<\/span><\/span><span class=\"pun\"><span class=\"pun\">:<\/span><\/span><span class=\"pln\"><span class=\"pln\">  invokevirtual   <\/span><\/span><span class=\"com\"><span class=\"com\">#3; \/\/Method java\/io\/PrintStream.println:(I)V<\/span><\/span>\r\n   <span class=\"lit\"><span class=\"lit\">16<\/span><\/span><span class=\"pun\"><span class=\"pun\">:<\/span><\/span>  <span class=\"kwd\"><span class=\"kwd\">return<\/span><\/span>\r\n  <span class=\"typ\"><span class=\"typ\">LineNumberTable<\/span><\/span><span class=\"pun\"><span class=\"pun\">:<\/span><\/span><span class=\"pln\"><span class=\"pln\"> \r\n   line <\/span><\/span><span class=\"lit\"><span class=\"lit\">4<\/span><\/span><span class=\"pun\"><span class=\"pun\">:<\/span><\/span> <span class=\"lit\"><span class=\"lit\">0<\/span><\/span><span class=\"pln\"><span class=\"pln\">\r\n   line <\/span><\/span><span class=\"lit\"><span class=\"lit\">5<\/span><\/span><span class=\"pun\"><span class=\"pun\">:<\/span><\/span> <span class=\"lit\"><span class=\"lit\">2<\/span><\/span><span class=\"pln\"><span class=\"pln\">\r\n   line <\/span><\/span><span class=\"lit\"><span class=\"lit\">6<\/span><\/span><span class=\"pun\"><span class=\"pun\">:<\/span><\/span> <span class=\"lit\"><span class=\"lit\">5<\/span><\/span><span class=\"pln\"><span class=\"pln\">\r\n   line <\/span><\/span><span class=\"lit\"><span class=\"lit\">7<\/span><\/span><span class=\"pun\"><span class=\"pun\">:<\/span><\/span> <span class=\"lit\"><span class=\"lit\">9<\/span><\/span><span class=\"pln\"><span class=\"pln\">\r\n   line <\/span><\/span><span class=\"lit\"><span class=\"lit\">8<\/span><\/span><span class=\"pun\"><span class=\"pun\">:<\/span><\/span> <span class=\"lit\"><span class=\"lit\">16<\/span><\/span><\/code><\/pre>\n<h4>2.1.3. CPU\u7f13\u5b58\uff0cL1\uff0cL2\uff0cL3\u548c\u4f2a\u5171\u4eab<\/h4>\n<blockquote><p><a href=\"http:\/\/duartes.org\/gustavo\/blog\/post\/intel-cpu-caches\/\">http:\/\/duartes.org\/gustavo\/blog\/post\/intel-cpu-caches\/<\/a><\/p>\n<p><a href=\"http:\/\/mechanical-sympathy.blogspot.com\/2011\/07\/false-sharing.html\">http:\/\/mechanical-sympathy.blogspot.com\/2011\/07\/false-sharing.html<\/a><\/p><\/blockquote>\n<h4>2.1.4. \u4ec0\u4e48\u662f\u5c3e\u9012\u5f52<\/h4>\n<h4>2.1.5. \u719f\u6089\u4f4d\u8fd0\u7b97<\/h4>\n<blockquote><p>\u7528\u4f4d\u8fd0\u7b97\u5b9e\u73b0\u52a0\u3001\u51cf\u3001\u4e58\u3001\u9664\u3001\u53d6\u4f59<\/p><\/blockquote>\n<h4>2.1.6. \u53c2\u8003\u8d44\u6599<\/h4>\n<blockquote><p><a href=\"http:\/\/book.douban.com\/subject\/1138768\/\">http:\/\/book.douban.com\/subject\/1138768\/<\/a><\/p>\n<p><a href=\"http:\/\/book.douban.com\/subject\/6522893\/\">http:\/\/book.douban.com\/subject\/6522893\/<\/a><\/p>\n<p><a href=\"http:\/\/en.wikipedia.org\/wiki\/Java_class_file\">http:\/\/en.wikipedia.org\/wiki\/Java_class_file<\/a><\/p>\n<p><a href=\"http:\/\/en.wikipedia.org\/wiki\/Java_bytecode\">http:\/\/en.wikipedia.org\/wiki\/Java_bytecode<\/a><\/p>\n<p><a href=\"http:\/\/en.wikipedia.org\/wiki\/Java_bytecode_instruction_listings\">http:\/\/en.wikipedia.org\/wiki\/Java_bytecode_instruction_listings<\/a><\/p><\/blockquote>\n<h3>2.2. \u8bbe\u8ba1\u6a21\u5f0f<\/h3>\n<h4>2.2.1. \u5b9e\u73b0AOP<\/h4>\n<blockquote><p>CGLIB\u548cInvocationHandler\u7684\u533a\u522b <a href=\"http:\/\/cglib.sourceforge.net\/\">http:\/\/cglib.sourceforge.net\/<\/a><\/p>\n<p>\u52a8\u6001\u4ee3\u7406\u6a21\u5f0f Javassist\u5b9e\u73b0AOP <a href=\"http:\/\/www.csg.ci.i.u-tokyo.ac.jp\/~chiba\/javassist\/\">http:\/\/www.csg.ci.i.u-tokyo.ac.jp\/~chiba\/javassist\/<\/a><\/p>\n<p>ASM\u5b9e\u73b0AOP <a href=\"http:\/\/asm.ow2.org\/\">http:\/\/asm.ow2.org\/<\/a><\/p><\/blockquote>\n<h4>2.2.2. \u4f7f\u7528\u6a21\u677f\u65b9\u6cd5\u8bbe\u8ba1\u6a21\u5f0f\u548c\u7b56\u7565\u8bbe\u8ba1\u6a21\u5f0f\u5b9e\u73b0IOC<\/h4>\n<h4>2.2.3. \u4e0d\u7528synchronized\u548clock\uff0c\u5b9e\u73b0\u7ebf\u7a0b\u5b89\u5168\u7684\u5355\u4f8b\u6a21\u5f0f<\/h4>\n<h4>2.2.4. nio\u548creactor\u8bbe\u8ba1\u6a21\u5f0f<\/h4>\n<h4>2.2.5. \u53c2\u8003\u8d44\u6599<\/h4>\n<blockquote><p><a href=\"http:\/\/asm.ow2.org\/\">http:\/\/asm.ow2.org\/<\/a><\/p>\n<p><a href=\"http:\/\/cglib.sourceforge.net\/\">http:\/\/cglib.sourceforge.net\/<\/a><\/p>\n<p><a href=\"http:\/\/www.javassist.org\/\">http:\/\/www.javassist.org\/<\/a><\/p><\/blockquote>\n<h3>2.3. \u7f51\u7edc\u7f16\u7a0b\u77e5\u8bc6<\/h3>\n<h4>2.3.1. Java RMI\uff0cSocket\uff0cHttpClient<\/h4>\n<h4>2.3.2. \u7528Java\u5199\u4e00\u4e2a\u7b80\u5355\u7684\u9759\u6001\u6587\u4ef6\u7684HTTP\u670d\u52a1\u5668<\/h4>\n<blockquote><p>\u5b9e\u73b0\u5ba2\u6237\u7aef\u7f13\u5b58\u529f\u80fd\uff0c\u652f\u6301\u8fd4\u56de304 \u5b9e\u73b0\u53ef\u5e76\u53d1\u4e0b\u8f7d\u4e00\u4e2a\u6587\u4ef6 \u4f7f\u7528\u7ebf\u7a0b\u6c60\u5904\u7406\u5ba2\u6237\u7aef\u8bf7\u6c42 \u4f7f\u7528nio\u5904\u7406\u5ba2\u6237\u7aef\u8bf7\u6c42 \u652f\u6301\u7b80\u5355\u7684rewrite\u89c4\u5219 \u4e0a\u8ff0\u529f\u80fd\u5728\u5b9e\u73b0\u7684\u65f6\u5019\u9700\u8981\u6ee1\u8db3\u201c\u5f00\u95ed\u539f\u5219\u201d<\/p><\/blockquote>\n<h4>2.3.3. \u4e86\u89e3nginx\u548capache\u670d\u52a1\u5668\u7684\u7279\u6027\u5e76\u642d\u5efa\u4e00\u4e2a\u5bf9\u5e94\u7684\u670d\u52a1\u5668<\/h4>\n<blockquote><p><a href=\"http:\/\/nginx.org\/\">http:\/\/nginx.org\/<\/a><\/p>\n<p><a href=\"http:\/\/httpd.apache.org\/\">http:\/\/httpd.apache.org\/<\/a><\/p><\/blockquote>\n<h4>2.3.4. \u7528Java\u5b9e\u73b0FTP\u3001SMTP\u534f\u8bae<\/h4>\n<h4>2.3.5. \u4ec0\u4e48\u662fCDN\uff1f\u5982\u679c\u5b9e\u73b0\uff1fDNS\u8d77\u5230\u4ec0\u4e48\u4f5c\u7528\uff1f<\/h4>\n<blockquote><p>\u642d\u5efa\u4e00\u4e2aDNS\u670d\u52a1\u5668 \u642d\u5efa\u4e00\u4e2a Squid \u6216 Apache Traffic Server \u670d\u52a1\u5668 <a href=\"http:\/\/www.squid-cache.org\/\">http:\/\/www.squid-cache.org\/<\/a> <a href=\"http:\/\/trafficserver.apache.org\/\">http:\/\/trafficserver.apache.org\/<\/a><a href=\"http:\/\/en.wikipedia.org\/wiki\/Domain_Name_System\">http:\/\/en.wikipedia.org\/wiki\/Domain_Name_System<\/a><\/p><\/blockquote>\n<h4>2.3.6. \u53c2\u8003\u8d44\u6599<\/h4>\n<blockquote><p><a href=\"http:\/\/www.ietf.org\/rfc\/rfc2616.txt\">http:\/\/www.ietf.org\/rfc\/rfc2616.txt<\/a><\/p>\n<p><a href=\"http:\/\/tools.ietf.org\/rfc\/rfc5321.txt\">http:\/\/tools.ietf.org\/rfc\/rfc5321.txt<\/a><\/p>\n<p><a href=\"http:\/\/en.wikipedia.org\/wiki\/Open\/closed_principle\">http:\/\/en.wikipedia.org\/wiki\/Open\/closed_principle<\/a><\/p><\/blockquote>\n<h3>2.4. \u6846\u67b6\u77e5\u8bc6<\/h3>\n<blockquote><p>spring\uff0cspring mvc\uff0c\u9605\u8bfb\u4e3b\u8981\u6e90\u7801 ibatis\uff0c\u9605\u8bfb\u4e3b\u8981\u6e90\u7801 \u7528spring\u548cibatis\u642d\u5efajava server<\/p><\/blockquote>\n<h3>2.5. \u5e94\u7528\u670d\u52a1\u5668\u77e5\u8bc6<\/h3>\n<blockquote><p>\u719f\u6089\u4f7f\u7528jboss\uff0c<a href=\"https:\/\/www.jboss.org\/overview\/\">https:\/\/www.jboss.org\/overview\/ <\/a>\u719f\u6089\u4f7f\u7528tomcat\uff0c<a href=\"http:\/\/tomcat.apache.org\/\">http:\/\/tomcat.apache.org\/ <\/a>\u719f\u6089\u4f7f\u7528jetty\uff0c<a href=\"http:\/\/www.eclipse.org\/jetty\/\">http:\/\/www.eclipse.org\/jetty\/<\/a><\/p><\/blockquote>\n<h2>\u4e09\u3001 \u9ad8\u7ea7\u7bc7<\/h2>\n<h3>3.1. \u7f16\u8bd1\u539f\u7406\u77e5\u8bc6<\/h3>\n<h4>3.1.1. \u7528Java\u5b9e\u73b0\u4ee5\u4e0b\u8868\u8fbe\u5f0f\u89e3\u6790\u5e76\u8fd4\u56de\u7ed3\u679c\uff08\u8bed\u6cd5\u548cOracle\u4e2d\u7684select sysdate-1 from dual\u7c7b\u4f3c\uff09<\/h4>\n<pre class=\"prettyprint prettyprinted\"><code><span class=\"pln\"><span class=\"pln\"> sysdate\r\n sysdate <\/span><\/span><span class=\"pun\"><span class=\"pun\">-<\/span><\/span> <span class=\"lit\"><span class=\"lit\">1<\/span><\/span><span class=\"pln\"><span class=\"pln\">\r\n sysdate <\/span><\/span><span class=\"pun\"><span class=\"pun\">-<\/span><\/span> <span class=\"lit\"><span class=\"lit\">1<\/span><\/span><span class=\"pun\"><span class=\"pun\">\/<\/span><\/span><span class=\"lit\"><span class=\"lit\">24<\/span><\/span><span class=\"pln\"><span class=\"pln\">\r\n sysdate <\/span><\/span><span class=\"pun\"><span class=\"pun\">-<\/span><\/span> <span class=\"lit\"><span class=\"lit\">1<\/span><\/span><span class=\"pun\"><span class=\"pun\">\/(<\/span><\/span><span class=\"lit\"><span class=\"lit\">12<\/span><\/span><span class=\"pun\"><span class=\"pun\">*<\/span><\/span><span class=\"lit\"><span class=\"lit\">2<\/span><\/span><span class=\"pun\"><span class=\"pun\">)<\/span><\/span><\/code><\/pre>\n<h4>3.1.2. \u5b9e\u73b0\u5bf9\u4e00\u4e2aList\u901a\u8fc7DSL\u7b5b\u9009<\/h4>\n<pre class=\"prettyprint prettyprinted\"><code>  <span class=\"typ\"><span class=\"typ\">QList<\/span><\/span><span class=\"pun\"><span class=\"pun\">&lt;<\/span><\/span><span class=\"typ\"><span class=\"typ\">Map<\/span><\/span><span class=\"pun\"><span class=\"pun\">&lt;<\/span><\/span><span class=\"typ\"><span class=\"typ\">String<\/span><\/span><span class=\"pun\"><span class=\"pun\">,<\/span><\/span> <span class=\"typ\"><span class=\"typ\">Object<\/span><\/span><span class=\"pun\"><span class=\"pun\">&gt;&gt;<\/span><\/span><span class=\"pln\"><span class=\"pln\"> mapList <\/span><\/span><span class=\"pun\"><span class=\"pun\">=<\/span><\/span> <span class=\"kwd\"><span class=\"kwd\">new<\/span><\/span> <span class=\"typ\"><span class=\"typ\">QList<\/span><\/span><span class=\"pun\"><span class=\"pun\">&lt;<\/span><\/span><span class=\"typ\"><span class=\"typ\">Map<\/span><\/span><span class=\"pun\"><span class=\"pun\">&lt;<\/span><\/span><span class=\"typ\"><span class=\"typ\">String<\/span><\/span><span class=\"pun\"><span class=\"pun\">,<\/span><\/span> <span class=\"typ\"><span class=\"typ\">Object<\/span><\/span><span class=\"pun\"><span class=\"pun\">&gt;&gt;;<\/span><\/span><span class=\"pln\"><span class=\"pln\">\r\n  mapList<\/span><\/span><span class=\"pun\"><span class=\"pun\">.<\/span><\/span><span class=\"pln\"><span class=\"pln\">add<\/span><\/span><span class=\"pun\"><span class=\"pun\">({<\/span><\/span><span class=\"str\"><span class=\"str\">\"name\"<\/span><\/span><span class=\"pun\"><span class=\"pun\">:<\/span><\/span> <span class=\"str\"><span class=\"str\">\"hatter test\"<\/span><\/span><span class=\"pun\"><span class=\"pun\">});<\/span><\/span><span class=\"pln\"><span class=\"pln\">\r\n  mapList<\/span><\/span><span class=\"pun\"><span class=\"pun\">.<\/span><\/span><span class=\"pln\"><span class=\"pln\">add<\/span><\/span><span class=\"pun\"><span class=\"pun\">({<\/span><\/span><span class=\"str\"><span class=\"str\">\"id\"<\/span><\/span><span class=\"pun\"><span class=\"pun\">:<\/span><\/span> <span class=\"pun\"><span class=\"pun\">-<\/span><\/span><span class=\"lit\"><span class=\"lit\">1<\/span><\/span><span class=\"pun\"><span class=\"pun\">,<\/span><\/span><span class=\"str\"><span class=\"str\">\"name\"<\/span><\/span><span class=\"pun\"><span class=\"pun\">:<\/span><\/span> <span class=\"str\"><span class=\"str\">\"hatter test\"<\/span><\/span><span class=\"pun\"><span class=\"pun\">});<\/span><\/span><span class=\"pln\"><span class=\"pln\">\r\n  mapList<\/span><\/span><span class=\"pun\"><span class=\"pun\">.<\/span><\/span><span class=\"pln\"><span class=\"pln\">add<\/span><\/span><span class=\"pun\"><span class=\"pun\">({<\/span><\/span><span class=\"str\"><span class=\"str\">\"id\"<\/span><\/span><span class=\"pun\"><span class=\"pun\">:<\/span><\/span> <span class=\"lit\"><span class=\"lit\">0<\/span><\/span><span class=\"pun\"><span class=\"pun\">,<\/span><\/span> <span class=\"str\"><span class=\"str\">\"name\"<\/span><\/span><span class=\"pun\"><span class=\"pun\">:<\/span><\/span> <span class=\"str\"><span class=\"str\">\"hatter test\"<\/span><\/span><span class=\"pun\"><span class=\"pun\">});<\/span><\/span><span class=\"pln\"><span class=\"pln\">\r\n  mapList<\/span><\/span><span class=\"pun\"><span class=\"pun\">.<\/span><\/span><span class=\"pln\"><span class=\"pln\">add<\/span><\/span><span class=\"pun\"><span class=\"pun\">({<\/span><\/span><span class=\"str\"><span class=\"str\">\"id\"<\/span><\/span><span class=\"pun\"><span class=\"pun\">:<\/span><\/span> <span class=\"lit\"><span class=\"lit\">1<\/span><\/span><span class=\"pun\"><span class=\"pun\">,<\/span><\/span> <span class=\"str\"><span class=\"str\">\"name\"<\/span><\/span><span class=\"pun\"><span class=\"pun\">:<\/span><\/span> <span class=\"str\"><span class=\"str\">\"test test\"<\/span><\/span><span class=\"pun\"><span class=\"pun\">});<\/span><\/span><span class=\"pln\"><span class=\"pln\">\r\n  mapList<\/span><\/span><span class=\"pun\"><span class=\"pun\">.<\/span><\/span><span class=\"pln\"><span class=\"pln\">add<\/span><\/span><span class=\"pun\"><span class=\"pun\">({<\/span><\/span><span class=\"str\"><span class=\"str\">\"id\"<\/span><\/span><span class=\"pun\"><span class=\"pun\">:<\/span><\/span> <span class=\"lit\"><span class=\"lit\">2<\/span><\/span><span class=\"pun\"><span class=\"pun\">,<\/span><\/span> <span class=\"str\"><span class=\"str\">\"name\"<\/span><\/span><span class=\"pun\"><span class=\"pun\">:<\/span><\/span> <span class=\"str\"><span class=\"str\">\"hatter test\"<\/span><\/span><span class=\"pun\"><span class=\"pun\">});<\/span><\/span><span class=\"pln\"><span class=\"pln\">\r\n  mapList<\/span><\/span><span class=\"pun\"><span class=\"pun\">.<\/span><\/span><span class=\"pln\"><span class=\"pln\">add<\/span><\/span><span class=\"pun\"><span class=\"pun\">({<\/span><\/span><span class=\"str\"><span class=\"str\">\"id\"<\/span><\/span><span class=\"pun\"><span class=\"pun\">:<\/span><\/span> <span class=\"lit\"><span class=\"lit\">3<\/span><\/span><span class=\"pun\"><span class=\"pun\">,<\/span><\/span> <span class=\"str\"><span class=\"str\">\"name\"<\/span><\/span><span class=\"pun\"><span class=\"pun\">:<\/span><\/span> <span class=\"str\"><span class=\"str\">\"test hatter\"<\/span><\/span><span class=\"pun\"><span class=\"pun\">});<\/span><\/span><span class=\"pln\"><span class=\"pln\">\r\n  mapList<\/span><\/span><span class=\"pun\"><span class=\"pun\">.<\/span><\/span><span class=\"pln\"><span class=\"pln\">query<\/span><\/span><span class=\"pun\"><span class=\"pun\">(<\/span><\/span><span class=\"str\"><span class=\"str\">\"id is not null and id &gt; 0 and name like '%hatter%'\"<\/span><\/span><span class=\"pun\"><span class=\"pun\">);<\/span><\/span><\/code><\/pre>\n<p>\u8981\u6c42\u8fd4\u56de\u5217\u8868\u4e2d\u5339\u914d\u7684\u5bf9\u8c61\uff0c\u5373\u6700\u540e\u4e24\u4e2a\u5bf9\u8c61\uff1b<\/p>\n<h4>3.1.3. \u7528Java\u5b9e\u73b0\u4ee5\u4e0b\u7a0b\u5e8f\uff08\u8bed\u6cd5\u548c\u53d8\u91cf\u4f5c\u7528\u57df\u5904\u7406\u90fd\u548cJavaScript\u7c7b\u4f3c\uff09\uff1a<\/h4>\n<p>\u4ee3\u7801\uff1a<\/p>\n<pre class=\"prettyprint prettyprinted\"><code><span class=\"kwd\"><span class=\"kwd\">var<\/span><\/span><span class=\"pln\"><span class=\"pln\"> a <\/span><\/span><span class=\"pun\"><span class=\"pun\">=<\/span><\/span> <span class=\"lit\"><span class=\"lit\">1<\/span><\/span><span class=\"pun\"><span class=\"pun\">;<\/span><\/span>\r\n<span class=\"kwd\"><span class=\"kwd\">var<\/span><\/span><span class=\"pln\"><span class=\"pln\"> b <\/span><\/span><span class=\"pun\"><span class=\"pun\">=<\/span><\/span> <span class=\"lit\"><span class=\"lit\">2<\/span><\/span><span class=\"pun\"><span class=\"pun\">;<\/span><\/span>\r\n<span class=\"kwd\"><span class=\"kwd\">var<\/span><\/span><span class=\"pln\"><span class=\"pln\"> c <\/span><\/span><span class=\"pun\"><span class=\"pun\">=<\/span><\/span> <span class=\"kwd\"><span class=\"kwd\">function<\/span><\/span><span class=\"pun\"><span class=\"pun\">()<\/span><\/span> <span class=\"pun\"><span class=\"pun\">{<\/span><\/span>\r\n  <span class=\"kwd\"><span class=\"kwd\">var<\/span><\/span><span class=\"pln\"><span class=\"pln\"> a <\/span><\/span><span class=\"pun\"><span class=\"pun\">=<\/span><\/span> <span class=\"lit\"><span class=\"lit\">3<\/span><\/span><span class=\"pun\"><span class=\"pun\">;<\/span><\/span><span class=\"pln\"><span class=\"pln\">\r\n  println<\/span><\/span><span class=\"pun\"><span class=\"pun\">(<\/span><\/span><span class=\"pln\"><span class=\"pln\">a<\/span><\/span><span class=\"pun\"><span class=\"pun\">);<\/span><\/span><span class=\"pln\"><span class=\"pln\">\r\n  println<\/span><\/span><span class=\"pun\"><span class=\"pun\">(<\/span><\/span><span class=\"pln\"><span class=\"pln\">b<\/span><\/span><span class=\"pun\"><span class=\"pun\">);<\/span><\/span>\r\n<span class=\"pun\"><span class=\"pun\">};<\/span><\/span><span class=\"pln\"><span class=\"pln\">\r\nc<\/span><\/span><span class=\"pun\"><span class=\"pun\">();<\/span><\/span><span class=\"pln\"><span class=\"pln\">\r\nprintln<\/span><\/span><span class=\"pun\"><span class=\"pun\">(<\/span><\/span><span class=\"pln\"><span class=\"pln\">a<\/span><\/span><span class=\"pun\"><span class=\"pun\">);<\/span><\/span><span class=\"pln\"><span class=\"pln\">\r\nprintln<\/span><\/span><span class=\"pun\"><span class=\"pun\">(<\/span><\/span><span class=\"pln\"><span class=\"pln\">b<\/span><\/span><span class=\"pun\"><span class=\"pun\">);<\/span><\/span><\/code><\/pre>\n<p>\u8f93\u51fa\uff1a<\/p>\n<pre class=\"prettyprint prettyprinted\"><code><span class=\"lit\"><span class=\"lit\">3<\/span><\/span>\r\n<span class=\"lit\"><span class=\"lit\">2<\/span><\/span>\r\n<span class=\"lit\"><span class=\"lit\">1<\/span><\/span>\r\n<span class=\"lit\"><span class=\"lit\">2<\/span><\/span><\/code><\/pre>\n<h4>3.1.4. \u53c2\u8003\u8d44\u6599<\/h4>\n<blockquote><p>http:\/\/en.wikipedia.org\/wiki\/Abstract_syntax_tree https:\/\/javacc.java.net\/ http:\/\/www.antlr.org\/<\/p><\/blockquote>\n<h3>3.2. \u64cd\u4f5c\u7cfb\u7edf\u77e5\u8bc6<\/h3>\n<blockquote><p>Ubuntu Centos \u4f7f\u7528linux\uff0c\u719f\u6089shell\u811a\u672c<\/p><\/blockquote>\n<h3>3.3. \u6570\u636e\u5b58\u50a8\u77e5\u8bc6<\/h3>\n<h4>3.3.1. \u5173\u7cfb\u578b\u6570\u636e\u5e93<\/h4>\n<blockquote><p>MySQL \u5982\u4f55\u770b\u6267\u884c\u8ba1\u5212 \u5982\u4f55\u642d\u5efaMySQL\u4e3b\u5907 binlog\u662f\u4ec0\u4e48 Derby\uff0cH2\uff0cPostgreSQL SQLite<\/p><\/blockquote>\n<h3>3.3.2. NoSQL<\/h3>\n<blockquote><p>Cache Redis Memcached Leveldb Bigtable HBase Cassandra Mongodb \u56fe\u6570\u636e\u5e93 neo4j<\/p><\/blockquote>\n<h3>3.3.3. \u53c2\u8003\u8d44\u6599<\/h3>\n<blockquote><p><a href=\"http:\/\/db-engines.com\/en\/ranking\">http:\/\/db-engines.com\/en\/ranking<\/a><\/p>\n<p><a href=\"http:\/\/redis.io\/\">http:\/\/redis.io\/<\/a><\/p>\n<p><a href=\"https:\/\/code.google.com\/p\/leveldb\/\">https:\/\/code.google.com\/p\/leveldb\/<\/a><\/p>\n<p><a href=\"http:\/\/hbase.apache.org\/\">http:\/\/hbase.apache.org\/<\/a><\/p>\n<p><a href=\"http:\/\/cassandra.apache.org\/\">http:\/\/cassandra.apache.org\/<\/a><\/p>\n<p><a href=\"http:\/\/www.mongodb.org\/\">http:\/\/www.mongodb.org\/<\/a><\/p>\n<p><a href=\"http:\/\/www.mongodb.org\/\">http:\/\/www.neo4j.org\/<\/a><\/p><\/blockquote>\n<h3>3.4. \u5927\u6570\u636e\u77e5\u8bc6<\/h3>\n<h4>3.4.1. Zookeeper\uff0c\u5728linux\u4e0a\u90e8\u7f72zk<\/h4>\n<h4>3.4.2. Solr\uff0cLucene\uff0cElasticSearch<\/h4>\n<blockquote><p>\u5728linux\u4e0a\u90e8\u7f72solr\uff0csolrcloud\uff0c\uff0c\u65b0\u589e\u3001\u5220\u9664\u3001\u67e5\u8be2\u7d22\u5f15<\/p><\/blockquote>\n<h4>3.4.3. Storm\uff0c\u6d41\u5f0f\u8ba1\u7b97\uff0c\u4e86\u89e3Spark\uff0cS4<\/h4>\n<blockquote><p>\u5728linux\u4e0a\u90e8\u7f72storm\uff0c\u7528zookeeper\u505a\u534f\u8c03\uff0c\u8fd0\u884cstorm hello world\uff0clocal\u548cremote\u6a21\u5f0f\u8fd0\u884c\u8c03\u8bd5storm topology\u3002<\/p><\/blockquote>\n<h4>3.4.4. Hadoop\uff0c\u79bb\u7ebf\u8ba1\u7b97<\/h4>\n<blockquote><p>Hdfs\uff1a\u90e8\u7f72NameNode\uff0cSecondaryNameNode\uff0cDataNode\uff0c\u4e0a\u4f20\u6587\u4ef6\u3001\u6253\u5f00\u6587\u4ef6\u3001\u66f4\u6539\u6587\u4ef6\u3001\u5220\u9664\u6587\u4ef6<\/p>\n<p>MapReduce\uff1a\u90e8\u7f72JobTracker\uff0cTaskTracker\uff0c\u7f16\u5199mr job<\/p>\n<p>Hive\uff1a\u90e8\u7f72hive\uff0c\u4e66\u5199hive sql\uff0c\u5f97\u5230\u7ed3\u679c<\/p>\n<p>Presto\uff1a\u7c7bhive\uff0c\u4e0d\u8fc7\u6bd4hive\u5feb\uff0c\u975e\u5e38\u503c\u5f97\u5b66\u4e60<\/p><\/blockquote>\n<h4>3.4.5. \u5206\u5e03\u5f0f\u65e5\u5fd7\u6536\u96c6flume\uff0ckafka\uff0clogstash<\/h4>\n<h4>3.4.6. \u6570\u636e\u6316\u6398\uff0cmahout<\/h4>\n<h4>3.4.7. \u53c2\u8003\u8d44\u6599<\/h4>\n<blockquote><p><a href=\"http:\/\/zookeeper.apache.org\/\">http:\/\/zookeeper.apache.org\/<\/a><\/p>\n<p><a href=\"https:\/\/lucene.apache.org\/solr\/\">https:\/\/lucene.apache.org\/solr\/<\/a><\/p>\n<p><a href=\"https:\/\/github.com\/nathanmarz\/storm\/wiki\">https:\/\/github.com\/nathanmarz\/storm\/wiki<\/a><\/p>\n<p><a href=\"http:\/\/hadoop.apache.org\/\">http:\/\/hadoop.apache.org\/<\/a><\/p>\n<p><a href=\"http:\/\/prestodb.io\/\">http:\/\/prestodb.io\/<\/a><\/p>\n<p><a href=\"http:\/\/flume.apache.org\/\">http:\/\/flume.apache.org\/<\/a><\/p>\n<p><a href=\"http:\/\/logstash.net\/\">http:\/\/logstash.net\/<\/a><\/p>\n<p><a href=\"http:\/\/kafka.apache.org\/\">http:\/\/kafka.apache.org\/<\/a><\/p>\n<p><a href=\"http:\/\/mahout.apache.org\/\">http:\/\/mahout.apache.org\/<\/a><\/p><\/blockquote>\n<h3>3.5. \u7f51\u7edc\u5b89\u5168\u77e5\u8bc6<\/h3>\n<h4>3.5.1. \u4ec0\u4e48\u662fDES\u3001AES<\/h4>\n<h4>3.5.2. \u4ec0\u4e48\u662fRSA\u3001DSA<\/h4>\n<h4>3.5.3. \u4ec0\u4e48\u662fMD5\uff0cSHA1<\/h4>\n<h4>3.5.4. \u4ec0\u4e48\u662fSSL\u3001TLS\uff0c\u4e3a\u4ec0\u4e48HTTPS\u76f8\u5bf9\u6bd4\u8f83\u5b89\u5168<\/h4>\n<h4>3.5.5. \u4ec0\u4e48\u662f\u4e2d\u95f4\u4eba\u653b\u51fb\u3001\u5982\u679c\u907f\u514d\u4e2d\u95f4\u4eba\u653b\u51fb<\/h4>\n<h4>3.5.6. \u4ec0\u4e48\u662fDOS\u3001DDOS\u3001CC\u653b\u51fb<\/h4>\n<h4>3.5.7. \u4ec0\u4e48\u662fCSRF\u653b\u51fb<\/h4>\n<h4>3.5.8. \u4ec0\u4e48\u662fCSS\u653b\u51fb<\/h4>\n<h4>3.5.9. \u4ec0\u4e48\u662fSQL\u6ce8\u5165\u653b\u51fb<\/h4>\n<h4>3.5.10. \u4ec0\u4e48\u662fHash\u78b0\u649e\u62d2\u7edd\u670d\u52a1\u653b\u51fb<\/h4>\n<h4>3.5.11. \u4e86\u89e3\u5e76\u5b66\u4e60\u4e0b\u9762\u51e0\u79cd\u589e\u5f3a\u5b89\u5168\u7684\u6280\u672f<\/h4>\n<blockquote><p>http:\/\/www.openauthentication.org\/<\/p>\n<p>HOTP http:\/\/www.ietf.org\/rfc\/rfc4226.txt<\/p>\n<p>TOTP http:\/\/tools.ietf.org\/rfc\/rfc6238.txt<\/p>\n<p>OCRA http:\/\/tools.ietf.org\/rfc\/rfc6287.txt<\/p>\n<p>http:\/\/en.wikipedia.org\/wiki\/Salt_(cryptography)<\/p><\/blockquote>\n<h4>3.5.12. \u7528openssl\u7b7e\u4e00\u4e2a\u8bc1\u4e66\u90e8\u7f72\u5230apache\u6216nginx<\/h4>\n<h4>3.5.13. \u53c2\u8003\u8d44\u6599<\/h4>\n<blockquote><p><a href=\"http:\/\/en.wikipedia.org\/wiki\/Cryptographic_hash_function\">http:\/\/en.wikipedia.org\/wiki\/Cryptographic_hash_function<\/a><\/p>\n<p><a href=\"http:\/\/en.wikipedia.org\/wiki\/Block_cipher\">http:\/\/en.wikipedia.org\/wiki\/Block_cipher<\/a><\/p>\n<p><a href=\"http:\/\/en.wikipedia.org\/wiki\/Public-key_cryptography\">http:\/\/en.wikipedia.org\/wiki\/Public-key_cryptography<\/a><\/p>\n<p><a href=\"http:\/\/en.wikipedia.org\/wiki\/Transport_Layer_Security\">http:\/\/en.wikipedia.org\/wiki\/Transport_Layer_Security<\/a><\/p>\n<p><a href=\"http:\/\/www.openssl.org\/\">http:\/\/www.openssl.org\/<\/a><\/p>\n<p><a href=\"https:\/\/code.google.com\/p\/google-authenticator\/\">https:\/\/code.google.com\/p\/google-authenticator\/<\/a><\/p><\/blockquote>\n<h2>\u56db\u3001 \u6269\u5c55\u7bc7<\/h2>\n<h3>4.1. \u76f8\u5173\u77e5\u8bc6<\/h3>\n<h4>4.1.1. \u4e91\u8ba1\u7b97\uff0c\u5206\u5e03\u5f0f\uff0c\u9ad8\u53ef\u7528\uff0c\u53ef\u6269\u5c55<\/h4>\n<h4>4.1.2. \u865a\u62df\u5316<\/h4>\n<blockquote><p><a href=\"https:\/\/linuxcontainers.org\/\">https:\/\/linuxcontainers.org\/<\/a><\/p>\n<p><a href=\"http:\/\/www.linux-kvm.org\/page\/Main_Page\">http:\/\/www.linux-kvm.org\/page\/Main_Page<\/a><\/p>\n<p><a href=\"http:\/\/www.xenproject.org\/\">http:\/\/www.xenproject.org\/<\/a><\/p>\n<p><a href=\"https:\/\/www.docker.io\/\">https:\/\/www.docker.io\/<\/a><\/p><\/blockquote>\n<h4>4.1.3. \u76d1\u63a7<\/h4>\n<blockquote><p><a href=\"http:\/\/www.nagios.org\/\">http:\/\/www.nagios.org\/<\/a><\/p>\n<p><a href=\"http:\/\/ganglia.info\/\">http:\/\/ganglia.info\/<\/a><\/p><\/blockquote>\n<h4>4.1.4. \u8d1f\u8f7d\u5747\u8861<\/h4>\n<blockquote><p><a href=\"http:\/\/www.linuxvirtualserver.org\/\">http:\/\/www.linuxvirtualserver.org\/<\/a><\/p><\/blockquote>\n<h4>4.1.5. \u5b66\u4e60\u4f7f\u7528git<\/h4>\n<blockquote><p><a href=\"https:\/\/github.com\/\">https:\/\/github.com\/<\/a><\/p>\n<p><a href=\"https:\/\/git.oschina.net\/\">https:\/\/git.oschina.net\/<\/a><\/p><\/blockquote>\n<h4>4.1.6. \u5b66\u4e60\u4f7f\u7528maven<\/h4>\n<blockquote><p><a href=\"http:\/\/maven.apache.org\/\">http:\/\/maven.apache.org\/<\/a><\/p><\/blockquote>\n<h4>4.1.7. \u5b66\u4e60\u4f7f\u7528gradle<\/h4>\n<blockquote><p><a href=\"http:\/\/www.gradle.org\/\">http:\/\/www.gradle.org\/<\/a><\/p><\/blockquote>\n<h4>4.1.8. \u5b66\u4e60\u4e00\u4e2a\u5c0f\u8bed\u79cd\u8bed\u8a00<\/h4>\n<blockquote><p>Groovy Scala LISP, Common LISP, Schema, Clojure R Julia Lua Ruby<\/p><\/blockquote>\n<h4>4.1.9. \u5c1d\u8bd5\u4e86\u89e3\u7f16\u7801\u7684\u672c\u8d28<\/h4>\n<blockquote><p>\u4e86\u89e3\u4ee5\u4e0b\u6982\u5ff5 ASCII, ISO-8859-1 GB2312, GBK, GB18030 Unicode, UTF-8 \u4e0d\u4f7f\u7528 String.getBytes() \u7b49\u5176\u4ed6\u5de5\u5177\u7c7b\/\u51fd\u6570\u5b8c\u6210\u4e0b\u9762\u529f\u80fd<\/p><\/blockquote>\n<pre class=\"prettyprint prettyprinted\"><code><span class=\"kwd\"><span class=\"kwd\">public<\/span><\/span> <span class=\"kwd\"><span class=\"kwd\">static<\/span><\/span> <span class=\"kwd\"><span class=\"kwd\">void<\/span><\/span><span class=\"pln\"><span class=\"pln\"> main<\/span><\/span><span class=\"pun\"><span class=\"pun\">(<\/span><\/span><span class=\"typ\"><span class=\"typ\">String<\/span><\/span><span class=\"pun\"><span class=\"pun\">[]<\/span><\/span><span class=\"pln\"><span class=\"pln\"> args<\/span><\/span><span class=\"pun\"><span class=\"pun\">)<\/span><\/span> <span class=\"kwd\"><span class=\"kwd\">throws<\/span><\/span> <span class=\"typ\"><span class=\"typ\">IOException<\/span><\/span> <span class=\"pun\"><span class=\"pun\">{<\/span><\/span>\r\n    <span class=\"typ\"><span class=\"typ\">String<\/span><\/span><span class=\"pln\"><span class=\"pln\"> str <\/span><\/span><span class=\"pun\"><span class=\"pun\">=<\/span><\/span> <span class=\"str\"><span class=\"str\">\"Hello, \u6211\u4eec\u662f\u4e2d\u56fd\u4eba\u3002\"<\/span><\/span><span class=\"pun\"><span class=\"pun\">;<\/span><\/span>\r\n    <span class=\"kwd\"><span class=\"kwd\">byte<\/span><\/span><span class=\"pun\"><span class=\"pun\">[]<\/span><\/span><span class=\"pln\"><span class=\"pln\"> utf8Bytes <\/span><\/span><span class=\"pun\"><span class=\"pun\">=<\/span><\/span><span class=\"pln\"><span class=\"pln\"> toUTF8Bytes<\/span><\/span><span class=\"pun\"><span class=\"pun\">(<\/span><\/span><span class=\"pln\"><span class=\"pln\">str<\/span><\/span><span class=\"pun\"><span class=\"pun\">);<\/span><\/span>\r\n    <span class=\"typ\"><span class=\"typ\">FileOutputStream<\/span><\/span><span class=\"pln\"><span class=\"pln\"> fos <\/span><\/span><span class=\"pun\"><span class=\"pun\">=<\/span><\/span> <span class=\"kwd\"><span class=\"kwd\">new<\/span><\/span> <span class=\"typ\"><span class=\"typ\">FileOutputStream<\/span><\/span><span class=\"pun\"><span class=\"pun\">(<\/span><\/span><span class=\"str\"><span class=\"str\">\"f.txt\"<\/span><\/span><span class=\"pun\"><span class=\"pun\">);<\/span><\/span><span class=\"pln\"><span class=\"pln\">\r\n    fos<\/span><\/span><span class=\"pun\"><span class=\"pun\">.<\/span><\/span><span class=\"pln\"><span class=\"pln\">write<\/span><\/span><span class=\"pun\"><span class=\"pun\">(<\/span><\/span><span class=\"pln\"><span class=\"pln\">utf8Bytes<\/span><\/span><span class=\"pun\"><span class=\"pun\">);<\/span><\/span><span class=\"pln\"><span class=\"pln\">\r\n    fos<\/span><\/span><span class=\"pun\"><span class=\"pun\">.<\/span><\/span><span class=\"pln\"><span class=\"pln\">close<\/span><\/span><span class=\"pun\"><span class=\"pun\">();<\/span><\/span>\r\n<span class=\"pun\"><span class=\"pun\">}<\/span><\/span>\r\n<span class=\"kwd\"><span class=\"kwd\">public<\/span><\/span> <span class=\"kwd\"><span class=\"kwd\">static<\/span><\/span> <span class=\"kwd\"><span class=\"kwd\">byte<\/span><\/span><span class=\"pun\"><span class=\"pun\">[]<\/span><\/span><span class=\"pln\"><span class=\"pln\"> toUTF8Bytes<\/span><\/span><span class=\"pun\"><span class=\"pun\">(<\/span><\/span><span class=\"typ\"><span class=\"typ\">String<\/span><\/span><span class=\"pln\"><span class=\"pln\"> str<\/span><\/span><span class=\"pun\"><span class=\"pun\">)<\/span><\/span> <span class=\"pun\"><span class=\"pun\">{<\/span><\/span>\r\n    <span class=\"kwd\"><span class=\"kwd\">return<\/span><\/span> <span class=\"kwd\"><span class=\"kwd\">null<\/span><\/span><span class=\"pun\"><span class=\"pun\">;<\/span><\/span> <span class=\"com\"><span class=\"com\">\/\/ TODO<\/span><\/span>\r\n<span class=\"pun\"><span class=\"pun\">}<\/span><\/span><\/code><\/pre>\n<blockquote><p>\u60f3\u4e00\u4e0b\u4e0a\u9762\u7684\u7a0b\u5e8f\u80fd\u4e0d\u80fd\u5199\u4e00\u4e2a\u8f6cGBK\u7684\uff1f \u5199\u4e2a\u7a0b\u5e8f\u81ea\u52a8\u5224\u65ad\u4e00\u4e2a\u6587\u4ef6\u662f\u54ea\u79cd\u7f16\u7801<\/p><\/blockquote>\n<h4>4.1.10. \u5c1d\u8bd5\u4e86\u89e3\u65f6\u95f4\u7684\u672c\u8d28<\/h4>\n<blockquote><p>\u65f6\u533a &amp; \u51ac\u4ee4\u65f6\u3001\u590f\u4ee4\u65f6 <a href=\"http:\/\/en.wikipedia.org\/wiki\/Time_zone\">http:\/\/en.wikipedia.org\/wiki\/Time_zone<\/a><a href=\"ftp:\/\/ftp.iana.org\/tz\/data\/asia\">ftp:\/\/ftp.iana.org\/tz\/data\/asia<\/a><a href=\"http:\/\/zh.wikipedia.org\/wiki\/%E4%B8%AD%E5%9C%8B%E6%99%82%E5%8D%80\">http:\/\/zh.wikipedia.org\/wiki\/%E4%B8%AD%E5%9C%8B%E6%99%82%E5%8D%80<\/a><\/p>\n<p>\u95f0\u5e74 <a href=\"http:\/\/en.wikipedia.org\/wiki\/Leap_year\">http:\/\/en.wikipedia.org\/wiki\/Leap_year<\/a><\/p>\n<p>\u95f0\u79d2 <a href=\"ftp:\/\/ftp.iana.org\/tz\/data\/leapseconds\">ftp:\/\/ftp.iana.org\/tz\/data\/leapseconds<\/a><\/p>\n<p><code>System.currentTimeMillis()<\/code> \u8fd4\u56de\u7684\u65f6\u95f4\u662f\u4ec0\u4e48<\/p><\/blockquote>\n<h4>4.1.11. \u53c2\u8003\u8d44\u6599<\/h4>\n<blockquote><p><a href=\"http:\/\/git-scm.com\/\">http:\/\/git-scm.com\/<\/a><\/p>\n<p><a href=\"http:\/\/en.wikipedia.org\/wiki\/UTF-8\">http:\/\/en.wikipedia.org\/wiki\/UTF-8<\/a><\/p>\n<p><a href=\"http:\/\/en.wikipedia.org\/wiki\/UTF-8\">http:\/\/www.iana.org\/time-zones<\/a><\/p><\/blockquote>\n<h3>4.2. \u6269\u5c55\u5b66\u4e60<\/h3>\n<h4>4.2.1. JavaScript\u77e5\u8bc6<\/h4>\n<h5>4.2.1.1. \u4ec0\u4e48\u662fprototype<\/h5>\n<blockquote><p>\u4fee\u6539\u4ee3\u7801\uff0c\u4f7f\u7a0b\u5e8f\u8f93\u51fa\u201c1 3 5\u201d\uff1a <a href=\"http:\/\/jsfiddle.net\/Ts7Fk\/\">http:\/\/jsfiddle.net\/Ts7Fk\/<\/a><\/p><\/blockquote>\n<h5>4.2.1.2. \u4ec0\u4e48\u662f\u95ed\u5305<\/h5>\n<blockquote><p>\u770b\u4e00\u4e0b\u8fd9\u6bb5\u4ee3\u7801\uff0c\u5e76\u89e3\u91ca\u4e00\u4e0b\u4e3a\u4ec0\u4e48\u6309Button1\u65f6\u6ca1\u6709alert\u51fa\u201cThis is button: 1\u201d\uff0c\u5982\u4f55\u4fee\u6539\uff1a <a href=\"http:\/\/jsfiddle.net\/FDPj3\/1\/\">http:\/\/jsfiddle.net\/FDPj3\/1\/<\/a><\/p><\/blockquote>\n<h5>4.2.1.3. \u4e86\u89e3\u5e76\u5b66\u4e60\u4e00\u4e2aJS\u6846\u67b6<\/h5>\n<blockquote><p>jQuery ExtJS ArgularJS<\/p><\/blockquote>\n<h5>4.2.1.4. \u5199\u4e00\u4e2aGreasemonkey\u63d2\u4ef6<\/h5>\n<pre class=\"prettyprint prettyprinted\"><code><span class=\"pln\"><span class=\"pln\">http<\/span><\/span><span class=\"pun\"><span class=\"pun\">:<\/span><\/span><span class=\"com\"><span class=\"com\">\/\/en.wikipedia.org\/wiki\/Greasemonkey<\/span><\/span><\/code><\/pre>\n<h5>4.2.1.5. \u5b66\u4e60node.js<\/h5>\n<blockquote><p><a href=\"http:\/\/jsfiddle.net\/FDPj3\/1\/\">http:\/\/nodejs.org\/<\/a><\/p><\/blockquote>\n<h4>4.2.2. \u5b66\u4e60html5<\/h4>\n<blockquote><p>ArgularJS\uff0c<a href=\"https:\/\/docs.angularjs.org\/api\">https:\/\/docs.angularjs.org\/api<\/a><\/p><\/blockquote>\n<h4>4.2.3. \u53c2\u8003\u8d44\u6599<\/h4>\n<blockquote><p><a href=\"http:\/\/www.ecmascript.org\/\">http:\/\/www.ecmascript.org\/<\/a><\/p>\n<p><a href=\"http:\/\/jsfiddle.net\/\">http:\/\/jsfiddle.net\/<\/a><\/p>\n<p><a href=\"http:\/\/jsbin.com\/\">http:\/\/jsbin.com\/<\/a><\/p>\n<p><a href=\"http:\/\/runjs.cn\/\">http:\/\/runjs.cn\/<\/a><\/p>\n<p><a href=\"http:\/\/runjs.cn\/\">http:\/\/userscripts.org\/<\/a><\/p><\/blockquote>\n<h2>\u4e94\u3001 \u63a8\u8350\u4e66\u7c4d<\/h2>\n<blockquote><p><a href=\"http:\/\/redirect.simba.taobao.com\/rd?w=unionnojs&amp;f=http%3A%2F%2Fai.taobao.com%2Fauction%2Fedetail.htm%3Fe%3DZvRvWHu6SOnuDAZjWhpTWAqt5sjBXAKAeCkqdCFDLOxBWJVBnwmj7tnO073KpEUuesayvrQ7hvm50VDmyluWgoBcpW0hhVAnj0d7jq0J5nxS0CLDc%252BkBd%252FlYGH3A75GKYDUMsRn%252FRLRYEUmnvjajAg%253D%253D%26ptype%3D100010%26from%3Dbasic&amp;k=5ccfdb950740ca16&amp;c=un&amp;b=alimm_0&amp;p=mm_42606752_12122458_44532463\">\u300a\u6df1\u5165Java\u865a\u62df\u673a\u300b<\/a><\/p>\n<p><a href=\"http:\/\/redirect.simba.taobao.com\/rd?w=unionnojs&amp;f=http%3A%2F%2Fai.taobao.com%2Fauction%2Fedetail.htm%3Fe%3DruMSq37OOfbuDAZjWhpTWAqt5sjBXAKAeCkqdCFDLOxBWJVBnwmj7tnO073KpEUuesayvrQ7hvm50VDmyluWgoBcpW0hhVAnj0d7jq0J5nxS0CLDc%252BkBd%252FlYGH3A75GKYDUMsRn%252FRLTIpZdTC6RHCA%253D%253D%26ptype%3D100010%26from%3Dbasic&amp;k=5ccfdb950740ca16&amp;c=un&amp;b=alimm_0&amp;p=mm_42606752_12122458_44532463\">\u300a\u6df1\u5165\u7406\u89e3Java\u865a\u62df\u673a\u300b<\/a><\/p>\n<p><a href=\"http:\/\/redirect.simba.taobao.com\/rd?w=unionnojs&amp;f=http%3A%2F%2Fai.taobao.com%2Fauction%2Fedetail.htm%3Fe%3DXNiOKJpiO7TuDAZjWhpTWDaAZ8A7vIffKo6rHv51kdtBWJVBnwmj7tnO073KpEUuesayvrQ7hvm50VDmyluWgoBcpW0hhVAnj0d7jq0J5nxS0CLDc%252BkBd%252FlYGH3A75GKYDUMsRn%252FRLSqMCmgzjxR%252BQ%253D%253D%26ptype%3D100010%26from%3Dbasic&amp;k=5ccfdb950740ca16&amp;c=un&amp;b=alimm_0&amp;p=mm_42606752_12122458_44532463\">\u300aEffective Java\u300b<\/a><\/p>\n<p><a href=\"http:\/\/redirect.simba.taobao.com\/rd?w=unionnojs&amp;f=http%3A%2F%2Fai.taobao.com%2Fauction%2Fedetail.htm%3Fe%3DUTVfosmcpeW6k0Or%252B%252BH4tHI7U6uhyhd5ENbBVuy6U6CLltG5xFicOdXrTUTgh9sMDPIwxrc30rg%252Bti0P%252FwKUmz9rLA8dYnymkYuN890a%252Fa8F2i6YdfNn1lRmtaud%252B0v%252Bt5z%252BDtPo5eXZSYdm6WZA2w%253D%253D%26ptype%3D100010%26from%3Dbasic&amp;k=5ccfdb950740ca16&amp;c=un&amp;b=alimm_0&amp;p=mm_42606752_12122458_44532463\">\u300a\u4e03\u5468\u4e03\u8bed\u8a00\u300b<\/a><\/p>\n<p><a href=\"http:\/\/redirect.simba.taobao.com\/rd?w=unionnojs&amp;f=http%3A%2F%2Fai.taobao.com%2Fauction%2Fedetail.htm%3Fe%3D8E0ZFkGCa4nuDAZjWhpTWIH%252BZP%252FBKjMYaRpVLarZ1rdBWJVBnwmj7tnO073KpEUuesayvrQ7hvm50VDmyluWgoBcpW0hhVAnj0d7jq0J5nxS0CLDc%252BkBd%252FlYGH3A75GKYDUMsRn%252FRLTmCHcueORLqw%253D%253D%26ptype%3D100010%26from%3Dbasic&amp;k=5ccfdb950740ca16&amp;c=un&amp;b=alimm_0&amp;p=mm_42606752_12122458_44532463\">\u300a\u4e03\u5468\u4e03\u6570\u636e\u300b<\/a><\/p>\n<p><a href=\"http:\/\/redirect.simba.taobao.com\/rd?w=unionnojs&amp;f=http%3A%2F%2Fai.taobao.com%2Fauction%2Fedetail.htm%3Fe%3DX2wRRnOMgffuDAZjWhpTWCGSPR3bshuFJQ5oPTLBF1NBWJVBnwmj7tnO073KpEUuesayvrQ7hvm50VDmyluWgoBcpW0hhVAnj0d7jq0J5nxS0CLDc%252BkBd%252FlYGH3A75GKYDUMsRn%252FRLSHNzbOReZhTA%253D%253D%26ptype%3D100010%26from%3Dbasic&amp;k=5ccfdb950740ca16&amp;c=un&amp;b=alimm_0&amp;p=mm_42606752_12122458_44532463\">\u300aHadoop\u6280\u672f\u5185\u5e55\u300b<\/a><\/p>\n<p><a href=\"http:\/\/redirect.simba.taobao.com\/rd?w=unionnojs&amp;f=http%3A%2F%2Fai.taobao.com%2Fauction%2Fedetail.htm%3Fe%3Dl9hhJRCCD9nebLdhAWchHLbUU0JZj4TW1BHSvcRrnkWLltG5xFicOdXrTUTgh9sMDPIwxrc30rg%252Bti0P%252FwKUmz9rLA8dYnymkYuN890a%252Fa8F2i6YdfNn1lRmtaud%252B0v%252Bt5z%252BDtPo5eUhCRMIlenyaA%253D%253D%26ptype%3D100010%26from%3Dbasic&amp;k=5ccfdb950740ca16&amp;c=un&amp;b=alimm_0&amp;p=mm_42606752_12122458_44532463\">\u300aHbase In Action\u300b<\/a><\/p>\n<p><a href=\"http:\/\/redirect.simba.taobao.com\/rd?w=unionnojs&amp;f=http%3A%2F%2Fai.taobao.com%2Fauction%2Fedetail.htm%3Fe%3DBqy%252Fse2OntzghojqVNxKsfE0PFzNEA7q8HgNo8uZfyqLltG5xFicOdXrTUTgh9sMDPIwxrc30rg%252Bti0P%252FwKUmz9rLA8dYnymkYuN890a%252Fa8F2i6YdfNn1lRmtaud%252B0v%252Bt5z%252BDtPo5eXxMS9zg13LJg%253D%253D%26ptype%3D100010%26from%3Dbasic&amp;k=5ccfdb950740ca16&amp;c=un&amp;b=alimm_0&amp;p=mm_42606752_12122458_44532463\">\u300aMahout In Action\u300b<\/a><\/p>\n<p><a href=\"http:\/\/redirect.simba.taobao.com\/rd?w=unionnojs&amp;f=http%3A%2F%2Fai.taobao.com%2Fauction%2Fedetail.htm%3Fe%3Dw95piRGiFybuDAZjWhpTWGdkho7Gvmakc5n8OCikHcNBWJVBnwmj7tnO073KpEUuesayvrQ7hvm50VDmyluWgoBcpW0hhVAnj0d7jq0J5nxS0CLDc%252BkBd%252FlYGH3A75GKYDUMsRn%252FRLTsOzyxQ6nLQA%253D%253D%26ptype%3D100010%26from%3Dbasic&amp;k=5ccfdb950740ca16&amp;c=un&amp;b=alimm_0&amp;p=mm_42606752_12122458_44532463\">\u300a\u8fd9\u5c31\u662f\u641c\u7d22\u5f15\u64ce\u300b<\/a><\/p>\n<p><a href=\"http:\/\/redirect.simba.taobao.com\/rd?w=unionnojs&amp;f=http%3A%2F%2Fai.taobao.com%2Fauction%2Fedetail.htm%3Fe%3DiuMmiSYV%252BobghojqVNxKsZdy6yFShhOriLSVUC%252FYQraLltG5xFicOdXrTUTgh9sMDPIwxrc30rg%252Bti0P%252FwKUmz9rLA8dYnymkYuN890a%252Fa8F2i6YdfNn1lRmtaud%252B0v%252Bt5z%252BDtPo5eV7QtacfFHhKQ%253D%253D%26ptype%3D100010%26from%3Dbasic&amp;k=5ccfdb950740ca16&amp;c=un&amp;b=alimm_0&amp;p=mm_42606752_12122458_44532463\">\u300aSolr In Action\u300b<\/a><\/p>\n<p><a href=\"http:\/\/redirect.simba.taobao.com\/rd?w=unionnojs&amp;f=http%3A%2F%2Fai.taobao.com%2Fauction%2Fedetail.htm%3Fe%3DMkmsPHOlBQXuDAZjWhpTWEDeIpay%252FCpUxDf4a6L3B5VBWJVBnwmj7tnO073KpEUuesayvrQ7hvm50VDmyluWgoBcpW0hhVAnj0d7jq0J5nxS0CLDc%252BkBd%252FlYGH3A75GKYDUMsRn%252FRLStvh1VudKGNw%253D%253D%26ptype%3D100010%26from%3Dbasic&amp;k=5ccfdb950740ca16&amp;c=un&amp;b=alimm_0&amp;p=mm_42606752_12122458_44532463\">\u300a\u6df1\u5165\u5206\u6790Java Web\u6280\u672f\u5185\u5e55\u300b<\/a><\/p>\n<p><a href=\"http:\/\/redirect.simba.taobao.com\/rd?w=unionnojs&amp;f=http%3A%2F%2Fai.taobao.com%2Fauction%2Fedetail.htm%3Fe%3DQNSw6jWKnzLuDAZjWhpTWJFwhKp5ZMJT%252FFY2y45CqT5BWJVBnwmj7tnO073KpEUuesayvrQ7hvm50VDmyluWgoBcpW0hhVAnj0d7jq0J5nxS0CLDc%252BkBd%252FlYGH3A75GKYDUMsRn%252FRLQ7kLHNSG8FRg%253D%253D%26ptype%3D100010%26from%3Dbasic&amp;k=5ccfdb950740ca16&amp;c=un&amp;b=alimm_0&amp;p=mm_42606752_12122458_44532463\">\u300a\u5927\u578b\u7f51\u7ad9\u6280\u672f\u67b6\u6784\u300b<\/a><\/p>\n<p><a href=\"http:\/\/redirect.simba.taobao.com\/rd?w=unionnojs&amp;f=http%3A%2F%2Fai.taobao.com%2Fauction%2Fedetail.htm%3Fe%3DCZ6zy4IdlJDuDAZjWhpTWNAcKbFgIMNwzqUbDwbgWitBWJVBnwmj7tnO073KpEUuesayvrQ7hvm50VDmyluWgoBcpW0hhVAnj0d7jq0J5nxS0CLDc%252BkBd%252FlYGH3A75GKYDUMsRn%252FRLS9VMwrtHHGbA%253D%253D%26ptype%3D100010%26from%3Dbasic&amp;k=5ccfdb950740ca16&amp;c=un&amp;b=alimm_0&amp;p=mm_42606752_12122458_44532463\">\u300a\u9ad8\u6027\u80fdMySQL\u300b<\/a><\/p>\n<p><a href=\"http:\/\/redirect.simba.taobao.com\/rd?w=unionnojs&amp;f=http%3A%2F%2Fai.taobao.com%2Fauction%2Fedetail.htm%3Fe%3DXV4hpKdYaIjuDAZjWhpTWBZ3v%252F21wroSrQw8YMeO7klBWJVBnwmj7tnO073KpEUuesayvrQ7hvm50VDmyluWgoBcpW0hhVAnj0d7jq0J5nxS0CLDc%252BkBd%252FlYGH3A75GKYDUMsRn%252FRLRkzTznPcS%252Bmw%253D%253D%26ptype%3D100010%26from%3Dbasic&amp;k=5ccfdb950740ca16&amp;c=un&amp;b=alimm_0&amp;p=mm_42606752_12122458_44532463\">\u300a\u7b97\u6cd5\u5bfc\u8bba\u300b<\/a><\/p>\n<p>\u300a\u8ba1\u7b97\u673a\u7a0b\u5e8f\u8bbe\u8ba1\u827a\u672f\u300b<\/p>\n<p><a href=\"http:\/\/redirect.simba.taobao.com\/rd?w=unionnojs&amp;f=http%3A%2F%2Fai.taobao.com%2Fauction%2Fedetail.htm%3Fe%3D3QbaGr66%252BlruDAZjWhpTWMYVYqDsaRju%252BGm%252FBL973ipBWJVBnwmj7tnO073KpEUuesayvrQ7hvm50VDmyluWgoBcpW0hhVAnj0d7jq0J5nxS0CLDc%252BkBd%252FlYGH3A75GKYDUMsRn%252FRLSLnr%252BCukWK0w%253D%253D%26ptype%3D100010%26from%3Dbasic&amp;k=5ccfdb950740ca16&amp;c=un&amp;b=alimm_0&amp;p=mm_42606752_12122458_44532463\">\u300a\u4ee3\u7801\u5927\u5168\u300b<\/a><\/p>\n<p><a href=\"http:\/\/redirect.simba.taobao.com\/rd?w=unionnojs&amp;f=http%3A%2F%2Fai.taobao.com%2Fauction%2Fedetail.htm%3Fe%3DtKN1RkDQOXruDAZjWhpTWKUvOcPeTa0lQbkDIVMzTDZBWJVBnwmj7tnO073KpEUuesayvrQ7hvm50VDmyluWgoBcpW0hhVAnj0d7jq0J5nxS0CLDc%252BkBd%252FlYGH3A75GKYDUMsRn%252FRLSjIPjO6CMcTQ%253D%253D%26ptype%3D100010%26from%3Dbasic&amp;k=5ccfdb950740ca16&amp;c=un&amp;b=alimm_0&amp;p=mm_42606752_12122458_44532463\">\u300aJavaScript\u6743\u5a01\u6307\u5357\u300b<\/a><\/p>\n<p>&nbsp;<\/p>\n<p>\u539f\u6587\u51fa\u5904\uff1a <a href=\"http:\/\/www.hollischuang.com\/archives\/489\" target=\"_blank\">hollischuang\uff08@Hollis_Chuang\uff09<\/a><\/p><\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p>\u4e00\u3001\u57fa\u7840\u7bc7 1.1 JVM 1.1.1. Java\u5185\u5b58\u6a21\u578b\uff0cJava\u5185\u5b58\u7ba1\u7406\uff0cJava\u5806\u548c\u6808\uff0c\u5783\u573e\u56de\u6536<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[],"_links":{"self":[{"href":"https:\/\/ai.zhousir.top\/index.php?rest_route=\/wp\/v2\/posts\/1521"}],"collection":[{"href":"https:\/\/ai.zhousir.top\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ai.zhousir.top\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ai.zhousir.top\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ai.zhousir.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1521"}],"version-history":[{"count":2,"href":"https:\/\/ai.zhousir.top\/index.php?rest_route=\/wp\/v2\/posts\/1521\/revisions"}],"predecessor-version":[{"id":1523,"href":"https:\/\/ai.zhousir.top\/index.php?rest_route=\/wp\/v2\/posts\/1521\/revisions\/1523"}],"wp:attachment":[{"href":"https:\/\/ai.zhousir.top\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1521"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ai.zhousir.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1521"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ai.zhousir.top\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1521"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}