127.0.0.1:9200
URL: http://127.0.0.1:9200/likecs_art_db/_search
REQUEST:
Array
(
    [query] => Array
        (
            [match] => Array
                (
                    [text] => Array
                        (
                            [query] => 《深入理解Java虚拟机》- JVM异常处理
                        )

                )

        )

    [highlight] => Array
        (
            [fields] => Array
                (
                    [text] => stdClass Object
                        (
                        )

                )

            [pre_tags] => #em#
            [post_tags] => #/em#
        )

    [size] => 8
    [from] => 0
)
RESPONSE:
string(7920) "{"took":39,"timed_out":false,"_shards":{"total":1,"successful":1,"skipped":0,"failed":0},"hits":{"total":{"value":10000,"relation":"gte"},"max_score":51.07986,"hits":[{"_index":"likecs_art_db","_type":"_doc","_id":"69987","_score":51.07986,"_source":{"id":"69987","text":"\u300a\u6df1\u5165\u7406\u89e3Java\u865a\u62df\u673a\u300b- JVM\u5f02\u5e38\u5904\u7406","intro":"\u76ee\u5f55\n\nECharts\n\u5f02\u6b65\u52a0\u8f7d\n\n\n\nECharts\r\n\u6570\u636e\u53ef\u89c6\u5316\u5728\u8fc7\u53bb\u51e0\u5e74\u4e2d\u53d6\u5f97\u4e86\u5de8\u5927\u8fdb\u5c55\u3002\u5f00\u53d1\u4eba\u5458\u5bf9\u53ef\u89c6\u5316\u4ea7\u54c1\u7684\u671f\u671b\u4e0d\u518d\u662f\u7b80\u5355\u7684\u56fe\u8868\u521b\u5efa\u5de5\u5177\uff0c\u800c\u662f\u5728\u4ea4\u4e92\u3001\u6027\u80fd\u3001\u6570\u636e\u5904\u7406\u7b49\u65b9\u9762\u6709\u66f4\u9ad8\u7684\u8981\u6c42\u3002\r\nchart.setOption({\r\n    color: [\r\n        ","username":"chenscript","tagsname":"","tagsid":"[]","catesname":"","catesid":"[]","createtime":"1566398389"},"highlight":{"text":["《#em#深#/em##em#入#/em##em#理#/em##em#解#/em##em#Java#/em##em#虚#/em##em#拟#/em##em#机#/em#》- #em#JVM#/em##em#异#/em##em#常#/em##em#处#/em##em#理#/em#"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"410872","_score":41.25995,"_source":{"id":"410872","text":"\u6df1\u5165\u7406\u89e3JAVA\u865a\u62df\u673aJVM","intro":"\u76ee\u5f55\n\nECharts\n\u5f02\u6b65\u52a0\u8f7d\n\n\n\nECharts\r\n\u6570\u636e\u53ef\u89c6\u5316\u5728\u8fc7\u53bb\u51e0\u5e74\u4e2d\u53d6\u5f97\u4e86\u5de8\u5927\u8fdb\u5c55\u3002\u5f00\u53d1\u4eba\u5458\u5bf9\u53ef\u89c6\u5316\u4ea7\u54c1\u7684\u671f\u671b\u4e0d\u518d\u662f\u7b80\u5355\u7684\u56fe\u8868\u521b\u5efa\u5de5\u5177\uff0c\u800c\u662f\u5728\u4ea4\u4e92\u3001\u6027\u80fd\u3001\u6570\u636e\u5904\u7406\u7b49\u65b9\u9762\u6709\u66f4\u9ad8\u7684\u8981\u6c42\u3002\r\nchart.setOption({\r\n    color: [\r\n        ","username":"zedosu","tagsname":null,"tagsid":"","catesname":"","catesid":"","createtime":"1632974991"},"highlight":{"text":["#em#深#/em##em#入#/em##em#理#/em##em#解#/em##em#JAVA#/em##em#虚#/em##em#拟#/em##em#机#/em##em#JVM#/em#"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"203303369","_score":40.666943,"_source":{"id":"203303369","text":"\u5f02\u5e38\u5904\u7406: \u6df1\u5165\u7406\u89e3java\u5f02\u5e38\u5904\u7406\u673a\u5236","intro":"\u76ee\u5f55\n\nECharts\n\u5f02\u6b65\u52a0\u8f7d\n\n\n\nECharts\r\n\u6570\u636e\u53ef\u89c6\u5316\u5728\u8fc7\u53bb\u51e0\u5e74\u4e2d\u53d6\u5f97\u4e86\u5de8\u5927\u8fdb\u5c55\u3002\u5f00\u53d1\u4eba\u5458\u5bf9\u53ef\u89c6\u5316\u4ea7\u54c1\u7684\u671f\u671b\u4e0d\u518d\u662f\u7b80\u5355\u7684\u56fe\u8868\u521b\u5efa\u5de5\u5177\uff0c\u800c\u662f\u5728\u4ea4\u4e92\u3001\u6027\u80fd\u3001\u6570\u636e\u5904\u7406\u7b49\u65b9\u9762\u6709\u66f4\u9ad8\u7684\u8981\u6c42\u3002\r\nchart.setOption({\r\n    color: [\r\n        ","username":"","tagsname":null,"tagsid":"","catesname":null,"catesid":"","createtime":"1636970088"},"highlight":{"text":["#em#异#/em##em#常#/em##em#处#/em##em#理#/em#: #em#深#/em##em#入#/em##em#理#/em##em#解#/em##em#java#/em##em#异#/em##em#常#/em##em#处#/em##em#理#/em##em#机#/em#制"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"220960","_score":38.956196,"_source":{"id":"220960","text":"\u6df1\u5165\u7406\u89e3Java\u5f02\u5e38\u5904\u7406\u673a\u5236","intro":"\u76ee\u5f55\n\nECharts\n\u5f02\u6b65\u52a0\u8f7d\n\n\n\nECharts\r\n\u6570\u636e\u53ef\u89c6\u5316\u5728\u8fc7\u53bb\u51e0\u5e74\u4e2d\u53d6\u5f97\u4e86\u5de8\u5927\u8fdb\u5c55\u3002\u5f00\u53d1\u4eba\u5458\u5bf9\u53ef\u89c6\u5316\u4ea7\u54c1\u7684\u671f\u671b\u4e0d\u518d\u662f\u7b80\u5355\u7684\u56fe\u8868\u521b\u5efa\u5de5\u5177\uff0c\u800c\u662f\u5728\u4ea4\u4e92\u3001\u6027\u80fd\u3001\u6570\u636e\u5904\u7406\u7b49\u65b9\u9762\u6709\u66f4\u9ad8\u7684\u8981\u6c42\u3002\r\nchart.setOption({\r\n    color: [\r\n        ","username":"zsh-blogs","tagsname":"","tagsid":"","catesname":"","catesid":"","createtime":"1636290996"},"highlight":{"text":["#em#深#/em##em#入#/em##em#理#/em##em#解#/em##em#Java#/em##em#异#/em##em#常#/em##em#处#/em##em#理#/em##em#机#/em#制"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"203444953","_score":36.36905,"_source":{"id":"203444953","text":"\u6df1\u5165\u7406\u89e3JVM\u865a\u62df\u673a\u603b\u7ed3","intro":"\u76ee\u5f55\n\nECharts\n\u5f02\u6b65\u52a0\u8f7d\n\n\n\nECharts\r\n\u6570\u636e\u53ef\u89c6\u5316\u5728\u8fc7\u53bb\u51e0\u5e74\u4e2d\u53d6\u5f97\u4e86\u5de8\u5927\u8fdb\u5c55\u3002\u5f00\u53d1\u4eba\u5458\u5bf9\u53ef\u89c6\u5316\u4ea7\u54c1\u7684\u671f\u671b\u4e0d\u518d\u662f\u7b80\u5355\u7684\u56fe\u8868\u521b\u5efa\u5de5\u5177\uff0c\u800c\u662f\u5728\u4ea4\u4e92\u3001\u6027\u80fd\u3001\u6570\u636e\u5904\u7406\u7b49\u65b9\u9762\u6709\u66f4\u9ad8\u7684\u8981\u6c42\u3002\r\nchart.setOption({\r\n    color: [\r\n        ","username":"","tagsname":null,"tagsid":"","catesname":null,"catesid":"","createtime":"1624947078"},"highlight":{"text":["#em#深#/em##em#入#/em##em#理#/em##em#解#/em##em#JVM#/em##em#虚#/em##em#拟#/em##em#机#/em#总结"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"883028","_score":35.920086,"_source":{"id":"883028","text":"\u5256\u6790Java\u865a\u62df\u673a\u7684\u673a\u7406\uff0c\u6df1\u5165\u4e86\u89e3JVM","intro":"\u76ee\u5f55\n\nECharts\n\u5f02\u6b65\u52a0\u8f7d\n\n\n\nECharts\r\n\u6570\u636e\u53ef\u89c6\u5316\u5728\u8fc7\u53bb\u51e0\u5e74\u4e2d\u53d6\u5f97\u4e86\u5de8\u5927\u8fdb\u5c55\u3002\u5f00\u53d1\u4eba\u5458\u5bf9\u53ef\u89c6\u5316\u4ea7\u54c1\u7684\u671f\u671b\u4e0d\u518d\u662f\u7b80\u5355\u7684\u56fe\u8868\u521b\u5efa\u5de5\u5177\uff0c\u800c\u662f\u5728\u4ea4\u4e92\u3001\u6027\u80fd\u3001\u6570\u636e\u5904\u7406\u7b49\u65b9\u9762\u6709\u66f4\u9ad8\u7684\u8981\u6c42\u3002\r\nchart.setOption({\r\n    color: [\r\n        ","username":"litaobupt","tagsname":null,"tagsid":"","catesname":null,"catesid":"","createtime":"1638193229"},"highlight":{"text":["剖析#em#Java#/em##em#虚#/em##em#拟#/em##em#机#/em#的#em#机#/em##em#理#/em#,#em#深#/em##em#入#/em#了#em#解#/em##em#JVM#/em#"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"203413049","_score":35.608833,"_source":{"id":"203413049","text":"\u6df1\u5165\u7406\u89e3Java\u865a\u62df\u673a","intro":"\u76ee\u5f55\n\nECharts\n\u5f02\u6b65\u52a0\u8f7d\n\n\n\nECharts\r\n\u6570\u636e\u53ef\u89c6\u5316\u5728\u8fc7\u53bb\u51e0\u5e74\u4e2d\u53d6\u5f97\u4e86\u5de8\u5927\u8fdb\u5c55\u3002\u5f00\u53d1\u4eba\u5458\u5bf9\u53ef\u89c6\u5316\u4ea7\u54c1\u7684\u671f\u671b\u4e0d\u518d\u662f\u7b80\u5355\u7684\u56fe\u8868\u521b\u5efa\u5de5\u5177\uff0c\u800c\u662f\u5728\u4ea4\u4e92\u3001\u6027\u80fd\u3001\u6570\u636e\u5904\u7406\u7b49\u65b9\u9762\u6709\u66f4\u9ad8\u7684\u8981\u6c42\u3002\r\nchart.setOption({\r\n    color: [\r\n        ","username":"","tagsname":null,"tagsid":"","catesname":null,"catesid":"","createtime":"1635746242"},"highlight":{"text":["#em#深#/em##em#入#/em##em#理#/em##em#解#/em##em#Java#/em##em#虚#/em##em#拟#/em##em#机#/em#"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"203413050","_score":35.608833,"_source":{"id":"203413050","text":"\u6df1\u5165\u7406\u89e3java\u865a\u62df\u673a","intro":"\u76ee\u5f55\n\nECharts\n\u5f02\u6b65\u52a0\u8f7d\n\n\n\nECharts\r\n\u6570\u636e\u53ef\u89c6\u5316\u5728\u8fc7\u53bb\u51e0\u5e74\u4e2d\u53d6\u5f97\u4e86\u5de8\u5927\u8fdb\u5c55\u3002\u5f00\u53d1\u4eba\u5458\u5bf9\u53ef\u89c6\u5316\u4ea7\u54c1\u7684\u671f\u671b\u4e0d\u518d\u662f\u7b80\u5355\u7684\u56fe\u8868\u521b\u5efa\u5de5\u5177\uff0c\u800c\u662f\u5728\u4ea4\u4e92\u3001\u6027\u80fd\u3001\u6570\u636e\u5904\u7406\u7b49\u65b9\u9762\u6709\u66f4\u9ad8\u7684\u8981\u6c42\u3002\r\nchart.setOption({\r\n    color: [\r\n        ","username":"","tagsname":null,"tagsid":"","catesname":null,"catesid":"","createtime":"1629900843"},"highlight":{"text":["#em#深#/em##em#入#/em##em#理#/em##em#解#/em##em#java#/em##em#虚#/em##em#拟#/em##em#机#/em#"]}}]}}"
127.0.0.1:9200
URL: http://127.0.0.1:9200/likecs_art_db/_search
REQUEST:
Array
(
    [query] => Array
        (
            [match] => Array
                (
                    [text] => Array
                        (
                            [query] => 《深入理解Java虚拟机》- JVM异常处理
                        )

                )

        )

    [highlight] => Array
        (
            [fields] => Array
                (
                    [text] => stdClass Object
                        (
                        )

                )

            [pre_tags] => #em#
            [post_tags] => #/em#
        )

    [size] => 8
    [from] => 8
)
RESPONSE:
string(7723) "{"took":39,"timed_out":false,"_shards":{"total":1,"successful":1,"skipped":0,"failed":0},"hits":{"total":{"value":10000,"relation":"gte"},"max_score":51.07986,"hits":[{"_index":"likecs_art_db","_type":"_doc","_id":"203413051","_score":35.608833,"_source":{"id":"203413051","text":"\u6df1\u5165\u7406\u89e3Java\u865a\u62df\u673a","intro":"\u76ee\u5f55\n\nECharts\n\u5f02\u6b65\u52a0\u8f7d\n\n\n\nECharts\r\n\u6570\u636e\u53ef\u89c6\u5316\u5728\u8fc7\u53bb\u51e0\u5e74\u4e2d\u53d6\u5f97\u4e86\u5de8\u5927\u8fdb\u5c55\u3002\u5f00\u53d1\u4eba\u5458\u5bf9\u53ef\u89c6\u5316\u4ea7\u54c1\u7684\u671f\u671b\u4e0d\u518d\u662f\u7b80\u5355\u7684\u56fe\u8868\u521b\u5efa\u5de5\u5177\uff0c\u800c\u662f\u5728\u4ea4\u4e92\u3001\u6027\u80fd\u3001\u6570\u636e\u5904\u7406\u7b49\u65b9\u9762\u6709\u66f4\u9ad8\u7684\u8981\u6c42\u3002\r\nchart.setOption({\r\n    color: [\r\n        ","username":"","tagsname":null,"tagsid":"","catesname":null,"catesid":"","createtime":"1634312902"},"highlight":{"text":["#em#深#/em##em#入#/em##em#理#/em##em#解#/em##em#Java#/em##em#虚#/em##em#拟#/em##em#机#/em#"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"203413064","_score":35.608833,"_source":{"id":"203413064","text":"\u6df1\u5165\u7406\u89e3java\u865a\u62df\u673a","intro":"\u76ee\u5f55\n\nECharts\n\u5f02\u6b65\u52a0\u8f7d\n\n\n\nECharts\r\n\u6570\u636e\u53ef\u89c6\u5316\u5728\u8fc7\u53bb\u51e0\u5e74\u4e2d\u53d6\u5f97\u4e86\u5de8\u5927\u8fdb\u5c55\u3002\u5f00\u53d1\u4eba\u5458\u5bf9\u53ef\u89c6\u5316\u4ea7\u54c1\u7684\u671f\u671b\u4e0d\u518d\u662f\u7b80\u5355\u7684\u56fe\u8868\u521b\u5efa\u5de5\u5177\uff0c\u800c\u662f\u5728\u4ea4\u4e92\u3001\u6027\u80fd\u3001\u6570\u636e\u5904\u7406\u7b49\u65b9\u9762\u6709\u66f4\u9ad8\u7684\u8981\u6c42\u3002\r\nchart.setOption({\r\n    color: [\r\n        ","username":"","tagsname":null,"tagsid":"","catesname":null,"catesid":"","createtime":"1629468070"},"highlight":{"text":["#em#深#/em##em#入#/em##em#理#/em##em#解#/em##em#java#/em##em#虚#/em##em#拟#/em##em#机#/em#"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"203413071","_score":35.608833,"_source":{"id":"203413071","text":"\u6df1\u5165\u7406\u89e3JAVA\u865a\u62df\u673a","intro":"\u76ee\u5f55\n\nECharts\n\u5f02\u6b65\u52a0\u8f7d\n\n\n\nECharts\r\n\u6570\u636e\u53ef\u89c6\u5316\u5728\u8fc7\u53bb\u51e0\u5e74\u4e2d\u53d6\u5f97\u4e86\u5de8\u5927\u8fdb\u5c55\u3002\u5f00\u53d1\u4eba\u5458\u5bf9\u53ef\u89c6\u5316\u4ea7\u54c1\u7684\u671f\u671b\u4e0d\u518d\u662f\u7b80\u5355\u7684\u56fe\u8868\u521b\u5efa\u5de5\u5177\uff0c\u800c\u662f\u5728\u4ea4\u4e92\u3001\u6027\u80fd\u3001\u6570\u636e\u5904\u7406\u7b49\u65b9\u9762\u6709\u66f4\u9ad8\u7684\u8981\u6c42\u3002\r\nchart.setOption({\r\n    color: [\r\n        ","username":"","tagsname":null,"tagsid":"","catesname":null,"catesid":"","createtime":"1636358556"},"highlight":{"text":["#em#深#/em##em#入#/em##em#理#/em##em#解#/em##em#JAVA#/em##em#虚#/em##em#拟#/em##em#机#/em#"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"203479733","_score":35.608833,"_source":{"id":"203479733","text":"\u6df1\u5165\u7406\u89e3Java\u865a\u62df\u673a","intro":"\u76ee\u5f55\n\nECharts\n\u5f02\u6b65\u52a0\u8f7d\n\n\n\nECharts\r\n\u6570\u636e\u53ef\u89c6\u5316\u5728\u8fc7\u53bb\u51e0\u5e74\u4e2d\u53d6\u5f97\u4e86\u5de8\u5927\u8fdb\u5c55\u3002\u5f00\u53d1\u4eba\u5458\u5bf9\u53ef\u89c6\u5316\u4ea7\u54c1\u7684\u671f\u671b\u4e0d\u518d\u662f\u7b80\u5355\u7684\u56fe\u8868\u521b\u5efa\u5de5\u5177\uff0c\u800c\u662f\u5728\u4ea4\u4e92\u3001\u6027\u80fd\u3001\u6570\u636e\u5904\u7406\u7b49\u65b9\u9762\u6709\u66f4\u9ad8\u7684\u8981\u6c42\u3002\r\nchart.setOption({\r\n    color: [\r\n        ","username":"","tagsname":null,"tagsid":"","catesname":null,"catesid":"","createtime":"1620078991"},"highlight":{"text":["#em#深#/em##em#入#/em##em#理#/em##em#解#/em##em#Java#/em##em#虚#/em##em#拟#/em##em#机#/em#"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"62552","_score":35.11612,"_source":{"id":"62552","text":"\u6df1\u5165\u7406\u89e3JVM\uff08\u4e00\uff09\u865a\u62df\u673a\u5185\u5b58","intro":"\u76ee\u5f55\n\nECharts\n\u5f02\u6b65\u52a0\u8f7d\n\n\n\nECharts\r\n\u6570\u636e\u53ef\u89c6\u5316\u5728\u8fc7\u53bb\u51e0\u5e74\u4e2d\u53d6\u5f97\u4e86\u5de8\u5927\u8fdb\u5c55\u3002\u5f00\u53d1\u4eba\u5458\u5bf9\u53ef\u89c6\u5316\u4ea7\u54c1\u7684\u671f\u671b\u4e0d\u518d\u662f\u7b80\u5355\u7684\u56fe\u8868\u521b\u5efa\u5de5\u5177\uff0c\u800c\u662f\u5728\u4ea4\u4e92\u3001\u6027\u80fd\u3001\u6570\u636e\u5904\u7406\u7b49\u65b9\u9762\u6709\u66f4\u9ad8\u7684\u8981\u6c42\u3002\r\nchart.setOption({\r\n    color: [\r\n        ","username":"xuyuanpeng","tagsname":"Java\u3001JVM","tagsid":"[\"12853\"]","catesname":"java","catesid":"[\"107\"]","createtime":"1561629200"},"highlight":{"text":["#em#深#/em##em#入#/em##em#理#/em##em#解#/em##em#JVM#/em#(一)#em#虚#/em##em#拟#/em##em#机#/em#内存"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"733738","_score":34.818554,"_source":{"id":"733738","text":"\u4ec0\u4e48\u662fHotSpot VM & \u6df1\u5165\u7406\u89e3Java\u865a\u62df\u673a JVM","intro":"\u76ee\u5f55\n\nECharts\n\u5f02\u6b65\u52a0\u8f7d\n\n\n\nECharts\r\n\u6570\u636e\u53ef\u89c6\u5316\u5728\u8fc7\u53bb\u51e0\u5e74\u4e2d\u53d6\u5f97\u4e86\u5de8\u5927\u8fdb\u5c55\u3002\u5f00\u53d1\u4eba\u5458\u5bf9\u53ef\u89c6\u5316\u4ea7\u54c1\u7684\u671f\u671b\u4e0d\u518d\u662f\u7b80\u5355\u7684\u56fe\u8868\u521b\u5efa\u5de5\u5177\uff0c\u800c\u662f\u5728\u4ea4\u4e92\u3001\u6027\u80fd\u3001\u6570\u636e\u5904\u7406\u7b49\u65b9\u9762\u6709\u66f4\u9ad8\u7684\u8981\u6c42\u3002\r\nchart.setOption({\r\n    color: [\r\n        ","username":"charlesblc","tagsname":"","tagsid":"","catesname":null,"catesid":"","createtime":"1639548392"},"highlight":{"text":["什么是HotSpot VM & #em#深#/em##em#入#/em##em#理#/em##em#解#/em##em#Java#/em##em#虚#/em##em#拟#/em##em#机#/em# #em#JVM#/em#"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"65575","_score":34.29131,"_source":{"id":"65575","text":"\u6df1\u5165\u7406\u89e3Java\u865a\u62df\u673a\u4e8c","intro":"\u76ee\u5f55\n\nECharts\n\u5f02\u6b65\u52a0\u8f7d\n\n\n\nECharts\r\n\u6570\u636e\u53ef\u89c6\u5316\u5728\u8fc7\u53bb\u51e0\u5e74\u4e2d\u53d6\u5f97\u4e86\u5de8\u5927\u8fdb\u5c55\u3002\u5f00\u53d1\u4eba\u5458\u5bf9\u53ef\u89c6\u5316\u4ea7\u54c1\u7684\u671f\u671b\u4e0d\u518d\u662f\u7b80\u5355\u7684\u56fe\u8868\u521b\u5efa\u5de5\u5177\uff0c\u800c\u662f\u5728\u4ea4\u4e92\u3001\u6027\u80fd\u3001\u6570\u636e\u5904\u7406\u7b49\u65b9\u9762\u6709\u66f4\u9ad8\u7684\u8981\u6c42\u3002\r\nchart.setOption({\r\n    color: [\r\n        ","username":"xlecho","tagsname":"","tagsid":"[]","catesname":"","catesid":"[]","createtime":"1563593174"},"highlight":{"text":["#em#深#/em##em#入#/em##em#理#/em##em#解#/em##em#Java#/em##em#虚#/em##em#拟#/em##em#机#/em#二"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"883024","_score":34.29131,"_source":{"id":"883024","text":"\u6df1\u5165\u7406\u89e3Java\u865a\u62df\u673a\uff08\u4e00\uff09","intro":"\u76ee\u5f55\n\nECharts\n\u5f02\u6b65\u52a0\u8f7d\n\n\n\nECharts\r\n\u6570\u636e\u53ef\u89c6\u5316\u5728\u8fc7\u53bb\u51e0\u5e74\u4e2d\u53d6\u5f97\u4e86\u5de8\u5927\u8fdb\u5c55\u3002\u5f00\u53d1\u4eba\u5458\u5bf9\u53ef\u89c6\u5316\u4ea7\u54c1\u7684\u671f\u671b\u4e0d\u518d\u662f\u7b80\u5355\u7684\u56fe\u8868\u521b\u5efa\u5de5\u5177\uff0c\u800c\u662f\u5728\u4ea4\u4e92\u3001\u6027\u80fd\u3001\u6570\u636e\u5904\u7406\u7b49\u65b9\u9762\u6709\u66f4\u9ad8\u7684\u8981\u6c42\u3002\r\nchart.setOption({\r\n    color: [\r\n        ","username":"aishangJava","tagsname":null,"tagsid":"","catesname":null,"catesid":"","createtime":"1638193222"},"highlight":{"text":["#em#深#/em##em#入#/em##em#理#/em##em#解#/em##em#Java#/em##em#虚#/em##em#拟#/em##em#机#/em#(一)"]}}]}}"
127.0.0.1:9200
URL: http://192.168.101.128/searchcore/index.php/cihere_cn_db/_search
REQUEST:
Array
(
    [query] => Array
        (
            [match] => Array
                (
                    [title] => Array
                        (
                            [query] => 《深入理解Java虚拟机》- JVM异常处理
                        )

                )

        )

    [highlight] => Array
        (
            [fields] => Array
                (
                    [title] => stdClass Object
                        (
                        )

                )

            [pre_tags] => #em#
            [post_tags] => #/em#
        )

    [from] => 0
)
RESPONSE:
bool(false)
127.0.0.1:9200
URL: http://127.0.0.1:9200/likecs_down_db/_search
REQUEST:
Array
(
    [query] => Array
        (
            [bool] => Array
                (
                    [must] => Array
                        (
                            [0] => Array
                                (
                                    [match] => Array
                                        (
                                            [title] => Array
                                                (
                                                    [query] => 《深入理解Java虚拟机》- JVM异常处理
                                                )

                                        )

                                )

                        )

                    [must_not] => Array
                        (
                            [0] => Array
                                (
                                    [term] => Array
                                        (
                                            [cate1] => 电子书籍
                                        )

                                )

                        )

                )

        )

    [highlight] => Array
        (
            [fields] => Array
                (
                    [title] => stdClass Object
                        (
                        )

                )

            [pre_tags] => #em#
            [post_tags] => #/em#
        )

    [size] => 5
    [from] => 0
)
RESPONSE:
string(3135) "{"took":8,"timed_out":false,"_shards":{"total":1,"successful":1,"skipped":0,"failed":0},"hits":{"total":{"value":8563,"relation":"eq"},"max_score":24.787739,"hits":[{"_index":"likecs_down_db","_type":"_doc","_id":"59339","_score":24.787739,"_source":{"id":"59339","title":"Java\u865a\u62df\u673a\u8c03\u4f18\u539f\u7406\u53ca\u6280\u5de7 \u4e2d\u6587WORD\u7248","spidertime":"1623066664","contenttime":"1673140712","pageimage":"https:\/\/img.jbzj.com\/do\/uploads\/litimg\/161128\/095411591V6.png","tag":"Java|\u865a\u62df\u673a|\u8c03\u4f18\u539f\u7406|\u6280\u5de7","cate1":"\u7535\u5b50\u4e66\u7c4d","cate2":"\u7f16\u7a0b\u5f00\u53d1","cate3":"java\u7535\u5b50\u4e66","attr1":"217KB"},"highlight":{"title":["#em#Java#/em##em#虚#/em##em#拟#/em##em#机#/em#调优原#em#理#/em#及技巧 中文WORD版"]}},{"_index":"likecs_down_db","_type":"_doc","_id":"59399","_score":23.842793,"_source":{"id":"59399","title":"JAVA\u5e38\u89c1\u5f02\u5e38\u89e3\u6790 \u4e2d\u6587word\u7248","spidertime":"1623066746","contenttime":"1624725234","pageimage":"https:\/\/img.jbzj.com\/do\/uploads\/litimg\/160815\/0Z931596339.png","tag":"Java","cate1":"\u7535\u5b50\u4e66\u7c4d","cate2":"\u7f16\u7a0b\u5f00\u53d1","cate3":"java\u7535\u5b50\u4e66","attr1":"20.3KB"},"highlight":{"title":["#em#JAVA#/em##em#常#/em#见#em#异#/em##em#常#/em##em#解#/em#析 中文word版"]}},{"_index":"likecs_down_db","_type":"_doc","_id":"72393","_score":23.71645,"_source":{"id":"72393","title":"java\u865a\u62df\u673a\u5783\u573e\u56de\u6536\u8be6\u89e3 \u4e2d\u6587WORD\u7248","spidertime":"1623128570","contenttime":"1679750641","pageimage":"https:\/\/img.jbzj.com\/do\/uploads\/litimg\/160819\/09204A96304.png","tag":"Java|java\u5783\u573e\u56de\u6536","cate1":"\u7535\u5b50\u4e66\u7c4d","cate2":"\u7f16\u7a0b\u5f00\u53d1","cate3":"java\u7535\u5b50\u4e66","attr1":"141KB"},"highlight":{"title":["#em#java#/em##em#虚#/em##em#拟#/em##em#机#/em#垃圾回收详#em#解#/em# 中文WORD版"]}},{"_index":"likecs_down_db","_type":"_doc","_id":"68041","_score":23.008543,"_source":{"id":"68041","title":"asp.net\u6e05\u7af9\u865a\u62df\u4e3b\u673a\u7ba1\u7406\u7cfb\u7edf v5.9.4","spidertime":"1623079087","contenttime":"1624910780","pageimage":"https:\/\/img.jbzj.com\/do\/uploads\/litimg\/140922\/15355510D09.gif","tag":"\u4e3b\u673a\u7ba1\u7406\u7cfb\u7edf|\u865a\u62df\u4e3b\u673a\u7ba1\u7406","cate1":"\u6e90\u7801\u4e0b\u8f7d","cate2":"asp.net\u6e90\u7801","cate3":"\u4e3b\u673a\u57df\u540d","attr1":"8.56MB"},"highlight":{"title":["asp.net清竹#em#虚#/em##em#拟#/em#主#em#机#/em#管#em#理#/em#系统 v5.9.4"]}},{"_index":"likecs_down_db","_type":"_doc","_id":"58777","_score":23.008543,"_source":{"id":"58777","title":"Linux\u865a\u62df\u673aXen\u67b6\u6784\u4e0e\u539f\u7406 WORD\u7248","spidertime":"1623065907","contenttime":"1680489841","pageimage":"https:\/\/img.jbzj.com\/do\/uploads\/litimg\/170407\/0S1025b3F.png","tag":"Linux|\u865a\u62df\u673a|Xen|\u67b6\u6784","cate1":"\u7535\u5b50\u4e66\u7c4d","cate2":"Linux_unix","attr1":"710KB"},"highlight":{"title":["Linux#em#虚#/em##em#拟#/em##em#机#/em#Xen架构与原#em#理#/em# WORD版"]}}]}}"
《深入理解Java虚拟机》- JVM异常处理 - 爱码网
chenscript

一、Java异常

在程序中,错误可能产生于程序员没有预料到的各种情况,或者超出程序员可控范围的环境,例如用户的坏数据、试图打开一个不存在的文件等。为了能够及时有效地处理程序中的运行错误,Java 专门引入了异常类。

二、Java常见异常分类

三、为什么产生异常

在 Java 中一个异常的产生,主要有如下三种原因:

  1. Java 内部错误发生异常,Java 虚拟机产生的异常。
  2. 编写的程序代码中的错误所产生的异常,例如空指针异常、数组越界异常等。这种异常称为未检査的异常,一般需要在某些类中集中处理这些异常。
  3. 通过 throw 语句手动生成的异常,这种异常称为检査的异常,一般用来告知该方法的调用者一些必要的信息。

四、碰到异常怎么办?

我们把生成异常对象,并把它提交给运行时系统的过程称为拋出(throw)异常。运行时系统在方法的调用栈中查找,直到找到能够处理该类型异常的对象,这一个过程称为捕获(catch)异常。

Java 异常强制用户考虑程序的强健性和安全性。异常处理不应用来控制程序的正常流程,其主要作用是捕获程序在运行时发生的异常并进行相应处理。编写代码处理某个方法可能出现的异常,可遵循如下三个原则:

  1. 在当前方法声明中使用 try catch 语句捕获异常。
  2. 一个方法被覆盖时,覆盖它的方法必须拋出相同的异常或异常的子类。
  3. 如果父类抛出多个异常,则覆盖方法必须拋出那些异常的一个子集,而不能拋出新异常。

(引用:http://c.biancheng.net/view/1038.html)

五、从JVM角度看异常的产生与表达

 先看示例代码:

public class Foo {
  private int tryBlock;
  private int catchBlock;
  private int finallyBlock;
  private int methodExit;


  public void test() {
    try {
      tryBlock = 0;
    } catch (Exception e) {
      catchBlock = 1;
    } finally {
      finallyBlock = 2;
    }
    methodExit = 3;
  }
}

这段代码是一段简单的异常处理代码,我们可以通过javap查看class文件的表达形式:

public void test();
    descriptor: ()V
    flags: ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=1
         0: aload_0
         1: iconst_0
         2: putfield      #2                  // Field tryBlock:I
         5: aload_0
         6: iconst_2
         7: putfield      #3                  // Field finallyBlock:I
        10: goto          35
        13: astore_1
        14: aload_0
        15: iconst_1
        16: putfield      #5                  // Field catchBlock:I
        19: aload_0
        20: iconst_2
        21: putfield      #3                  // Field finallyBlock:I
        24: goto          35
        27: astore_2
        28: aload_0
        29: iconst_2
        30: putfield      #3                  // Field finallyBlock:I
        33: aload_2
        34: athrow
        35: aload_0
        36: iconst_3
        37: putfield      #6                  // Field methodExit:I
        40: return
      Exception table:
         from    to  target type
             0     5    13   Class java/lang/Exception
             0     5    27   any
            13    19    27   any
      LineNumberTable:
        line 10: 0
        line 14: 5
        line 15: 10
        line 11: 13
        line 12: 14
        line 14: 19
        line 15: 24
        line 14: 27
        line 16: 35
        line 17: 40
      StackMapTable: number_of_entries = 3
        frame_type = 77 /* same_locals_1_stack_item */
          stack = [ class java/lang/Exception ]
        frame_type = 77 /* same_locals_1_stack_item */
          stack = [ class java/lang/Throwable ]
        frame_type = 7 /* same */

从字节码中的注释可以看到,finally块被添加到了三个地方。也就是说,在从java代码翻译成字节码文件时,jvm会为try块和catch块生成finally 块里的逻辑。但是想想,为什么是三个“finally”呢? 最后一个finally 是为在catch块中的代码执行时发生异常而准备的。那么,有人会问,finally块的代码如果还有报错怎么办呢? 这里,引进没有被本人证实的事实:会往外抛出去,给上一层代码进行处理。

这里说明一下黄色部分的字节码:

exception table 表示异常表,异常表是用于存储代码中涉及到的所有异常,每个类编译后,都会跟随一个异常表,如果发生异常,首先在异常表中查找对应的行(即代码中相应的 try{}catch(){}代码块),如果找到,则跳转到异常处理代码执行,如果没有找到,则返回(执行 finally 之后),并 copy 异常的应用给父调用者,接着查询父调用的异常表,以此类推。

from...to:表示异常处理器监控的范围(比如try块包含的代码)

target:表示异常处理器起始的位置(比如catch块包含的代码)

type:就是处理的异常

那么,发生异常后,如何对照异常表?

当程序触发异常后,Java虚拟机会从上到下遍历异常表中的条目。当触发异常的字节码的索引值在某个异常表条目的监控范围内,Java虚拟机会判断所抛出的异常和该条目想要捕获的异常是否匹配。如果匹配,Java虚拟机会将控制流转移到该条目的target指针指向的代码上,继续程序运行。

下面,提及的字节码解析一下异常表:

程序开始,运行到1:iconst_0时,发生Exception异常,此时程序会去便利方法表,从第一行开始,检测到 0<1<5,符合第一条目检测范围,接着再查看抛出的异常为Exception,符合该条目捕获处理的异常,后跳转至序号13字节码继续运行。若再在14:aload_0发生异常时,程序就又跳到异常表,查找匹配异常条目,最终找到target为序号为27的字节码,然后便一直往下走完所有字节码。

上例子中,属于在catch块发生异常,所以会看到字节码后还有一个athrow的步骤,也就是往外抛出异常啦。

 

好了,Jvm看异常到此。

(引:极客时间)

分类:

技术点:

相关文章:

  • 2021-11-08
  • 2019-06-27
  • 2021-12-15
  • 2019-07-20
  • 2021-11-29
猜你喜欢
  • 2021-09-30
  • 2021-11-15
  • 2021-11-07
  • 2021-06-29
  • 2021-11-29
  • 2021-11-01
  • 2021-08-25
相关资源
相似解决方案