{"id":11305,"date":"2023-08-31T22:44:44","date_gmt":"2023-08-31T14:44:44","guid":{"rendered":"https:\/\/blog.iyatt.com\/?p=11305"},"modified":"2024-05-10T10:04:42","modified_gmt":"2024-05-10T02:04:42","slug":"%e5%85%a5%e5%9d%91-java","status":"publish","type":"post","link":"https:\/\/blog.iyatt.com\/?p=11305","title":{"rendered":"Java \u5b66\u4e60\u8bb0\u5f55"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_82_2 ez-toc-wrap-center counter-hierarchy ez-toc-counter ez-toc-light-blue ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title ez-toc-toggle\" style=\"cursor:pointer\">\u76ee\u5f55<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E5%89%8D%E8%A8%80\" >\u524d\u8a00<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E7%AE%80%E5%8D%95_CS_%E9%80%9A%E4%BF%A1\" >\u7b80\u5355 CS \u901a\u4fe1<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E5%8F%AF%E5%8F%98%E5%8F%82%E6%95%B0\" >\u53ef\u53d8\u53c2\u6570<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1\" >\u9762\u5411\u5bf9\u8c61<\/a><ul class='ez-toc-list-level-2' ><li class='ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E7%B1%BB%E5%88%9D%E6%AD%A5\" >\u7c7b\u521d\u6b65<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E9%87%8D%E8%BD%BD\" >\u91cd\u8f7d<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E6%9E%84%E9%80%A0%E6%96%B9%E6%B3%95\" >\u6784\u9020\u65b9\u6cd5<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E5%B0%81%E8%A3%85\" >\u5c01\u88c5<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E7%BB%A7%E6%89%BF\" >\u7ee7\u627f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E9%87%8D%E5%86%99\" >\u91cd\u5199<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E7%BB%A7%E6%89%BF%E4%B8%AD%E7%9A%84%E6%9E%84%E9%80%A0\" >\u7ee7\u627f\u4e2d\u7684\u6784\u9020<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E5%A4%9A%E6%80%81\" >\u591a\u6001<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#static\" >static<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#final\" >final<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E6%8E%A5%E5%8F%A3%E5%88%9D%E6%AD%A5\" >\u63a5\u53e3\u521d\u6b65<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E5%A4%9A%E7%BB%A7%E6%89%BF\" >\u591a\u7ee7\u627f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-17\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E5%B8%B8%E9%87%8F%E5%BA%94%E7%94%A8\" >\u5e38\u91cf\u5e94\u7528<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-18\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E6%A0%87%E5%87%86%E5%BA%94%E7%94%A8\" >\u6807\u51c6\u5e94\u7528<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-19\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#Object_%E7%B1%BB\" >Object \u7c7b<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-20\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E6%8E%A5%E5%8F%A3%E7%9A%84%E9%BB%98%E8%AE%A4%E6%96%B9%E6%B3%95%E5%92%8C%E9%9D%99%E6%80%81%E6%96%B9%E6%B3%95\" >\u63a5\u53e3\u7684\u9ed8\u8ba4\u65b9\u6cd5\u548c\u9759\u6001\u65b9\u6cd5<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-21\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E5%8C%BF%E5%90%8D%E7%B1%BB\" >\u533f\u540d\u7c7b<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-22\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E5%9B%9E%E8%B0%83\" >\u56de\u8c03<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-23\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E6%B3%9B%E5%9E%8B\" >\u6cdb\u578b<\/a><ul class='ez-toc-list-level-2' ><li class='ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-24\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E5%88%9D%E6%AD%A5%E4%BD%BF%E7%94%A8\" >\u521d\u6b65\u4f7f\u7528<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-25\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E6%B3%9B%E5%9E%8B%E7%B1%BB\" >\u6cdb\u578b\u7c7b<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-26\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E7%BB%A7%E6%89%BF%E4%B8%AD%E7%9A%84%E6%B3%9B%E5%9E%8B\" >\u7ee7\u627f\u4e2d\u7684\u6cdb\u578b<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-27\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E6%B3%9B%E5%9E%8B%E6%8E%A5%E5%8F%A3\" >\u6cdb\u578b\u63a5\u53e3<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-28\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E6%B3%9B%E5%9E%8B%E6%96%B9%E6%B3%95\" >\u6cdb\u578b\u65b9\u6cd5<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-29\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E7%B1%BB%E5%9E%8B%E9%80%9A%E9%85%8D%E7%AC%A6\" >\u7c7b\u578b\u901a\u914d\u7b26<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-30\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E6%97%A0%E7%95%8C%E9%80%9A%E9%85%8D%E7%AC%A6\" >\u65e0\u754c\u901a\u914d\u7b26<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-31\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E4%B8%8A%E7%95%8C%E9%80%9A%E9%85%8D%E7%AC%A6\" >\u4e0a\u754c\u901a\u914d\u7b26<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-32\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E4%B8%8B%E7%95%8C%E9%80%9A%E9%85%8D%E7%AC%A6\" >\u4e0b\u754c\u901a\u914d\u7b26<\/a><\/li><\/ul><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-33\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E5%BC%82%E5%B8%B8\" >\u5f02\u5e38<\/a><ul class='ez-toc-list-level-2' ><li class='ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-34\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E5%BC%82%E5%B8%B8%E6%8D%95%E8%8E%B7\" >\u5f02\u5e38\u6355\u83b7<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-35\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E5%B8%B8%E8%A7%81%E5%BC%82%E5%B8%B8\" >\u5e38\u89c1\u5f02\u5e38<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-36\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E8%87%AA%E5%AE%9A%E4%B9%89%E5%BC%82%E5%B8%B8\" >\u81ea\u5b9a\u4e49\u5f02\u5e38<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-37\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E5%B8%B8%E8%A7%81%E5%BC%82%E5%B8%B8%E7%BB%A7%E6%89%BF%E5%85%B3%E7%B3%BB\" >\u5e38\u89c1\u5f02\u5e38\u7ee7\u627f\u5173\u7cfb<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-38\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#IO\" >IO<\/a><ul class='ez-toc-list-level-2' ><li class='ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-39\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E5%86%99%E6%96%87%E4%BB%B6\" >\u5199\u6587\u4ef6<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-40\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E5%A4%8D%E5%88%B6%E6%96%87%E4%BB%B6%E5%86%85%E5%AE%B9\" >\u590d\u5236\u6587\u4ef6\u5185\u5bb9<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-41\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E7%BC%93%E5%86%B2\" >\u7f13\u51b2<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-42\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E7%BA%BF%E7%A8%8B\" >\u7ebf\u7a0b<\/a><ul class='ez-toc-list-level-2' ><li class='ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-43\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E7%AE%80%E5%8D%95%E5%A4%9A%E7%BA%BF%E7%A8%8B\" >\u7b80\u5355\u591a\u7ebf\u7a0b<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-44\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#Lambda_%E8%A1%A8%E8%BE%BE%E5%BC%8F\" >Lambda \u8868\u8fbe\u5f0f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-45\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#Runnable_%E5%8C%BF%E5%90%8D%E7%B1%BB\" >Runnable \u533f\u540d\u7c7b<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-46\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E7%BA%BF%E7%A8%8B%E6%B1%A0\" >\u7ebf\u7a0b\u6c60<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-47\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E5%9B%BA%E5%AE%9A%E7%BA%BF%E7%A8%8B%E6%95%B0\" >\u56fa\u5b9a\u7ebf\u7a0b\u6570<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-48\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E5%8A%A8%E6%80%81%E7%BA%BF%E7%A8%8B%E6%95%B0\" >\u52a8\u6001\u7ebf\u7a0b\u6570<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-49\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E5%8D%95%E4%B8%80%E7%BA%BF%E7%A8%8B\" >\u5355\u4e00\u7ebf\u7a0b<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-50\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E5%AE%9A%E6%97%B6%E8%B0%83%E5%BA%A6%E7%BA%BF%E7%A8%8B\" >\u5b9a\u65f6\u8c03\u5ea6\u7ebf\u7a0b<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-51\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E7%BA%BF%E7%A8%8B%E5%91%BD%E5%90%8D\" >\u7ebf\u7a0b\u547d\u540d<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-52\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E4%BC%A0%E5%8F%82\" >\u4f20\u53c2<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-53\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E6%9E%84%E9%80%A0\" >\u6784\u9020<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-54\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E5%9B%9E%E8%B0%83-2\" >\u56de\u8c03<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-55\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E5%90%8C%E6%AD%A5\" >\u540c\u6b65<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-56\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E7%BA%BF%E7%A8%8B%E5%AE%89%E5%85%A8\" >\u7ebf\u7a0b\u5b89\u5168<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-57\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#synchronized_%E5%90%8C%E6%AD%A5\" >synchronized \u540c\u6b65<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-58\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E5%8E%9F%E5%AD%90%E7%B1%BB%E5%9E%8B\" >\u539f\u5b50\u7c7b\u578b<\/a><\/li><\/ul><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-59\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E6%96%87%E6%A1%A3%E6%B3%A8%E9%87%8A\" >\u6587\u6863\u6ce8\u91ca<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-60\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E6%89%93%E5%8C%85_jar\" >\u6253\u5305 jar<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-61\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#package_%E2%80%93_%E5%8C%85\" >package &#8211; \u5305<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-62\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#Maven_%E5%9F%BA%E7%A1%80\" >Maven \u57fa\u7840<\/a><ul class='ez-toc-list-level-2' ><li class='ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-63\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E4%B8%8B%E8%BD%BD%E5%AE%89%E8%A3%85\" >\u4e0b\u8f7d\u5b89\u88c5<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-64\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E6%9C%AC%E5%9C%B0%E4%BB%93%E5%BA%93%E8%B7%AF%E5%BE%84\" >\u672c\u5730\u4ed3\u5e93\u8def\u5f84<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-65\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E8%BF%9C%E7%A8%8B%E4%BB%93%E5%BA%93%E9%85%8D%E7%BD%AE%E5%9B%BD%E5%86%85%E9%95%9C%E5%83%8F\" >\u8fdc\u7a0b\u4ed3\u5e93\u914d\u7f6e\u56fd\u5185\u955c\u50cf<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-66\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E9%A1%B9%E7%9B%AE%E7%BB%93%E6%9E%84\" >\u9879\u76ee\u7ed3\u6784<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-67\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E7%BC%96%E8%AF%91%E5%B9%B6%E6%89%A7%E8%A1%8C\" >\u7f16\u8bd1\u5e76\u6267\u884c<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-68\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E5%A4%9A%E4%B8%AA%E4%B8%BB%E7%B1%BB\" >\u591a\u4e2a\u4e3b\u7c7b<\/a><\/li><\/ul><\/li><\/ul><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-69\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#JSON_%E8%A7%A3%E6%9E%90_%E2%80%93_Gson\" >JSON \u89e3\u6790 &#8211; Gson<\/a><ul class='ez-toc-list-level-2' ><li class='ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-70\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E5%9F%BA%E6%9C%AC%E7%A4%BA%E4%BE%8B\" >\u57fa\u672c\u793a\u4f8b<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-71\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E5%AF%B9%E8%B1%A1%E7%A4%BA%E4%BE%8B\" >\u5bf9\u8c61\u793a\u4f8b<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-72\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E6%95%B0%E7%BB%84%E7%A4%BA%E4%BE%8B\" >\u6570\u7ec4\u793a\u4f8b<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-73\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E9%9B%86%E5%90%88%E7%A4%BA%E4%BE%8B\" >\u96c6\u5408\u793a\u4f8b<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-74\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#Map_%E7%A4%BA%E4%BE%8B\" >Map \u793a\u4f8b<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-75\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E8%BE%83%E5%A4%8D%E6%9D%82%E7%9A%84%E9%94%AE\" >\u8f83\u590d\u6742\u7684\u952e<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-76\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E6%B3%9B%E5%9E%8B-2\" >\u6cdb\u578b<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-77\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E5%AF%B9%E8%B1%A1%E5%AD%98%E5%82%A8%E4%B8%8E%E5%88%9B%E5%BB%BA\" >\u5bf9\u8c61\u5b58\u50a8\u4e0e\u521b\u5efa<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-78\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E5%BC%95%E7%94%A8_jar_%E5%8C%85\" >\u5f15\u7528 jar \u5305<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-79\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E5%88%9D%E7%89%88%E5%AE%8C%E6%88%90\" >\u521d\u7248\u5b8c\u6210<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-80\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E5%8D%95%E4%BE%8B%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F\" >\u5355\u4f8b\u8bbe\u8ba1\u6a21\u5f0f<\/a><ul class='ez-toc-list-level-2' ><li class='ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-81\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E9%A5%BF%E6%B1%89%E5%8D%95%E4%BE%8B%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F\" >\u997f\u6c49\u5355\u4f8b\u8bbe\u8ba1\u6a21\u5f0f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-82\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E6%87%92%E6%B1%89%E5%8D%95%E4%BE%8B%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F\" >\u61d2\u6c49\u5355\u4f8b\u8bbe\u8ba1\u6a21\u5f0f<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-83\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E6%9E%9A%E4%B8%BE\" >\u679a\u4e3e<\/a><ul class='ez-toc-list-level-2' ><li class='ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-84\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E5%BA%94%E7%94%A8\" >\u5e94\u7528<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-85\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F\" >\u6b63\u5219\u8868\u8fbe\u5f0f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-86\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E9%81%8D%E5%8E%86_Collection_%E9%9B%86%E5%90%88\" >\u904d\u5386 Collection \u96c6\u5408<\/a><ul class='ez-toc-list-level-2' ><li class='ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-87\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E8%BF%AD%E4%BB%A3%E5%99%A8\" >\u8fed\u4ee3\u5668<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-88\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#for_%E9%81%8D%E5%8E%86\" >for \u904d\u5386<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-89\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#Lambda_%E8%A1%A8%E8%BE%BE%E5%BC%8F%E9%81%8D%E5%8E%86\" >Lambda \u8868\u8fbe\u5f0f\u904d\u5386<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-90\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E5%88%9D%E7%89%88%E4%BF%AE%E8%AE%A2%E9%87%8D%E4%BA%A4_%E2%80%93_%E5%9F%BA%E6%9C%AC%E5%AE%8C%E6%88%90\" >\u521d\u7248\u4fee\u8ba2\u91cd\u4ea4 &#8211; \u57fa\u672c\u5b8c\u6210<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-91\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E7%BA%BF%E7%A8%8B_Callable_%E5%AE%9E%E7%8E%B0_%E2%80%93_%E5%8F%AF%E8%8E%B7%E5%8F%96%E7%BA%BF%E7%A8%8B%E6%89%A7%E8%A1%8C%E7%BB%93%E6%9E%9C\" >\u7ebf\u7a0b Callable \u5b9e\u73b0 &#8211; \u53ef\u83b7\u53d6\u7ebf\u7a0b\u6267\u884c\u7ed3\u679c<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-92\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E7%BA%BF%E7%A8%8B%E5%90%8C%E6%AD%A5\" >\u7ebf\u7a0b\u540c\u6b65<\/a><ul class='ez-toc-list-level-2' ><li class='ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-93\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#Lock_%E9%94%81\" >Lock \u9501<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-94\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E5%87%BD%E6%95%B0%E5%BC%8F%E6%8E%A5%E5%8F%A3\" >\u51fd\u6570\u5f0f\u63a5\u53e3<\/a><ul class='ez-toc-list-level-2' ><li class='ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-95\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#Consumer\" >Consumer<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-96\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#Supplier\" >Supplier<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-97\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#Function\" >Function<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-98\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#Predicate\" >Predicate<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-99\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#BiFunction\" >BiFunction<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-100\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E5%AE%9A%E4%B9%89%E5%87%BD%E6%95%B0%E5%BC%8F%E6%8E%A5%E5%8F%A3\" >\u5b9a\u4e49\u51fd\u6570\u5f0f\u63a5\u53e3<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-101\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E5%8D%95%E5%85%83%E6%B5%8B%E8%AF%95_%E2%80%93_Junit_5\" >\u5355\u5143\u6d4b\u8bd5 &#8211; Junit 5<\/a><ul class='ez-toc-list-level-2' ><li class='ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-102\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E7%A4%BA%E4%BE%8B%E4%BB%A3%E7%A0%81\" >\u793a\u4f8b\u4ee3\u7801<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-103\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E6%B5%8B%E8%AF%95%E5%91%BD%E4%BB%A4\" >\u6d4b\u8bd5\u547d\u4ee4<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-104\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E5%8F%8D%E5%B0%84\" >\u53cd\u5c04<\/a><ul class='ez-toc-list-level-2' ><li class='ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-105\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E8%8E%B7%E5%8F%96%E7%B1%BB%E5%AF%B9%E8%B1%A1\" >\u83b7\u53d6\u7c7b\u5bf9\u8c61<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-106\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E8%8E%B7%E5%8F%96%E6%9E%84%E9%80%A0%E5%99%A8%E5%AF%B9%E8%B1%A1\" >\u83b7\u53d6\u6784\u9020\u5668\u5bf9\u8c61<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-107\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E8%8E%B7%E5%8F%96%E6%88%90%E5%91%98%E5%8F%98%E9%87%8F\" >\u83b7\u53d6\u6210\u5458\u53d8\u91cf<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-108\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E8%8E%B7%E5%8F%96%E6%88%90%E5%91%98%E6%96%B9%E6%B3%95\" >\u83b7\u53d6\u6210\u5458\u65b9\u6cd5<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-109\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E5%8F%8D%E5%B0%84%E4%BD%BF%E7%94%A8%E7%A4%BA%E4%BE%8B\" >\u53cd\u5c04\u4f7f\u7528\u793a\u4f8b<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-110\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E6%B3%A8%E8%A7%A3\" >\u6ce8\u89e3<\/a><ul class='ez-toc-list-level-2' ><li class='ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-111\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E8%87%AA%E5%AE%9A%E4%B9%89%E6%B3%A8%E8%A7%A3%E8%AF%AD%E6%B3%95\" >\u81ea\u5b9a\u4e49\u6ce8\u89e3\u8bed\u6cd5<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-112\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E5%85%83%E6%B3%A8%E8%A7%A3\" >\u5143\u6ce8\u89e3<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-113\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E8%A7%A3%E6%9E%90%E6%B3%A8%E8%A7%A3\" >\u89e3\u6790\u6ce8\u89e3<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-114\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E6%A8%A1%E6%8B%9F_junit_%E7%9A%84_Test_%E6%B3%A8%E8%A7%A3\" >\u6a21\u62df junit \u7684 @Test \u6ce8\u89e3<\/a><\/li><\/ul><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-115\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#XML_%E5%A4%84%E7%90%86_%E2%80%93_DOM4J\" >XML \u5904\u7406 &#8211; DOM4J<\/a><ul class='ez-toc-list-level-2' ><li class='ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-116\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E5%AF%B9%E8%B1%A1%E5%AD%98%E5%82%A8\" >\u5bf9\u8c61\u5b58\u50a8<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-117\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E5%AD%98%E5%82%A8%E4%B8%BA%E5%B1%9E%E6%80%A7\" >\u5b58\u50a8\u4e3a\u5c5e\u6027<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-118\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#%E5%AD%98%E5%82%A8%E4%B8%BA%E5%80%BC\" >\u5b58\u50a8\u4e3a\u503c<\/a><\/li><\/ul><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-119\" href=\"https:\/\/blog.iyatt.com\/?p=11305\/#try-catch-resource_%E4%BD%BF%E7%94%A8\" >try-catch-resource \u4f7f\u7528<\/a><\/li><\/ul><\/nav><\/div>\n<h1><span class=\"ez-toc-section\" id=\"%E5%89%8D%E8%A8%80\"><\/span>\u524d\u8a00<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>\u4eca\u5929\uff082023.8.31\uff09\u6709\u4e2a\u5b66\u957f\u95ee\u6211\u63a5\u4e0d\u63a5\u4e00\u4e2a\u5355\u5b50\uff0c\u5948\u4f55\u6ca1\u5b66\u8fc7 Java\uff0c\u672c\u6765\u4e0d\u6253\u7b97\u63a5\u7684\u3002\u53ea\u662f\u62a5\u916c\u611f\u89c9\u8fd8\u4e0d\u9519\uff0c\u5c31\u63a5\u4e86\u3002<\/p>\n<p>\u8981\u6c42\u7684\u5b8c\u6210\u65f6\u95f4\u662f\u572810\u6708\u521d\uff0c\u603b\u5171\u6709\u4e00\u4e2a\u6708\u5de6\u53f3\u7684\u65f6\u95f4\uff0cJava \u7528\u51e0\u5929\u5b66\u5b8c\u57fa\u7840\u5e94\u8be5\u6ca1\u5565\u95ee\u9898\uff0c\u518d\u5c1d\u8bd5\u5b8c\u6210\u9879\u76ee\u3002\u6709\u538b\u529b\uff0c\u5b66\u4e60\u7684\u6548\u7387\u4e5f\u6bd4\u8f83\u9ad8\u3002<\/p>\n<p>\u56e0\u4e3a\u9879\u76ee\u8981\u6c42\u4f7f\u7528 Java 8\uff0c\u6211\u5c31\u7528\u7684\u8fd9\u4e2a\u7248\u672c\u8d77\u59cb\u3002<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/08\/image-1693639227233.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 378px; --smush-placeholder-aspect-ratio: 378\/260;\" \/><\/p>\n<p>\u5176\u4e2d\u5728\u5165\u624b\u7684\u8fc7\u7a0b\u4e2d\u6709\u4e00\u4e9b\u6ce8\u610f\u5230\u7684\u7279\u70b9\uff0c\u8fd9\u91cc\u4f5c\u8bb0\u5f55\uff1a<\/p>\n<ul>\n<li>\u4e00\u4e2a\u6587\u4ef6\u4e2d\u7684\u516c\u5f00\u7c7b\u5fc5\u987b\u548c\u6587\u4ef6\u540d\u4e00\u6837\uff0c\u56e0\u6b64\u4e00\u4e2a\u6587\u4ef6\u4e2d\u53ea\u80fd\u6709\u4e00\u4e2a\u516c\u5f00\u7c7b\uff1b<\/li>\n<li>\u5165\u53e3\u51fd\u6570\uff08main\uff09\u5fc5\u987b\u662f public \u548c static \u7684\uff0c\u8fd4\u56de\u503c\u7c7b\u578b\u5fc5\u987b\u662f void\uff0c\u53c2\u6570\u662f\u4e00\u4e2a\u5b57\u7b26\u4e32\u6570\u7ec4\uff1b<\/li>\n<li>Java \u7a0b\u5e8f\u8981\u5148\u4f7f\u7528 javac \u540e\u8ddf\u4e0a\u6587\u4ef6\u540d\u7f16\u8bd1\uff0c\u7136\u540e\u4f1a\u751f\u6210 class \u6269\u5c55\u540d\u7684\u5b57\u8282\u6587\u4ef6\uff0c\u7136\u540e\u4f7f\u7528 java \u8ddf\u4e0a\u7c7b\u540d\u5c31\u80fd\u8fd0\u884c\uff08Java 11 \u5f00\u59cb\u53ef\u4ee5\u76f4\u63a5\u4f7f\u7528 java \u547d\u4ee4\u5b9e\u73b0\u7f16\u8bd1\u5e76\u8fd0\u884c\uff09\u3002\u5176\u4e2d\u5370\u8c61\u6bd4\u8f83\u6df1\u7684\u662f\u4e00\u4e2a Java \u6587\u4ef6\u4e2d\u53ef\u4ee5\u6709\u591a\u4e2a\u5165\u53e3\u51fd\u6570\uff0c\u5165\u53e3\u51fd\u6570\u5fc5\u987b\u653e\u5728\u7c7b\u4e2d\uff0c\u8fd0\u884c\u7684\u65f6\u5019\u6307\u5b9a\u54ea\u4e2a\u7c7b\u540d\u5c31\u53ef\u4ee5\u8fd0\u884c\u54ea\u4e2a\u7c7b\u4e2d\u7684\u5165\u53e3\u51fd\u6570\uff08\u8fd9\u4e00\u70b9\u548c C\/C++ \u5927\u4e0d\u540c\uff0c\u4ee5\u524d\u6ca1\u63a5\u89e6\u8fc7\u8fd9\u79cd\u5199\u6cd5\uff0cpy \u4e5f\u53ea\u662f\u6ca1\u6709\u5165\u53e3\u51fd\u6570\u7684\u89c4\u5b9a\uff09\u3002\u5728\u5f00\u53d1\u6d4b\u8bd5\u8fc7\u7a0b\u4e2d\u5012\u662f\u4e0d\u7528\u624b\u52a8\u53bb\u8fd0\u884c\u7f16\u8bd1\uff0c\u6211\u4f7f\u7528 VScode + \u63d2\u4ef6 + Java \u7684\u73af\u5883\uff0c\u4e00\u952e\u8fd0\u884c\u8c03\u8bd5\u66f4\u4e3a\u65b9\u4fbf\u3002\u5bf9\u4e8e Java \u5f00\u53d1\u4e5f\u6709\u4e00\u4e9b\u4e0d\u9519\u7684 IDE\uff0c\u6bd4\u5982 IDEA\u3001Eclipse \u4e4b\u7c7b\u7684\uff0c\u6211\u662f\u56e0\u4e3a\u5e73\u65f6\u6d89\u53ca C\/C++\/Py \u5f00\u53d1\uff0c\u7528 VScode \u53ef\u4ee5\u901a\u8fc7\u6269\u5c55\u517c\u5bb9\uff0c\u540c\u65f6\u505a\u5f00\u53d1\u90fd\u884c\uff0c\u4e0d\u7528\u5206\u522b\u53bb\u5b89\u88c5\u8f6f\u4ef6\uff0c\u4e5f\u6bd4\u8f83\u8f7b\u91cf\u3002\u4ee3\u7801\u7f16\u5199\u53ea\u9700\u8981\u4e00\u4e2a\u987a\u624b\u7684\u7f16\u8f91\u5668\uff0c\u7136\u540e\u901a\u8fc7\u63d2\u4ef6\u534f\u8c03\u8c03\u7528\u7f16\u8bd1\u5668\u6216\u89e3\u91ca\u5668\u8c03\u8bd5\u5c31\u884c\u3002<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/08\/image-1693538776195.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 669px; --smush-placeholder-aspect-ratio: 669\/598;\" \/><\/li>\n<li>\u5982\u679c\u51fa\u73b0\u201c\u7f16\u7801GBK\u7684\u4e0d\u53ef\u6620\u5c04\u5b57\u7b26\u201d\uff0c\u5c31\u662f\u7f16\u7801\u95ee\u9898\u3002\u78b0\u5230\u4e00\u6b21\u7528\u7ec8\u7aef\u7f16\u8bd1 UTF-8 \u7f16\u7801\u7684\u542b\u4e2d\u6587\u7684\u6587\u4ef6\u7684\u65f6\u5019\u51fa\u73b0\u62a5\u9519\uff0c\u7136\u540e\u662f\u719f\u6089\u7684\u4e71\u7801\uff0c\u8fd9\u4e2a\u5728\u7f16\u8bd1\u7684\u65f6\u5019\u52a0\u4e0a\u53c2\u6570<code>-encoding UTF-8<\/code>\u5c31\u548c\u6587\u4ef6\u7f16\u7801\u5339\u914d\u4e86\u3002\u7528 VScode \u7684\u65f6\u5019\u5e94\u8be5\u662f\u6839\u636e\u6587\u4ef6\u7f16\u7801\u81ea\u52a8\u5339\u914d\u4e86\u53c2\u6570\u7684\u3002\u6216\u8005\u662f\u6b63\u5e38\u7f16\u8bd1\u4e86\u542b\u6709\u4e2d\u6587\u7684\u6587\u4ef6\uff0c\u4f46\u662f\u8fd0\u884c\u8f93\u51fa\u4e71\u7801\uff0c\u4e5f\u53ef\u4ee5\u8fd9\u6837\u5904\u7406\u3002<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/08\/image-1693540028178.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 751px; --smush-placeholder-aspect-ratio: 751\/152;\" \/><\/li>\n<\/ul>\n<h1><span class=\"ez-toc-section\" id=\"%E7%AE%80%E5%8D%95_CS_%E9%80%9A%E4%BF%A1\"><\/span>\u7b80\u5355 CS \u901a\u4fe1<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>2023.9.1<\/p>\n<p>\u8fd0\u884c\u670d\u52a1\u7aef\uff0c\u901a\u8fc7\u53c2\u6570\u6307\u5b9a\u7aef\u53e3\uff0c\u518d\u8fd0\u884c\u5ba2\u6237\u7aef\uff0c\u901a\u8fc7\u53c2\u6570\u6307\u5b9a\u8fde\u63a5\u7684\u670d\u52a1\u5668\u5730\u5740\u548c\u7aef\u53e3\uff0c\u5efa\u7acb\u8fde\u63a5\u540e\uff0c\u5ba2\u6237\u7aef\u5411\u670d\u52a1\u5668\u7aef\u53d1\u9001\u6d88\u606f\uff0c\u670d\u52a1\u5668\u7aef\u4f1a\u5c06\u6536\u5230\u7684\u5185\u5bb9\u518d\u53d1\u9001\u56de\u5ba2\u6237\u7aef\uff0c\u53d1\u9001\u6d88\u606f\u201c\u518d\u89c1\u201d\u4f1a\u5173\u95ed\u8fde\u63a5\u3002<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/08\/image-1693541869941.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 963px; --smush-placeholder-aspect-ratio: 963\/483;\" \/><\/p>\n<p>\u670d\u52a1\u7aef<\/p>\n<pre><code class=\"language-java\">import java.io.*;\nimport java.net.*;\n\npublic class Server\n{\n    public static void main(String[] args) throws IOException\n    {\n        \/\/ \u901a\u8fc7\u547d\u4ee4\u53c2\u6570\u6307\u5b9a\u7aef\u53e3\n        int port = Integer.parseInt(args[0]);\n        \/\/ \u521b\u5efa\u4e00\u4e2a ServerSocket \u5bf9\u8c61\n        ServerSocket server_socket = new ServerSocket(port);\n        System.out.println(&quot;\u670d\u52a1\u5668\u542f\u52a8\uff0c\u7b49\u5f85\u5ba2\u6237\u7aef\u8fde\u63a5...&quot;);\n        \/\/ \u8c03\u7528 accept \u65b9\u6cd5\uff0c\u7b49\u5f85\u5ba2\u6237\u7aef\u8fde\u63a5\n        Socket socket = server_socket.accept();\n        System.out.println(&quot;\u5ba2\u6237\u7aef\u5df2\u8fde\u63a5\uff0c\u5730\u5740\u4e3a\uff1a&quot; + socket.getInetAddress());\n        \/\/ \u83b7\u53d6\u8f93\u5165\u8f93\u51fa\u6d41\n        BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));\n        PrintWriter out = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()), true);\n        \/\/ \u4f7f\u7528\u4e00\u4e2a\u5faa\u73af\uff0c\u4e0d\u65ad\u5730\u8bfb\u53d6\u548c\u53d1\u9001\u6d88\u606f\n        try\n        {\n            while (true)\n            {\n                \/\/ \u8bfb\u53d6\u5ba2\u6237\u7aef\u53d1\u9001\u7684\u5b57\u7b26\u4e32\n                String message = in.readLine();\n                System.out.println(&quot;\u6536\u5230\u5ba2\u6237\u7aef\u7684\u6d88\u606f\uff1a&quot; + message);\n                \/\/ \u5982\u679c\u6536\u5230\u201c\u518d\u89c1\u201d\uff0c\u5219\u7ed3\u675f\u901a\u4fe1\n                if (message.equals(&quot;\u518d\u89c1&quot;))\n                {\n                    out.println(&quot;\u518d\u89c1&quot;);\n                    break;\n                }\n                \/\/ \u5426\u5219\uff0c\u5411\u5ba2\u6237\u7aef\u53d1\u9001\u201c\u6211\u5df2\u6536\u5230\u201d\u540e\u9762\u8ddf\u4e0a\u6765\u81ea\u5ba2\u6237\u7aef\u7684\u5185\u5bb9\n                out.println(&quot;\u3010\u670d\u52a1\u7aef\u6536\u5230\u5185\u5bb9\u3011&quot; + message);\n            }\n        }\n        catch (IOException e)\n        {\n            \/\/ \u6355\u83b7\u5230\u8fde\u63a5\u65ad\u5f00\u7684\u5f02\u5e38\n            System.out.println(&quot;\u5ba2\u6237\u7aef\u5df2\u65ad\u5f00\u8fde\u63a5&quot;);\n        }\n        \/\/ \u5173\u95ed\u8d44\u6e90\n        in.close();\n        out.close();\n        socket.close();\n        server_socket.close();\n    }\n}<\/code><\/pre>\n<p>\u5ba2\u6237\u7aef<\/p>\n<pre><code class=\"language-java\">import java.io.*;\nimport java.net.*;\n\npublic class Client\n{\n    public static void main(String[] args) throws IOException\n    {\n        \/\/ \u901a\u8fc7\u547d\u4ee4\u53c2\u6570\u6307\u5b9a\u8fde\u63a5\u5730\u5740\u548c\u7aef\u53e3\n        String host = args[0];\n        int port = Integer.parseInt(args[1]);\n        \/\/ \u521b\u5efa\u4e00\u4e2a Socket \u5bf9\u8c61\n        Socket socket = new Socket(host, port);\n        System.out.println(&quot;\u5df2\u8fde\u63a5\u5230\u670d\u52a1\u5668\uff0c\u5730\u5740\u4e3a\uff1a&quot; + socket.getRemoteSocketAddress());\n        \/\/ \u83b7\u53d6\u8f93\u5165\u8f93\u51fa\u6d41\n        BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));\n        PrintWriter out = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()), true);\n        \/\/ \u83b7\u53d6\u63a7\u5236\u53f0\u8f93\u5165\u6d41\n        BufferedReader console = new BufferedReader(new InputStreamReader(System.in));\n        \/\/ \u4f7f\u7528\u4e00\u4e2a\u5faa\u73af\uff0c\u4e0d\u65ad\u5730\u8bfb\u53d6\u548c\u53d1\u9001\u6d88\u606f\n        while (true)\n        {\n            \/\/ \u4ece\u63a7\u5236\u53f0\u8bfb\u53d6\u4e00\u4e2a\u5b57\u7b26\u4e32\n            String message = console.readLine();\n            \/\/ \u5411\u670d\u52a1\u7aef\u53d1\u9001\u8fd9\u4e2a\u5b57\u7b26\u4e32\n            out.println(message);\n            \/\/ \u5982\u679c\u53d1\u9001\u201c\u518d\u89c1\u201d\uff0c\u5219\u7ed3\u675f\u901a\u4fe1\n            if (message.equals(&quot;\u518d\u89c1&quot;))\n            {\n                break;\n            }\n            \/\/ \u8bfb\u53d6\u670d\u52a1\u7aef\u53d1\u9001\u7684\u5b57\u7b26\u4e32\n            String response = in.readLine();\n            System.out.println(&quot;\u6536\u5230\u670d\u52a1\u7aef\u7684\u56de\u590d\uff1a&quot; + response);\n        }\n        \/\/ \u5173\u95ed\u8d44\u6e90\n        in.close();\n        out.close();\n        socket.close();\n    }\n}<\/code><\/pre>\n<h1><span class=\"ez-toc-section\" id=\"%E5%8F%AF%E5%8F%98%E5%8F%82%E6%95%B0\"><\/span>\u53ef\u53d8\u53c2\u6570<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>2023.9.2<\/p>\n<pre><code class=\"language-java\">public class Test\n{\n    public static void main(String[] args)    \n    {\n        System.out.printf(&quot;%d\\n%d\\n&quot;,\n                            add(&quot;Add1&quot;, 1, 2, 3, 4),\n                            add(&quot;Add2&quot;, 9, 1, 5));\n    }\n\n    \/\/ \u4e00\u4e2a\u65b9\u6cd5\u53ea\u80fd\u6709\u4e00\u4e2a\u53ef\u53d8\u53c2\u6570\uff0c\u4e14\u53ea\u80fd\u4f5c\u4e3a\u6700\u540e\u4e00\u4e2a\u53c2\u6570\n    public static int add(String s, int... nums)\n    {\n        int sum = 0;\n        for (int i = 0; i &lt; nums.length; ++i)\n        {\n            sum += nums[i];\n        }\n        System.out.printf(&quot;%s\\n&quot;, s);\n\n        return sum;\n    }\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/08\/image-1693641694194.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 553px; --smush-placeholder-aspect-ratio: 553\/223;\" \/><\/p>\n<h1><span class=\"ez-toc-section\" id=\"%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1\"><\/span>\u9762\u5411\u5bf9\u8c61<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>\u8bed\u6cd5\u4e0a\u548c C++ \u6bd4\u8f83\u76f8\u4f3c\uff0cC++ \u9762\u5411\u5bf9\u8c61\u53ef\u4ee5\u53c2\u8003\uff1a<a href=\"https:\/\/blog.iyatt.com\/?p=9028\">https:\/\/blog.iyatt.com\/?p=9028<\/a><\/p>\n<h2><span class=\"ez-toc-section\" id=\"%E7%B1%BB%E5%88%9D%E6%AD%A5\"><\/span>\u7c7b\u521d\u6b65<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>2023.9.2<\/p>\n<pre><code class=\"language-java\">class Main\n{\n    public static void main(String[] args)\n    {\n        Student s1 = new Student();\n        s1.set_student(&quot;\u5c0f\u5f3a&quot;, 20, 99);\n        System.out.println(&quot;\u59d3\u540d\uff1a&quot; + s1.get_student_name()\n                            + &quot;\\n\u5e74\u9f84\uff1a&quot; + s1.get_student_age()\n                            + &quot;\\n\u6210\u7ee9\uff1a&quot; + s1.get_student_score());\n    }\n}\n\nclass Student\n{\n    String name;\n    int age;\n    int score;\n\n    void set_student(String name, int age, int score)\n    {\n        this.name = name;\n        this.age = age;\n        this.score = score;\n    }\n\n    String get_student_name()\n    {\n        return this.name;\n    }\n\n    int get_student_age()\n    {\n        return this.age;\n    }\n\n    int get_student_score()\n    {\n        return this.score;\n    }\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/08\/image-1693646174807.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 312px; --smush-placeholder-aspect-ratio: 312\/191;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"%E9%87%8D%E8%BD%BD\"><\/span>\u91cd\u8f7d<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>2023.9.2<\/p>\n<p>\u8fd9\u4e2a\u548c C++ \u4e00\u6837\uff0c\u51fd\u6570\u540d\u76f8\u540c\uff0c\u800c\u53c2\u6570\u7c7b\u578b\u6216\u8005\u4e2a\u6570\u4e0d\u540c\u5c31\u53ef\u4ee5\u6784\u6210\u91cd\u8f7d\u3002<\/p>\n<pre><code class=\"language-java\">class Main\n{\n    static int fun(int a, int b)\n    {\n        return a + b;\n    }\n\n    static void fun(int a)\n    {\n        System.out.println(a);\n    }\n\n    public static void main(String[] args)\n    {\n        System.out.println(fun(9, 1));\n        fun(8);\n    }\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/08\/image-1693654471343.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 139px; --smush-placeholder-aspect-ratio: 139\/95;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"%E6%9E%84%E9%80%A0%E6%96%B9%E6%B3%95\"><\/span>\u6784\u9020\u65b9\u6cd5<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>2023.9.2<\/p>\n<p>\u6784\u9020\u65b9\u6cd5\u5728\u7c7b\u5b9e\u4f8b\u5316\u6210\u5bf9\u8c61\u7684\u65f6\u5019\u4f1a\u81ea\u52a8\u6267\u884c\uff0c\u5982\u679c\u6ca1\u6709\u5199\u6784\u9020\u65b9\u6cd5\uff0cJava \u4f1a\u81ea\u52a8\u52a0\u4e00\u4e2a\u65e0\u53c2\u6784\u9020\u65b9\u6cd5\u3002\u6784\u9020\u65b9\u6cd5\u6ca1\u6709\u8fd4\u56de\u503c\uff0c\u540d\u5b57\u548c\u7c7b\u540d\u4e00\u6837\u3002\u5982\u679c\u5199\u4e86\u6709\u53c2\u6784\u9020\u65b9\u6cd5\uff0c\u5c31\u4e0d\u4f1a\u81ea\u52a8\u521b\u5efa\u65e0\u53c2\u6784\u9020\u65b9\u6cd5\u4e86\uff0c\u5efa\u8bae\u81ea\u5df1\u52a0\u4e00\u4e2a\u65e0\u53c2\u6784\u9020\u65b9\u6cd5\u907f\u514d\u4e00\u4e9b\u60c5\u51b5\u4e0b\u51fa\u9519\u3002<br \/>\n\u4e0d\u8fc7 Java \u6ca1\u6709\u50cf C++ \u548c Python \u90a3\u6837\u7684\u6790\u6784\uff0c\u867d\u7136\u6709\u5783\u573e\u56de\u6536\u673a\u5236\uff0c\u4f46\u662f\u6267\u884c\u65f6\u673a\u786e\u5b9a\u3002\u5bf9\u4e8e\u6587\u4ef6\u3001\u7f51\u7edc\u3001\u6570\u636e\u5e93\u4e4b\u7c7b\u7684\u64cd\u4f5c\u7ed3\u675f\u540e\u5efa\u8bae\u4f7f\u7528try-finally\u6765\u53ca\u65f6\u5173\u95ed\u3002<\/p>\n<pre><code class=\"language-java\">class Main\n{\n    public static void main(String[] args)\n    {\n        Student s1 = new Student(); \/\/ \u8c03\u7528\u65e0\u53c2\u6784\u9020\n        s1.set_student(&quot;\u5c0f\u5f3a&quot;, 20, 99);\n        System.out.println(&quot;\u59d3\u540d\uff1a&quot; + s1.get_student_name()\n                            + &quot;\\n\u5e74\u9f84\uff1a&quot; + s1.get_student_age()\n                            + &quot;\\n\u6210\u7ee9\uff1a&quot; + s1.get_student_score());\n\n        Student s2 = new Student(&quot;\u5c0f\u7ea2&quot;, 19, 100); \/\/ \u8c03\u7528\u6709\u53c2\u6784\u9020\n        System.out.println(&quot;\u59d3\u540d\uff1a&quot; + s2.get_student_name()\n                            + &quot;\\n\u5e74\u9f84\uff1a&quot; + s2.get_student_age()\n                            + &quot;\\n\u6210\u7ee9\uff1a&quot; + s2.get_student_score());\n    }\n}\n\nclass Student\n{\n    String name;\n    int age;\n    int score;\n\n    Student() \/\/ \u65e0\u53c2\u6784\u9020\n    {\n\n    }\n\n    Student(String name, int age, int score) \/\/ \u6709\u53c2\u6784\u9020\n    {\n        set_student(name, age, score);\n    }\n\n    void set_student(String name, int age, int score)\n    {\n        this.name = name;\n        this.age = age;\n        this.score = score;\n    }\n\n    String get_student_name()\n    {\n        return this.name;\n    }\n\n    int get_student_age()\n    {\n        return this.age;\n    }\n\n    int get_student_score()\n    {\n        return this.score;\n    }\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/08\/image-1693658164729.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 151px; --smush-placeholder-aspect-ratio: 151\/175;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"%E5%B0%81%E8%A3%85\"><\/span>\u5c01\u88c5<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>2023.9.2<\/p>\n<p>\u524d\u9762\u5199\u7684\u4f8b\u5b50\u867d\u7136\u63d0\u4f9b\u4e86\u63a5\u53e3\u6765\u8bbe\u7f6e\u548c\u83b7\u53d6\u6210\u5458\u5c5e\u6027\uff08\u59d3\u540d\u3001\u5e74\u9f84\u3001\u6210\u7ee9\uff09\uff0c\u4f46\u8fd9\u4e9b\u6210\u5458\u5c5e\u6027\u662f\u9ed8\u8ba4\u6743\u9650\uff0c\u5728\u7c7b\u5916\u4f46\u540c\u4e00\u4e2a\u5305\u4e2d\u5176\u5b9e\u4e5f\u662f\u53ef\u4ee5\u76f4\u63a5\u8d4b\u503c\u6216\u8005\u83b7\u53d6\u503c\u7684\u3002\u5c01\u88c5\u5219\u662f\u5c06\u6210\u5458\u5c5e\u6027\u4fdd\u62a4\u8d77\u6765\uff0c\u5bf9\u6210\u5458\u5c5e\u6027\u7684\u64cd\u4f5c\u5b8c\u5168\u53ea\u80fd\u901a\u8fc7\u63a5\u53e3\uff08\u7c7b\u65b9\u6cd5\uff09\u6765\u64cd\u4f5c\uff0c\u5728\u65b9\u6cd5\u4e2d\u53ef\u4ee5\u5bf9\u64cd\u4f5c\u52a0\u4ee5\u9650\u5236\uff0c\u6bd4\u5982\u8d4b\u503c\u660e\u663e\u4e0d\u5408\u7406\u7684\u53ef\u4ee5\u8fdb\u884c\u4e00\u5b9a\u5904\u7406\uff0c\u53ea\u6709\u5408\u4e4e\u8981\u6c42\u7684\u624d\u80fd\u6267\u884c\u3002\u53ef\u4ee5\u4f7f\u7528 private \u4fee\u9970\u6210\u5458\u5c5e\u6027\uff0c\u7981\u6b62\u7c7b\u5916\u8bbf\u95ee\u3002<\/p>\n<p>4 \u79cd\u6743\u9650\uff1a<\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: center;\"><\/th>\n<th style=\"text-align: center;\">\u672c\u7c7b<\/th>\n<th style=\"text-align: center;\">\u540c\u5305<\/th>\n<th style=\"text-align: center;\">\u975e\u540c\u5305\u5b50\u7c7b<\/th>\n<th style=\"text-align: center;\">\u5176\u5b83<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: center;\">private<\/td>\n<td style=\"text-align: center;\">\u2714<\/td>\n<td style=\"text-align: center;\">\u00d7<\/td>\n<td style=\"text-align: center;\">\u00d7<\/td>\n<td style=\"text-align: center;\">\u00d7<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center;\">\u9ed8\u8ba4<\/td>\n<td style=\"text-align: center;\">\u2714<\/td>\n<td style=\"text-align: center;\">\u2714<\/td>\n<td style=\"text-align: center;\">\u00d7<\/td>\n<td style=\"text-align: center;\">\u00d7<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center;\">protected<\/td>\n<td style=\"text-align: center;\">\u2714<\/td>\n<td style=\"text-align: center;\">\u2714<\/td>\n<td style=\"text-align: center;\">\u2714<\/td>\n<td style=\"text-align: center;\">\u00d7<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center;\">public<\/td>\n<td style=\"text-align: center;\">\u2714<\/td>\n<td style=\"text-align: center;\">\u2714<\/td>\n<td style=\"text-align: center;\">\u2714<\/td>\n<td style=\"text-align: center;\">\u2714<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<pre><code class=\"language-java\">class Main\n{\n    public static void main(String[] args)\n    {\n        Student s1 = new Student(); \/\/ \u8c03\u7528\u65e0\u53c2\u6784\u9020\n        s1.set_student(&quot;\u5c0f\u5f3a&quot;, 20, 99);\n        System.out.println(&quot;\u59d3\u540d\uff1a&quot; + s1.get_student_name()\n                            + &quot;\\n\u5e74\u9f84\uff1a&quot; + s1.get_student_age()\n                            + &quot;\\n\u6210\u7ee9\uff1a&quot; + s1.get_student_score());\n\n        Student s2 = new Student(&quot;\u5c0f\u7ea2&quot;, 1000, 101); \/\/ \u8c03\u7528\u6709\u53c2\u6784\u9020\n        System.out.println(&quot;\u59d3\u540d\uff1a&quot; + s2.get_student_name()\n                            + &quot;\\n\u5e74\u9f84\uff1a&quot; + s2.get_student_age()\n                            + &quot;\\n\u6210\u7ee9\uff1a&quot; + s2.get_student_score());\n    }\n}\n\nclass Student\n{\n    private String name;\n    private int age;\n    private int score;\n\n    Student() \/\/ \u65e0\u53c2\u6784\u9020\n    {\n\n    }\n\n    Student(String name, int age, int score) \/\/ \u6709\u53c2\u6784\u9020\n    {\n        set_student(name, age, score);\n    }\n\n    void set_student(String name, int age, int score)\n    {\n        this.name = name;\n\n        if (age &gt; 0 &amp;&amp; age &lt; 200)\n        {\n            this.age = age;\n        }\n        else\n        {\n            this.age = -1;\n        }\n\n        if (score &gt;= 0 &amp;&amp; score &lt;= 100)\n        {\n            this.score = score;\n        }\n        else\n        {\n            this.score = -1;\n        }\n    }\n\n    String get_student_name()\n    {\n        return this.name;\n    }\n\n    int get_student_age()\n    {\n        return this.age;\n    }\n\n    int get_student_score()\n    {\n        return this.score;\n    }\n}<\/code><\/pre>\n<p>\u6bd4\u5982\u8fd9\u4e2a\u4f8b\u5b50\u4e2d\u662f\u65e0\u6cd5\u901a\u8fc7 s1.name=xxxx \u76f4\u63a5\u8d4b\u503c\u7684\uff0c\u53ea\u80fd\u901a\u8fc7\u6784\u9020\u51fd\u6570\u6216\u8005\u5c01\u88c5\u7684\u65b9\u6cd5\u8fdb\u884c\u8bbe\u7f6e\uff0c\u83b7\u53d6\u5c5e\u6027\u4e5f\u662f\u4e00\u6837\u3002\u53e6\u5916\u5728\u8bbe\u7f6e\u5c5e\u6027\u7684\u65b9\u6cd5\u4e2d\u9650\u5236\u4e86\u5e74\u9f84\u548c\u6210\u7ee9\u7684\u8bbe\u7f6e\u8303\u56f4\uff0c\u5982\u679c\u8bbe\u7f6e\u4e0d\u5408\u7406\u5c31\u8bbe\u7f6e\u4e3a -1\u3002<\/p>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/08\/image-1693661463784.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 142px; --smush-placeholder-aspect-ratio: 142\/143;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"%E7%BB%A7%E6%89%BF\"><\/span>\u7ee7\u627f<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>2023.9.2<\/p>\n<p>\u6bd4\u5982\u5b66\u751f\u548c\u8001\u5e08\u5176\u5b9e\u90fd\u662f\u4eba\u7c7b\uff0c\u90fd\u5177\u6709\u59d3\u540d\u548c\u5e74\u9f84\u7684\u5c5e\u6027\u3002\u8fd9\u91cc\u5c31\u62bd\u8c61\u51fa\u4e86\u4eba\u7c7b\u4f5c\u4e3a\u7236\u7c7b\uff0c\u5b9a\u4e49\u5b66\u751f\u4e3a\u4e00\u4e2a\u5b50\u7c7b\uff0c\u5e76\u4e14\u7ee7\u627f\u4e86\u7236\u7c7b\uff0c\u540c\u65f6\u5b66\u751f\u5177\u6709\u4e00\u4e2a\u6210\u7ee9\u5c5e\u6027\uff0c\u5c31\u5b9a\u4e49\u5728\u5b66\u751f\u7c7b\u91cc\u9762\u3002\u5982\u679c\u53ef\u4ee5\u7684\u8bdd\uff0c\u5176\u5b9e\u8fd8\u53ef\u4ee5\u5b9a\u4e49\u4e00\u4e2a\u8001\u5e08\u7c7b\u4f5c\u4e3a\u5b50\u7c7b\u7ee7\u627f\u4eba\u7c7b\uff0c\u7136\u540e\u8001\u5e08\u53ef\u4ee5\u6709\u72ec\u6709\u7684\u5c5e\u6027\uff0c\u6bd4\u5982\u5b66\u5386\u3001\u804c\u79f0\u7b49\u7b49\u3002\u5728\u5b50\u7c7b\u4e2d\u8981\u64cd\u4f5c\u7236\u7c7b\u5c5e\u6027\u53ef\u4ee5\u4f7f\u7528 super \u4ee3\u8868\u7236\u7c7b\u5bf9\u8c61\u3002<\/p>\n<pre><code class=\"language-java\">class Main\n{\n    public static void main(String[] args)\n    {\n        Student s = new Student();\n        s.set_name(&quot;\u5c0f\u5f3a&quot;);\n        s.set_age(20);\n        s.set_score(100);\n        s.set_test(1);\n\n        System.out.println(s.get_name() + &quot;\\n&quot; +\n                            s.get_age() + &quot;\\n&quot; +\n                            s.get_score() + &quot;\\n&quot; +\n                            s.get_test());\n    }\n}\n\n\/\/ \u7236\u7c7b\nclass Human\n{\n    \/\/ \u53ea\u80fd\u5728\u672c\u7c7b\u4e2d\u8bbf\u95ee\n    private String name;\n    private int age;\n    \/\/ \u53ef\u4ee5\u5728\u5b50\u7c7b\u4e2d\u8bbf\u95ee\n    protected int test;\n\n    protected void set_name(String name)\n    {\n        this.name = name;\n    }\n\n    protected void set_age(int age)\n    {\n        this.age = age;\n    }\n\n    protected String get_name()\n    {\n        return this.name;\n    }\n\n    protected int get_age()\n    {\n        return this.age;\n    }\n}\n\n\/\/ \u5b50\u7c7b\nclass Student extends Human\n{\n    private int score;\n\n    public void set_test(int test)\n    {\n        super.test = test; \/\/ \u64cd\u4f5c\u7236\u7c7b\u5c5e\u6027\n    }\n\n    public int get_test()\n    {\n        return super.test;\n    }\n\n    public void set_score(int score)\n    {\n        this.score = score;\n    }\n\n    public int get_score()\n    {\n        return score;\n    }\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/08\/image-1693667069840.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 110px; --smush-placeholder-aspect-ratio: 110\/103;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"%E9%87%8D%E5%86%99\"><\/span>\u91cd\u5199<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>2023.9.2<\/p>\n<p>\u7236\u7c7b\u6709\u4e00\u4e2a\u65b9\u6cd5\uff0c\u5728\u5b50\u7c7b\u4e2d\u53ef\u4ee5\u5bf9\u5b83\u91cd\u5199\uff0c\u6bd4\u5982\u6269\u589e\u529f\u80fd\u3002\u5b50\u7c7b\u91cd\u5199\u7684\u65b9\u6cd5\u6743\u9650\u4e0d\u80fd\u5c0f\u4e8e\u7236\u7c7b\u4e2d\u539f\u5148\u7684\u6743\u9650\u3002<br \/>\n\u6bd4\u5982\u8fd9\u91cc\u6211\u91cd\u5199\u4e86 get_name\uff0c\u5c06\u7236\u7c7b\u53ea\u80fd\u83b7\u53d6\u540d\u5b57\u6539\u4e3a\u540d\u5b57\u548c\u5e74\u9f84\u4e00\u8d77\u83b7\u53d6\u3002<\/p>\n<pre><code class=\"language-java\">class Main\n{\n    public static void main(String[] args)\n    {\n        Student s = new Student();\n        s.set_name(&quot;\u5c0f\u5f3a&quot;);\n        s.set_age(20);\n\n        System.out.println(s.get_name());\n    }\n}\n\n\/\/ \u7236\u7c7b\nclass Human\n{\n    \/\/ \u53ea\u80fd\u5728\u672c\u7c7b\u4e2d\u8bbf\u95ee\n    private String name;\n    private int age;\n\n    protected void set_name(String name)\n    {\n        this.name = name;\n    }\n\n    protected void set_age(int age)\n    {\n        this.age = age;\n    }\n\n    protected String get_name()\n    {\n        return this.name;\n    }\n\n    protected int get_age()\n    {\n        return this.age;\n    }\n}\n\n\/\/ \u5b50\u7c7b\nclass Student extends Human\n{\n    public String get_name()\n    {\n        return super.get_name() + super.get_age();\n    }\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/08\/image-1693668697160.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 104px; --smush-placeholder-aspect-ratio: 104\/65;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"%E7%BB%A7%E6%89%BF%E4%B8%AD%E7%9A%84%E6%9E%84%E9%80%A0\"><\/span>\u7ee7\u627f\u4e2d\u7684\u6784\u9020<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>2023.9.3<\/p>\n<p>\u6784\u9020\u65b9\u6cd5\u4f1a\u5728\u5b9e\u4f8b\u5316\u7c7b\u540e\u7b2c\u4e00\u4e2a\u6267\u884c\uff08\u81ea\u52a8\uff09\uff0c\u5b50\u7c7b\u7ee7\u627f\u4e86\u7236\u7c7b\uff0c\u5728\u793a\u4f8b\u5316\u5b50\u7c7b\u7684\u65f6\u5019\uff0c\u4f1a\u5148\u5b9e\u4f8b\u5316\u5b50\u7c7b\u4e2d\u7ee7\u627f\u7684\u7236\u7c7b\uff0c\u56e0\u6b64\u7236\u7c7b\u7684\u6784\u9020\u65b9\u6cd5\u4f1a\u5148\u6267\u884c\uff0c\u8fd9\u662f\u6ca1\u6709\u663e\u5f0f\u8c03\u7528\u7236\u7c7b\u6784\u9020\u7684\u60c5\u51b5\u4e0b\uff0cJava \u81ea\u52a8\u8c03\u7528\u7684\u7236\u7c7b\u65e0\u53c2\u6784\u9020\u3002\u5982\u679c\u8981\u8c03\u7528\u6709\u53c2\u6784\u9020\uff08\u4e0b\u9762\u7b2c 2 \u4f8b\uff09\uff0c\u5c06\u8981\u4f20\u9012\u7ed9\u7236\u7c7b\u6709\u53c2\u6784\u9020\u7684\u53c2\u6570\u4f5c\u4e3a\u53c2\u6570\u7ed9 super \u5c31\u4f1a\u8c03\u7528\u7236\u7c7b\u6709\u53c2\u6784\u9020\uff0c\u4e14\u8be5\u8bed\u53e5\u5fc5\u987b\u653e\u5728\u5b50\u7c7b\u6784\u9020\u65b9\u6cd5\u7684\u7b2c\u4e00\u884c\u4f4d\u7f6e\u3002<\/p>\n<pre><code class=\"language-java\">\nclass Main\n{\n    public static void main(String[] args)\n    {\n        Student s = new Student();\n    }\n}\n\nclass Human\n{\n    protected Human()\n    {\n        System.out.println(&quot;\u6267\u884c\u7236\u7c7b\u6784\u9020&quot;);\n    }\n}\n\nclass Student extends Human\n{\n    public Student()\n    {\n        System.out.println(&quot;\u6267\u884c\u5b50\u7c7b\u6784\u9020&quot;);\n    }\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/08\/image-1693703910080.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 133px; --smush-placeholder-aspect-ratio: 133\/63;\" \/><\/p>\n<pre><code class=\"language-java\">\nclass Main\n{\n    public static void main(String[] args)\n    {\n        Student s = new Student(&quot;\u5c0f\u5f3a&quot;, 20, 100);\n        System.out.println(s.get());\n    }\n}\n\nclass Human\n{\n    private String name;\n    private int age;\n\n    protected Human()\n    {\n\n    }\n\n    protected Human(String name, int age)\n    {\n        this.name = name;\n        this.age = age;\n    }\n\n    protected String get()\n    {\n        return this.name + &quot; &quot; + this.age;\n    }\n}\n\nclass Student extends Human\n{\n    private int score;\n\n    public Student()\n    {\n\n    }\n\n    public Student(String name, int age, int score)\n    {\n        super(name, age); \/\/ \u8c03\u7528\u7236\u7c7b\u6709\u53c2\u6784\u9020\n        this.score = score;\n    }\n\n    public String get() \/\/ \u91cd\u5199\u7236\u7c7b\u65b9\u6cd5\n    {\n        return super.get() + &quot; &quot; + this.score;\n    }\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/08\/image-1693703773770.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 150px; --smush-placeholder-aspect-ratio: 150\/68;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"%E5%A4%9A%E6%80%81\"><\/span>\u591a\u6001<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>2023.9.3<\/p>\n<p>\u591a\u6001\u901a\u8fc7\u5c06\u7236\u7c7b\u5bf9\u8c61\u6307\u5411\u5b50\u7c7b\u5bf9\u8c61\uff0c\u5b9e\u73b0\u8c03\u7528\u7236\u7c7b\u5bf9\u8c61\u5b9e\u9645\u8c03\u7528\u5b50\u7c7b\u5bf9\u8c61\u3002\u53ef\u4ee5\u505a\u5230\u63a5\u53e3\u548c\u5b9e\u73b0\u7684\u5206\u79bb\uff0c\u5bf9\u4e8e\u4e00\u4e9b\u901a\u7528\u7684\u63a5\u53e3\u7531\u7236\u7c7b\u7edf\u4e00\uff0c\u5177\u4f53\u5b9e\u73b0\u4ee5\u53ca\u540e\u7eed\u6269\u5c55\u529f\u80fd\u5728\u5b50\u7c7b\u5b9e\u73b0\uff0c\u800c\u53ef\u4ee5\u901a\u8fc7\u7236\u7c7b\u7684\u7edf\u4e00\u63a5\u53e3\u5b8c\u6210\u4e0d\u540c\u7684\u529f\u80fd\uff0c\u4e5f\u53ef\u4ee5\u8c03\u7528\u5b50\u7c7b\u72ec\u6709\u7684\u529f\u80fd\u3002<\/p>\n<pre><code class=\"language-java\">class Main\n{\n    static void show(Human h)\n    {\n        h.whoisme();\n        if (h instanceof Student) \/\/ \u5224\u65ad\u5bf9\u8c61\u7c7b\u578b\n        {\n            ((Student) h).study();\n        }\n        else if (h instanceof Teacher)\n        {\n            ((Teacher) h).teach();\n        }\n    }\n\n    public static void main(String[] args)\n    {\n        \/\/ \u4f7f\u7528\u591a\u6001\u521b\u5efa\u5bf9\u8c61\n        Human s = new Student();\n        Human t = new Teacher();\n\n        \/\/ \u8c03\u7528\u5b50\u7c7b\u91cd\u5199\u7684\u65b9\u6cd5\n        s.whoisme();\n        t.whoisme();\n\n        \/\/ \u8c03\u7528\u5b50\u7c7b\u7279\u6709\u7684\u65b9\u6cd5\n        ((Student) s).study();\n        ((Teacher) t).teach();\n\n        \/\/ \u4f5c\u4e3a\u53c2\u6570\u4f20\u9012\n        show(s);\n        show(t);\n    }\n}\n\nabstract class Human \/\/ abstract \u4fee\u9970\u4e3a\u62bd\u8c61\u7c7b\uff0c\u65e0\u6cd5\u5b9e\u4f8b\u5316\u5bf9\u8c61\n{\n    public void whoisme()\n    {\n        System.out.println(&quot;\u6211\u662f\u4e00\u4e2a\u4eba&quot;);\n    }\n}\n\nclass Student extends Human\n{\n    @Override \/\/ \u91cd\u5199\u6ce8\u89e3\n    public void whoisme()\n    {\n        System.out.println(&quot;\u6211\u662f\u4e00\u540d\u5b66\u751f&quot;);\n    }\n\n    public void study()\n    {\n        System.out.println(&quot;\u6211\u7684\u4efb\u52a1\u662f\u5b66\u4e60&quot;);\n    }\n}\n\nclass Teacher extends Human\n{\n    @Override\n    public void whoisme()\n    {\n        System.out.println(&quot;\u6211\u662f\u4e00\u540d\u8001\u5e08&quot;);\n    }\n\n    public void teach()\n    {\n        System.out.println(&quot;\u6211\u7684\u5de5\u4f5c\u662f\u6559\u4e66&quot;);\n    }\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/08\/image-1693705490166.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 140px; --smush-placeholder-aspect-ratio: 140\/78;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"static\"><\/span>static<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>2023.9.3<\/p>\n<p>\u9759\u6001\u7684\u5c5e\u6027\u548c\u65b9\u6cd5\u662f\u548c\u7c7b\u672c\u8eab\u7ed1\u5b9a\u7684\uff0c\u548c\u5177\u4f53\u5bf9\u8c61\u65e0\u5173\uff0c\u901a\u8fc7\u5bf9\u8c61\u5bf9\u9759\u6001\u5c5e\u6027\u64cd\u4f5c\u5b9e\u9645\u64cd\u4f5c\u7684\u90fd\u662f\u540c\u4e00\u4e2a\u5c5e\u6027\uff0c\u4e5f\u5c31\u662f\u7c7b\u7684\u5c5e\u6027\u3002\u5bf9\u4e8e\u4e0d\u540c\u7c7b\u7684\u9759\u6001\u5c5e\u6027\u6216\u8005\u65b9\u6cd5\u7684\u8c03\u7528\uff0c\u5efa\u8bae\u76f4\u63a5\u4f7f\u7528\u7c7b\u540d\u800c\u4e0d\u662f\u5bf9\u8c61\uff0c\u4e00\u822c\u652f\u6301 Java \u8bed\u6cd5\u68c0\u6d4b\u7684\u5f00\u53d1\u73af\u5883\u90fd\u4f1a\u5bf9\u4f7f\u7528\u5bf9\u8c61\u8c03\u7528\u9759\u6001\u65b9\u6cd5\u548c\u5c5e\u6027\u7ed9\u51fa\u8b66\u544a\u3002\u53e6\u5916\uff0c\u9759\u6001\u65b9\u6cd5\u4e2d\u4e0d\u80fd\u4f7f\u7528 this \u548c super\uff08\u5b83\u4eec\u548c\u5177\u4f53\u5bf9\u8c61\u6709\u5173\uff09\u3002<\/p>\n<pre><code class=\"language-java\">class Main\n{\n    public static void main(String[] args)\n    {\n        Test t1 = new Test();\n        Test t2 = new Test();\n        Test t3 = new Test();\n\n        t1.num = 10;\n        System.out.println(t2.num + &quot; &quot; +\n                            t3.num + &quot; &quot; +\n                            Test.num);\n        t1.fun();\n        t2.fun();\n        t3.fun();\n        Test.fun();\n\n        \/\/ \u9759\u6001\u65b9\u6cd5\u4e2d\u4e0d\u80fd\u76f4\u63a5\u8c03\u7528\u540c\u7c7b\u7684\u975e\u9759\u6001\u65b9\u6cd5\n        \/\/ \u9759\u6001\u65b9\u6cd5\u4f34\u968f\u7c7b\u4e00\u8d77\u521b\u5efa\uff0c\u4f46\u662f\u975e\u9759\u6001\u65b9\u6cd5\u8fd8\u6ca1\u6709\u521b\u5efa\uff0c\u6240\u4ee5\u65e0\u6cd5\u76f4\u63a5\u8c03\u7528\n        \/\/ \u53ef\u4ee5\u5148\u5b9e\u4f8b\u5316\u5bf9\u8c61\u518d\u8c03\u7528\n        Main m = new Main();\n        m.fun();\n\n        new Main().fun();\n    }\n\n    void fun()\n    {\n        System.out.println(&quot;\u8fd9\u662f\u4e00\u4e2a\u975e\u9759\u6001\u65b9\u6cd5&quot;);\n    }\n}\n\nclass Test\n{\n    static int num;\n\n    public Test()\n    {\n        ++num;\n        System.out.println(&quot;\u672c\u7c7b\u5b9e\u4f8b\u5316\u5bf9\u8c61 &quot; + num + &quot; \u6b21&quot;);\n    }\n\n    static void fun()\n    {\n        System.out.println(&quot;\u8fd9\u662f Test \u7c7b\u7684\u9759\u6001\u65b9\u6cd5&quot;);\n    }\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/08\/image-1693727679701.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 215px; --smush-placeholder-aspect-ratio: 215\/203;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"final\"><\/span>final<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>2023.9.3<\/p>\n<p>\u4f7f\u7528 final \u4fee\u9970\u7684\u7c7b\u4e0d\u53ef\u7ee7\u627f\uff0c\u4fee\u9970\u65b9\u6cd5\u8868\u793a\u65b9\u6cd5\u4e0d\u80fd\u88ab\u91cd\u5199\uff0c\u4fee\u9970\u53d8\u91cf\u4e3a\u5e38\u91cf\uff08\u76f8\u5f53\u4e8e C\/C++ \u4e2d\u7684 const\uff09\uff0c\u53e6\u5916\u5bf9\u4e8e\u5e38\u91cf\u4e00\u822c\u5efa\u8bae\u4f7f\u7528\u5927\u5199\u547d\u540d\uff0c\u4e0b\u5212\u7ebf\u8fde\u63a5\u3002<\/p>\n<pre><code class=\"language-java\">class Main\n{\n    public static void main(String[] args)\n    {\n        final Test1 t = new Test1();\n        \/\/ t = new Test1(); \/\/ final \u5bf9\u8c61\u540d\u4e0d\u80fd\u4fee\u6539\u6307\u5411\n    }\n}\n\nclass Test1\n{\n    public final void test()\n    {\n\n    }\n\n    final int TEST1 = 9;\n\n    public Test1()\n    {\n        \/\/ TEST1 = 10; \/\/ final \u5c5e\u6027\u65e0\u6cd5\u4fee\u6539\n    }\n\n    final int TEST2;\n    {\n        TEST2 = 9; \/\/ final \u5c5e\u6027\u53ef\u4ee5\u521d\u59cb\u5316\uff0c\u4e4b\u540e\u5c31\u65e0\u6cd5\u4fee\u6539\u4e86\n    }\n\n    final static int TEST3;\n\n    static \/\/ \u9759\u6001 final \u5c5e\u6027\u8981\u52a0\u4e0a\u8fd9\u4e2a\u5173\u952e\u5b57\u624d\u80fd\u521d\u59cb\u5316\n    {\n        TEST3 = 9;\n    }\n}\n\nfinal class Test2 extends Test1\n{\n    \/\/ @Override\n    \/\/ public void test() \/\/ \u4e0d\u80fd\u91cd\u5199 final \u65b9\u6cd5\n    \/\/ {\n\n    \/\/ }\n}\n\n\/\/ class Test3 extends Test2 \/\/ \u4e0d\u53ef\u7ee7\u627f final \u7c7b\n\/\/ {\n\n\/\/ }<\/code><\/pre>\n<h2><span class=\"ez-toc-section\" id=\"%E6%8E%A5%E5%8F%A3%E5%88%9D%E6%AD%A5\"><\/span>\u63a5\u53e3\u521d\u6b65<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>2023.9.3<\/p>\n<p>\u4e4b\u524d\u5b66\u7684\u8bed\u8a00\u91cc\u9762\u90fd\u6ca1\u6709\u63a5\u53e3\u8fd9\u4e2a\u5173\u952e\u5b57\uff0c\u4f46\u662f\u770b\u4e86\u4e00\u4e0b\uff0c\u5b9e\u9645\u4e0a Java \u63a5\u53e3\u505a\u7684\u4e8b\u5728 C++ \u91cc\u5df2\u7ecf\u88ab\u5305\u542b\u5728\u7c7b\u91cc\u4e86\u3002<br \/>\n\u5728 Java 8 \u4ee5\u524d\uff0c\u63a5\u53e3\u4e2d\u53ea\u80fd\u5199 public final static \u5c5e\u6027\u548c public abstract \u65b9\u6cd5\uff0c\u5c31\u7b97\u4e0d\u5199\u8fd9\u4e9b\u5173\u952e\u5b57\uff0c\u5185\u90e8\u8fd8\u662f\u4f1a\u6309\u7167\u8fd9\u6837\u5904\u7406\u3002\u53e6\u5916\u5bf9\u4e8e\u63a5\u53e3\u7684\u547d\u540d\u4e00\u822c\u4ee5 I \u5f00\u5934\u6216\u8005 able \u7ed3\u5c3e\u3002<br \/>\n\u521d\u6b65\u53ef\u4ee5\u628a\u63a5\u53e3\u5f53\u4f5c\u62bd\u8c61\u7236\u7c7b\uff0c\u8fd9\u91cc\u5c31\u7528\u524d\u9762\u591a\u6001\u7684\u793a\u4f8b\u4ee3\u7801\u6539\u5199\uff0c\u5c06\u7236\u7c7b\u7528\u63a5\u53e3\u5b9e\u73b0\uff0c\u8fd9\u90e8\u5206\u7c7b\u4f3c C++ \u7684\u7eaf\u865a\u51fd\u6570\u3002\u6ce8\u610f\u5b50\u7c7b\u4e2d\u91cd\u5199\u7684\u65b9\u6cd5\u5fc5\u987b\u662f public\uff0c\u56e0\u4e3a\u63a5\u53e3\u4e2d\u9ed8\u8ba4\u662f public\uff0c\u4e0d\u80fd\u51cf\u5c0f\u8bbf\u95ee\u6743\u9650\u3002<\/p>\n<pre><code class=\"language-java\">class Main\n{\n    static void show(IHuman h)\n    {\n        h.whoisme();\n        if (h instanceof Student) \/\/ \u5224\u65ad\u5bf9\u8c61\u7c7b\u578b\n        {\n            ((Student) h).study();\n        }\n        else if (h instanceof Teacher)\n        {\n            ((Teacher) h).teach();\n        }\n    }\n\n    public static void main(String[] args)\n    {\n        \/\/ \u4f7f\u7528\u591a\u6001\u521b\u5efa\u5bf9\u8c61\n        IHuman s = new Student();\n        IHuman t = new Teacher();\n\n        \/\/ \u8c03\u7528\u5b50\u7c7b\u91cd\u5199\u7684\u65b9\u6cd5\n        s.whoisme();\n        t.whoisme();\n\n        \/\/ \u8c03\u7528\u5b50\u7c7b\u7279\u6709\u7684\u65b9\u6cd5\n        ((Student) s).study();\n        ((Teacher) t).teach();\n\n        \/\/ \u4f5c\u4e3a\u53c2\u6570\u4f20\u9012\n        show(s);\n        show(t);\n    }\n}\n\ninterface IHuman\n{\n    void whoisme();\n}\n\nclass Student implements IHuman \/\/ \u5b9e\u73b0\u63a5\u53e3\n{\n    @Override \/\/ \u91cd\u5199\u6ce8\u89e3\n    public void whoisme()\n    {\n        System.out.println(&quot;\u6211\u662f\u4e00\u540d\u5b66\u751f&quot;);\n    }\n\n    public void study()\n    {\n        System.out.println(&quot;\u6211\u7684\u4efb\u52a1\u662f\u5b66\u4e60&quot;);\n    }\n}\n\nclass Teacher implements IHuman\n{\n    @Override\n    public void whoisme()\n    {\n        System.out.println(&quot;\u6211\u662f\u4e00\u540d\u8001\u5e08&quot;);\n    }\n\n    public void teach()\n    {\n        System.out.println(&quot;\u6211\u7684\u5de5\u4f5c\u662f\u6559\u4e66&quot;);\n    }\n}<\/code><\/pre>\n<h2><span class=\"ez-toc-section\" id=\"%E5%A4%9A%E7%BB%A7%E6%89%BF\"><\/span>\u591a\u7ee7\u627f<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>2023.9.3<\/p>\n<p>C++ \u7684\u7c7b\u652f\u6301\u591a\u7ee7\u627f\uff0c\u800c Java \u7684\u7c7b\u4e0d\u80fd\uff0c\u4f46\u662f\u53ef\u4ee5\u4f7f\u7528\u63a5\u53e3\u5b9e\u73b0\u591a\u7ee7\u627f\u3002\u4e14\u63a5\u53e3\u548c\u63a5\u53e3\u4e4b\u95f4\u4e5f\u53ef\u4ee5\u5b9e\u73b0\u591a\u7ee7\u627f\u3002<\/p>\n<pre><code class=\"language-java\">class Main\n{\n    public static void main(String[] args)\n    {\n        ISing is = new Speciality1();\n        is.sing();\n        ((IDance) is).dance();\n\n        IDance id = new Speciality1();\n        ((ISing) id).sing();\n        id.dance();\n\n        Speciality2 s = new Speciality2();\n        s.sing();\n        s.dance();\n    }\n}\n\ninterface ISing\n{\n    void sing();\n}\n\ninterface IDance\n{\n    void dance();\n}\n\ninterface ISpeciality extends ISing, IDance\n{\n\n}\n\nclass Speciality1 implements ISing, IDance\n{\n    @Override\n    public void sing()\n    {\n        System.out.println(&quot;\u5531\u6b4c1&quot;);\n    }\n\n    @Override\n    public void dance()\n    {\n        System.out.println(&quot;\u8df3\u821e1&quot;);\n    }\n}\n\nclass Speciality2 implements ISpeciality\n{\n    @Override\n    public void sing()\n    {\n        System.out.println(&quot;\u5531\u6b4c2&quot;);\n    }\n\n    @Override\n    public void dance()\n    {\n        System.out.println(&quot;\u8df3\u821e2&quot;);\n    }\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/08\/image-1693737073557.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 108px; --smush-placeholder-aspect-ratio: 108\/142;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"%E5%B8%B8%E9%87%8F%E5%BA%94%E7%94%A8\"><\/span>\u5e38\u91cf\u5e94\u7528<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>2023.9.3<\/p>\n<p>\u4e00\u822c\u5728\u5f00\u53d1\u4e2d\u4e0d\u5efa\u8bae\u76f4\u63a5\u4f7f\u7528\u5e38\u91cf\u503c\uff0c\u800c\u662f\u901a\u8fc7\u5e38\u53d8\u91cf\u6765\u4fdd\u5b58\u503c\uff0c\u8fd9\u6837\u53ef\u4ee5\u63d0\u9ad8\u7a0b\u5e8f\u7684\u53ef\u8bfb\u6027\uff0c\u90a3\u4e48\u5c31\u53ef\u4ee5\u5229\u7528\u63a5\u53e3\u53d8\u91cf\u81ea\u5e26 public final static \u7279\u6027\uff0c\u5c06\u8981\u4f7f\u7528\u7684\u5e38\u91cf\u90fd\u5199\u5230\u63a5\u53e3\u4e2d\uff0c\u4f7f\u7528\u8005\u7ee7\u627f\u8fd9\u4e2a\u63a5\u53e3\u5c31\u884c\u3002<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%E6%A0%87%E5%87%86%E5%BA%94%E7%94%A8\"><\/span>\u6807\u51c6\u5e94\u7528<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>2023.9.3<\/p>\n<p>interface \u4e00\u822c\u662f\u7528\u4e8e\u89c4\u8303\u63a5\u53e3\uff0c\u5b9e\u73b0\u6807\u51c6\u5316\u3002\u8fd9\u91cc\u5c31\u7528 USB \u6765\u4e3e\u4f8b\uff0cUSB \u672c\u8eab\u5c31\u662f\u4e00\u79cd\u6807\u51c6\u7684\u63a5\u53e3\uff0c\u5728\u7535\u8111\u4e0a\u63d0\u4f9b\u4e86 USB \u7684\u63a5\u53e3\uff0c\u5bf9\u4e8e\u5916\u90e8\u8bbe\u5907\uff0c\u5982 U pan\u3001\u6253\u5370\u673a\u4e5f\u662f\u4f7f\u7528 USB \u63a5\u53e3\u8fdb\u884c\u901a\u4fe1\uff0c\u5c06\u8fd9\u6837\u7684\u89c4\u5b9a\u4f5c\u4e3a\u6807\u51c6\u3002\u8fd9\u6837\u5404\u79cd\u5916\u8bbe\u5382\u5bb6\u7684\u4ea7\u54c1\u53ea\u8981\u9002\u914d USB\uff0c\u800c\u7535\u8111\u53ea\u8981\u90fd\u63d0\u4f9b USB\uff0c\u90a3\u4e48\u5c31\u53ef\u4ee5\u901a\u7528\u4f7f\u7528\u4e86\uff0c\u800c\u4e0d\u662f\u5404\u81ea\u505a\u5404\u81ea\u7684\uff0c\u6bcf\u79cd\u8bbe\u5907\u4e00\u79cd\u63a5\u53e3\uff0c\u90a3\u8fd9\u6837\u7535\u8111\u4e5f\u9700\u8981\u5404\u79cd\u63a5\u53e3\u6765\u9002\u914d\uff0c\u4f7f\u7528\u8d77\u6765\u4e5f\u4e0d\u65b9\u4fbf\u3002<\/p>\n<pre><code class=\"language-java\">class Main\n{\n    public static void main(String[] args)\n    {\n        Computer c = new Computer();\n\n        c.usb = new Disk();\n        c.usb.service();\n\n        c.usb = new Printer();\n        c.usb.service();\n    }\n}\n\ninterface IUSB\n{\n    void service();\n}\n\nclass Computer\n{\n    IUSB usb;\n}\n\nclass Disk implements IUSB\n{\n    @Override\n    public void service()\n    {\n        System.out.println(&quot;\u4f7f\u7528\u78c1\u76d8&quot;);\n    }\n}\n\nclass Printer implements IUSB\n{\n    @Override\n    public void service()\n    {\n        System.out.println(&quot;\u4f7f\u7528\u6253\u5370\u673a&quot;);\n    }\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/08\/image-1693738706835.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 109px; --smush-placeholder-aspect-ratio: 109\/72;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"Object_%E7%B1%BB\"><\/span>Object \u7c7b<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>2023.9.3<\/p>\n<p>\u5b9e\u9645\u4e0a\u81ea\u5df1\u5199\u7684\u7c7b\u90fd\u4f1a\u4ece Object \u7c7b\u7ee7\u627f\uff0c\u6bd4\u5982\u4e0b\u9762\u7684\u4f8b\u5b50\u7ee7\u627f Object \u4e2d\u5c01\u88c5\u7684\u65b9\u6cd5\uff0c\u7528\u4e8e\u83b7\u53d6\u7c7b\u540d\u3002<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/08\/image-1693745495450.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 467px; --smush-placeholder-aspect-ratio: 467\/206;\" \/><\/p>\n<pre><code class=\"language-java\">class Main\n{\n    public static void main(String[] args)\n    {\n        Test1 t1 = new Test1();\n        System.out.println(t1.getClass().getName() + &quot;\\n&quot; + \/\/ \u5168\u79f0\n                            t1.getClass().getSimpleName()); \/\/ \u7b80\u79f0\n\n        Test2 t2 = new Test2();\n        System.out.println(t2.getClass().getName() + &quot;\\n&quot; + \/\/ \u5168\u79f0\n                            t2.getClass().getSimpleName()); \/\/ \u7b80\u79f0\n\n    }\n}\n\nclass Test1\n{\n\n}\n\nclass Test2 extends Object\n{\n\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/08\/image-1693745618774.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 139px; --smush-placeholder-aspect-ratio: 139\/150;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"%E6%8E%A5%E5%8F%A3%E7%9A%84%E9%BB%98%E8%AE%A4%E6%96%B9%E6%B3%95%E5%92%8C%E9%9D%99%E6%80%81%E6%96%B9%E6%B3%95\"><\/span>\u63a5\u53e3\u7684\u9ed8\u8ba4\u65b9\u6cd5\u548c\u9759\u6001\u65b9\u6cd5<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>2023.9.3<\/p>\n<p>\u4ece Java 8 \u5f00\u59cb\uff0c\u63a5\u53e3\u9664\u4e86\u524d\u9762\u8bf4\u5230\u7684\u4e24\u79cd\uff0c\u8fd8\u53ef\u4ee5\u5199 default\uff08\u9ed8\u8ba4\uff09\u65b9\u6cd5\u548c static\uff08\u9759\u6001\uff09\u65b9\u6cd5\u3002<\/p>\n<p>\u9ed8\u8ba4\u65b9\u6cd5\u53ef\u4ee5\u63d0\u4f9b\u9ed8\u8ba4\u7684\u5b9e\u73b0\uff0c\u5982\u679c\u5b50\u7c7b\u6ca1\u6709\u91cd\u5199\uff0c\u90a3\u4e48\u5c31\u6267\u884c\u9ed8\u8ba4\u65b9\u6cd5\u3002<\/p>\n<pre><code class=\"language-java\">\/**\n * \u9ed8\u8ba4\u65b9\u6cd5\n *\/\nclass Main\n{\n    public static void main(String[] args)\n    {\n        IAnimal ia = new Dog();\n        ia.make_sound();\n        ia.move();\n    }\n}\n\ninterface IAnimal\n{\n    default void make_sound()\n    {\n        System.out.println(&quot;\u52a8\u7269\u53d1\u51fa\u58f0\u97f3&quot;);\n    }\n\n    default void move()\n    {\n        System.out.println(&quot;\u52a8\u7269\u79fb\u52a8&quot;);\n    }\n}\n\nclass Dog implements IAnimal\n{\n    @Override\n    public void make_sound()\n    {\n        System.out.println(&quot;\u72d7\u5728\u53eb&quot;);\n    }\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/08\/image-1693748835024.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 122px; --smush-placeholder-aspect-ratio: 122\/85;\" \/><\/p>\n<p>\u9759\u6001\u65b9\u6cd5\u53ef\u4ee5\u4e0d\u7528\u5b9e\u4f8b\u5bf9\u8c61\uff0c\u76f4\u63a5\u901a\u8fc7\u63a5\u53e3\u540d\u8c03\u7528\uff0c\u548c\u7c7b\u9759\u6001\u65b9\u6cd5\u4e00\u6837\u3002<\/p>\n<pre><code class=\"language-java\">\/**\n * \u9759\u6001\u65b9\u6cd5\n *\/\nclass Main\n{\n    public static void main(String[] args)\n    {\n        Calculator add = Calculator.create(&quot;add&quot;);\n        Calculator sub = Calculator.create(&quot;sub&quot;);\n        Calculator mul = Calculator.create(&quot;mul&quot;);\n        Calculator div = Calculator.create(&quot;div&quot;);\n\n        System.out.println(&quot;10 + 5 = &quot; + add.calculate(10, 5));\n        System.out.println(&quot;10 - 5 = &quot; + sub.calculate(10, 5));\n        System.out.println(&quot;10 * 5 = &quot; + mul.calculate(10, 5));\n        System.out.println(&quot;10 \/ 5 = &quot; + div.calculate(10, 5));\n    }\n}\n\ninterface Calculator\n{\n    \/\/ \u62bd\u8c61\u65b9\u6cd5\n    double calculate(double x, double y);\n\n    \/\/ \u9759\u6001\u65b9\u6cd5\n    static Calculator create(String type)\n    {\n        switch (type)\n        {\n            case &quot;add&quot;:\n            {\n                return (x, y) -&gt; x + y; \/\/ Lambda \u8868\u8fbe\u5f0f\n            }\n            case &quot;sub&quot;:\n            {\n                return (x, y) -&gt; x - y;\n            }\n            case &quot;mul&quot;:\n            {\n                return (x, y) -&gt; x * y;\n            }\n            case &quot;div&quot;:\n            {\n                return (x, y) -&gt; x \/ y;\n            }\n            default:\n            {\n                return null;\n            }\n        }\n    }\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/08\/image-1693749423907.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 146px; --smush-placeholder-aspect-ratio: 146\/108;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"%E5%8C%BF%E5%90%8D%E7%B1%BB\"><\/span>\u533f\u540d\u7c7b<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>2023.9.7<\/p>\n<pre><code class=\"language-java\">class Main\n{\n    public static void main(String[] args)\n    {\n        \/\/ \u521b\u5efa\u4e00\u4e2a\u533f\u540d\u7c7b\n        ITest t1 = new ITest()\n        {\n            @Override\n            public void show()    \n            {\n                System.out.println(&quot;Hello world&quot;);\n            }\n\n            @Override\n            public void show(String str)\n            {\n                System.out.println(str);\n            }\n        };\n\n        t1.show();\n        t1.show(&quot;world hello&quot;);\n    }\n}\n\ninterface ITest\n{\n    void show();\n    void show(String str);\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/08\/image-1694088468449.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 148px; --smush-placeholder-aspect-ratio: 148\/95;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"%E5%9B%9E%E8%B0%83\"><\/span>\u56de\u8c03<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>2023.9.7<\/p>\n<p>\u56de\u8c03\u7684\u601d\u60f3\uff0c\u53ef\u4ee5\u5148\u6807\u51c6\u5316\u65b9\u6cd5\u539f\u578b\uff0c\u7136\u540e\u4f7f\u7528\u8005\u81ea\u884c\u5b9a\u4e49\u529f\u80fd\u3002\u6bd4\u5982 Java \u91cc\u7684\u7ebf\u7a0b\u63d0\u4f9b\u4e86\u4e00\u4e2a Runnable \u63a5\u53e3\uff0c\u53ef\u4ee5\u81ea\u884c\u5b9e\u73b0\u9700\u8981\u7684\u529f\u80fd\uff0c\u7136\u540e\u8c03\u7528\u7ebf\u7a0b\u6267\u884c\u3002<\/p>\n<pre><code class=\"language-java\">class Main\n{\n    public static void main(String[] args)\n    {\n        \/\/ \u901a\u8fc7\u533f\u540d\u7c7b\u6765\u5b9e\u73b0\u529f\u80fd\u903b\u8f91\n        Test t = new Test(new ICallback()\n        {\n            @Override\n            public void show(String str)\n            {\n                System.out.println(str);\n            }\n        });\n\n        t.execute(&quot;hello world&quot;);\n    }\n}\n\n\/\/ \u56de\u8c03\u63a5\u53e3\ninterface ICallback\n{\n    void show(String str);\n}\n\nclass Test\n{\n    private ICallback callback;\n\n    public Test(ICallback callback)\n    {\n        this.callback = callback;\n    }\n\n    public void execute(String str)\n    {\n        for (int i = 0; i &lt; 3; ++i)\n        {\n            callback.show(str);\n        }\n    }\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/08\/image-1694098602422.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 103px; --smush-placeholder-aspect-ratio: 103\/88;\" \/><\/p>\n<h1><span class=\"ez-toc-section\" id=\"%E6%B3%9B%E5%9E%8B\"><\/span>\u6cdb\u578b<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<h2><span class=\"ez-toc-section\" id=\"%E5%88%9D%E6%AD%A5%E4%BD%BF%E7%94%A8\"><\/span>\u521d\u6b65\u4f7f\u7528<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>2023.9.4<\/p>\n<p>Java \u4e2d\u63d0\u4f9b\u4e86\u4e00\u4e9b\u6cdb\u578b\u7684\u5c01\u88c5\uff0c\u6bd4\u5982\u52a8\u6001\u6570\u7ec4\uff0c\u53ef\u4ee5\u652f\u6301\u5404\u79cd\u7c7b\u578b\uff0c\u6ce8\u610f\u4e0d\u80fd\u4f7f\u7528\u57fa\u672c\u6570\u636e\u7c7b\u578b\uff0c\u8981\u4f7f\u7528\u8fd9\u4e9b\u6570\u636e\u7c7b\u578b\u5c31\u5f97\u7528\u5b83\u4eec\u7684\u5305\u88c5\u7c7b\u3002<\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left;\">\u57fa\u672c\u6570\u636e\u7c7b\u578b<\/th>\n<th style=\"text-align: left;\">\u5305\u88c5\u7c7b<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left;\">byte<\/td>\n<td style=\"text-align: left;\">Byte<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">short<\/td>\n<td style=\"text-align: left;\">Short<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">int<\/td>\n<td style=\"text-align: left;\">Integer<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">long<\/td>\n<td style=\"text-align: left;\">Long<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">float<\/td>\n<td style=\"text-align: left;\">Float<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">double<\/td>\n<td style=\"text-align: left;\">Double<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">char<\/td>\n<td style=\"text-align: left;\">Character<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">boolean<\/td>\n<td style=\"text-align: left;\">Boolean<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<pre><code class=\"language-java\">import java.util.ArrayList;\n\nclass Main\n{\n    public static void main(String[] args)\n    {\n        \/\/ \u5b58\u653e\u5185\u7f6e\u6570\u636e\u7c7b\u578b\n        ArrayList&lt;Integer&gt; array = new ArrayList&lt;&gt;();\n        array.add(9);\n        array.add(8);\n        array.add(7);\n        for (Integer i : array)\n        {\n            System.out.println(i);\n        }\n\n        \/\/ \u5b58\u653e\u81ea\u5b9a\u4e49\u7c7b\n        ArrayList&lt;Student&gt; s = new ArrayList&lt;&gt;();\n        s.add(new Student(&quot;\u5c0f\u5f3a&quot;, 20));\n        s.add(new Student(&quot;\u5c0f\u7ea2&quot;, 19));\n        for (Student i : s)\n        {\n            System.out.println(i);\n        }\n    }\n}\n\nclass Student\n{\n    public String name;\n    public int age;\n\n    public Student(String name, int age)\n    {\n        this.name = name;\n        this.age = age;\n    }\n\n    @Override\n    public String toString() \/\/ \u91cd\u5199\u8fd9\u4e2a\u65b9\u6cd5\u540e\u53ef\u4ee5\u76f4\u63a5\u6253\u5370\u8f93\u51fa\n    {\n        return &quot;Student \u3010name=&quot; + this.name + &quot;, age=&quot; + this.age + &quot; \u3011&quot;;\n    }\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/08\/image-1693804837763.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 253px; --smush-placeholder-aspect-ratio: 253\/113;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"%E6%B3%9B%E5%9E%8B%E7%B1%BB\"><\/span>\u6cdb\u578b\u7c7b<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>2023.9.4<\/p>\n<p>\u4e00\u4e9b\u7ea6\u5b9a\u4fd7\u6210\u7684\u6cdb\u578b\u6807\u8bc6\uff08\u5b9e\u9645\u6ca1\u6709\u5f3a\u5236\u4f7f\u7528\u4ec0\u4e48\u6807\u8bc6\uff0c\u4e5f\u4e0d\u9650\u4e8e\u4e00\u4e2a\u5b57\u7b26\uff09<\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: center;\">\u6cdb\u578b\u6807\u8bc6<\/th>\n<th style=\"text-align: center;\">\u542b\u4e49<\/th>\n<th style=\"text-align: center;\">\u5e94\u7528\u573a\u666f<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: center;\">E<\/td>\n<td style=\"text-align: center;\">Element\uff08\u5143\u7d20\uff09<\/td>\n<td style=\"text-align: center;\">\u5728\u96c6\u5408\u4e2d\u4f7f\u7528\uff0c\u8868\u793a\u96c6\u5408\u4e2d\u5b58\u653e\u7684\u5143\u7d20\u7c7b\u578b<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center;\">T<\/td>\n<td style=\"text-align: center;\">Type\uff08\u7c7b\u578b\uff09<\/td>\n<td style=\"text-align: center;\">\u4e00\u822c\u7528\u4e8e\u6cdb\u578b\u7c7b\u6216\u6cdb\u578b\u65b9\u6cd5\uff0c\u8868\u793a\u4e00\u4e2a\u81ea\u5b9a\u4e49\u7684\u7c7b\u578b<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center;\">K<\/td>\n<td style=\"text-align: center;\">Key\uff08\u952e\uff09<\/td>\n<td style=\"text-align: center;\">\u5728\u6620\u5c04\u4e2d\u4f7f\u7528\uff0c\u8868\u793a\u6620\u5c04\u4e2d\u7684\u952e\u7684\u7c7b\u578b<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center;\">V<\/td>\n<td style=\"text-align: center;\">Value\uff08\u503c\uff09<\/td>\n<td style=\"text-align: center;\">\u5728\u6620\u5c04\u4e2d\u4f7f\u7528\uff0c\u8868\u793a\u6620\u5c04\u4e2d\u7684\u503c\u7684\u7c7b\u578b<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center;\">N<\/td>\n<td style=\"text-align: center;\">Number\uff08\u6570\u5b57\uff09<\/td>\n<td style=\"text-align: center;\">\u5728\u6570\u503c\u64cd\u4f5c\u4e2d\u4f7f\u7528\uff0c\u8868\u793a\u4e00\u4e2a\u6570\u503c\u7c7b\u578b<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center;\">?<\/td>\n<td style=\"text-align: center;\">Wildcard\uff08\u901a\u914d\u7b26\uff09<\/td>\n<td style=\"text-align: center;\">\u8868\u793a\u4e00\u4e2a\u672a\u77e5\u7684\u7c7b\u578b\uff0c\u7528\u4e8e\u9650\u5b9a\u6cdb\u578b\u7684\u4e0a\u754c\u6216\u4e0b\u754c<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<pre><code class=\"language-java\">class Main\n{\n    public static void main(String[] args)\n    {\n        Test&lt;Integer&gt; t1 = new Test&lt;&gt;();\n        t1.set_value(10);\n        System.out.println(t1);\n\n        Test&lt;String&gt; t2 = new Test&lt;&gt;(&quot;Hello&quot;);\n        System.out.println(t2.get_value());\n        System.out.println(t2);\n    }\n}\n\nclass Test&lt;T&gt;\n{\n    private T value;\n\n    public Test()\n    {\n\n    }\n\n    public Test(T value)\n    {\n        this.value = value;\n    }\n\n    public void set_value(T value)\n    {\n        this.value = value;\n    }\n\n    public T get_value()\n    {\n        return this.value;\n    }\n\n    @Override\n    public String toString()\n    {\n        return &quot;Test {value=&quot; + this.value + &quot;}&quot;;\n    }\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/08\/image-1693807894538.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 168px; --smush-placeholder-aspect-ratio: 168\/90;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"%E7%BB%A7%E6%89%BF%E4%B8%AD%E7%9A%84%E6%B3%9B%E5%9E%8B\"><\/span>\u7ee7\u627f\u4e2d\u7684\u6cdb\u578b<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>2023.9.3<\/p>\n<pre><code class=\"language-java\">class Main\n{\n    public static void main(String[] args)\n    {\n        Test2&lt;Integer&gt; t1 = new Test2&lt;&gt;();\n        t1.set_value(9);\n        System.out.println(t1.get_value());\n\n        Test2&lt;String&gt; t2 = new Test2&lt;&gt;(&quot;Hello&quot;);\n        System.out.println(t2.get_value());\n\n        Test3 t3 = new Test3();\n        System.out.println(t3.get_value());\n    }\n}\n\nclass Test1&lt;A&gt;\n{\n    protected A value;\n}\n\nclass Test2&lt;B&gt; extends Test1&lt;B&gt; \/\/ \u6807\u8bc6\u53ef\u4ee5\u548c\u7236\u7c7b\u5b9a\u4e49\u4e2d\u4e0d\u540c\uff0c\u4f46\u662f\u8fd9\u91cc\u524d\u540e\u5fc5\u987b\u4e00\u6837\uff0c\u4ee3\u8868\u540c\u4e00\u79cd\u7c7b\u578b\n{\n    public Test2()\n    {\n\n    }\n\n    public Test2(B value)\n    {\n        super.value = value;\n    }\n\n    public void set_value(B value)\n    {\n        super.value = value;\n    }\n\n    public B get_value()\n    {\n        return super.value;\n    }\n}\n\nclass Test3 extends Test1&lt;Integer&gt; \/\/ \u5b50\u7c7b\u4e0d\u4f7f\u7528\u6cdb\u578b\uff0c\u5219\u7236\u7c7b\u7684\u6807\u8bc6\u8981\u6307\u5b9a\u7c7b\u578b\n{\n    public Test3()\n    {\n        super.value = 1;\n    }\n\n    public Integer get_value()\n    {\n        return super.value;\n    }\n}\n\nclass Test4&lt;T1,T2&gt; extends Test1&lt;String&gt; \/\/ \u5b50\u7c7b\u4e0d\u4f7f\u7528\u7236\u7c7b\u7684\u6cdb\u578b\uff0c\u5219\u8981\u6307\u5b9a\u7236\u7c7b\u6807\u8bc6\u4e3a\u786e\u5b9a\u7c7b\u578b\n{\n\n}\n\nclass Test5&lt;T1,T2&gt; extends Test1&lt;T1&gt; \/\/ \u5b50\u7c7b\u4f7f\u7528\u591a\u4e2a\u6cdb\u578b\uff0c\u4e14\u4f7f\u7528\u5230\u7236\u7c7b\u6cdb\u578b\u7684\u60c5\u51b5\n{\n\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/08\/image-1693814126737.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 133px; --smush-placeholder-aspect-ratio: 133\/97;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"%E6%B3%9B%E5%9E%8B%E6%8E%A5%E5%8F%A3\"><\/span>\u6cdb\u578b\u63a5\u53e3<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>2023.9.4<\/p>\n<p>\u6cdb\u578b\u63a5\u53e3\u548c\u6cdb\u578b\u7c7b\u4f7f\u7528\u65b9\u6cd5\u5dee\u4e0d\u591a<\/p>\n<pre><code class=\"language-java\">class Main\n{\n    public static void main(String[] args)\n    {\n        Person p1 = new Person(&quot;\u5c0f\u5f3a&quot;, 20);\n        Person p2 = new Person(&quot;\u5c0f\u7ea2&quot;, 17);\n        System.out.println(p1.compare(p2));\n\n        Student s1 = new Student(&quot;\u5c0f\u5f20&quot;, 78);\n        Student s2 = new Student(&quot;\u5c0f\u738b&quot;, 100);\n        System.out.println(s1.compare(s2));\n    }\n}\n\ninterface ICompare&lt;T&gt;\n{\n    int compare(T o);\n}\n\nclass Person implements ICompare&lt;Person&gt;\n{\n    private String name;\n    private int age;\n\n    public Person()\n    {\n\n    }\n\n    public Person(String name, int age)\n    {\n        this.name = name;\n        this.age = age;\n    }\n\n    public int get_age()\n    {\n        return this.age;\n    }\n\n    @Override\n    public int compare(Person o)\n    {\n        return this.age - o.age;\n    }\n}\n\nclass Student implements ICompare&lt;Student&gt;\n{\n    private String name;\n    private int score;\n\n    public Student()\n    {\n\n    }\n\n    public Student(String name, int score)\n    {\n        this.name = name;\n        this.score = score;\n    }\n\n    public int get_score()\n    {\n        return this.score;\n    }\n\n    @Override\n    public int compare(Student o)\n    {\n        return this.score - o.get_score();\n    }\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/08\/image-1693822875197.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 76px; --smush-placeholder-aspect-ratio: 76\/86;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"%E6%B3%9B%E5%9E%8B%E6%96%B9%E6%B3%95\"><\/span>\u6cdb\u578b\u65b9\u6cd5<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>2023.9.4<\/p>\n<pre><code class=\"language-java\">class Main\n{\n    public static void main(String[] args)\n    {\n        Integer[] a = {1, 2};\n        print(a);\n        swap(a);\n        print(a);\n\n        String[] b = {&quot;hello&quot;, &quot;world&quot;};\n        print(b);\n        swap(b);\n        print(b);\n\n    }\n\n    static &lt;T&gt; void swap(T[] array) \/\/ \u6cdb\u578b\u65b9\u6cd5\uff0c\u4ea4\u6362\n    {\n        T tmp = array[0];\n        array[0] = array[1];\n        array[1] = tmp;\n    }\n\n    static &lt;T&gt; void print(T[] array) \/\/ \u6cdb\u578b\u65b9\u6cd5\uff0c\u6253\u5370\u8f93\u51fa\n    {\n        System.out.println(array[0] + &quot; &quot; + array[1]);\n    }\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/08\/image-1693828313813.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 147px; --smush-placeholder-aspect-ratio: 147\/117;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"%E7%B1%BB%E5%9E%8B%E9%80%9A%E9%85%8D%E7%AC%A6\"><\/span>\u7c7b\u578b\u901a\u914d\u7b26<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"%E6%97%A0%E7%95%8C%E9%80%9A%E9%85%8D%E7%AC%A6\"><\/span>\u65e0\u754c\u901a\u914d\u7b26<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>2023.9.4<\/p>\n<pre><code class=\"language-java\">class Main\n{\n    public static void main(String[] args)\n    {\n        Box&lt;Integer&gt; int_box = new Box&lt;&gt;();\n        int_box.set(10);\n        print_box(int_box);\n\n        Box&lt;String&gt; str_box = new Box&lt;&gt;();\n        str_box.set(&quot;hello&quot;);\n        print_box(str_box);\n    }\n\n    static void print_box(Box&lt;?&gt; object) \/\/ \u4f7f\u7528 ? \u4f5c\u4e3a\u6807\u8bc6\n    {\n        System.out.println(object.get());\n    }\n}\n\nclass Box&lt;T&gt;\n{\n    private T object;\n\n    public void set(T object)\n    {\n        this.object = object;\n    }\n\n    public T get()\n    {\n        return this.object;\n    }\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/08\/image-1693840896575.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 129px; --smush-placeholder-aspect-ratio: 129\/119;\" \/><\/p>\n<h3><span class=\"ez-toc-section\" id=\"%E4%B8%8A%E7%95%8C%E9%80%9A%E9%85%8D%E7%AC%A6\"><\/span>\u4e0a\u754c\u901a\u914d\u7b26<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>2023.9.5<\/p>\n<p>\u4e0a\u754c\u901a\u914d\u7b26\u6709\u4e86\u4e0a\u9650\u9650\u5236\uff0c\u6cdb\u578b\u7684\u7c7b\u578b\u53ea\u80fd\u5728\u4e00\u5b9a\u8303\u56f4\u5185\u3002\u65e0\u754c\u901a\u914d\u7b26\u5176\u5b9e\u662f\u9ed8\u8ba4\u628a Object \u4f5c\u4e3a\u4e0a\u754c\uff0c\u4e5f\u5c31\u662f\u652f\u6301\u6240\u6709 Java \u7c7b\u3002<\/p>\n<pre><code class=\"language-java\">class Main\n{\n    public static void main(String[] args)\n    {\n        Box&lt;Integer&gt; int_box = new Box&lt;&gt;();\n        int_box.set(10);\n        print_box(int_box);\n\n        Box&lt;Float&gt; float_box = new Box&lt;&gt;();\n        float_box.set(9.5f);\n        print_box(float_box);\n\n        Box&lt;String&gt; str_box = new Box&lt;&gt;();\n        str_box.set(&quot;hello&quot;);\n        \/\/ print_box(str_box); \/\/ String \u8d85\u51fa\u4e86\u4e0a\u9650\uff0c\u4e0d\u662f Number \u7684\u5b50\u7c7b\n    }\n\n    \/\/ \u589e\u52a0\u4e86\u4e0a\u9650\uff0c\u6bd4\u5982\u8fd9\u91cc\u6cdb\u578b\u53ea\u80fd\u662f Number \u6216 Number \u7684\u5b50\u7c7b\n    \/\/ Byte\u3001Short\u3001Integer\u3001Long\u3001Float\u3001Double\n    static void print_box(Box&lt;? extends Number&gt; object)\n    {\n        System.out.println(object.get());\n    }\n}\n\nclass Box&lt;T&gt;\n{\n    private T object;\n\n    public void set(T object)\n    {\n        this.object = object;\n    }\n\n    public T get()\n    {\n        return this.object;\n    }\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/08\/image-1693898599416.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 128px; --smush-placeholder-aspect-ratio: 128\/96;\" \/><\/p>\n<h3><span class=\"ez-toc-section\" id=\"%E4%B8%8B%E7%95%8C%E9%80%9A%E9%85%8D%E7%AC%A6\"><\/span>\u4e0b\u754c\u901a\u914d\u7b26<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>2023.9.5<\/p>\n<p>\u4e0b\u754c\u901a\u914d\u7b26\u53ef\u4ee5\u8fd9\u6837\u7406\u89e3\uff1a\u5047\u5982\u5148\u6709\u4e00\u4e2a\u52a8\u7269\u7c7b\uff0c\u7136\u540e\u6d3e\u751f\u51fa\u4e86\u732b\u548c\u72d7\uff0c\u5982\u679c\u5c06\u72d7\u4f5c\u4e3a\u4e0b\u754c\uff0c\u90a3\u4e48\u6cdb\u578b\u5c31\u53ef\u4ee5\u5339\u914d\u4e3a\u72d7\uff0c\u4ee5\u53ca\u518d\u5f80\u4e0a\u7684\u52a8\u7269\uff0c\u4f46\u662f\u5374\u4e0d\u80fd\u5339\u914d\u4e3a\u732b\uff0c\u5373\u5c06\u72d7\u4f5c\u4e3a\u4e0b\u754c\uff0c\u6cbf\u7740\u5b83\u7684\u7236\u7c7b\u5f80\u4e0a\u53ef\u4ee5\u5339\u914d\u3002<\/p>\n<pre><code class=\"language-java\">class Main\n{\n    public static void main(String[] args)\n    {\n        Dog dog = new Dog();\n\n        Box&lt;Dog&gt; dog_box = new Box&lt;&gt;();\n        print_box(dog, dog_box);\n\n        Box&lt;Cat&gt; cat_box = new Box&lt;&gt;();\n        \/\/ print_box(dog, cat_box); \/\/ \u72d7\u4e0d\u80fd\u653e\u8fdb\u732b Box\n\n        Box&lt;Animal&gt; animal_box = new Box&lt;&gt;();\n        print_box(dog, animal_box);\n    }\n\n    static void print_box(Dog dog, Box&lt;? super Dog&gt; box) \/\/ \u4e0b\u754c\u901a\u914d\u7b26\uff0c\u72d7\u53ef\u4ee5\u653e\u5230\u72d7 Box \u548c \u52a8\u7269 Box \u91cc\uff0c\u4f46\u662f\u4e0d\u80fd\u653e\u8fdb\u732b Box \u91cc\n    {\n        box.set(dog);\n        box.get().show();\n    }\n}\n\nclass Animal\n{\n    public void show()\n    {\n        System.out.println(&quot;\u8fd9\u662f\u52a8\u7269&quot;);\n    }\n}\n\nclass Dog extends Animal\n{\n    @Override\n    public void show()\n    {\n        System.out.println(&quot;\u8fd9\u662f\u72d7&quot;);\n    }\n}\n\nclass Cat extends Animal\n{\n    @Override\n    public void show()\n    {\n        System.out.println(&quot;\u8fd9\u662f\u732b&quot;);\n    }\n}\n\nclass Box&lt;T extends Animal&gt; \/\/ \u5c06 Animal \u4f5c\u4e3a\u4e0a\u9650\uff0c\u800c\u4e0d\u662f Object\n{\n    private T object;\n\n    public void set(T object)\n    {\n        this.object = object;\n    }\n\n    public T get()\n    {\n        return this.object;\n    }\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/08\/image-1693916158145.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 114px; --smush-placeholder-aspect-ratio: 114\/89;\" \/><\/p>\n<h1><span class=\"ez-toc-section\" id=\"%E5%BC%82%E5%B8%B8\"><\/span>\u5f02\u5e38<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<h2><span class=\"ez-toc-section\" id=\"%E5%BC%82%E5%B8%B8%E6%8D%95%E8%8E%B7\"><\/span>\u5f02\u5e38\u6355\u83b7<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u7a0b\u5e8f\u53d1\u751f\u5f02\u5e38\u7684\u65f6\u5019\u4f1a\u76f4\u63a5\u5d29\u6e83\u9000\u51fa\uff0c\u4f46\u5982\u679c\u52a0\u4e0a\u5f02\u5e38\u5904\u7406\uff0c\u5219\u53ef\u4ee5\u5c06\u53d1\u751f\u7684\u5f02\u5e38\u6355\u83b7\u5230\uff0c\u80fd\u591f\u9488\u5bf9\u53d1\u751f\u7684\u4e0d\u540c\u5f02\u5e38\u8fdb\u884c\u5904\u7406\uff0c\u4f7f\u7a0b\u5e8f\u6700\u7ec8\u53ef\u4ee5\u6b63\u5e38\u8fd0\u884c\u3002C++ \u548c Python \u4e5f\u90fd\u6709\u8fd9\u79cd\u673a\u5236\u3002\u5f02\u5e38\u673a\u5236\u4e5f\u53ef\u4ee5\u5728\u7a0b\u5e8f\u8c03\u8bd5\u7684\u65f6\u5019\u5e2e\u52a9\u627e\u51fa\u4e00\u4e9b\u95ee\u9898\u3002<\/p>\n<p>2023.9.5<\/p>\n<pre><code class=\"language-java\">class Main\n{\n    public static void main(String[] args)\n    {\n        int i = 10;\n        int j = 0;\n        int m = 0;\n\n        try \/\/ \u53ef\u80fd\u51fa\u73b0\u5f02\u5e38\u7684\u4ee3\u7801\n        {\n            \/\/ \u629b\u51fa\u5f02\u5e38 - \u624b\u52a8\n            \/\/ if (j == 0)\n            \/\/ {\n            \/\/     throw new Exception(&quot;\/ by zero&quot;);\n            \/\/ }\n\n            m = i \/ j; \/\/ \u9664\u6570\u4e3a 0 \u7684\u8fd0\u7b97\n        }\n        catch (Exception e) \/\/ \u6355\u83b7\u5230\u5f02\u5e38\uff0c\u53ef\u4ee5\u5728\u8fd9\u91cc\u5904\u7406\n        {\n            System.out.println(e.getMessage() + &quot;\\n&quot; + \/\/ \u5f02\u5e38\u6d88\u606f\n                                e.getCause() + &quot;\\n&quot;); \/\/ \u5f02\u5e38\u539f\u56e0\n\n            e.printStackTrace(); \/\/ \u5c06\u5f02\u5e38\u6253\u5370\u5230\u6807\u51c6\u9519\u8bef\u6d41\n            System.out.println(e); \/\/ toString \u65b9\u6cd5\uff0c\u5f02\u5e38\u7684\u7b80\u8ff0\n\n            \/\/ \u7ea0\u6b63\u9519\u8bef\n            j = 10;\n            m = i \/ j;            \n        }\n        finally \/\/ \u4e0d\u7ba1\u6709\u65e0\u5f02\u5e38\u90fd\u4f1a\u6267\u884c\n        {\n            System.out.println(&quot;\u8ba1\u7b97\u7ed3\u679c\u4e3a &quot; + m);\n        }\n    }\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/08\/image-1693920087981.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 309px; --smush-placeholder-aspect-ratio: 309\/148;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"%E5%B8%B8%E8%A7%81%E5%BC%82%E5%B8%B8\"><\/span>\u5e38\u89c1\u5f02\u5e38<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>2023.9.5<\/p>\n<pre><code class=\"language-java\">class Main\n{\n    public static void main(String[] args)\n    {\n        try\n        {\n            \/\/ \u7b97\u672f\u5f02\u5e38\n            int m = 9 \/ 0; \/\/ \u9664\u6570\u4e3a\u96f6\n\n            \/\/ \u7a7a\u6307\u9488\u5f02\u5e38\n            String s = null;\n            System.out.println(s);\n\n            \/\/ \u6570\u7ec4\u7d22\u5f15\u8d8a\u754c\u5f02\u5e38\n            String[] str_array = new String[2]; \/\/ \u5927\u5c0f\u4e3a 2\n            str_array[2] = &quot;dadasd&quot;; \/\/ \u4f46\u662f\u5374\u5728\u7b2c 3 \u4e2a\u7d22\u5f15\u5904\u5c1d\u8bd5\u5199\u5165\n\n            \/\/ \u5b57\u7b26\u4e32\u7d22\u5f15\u8d8a\u754c\n            String s1 = &quot;abcd&quot;; \/\/ 4 \u4e2a\u5b57\u7b26\u7684\u5b57\u7b26\u4e32\n            System.out.println(s1.charAt(4)); \/\/ \u5c1d\u8bd5\u8bbf\u95ee\u7b2c 5 \u4e2a\u7d22\u5f15\u4f4d\u7f6e\n\n            \/\/ \u6570\u5b57\u683c\u5f0f\u5316\u5f02\u5e38\n            String s2 = &quot;a123&quot;;\n            Integer integer = Integer.parseInt(s2); \/\/ \u5c06\u975e\u6570\u5b57\u5b57\u7b26\u4e32\u8f6c\u4e3a\u6570\u5b57\n\n            \/\/ \u7c7b\u578b\u8f6c\u6362\u9519\u8bef\n            Object obj = new Test1();\n            Test2 test = (Test2)obj;\n        }\n        catch (ArithmeticException e) \/\/ \u7b97\u672f\u5f02\u5e38\n        {\n            System.out.println(e);\n        }\n        catch (NullPointerException e) \/\/ \u7a7a\u6307\u9488\u5f02\u5e38\n        {\n            System.out.println(e);\n        }\n        catch (ArrayIndexOutOfBoundsException e) \/\/ \u6570\u7ec4\u7d22\u5f15\u8d8a\u754c\u5f02\u5e38\n        {\n            System.out.println(e);\n        }\n        catch (StringIndexOutOfBoundsException e) \/\/ \u5b57\u7b26\u4e32\u7d22\u5f15\u8d8a\u754c\n        {\n            System.out.println(e);\n        }\n        catch (NumberFormatException e) \/\/ \u6570\u5b57\u683c\u5f0f\u5316\u5f02\u5e38\n        {\n            System.out.println(e);\n        }\n        catch (ClassCastException e) \/\/ \u7c7b\u578b\u8f6c\u6362\u9519\u8bef\n        {\n            System.out.println(e);\n        }\n    }\n}\n\nclass Test1\n{\n\n}\n\nclass Test2\n{\n\n}<\/code><\/pre>\n<h2><span class=\"ez-toc-section\" id=\"%E8%87%AA%E5%AE%9A%E4%B9%89%E5%BC%82%E5%B8%B8\"><\/span>\u81ea\u5b9a\u4e49\u5f02\u5e38<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>2023.9.5<\/p>\n<pre><code class=\"language-java\">class Main\n{\n    public static void main(String[] args)\n    {\n        String account = &quot;admin&quot;;\n        String password = &quot;passw&quot;;\n\n        try\n        {\n            login(account, password);\n        }\n        catch (AccountException e)\n        {\n            e.printStackTrace();\n            System.out.println(&quot;\u8bf7\u91cd\u65b0\u8f93\u5165\u8d26\u53f7!&quot;);\n        }\n        catch (PasswordException e)\n        {\n            e.printStackTrace();;\n            System.out.println(&quot;\u8bf7\u91cd\u65b0\u8f93\u5165\u5bc6\u7801!&quot;);\n        }\n    }\n\n    static void login(String account, String password) throws AccountException, PasswordException \/\/ \u58f0\u660e\u8be5\u65b9\u6cd5\u53ef\u80fd\u629b\u51fa\u7684\u5f02\u5e38\uff08\u544a\u77e5\u8c03\u7528\u8005\uff09\n    {\n        if (!&quot;admin&quot;.equals(account))\n        {\n            throw new AccountException(&quot;\u8d26\u53f7\u4e0d\u6b63\u786e\uff01&quot;);\n        }\n        if (!&quot;passwd&quot;.equals(password))\n        {\n            throw new PasswordException(&quot;\u5bc6\u7801\u4e0d\u6b63\u786e\uff01&quot;);\n        }\n        System.out.println(&quot;\u767b\u5f55\u6210\u529f&quot;);\n    }\n}\n\nclass LoginException extends RuntimeException\n{\n    public LoginException(String message)\n    {\n        super(message);\n    }\n}\n\nclass AccountException extends LoginException\n{\n    public AccountException(String messgae)\n    {\n        super(messgae);\n    }\n}\n\nclass PasswordException extends LoginException\n{\n    public PasswordException(String message)\n    {\n        super(message);\n    }\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/08\/image-1693925781194.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 275px; --smush-placeholder-aspect-ratio: 275\/101;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"%E5%B8%B8%E8%A7%81%E5%BC%82%E5%B8%B8%E7%BB%A7%E6%89%BF%E5%85%B3%E7%B3%BB\"><\/span>\u5e38\u89c1\u5f02\u5e38\u7ee7\u627f\u5173\u7cfb<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>2023.9.16<\/p>\n<pre><code>Throwable\n\u251c\u2500\u2500 Error\n\u2502   \u251c\u2500\u2500 OutOfMemoryError\n\u2502   \u251c\u2500\u2500 StackOverflowError\n\u2502   \u251c\u2500\u2500 VirtualMachineError\n\u2502   \u251c\u2500\u2500 LinkageError\n\u2502   \u2502   \u251c\u2500\u2500 ClassCircularityError\n\u2502   \u2502   \u251c\u2500\u2500 ClassFormatError\n\u2502   \u2502   \u251c\u2500\u2500 IncompatibleClassChangeError\n\u2502   \u2502   \u251c\u2500\u2500 NoSuchFieldError\n\u2502   \u2502   \u2514\u2500\u2500 NoSuchMethodError\n\u2502   \u251c\u2500\u2500 InternalError\n\u2502   \u251c\u2500\u2500 UnknownError\n\u2502   \u2514\u2500\u2500 UnsatisfiedLinkError\n\u2514\u2500\u2500 Exception\n    \u251c\u2500\u2500 IOException\n    \u2502   \u251c\u2500\u2500 EOFException\n    \u2502   \u251c\u2500\u2500 FileNotFoundException\n    \u2502   \u251c\u2500\u2500 SocketException\n    \u2502   \u2514\u2500\u2500 ...\n    \u251c\u2500\u2500 RuntimeException\n    \u2502   \u251c\u2500\u2500 ArithmeticException\n    \u2502   \u251c\u2500\u2500 NullPointerException\n    \u2502   \u251c\u2500\u2500 IndexOutOfBoundsException\n    \u2502   \u2502   \u251c\u2500\u2500 ArrayIndexOutOfBoundsException\n    \u2502   \u2502   \u2514\u2500\u2500 StringIndexOutOfBoundsException\n    \u2502   \u251c\u2500\u2500 ClassCastException\n    \u2502   \u251c\u2500\u2500 IllegalArgumentException\n    \u2502   \u251c\u2500\u2500 IllegalStateException\n    \u2502   \u251c\u2500\u2500 IllegalThreadStateException\n    \u2502   \u2514\u2500\u2500 ...\n    \u251c\u2500\u2500 SQLException\n    \u251c\u2500\u2500 ClassNotFoundException\n    \u251c\u2500\u2500 CloneNotSupportedException\n    \u251c\u2500\u2500 IllegalAccessException\n    \u251c\u2500\u2500 InstantiationException\n    \u251c\u2500\u2500 InterruptedException\n    \u2514\u2500\u2500 ...<\/code><\/pre>\n<h1><span class=\"ez-toc-section\" id=\"IO\"><\/span>IO<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<h2><span class=\"ez-toc-section\" id=\"%E5%86%99%E6%96%87%E4%BB%B6\"><\/span>\u5199\u6587\u4ef6<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>2023.9.6<\/p>\n<pre><code class=\"language-java\">import java.io.*;\n\nclass Main\n{\n    public static void main(String[] args)\n    {\n        String content = &quot;Hello world&quot;; \/\/ \u8981\u5199\u5165\u6587\u4ef6\u7684\u5185\u5bb9\n        String file_name = &quot;test1.txt&quot;; \/\/ \u76ee\u6807\u6587\u4ef6\u540d\n\n        File file = new File(file_name); \/\/ \u521b\u5efa\u6587\u4ef6\u5bf9\u8c61\n        FileWriter writer = null; \/\/ \u6587\u4ef6\u5199\u5165\u5bf9\u8c61\n\n        try\n        {\n            if (!file.exists()) \/\/ \u4e0d\u5b58\u5728\u5c31\u521b\u5efa\u6587\u4ef6\n            {\n                file.createNewFile(); \n            }\n\n            writer = new FileWriter(file, false); \/\/ \u521b\u5efa\u5199\u6587\u4ef6\u5bf9\u8c61\u5e76\u5173\u8054\u5230\u6587\u4ef6\u5bf9\u8c61\uff0c\u975e\u8ffd\u52a0\u6a21\u5f0f\n            writer.write(content); \/\/ \u5199\u5165\n            writer.flush(); \/\/ \u5c06\u5199\u5165\u5230\u7f13\u51b2\u533a\u7684\u6570\u636e\u5237\u65b0\u5230\u6587\u4ef6\n\n            System.out.println(&quot;\u5199\u5165\u5b8c\u6210&quot;);\n        }\n        catch (IOException e)\n        {\n            e.printStackTrace();\n        }\n        finally\n        {\n            try\n            {\n                if (writer != null) \/\/ \u5173\u95ed\u5199\u6587\u4ef6\u5bf9\u8c61\n                {\n                    writer.close();\n                }\n            }\n            catch (IOException e)\n            {\n                e.printStackTrace();\n            }\n        }\n\n    }\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/08\/image-1694010510497.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 267px; --smush-placeholder-aspect-ratio: 267\/160;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"%E5%A4%8D%E5%88%B6%E6%96%87%E4%BB%B6%E5%86%85%E5%AE%B9\"><\/span>\u590d\u5236\u6587\u4ef6\u5185\u5bb9<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>2023.9.6<\/p>\n<pre><code class=\"language-java\">import java.io.*;\n\nclass Main\n{\n    public static void main(String[] args)\n    {\n        String src_file_name = &quot;test1.txt&quot;; \/\/ \u6e90\u6587\u4ef6\n        String dest_file_name = &quot;test2.txt&quot;; \/\/ \u76ee\u6807\u6587\u4ef6\n\n        File src_file = new File(src_file_name);\n        File dest_file = new File(dest_file_name);\n\n        FileInputStream input = null;\n        FileOutputStream output = null;\n\n        try\n        {\n            input = new FileInputStream(src_file); \/\/ \u5c06\u6587\u4ef6\u8f93\u5165\u6d41\u548c\u6253\u5f00\u7684\u6e90\u6587\u4ef6\u5bf9\u8c61\u5173\u8054\n            output = new FileOutputStream(dest_file); \/\/ \u5c06\u6587\u4ef6\u8f93\u51fa\u6d41\u548c\u6253\u5f00\u7684\u76ee\u6807\u6587\u4ef6\u5bf9\u8c61\u5173\u8054\n\n            for (int data = input.read(); data != -1; data = input.read()) \/\/ \u4ece\u6587\u4ef6\u8f93\u5165\u6d41\u8bfb\u5165\uff0c\u518d\u5199\u5165\u6587\u4ef6\u8f93\u51fa\u6d41\n            {\n                output.write(data);\n            }\n        }\n        catch (IOException e)\n        {\n            e.printStackTrace();\n        }\n        finally\n        {\n            try\n            {\n                if (input != null)\n                {\n                    input.close();\n                }\n                if (output != null)\n                {\n                    output.close();\n                }\n            }\n            catch (IOException e)\n            {\n                e.printStackTrace();\n            }\n        }\n    }\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/08\/image-1694014450791.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 531px; --smush-placeholder-aspect-ratio: 531\/171;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"%E7%BC%93%E5%86%B2\"><\/span>\u7f13\u51b2<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>2023.9.6<\/p>\n<p>\u524d\u9762\u7684\u6587\u4ef6\u5185\u5bb9\u590d\u5236\u662f\u6253\u5f00\u4e00\u6b21\u8f93\u5165\u6d41\u8bfb\u53d6\u4e00\u4e2a\u5b57\u7b26\uff0c\u6253\u5f00\u4e00\u8f93\u51fa\u6d41\u5199\u5165\u4e00\u4e2a\u5b57\u7b26\uff0c\u53ef\u80fd\u6548\u7387\u4f1a\u6bd4\u8f83\u4f4e\u3002\u90a3\u4e48\u5c31\u53ef\u4ee5\u4f7f\u7528\u7f13\u51b2\uff0c\u4e00\u6b21\u6027\u8bfb\u53d6\u4e00\u5b9a\u91cf\u7684\u6570\u636e\uff0c\u518d\u4e00\u6b21\u6027\u5199\u5165\u3002<\/p>\n<p>\u5728\u524d\u9762\u6587\u4ef6\u5185\u5bb9\u590d\u5236\u4ee3\u7801\u7684\u57fa\u7840\u4e0a\u4fee\u6539\uff0c\u5c06\u4e00\u6b21\u8bfb\u53d6\u4e00\u4e2a\u5b57\u7b26\u6539\u4e3a\u8bfb\u53d6\u4e00\u5b9a\u91cf\u7684\u3002<\/p>\n<pre><code class=\"language-java\">import java.io.*;\n\nclass Main\n{\n    public static void main(String[] args)\n    {\n        String src_file_name = &quot;test1.txt&quot;; \/\/ \u6e90\u6587\u4ef6\n        String dest_file_name = &quot;test2.txt&quot;; \/\/ \u76ee\u6807\u6587\u4ef6\n\n        File src_file = new File(src_file_name);\n        File dest_file = new File(dest_file_name);\n\n        FileInputStream input = null;\n        FileOutputStream output = null;\n\n        try\n        {\n            input = new FileInputStream(src_file); \/\/ \u5c06\u6587\u4ef6\u8f93\u5165\u6d41\u548c\u6253\u5f00\u7684\u6e90\u6587\u4ef6\u5bf9\u8c61\u5173\u8054\n            output = new FileOutputStream(dest_file); \/\/ \u5c06\u6587\u4ef6\u8f93\u51fa\u6d41\u548c\u6253\u5f00\u7684\u76ee\u6807\u6587\u4ef6\u5bf9\u8c61\u5173\u8054\n            byte[] buffer = new byte[1024]; \/\/ 1KB \u7f13\u51b2\u533a\n\n            for (int length = input.read(buffer); length != -1; length = input.read(buffer)) \/\/ \u4ece\u6587\u4ef6\u8f93\u5165\u6d41\u8bfb\u5165\uff0c\u518d\u5199\u5165\u6587\u4ef6\u8f93\u51fa\u6d41\n            {\n                output.write(buffer, 0, length);\n                output.flush();\n            }\n        }\n        catch (IOException e)\n        {\n            e.printStackTrace();\n        }\n        finally\n        {\n            try\n            {\n                if (input != null)\n                {\n                    input.close();\n                }\n                if (output != null)\n                {\n                    output.close();\n                }\n            }\n            catch (IOException e)\n            {\n                e.printStackTrace();\n            }\n        }\n    }\n}<\/code><\/pre>\n<p>\u53e6\u5916\u4e00\u79cd\u5b9e\u73b0\u662f\u4f7f\u7528 Java \u7684\u7f13\u51b2\u6d41<\/p>\n<pre><code class=\"language-java\">import java.io.*;\n\nclass Main\n{\n    public static void main(String[] args)\n    {\n        String src_file_name = &quot;test1.txt&quot;; \/\/ \u6e90\u6587\u4ef6\n        String dest_file_name = &quot;test2.txt&quot;; \/\/ \u76ee\u6807\u6587\u4ef6\n\n        File src_file = new File(src_file_name);\n        File dest_file = new File(dest_file_name);\n\n        FileInputStream input = null;\n        FileOutputStream output = null;\n\n        BufferedInputStream buffer_input = null;\n        BufferedOutputStream buffer_output = null;\n\n        try\n        {\n            input = new FileInputStream(src_file); \/\/ \u5c06\u6587\u4ef6\u8f93\u5165\u6d41\u548c\u6253\u5f00\u7684\u6e90\u6587\u4ef6\u5bf9\u8c61\u5173\u8054\n            output = new FileOutputStream(dest_file); \/\/ \u5c06\u6587\u4ef6\u8f93\u51fa\u6d41\u548c\u6253\u5f00\u7684\u76ee\u6807\u6587\u4ef6\u5bf9\u8c61\u5173\u8054\n            buffer_input = new BufferedInputStream(input); \/\/ \u5c06\u7f13\u51b2\u8f93\u5165\u6d41\u548c\u6587\u4ef6\u8f93\u5165\u6d41\u5173\u8054\n            buffer_output = new BufferedOutputStream(output); \/\/ \u5c06\u7f13\u51b2\u8f93\u51fa\u6d41\u548c\u6587\u4ef6\u8f93\u51fa\u6d41\u5173\u8054\n            byte[] buffer = new byte[1024]; \/\/ 1KB \u7f13\u51b2\u533a\n\n            for (int length = buffer_input.read(buffer); length != -1; length = buffer_input.read(buffer)) \/\/ \u4ece\u6587\u4ef6\u8f93\u5165\u6d41\u8bfb\u5165\uff0c\u518d\u5199\u5165\u6587\u4ef6\u8f93\u51fa\u6d41\n            {\n                buffer_output.write(buffer, 0, length);\n                buffer_output.flush();\n            }\n        }\n        catch (IOException e)\n        {\n            e.printStackTrace();\n        }\n        finally\n        {\n            try\n            {\n                if (input != null)\n                {\n                    input.close();\n                }\n                if (output != null)\n                {\n                    output.close();\n                }\n                if (buffer_input != null)\n                {\n                    buffer_input.close();\n                }\n                if (buffer_output != null)\n                {\n                    buffer_output.close();\n                }\n            }\n            catch (IOException e)\n            {\n                e.printStackTrace();\n            }\n        }\n    }\n}<\/code><\/pre>\n<h1><span class=\"ez-toc-section\" id=\"%E7%BA%BF%E7%A8%8B\"><\/span>\u7ebf\u7a0b<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>\u7ebf\u7a0b\u72b6\u6001<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/08\/image-1694071757808.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 892px; --smush-placeholder-aspect-ratio: 892\/715;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"%E7%AE%80%E5%8D%95%E5%A4%9A%E7%BA%BF%E7%A8%8B\"><\/span>\u7b80\u5355\u591a\u7ebf\u7a0b<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>2023.9.7<\/p>\n<pre><code class=\"language-java\">class Main\n{\n    public static void main(String[] arsg)\n    {\n        System.out.println(&quot;\u4e3b\u7ebf\u7a0b\u5f00\u59cb\u6267\u884c&quot;);\n        System.out.println(&quot;\u4e3b\u7ebf\u7a0b\u540d\u5b57\u4e3a\uff1a&quot; + Thread.currentThread().getName());\n\n        MyThread thread = new MyThread();\n        thread.start();\n        try\n        {\n            thread.join();\n        }\n        catch (InterruptedException e)\n        {\n            e.printStackTrace();\n        }\n\n        System.out.println(&quot;\u4e3b\u7a0b\u5e8f\u6267\u884c\u7ed3\u675f&quot;);\n    }\n}\n\nclass MyThread extends Thread\n{\n    @Override\n    public void run()\n    {\n        System.out.println(&quot;\u5b50\u7ebf\u7a0b\u5f00\u59cb\u6267\u884c&quot;);\n        System.out.println(&quot;\u5b50\u7ebf\u7a0b\u540d\u5b57\u4e3a\uff1a&quot; + Thread.currentThread().getName());\n\n        try\n        {\n            Thread.sleep(5000); \/\/ \u4f11\u7720 5 \u79d2\u6a21\u62df\u5b50\u7ebf\u7a0b\u8017\u65f6\u64cd\u4f5c\n        }\n        catch (InterruptedException e)\n        {\n            e.printStackTrace();\n        }\n\n        System.out.println(&quot;\u5b50\u7ebf\u7a0b\u7ed3\u675f&quot;);\n    }\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/08\/image-1694072922390.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 216px; --smush-placeholder-aspect-ratio: 216\/169;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"Lambda_%E8%A1%A8%E8%BE%BE%E5%BC%8F\"><\/span>Lambda \u8868\u8fbe\u5f0f<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>2023.9.7<\/p>\n<pre><code class=\"language-java\">class Main\n{\n    public static void main(String[] args)\n    {\n        System.out.println(&quot;\u4e3b\u7ebf\u7a0b\u5f00\u59cb\u6267\u884c&quot;);\n\n        \/\/ \u4f7f\u7528 Lambda \u8868\u8fbe\u5f0f\u4f20\u5165\u6267\u884c\u903b\u8f91\n        Thread t1 = new Thread(() -&gt;\n        {\n            System.out.println(&quot;\u5b50\u7ebf\u7a0b\u5f00\u59cb\u6267\u884c&quot;);\n            System.out.println(&quot;\u672c\u7ebf\u7a0b\u540d\u5b57\u4e3a\uff1a&quot; + Thread.currentThread().getName());\n            System.out.println(&quot;\u5b50\u7ebf\u7a0b\u7ed3\u675f&quot;);\n        });\n\n        t1.start();\n\n        try\n        {\n            t1.join(); \/\/ \u7b49\u5f85\u5b50\u7ebf\u7a0b\u8fd0\u884c\u5b8c\u6210\n        }\n        catch (InterruptedException e)\n        {\n            e.printStackTrace();\n        }\n\n        System.out.println(&quot;\u4e3b\u7ebf\u7a0b\u7ed3\u675f&quot;);\n    }\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/08\/image-1694086220926.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 219px; --smush-placeholder-aspect-ratio: 219\/159;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"Runnable_%E5%8C%BF%E5%90%8D%E7%B1%BB\"><\/span>Runnable \u533f\u540d\u7c7b<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>2023.9.7<\/p>\n<pre><code class=\"language-java\">class Main\n{\n    public static void main(String[] args)\n    {\n        System.out.println(&quot;\u4e3b\u7ebf\u7a0b\u5f00\u59cb\u6267\u884c&quot;);\n\n        Thread t1 = new Thread(new Runnable()\n        {\n            @Override\n            public void run()\n            {\n                System.out.println(&quot;\u5b50\u7ebf\u7a0b\u5f00\u59cb\u6267\u884c&quot;);\n                System.out.println(&quot;\u672c\u7ebf\u7a0b\u540d\u5b57\u4e3a\uff1a&quot; + Thread.currentThread().getName());\n                System.out.println(&quot;\u5b50\u7ebf\u7a0b&quot;);\n            }\n        });\n\n        t1.start();\n\n        try\n        {\n            t1.join(); \/\/ \u7b49\u5f85\u5b50\u7ebf\u7a0b\u8fd0\u884c\u5b8c\u6210\n        }\n        catch (InterruptedException e)\n        {\n            e.printStackTrace();\n        }\n\n        System.out.println(&quot;\u4e3b\u7ebf\u7a0b\u7ed3\u675f&quot;);\n    }\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/08\/image-1694087246154.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 208px; --smush-placeholder-aspect-ratio: 208\/127;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"%E7%BA%BF%E7%A8%8B%E6%B1%A0\"><\/span>\u7ebf\u7a0b\u6c60<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"%E5%9B%BA%E5%AE%9A%E7%BA%BF%E7%A8%8B%E6%95%B0\"><\/span>\u56fa\u5b9a\u7ebf\u7a0b\u6570<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>2023.9.7<\/p>\n<pre><code class=\"language-java\">import java.util.concurrent.ExecutorService;\nimport java.util.concurrent.Executors;\nimport java.util.concurrent.TimeUnit;\n\nclass Main\n{\n    public static void main(String[] args)\n    {\n        \/\/ \u521b\u5efa 3 \u4e2a\u7ebf\u7a0b\n        ExecutorService es = Executors.newFixedThreadPool(3);\n\n        \/\/ \u5411\u7ebf\u7a0b\u6c60\u63d0\u4ea4 5 \u4e2a\u4efb\u52a1\n        for (int i = 0; i &lt; 5; ++i)\n        {\n            es.submit(new Runnable()\n            {\n                @Override\n                public void run()\n                {\n                    System.out.println(&quot;\u7ebf\u7a0b &quot; + Thread.currentThread().getName() + &quot; \u5f00\u59cb\u6267\u884c&quot;);\n                    try\n                    {\n                        Thread.sleep(2000); \/\/ \u4f11\u7720 2 \u79d2\n                    }\n                    catch (InterruptedException e)\n                    {\n                        e.printStackTrace();\n                    }\n                    System.out.println(&quot;\u7ebf\u7a0b &quot; + Thread.currentThread().getName() + &quot; \u7ed3\u675f&quot;);\n                }\n            });\n        }\n\n        \/\/ \u505c\u6b62\u6dfb\u52a0\u65b0\u4efb\u52a1\uff0c\u7b49\u5f85\u7ebf\u7a0b\u5b8c\u6210\u5de5\u4f5c\u540e\u5173\u95ed\u7ebf\u7a0b\u6c60\n        es.shutdown();\n\n        \/\/ \u7b49\u5f85\u7ebf\u7a0b\u6c60\u4e2d\u6240\u6709\u7ebf\u7a0b\u7ed3\u675f\u5de5\u4f5c\n        try\n        {\n            es.awaitTermination(Long.MAX_VALUE, TimeUnit.SECONDS);\n        }\n        catch (InterruptedException e)\n        {\n            e.printStackTrace();\n        }\n\n        System.out.println(&quot;\u4e3b\u7ebf\u7a0b\u7ed3\u675f&quot;);\n    }\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/08\/image-1694089621464.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 273px; --smush-placeholder-aspect-ratio: 273\/216;\" \/><\/p>\n<h3><span class=\"ez-toc-section\" id=\"%E5%8A%A8%E6%80%81%E7%BA%BF%E7%A8%8B%E6%95%B0\"><\/span>\u52a8\u6001\u7ebf\u7a0b\u6570<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>2023.9.7<\/p>\n<pre><code class=\"language-java\">import java.util.concurrent.ExecutorService;\nimport java.util.concurrent.Executors;\nimport java.util.concurrent.TimeUnit;\n\nclass Main\n{\n    public static void main(String[] args)\n    {\n        \/\/ \u52a8\u6001\u521b\u5efa\u7ebf\u7a0b\n        ExecutorService es = Executors.newCachedThreadPool();\n\n        \/\/ \u5411\u7ebf\u7a0b\u6c60\u63d0\u4ea4 20 \u4e2a\u4efb\u52a1\n        for (int i = 0; i &lt; 20; ++i)\n        {\n            es.submit(new Runnable()\n            {\n                @Override\n                public void run()\n                {\n                    System.out.println(&quot;\u7ebf\u7a0b &quot; + Thread.currentThread().getName() + &quot; \u5f00\u59cb\u6267\u884c&quot;);\n                    System.out.println(&quot;\u7ebf\u7a0b &quot; + Thread.currentThread().getName() + &quot; \u7ed3\u675f&quot;);\n                }\n            });\n        }\n\n        \/\/ \u505c\u6b62\u6dfb\u52a0\u65b0\u4efb\u52a1\uff0c\u7b49\u5f85\u7ebf\u7a0b\u5b8c\u6210\u5de5\u4f5c\u540e\u5173\u95ed\u7ebf\u7a0b\u6c60\n        es.shutdown();\n\n        \/\/ \u7b49\u5f85\u7ebf\u7a0b\u6c60\u4e2d\u6240\u6709\u7ebf\u7a0b\u7ed3\u675f\u5de5\u4f5c\n        try\n        {\n            es.awaitTermination(Long.MAX_VALUE, TimeUnit.SECONDS);\n        }\n        catch (InterruptedException e)\n        {\n            e.printStackTrace();\n        }\n\n        System.out.println(&quot;\u4e3b\u7ebf\u7a0b\u7ed3\u675f&quot;);\n    }\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/08\/image-1694090735183.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 922px; --smush-placeholder-aspect-ratio: 922\/868;\" \/><\/p>\n<h3><span class=\"ez-toc-section\" id=\"%E5%8D%95%E4%B8%80%E7%BA%BF%E7%A8%8B\"><\/span>\u5355\u4e00\u7ebf\u7a0b<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>2023.9.7<\/p>\n<pre><code class=\"language-java\">import java.util.concurrent.ExecutorService;\nimport java.util.concurrent.Executors;\nimport java.util.concurrent.TimeUnit;\n\nclass Main\n{\n    public static void main(String[] args)\n    {\n        \/\/ \u5355\u4e00\u7ebf\u7a0b\n        ExecutorService es = Executors.newSingleThreadExecutor();\n\n        \/\/ \u5411\u7ebf\u7a0b\u6c60\u63d0\u4ea4 5 \u4e2a\u4efb\u52a1\n        for (int i = 0; i &lt; 5; ++i)\n        {\n            es.submit(new Runnable()\n            {\n                @Override\n                public void run()\n                {\n                    System.out.println(&quot;\u7ebf\u7a0b &quot; + Thread.currentThread().getName() + &quot; \u5f00\u59cb\u6267\u884c&quot;);\n                    System.out.println(&quot;\u7ebf\u7a0b &quot; + Thread.currentThread().getName() + &quot; \u7ed3\u675f&quot;);\n                }\n            });\n        }\n\n        \/\/ \u505c\u6b62\u6dfb\u52a0\u65b0\u4efb\u52a1\uff0c\u7b49\u5f85\u7ebf\u7a0b\u5b8c\u6210\u5de5\u4f5c\u540e\u5173\u95ed\u7ebf\u7a0b\u6c60\n        es.shutdown();\n\n        \/\/ \u7b49\u5f85\u7ebf\u7a0b\u6c60\u4e2d\u6240\u6709\u7ebf\u7a0b\u7ed3\u675f\u5de5\u4f5c\n        try\n        {\n            es.awaitTermination(Long.MAX_VALUE, TimeUnit.SECONDS);\n        }\n        catch (InterruptedException e)\n        {\n            e.printStackTrace();\n        }\n\n        System.out.println(&quot;\u4e3b\u7ebf\u7a0b\u7ed3\u675f&quot;);\n    }\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/08\/image-1694090929963.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 241px; --smush-placeholder-aspect-ratio: 241\/201;\" \/><\/p>\n<h3><span class=\"ez-toc-section\" id=\"%E5%AE%9A%E6%97%B6%E8%B0%83%E5%BA%A6%E7%BA%BF%E7%A8%8B\"><\/span>\u5b9a\u65f6\u8c03\u5ea6\u7ebf\u7a0b<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>2023.9.7<\/p>\n<pre><code class=\"language-java\">import java.util.concurrent.Executors;\nimport java.util.concurrent.ScheduledExecutorService;\nimport java.util.concurrent.ScheduledFuture;\nimport java.util.concurrent.TimeUnit;\n\nclass Main\n{\n    public static void main(String[] args)\n    {\n        \/\/ \u5355\u7ebf\u7a0b\u5b9a\u65f6\u8c03\u5ea6\n        ScheduledExecutorService es = Executors.newSingleThreadScheduledExecutor();\n        \/\/ \u63d0\u4ea4\u4e00\u4e2a\u4efb\u52a1\uff0c\u6bcf\u79d2\u6253\u5370\u4e00\u6b21\u5f53\u524d\u65f6\u95f4\u79d2\u6570\n        ScheduledFuture&lt;?&gt; sf = es.scheduleAtFixedRate(new Runnable()\n        {\n            @Override\n            public void run()\n            {\n                System.out.println(System.currentTimeMillis());\n            }\n        },\n        0, 1, TimeUnit.SECONDS);\n\n        try\n        {\n            Thread.sleep(4000);\n        }\n        catch (InterruptedException e)\n        {\n            e.printStackTrace();\n        }\n        sf.cancel(true); \/\/ \u53d6\u6d88\u4efb\u52a1\n        es.shutdown(); \/\/ \u5173\u95ed\u7ebf\u7a0b\u6c60\n\n        \/\/ \u7b49\u5f85\u7ebf\u7a0b\u6c60\u4e2d\u6240\u6709\u7ebf\u7a0b\u7ed3\u675f\u5de5\u4f5c\n        try\n        {\n            es.awaitTermination(Long.MAX_VALUE, TimeUnit.SECONDS);\n        }\n        catch (InterruptedException e)\n        {\n            e.printStackTrace();\n        }\n\n        System.out.println(&quot;\u4e3b\u7ebf\u7a0b\u7ed3\u675f&quot;);\n    }\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/08\/image-1694092335073.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 150px; --smush-placeholder-aspect-ratio: 150\/119;\" \/><\/p>\n<h3><span class=\"ez-toc-section\" id=\"%E7%BA%BF%E7%A8%8B%E5%91%BD%E5%90%8D\"><\/span>\u7ebf\u7a0b\u547d\u540d<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<pre><code class=\"language-java\">import java.util.concurrent.ExecutorService;\nimport java.util.concurrent.Executors;\nimport java.util.concurrent.ThreadFactory;\nimport java.util.concurrent.TimeUnit;\n\nclass Main\n{\n    public static void main(String[] args)\n    {\n        \/\/ \u7ed9\u7ebf\u7a0b\u8bbe\u7f6e\u540d\u79f0\n        ThreadFactory tf = new ThreadFactory()\n        {\n            private int counter = 0;\n\n            @Override\n            public Thread newThread(Runnable r)\n            {\n                switch (counter++)\n                {\n                    case 0:\n                    {\n                        return new Thread(r, &quot;\u7b2c\u4e00\u4e2a\u7ebf\u7a0b&quot;);\n                    }\n                    case 1:\n                    {\n                        return new Thread(r, &quot;\u7b2c\u4e8c\u4e2a\u7ebf\u7a0b&quot;);\n                    }\n                    case 2:\n                    {\n                        return new Thread(r, &quot;\u7b2c\u4e09\u4e2a\u7ebf\u7a0b&quot;);\n                    }\n                    default:\n                    {\n                        return null;\n                    }\n                }\n            }\n        };\n\n        \/\/ \u521b\u5efa\u4e00\u4e2a\u6709 3 \u4e2a\u7ebf\u7a0b\u7684\u7ebf\u7a0b\u6c60\n        ExecutorService es = Executors.newFixedThreadPool(3, tf);\n\n        \/\/ \u63d0\u4ea4\u4e09\u4e2a\u4efb\u52a1\n        for (int i = 0; i &lt; 3; ++i)\n        {\n            es.execute(new Runnable()\n            {\n                @Override\n                public void run()    \n                {\n                    Thread t = Thread.currentThread(); \/\/ \u83b7\u53d6\u5f53\u524d\u7ebf\u7a0b\u7684\u5f15\u7528\n                    System.out.println(&quot;\u7ebf\u7a0b\u540d\u79f0\uff1a&quot; + t.getName() + &quot;\uff0c&quot; +\n                                        &quot;\u7ebf\u7a0b\u72b6\u6001\uff1a&quot; + t.getState());\n                }\n            });\n        }\n\n        es.shutdown(); \/\/ \u5173\u95ed\u7ebf\u7a0b\u6c60\n\n        \/\/ \u7b49\u5f85\u7ebf\u7a0b\u6c60\u4e2d\u6240\u6709\u7ebf\u7a0b\u7ed3\u675f\u5de5\u4f5c\n        try\n        {\n            es.awaitTermination(Long.MAX_VALUE, TimeUnit.SECONDS);\n        }\n        catch (InterruptedException e)\n        {\n            e.printStackTrace();\n        }\n\n        System.out.println(&quot;\u4e3b\u7ebf\u7a0b\u7ed3\u675f&quot;);\n    }\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/08\/image-1694097026189.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 339px; --smush-placeholder-aspect-ratio: 339\/127;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"%E4%BC%A0%E5%8F%82\"><\/span>\u4f20\u53c2<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"%E6%9E%84%E9%80%A0\"><\/span>\u6784\u9020<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>2023.9.7<\/p>\n<p>\u8fd9\u79cd\u65b9\u5f0f\u5176\u5b9e\u5c31\u662f\u901a\u8fc7\u7c7b\u6210\u5458\u53d8\u91cf\u4fdd\u5b58\u4ece\u6784\u9020\u65b9\u6cd5\u4f20\u5165\u7684\u503c\uff0c\u5728\u91cd\u5199\u7684\u7ebf\u7a0b\u6267\u884c\u65b9\u6cd5\u4e2d\u5c31\u53ef\u4ee5\u4f7f\u7528\uff0c\u5177\u4f53\u4f20\u5165\u5176\u5b9e\u4e0d\u4e00\u5b9a\u8981\u4f7f\u7528\u6784\u9020\u65b9\u6cd5\uff0c\u4e5f\u53ef\u4ee5\u81ea\u5df1\u5b9a\u4e49\u4e00\u4e2a\u65b9\u6cd5\u7528\u4e8e\u4f20\u5165\u53c2\u6570\u3002<\/p>\n<pre><code class=\"language-java\">class Main\n{\n    public static void main(String[] args)\n    {\n        Test t = new Test(&quot;Hello world&quot;);\n        t.start();\n        try\n        {\n            t.join();\n        }\n        catch (InterruptedException e)\n        {\n            e.printStackTrace();\n        }\n    }\n}\n\nclass Test extends Thread\n{\n    private String str;\n\n    public Test(String str)\n    {\n        this.str = str;\n    }\n\n    @Override\n    public void run()\n    {\n        System.out.println(str);\n    }\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/08\/image-1694097607925.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 107px; --smush-placeholder-aspect-ratio: 107\/53;\" \/><\/p>\n<h3><span class=\"ez-toc-section\" id=\"%E5%9B%9E%E8%B0%83-2\"><\/span>\u56de\u8c03<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>2023.9.7<\/p>\n<pre><code class=\"language-java\">class Main\n{\n    public static void main(String[] args)\n    {\n        Test t = new Test(new ICallback()\n        {\n            @Override\n            public void show(String str)\n            {\n                System.out.println(str);\n            }\n        }, &quot;Hello world&quot;); \/\/ \u4f20\u5165\u53c2\u6570\n\n        t.start();\n        try\n        {\n            t.join();\n        }\n        catch (InterruptedException e)\n        {\n            e.printStackTrace();\n        }\n    }\n}\n\ninterface ICallback\n{\n    void show(String str);\n}\n\nclass Test extends Thread\n{\n    private ICallback callback;\n    private String str;\n\n    public Test(ICallback callback, String str)\n    {\n        this.callback = callback;\n        this.str = str;\n    }\n\n    @Override\n    public void run()\n    {\n        callback.show(this.str);\n    }\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/08\/image-1694099574955.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 111px; --smush-placeholder-aspect-ratio: 111\/75;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"%E5%90%8C%E6%AD%A5\"><\/span>\u540c\u6b65<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"%E7%BA%BF%E7%A8%8B%E5%AE%89%E5%85%A8\"><\/span>\u7ebf\u7a0b\u5b89\u5168<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>2023.9.7<\/p>\n<p>\u7ebf\u7a0b\u5b89\u5168\u6307\u591a\u7ebf\u7a0b\u64cd\u4f5c\u5171\u4eab\u8d44\u6e90\u65f6\u51fa\u73b0\u6570\u636e\u6216\u903b\u8f91\u9519\u8bef\u7684\u95ee\u9898\u3002\u8fd9\u91cc\u5199\u4e86\u4e00\u4e2a\u4f8b\u5b50\uff0c\u7ebf\u7a0b\u7c7b\u5bf9\u4e00\u4e2a\u9759\u6001\u53d8\u91cf\u81ea\u589e\u4e00\u4e07\u6b21\uff0c\u7136\u540e\u5b9e\u4f8b\u4e86\u4e24\u4e2a\u5bf9\u8c61\uff0c\u4e24\u4e2a\u5bf9\u8c61\u5185\u7684\u9759\u6001\u53d8\u91cf\u5b9e\u9645\u662f\u540c\u4e00\u5757\u5185\u5b58\u5730\u5740\uff0c\u76f8\u5f53\u4e8e\u4e24\u4e2a\u7ebf\u7a0b\u6267\u884c\u7684\u65f6\u5019\u5b9e\u9645\u90fd\u662f\u5728\u64cd\u4f5c\u540c\u4e00\u4e2a\u53d8\u91cf\uff0c\u6309\u7167\u9884\u60f3\u7684\u903b\u8f91\u6bcf\u4e2a\u5bf9\u8c61\u5bf9\u8fd9\u4e2a\u53d8\u91cf\u81ea\u589e\u4e00\u4e07\u6b21\uff0c\u4e24\u4e2a\u5bf9\u8c61\u6267\u884c\u7ed3\u675f\u540e\u8fd9\u4e2a\u53d8\u91cf\u7684\u503c\u5c31\u5e94\u8be5\u662f\u4e24\u4e07\uff0c\u7136\u540e\u5b9e\u9645\u503c\u5374\u662f\u4e0d\u786e\u5b9a\u7684\u3002<\/p>\n<pre><code class=\"language-java\">class Main\n{\n    public static void main(String[] args)\n    {\n        Test t1 = new Test();\n        Test t2 = new Test();\n\n        t1.start();\n        t2.start();\n\n        try\n        {\n            t1.join();\n            t2.join();\n        }\n        catch (InterruptedException e)\n        {\n            e.printStackTrace();\n        }\n\n        System.out.println(Test.get());\n    }\n}\n\nclass Test extends Thread\n{\n    private static int count = 0;\n\n    public static int get()\n    {\n        return count;\n    }\n\n    @Override\n    public void run()\n    {\n        for (int i = 0; i &lt; 10000; ++i)\n        {\n            ++count;\n        }\n    }\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/08\/image-1694103350928.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 950px; --smush-placeholder-aspect-ratio: 950\/370;\" \/><\/p>\n<p>\u4ece\u8fd0\u884c\u7ed3\u679c\u770b\u5b9e\u9645\u503c\u90fd\u662f\u5c0f\u4e8e\u4e24\u4e07\u7684\uff0c\u8fd9\u4e2a\u60c5\u51b5\u5176\u5b9e\u5f88\u597d\u7406\u89e3\u3002\u6bd4\u5982\u5728\u67d0\u4e00\u4e2a\u77ac\u95f4\uff0c\u4e24\u4e2a\u7ebf\u7a0b\u540c\u65f6\u6267\u884c\u81ea\u589e\uff0c\u5728\u81ea\u589e\u524d\u4e24\u4e2a\u7ebf\u7a0b\u90fd\u62ff\u5230\u4e86\u76f8\u540c\u7684\u521d\u59cb\u503c\uff0c\u5404\u81ea\u81ea\u589e\u4e00\u6b21\u540e\u518d\u628a\u503c\u5199\u56de\u53d8\u91cf\uff0c\u7ed3\u679c\u4e24\u4e2a\u7ebf\u7a0b\u505a\u4e86\u5b8c\u5168\u4e00\u6837\u7684\u5de5\u4f5c\uff0c\u4e24\u6b21\u81ea\u589e\u5728\u540c\u4e00\u4e2a\u503c\u7684\u57fa\u7840\u4e0a\u5b8c\u6210\u7684\uff0c\u6700\u540e\u4e24\u4e2a\u7ebf\u7a0b\u5404\u81ea\u81ea\u589e\u4e00\u4e07\u6b21\u7684\u64cd\u4f5c\u4e2d\u96be\u514d\u51fa\u73b0\u591a\u6b21\u540c\u65f6\u6267\u884c\uff0c\u6240\u4ee5\u6700\u7ec8\u5f97\u5230\u7684\u7ed3\u679c\u4e0d\u662f\u4e24\u4e07\u3002<\/p>\n<h3><span class=\"ez-toc-section\" id=\"synchronized_%E5%90%8C%E6%AD%A5\"><\/span>synchronized \u540c\u6b65<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>2023.9.8<\/p>\n<p>synchronized \u53ef\u4ee5\u4fdd\u8bc1\u540c\u4e00\u65f6\u95f4\u53ea\u6709\u4e00\u4e2a\u7ebf\u7a0b\u4f7f\u7528\u5171\u4eab\u8d44\u6e90\uff0c\u67d0\u4e2a\u7ebf\u7a0b\u8981\u5c1d\u8bd5\u4f7f\u7528\u5171\u4eab\u8d44\u6e90\u7684\u65f6\u5019\uff0c\u9996\u5148\u5224\u65ad\u662f\u5426\u52a0\u9501\u4e86\uff0c\u6ca1\u6709\u52a0\u9501\u5c31\u52a0\u9501\uff0c\u7136\u540e\u4f7f\u7528\uff0c\u7528\u5b8c\u4ee5\u540e\u518d\u89e3\u9501\uff0c\u540c\u4e00\u65f6\u95f4\u5176\u5b83\u7ebf\u7a0b\u51c6\u5907\u4f7f\u7528\u65f6\uff0c\u4f1a\u68c0\u6d4b\u5230\u6709\u9501\uff0c\u90a3\u4e48\u5c31\u4f1a\u8df3\u8fc7\u52a0\u9501\u90e8\u5206\u7684\u4ee3\u7801\u903b\u8f91\uff0c\u8fd9\u6837\u5c31\u907f\u514d\u4e86\u540c\u4e00\u65f6\u95f4\u591a\u4e2a\u7ebf\u7a0b\u5bf9\u540c\u4e00\u8d44\u6e90\u7684\u4f7f\u7528\u3002<\/p>\n<pre><code class=\"language-java\">class Main\n{\n    public static void main(String[] args)\n    {\n        Test t1 = new Test();\n        Test t2 = new Test();\n\n        t1.start();\n        t2.start();\n\n        try\n        {\n            t1.join();\n            t2.join();\n        }\n        catch (InterruptedException e)\n        {\n            e.printStackTrace();\n        }\n\n        System.out.println(Test.get());\n    }\n}\n\nclass Test extends Thread\n{\n    private static int count = 0;\n\n    public static int get()\n    {\n        return count;\n    }\n\n    @Override\n    public void run()\n    {\n        synchronized(Test.class) \/\/ \u6bcf\u4e2a\u7ebf\u7a0b\u9501\u5b9a\u81ea\u5df1\n        {\n            for (int i = 0; i &lt; 10000; ++i)\n            {\n                ++count;\n            }\n        }\n    }\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/08\/image-1694104503289.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 939px; --smush-placeholder-aspect-ratio: 939\/345;\" \/><\/p>\n<h3><span class=\"ez-toc-section\" id=\"%E5%8E%9F%E5%AD%90%E7%B1%BB%E5%9E%8B\"><\/span>\u539f\u5b50\u7c7b\u578b<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>2023.9.8<\/p>\n<p>\u539f\u5b50\u7c7b\u578b\u662f\u4e00\u79cd\u53ef\u4ee5\u5728\u591a\u7ebf\u7a0b\u73af\u5883\u4e0b\u5b9e\u73b0\u7ebf\u7a0b\u5b89\u5168\u7684\u6570\u636e\u7c7b\u578b\uff0c\u5b83\u4eec\u53ef\u4ee5\u4fdd\u8bc1\u5bf9\u53d8\u91cf\u7684\u64cd\u4f5c\u662f\u539f\u5b50\u7684\uff0c\u5373\u4e0d\u53ef\u5206\u5272\u7684\uff0c\u4e0d\u4f1a\u88ab\u5176\u4ed6\u7ebf\u7a0b\u5e72\u6270\u3002\u539f\u5b50\u7c7b\u578b\u7684\u5b9e\u73b0\u539f\u7406\u662f\u5229\u7528\u4e86CPU\u63d0\u4f9b\u7684CAS\uff08Compare And Swap\uff09\u6307\u4ee4\uff0c\u8fd9\u662f\u4e00\u79cd\u65e0\u9501\u7684\u7b97\u6cd5\uff0c\u53ef\u4ee5\u5728\u4e0d\u4f7f\u7528\u540c\u6b65\u9501\u7684\u60c5\u51b5\u4e0b\uff0c\u5b9e\u73b0\u5bf9\u53d8\u91cf\u7684\u66f4\u65b0\u3002CAS\u6307\u4ee4\u9700\u8981\u4e09\u4e2a\u53c2\u6570\uff1a\u5185\u5b58\u5730\u5740\u3001\u65e7\u503c\u548c\u65b0\u503c\u3002\u5b83\u4f1a\u6bd4\u8f83\u5185\u5b58\u5730\u5740\u4e2d\u7684\u503c\u662f\u5426\u7b49\u4e8e\u65e7\u503c\uff0c\u5982\u679c\u76f8\u7b49\uff0c\u5c31\u7528\u65b0\u503c\u66ff\u6362\u65e7\u503c\uff0c\u5426\u5219\u5c31\u653e\u5f03\u64cd\u4f5c\u3002\u8fd9\u4e2a\u8fc7\u7a0b\u662f\u539f\u5b50\u7684\uff0c\u4e5f\u5c31\u662f\u8bf4\uff0c\u5728\u6267\u884cCAS\u6307\u4ee4\u671f\u95f4\uff0c\u5176\u4ed6\u7ebf\u7a0b\u65e0\u6cd5\u4fee\u6539\u5185\u5b58\u5730\u5740\u4e2d\u7684\u503c\u3002<\/p>\n<pre><code class=\"language-java\">import java.util.concurrent.atomic.AtomicInteger;\n\nclass Main\n{\n    public static void main(String[] args)\n    {\n        Test t1 = new Test();\n        Test t2 = new Test();\n\n        t1.start();\n        t2.start();\n\n        try\n        {\n            t1.join();\n            t2.join();\n        }\n        catch (InterruptedException e)\n        {\n            e.printStackTrace();\n        }\n\n        System.out.println(Test.get());\n\n    }\n}\n\nclass Test extends Thread\n{\n    private static AtomicInteger count = new AtomicInteger(0); \/\/ \u539f\u5b50\u6574\u5f62\n\n    public static int get()\n    {\n        return count.get();\n    }\n\n    @Override\n    public void run()\n    {\n        for (int i = 0; i &lt; 10000; ++i)\n        {\n            count.incrementAndGet(); \/\/ \u81ea\u589e\n        }\n    }\n}<\/code><\/pre>\n<h1><span class=\"ez-toc-section\" id=\"%E6%96%87%E6%A1%A3%E6%B3%A8%E9%87%8A\"><\/span>\u6587\u6863\u6ce8\u91ca<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>2023.9.8<\/p>\n<p>\u5728\u4ee3\u7801\u4e2d\u6309\u7167\u4e00\u5b9a\u7684\u89c4\u5219\u6dfb\u52a0\u6ce8\u91ca\uff0c\u53ef\u4ee5\u4f7f\u7528\u5de5\u5177\u5c06\u6ce8\u91ca\u5bfc\u51fa\u4f5c\u4e3a\u6587\u6863\uff0c\u4e5f\u4e0d\u9700\u8981\u5355\u72ec\u53bb\u5199\u6587\u6863\uff0c\u53ef\u4ee5\u5b9e\u73b0\u6587\u6863\u540c\u6b65\u66f4\u65b0\u3002\u6211\u5148\u5927\u81f4\u770b\u4e86\u4e00\u4e0b\uff0c\u8fd9\u6ce8\u91ca\u6807\u7b7e\u548c <a href=\"https:\/\/www.doxygen.nl\/index.html\">Doxygen<\/a> \u633a\u50cf\u7684\uff0cDoxygen \u652f\u6301\u7684\u8bed\u8a00\u6bd4\u8f83\u591a\uff0c\u50cf Java\u3001C\u3001C++\u3001Python \u4e4b\u7c7b\u7684\u90fd\u652f\u6301\uff0c\u4e5f\u662f\u4ece\u6ce8\u91ca\u5bfc\u51fa\u6587\u6863\uff0c\u6bd4\u5982 OpenCV \u7684\u6587\u6863\u5c31\u6709\u91c7\u7528 Doxygen<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694170985476.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 1523px; --smush-placeholder-aspect-ratio: 1523\/944;\" \/><\/p>\n<p>\u4e00\u770b\u8fd9\u79cd\u98ce\u683c\u7684\u9875\u9762\u5c31\u77e5\u9053\u662f Doxygen \u5bfc\u51fa\u7684<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694171018076.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 966px; --smush-placeholder-aspect-ratio: 966\/798;\" \/><\/p>\n<p>\u53ea\u662f JDK \u91cc\u6709\u914d\u5957\u7684\u6ce8\u91ca\u8f6c\u6587\u6863\u5de5\u5177\uff0c\u76f8\u5f53\u4e8e Java \u81ea\u5df1\u505a\u7684\u5de5\u5177\uff0c\u770b\u4e86\u4e00\u4e0b\uff0cJava \u6ce8\u91ca\u6807\u7b7e\u5e94\u8be5\u662f\u6ca1\u6709 Doxygen \u652f\u6301\u7684\u591a\uff0c\u4e0d\u8fc7\u662f\u81ea\u5e26\u7684\uff0c\u4e0d\u9700\u8981\u989d\u5916\u914d\u7f6e\uff0c\u4e5f\u662f\u6bd4\u8f83\u65b9\u4fbf\u7684\u3002<\/p>\n<p>javadoc \u652f\u6301\u7684\u6ce8\u91ca\u6807\u7b7e\uff1a<\/p>\n<table>\n<thead>\n<tr>\n<th>\u6807\u7b7e<\/th>\n<th>\u63cf\u8ff0<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>@author<\/td>\n<td>\u6807\u8bc6\u4e00\u4e2a\u7c7b\u7684\u4f5c\u8005<\/td>\n<\/tr>\n<tr>\n<td>@deprecated<\/td>\n<td>\u6307\u540d\u4e00\u4e2a\u8fc7\u671f\u7684\u7c7b\u6216\u6210\u5458<\/td>\n<\/tr>\n<tr>\n<td>{@docRoot}<\/td>\n<td>\u6307\u660e\u5f53\u524d\u6587\u6863\u6839\u76ee\u5f55\u7684\u8def\u5f84<\/td>\n<\/tr>\n<tr>\n<td>@exception<\/td>\n<td>\u6807\u5fd7\u4e00\u4e2a\u7c7b\u629b\u51fa\u7684\u5f02\u5e38<\/td>\n<\/tr>\n<tr>\n<td>{@inheritDoc}<\/td>\n<td>\u4ece\u76f4\u63a5\u7236\u7c7b\u7ee7\u627f\u7684\u6ce8\u91ca<\/td>\n<\/tr>\n<tr>\n<td>{@link}<\/td>\n<td>\u63d2\u5165\u4e00\u4e2a\u5230\u53e6\u4e00\u4e2a\u4e3b\u9898\u7684\u94fe\u63a5<\/td>\n<\/tr>\n<tr>\n<td>{@linkplain}<\/td>\n<td>\u63d2\u5165\u4e00\u4e2a\u5230\u53e6\u4e00\u4e2a\u4e3b\u9898\u7684\u94fe\u63a5\uff0c\u4f46\u662f\u8be5\u94fe\u63a5\u663e\u793a\u7eaf\u6587\u672c\u5b57\u4f53<\/td>\n<\/tr>\n<tr>\n<td>@param<\/td>\n<td>\u8bf4\u660e\u4e00\u4e2a\u65b9\u6cd5\u7684\u53c2\u6570<\/td>\n<\/tr>\n<tr>\n<td>@return<\/td>\n<td>\u8bf4\u660e\u8fd4\u56de\u503c\u7c7b\u578b<\/td>\n<\/tr>\n<tr>\n<td>@see<\/td>\n<td>\u6307\u5b9a\u4e00\u4e2a\u5230\u53e6\u4e00\u4e2a\u4e3b\u9898\u7684\u94fe\u63a5<\/td>\n<\/tr>\n<tr>\n<td>@serial<\/td>\n<td>\u8bf4\u660e\u4e00\u4e2a\u5e8f\u5217\u5316\u5c5e\u6027<\/td>\n<\/tr>\n<tr>\n<td>@serialData<\/td>\n<td>\u8bf4\u660e\u901a\u8fc7writeObject()\u548cwriteExternal()\u65b9\u6cd5\u5199\u7684\u6570\u636e<\/td>\n<\/tr>\n<tr>\n<td>@serialField<\/td>\n<td>\u8bf4\u660e\u4e00\u4e2aObjectStreamField\u7ec4\u4ef6<\/td>\n<\/tr>\n<tr>\n<td>@since<\/td>\n<td>\u6807\u8bb0\u5f53\u5f15\u5165\u4e00\u4e2a\u7279\u5b9a\u7684\u53d8\u5316\u65f6<\/td>\n<\/tr>\n<tr>\n<td>@throws<\/td>\n<td>\u548c@exception\u6807\u7b7e\u4e00\u6837<\/td>\n<\/tr>\n<tr>\n<td>{@value}<\/td>\n<td>\u663e\u793a\u5e38\u91cf\u7684\u503c\uff0c\u8be5\u5e38\u91cf\u5fc5\u987b\u662fstatic\u5c5e\u6027<\/td>\n<\/tr>\n<tr>\n<td>@version<\/td>\n<td>\u6307\u5b9a\u7c7b\u7684\u7248\u672c<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u9009\u7528\u7684\u524d\u9762\u5199\u7684\u4ee3\u7801\u7528\u4f5c\u6ce8\u91ca\u793a\u4f8b\uff1a<\/p>\n<pre><code class=\"language-java\">\/**\n * \u8fd9\u4e2a\u65b9\u6cd5\u901a\u8fc7\u6a21\u62df\u767b\u5f55\u6f14\u793a\u81ea\u5b9a\u4e49\u5f02\u5e38\u7684\u4f7f\u7528\n * @author IYATT-yx\n * @version 1.0\n *\/\nclass Main\n{\n    \/**\n     * \u8fd9\u4e2a\u65b9\u6cd5\u8fdb\u884c\u4e86\u767b\u5f55\u64cd\u4f5c\n     * @param args \u672a\u4f7f\u7528\u7684\u53c2\u6570\n     *\/\n    public static void main(String[] args)\n    {\n        String account = &quot;admin&quot;;\n        String password = &quot;passw&quot;;\n\n        try\n        {\n            login(account, password);\n        }\n        catch (AccountException e)\n        {\n            e.printStackTrace();\n            System.out.println(&quot;\u8bf7\u91cd\u65b0\u8f93\u5165\u8d26\u53f7!&quot;);\n        }\n        catch (PasswordException e)\n        {\n            e.printStackTrace();;\n            System.out.println(&quot;\u8bf7\u91cd\u65b0\u8f93\u5165\u5bc6\u7801!&quot;);\n        }\n    }\n\n    \/**\n     * \u8fd9\u4e2a\u65b9\u6cd5\u5b9e\u73b0\u4e86\u767b\u5f55\u9a8c\u8bc1\n     * @param account \u5f85\u9a8c\u8bc1\u7684\u8d26\u53f7\n     * @param password \u5f85\u9a8c\u8bc1\u7684\u5bc6\u7801\n     * @throws AccountException \u8d26\u53f7\u9519\u8bef\n     * @throws PasswordException \u5bc6\u7801\u9519\u8bef\n     *\/\n    static void login(String account, String password) throws AccountException, PasswordException \/\/ \u58f0\u660e\u8be5\u65b9\u6cd5\u53ef\u80fd\u629b\u51fa\u7684\u5f02\u5e38\uff08\u544a\u77e5\u8c03\u7528\u8005\uff09\n    {\n        if (!&quot;admin&quot;.equals(account))\n        {\n            throw new AccountException(&quot;\u8d26\u53f7\u4e0d\u6b63\u786e\uff01&quot;);\n        }\n        if (!&quot;passwd&quot;.equals(password))\n        {\n            throw new PasswordException(&quot;\u5bc6\u7801\u4e0d\u6b63\u786e\uff01&quot;);\n        }\n        System.out.println(&quot;\u767b\u5f55\u6210\u529f&quot;);\n    }\n}\n\n\/**\n * \u767b\u5f55\u5f02\u5e38\n *\/\nclass LoginException extends RuntimeException\n{\n    \/**\n     * \u8fd9\u4e2a\u65b9\u6cd5\u629b\u51fa\u767b\u5f55\u5f02\u5e38\u6d88\u606f\n     * @param message \u6d88\u606f\u5185\u5bb9\n     *\/\n    public LoginException(String message)\n    {\n        super(message);\n    }\n}\n\n\/**\n * \u8d26\u53f7\u5f02\u5e38\n *\/\nclass AccountException extends LoginException\n{\n    \/**\n     * \u8fd9\u4e2a\u65b9\u6cd5\u629b\u51fa\u8d26\u53f7\u5f02\u5e38\u6d88\u606f\n     * @param messgae \u6d88\u606f\u5185\u5bb9\n     *\/\n    public AccountException(String messgae)\n    {\n        super(messgae);\n    }\n}\n\n\/**\n * \u5bc6\u7801\u5f02\u5e38\n *\/\nclass PasswordException extends LoginException\n{\n    \/**\n     * \u8fd9\u4e2a\u65b9\u6cd5\u629b\u51fa\u5bc6\u7801\u5f02\u5e38\u6d88\u606f\n     * @param message \u6d88\u606f\u5185\u5bb9\n     *\/\n    public PasswordException(String message)\n    {\n        super(message);\n    }\n}<\/code><\/pre>\n<p>javadoc \u7684\u4e00\u4e9b\u53c2\u6570\u8bf4\u660e\uff1a<\/p>\n<ul>\n<li>\u6307\u5b9a\u6e90\u6587\u4ef6\u5b57\u7b26\u96c6\u7f16\u7801\uff0c\u6bd4\u5982 <strong>-encoding UTF-8<\/strong><\/li>\n<li>\u6307\u5b9a\u751f\u6210\u6587\u6863\u7684\u5b57\u7b26\u96c6\u7f16\u7801\uff0c\u6bd4\u5982 <strong>-charset UTF-8<\/strong><\/li>\n<li>\u751f\u6210\u6587\u6863\u8303\u56f4\uff1a<strong>-public<\/strong> \u4ec5\u663e\u793a public \u7c7b\u548c\u6210\u5458\uff0c\u8fd9\u662f\u6700\u4e25\u683c\u7684\u9009\u9879\uff0c\u53ea\u751f\u6210\u516c\u5f00\u7684 API \u6587\u6863\uff1b<strong>-protected<\/strong> \u663e\u793a protected\/public \u7c7b\u548c\u6210\u5458\uff0c\u8fd9\u662f\u9ed8\u8ba4\u7684\u9009\u9879\uff0c\u751f\u6210\u5305\u542b\u53d7\u4fdd\u62a4\u7684\u7c7b\u548c\u6210\u5458\u7684 API \u6587\u6863\uff1b<strong>-package<\/strong> \u663e\u793a package\/protected\/public\/default \u7c7b\u548c\u6210\u5458\uff0c\u8fd9\u4e2a\u9009\u9879\u4f1a\u751f\u6210\u5305\u542b\u5305\u7ea7\u522b\u7684\u7c7b\u548c\u6210\u5458\u7684API\u6587\u6863\uff1b<strong>-private<\/strong> \u663e\u793a\u6240\u6709\u7c7b\u548c\u6210\u5458\uff0c\u8fd9\u662f\u6700\u5bbd\u677e\u7684\u9009\u9879\uff0c\u751f\u6210\u5305\u542b\u79c1\u6709\u7684\u7c7b\u548c\u6210\u5458\u7684 API \u6587\u6863\u3002<\/li>\n<li>\u6307\u5b9a\u6587\u6863\u751f\u6210\u8def\u5f84\u4f7f\u7528\uff1a<strong>-d &lt;\u8def\u5f84&gt;<\/strong>\uff0c\u5426\u5219\u9ed8\u8ba4\u751f\u6210\u5230\u5f53\u524d\u8def\u5f84<\/li>\n<\/ul>\n<p>\u4e0b\u9762\u662f\u793a\u4f8b<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694177081982.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 1100px; --smush-placeholder-aspect-ratio: 1100\/523;\" \/><br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694177098967.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 688px; --smush-placeholder-aspect-ratio: 688\/675;\" \/><br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694177147645.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 1228px; --smush-placeholder-aspect-ratio: 1228\/919;\" \/><\/p>\n<h1><span class=\"ez-toc-section\" id=\"%E6%89%93%E5%8C%85_jar\"><\/span>\u6253\u5305 jar<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>2023.9.8<\/p>\n<p>\u7b80\u5355\u5199\u4e86\u4e00\u6bb5\u4ee3\u7801\u6f14\u793a<\/p>\n<pre><code class=\"language-java\">class Main\n{\n    public static void main(String[] args)\n    {\n        Test t = new Test();\n        t.show();\n    }\n}\n\nclass Test\n{\n    public void show()\n    {\n        System.out.println(&quot;hello world&quot;);\n    }\n}<\/code><\/pre>\n<p>\u6253\u5305\u751f\u6210 jar \u6587\u4ef6\u5b9e\u9645\u662f\u5c06\u7f16\u8bd1\u597d\u7684\u5b57\u8282\u7801\u6587\u4ef6\u538b\u7f29\u800c\u6210\u7684\uff0c\u5e76\u4e0d\u662f\u7279\u5b9a\u5e73\u53f0\u7684\u53ef\u6267\u884c\u6587\u4ef6\uff0c\u4f9d\u7136\u6709\u8de8\u5e73\u53f0\u7684\u7279\u6027\u3002<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694178872809.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 970px; --smush-placeholder-aspect-ratio: 970\/320;\" \/><\/p>\n<p>\u5982\u679c\u6253\u5305\u7684\u65f6\u5019\u6ca1\u6709\u6307\u5b9a\u4e3b\u7c7b\uff0c\u4e5f\u53ef\u4ee5\u5728\u8fd0\u884c\u7684\u65f6\u5019\u6307\u5b9a\u7c7b\u540d\u5168\u79f0\u4f5c\u4e3a\u4e3b\u7c7b\u8fd0\u884c<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694269814887.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 885px; --smush-placeholder-aspect-ratio: 885\/559;\" \/><\/p>\n<h1><span class=\"ez-toc-section\" id=\"package_%E2%80%93_%E5%8C%85\"><\/span>package &#8211; \u5305<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>2023.9.8<\/p>\n<p>\u9879\u76ee\u7ed3\u6784<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694185958686.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 127px; --smush-placeholder-aspect-ratio: 127\/185;\" \/><\/p>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694185936542.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 689px; --smush-placeholder-aspect-ratio: 689\/336;\" \/><\/p>\n<p>Show1.java<\/p>\n<pre><code class=\"language-java\">package module1.show1;\n\npublic class Show1\n{\n    public Show1()    \n    {\n        System.out.println(&quot;module1.show1.Show1&quot;);\n    }\n}<\/code><\/pre>\n<p>Show2.java<\/p>\n<pre><code class=\"language-java\">package module1.show2;\n\npublic class Show2\n{\n    public Show2()    \n    {\n        System.out.println(&quot;module1.show2.Show2&quot;);\n    }\n}<\/code><\/pre>\n<p>Show.java<\/p>\n<pre><code class=\"language-java\">package module2;\n\npublic class Show\n{\n    public Show()\n    {\n        System.out.println(&quot;module2.Show&quot;);\n    }\n}<\/code><\/pre>\n<p>Main.java<\/p>\n<pre><code class=\"language-java\">import module1.show1.Show1;\nimport module1.show2.Show2;\nimport module2.Show;\n\npublic class Main\n{\n    public static void main(String[] args)\n    {\n        Show1 s1 = new Show1();\n        Show2 s2 = new Show2();\n        Show s = new Show();\n    }\n}<\/code><\/pre>\n<h1><span class=\"ez-toc-section\" id=\"Maven_%E5%9F%BA%E7%A1%80\"><\/span>Maven \u57fa\u7840<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>2023.9.9<\/p>\n<p>\u5927\u6982\u4e86\u89e3\u4e86\u4e00\u4e0b Maven\uff0c\u611f\u89c9\u5b83\u7684\u6982\u5ff5\u50cf\u5305\u7ba1\u7406\u5668\uff0c\u7c7b\u4f3c\u4e8e Python \u7684 pip\uff0cLinux \u7684 apt\/yum\/&#8230;\uff0cWindows \u7684 winget\u3002\u5728\u6b64\u57fa\u7840\u4e0a\u8fd8\u5177\u6709\u7c7b\u4f3c CMake\u3001git \u7684\u90e8\u5206\u4f5c\u7528\uff0c\u7efc\u5408\u4e86\u5f88\u591a\u7279\u6027\u3002<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%E4%B8%8B%E8%BD%BD%E5%AE%89%E8%A3%85\"><\/span>\u4e0b\u8f7d\u5b89\u88c5<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u4e0b\u8f7d\u5730\u5740\uff1a<a href=\"https:\/\/maven.apache.org\/download.cgi\">https:\/\/maven.apache.org\/download.cgi<\/a><br \/>\n\u914d\u7f6e\u597d\u73af\u5883\u53d8\u91cf\u5c31\u80fd\u6b63\u5e38\u4f7f\u7528\u4e86\uff08Java \u548c Maven \u7684\u5b9e\u9645\u8def\u5f84\uff09<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694192044161.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 594px; --smush-placeholder-aspect-ratio: 594\/272;\" \/><\/p>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694192096634.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 573px; --smush-placeholder-aspect-ratio: 573\/319;\" \/><\/p>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694192264926.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 928px; --smush-placeholder-aspect-ratio: 928\/195;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"%E6%9C%AC%E5%9C%B0%E4%BB%93%E5%BA%93%E8%B7%AF%E5%BE%84\"><\/span>\u672c\u5730\u4ed3\u5e93\u8def\u5f84<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Maven \u9ed8\u8ba4\u672c\u5730\u4ed3\u5e93\u8def\u5f84\u914d\u7f6e\uff0c\u5728<strong>%MAVEN_HOME%\\conf\\settings.xml<\/strong>\u4e2d<br \/>\n\u5982\u679c\u6ca1\u6709\u4fee\u6539\u9ed8\u8ba4\u662f\u5728 <strong>%USERPROFILE%\\.m2<\/strong><br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694239031304.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 636px; --smush-placeholder-aspect-ratio: 636\/222;\" \/><\/p>\n<p><strong><localRepository>\/path\/to\/local\/repo<\/localRepository><\/strong>\u5904<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694239149713.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 622px; --smush-placeholder-aspect-ratio: 622\/175;\" \/><\/p>\n<p>\u914d\u7f6e\u81ea\u5b9a\u4e49\u8def\u5f84<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694239292916.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 550px; --smush-placeholder-aspect-ratio: 550\/199;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"%E8%BF%9C%E7%A8%8B%E4%BB%93%E5%BA%93%E9%85%8D%E7%BD%AE%E5%9B%BD%E5%86%85%E9%95%9C%E5%83%8F\"><\/span>\u8fdc\u7a0b\u4ed3\u5e93\u914d\u7f6e\u56fd\u5185\u955c\u50cf<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Maven \u7684\u5b98\u65b9\u8fdc\u7a0b\u4ed3\u5e93\u5728\u56fd\u5916\uff0c\u4e00\u822c\u8fd9\u79cd\u60c5\u51b5\u4e0b\u8f7d\u901f\u5ea6\u90fd\u53ef\u80fd\u6bd4\u8f83\u6162\uff0c\u6240\u4ee5\u4f1a\u6362\u6210\u56fd\u5185\u7684\u955c\u50cf\u3002<br \/>\n\u6253\u5f00\u914d\u7f6e\u6587\u4ef6<strong>%MAVEN_HOME%\\conf\\settings.xml<\/strong><\/p>\n<p>\u627e\u5230 <strong><mirrors><\/strong>\u6807\u7b7e<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694240947122.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 830px; --smush-placeholder-aspect-ratio: 830\/438;\" \/><\/p>\n<p>\u6bd4\u5982\u6211\u8fd9\u91cc\u4f7f\u7528<a href=\"https:\/\/developer.aliyun.com\/mirror\/maven\">\u963f\u91cc\u4e91\u955c\u50cf<\/a><br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694241070277.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 779px; --smush-placeholder-aspect-ratio: 779\/582;\" \/><\/p>\n<p>\u67e5\u770b\u5f53\u524d\u751f\u6548\u7684\u914d\u7f6e<\/p>\n<pre><code class=\"language-bash\">mvn help:effective-settings<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694241393038.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 838px; --smush-placeholder-aspect-ratio: 838\/630;\" \/><\/p>\n<hr \/>\n<p>\u5b98\u65b9\u8fdc\u7a0b\u4ed3\u5e93\uff1a<a href=\"https:\/\/mvnrepository.com\/\">https:\/\/mvnrepository.com\/<\/a><\/p>\n<hr \/>\n<p>\u6216\u8005\u53ef\u4ee5\u4e0d\u4f7f\u7528\u955c\u50cf\uff0c\u76f4\u63a5\u914d\u7f6e\u4ee3\u7406\u52a0\u901f\u8bbf\u95ee<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694247370564.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 675px; --smush-placeholder-aspect-ratio: 675\/317;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"%E9%A1%B9%E7%9B%AE%E7%BB%93%E6%9E%84\"><\/span>\u9879\u76ee\u7ed3\u6784<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694248384052.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 641px; --smush-placeholder-aspect-ratio: 641\/301;\" \/><\/p>\n<p>main \u5c31\u662f\u653e\u4e3b\u7a0b\u5e8f\uff0ctest \u653e\u6d4b\u8bd5\u7a0b\u5e8f\uff08\u4e0d\u662f\u5fc5\u987b\uff09\uff0cjava \u653e\u5305\u6216\u4ee3\u7801\u6587\u4ef6\uff0cresources \u653e\u7a0b\u5e8f\u8981\u4f7f\u7528\u7684\u914d\u7f6e\u6587\u4ef6\uff0cpom.xml \u5c31\u662f\u9879\u76ee\u7684\u914d\u7f6e\u6587\u4ef6\uff0c\u5305\u542b\u7ec4\u7ec7\u540d\u3001\u9879\u76ee\u540d\u79f0\u3001\u7248\u672c\u3001\u4f9d\u8d56\u7b49\u7b49\u3002<\/p>\n<p>\u53ef\u4ee5\u4f7f\u7528\u547d\u4ee4\u751f\u6210<\/p>\n<pre><code class=\"language-bash\">mvn archetype:generate<\/code><\/pre>\n<p>\u9009\u62e9\u6a21\u677f<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694249061550.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 1103px; --smush-placeholder-aspect-ratio: 1103\/429;\" \/><\/p>\n<ul>\n<li>maven-archetype-archetype\uff1a\u8fd9\u662f\u4e00\u4e2a\u5305\u542b\u4e86\u4e00\u4e2a\u793a\u4f8bArchetype\u9879\u76ee\u7684Archetype\uff0c\u53ef\u4ee5\u7528\u6765\u521b\u5efa\u81ea\u5b9a\u4e49\u7684Archetype2\u3002<\/li>\n<li>maven-archetype-j2ee-simple\uff1a\u8fd9\u662f\u4e00\u4e2a\u5305\u542b\u4e86\u4e00\u4e2a\u7b80\u5316\u7684J2EE\u5e94\u7528\u7684Archetype\uff0c\u53ef\u4ee5\u7528\u6765\u521b\u5efa\u57fa\u4e8eJava EE\u89c4\u8303\u7684Web\u5e94\u75283\u3002<\/li>\n<li>maven-archetype-plugin\uff1a\u8fd9\u662f\u4e00\u4e2a\u5305\u542b\u4e86\u4e00\u4e2a\u793a\u4f8bMaven\u63d2\u4ef6\u7684Archetype\uff0c\u53ef\u4ee5\u7528\u6765\u521b\u5efa\u81ea\u5b9a\u4e49\u7684Maven\u63d2\u4ef6\u3002<\/li>\n<li>maven-archetype-plugin-site\uff1a\u8fd9\u662f\u4e00\u4e2a\u5305\u542b\u4e86\u4e00\u4e2a\u793a\u4f8bMaven\u63d2\u4ef6\u7ad9\u70b9\u7684Archetype\uff0c\u53ef\u4ee5\u7528\u6765\u4e3a\u5df2\u6709\u7684Maven\u63d2\u4ef6\u521b\u5efa\u6587\u6863\u548c\u62a5\u544a\u3002<\/li>\n<li>maven-archetype-portlet\uff1a\u8fd9\u662f\u4e00\u4e2a\u5305\u542b\u4e86\u4e00\u4e2a\u793a\u4f8bJSR-268 Portlet\u7684Archetype\uff0c\u53ef\u4ee5\u7528\u6765\u521b\u5efa\u57fa\u4e8ePortlet\u89c4\u8303\u7684Web\u7ec4\u4ef6\u3002<\/li>\n<li>maven-archetype-profiles\uff1a\u8fd9\u662f\u4e00\u4e2a\u5305\u542b\u4e86\u591a\u4e2a\u914d\u7f6e\u6587\u4ef6\u7684Archetype\uff0c\u53ef\u4ee5\u7528\u6765\u6839\u636e\u4e0d\u540c\u7684\u73af\u5883\u6216\u9700\u6c42\u9009\u62e9\u4e0d\u540c\u7684\u6784\u5efa\u8bbe\u7f6e\u3002<\/li>\n<li>maven-archetype-quickstart\uff1a\u8fd9\u662f\u4e00\u4e2a\u5305\u542b\u4e86\u4e00\u4e2a\u793a\u4f8bMaven\u9879\u76ee\u7684Archetype\uff0c\u53ef\u4ee5\u7528\u6765\u5feb\u901f\u5f00\u59cb\u4e00\u4e2aJava\u9879\u76ee\u3002<\/li>\n<li>maven-archetype-site\uff1a\u8fd9\u662f\u4e00\u4e2a\u5305\u542b\u4e86\u4e00\u4e2a\u793a\u4f8bMaven\u7ad9\u70b9\u7684Archetype\uff0c\u53ef\u4ee5\u7528\u6765\u5c55\u793a\u4e00\u4e9b\u652f\u6301\u7684\u6587\u6863\u7c7b\u578b\uff0c\u5982APT, XDoc, \u548c FML\uff0c\u5e76\u4e14\u6f14\u793a\u5982\u4f55\u5b9e\u73b0\u7ad9\u70b9\u7684\u56fd\u9645\u5316\u3002\u8fd9\u4e2aArchetype\u53ef\u4ee5\u7528\u6765\u4e3a\u5df2\u6709\u7684Maven\u9879\u76ee\u521b\u5efa\u7ad9\u70b9\u3002<\/li>\n<li>maven-archetype-site-simple\uff1a\u8fd9\u662f\u4e00\u4e2a\u5305\u542b\u4e86\u4e00\u4e2a\u7b80\u5355\u7684Maven\u7ad9\u70b9\u7684Archetype\uff0c\u53ef\u4ee5\u7528\u6765\u4e3aMaven\u9879\u76ee\u521b\u5efa\u57fa\u672c\u7684\u7ad9\u70b9\u3002<\/li>\n<li>maven-archetype-webapp\uff1a\u8fd9\u662f\u4e00\u4e2a\u5305\u542b\u4e86\u4e00\u4e2a\u793a\u4f8bMaven Webapp\u9879\u76ee\u7684Archetype\uff0c\u53ef\u4ee5\u7528\u6765\u521b\u5efa\u57fa\u4e8eServlet\u548cJSP\u6280\u672f\u7684Web\u5e94\u7528\u3002<\/li>\n<\/ul>\n<p>\u8fd9\u91cc\u6f14\u793a\u5c31\u76f4\u63a5\u56de\u8f66\uff0c\u9ed8\u8ba4\u9009\u7684 7 maven-archetype-quickstart<\/p>\n<p>\u516c\u53f8\/\u7ec4\u7ec7\u540d<br \/>\n\u6bd4\u5982\uff1a<strong>abcd \u7ec4\u7ec7<\/strong>\u53ef\u4ee5\u5199<strong>org.abcd<\/strong>\uff0c<strong>abcd \u516c\u53f8<\/strong>\u53ef\u4ee5\u5199<strong>com.abcd<\/strong><br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694249154306.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 483px; --smush-placeholder-aspect-ratio: 483\/64;\" \/><\/p>\n<p>\u9879\u76ee\u540d<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694249197332.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 574px; --smush-placeholder-aspect-ratio: 574\/51;\" \/><\/p>\n<p>\u7248\u672c<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694249225678.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 533px; --smush-placeholder-aspect-ratio: 533\/48;\" \/><\/p>\n<p>\u9879\u76ee\u5305\u540d\uff0c\u9ed8\u8ba4\u4f7f\u7528\u9879\u76ee\u540d\uff08\u6ce8\u610f\u5305\u53ea\u80fd\u542b\u6709\u5b57\u6bcd\uff08\u5efa\u8bae\u4e0d\u4f7f\u7528\u5927\u5199\uff0c\u907f\u514d\u548c\u7c7b\u540d\u6df7\u6dc6\uff09\u3001\u6570\u5b57\u3001\u82f1\u6587\u53e5\u70b9\u548c\u4e0b\u5212\u7ebf\uff0c\u8fd9\u91cc\u6f14\u793a\u5c31\u7ef4\u6301\u7684\u9ed8\u8ba4\uff09<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694249348303.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 510px; --smush-placeholder-aspect-ratio: 510\/36;\" \/><\/p>\n<p>\u56de\u8f66\u786e\u8ba4<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694249362368.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 353px; --smush-placeholder-aspect-ratio: 353\/131;\" \/><\/p>\n<p>\u751f\u6210\u9879\u76ee<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694249375485.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 1096px; --smush-placeholder-aspect-ratio: 1096\/360;\" \/><\/p>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694249419093.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 772px; --smush-placeholder-aspect-ratio: 772\/432;\" \/><\/p>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694251182592.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 1133px; --smush-placeholder-aspect-ratio: 1133\/516;\" \/><\/p>\n<p>\u7f16\u8bd1\u521b\u5efa\u7684\u6a21\u677f\uff08\u8fdb\u5165\u9879\u76ee\u76ee\u5f55\u4e4b\u540e\uff0c\u5373\u5728 pom.xml \u6587\u4ef6\u6240\u5728\u8def\u5f84\u6267\u884c\u4e0b\u9762\u64cd\u4f5c\uff09<\/p>\n<pre><code class=\"language-bash\">mvn compile<\/code><\/pre>\n<p>\u53ef\u4ee5\u4f7f\u7528\u53c2\u6570<strong>-Dmaven.test.skip=true<\/strong>\u8df3\u8fc7\u6d4b\u8bd5\u7a0b\u5e8f\u7f16\u8bd1<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694249988806.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 1092px; --smush-placeholder-aspect-ratio: 1092\/472;\" \/><\/p>\n<p>\u6d4b\u8bd5<\/p>\n<pre><code class=\"language-bash\">mvn test<\/code><\/pre>\n<p>\u53ef\u4ee5\u4f7f\u7528\u53c2\u6570<strong>-Dtest=&lt;\u7c7b\u540d&gt;<\/strong>\u8fd0\u884c\u6307\u5b9a\u7684\u6d4b\u8bd5\u7c7b<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694250296227.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 901px; --smush-placeholder-aspect-ratio: 901\/359;\" \/><br \/>\n\u9879\u76ee\u76ee\u5f55\u4e0b\u4f1a\u751f\u6210\u6d4b\u8bd5\u62a5\u544a<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694250343171.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 655px; --smush-placeholder-aspect-ratio: 655\/224;\" \/><\/p>\n<p>\u6253\u5305<\/p>\n<pre><code class=\"language-bash\">mvn package<\/code><\/pre>\n<p>\u4f7f\u7528<strong>-DoutputDirectory=&lt;\u8def\u5f84&gt;<\/strong>\u6307\u5b9a\u751f\u6210\u6587\u4ef6\u6240\u5728\u76ee\u5f55\uff0c\u9ed8\u8ba4\u4e3a target \u76ee\u5f55<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694250462377.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 1089px; --smush-placeholder-aspect-ratio: 1089\/182;\" \/><\/p>\n<p>\u9879\u76ee\u6e05\u7406(\u5220\u9664\u9879\u76ee\u76ee\u5f55\u4e0b\u751f\u6210\u7684\u76f8\u5173\u6587\u4ef6\uff0c\u5373\u5220\u9664 target \u76ee\u5f55)<\/p>\n<pre><code class=\"language-bash\">mvn clean<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694250571525.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 836px; --smush-placeholder-aspect-ratio: 836\/341;\" \/><\/p>\n<p>\u5b9e\u9645\u4f7f\u7528\u4e2d\u6572\u547d\u4ee4\u633a\u9ebb\u70e6\u7684\uff0c\u6211\u8fd9\u91cc\u662f\u4f7f\u7528 VScode+\u63d2\u4ef6\uff0c\u5b89\u88c5 Java \u6269\u5c55\u63d2\u4ef6\u7684\u65f6\u5019\u5c31\u4f1a\u8fde\u5e26\u4e00\u8d77\u5171\u5b89\u88c5 6 \u4e2a\uff0c\u91cc\u9762\u5c31\u6709 Maven \u63d2\u4ef6<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694272097230.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 469px; --smush-placeholder-aspect-ratio: 469\/554;\" \/><\/p>\n<p>\u64cd\u4f5c\u90fd\u53ef\u4ee5\u901a\u8fc7\u56fe\u5f62\u5316\u70b9\u51fb\u5b8c\u6210<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694272175849.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 486px; --smush-placeholder-aspect-ratio: 486\/766;\" \/><\/p>\n<hr \/>\n<p>\u4e00\u4e2a\u57fa\u7840\u7684 pom.xml \u6a21\u677f<\/p>\n<pre><code class=\"language-xml\">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;\n&lt;project xmlns=&quot;http:\/\/maven.apache.org\/POM\/4.0.0&quot;\n         xmlns:xsi=&quot;http:\/\/www.w3.org\/2001\/XMLSchema-instance&quot;\n         xsi:schemaLocation=&quot;http:\/\/maven.apache.org\/POM\/4.0.0 http:\/\/maven.apache.org\/xsd\/maven-4.0.0.xsd&quot;&gt;\n    &lt;modelVersion&gt;4.0.0&lt;\/modelVersion&gt;\n\n    &lt;groupId&gt;com.iyatt&lt;\/groupId&gt;\n    &lt;artifactId&gt;java_test&lt;\/artifactId&gt;\n    &lt;version&gt;1.0-SNAPSHOT&lt;\/version&gt;\n\n    &lt;properties&gt;\n        &lt;maven.compiler.source&gt;1.8&lt;\/maven.compiler.source&gt;\n        &lt;maven.compiler.target&gt;1.8&lt;\/maven.compiler.target&gt;\n        &lt;project.build.sourceEncoding&gt;UTF-8&lt;\/project.build.sourceEncoding&gt;\n        &lt;project.reporting.outputEncoding&gt;UTF-8&lt;\/project.reporting.outputEncoding&gt;\n    &lt;\/properties&gt;\n\n&lt;\/project&gt;<\/code><\/pre>\n<h3><span class=\"ez-toc-section\" id=\"%E7%BC%96%E8%AF%91%E5%B9%B6%E6%89%A7%E8%A1%8C\"><\/span>\u7f16\u8bd1\u5e76\u6267\u884c<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>2023.9.13<\/p>\n<p>\u8fd9\u91cc\u53ef\u4ee5\u501f\u52a9 exec-maven-plugin \u63d2\u4ef6\uff0c\u4e0b\u9762\u5199\u4e86\u4e00\u4e2a\u793a\u4f8b<\/p>\n<pre><code class=\"language-java\">package com.iyatt;\n\npublic class Main\n{\n    public static void main(String[] args)\n    {\n        System.out.println(&quot;Hello world!&quot;);\n        for (String arg : args) \/\/ \u5982\u679c\u6709\u4f20\u5165\u53c2\u6570\u5c31\u4f9d\u6b21\u6253\u5370\n        {\n            System.out.println(arg);\n        }\n    }\n}<\/code><\/pre>\n<p>\u53ef\u4ee5\u628a\u8981\u4f20\u5165\u7684\u53c2\u6570\u914d\u7f6e\u5728 pom.xml \u4e2d\uff0c\u90a3\u4e48\u6267\u884c\u7684\u65f6\u5019\u5c31\u4e0d\u7528\u8f93\u5165\u53c2\u6570<br \/>\npox.xml<\/p>\n<pre><code class=\"language-xml\">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;\n&lt;project xmlns=&quot;http:\/\/maven.apache.org\/POM\/4.0.0&quot;\n         xmlns:xsi=&quot;http:\/\/www.w3.org\/2001\/XMLSchema-instance&quot;\n         xsi:schemaLocation=&quot;http:\/\/maven.apache.org\/POM\/4.0.0 http:\/\/maven.apache.org\/xsd\/maven-4.0.0.xsd&quot;&gt;\n    &lt;modelVersion&gt;4.0.0&lt;\/modelVersion&gt;\n\n    &lt;groupId&gt;com.iyatt&lt;\/groupId&gt;\n    &lt;artifactId&gt;test&lt;\/artifactId&gt;\n    &lt;version&gt;1.0-SNAPSHOT&lt;\/version&gt;\n\n    &lt;properties&gt;\n        &lt;maven.compiler.source&gt;1.8&lt;\/maven.compiler.source&gt;\n        &lt;maven.compiler.target&gt;1.8&lt;\/maven.compiler.target&gt;\n        &lt;project.build.sourceEncoding&gt;UTF-8&lt;\/project.build.sourceEncoding&gt;\n        &lt;project.reporting.outputEncoding&gt;UTF-8&lt;\/project.reporting.outputEncoding&gt;\n    &lt;\/properties&gt;\n\n    &lt;build&gt;\n        &lt;plugins&gt;\n            &lt;plugin&gt;\n            &lt;groupId&gt;org.codehaus.mojo&lt;\/groupId&gt;\n            &lt;artifactId&gt;exec-maven-plugin&lt;\/artifactId&gt;\n            &lt;version&gt;3.1.0&lt;\/version&gt;\n            &lt;configuration&gt;\n                &lt;mainClass&gt;com.iyatt.Main&lt;\/mainClass&gt;\n                &lt;arguments&gt;\n                &lt;argument&gt;\u7b2c\u4e00\u4e2a\u53c2\u6570&lt;\/argument&gt;\n                &lt;argument&gt;\u7b2c\u4e8c\u4e2a\u53c2\u6570&lt;\/argument&gt;\n                &lt;\/arguments&gt;\n            &lt;\/configuration&gt;\n            &lt;\/plugin&gt;\n        &lt;\/plugins&gt;\n    &lt;\/build&gt;\n\n&lt;\/project&gt;<\/code><\/pre>\n<p>\u7f16\u8bd1\u6267\u884c<\/p>\n<pre><code class=\"language-bash\">mvn compile exec:java<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694599662210.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 825px; --smush-placeholder-aspect-ratio: 825\/499;\" \/><\/p>\n<p>\u5982\u679c pom.xml \u6ca1\u6709\u914d\u7f6e\u4e3b\u7c7b\u4ee5\u53ca\u53c2\u6570\uff0c\u4e5f\u53ef\u4ee5\u624b\u52a8\u6307\u5b9a<br \/>\npom.xml<\/p>\n<pre><code class=\"language-xml\">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;\n&lt;project xmlns=&quot;http:\/\/maven.apache.org\/POM\/4.0.0&quot;\n         xmlns:xsi=&quot;http:\/\/www.w3.org\/2001\/XMLSchema-instance&quot;\n         xsi:schemaLocation=&quot;http:\/\/maven.apache.org\/POM\/4.0.0 http:\/\/maven.apache.org\/xsd\/maven-4.0.0.xsd&quot;&gt;\n    &lt;modelVersion&gt;4.0.0&lt;\/modelVersion&gt;\n\n    &lt;groupId&gt;com.iyatt&lt;\/groupId&gt;\n    &lt;artifactId&gt;test&lt;\/artifactId&gt;\n    &lt;version&gt;1.0-SNAPSHOT&lt;\/version&gt;\n\n    &lt;properties&gt;\n        &lt;maven.compiler.source&gt;1.8&lt;\/maven.compiler.source&gt;\n        &lt;maven.compiler.target&gt;1.8&lt;\/maven.compiler.target&gt;\n        &lt;project.build.sourceEncoding&gt;UTF-8&lt;\/project.build.sourceEncoding&gt;\n        &lt;project.reporting.outputEncoding&gt;UTF-8&lt;\/project.reporting.outputEncoding&gt;\n    &lt;\/properties&gt;\n\n    &lt;build&gt;\n        &lt;plugins&gt;\n            &lt;plugin&gt;\n            &lt;groupId&gt;org.codehaus.mojo&lt;\/groupId&gt;\n            &lt;artifactId&gt;exec-maven-plugin&lt;\/artifactId&gt;\n            &lt;version&gt;3.1.0&lt;\/version&gt;\n            &lt;\/plugin&gt;\n        &lt;\/plugins&gt;\n    &lt;\/build&gt;\n\n&lt;\/project&gt;<\/code><\/pre>\n<p>\u7f16\u8bd1\u6267\u884c<\/p>\n<pre><code class=\"language-bash\">mvn compile exec:java -D&quot;exec.mainClass&quot;=&quot;com.iyatt.Main&quot; -D&quot;exec.args&quot;=&quot;\u7b2c\u4e00\u4e2a\u53c2\u6570 \u7b2c\u4e8c\u4e2a\u53c2\u6570&quot;<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694600113763.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 1086px; --smush-placeholder-aspect-ratio: 1086\/436;\" \/><\/p>\n<h4><span class=\"ez-toc-section\" id=\"%E5%A4%9A%E4%B8%AA%E4%B8%BB%E7%B1%BB\"><\/span>\u591a\u4e2a\u4e3b\u7c7b<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>2023.9.13<\/p>\n<p>\u6ce8\u610f\u5982\u679c\u4f7f\u7528 Maven \u6267\u884c\uff0c\u4e3b\u7c7b\u5fc5\u987b\u662f public\uff0c\u800c\u4e00\u4e2a Java \u6587\u4ef6\u4e2d\u53ea\u80fd\u6709\u4e00\u4e2a public \u7c7b\uff0c\u6240\u4ee5\u4e3b\u7c7b\u5fc5\u987b\u5728\u4e0d\u540c\u6587\u4ef6\uff0c\u8fd9\u91cc\u5199\u4e00\u4e2a\u793a\u4f8b\uff1a<\/p>\n<p>Main1.java<\/p>\n<pre><code class=\"language-java\">package com.iyatt;\n\npublic class Main1\n{\n    public static void main(String[] args)\n    {\n        System.out.println(&quot;Hello world!&quot;);\n        for (String arg : args) \/\/ \u5982\u679c\u6709\u4f20\u5165\u53c2\u6570\u5c31\u4f9d\u6b21\u6253\u5370\n        {\n            System.out.println(arg);\n        }\n    }\n}<\/code><\/pre>\n<p>Main2.java<\/p>\n<pre><code class=\"language-java\">package com.iyatt;\n\npublic class Main2\n{\n    public static void main(String[] args)\n    {\n        System.out.println(&quot;\u4f60\u597d \u4e16\u754c\uff01&quot;);\n        for (String arg : args) \/\/ \u5982\u679c\u6709\u4f20\u5165\u53c2\u6570\u5c31\u4f9d\u6b21\u6253\u5370\n        {\n            System.out.println(arg);\n        }\n    }\n}<\/code><\/pre>\n<p>pom.xml \u914d\u7f6e\u7684\u65f6\u5019\u53ef\u4ee5\u7ed9\u6bcf\u4e2a\u4e3b\u7c7b\u8bbe\u7f6e\u4e00\u4e2a id\uff0c\u8fd0\u884c\u7684\u65f6\u5019\u7528 -P <id> \u5c31\u80fd\u6307\u5b9a\u3002<\/p>\n<pre><code class=\"language-xml\">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;\n&lt;project xmlns=&quot;http:\/\/maven.apache.org\/POM\/4.0.0&quot;\n         xmlns:xsi=&quot;http:\/\/www.w3.org\/2001\/XMLSchema-instance&quot;\n         xsi:schemaLocation=&quot;http:\/\/maven.apache.org\/POM\/4.0.0 http:\/\/maven.apache.org\/xsd\/maven-4.0.0.xsd&quot;&gt;\n    &lt;modelVersion&gt;4.0.0&lt;\/modelVersion&gt;\n\n    &lt;groupId&gt;com.iyatt&lt;\/groupId&gt;\n    &lt;artifactId&gt;test&lt;\/artifactId&gt;\n    &lt;version&gt;1.0-SNAPSHOT&lt;\/version&gt;\n\n    &lt;properties&gt;\n        &lt;maven.compiler.source&gt;1.8&lt;\/maven.compiler.source&gt;\n        &lt;maven.compiler.target&gt;1.8&lt;\/maven.compiler.target&gt;\n        &lt;project.build.sourceEncoding&gt;UTF-8&lt;\/project.build.sourceEncoding&gt;\n        &lt;project.reporting.outputEncoding&gt;UTF-8&lt;\/project.reporting.outputEncoding&gt;\n    &lt;\/properties&gt;\n\n    &lt;profiles&gt;\n        &lt;profile&gt;\n            &lt;id&gt;main1&lt;\/id&gt;\n            &lt;build&gt;\n                &lt;plugins&gt;\n                    &lt;plugin&gt;\n                        &lt;groupId&gt;org.codehaus.mojo&lt;\/groupId&gt;\n                        &lt;artifactId&gt;exec-maven-plugin&lt;\/artifactId&gt;\n                        &lt;version&gt;3.1.0&lt;\/version&gt;\n                        &lt;configuration&gt;\n                            &lt;mainClass&gt;com.iyatt.Main1&lt;\/mainClass&gt;\n                            &lt;arguments&gt;\n                                &lt;argument&gt;\u7b2c\u4e00\u4e2a\u53c2\u6570&lt;\/argument&gt;\n                                &lt;argument&gt;\u7b2c\u4e8c\u4e2a\u53c2\u6570&lt;\/argument&gt;\n                            &lt;\/arguments&gt;\n                        &lt;\/configuration&gt;\n                    &lt;\/plugin&gt;\n                &lt;\/plugins&gt;\n            &lt;\/build&gt;\n        &lt;\/profile&gt;\n\n        &lt;profile&gt;\n            &lt;id&gt;main2&lt;\/id&gt;\n            &lt;build&gt;\n                &lt;plugins&gt;\n                    &lt;plugin&gt;\n                        &lt;groupId&gt;org.codehaus.mojo&lt;\/groupId&gt;\n                        &lt;artifactId&gt;exec-maven-plugin&lt;\/artifactId&gt;\n                        &lt;version&gt;3.1.0&lt;\/version&gt;\n                        &lt;configuration&gt;\n                            &lt;mainClass&gt;com.iyatt.Main2&lt;\/mainClass&gt;\n                            &lt;arguments&gt;\n                                &lt;argument&gt;\u7b2c\u4e09\u4e2a\u53c2\u6570&lt;\/argument&gt;\n                                &lt;argument&gt;\u7b2c\u56db\u4e2a\u53c2\u6570&lt;\/argument&gt;\n                            &lt;\/arguments&gt;\n                        &lt;\/configuration&gt;\n                    &lt;\/plugin&gt;\n                &lt;\/plugins&gt;\n            &lt;\/build&gt;\n        &lt;\/profile&gt;\n    &lt;\/profiles&gt;\n\n&lt;\/project&gt;<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694603971455.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 1067px; --smush-placeholder-aspect-ratio: 1067\/997;\" \/><\/p>\n<h1><span class=\"ez-toc-section\" id=\"JSON_%E8%A7%A3%E6%9E%90_%E2%80%93_Gson\"><\/span>JSON \u89e3\u6790 &#8211; Gson<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>2023.9.9<\/p>\n<p><a href=\"https:\/\/github.com\/google\/gson\">Gson<\/a> \u662f Google \u5f00\u53d1\u7684 JSON \u5e93\uff0c\u529f\u80fd\u6700\u4e3a\u5f3a\u5927\u5b8c\u5584\u3002<br \/>\n\u8fd9\u91cc\u4f7f\u7528 Maven \u914d\u7f6e\u9879\u76ee<\/p>\n<p>pom.xml<\/p>\n<pre><code class=\"language-xml\">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;\n&lt;project xmlns=&quot;http:\/\/maven.apache.org\/POM\/4.0.0&quot;\n         xmlns:xsi=&quot;http:\/\/www.w3.org\/2001\/XMLSchema-instance&quot;\n         xsi:schemaLocation=&quot;http:\/\/maven.apache.org\/POM\/4.0.0 http:\/\/maven.apache.org\/xsd\/maven-4.0.0.xsd&quot;&gt;\n    &lt;modelVersion&gt;4.0.0&lt;\/modelVersion&gt;\n\n    &lt;groupId&gt;com.iyatt&lt;\/groupId&gt;\n    &lt;artifactId&gt;java_test&lt;\/artifactId&gt;\n    &lt;version&gt;1.0-SNAPSHOT&lt;\/version&gt;\n\n    &lt;properties&gt;\n        &lt;maven.compiler.source&gt;1.8&lt;\/maven.compiler.source&gt;\n        &lt;maven.compiler.target&gt;1.8&lt;\/maven.compiler.target&gt;\n        &lt;project.build.sourceEncoding&gt;UTF-8&lt;\/project.build.sourceEncoding&gt;\n        &lt;project.reporting.outputEncoding&gt;UTF-8&lt;\/project.reporting.outputEncoding&gt;\n    &lt;\/properties&gt;\n\n    &lt;dependencies&gt;\n        &lt;dependency&gt;\n            &lt;groupId&gt;com.google.code.gson&lt;\/groupId&gt;\n            &lt;artifactId&gt;gson&lt;\/artifactId&gt;\n            &lt;version&gt;2.10.1&lt;\/version&gt;\n        &lt;\/dependency&gt;\n    &lt;\/dependencies&gt;\n\n&lt;\/project&gt;<\/code><\/pre>\n<p>\u9879\u76ee\u7ed3\u6784<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694271975546.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 675px; --smush-placeholder-aspect-ratio: 675\/375;\" \/><\/p>\n<p>\u5b66\u4e60\u53c2\u8003\u7684\u5b98\u65b9\u6587\u6863\uff1a<a href=\"https:\/\/github.com\/google\/gson\/blob\/main\/UserGuide.md\">https:\/\/github.com\/google\/gson\/blob\/main\/UserGuide.md<\/a><\/p>\n<h2><span class=\"ez-toc-section\" id=\"%E5%9F%BA%E6%9C%AC%E7%A4%BA%E4%BE%8B\"><\/span>\u57fa\u672c\u793a\u4f8b<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>2023.9.12<\/p>\n<p>\u5e8f\u5217\u5316\uff1a\u5c06 Java \u5bf9\u8c61\u8f6c\u4e3a JSON \u5b57\u7b26\u4e32<br \/>\n\u53cd\u5e8f\u5217\u5316\uff1a\u5c06 JSON \u5b57\u7b26\u4e32\u8f6c\u4e3a Java \u5bf9\u8c61<\/p>\n<pre><code class=\"language-java\">package com.iyatt;\nimport com.google.gson.Gson;\n\npublic class Main\n{\n    public static void main(String[] args)\n    {\n        \/\/ \u5e8f\u5217\u5316\n        Gson gson = new Gson();\n        String s1 = gson.toJson(1);\n        String s2 = gson.toJson(&quot;abcd&quot;);\n        String s3 = gson.toJson(new Long(10));\n        int[] values = {1, 2, 3};\n        String s4 = gson.toJson(values);\n        System.out.println(s1);\n        System.out.println(s2);\n        System.out.println(s3);\n        System.out.println(s4);\n\n        \/\/ \u53cd\u5e8f\u5217\u5316\n        int i = gson.fromJson(&quot;1&quot;, int.class);\n        Integer int_obj = gson.fromJson(&quot;1&quot;, Integer.class);\n        Boolean bool_obj = gson.fromJson(&quot;true&quot;, Boolean.class);\n        String str = gson.fromJson(&quot;&quot;abc&quot;&quot;, String.class);\n        String[] str_array = gson.fromJson(&quot;[&quot;123&quot;, &quot;abc&quot;]&quot;, String[].class);\n        for (String s : str_array)\n        {\n            System.out.println(s);\n        }\n    }\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694486585667.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 108px; --smush-placeholder-aspect-ratio: 108\/128;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"%E5%AF%B9%E8%B1%A1%E7%A4%BA%E4%BE%8B\"><\/span>\u5bf9\u8c61\u793a\u4f8b<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>2023.9.12<\/p>\n<pre><code class=\"language-java\">package com.iyatt;\nimport com.google.gson.Gson;\n\nclass BagOfPrimitives\n{\n    private String name = &quot;\u5c0f\u660e&quot;;\n    private int age = 20;\n    private transient int value = 100; \/\/ transient \u4fee\u9970\u5728\u5e8f\u5217\u5316\u65f6\u4f1a\u5ffd\u7565\n}\n\npublic class Main\n{\n    public static void main(String[] args)\n    {\n        BagOfPrimitives bop = new BagOfPrimitives();\n        Gson gson = new Gson();\n        String json = gson.toJson(bop);\n        System.out.println(json);\n    }\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694487021960.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 192px; --smush-placeholder-aspect-ratio: 192\/92;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"%E6%95%B0%E7%BB%84%E7%A4%BA%E4%BE%8B\"><\/span>\u6570\u7ec4\u793a\u4f8b<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<pre><code class=\"language-java\">package com.iyatt;\nimport com.google.gson.Gson;\n\npublic class Main\n{\n    public static void main(String[] args)\n    {\n        int[] nums = {1, 2, 3, 4, 5};\n        String[] strs = {&quot;abcd&quot;, &quot;1234&quot;};\n\n        Gson gson = new Gson();\n        System.out.println(gson.toJson(nums));\n        System.out.println(gson.toJson(strs));\n\n        String s = &quot;[1, 2, 3, 4]&quot;;\n        int[] num_array = gson.fromJson(s, int[].class);\n        for (int i : num_array)\n        {\n            System.out.print(i + &quot; &quot;);\n        }\n    }\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694491202272.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 131px; --smush-placeholder-aspect-ratio: 131\/83;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"%E9%9B%86%E5%90%88%E7%A4%BA%E4%BE%8B\"><\/span>\u96c6\u5408\u793a\u4f8b<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>2023.9.12<\/p>\n<pre><code class=\"language-java\">package com.iyatt;\nimport java.util.Arrays;\nimport java.util.Collection;\nimport com.google.gson.Gson;\nimport com.google.gson.reflect.TypeToken;\n\npublic class Main\n{\n    public static void main(String[] args)\n    {\n        Gson gson = new Gson();\n\n        \/\/ \u5e8f\u5217\u5316\n        Collection&lt;Integer&gt; ints = Arrays.asList(1, 2, 3, 4, 5);\n        String json = gson.toJson(ints);\n        System.out.println(json);\n\n        \/\/ \u53cd\u5e8f\u5217\u5316\n        TypeToken&lt;Collection&lt;Integer&gt;&gt; collection_type = new TypeToken&lt;Collection&lt;Integer&gt;&gt;(){};\n        Collection&lt;Integer&gt; ints2 = gson.fromJson(json, collection_type);\n        for (Integer i : ints2)\n        {\n            System.out.print(i + &quot; &quot;);\n        }\n    }\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694500061041.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 135px; --smush-placeholder-aspect-ratio: 135\/77;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"Map_%E7%A4%BA%E4%BE%8B\"><\/span>Map \u793a\u4f8b<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>2023.9.12<\/p>\n<pre><code class=\"language-java\">package com.iyatt;\nimport java.util.LinkedHashMap;\nimport java.util.Map;\nimport com.google.gson.Gson;\nimport com.google.gson.reflect.TypeToken;\n\npublic class Main\n{\n    public static void main(String[] args)\n    {\n        Gson gson = new Gson();\n        Map&lt;String, String&gt; string_map = new LinkedHashMap&lt;&gt;();\n        string_map.put(&quot;\u952e&quot;, &quot;\u503c&quot;);\n        string_map.put(null, &quot;\u7a7a&quot;);\n\n        \/\/ \u5e8f\u5217\u5316\n        String json = gson.toJson(string_map);\n        System.out.println(json);\n\n        \/\/ \u53cd\u5e8f\u5217\u5316\n        TypeToken&lt;Map&lt;String, String&gt;&gt; map_type = new TypeToken&lt;Map&lt;String, String&gt;&gt;(){};\n        Map&lt;String, String&gt; string_map2 = gson.fromJson(json, map_type);\n        string_map2.forEach((k, v) -&gt; System.out.println(k + &quot; : &quot; + v));\n    }\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694501951518.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 197px; --smush-placeholder-aspect-ratio: 197\/95;\" \/><\/p>\n<h3><span class=\"ez-toc-section\" id=\"%E8%BE%83%E5%A4%8D%E6%9D%82%E7%9A%84%E9%94%AE\"><\/span>\u8f83\u590d\u6742\u7684\u952e<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>2023.9.12<\/p>\n<p>\u8fd9\u91cc\u4f7f\u7528\u4e00\u4e2a\u7c7b\u5bf9\u8c61\u4f5c\u4e3a\u952e\u6765\u793a\u4f8b<\/p>\n<pre><code class=\"language-java\">package com.iyatt;\nimport java.util.LinkedHashMap;\nimport java.util.Map;\nimport com.google.gson.Gson;\nimport com.google.gson.GsonBuilder;\n\nclass PersonName\n{\n    private String first_name;\n    private String last_name;\n\n    public PersonName(String first_name, String las_name)\n    {\n        this.first_name = first_name;\n        this.last_name = las_name;\n    }\n}\n\npublic class Main\n{\n    public static void main(String[] args)\n    {\n        Gson gson = new GsonBuilder().enableComplexMapKeySerialization().create();\n        Map&lt;PersonName, Integer&gt; complex_map = new LinkedHashMap&lt;&gt;();\n        complex_map.put(new PersonName(&quot;Hong&quot;, &quot;Zhang&quot;), 20);\n        complex_map.put(new PersonName(&quot;Ming&quot;, &quot;Li&quot;), 21);\n        String json = gson.toJson(complex_map);\n        System.out.println(json);\n    }\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694517807850.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 689px; --smush-placeholder-aspect-ratio: 689\/70;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"%E6%B3%9B%E5%9E%8B-2\"><\/span>\u6cdb\u578b<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>2023.9.12<\/p>\n<pre><code class=\"language-java\">package com.iyatt;\nimport com.google.gson.Gson;\nimport com.google.gson.reflect.TypeToken;\nimport java.lang.reflect.Type;\n\nclass Test&lt;T&gt;\n{\n    T value;\n}\n\npublic class Main\n{\n    public static void main(String[] args)\n    {\n        Gson gson = new Gson();\n\n        Test&lt;String&gt; t = new Test&lt;&gt;();\n        t.value = &quot;\u4f60\u597d&quot;;\n        String json = gson.toJson(t, t.getClass()); \/\/ \u5e8f\u5217\u5316\n        System.out.println(json);\n\n        Test&lt;Integer&gt; i = new Test&lt;&gt;();\n        i.value = 10;\n        json = gson.toJson(i); \/\/ \u5e8f\u5217\u5316\n        System.out.println(json);\n\n        Test&lt;Integer&gt; i2 = new Test&lt;&gt;();\n        Type i_type = new TypeToken&lt;Test&lt;Integer&gt;&gt;(){}.getType(); \/\/ \u83b7\u53d6\u7c7b\u578b\n        i2 = gson.fromJson(json, i_type); \/\/ \u53cd\u5e8f\u5217\u5316\n        System.out.println(i2.value);\n    }\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694519150692.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 159px; --smush-placeholder-aspect-ratio: 159\/95;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"%E5%AF%B9%E8%B1%A1%E5%AD%98%E5%82%A8%E4%B8%8E%E5%88%9B%E5%BB%BA\"><\/span>\u5bf9\u8c61\u5b58\u50a8\u4e0e\u521b\u5efa<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>2023.9.20<\/p>\n<p>\u6211\u63a5\u7684\u90a3\u4e2a\u9879\u76ee\u91cc\u6700\u5f00\u59cb\u7528\u7684 Java \u7684\u5bf9\u8c61\u5b58\u50a8\uff0c\u540e\u9762\u53c8\u6362\u6210\u4e86\u7528 xml \u6765\u5907\u4efd\u548c\u6062\u590d\u5185\u5bb9\u670d\u52a1\u5668\u53d1\u9001\u8fc7\u6765\u7684\u5185\u5bb9\uff0c\u4f7f\u7528\u7684 DOM4J \u5e93\uff0c\u540e\u9762\u60f3\u7740\u672c\u6765\u5c31\u8981\u7528 Gson \u5e93\uff0c\u4e3a\u4ec0\u4e48\u4e0d\u90fd\u7528 Gson \u5e93\uff0c\u4e8e\u662f\u53c8\u7814\u7a76\u4e86\u4e00\u4e0b\u5e94\u8be5\u600e\u4e48\u5b58\u50a8\u9879\u76ee\u91cc\u7c7b\u4f3c HashMap&lt;String, Request> \u7ed3\u6784\u7684\u5bf9\u8c61\uff0c\u5176\u4e2d Request \u662f\u81ea\u5b9a\u4e49\u7684\u7c7b\uff0c\u8fd9\u91cc\u5c31\u5148\u63a2\u7d22\u8bd5\u4e86\u4e00\u4e0b\uff0c\u53d1\u73b0\u7b80\u5355\u4e0d\u5c11\uff0cGson \u7684\u5e8f\u5217\u5316\u548c\u53cd\u5e8f\u5217\u5316\u5c01\u88c5\u5f97\u5f88\u5b8c\u5584\u3002\u6211\u7528 DOM4J \u5b9e\u73b0\u7684\u5b58\u50a8\u6062\u590d\u662f\u624b\u52a8\u5339\u914d\u7c7b\u7684\u6bcf\u4e2a\u5c5e\u6027\u7684\uff0c\u76f8\u5f53\u4e8e\u662f\u5b9a\u5236\u7684\uff0c\u4e0d\u80fd\u5b58\u50a8\u5176\u5b83\u7c7b\u578b\uff0c\u8bd5\u4e86\u4e00\u4e0b Gson \u4e4b\u540e\u624d\u610f\u8bc6\u5230\u53ef\u4ee5\u4f7f\u7528\u53cd\u5c04\u6765\u5b9e\u73b0\uff0c\u8fd9\u6837\u5c31\u53ef\u4ee5\u505a\u5230\u901a\u7528\uff0c\u4e0d\u8fc7\u5df2\u7ecf\u8ba1\u5212\u6362\u6210 Gson \u6765\u50a8\u5b58\u6062\u590d\u4e86\uff0c\u6682\u65f6\u4e5f\u5c31\u4e0d\u63a2\u7d22 DOM4J \u65b9\u6848\u7684\u6cdb\u578b\u5bf9\u8c61\u5b58\u50a8\u5b9e\u73b0\u4e86\u3002<\/p>\n<pre><code class=\"language-java\">package com.iyatt;\n\nimport java.io.FileInputStream;\nimport java.io.FileOutputStream;\nimport java.io.InputStreamReader;\nimport java.util.HashMap;\nimport java.util.Map;\nimport java.io.OutputStreamWriter;\n\nimport com.google.gson.Gson;\nimport com.google.gson.GsonBuilder;\nimport com.google.gson.reflect.TypeToken;\n\nclass Person\n{\n    private String name;\n    private int age;\n\n    public Person()\n    {\n\n    }\n\n    public Person(String name, int age)\n    {\n        this.name = name;\n        this.age = age;\n    }\n\n    public String toString()\n    {\n        return &quot;Person [name=&quot; + this.name + &quot;, age=&quot; + this.age + &quot;]&quot;;\n    }\n}\n\nclass JsonUtil\n{\n    public static void saveToJsonFile(HashMap&lt;String, Person&gt; map, String file_name) throws Exception\n    {\n        \/\/ Gson gson = new Gson(); \/\/ \u4e00\u884c Json\n        Gson gson = new GsonBuilder().setPrettyPrinting().create(); \/\/ \u81ea\u52a8\u6362\u884c\u7684 Json\n        try (OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream(file_name), &quot;UTF-8&quot;))\n        {\n            gson.toJson(map, writer);\n        }\n    }\n\n    public static HashMap&lt;String, Person&gt; loadFromJsonFile(String file_name) throws Exception\n    {\n        Gson gson = new Gson();\n        try (InputStreamReader reader = new InputStreamReader(new FileInputStream(file_name), &quot;UTF-8&quot;))\n        {\n            return gson.fromJson(reader, new TypeToken&lt;HashMap&lt;String, Person&gt;&gt;(){}.getType());\n        }\n    }\n}\n\nclass Main\n{\n    public static void main(String[] args) throws Exception\n    {\n        Person p1 = new Person(&quot;\u674e\u660e&quot;, 20);\n        Person p2 = new Person(&quot;\u9648\u5f3a&quot;, 23);\n        Person p3 = new Person(&quot;\u8c2d\u529b&quot;, 21);\n\n        HashMap&lt;String, Person&gt; map1 = new HashMap&lt;&gt;();\n        map1.put(&quot;\u7b2c\u4e00\u4e2a&quot;, p1);\n        map1.put(&quot;\u7b2c\u4e8c\u4e2a&quot;, p2);\n        map1.put(&quot;\u7b2c\u4e09\u4e2a&quot;, p3);\n\n        JsonUtil.saveToJsonFile(map1, &quot;test.json&quot;);\n\n        HashMap&lt;String, Person&gt; map2 = JsonUtil.loadFromJsonFile(&quot;test.json&quot;);\n        for (Map.Entry&lt;String, Person&gt; entry : map2.entrySet())\n        {\n            System.out.println(&quot;key\uff1a&quot;  + entry.getKey() + &quot; value\uff1a&quot; + entry.getValue());\n        }\n    }\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1695146519392.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 380px; --smush-placeholder-aspect-ratio: 380\/92;\" \/><\/p>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1695146528108.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 251px; --smush-placeholder-aspect-ratio: 251\/301;\" \/><\/p>\n<h1><span class=\"ez-toc-section\" id=\"%E5%BC%95%E7%94%A8_jar_%E5%8C%85\"><\/span>\u5f15\u7528 jar \u5305<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>2023.9.12<\/p>\n<p>\u8fd9\u91cc\u7528\u7684\u4e0a\u9762\u7684\u4f8b\u5b50\uff0c\u4f46\u662f\u4e0d\u4f7f\u7528 Maven\u3002\u5c06\u7528\u5230\u7684 Gson \u5305\uff08.jar\uff09\u4e0b\u8f7d\u5230\u672c\u5730\uff0c\u653e\u5230\u6e90\u6587\u4ef6\u540c\u76ee\u5f55\u4e0b\u3002<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694509709173.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 210px; --smush-placeholder-aspect-ratio: 210\/86;\" \/><\/p>\n<pre><code class=\"language-java\">import java.util.LinkedHashMap;\nimport java.util.Map;\nimport com.google.gson.Gson;\nimport com.google.gson.reflect.TypeToken;\n\npublic class Main\n{\n    public static void main(String[] args)\n    {\n        Gson gson = new Gson();\n        Map&lt;String, String&gt; string_map = new LinkedHashMap&lt;&gt;();\n        string_map.put(&quot;\u952e&quot;, &quot;\u503c&quot;);\n        string_map.put(null, &quot;\u7a7a&quot;);\n\n        \/\/ \u5e8f\u5217\u5316\n        String json = gson.toJson(string_map);\n        System.out.println(json);\n\n        \/\/ \u53cd\u5e8f\u5217\u5316\n        TypeToken&lt;Map&lt;String, String&gt;&gt; map_type = new TypeToken&lt;Map&lt;String, String&gt;&gt;(){};\n        Map&lt;String, String&gt; string_map2 = gson.fromJson(json, map_type);\n        string_map2.forEach((k, v) -&gt; System.out.println(k + &quot; : &quot; + v));\n\n    }\n}<\/code><\/pre>\n<p>\u5728\u7f16\u8bd1\u548c\u6267\u884c\u7684\u65f6\u5019\u8981\u6307\u5b9a\u4f7f\u7528\u5230\u7684 jar \u5305\uff0cWindows \u4e0b\u8def\u5f84\u4e4b\u95f4\u7528\u82f1\u6587\u5206\u53f7\u9694\u5f00\uff0cLinux \u4e0b\u7528\u82f1\u6587\u5192\u53f7<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694509853532.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 926px; --smush-placeholder-aspect-ratio: 926\/152;\" \/><\/p>\n<h1><span class=\"ez-toc-section\" id=\"%E5%88%9D%E7%89%88%E5%AE%8C%E6%88%90\"><\/span>\u521d\u7248\u5b8c\u6210<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>2023.9.14<\/p>\n<p>\u96c7\u4e3b\u90a3\u8fb9 16 \u53f7 17:00 \u8981\u4ea4\u4e00\u4e2a\u8349\u6848\uff0c\u4eca\u5929\u4e2d\u5348\u6211\u5df2\u7ecf\u4ea4\u7ed9\u4e2d\u4ecb\u4e86\u3002<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694693102537.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 713px; --smush-placeholder-aspect-ratio: 713\/49;\" \/><\/p>\n<p>\u4e3b\u4f53\u529f\u80fd\u5df2\u7ecf\u5b9e\u73b0\uff0c\u8fd8\u5f85\u8c03\u8bd5\u5b8c\u5584\uff0c\u53e6\u5916\u8fd8\u6ca1\u5199\u81ea\u52a8\u5316\u6d4b\u8bd5\u7a0b\u5e8f\u3002<br \/>\n\u6700\u5de6\u8fb9\u7684\u662f\u805a\u5408\u670d\u52a1\u5668\uff0c\u4e2d\u95f4\u4e24\u4e2a\u662f\u5185\u5bb9\u670d\u52a1\u5668\uff0c\u5411\u805a\u5408\u670d\u52a1\u5668 PUT \u6570\u636e\uff0c\u6700\u53f3\u8fb9\u7684\u662f GET \u5ba2\u6237\u7aef\uff0c\u7528\u6765\u4ece\u805a\u5408\u670d\u52a1\u5668\u83b7\u53d6\u6570\u636e\uff0c\u56fe\u4e2d\u5ba2\u6237\u7aef\u6253\u5370\u663e\u793a\u7684\u4e24\u4e2a\u6846\u5c31\u662f\u4e24\u4e2a\u5185\u5bb9\u670d\u52a1\u5668\u63a8\u9001\u5230\u805a\u5408\u670d\u52a1\u5668\u7684\u6570\u636e\u3002<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694693574242.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 999px; --smush-placeholder-aspect-ratio: 999\/893;\" \/><\/p>\n<p>\u4e5f\u53ef\u4ee5\u4f7f\u7528\u6d4f\u89c8\u5668\u4f5c\u4e3a\u5ba2\u6237\u7aef\u53bb\u8bbf\u95ee\u805a\u5408\u670d\u52a1\u5668<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694693707845.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 497px; --smush-placeholder-aspect-ratio: 497\/400;\" \/><\/p>\n<h1><span class=\"ez-toc-section\" id=\"%E5%8D%95%E4%BE%8B%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F\"><\/span>\u5355\u4f8b\u8bbe\u8ba1\u6a21\u5f0f<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>2023.9.14<\/p>\n<p>\u8fd9\u79cd\u6a21\u5f0f\u5c31\u662f\u4e00\u4e2a\u7c7b\u53ea\u80fd\u6709\u4e00\u4e2a\u5bf9\u8c61\uff0c\u5c31\u6bd4\u5982 Windows \u7684\u4efb\u52a1\u7ba1\u7406\u5668\uff0c\u5982\u679c\u5df2\u7ecf\u6253\u5f00\u4e86\u4e00\u4e2a\u4efb\u52a1\u7ba1\u7406\u5668\u7a97\u53e3\uff0c\u518d\u5c1d\u8bd5\u6253\u5f00\u4f9d\u7136\u8fd8\u662f\u53ea\u6709\u4e00\u4e2a\u7a97\u53e3\uff0c\u5728\u540c\u4e00\u65f6\u95f4\u53ea\u6709\u4e00\u4e2a\u5b9e\u4f8b\u5728\u8fd0\u884c\uff0c\u5355\u4f8b\u8bbe\u8ba1\u6a21\u5f0f\u5c31\u662f\u8fd9\u79cd\u601d\u60f3\u3002<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%E9%A5%BF%E6%B1%89%E5%8D%95%E4%BE%8B%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F\"><\/span>\u997f\u6c49\u5355\u4f8b\u8bbe\u8ba1\u6a21\u5f0f<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>2023.9.14<\/p>\n<p>\u8fd9\u79cd\u8bbe\u8ba1\u6a21\u5f0f\u7684\u601d\u60f3\u5c31\u662f\u5c06\u6784\u9020\u65b9\u6cd5\u5b9a\u4e49\u4e3a\u79c1\u6709\uff0c\u90a3\u4e48\u5728\u7c7b\u5916\u5c31\u65e0\u6cd5 new \u51fa\u8be5\u7c7b\u7684\u5b9e\u4f8b\uff0c\u7136\u540e\u5728\u7c7b\u4e2d\u8c03\u7528\u6784\u9020\u65b9\u6cd5\u521b\u5efa\u4e00\u4e2a\u7c7b\u81ea\u5df1\u7684\u5b9e\u4f8b\u4f5c\u4e3a\u9759\u6001\u6210\u5458\uff0c\u63d0\u4f9b\u4e00\u4e2a\u65b9\u6cd5\u5c06\u8fd9\u4e2a\u81ea\u8eab\u9759\u6001\u6210\u5458\u4f5c\u4e3a\u8fd4\u56de\u503c\uff0c\u90a3\u4e48\u5c31\u53ef\u4ee5\u901a\u8fc7\u8fd9\u4e2a\u65b9\u6cd5\u83b7\u5f97\u8fd9\u4e2a\u5355\u4f8b\uff0c\u4e14\u56e0\u4e3a\u7c7b\u81ea\u8eab\u662f\u9759\u6001\u6210\u5458\uff0c\u4e5f\u5c31\u51b3\u5b9a\u4e86\u8fd9\u4e2a\u7c7b\u6210\u5458\u53ea\u80fd\u6709\u4e00\u4e2a\u81ea\u5df1\u7684\u7c7b\u5b9e\u4f8b\u3002\u8fd9\u79cd\u8bbe\u8ba1\u6a21\u5f0f\u4e2d\u7684\u5355\u4f8b\u5bf9\u8c61\u662f\u7c7b\u9759\u6001\u6210\u5458\uff0c\u6240\u4ee5\u5b83\u662f\u4f34\u968f\u7c7b\u4e00\u8d77\u4ea7\u751f\u7684\uff0c\u4e5f\u5c31\u662f\u5728\u83b7\u53d6\u8fd9\u4e2a\u5bf9\u8c61\u4e4b\u524d\u5c31\u5df2\u7ecf\u5b58\u5728\u4e86\u3002<\/p>\n<pre><code class=\"language-java\">class SingleInstance\n{\n    private static SingleInstance si = new SingleInstance();\n\n    private SingleInstance() \/\/ \u79c1\u6709\u6784\u9020\u65b9\u6cd5\n    {\n\n    }\n\n    public static SingleInstance get_single_instance() \/\/ \u83b7\u5f97\u5b9e\u4f8b\u81ea\u8eab\n    {\n        return si;\n    }\n\n    \/\/ \u4ee5\u4e0b\u4ee3\u7801\u7528\u4e8e\u6f14\u793a\n\n    private String string = new String();\n\n    public void set_string(String string)\n    {\n        this.string = string;\n    }\n\n    public String get_string()\n    {\n        return this.string;\n    }\n}\n\nclass Main\n{\n    public static void main(String[] args)\n    {\n        SingleInstance si1 = SingleInstance.get_single_instance();\n        si1.set_string(&quot;hello \u4e16\u754c&quot;);\n\n        SingleInstance si2 = SingleInstance.get_single_instance();\n        System.out.println(si2.get_string());\n    }\n}<\/code><\/pre>\n<p>\u5148\u83b7\u53d6\u7684 si1 \u5e76\u7ed9\u5bf9\u8c61\u6210\u5458\u8bbe\u7f6e\u4e86\u4e00\u4e2a\u5b57\u7b26\u4e32\uff0c\u518d\u83b7\u53d6\u4e00\u4e2a\u5bf9\u8c61 si2\uff0c\u5c1d\u8bd5\u8bfb\u53d6\u7c7b\u6210\u5458\u7684\u5b57\u7b26\u4e32\uff0c\u53d1\u73b0\u5c31\u662f\u7ed9 si1 \u8bbe\u7f6e\u7684\u5b57\u7b26\u4e32\uff0c\u90a3\u5c31\u8bf4\u660e si1 \u548c si2 \u7684\u7c7b\u6210\u5458\u5b57\u7b26\u4e32\u662f\u540c\u4e00\u4e2a\uff0c\u4e5f\u5c31\u662f\u8bf4 si1 \u548c si2 \u90fd\u662f\u540c\u4e00\u4e2a\u5bf9\u8c61\u3002<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694698419966.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 150px; --smush-placeholder-aspect-ratio: 150\/100;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"%E6%87%92%E6%B1%89%E5%8D%95%E4%BE%8B%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F\"><\/span>\u61d2\u6c49\u5355\u4f8b\u8bbe\u8ba1\u6a21\u5f0f<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>2023.9.14<\/p>\n<p>\u8fd9\u79cd\u8bbe\u8ba1\u6a21\u5f0f\u4e0e\u4e0a\u9762\u7684\u4e0d\u540c\uff0c\u662f\u5728\u83b7\u53d6\u5355\u4f8b\u5bf9\u8c61\u7684\u65f6\u5019\u624d\u521b\u5efa\u8fd9\u4e2a\u5bf9\u8c61\u3002\u5b9e\u73b0\u4e0a\u8fd8\u662f\u91c7\u7528\u79c1\u6709\u6784\u9020\u65b9\u6cd5\uff0c\u7981\u6b62\u7c7b\u5916\u521b\u5efa\u5b9e\u4f8b\uff0c\u8fd8\u662f\u4f7f\u7528\u4e00\u4e2a\u81ea\u8eab\u7c7b\u7684\u9759\u6001\u6210\u5458\u6765\u4fdd\u5b58\u81ea\u5df1\uff0c\u4f46\u662f\u521b\u5efa\u5b9e\u4f8b\u7684\u5de5\u4f5c\u653e\u5230\u83b7\u53d6\u7c7b\u5bf9\u8c61\u7684\u65b9\u6cd5\u4e2d\uff0c\u8fd9\u6837\u5c31\u53ea\u6709\u5728\u83b7\u53d6\u5355\u4f8b\u5bf9\u8c61\u7684\u65f6\u5019\u624d\u4f1a\u521b\u5efa\u81ea\u5df1\u3002<\/p>\n<pre><code class=\"language-java\">class SingleInstance\n{\n    private static SingleInstance si;\n\n    private SingleInstance() \/\/ \u79c1\u6709\u6784\u9020\u65b9\u6cd5\n    {\n\n    }\n\n    public static SingleInstance get_single_instance() \/\/ \u83b7\u5f97\u5b9e\u4f8b\u81ea\u8eab\n    {\n        if (si == null) \/\/ \u4e0d\u5b58\u5728\u5c31\u521b\u5efa\n        {\n            si = new SingleInstance();\n        }\n        return si;\n    }\n\n    \/\/ \u4ee5\u4e0b\u4ee3\u7801\u7528\u4e8e\u6f14\u793a\n\n    private String string = new String();\n\n    public void set_string(String string)\n    {\n        this.string = string;\n    }\n\n    public String get_string()\n    {\n        return this.string;\n    }\n}\n\nclass Main\n{\n    public static void main(String[] args)\n    {\n        SingleInstance si1 = SingleInstance.get_single_instance();\n        si1.set_string(&quot;hello \u4e16\u754c&quot;);\n\n        SingleInstance si2 = SingleInstance.get_single_instance();\n        System.out.println(si2.get_string());\n    }\n}<\/code><\/pre>\n<h1><span class=\"ez-toc-section\" id=\"%E6%9E%9A%E4%B8%BE\"><\/span>\u679a\u4e3e<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>2023.9.14<\/p>\n<p>Java \u679a\u4e3e\u7684\u4f7f\u7528\u611f\u89c9\u548c C \u8bed\u8a00\u5dee\u4e0d\u591a<\/p>\n<pre><code class=\"language-java\">enum Sex\n{\n    BOY, GIRL\n}\n\nclass Main\n{\n    public static void main(String[] args)\n    {\n        Sex person1 = Sex.BOY;\n        Sex person2 = Sex.GIRL;\n\n        System.out.println(person1);\n        System.out.println(person2);\n    }\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694702293447.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 87px; --smush-placeholder-aspect-ratio: 87\/83;\" \/><\/p>\n<p>\u4f7f\u7528 Java \u81ea\u5e26\u7684\u5de5\u5177\u53cd\u7f16\u8bd1\u679a\u4e3e\u7c7b\uff0c\u53ef\u4ee5\u77e5\u9053\u5176\u5b9e\u5b83\u4e5f\u662f\u7528 class \u5b9e\u73b0\u7684<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694702323173.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 865px; --smush-placeholder-aspect-ratio: 865\/474;\" \/><\/p>\n<p>\u53c2\u8003\u8fd9\u90e8\u5206\u4ee3\u7801\u7684\u601d\u60f3\uff0c\u53ef\u4ee5\u81ea\u5df1\u7528 class \u5b9e\u73b0\u4e00\u4e2a\u201c\u679a\u4e3e\u201d<\/p>\n<pre><code class=\"language-java\">class Sex\n{\n    public static final Sex BOY = new Sex(&quot;BOY&quot;);\n    public static final Sex GIRL = new Sex(&quot;GIRL&quot;);\n\n    private String name;\n\n    private Sex(String name)\n    {\n        this.name = name;\n    }\n\n    @Override\n    public String toString()\n    {\n        return name;\n    }\n}\n\nclass Main\n{\n    public static void main(String[] args)\n    {\n        Sex person1 = Sex.BOY;\n        Sex person2 = Sex.GIRL;\n\n        System.out.println(person1);\n        System.out.println(person2);\n    }\n}<\/code><\/pre>\n<h2><span class=\"ez-toc-section\" id=\"%E5%BA%94%E7%94%A8\"><\/span>\u5e94\u7528<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<pre><code class=\"language-java\">enum Score\n{\n    A(5),\n    B(4),\n    C(3),\n    D(2),\n    E(1),\n    F(0);\n\n    private final int value;\n\n    private Score(int value)\n    {\n        this.value = value;\n    }\n\n    public int get_value()\n    {\n        return this.value;\n    }\n\n    public static Score value_of(int value)\n    {\n        for (Score s : Score.values())\n        {\n            if (s.get_value() == value)\n            {\n                return s;\n            }\n        }\n        return null;\n    }\n}\n\nclass Main\n{\n    public static void main(String[] args)\n    {\n        Score s = Score.A; \/\/ \u679a\u4e3e\u8d4b\u503c\n        System.out.println(s);\n        s = Score.valueOf(&quot;B&quot;); \/\/ \u5b57\u7b26\u4e32\u8d4b\u503c - \u5185\u90e8\u5b9e\u73b0\u7684\u65b9\u6cd5\n        System.out.println(s);\n        s = Score.value_of(0); \/\/ \u6570\u503c\u8d4b\u503c - \u81ea\u5b9a\u4e49\u65b9\u6cd5\n        System.out.println(s);\n    }\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1695055498625.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 123px; --smush-placeholder-aspect-ratio: 123\/71;\" \/><\/p>\n<h1><span class=\"ez-toc-section\" id=\"%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F\"><\/span>\u6b63\u5219\u8868\u8fbe\u5f0f<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>2023.9.15<\/p>\n<p>\u57fa\u7840\u7684\u8868\u8fbe\u5f0f\u89c4\u5219<\/p>\n<table>\n<thead>\n<tr>\n<th>\u89c4\u5219<\/th>\n<th>\u63cf\u8ff0<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>.<\/td>\n<td>\u5339\u914d\u4efb\u610f\u4e00\u4e2a\u5b57\u7b26<\/td>\n<\/tr>\n<tr>\n<td>[abc]<\/td>\n<td>\u5339\u914da\u3001b\u6216c\u4e2d\u7684\u4efb\u610f\u4e00\u4e2a\u5b57\u7b26<\/td>\n<\/tr>\n<tr>\n<td>[^abc]<\/td>\n<td>\u5339\u914d\u9664\u4e86a\u3001b\u548cc\u4ee5\u5916\u7684\u4efb\u610f\u4e00\u4e2a\u5b57\u7b26<\/td>\n<\/tr>\n<tr>\n<td>[a-z]<\/td>\n<td>\u5339\u914da\u5230z\u4e4b\u95f4\u7684\u4efb\u610f\u4e00\u4e2a\u5b57\u7b26<\/td>\n<\/tr>\n<tr>\n<td>[^a-z]<\/td>\n<td>\u5339\u914d\u9664\u4e86a\u5230z\u4e4b\u95f4\u7684\u4efb\u610f\u4e00\u4e2a\u5b57\u7b26<\/td>\n<\/tr>\n<tr>\n<td>d<\/td>\n<td>\u5339\u914d\u6570\u5b57\uff0c\u7b49\u4ef7\u4e8e[0-9]<\/td>\n<\/tr>\n<tr>\n<td>D<\/td>\n<td>\u5339\u914d\u975e\u6570\u5b57\uff0c\u7b49\u4ef7\u4e8e[^0-9]<\/td>\n<\/tr>\n<tr>\n<td>s<\/td>\n<td>\u5339\u914d\u7a7a\u767d\u5b57\u7b26\uff0c\u5305\u62ec\u7a7a\u683c\u3001\u5236\u8868\u7b26\u3001\u6362\u884c\u7b26\u7b49<\/td>\n<\/tr>\n<tr>\n<td>S<\/td>\n<td>\u5339\u914d\u975e\u7a7a\u767d\u5b57\u7b26<\/td>\n<\/tr>\n<tr>\n<td>w<\/td>\n<td>\u5339\u914d\u5355\u8bcd\u5b57\u7b26\uff0c\u5305\u62ec\u5b57\u6bcd\u3001\u6570\u5b57\u3001\u4e0b\u5212\u7ebf\u7b49<\/td>\n<\/tr>\n<tr>\n<td>W<\/td>\n<td>\u5339\u914d\u975e\u5355\u8bcd\u5b57\u7b26<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u57fa\u672c\u7684\u6570\u91cf\u8bcd<\/p>\n<table>\n<thead>\n<tr>\n<th>\u6570\u91cf\u8bcd<\/th>\n<th>\u63cf\u8ff0<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>*<\/td>\n<td>\u5339\u914d\u96f6\u4e2a\u6216\u591a\u4e2a<\/td>\n<\/tr>\n<tr>\n<td>+<\/td>\n<td>\u5339\u914d\u4e00\u4e2a\u6216\u591a\u4e2a<\/td>\n<\/tr>\n<tr>\n<td>?<\/td>\n<td>\u5339\u914d\u96f6\u4e2a\u6216\u4e00\u4e2a<\/td>\n<\/tr>\n<tr>\n<td>{n}<\/td>\n<td>\u5339\u914d\u6070\u597dn\u4e2a<\/td>\n<\/tr>\n<tr>\n<td>{n,}<\/td>\n<td>\u5339\u914d\u81f3\u5c11n\u4e2a<\/td>\n<\/tr>\n<tr>\n<td>{n,m}<\/td>\n<td>\u5339\u914d\u81f3\u5c11n\u4e2a\uff0c\u4f46\u4e0d\u8d85\u8fc7m\u4e2a<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u6ce8\uff1a\u8f6c\u4e49\u5b57\u7b26\u4f7f\u7528\u53cd\u659c\u6760\uff0c\u6bd4\u5982\u8981\u4f7f\u7528\u4e00\u4e2a\u53cd\u659c\u6760\u672c\u8eab\u90a3\u4e48\u5c31\u8981\u7528\u4e24\u4e2a\u53cd\u659c\u6760<\/p>\n<pre><code class=\"language-java\">import java.util.regex.Matcher;\nimport java.util.regex.Pattern;\n\nclass Main\n{\n    public static void main(String[] args)\n    {\n        \/\/ \u7b80\u5355\u793a\u4f8b\n        String s1 = &quot;b&quot;;\n        System.out.println(s1.matches(&quot;[abc]&quot;));\n\n        String s2 = &quot;gh&quot;;\n        System.out.println(s2.matches(&quot;[a-z]*&quot;));\n\n        \/\/ \u90ae\u7bb1\u6821\u9a8c             aaaaa@cccccccc.bbbbbbb(.ddddddd)\n        String email_regex = &quot;w{1,}@w{1,}(.w{2,}){1,2}&quot;;\n        String email1 = &quot;iyatt@iyatt.com&quot;;\n        String email2 = &quot;iyatt@iyatt.edu.cn&quot;;\n        String email3 = &quot;iyatt@iyatt&quot;;\n\n        System.out.println(email1.matches(email_regex));\n        System.out.println(email2.matches(email_regex));\n        System.out.println(email3.matches(email_regex));\n\n        \/\/ \u5339\u914d\u5355\u5c42 Json\n        \/\/ \u8fd9\u4e2a\u5b57\u7b26\u4e32\u4e2d\u6709\u4e24\u6bb5\u5355\u5c42 Json \u5b57\u6bb5\uff0c\u5728 Json \u5b57\u6bb5\u5916\u6df7\u6709\u5176\u5b83\u5b57\u7b26\u4e32\n        String text = &quot;dsad8678sdsfdsdfsd{&quot;id&quot;:&quot;IDS60801&quot;,&quot;name&quot;:&quot;Albany&quot;,&quot;state&quot;:&quot;WA&quot;,&quot;time_zone&quot;:&quot;WST&quot;,&quot;lat&quot;:-35.0,&quot;lon&quot;:117.9,&quot;local_date_time&quot;:&quot;15\/02&quot;,&quot;local_date_time_full&quot;:&quot;20230715060000&quot;,&quot;air_temp&quot;:16.8,&quot;apparent_t&quot;:14.8,&quot;cloud&quot;:&quot;Cloudy&quot;,&quot;dewpt&quot;:13.1,&quot;press&quot;:1017.4,&quot;rel_hum&quot;:80.0,&quot;wind_dir&quot;:&quot;WSW&quot;,&quot;wind_spd_kmh&quot;:17.0,&quot;wind_spd_kt&quot;:9}afasfas8998887asffas{&quot;name&quot;:&quot;Li Ming&quot;, &quot;age&quot;:20}&quot;;\n        Pattern pattern = Pattern.compile(&quot;{.*?}&quot;);\n        Matcher matcher = pattern.matcher(text);\n        while (matcher.find())\n        {\n            System.out.println(matcher.group());\n        }\n    }\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694717611023.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 504px; --smush-placeholder-aspect-ratio: 504\/210;\" \/><\/p>\n<h1><span class=\"ez-toc-section\" id=\"%E9%81%8D%E5%8E%86_Collection_%E9%9B%86%E5%90%88\"><\/span>\u904d\u5386 Collection \u96c6\u5408<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<h2><span class=\"ez-toc-section\" id=\"%E8%BF%AD%E4%BB%A3%E5%99%A8\"><\/span>\u8fed\u4ee3\u5668<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>2023.9.15<\/p>\n<p>\u8fd9\u4e2a\u6982\u5ff5\u548c C++ \u4e2d\u5dee\u4e0d\u591a\uff0cC++ \u7684 STL \u4e2d\u4f7f\u7528\u5bb9\u5668\u5b58\u50a8\uff08\u96c6\u5408\uff09\uff0c\u4f7f\u7528\u8fed\u4ee3\u5668\u904d\u5386\u5bb9\u5668\u4e2d\u7684\u5143\u7d20\u3002<\/p>\n<pre><code class=\"language-java\">import java.util.ArrayList;\nimport java.util.Collection;\nimport java.util.Iterator;\n\nclass Main\n{\n    public static void main(String[] args)\n    {\n        Collection&lt;String&gt; c = new ArrayList&lt;&gt;();\n        c.add(&quot;hello&quot;);\n        c.add(&quot;world&quot;);\n        c.add(&quot;java&quot;);\n\n        \/\/ \u83b7\u53d6\u8fed\u4ee3\u5668\n        for (Iterator&lt;String&gt; it = c.iterator(); it.hasNext(); )\n        {\n            System.out.println(it.next()); \/\/ \u8fd4\u56de\u8fed\u4ee3\u5668\u4e2d\u7684\u4e0b\u4e00\u4e2a\u5143\u7d20\n        }\n    }\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694753383258.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 110px; --smush-placeholder-aspect-ratio: 110\/115;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"for_%E9%81%8D%E5%8E%86\"><\/span>for \u904d\u5386<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>2023.9.15<\/p>\n<p>\u8fd9\u4e2a\u5728 C++ \u4e2d\u4e5f\u6709\u8fd9\u79cd\u904d\u5386\u65b9\u5f0f\uff0c\u53ea\u662f C++ \u4e2d\u6709 auto \u7c7b\u578b\uff0c\u53ef\u4ee5\u4e0d\u6307\u5b9a\u5143\u7d20\u7c7b\u578b\uff0c\u7531\u7f16\u8bd1\u5668\u81ea\u52a8\u63a8\u65ad\u51fa\u7c7b\u578b\uff0c\u800c Java \u8981\u6307\u5b9a\u904d\u5386\u5143\u7d20\u7684\u7c7b\u578b\u3002<br \/>\n\u521a\u67e5\u4e86\u4e00\u4e0b Java 10 \u4e2d\u4e5f\u662f\u5f15\u5165\u4e86\u4e00\u79cd\u81ea\u52a8\u63a8\u5bfc\u7c7b\u578b\u4e3a var\uff0c\u4e0d\u8fc7\u6211\u8fd9\u91cc\u7528\u7684 Java 8 \u6ca1\u6cd5\u4f53\u9a8c\uff0c\u7b49\u63a5\u7684\u8fd9\u4e2a\u9879\u76ee\u5355\u5b8c\u6210\u4ee5\u540e\u518d\u53bb\u5c1d\u8bd5\u65b0\u7248\u7684\u7279\u6027\u3002<\/p>\n<pre><code class=\"language-java\">import java.util.ArrayList;\nimport java.util.Collection;\n\nclass Main\n{\n    public static void main(String[] args)\n    {\n        Collection&lt;String&gt; cs = new ArrayList&lt;&gt;();\n        cs.add(&quot;hello&quot;);\n        cs.add(&quot;world&quot;);\n        cs.add(&quot;java&quot;);\n\n        \/\/ for \u904d\u5386\n        for (String c : cs)\n        {\n            System.out.println(c);\n        }\n    }\n}<\/code><\/pre>\n<h2><span class=\"ez-toc-section\" id=\"Lambda_%E8%A1%A8%E8%BE%BE%E5%BC%8F%E9%81%8D%E5%8E%86\"><\/span>Lambda \u8868\u8fbe\u5f0f\u904d\u5386<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>2023.9.15<\/p>\n<pre><code>import java.util.ArrayList;\nimport java.util.Collection;\n\nclass Main\n{\n    public static void main(String[] args)\n    {\n        Collection&lt;String&gt; cs = new ArrayList&lt;&gt;();\n        cs.add(&quot;hello&quot;);\n        cs.add(&quot;world&quot;);\n        cs.add(&quot;java&quot;);\n\n        cs.forEach(s -&gt; System.out.println(s)); \/\/ Lambda \u8868\u8fbe\u5f0f\n    }\n}<\/code><\/pre>\n<p>\u5b9e\u9645\u4e0a\u5185\u90e8\u5b9e\u73b0\u4e5f\u662f\u7528\u7684 for\uff0c\u53ea\u662f\u7528 Lambda \u8868\u8fbe\u5f0f\u81ea\u5b9a\u4e49\u64cd\u4f5c<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694754334794.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 519px; --smush-placeholder-aspect-ratio: 519\/243;\" \/><\/p>\n<h1><span class=\"ez-toc-section\" id=\"%E5%88%9D%E7%89%88%E4%BF%AE%E8%AE%A2%E9%87%8D%E4%BA%A4_%E2%80%93_%E5%9F%BA%E6%9C%AC%E5%AE%8C%E6%88%90\"><\/span>\u521d\u7248\u4fee\u8ba2\u91cd\u4ea4 &#8211; \u57fa\u672c\u5b8c\u6210<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>2023.9.15<\/p>\n<p>\u6628\u5929\u4ea4\u7684\u521d\u7248\u4ee3\u7801\uff0c\u7ed9\u7684\u53cd\u9988\u8981\u6c42\u4e0d\u4f7f\u7528 Maven\uff0c\u628a\u4f9d\u8d56\u7684 jar \u5305\u76f4\u63a5\u653e\u5728\u9879\u76ee\u6587\u4ef6\u5939\u4e2d\u4e00\u8d77\uff0c\u7136\u540e\u76f4\u63a5\u4f7f\u7528 javac \u7f16\u8bd1\u3002\u53e6\u5916\u5b8c\u5584\u9879\u76ee\u4ecb\u7ecd\uff0c\u5b9e\u73b0\u4e86\u4ec0\u4e48\u529f\u80fd\uff0c\u57fa\u4e8e\u4ec0\u4e48\u601d\u8def\u5b8c\u6210\u7684\u3002<br \/>\n\u5927\u6982\u4eca\u5929\u4e0b\u5348\u56db\u70b9\u7ed9\u6211\u8bf4\u7684\uff0c\u9664\u53bb\u505a\u996d\u5403\u996d\u7684\u65f6\u95f4\u4e00\u76f4\u5f04\u5230\u665a\u4e0a\u5341\u70b9\u641e\u5b9a\u4e0a\u9762\u7684\u8981\u6c42\uff0c\u540c\u65f6\u5b8c\u6210\u4e86\u6d4b\u8bd5\u4ee3\u7801\u3002\u95ee\u4e86\u4e00\u4e0b\u8981\u6c42\u5728 Linux \u4e0b\u6d4b\u8bd5\uff0c\u56e0\u6b64\u6211\u53c8\u5207\u6362\u5230 Ubuntu 22.04 \uff08\u53cc\u7cfb\u7edf\uff09\u4e0b\u5b89\u88c5 Java\uff0c\u91c7\u7528\u7684 openJDK 8\u3002\u6d4b\u8bd5\u4ee3\u7801\u7528 shell \u5199\u7684\uff0c\u540c\u65f6\u5bf9\u5ba2\u6237\u7aef\u8fdb\u884c\u4e86\u4fee\u6539\uff0c\u4e4b\u524d\u60f3\u7684\u662f\u628a\u5ba2\u6237\u7aef\u6253\u5370\u8f93\u51fa\u7684\u5185\u5bb9\u91cd\u5b9a\u5411\u4fdd\u5b58\u5230\u6587\u4ef6\uff0c\u7136\u540e\u81ea\u52a8\u6d4b\u8bd5\u811a\u672c\u53bb\u5339\u914d\u5185\u5bb9\u670d\u52a1\u5668\u4e0a\u4f20\u7684\u6e90\u6587\u4ef6\u548c\u91cd\u5b9a\u5411\u8f93\u51fa\u4fdd\u5b58\u7684\u6587\u4ef6\u4e2d\u7684\u5929\u6c14\u6570\u636e\u662f\u5426\u5339\u914d\uff0c\u800c\u5ba2\u6237\u7aef\u6253\u5370\u8f93\u51fa\u7684\u5185\u5bb9\u8fd8\u542b\u6709\u670d\u52a1\u5668\u7684\u56de\u590d\u5185\u5bb9\uff0c\u4ee5\u53ca\u4e3a\u4e86\u7f8e\u89c2\u6211\u7ed9\u83b7\u53d6\u5230\u7684\u5929\u6c14\u6570\u636e\u52a0\u4e86\u4e00\u4e2a\u8868\u683c\u6765\u5448\u73b0\u3002\u7136\u540e\u8981\u89e3\u6790\u8fd9\u4e2a\u5185\u5bb9\u7684\u8bdd\u7528 shell \u5b9e\u73b0\u592a\u590d\u6742\uff0c\u89e3\u6790\u8d77\u6765\u633a\u70e7\u8111\u7684\uff0c\u518d\u52a0\u4e0a\u5f88\u4e45\u6ca1\u5199 shell \u4e86\uff0c\u4e0d\u592a\u719f\u6089\u4e86\uff0c\u53cd\u6b63\u4e3a\u4e86\u5c1d\u8bd5\u4f30\u8ba1\u90fd\u82b1\u4e86\u4e00\u4e24\u4e2a\u5c0f\u65f6\uff0c\u90fd\u6ca1\u641e\u6210\u529f\u3002<br \/>\n\u5728\u8fd9\u4e2d\u95f4\u6211\u8fd8\u53d1\u73b0\u4e86\u6211\u5199\u7684 Json \u89e3\u6790\u6a21\u5757\u6709\u4e00\u4e2a\u5c0f bug\uff0c\u5c31\u662f\u5728\u5929\u6c14\u6e90\u6570\u636e\u4e2d\u6709\u4e00\u4e2a\u65f6\u95f4\u503c\u542b\u6709\u5192\u53f7\uff0c\u800c\u6e90\u6570\u636e\u7684\u952e\u548c\u503c\u4e5f\u662f\u7528\u5192\u53f7\u95f4\u9694\u7684\uff0c\u6240\u4ee5\u89e3\u6790\u8fd9\u4e2a\u6570\u636e\u5f53\u65f6\u5199\u7684\u7528\u5192\u53f7\u5206\u6bb5\uff0c\u7136\u540e\u518d\u53bb\u7a7a\u683c\uff0c\u7ed3\u679c\u8fd9\u6837\u5c31\u5bfc\u81f4\u89e3\u6790\u51fa\u6765\u952e\u503c\u6240\u5728\u7684\u884c\u4e2d\u503c\u542b\u6709\u7684\u5192\u53f7\u53ca\u540e\u9762\u7684\u5b57\u6bb5\u76f4\u63a5\u4e22\u5931\u4e86\u3002\u8fd9\u4e2a\u5c0f\u5c0f\u7684\u6539\u4e00\u4e0b\uff0c\u5728\u7528\u5192\u53f7\u5206\u5272\u6587\u672c\u7684\u65f6\u5019\u8bbe\u5b9a\u53ea\u5206\u5272\u4e3a\u4e24\u6bb5\u5c31\u884c\uff0c\u8fd9\u6837\u952e\u548c\u503c\u4e4b\u95f4\u7684\u7b2c\u4e00\u4e2a\u5192\u53f7\u624d\u4f5c\u4e3a\u5206\u9694\u7b26\u53f7\uff0c\u540e\u9762\u7684\u5192\u53f7\u5c31\u4e0d\u518d\u5206\u5272\u4e86\u3002<br \/>\n\u9488\u5bf9\u6d4b\u8bd5\uff0c\u524d\u9762\u63d0\u5230\u7684\u6211\u4fee\u6539\u4e86\u5ba2\u6237\u7aef\uff0c\u5c31\u662f\u4ece\u805a\u5408\u670d\u52a1\u5668\u8bf7\u6c42\u5230\u7684\u5185\u5bb9\u5c31\u76f4\u63a5\u4ece\u91cc\u9762\u89e3\u6790\u51fa Json \u5b57\u6bb5\u4fdd\u5b58\u4e3a Json \u6587\u4ef6\uff0c\u8fd9\u6837\u7528 shell \u5b9e\u73b0\u6821\u5bf9\u6e90\u6587\u4ef6\u6570\u636e\u548c\u5ba2\u6237\u7aef\u83b7\u53d6\u5230\u7684\u6570\u636e\uff08\u89e3\u6790\u51fa\u6765\u7684 Json \u6587\u4ef6\uff09\u5c31\u5341\u5206\u7b80\u5355\u4e86\uff0c\u6211\u524d\u9762\u5199\u7684 Json \u89e3\u6790\u6a21\u5757\u91cc\u5df2\u7ecf\u5b9e\u73b0\u4e86\u5c06 Json \u5b57\u6bb5\u4fdd\u5b58\u4e3a\u6587\u4ef6\u7684\u65b9\u6cd5\uff0c\u8c03\u7528\u4e00\u4e0b\u5c31\u5b8c\u6210\u4e86\u3002\u90a3\u4e2a Json \u6a21\u5757\u6709\u4e9b\u65b9\u6cd5\u5b9e\u9645\u90fd\u6ca1\u7528\u5230\uff0c\u90a3\u662f\u6700\u5f00\u59cb\u7684\u65f6\u5019\u5199\u7684\uff0c\u57fa\u672c\u4e0a\u628a\u53ef\u4ee5\u7528\u5230\u7684\u60c5\u51b5\u90fd\u5199\u4e86\u3002\u6bd4\u5982\u4ece\u952e\u503c\u6587\u672c\u6587\u4ef6\u8bfb\u53d6\u751f\u6210\u5bf9\u8c61\uff08\u5185\u5bb9\u670d\u52a1\u5668\u8bfb\u53d6\u6e90\u6587\u4ef6\uff09\uff0c\u4ece\u5bf9\u8c61\u5f97\u5230 Json \u5b57\u7b26\u4e32\uff0c\u4ece\u5b57\u7b26\u4e32\u5f97\u5230\u5bf9\u8c61\uff0c\u4ece\u5bf9\u8c61\u5f97\u5230\u683c\u5f0f\u5316\u7684\u8868\u683c\u6570\u636e\uff08\u5ba2\u6237\u7aef\u6253\u5370\u5448\u73b0\uff09\uff0c\u5bf9\u8c61\u4fdd\u5b58\u4e3a Json \u6587\u4ef6\uff08\u4fee\u6539\u540e\u5ba2\u6237\u7aef\u4f7f\u7528\u8fd9\u4e2a\u751f\u6210\u6587\u4ef6\u7528\u4e8e\u6700\u540e\u6d4b\u8bd5\u6821\u5bf9\uff09\uff0c\u8bfb Json \u6587\u4ef6\u5f97\u5230\u5bf9\u8c61\uff0c\u4ece\u670d\u52a1\u5668\u56de\u590d\u5185\u5bb9\u83b7\u53d6 Json \u5b57\u7b26\u4e32\uff08\u5ba2\u6237\u7aef\u8bf7\u6c42\u7ed3\u679c\u89e3\u6790\uff09\u3002<br \/>\n\u6700\u540e\u6d4b\u8bd5\u811a\u672c\u53ea\u8981\u5b9e\u73b0\u6bd4\u5bf9\u5185\u5bb9\u670d\u52a1\u5668\u8bfb\u53d6\u7684\u6e90\u6587\u4ef6\u548c\u5ba2\u6237\u7aef\u4fdd\u5b58\u7684 Json \u6587\u4ef6\u5373\u53ef\u5448\u73b0\u6d4b\u8bd5\u7ed3\u679c\uff0c\u6bd4\u8f83\u7b80\u5355\u4e86\u3002<br \/>\n\u5230\u6b64\u4e3a\u6b62\uff0c\u8fd9\u4e2a\u9879\u76ee\u57fa\u672c\u4e0a\u7b97\u662f\u5b8c\u6210\u4e86\uff0c\u8be5\u505a\u7684\u529f\u80fd\u90fd\u6709\u4e86\uff0c\u660e\u5929\u518d\u8c03\u8bd5\u4e00\u4e0b\u770b\u770b\u6709\u6ca1\u6709 bug\u3002\u5386\u65f6\u534a\u4e2a\u6708\uff0cJava \u4ece\u96f6\u5f00\u59cb\u5b66\u4e60\uff0c\u8fb9\u5b66\u4e60\u8fb9\u5b8c\u6210\u8fd9\u4e2a\u9879\u76ee\u3002<br \/>\n\u8fd9\u4e2a\u535a\u6587\u8fd8\u4f1a\u7ee7\u7eed\u5199\u6211\u540e\u7eed\u7684\u5b66\u4e60\u8bb0\u5f55\uff0c\u633a\u591a\u7684\u4e1c\u897f\u6ca1\u5b66\u7684\uff0c\u628a\u57fa\u7840\u6253\u597d\uff0c\u540e\u9762\u53ef\u4ee5\u7ee7\u7eed\u63a5\u5355\u3002\u56e0\u4e3a\u8003\u7814\u7684\u539f\u56e0\u540e\u9762\u6682\u65f6\u5c31\u4e0d\u63a5\u5355\u4e86\uff0c\u660e\u5e74\u518d\u770b\uff0c\u4e2d\u95f4\u62bd\u65f6\u95f4\u540c\u65f6\u5b66\u4e60\u3002<\/p>\n<h1><span class=\"ez-toc-section\" id=\"%E7%BA%BF%E7%A8%8B_Callable_%E5%AE%9E%E7%8E%B0_%E2%80%93_%E5%8F%AF%E8%8E%B7%E5%8F%96%E7%BA%BF%E7%A8%8B%E6%89%A7%E8%A1%8C%E7%BB%93%E6%9E%9C\"><\/span>\u7ebf\u7a0b Callable \u5b9e\u73b0 &#8211; \u53ef\u83b7\u53d6\u7ebf\u7a0b\u6267\u884c\u7ed3\u679c<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>2023.9.16<\/p>\n<pre><code class=\"language-java\">import java.util.concurrent.Callable;\nimport java.util.concurrent.FutureTask;\n\nclass MyCallable implements Callable&lt;String&gt;\n{\n    @Override\n    public String call() throws Exception \/\/ \u91cd\u5199 call \u65b9\u6cd5\n    {\n        Thread.sleep(1000); \/\/ \u6a21\u62df\u8017\u65f6\u64cd\u4f5c\n        return Thread.currentThread().getName() + &quot; &quot; + System.currentTimeMillis();\n    }\n}\n\npublic class Main\n{\n    public static void main(String[] args)\n    {\n        try\n        {\n            MyCallable call = new MyCallable();\n            FutureTask&lt;String&gt; task = new FutureTask&lt;&gt;(call);\n            Thread t = new Thread(task);\n            t.start();\n\n            System.out.println(task.get()); \/\/ \u83b7\u53d6\u5b50\u7ebf\u7a0b\u6267\u884c\u7ed3\u679c\uff0c\u5982\u679c\u5b50\u7ebf\u7a0b\u8fd8\u6ca1\u51fa\u7ed3\u679c\u4f1a\u963b\u585e\u7b49\u5f85\u7ed3\u679c\u51fa\u6765\n        }\n        catch (Exception e)\n        {\n            e.printStackTrace();\n        }\n    }\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694841495319.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 252px; --smush-placeholder-aspect-ratio: 252\/98;\" \/><\/p>\n<h1><span class=\"ez-toc-section\" id=\"%E7%BA%BF%E7%A8%8B%E5%90%8C%E6%AD%A5\"><\/span>\u7ebf\u7a0b\u540c\u6b65<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>2023.9.16<\/p>\n<p>\u524d\u9762\u5df2\u7ecf\u8bb0\u5f55\u8fc7\u5173\u4e8e\u7ebf\u7a0b\u540c\u6b65\u7684\uff1a<a href=\"https:\/\/blog.iyatt.com\/?p=11305#synchronized_%E5%90%8C%E6%AD%A5\">https:\/\/blog.iyatt.com\/?p=11305#synchronized_%E5%90%8C%E6%AD%A5<\/a><\/p>\n<p>\u5f53\u65f6\u4e3e\u7684\u4f8b\u5b50\u662f\u591a\u7ebf\u7a0b\u64cd\u4f5c\u540c\u4e00\u4e2a\u9759\u6001\u6210\u5458\uff0c\u8fd9\u4e2a\u65f6\u5019 synchronized \u5c31\u662f\u9501\u7684\u9759\u6001\u6210\u5458\u6240\u5728\u7684\u7c7b.class\u3002\u5982\u679c\u591a\u7ebf\u7a0b\u64cd\u4f5c\u7684\u662f\u53e6\u5916\u7684\u540c\u4e00\u4e2a\u7c7b\u5bf9\u8c61\uff0c\u90a3\u4e48\u5c31\u5e94\u8be5\u9501\u8fd9\u4e2a\u5bf9\u8c61\uff0c\u4f7f\u7528 this\u3002\u4e0b\u9762\u5199\u4e86\u4f8b\u5b50\u3002<\/p>\n<p>\u53e6\u5916\u8865\u5145\u8bf4\u660e\u4e00\u4e2a\u66f4\u597d\u7406\u89e3\u7684\u60c5\u666f\uff1a\u6bd4\u5982\u540c\u4e00\u4e2a\u94f6\u884c\u5361\u53f7\uff0c\u6709\u4f59\u989d10000\u5143\uff0c\u4e00\u4e2a\u4eba\u5728\u7ebf\u4e0b\u6d88\u8d39500\uff0c\u53e6\u5916\u4e00\u4e2a\u4eba\u5728\u7ebf\u4e0a\u6d88\u8d39100\u3002\u5982\u679c\u4e24\u4e2a\u4eba\u5728\u540c\u4e00\u65f6\u95f4\u8fdb\u884c\uff0c\u90a3\u4e48\u5c31\u51fa\u73b0\u4e86\u7ebf\u7a0b\u5b89\u5168\u7684\u95ee\u9898\uff0c\u4e24\u4e2a\u4eba\u5728\u64cd\u4f5c\u7684\u65f6\u5019\u80af\u5b9a\u90fd\u4f1a\u5148\u68c0\u67e5\u5f53\u524d\u7684\u4f59\u989d\uff0c\u5728\u540c\u4e00\u65f6\u95f4\u8fdb\u884c\uff0c\u7ebf\u4e0b\u548c\u7ebf\u4e0a\u5728\u652f\u4ed8\u65f6\u68c0\u67e5\u5230\u7684\u4f59\u989d\u90fd\u662f10000\u7684\u6570\u636e\uff0c\u7136\u540e\u5206\u522b\u572810000\u7684\u57fa\u7840\u4e0a\u51cf500\u548c100\uff0c\u90a3\u4e48\u6700\u540e\u628a\u6d88\u8d39\u540e\u7684\u4f59\u989d\u5199\u5230\u5361\u53f7\uff0c\u5f97\u5230\u7684\u53ef\u80fd\u662f9900\u4e5f\u53ef\u80fd\u662f9500\uff0c\u4e5f\u5c31\u662f\u6700\u7ec8\u8bb0\u5f55\u7684\u4f59\u989d\u662f\u5176\u4e2d\u4e00\u4e2a\u4eba\u6d88\u8d39\u540e\u7684\u3002<br \/>\n\u7ebf\u7a0b\u540c\u6b65\u5219\u662f\u7ed9\u8d26\u53f7\u652f\u4ed8\u7684\u6b65\u9aa4\u52a0\u9501\uff0c\u5982\u679c\u4e24\u4e2a\u4eba\u540c\u4e00\u65f6\u95f4\u6d88\u8d39\uff0c\u90a3\u4e48\u5728\u540c\u4e00\u65f6\u95f4\u53ea\u5141\u8bb8\u4e00\u4e2a\u4eba\u8fdb\u5165\u652f\u4ed8\u64cd\u4f5c\uff0c\u8fd9\u4e2a\u5c31\u662f\u968f\u673a\u9009\u62e9\u4e86\uff0c\u4e00\u4e2a\u5148\u8fdb\u884c\u652f\u4ed8\uff0c\u5b8c\u6210\u652f\u4ed8\u540e\u53e6\u5916\u4e00\u4e2a\u4eba\u624d\u80fd\u8fdb\u5165\u652f\u4ed8\u6b65\u9aa4\uff0c\u540c\u4e00\u65f6\u95f4\u5f00\u59cb\u652f\u4ed8\u7684\uff0c\u6ca1\u6709\u8fdb\u5165\u652f\u4ed8\u6b65\u9aa4\u7684\u5176\u4ed6\u652f\u4ed8\u5c31\u5148\u7b49\u5f85\u3002<\/p>\n<p>\u5b58\u5728\u7ebf\u7a0b\u5b89\u5168\u95ee\u9898\u7684\u4ee3\u7801<\/p>\n<pre><code class=\"language-java\">class ShareResources\n{\n    private static int counter = 0;\n\n    public static void operate()\n    {\n        ++counter;\n    }\n\n    public static int get()\n    {\n        return counter;\n    }\n}\n\nclass MyThread extends Thread\n{\n    private ShareResources sr;\n\n    public MyThread(ShareResources sr)\n    {\n        this.sr = sr;\n    }\n\n    @Override\n    public void run()\n    {\n        for (int i = 0; i &lt; 100000; ++i)\n        {\n            ShareResources.operate();\n        }\n    }\n}\n\nclass Main\n{\n    public static void main(String[] args)\n    {\n        ShareResources sr = new ShareResources();\n        MyThread mt1 = new MyThread(sr);\n        MyThread mt2 = new MyThread(sr);\n\n        mt1.start();\n        mt2.start();\n\n        try\n        {\n            mt1.join();\n            mt2.join();\n        }\n        catch (Exception e)\n        {\n            e.printStackTrace();\n        }\n\n        System.out.println(ShareResources.get());\n    }\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694851548649.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 124px; --smush-placeholder-aspect-ratio: 124\/163;\" \/><\/p>\n<p>\u4f7f\u7528\u540c\u6b65\uff1a<br \/>\n1.\u5bf9\u64cd\u4f5c\u9759\u6001\u5171\u4eab\u8d44\u6e90\u7684\u90e8\u5206\u540c\u6b65<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694851657583.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 329px; --smush-placeholder-aspect-ratio: 329\/160;\" \/><br \/>\n2.\u5bf9\u6574\u4e2a\u64cd\u4f5c\u5171\u4eab\u8d44\u6e90\u7684\u65b9\u6cd5\u540c\u6b65<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694851759467.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 361px; --smush-placeholder-aspect-ratio: 361\/96;\" \/><br \/>\n3.\u5982\u679c\u662f\u975e\u9759\u6001\u5171\u4eab\u8d44\u6e90\uff0c\u53ef\u4ee5\u9501\u5f53\u524d\u5bf9\u8c61 &#8211; this<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694851997490.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 259px; --smush-placeholder-aspect-ratio: 259\/200;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"Lock_%E9%94%81\"><\/span>Lock \u9501<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>2023.9.16<\/p>\n<p>\u4f7f\u7528 synchronized \u53ea\u77e5\u9053\u53ef\u4ee5\u505a\u5230\u7ebf\u7a0b\u540c\u6b65\uff0c\u4e0d\u80fd\u770b\u51fa\u5b83\u7684\u903b\u8f91\uff0c\u4f7f\u7528 Lock \u5219\u662f\u624b\u52a8\u5b8c\u6210\u52a0\u89e3\u9501\u7684\u6b65\u9aa4\u3002<\/p>\n<pre><code class=\"language-java\">import java.util.concurrent.locks.Lock;\nimport java.util.concurrent.locks.ReentrantLock;\n\nclass ShareResources\n{\n    private int counter = 0;\n    private Lock lock = new ReentrantLock(); \/\/ \u521b\u5efa\u4e00\u628a\u9501\n\n    public void operate()\n    {\n        lock.lock(); \/\/ \u52a0\u9501\n        try\n        {\n            ++this.counter;\n        }\n        catch (Exception e)\n        {\n            e.printStackTrace();\n        }\n        \/\/ \u4e0d\u7ba1\u6709\u6ca1\u6709\u5f02\u5e38\u90fd\u8981\u89e3\u9501\uff0c\u907f\u514d\u67d0\u4e2a\u7ebf\u7a0b\u51fa\u9519\uff0c\u5bfc\u81f4\u8d44\u6e90\u9501\u6b7b\uff0c\u9020\u6210\u5176\u5b83\u7ebf\u7a0b\u90fd\u4e0d\u80fd\u8bbf\u95ee\n        finally\n        {\n            lock.unlock(); \/\/ \u89e3\u9501\n        }\n    }\n\n    public int get()\n    {\n        return this.counter;\n    }\n}\n\nclass MyThread extends Thread\n{\n    private ShareResources sr;\n\n    public MyThread(ShareResources sr)\n    {\n        this.sr = sr;\n    }\n\n    @Override\n    public void run()\n    {\n        for (int i = 0; i &lt; 100000; ++i)\n        {\n            sr.operate();\n        }\n    }\n}\n\nclass Main\n{\n    public static void main(String[] args)\n    {\n        ShareResources sr = new ShareResources();\n        MyThread mt1 = new MyThread(sr);\n        MyThread mt2 = new MyThread(sr);\n\n        mt1.start();\n        mt2.start();\n\n        try\n        {\n            mt1.join();\n            mt2.join();\n        }\n        catch (Exception e)\n        {\n            e.printStackTrace();\n        }\n\n        System.out.println(sr.get());\n    }\n}<\/code><\/pre>\n<h1><span class=\"ez-toc-section\" id=\"%E5%87%BD%E6%95%B0%E5%BC%8F%E6%8E%A5%E5%8F%A3\"><\/span>\u51fd\u6570\u5f0f\u63a5\u53e3<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>2023.9.16<\/p>\n<p>\u8fd9\u4e2a\u4e1c\u897f\u633a\u50cf C \u8bed\u8a00\u4e2d\u7684\u51fd\u6570\u6307\u9488\uff0c\u7528\u6307\u9488\u53ef\u4ee5\u5f15\u7528\u51fd\u6570\u5730\u5740\uff0c\u7136\u540e\u53ef\u4ee5\u901a\u8fc7\u8fd9\u4e2a\u6307\u9488\u53bb\u8c03\u7528\u6307\u5411\u7684\u51fd\u6570\u3002<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Consumer\"><\/span>Consumer<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u63a5\u6536\u4e00\u4e2a\u53c2\u6570\u5e76\u6267\u884c\uff0c\u6ca1\u6709\u8fd4\u56de\u503c<\/p>\n<p>2023.9.16<\/p>\n<pre><code class=\"language-java\">import java.util.function.Consumer;\n\nclass Main\n{\n    static void consumer(String string, Consumer&lt;String&gt; con)\n    {\n        con.accept(string);\n    }\n\n    public static void main(String[] args)\n    {\n        consumer(&quot;\u4f60\u597d\uff0c\u4e16\u754c\uff01&quot;,\n                    s -&gt; System.out.println(s)); \/\/ Lambda \u8868\u8fbe\u5f0f\n    }\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694865120393.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 112px; --smush-placeholder-aspect-ratio: 112\/67;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"Supplier\"><\/span>Supplier<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>2023.9.16<\/p>\n<p>\u4e0d\u63a5\u53d7\u53c2\u6570\uff0c\u8fd4\u56de\u4e00\u4e2a\u7ed3\u679c<\/p>\n<pre><code class=\"language-java\">import java.util.function.Supplier;\n\nclass Main\n{\n    static String get_string(Supplier&lt;String&gt; sup)\n    {\n        return sup.get();\n    }\n\n    public static void main(String[] args)\n    {\n        String string1 = &quot;hello&quot;;\n        String string2 = get_string(() -&gt;\n        {\n            return string1 + &quot; &quot; + string1;\n        });\n\n        System.out.println(string2);\n    }\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694865105548.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 95px; --smush-placeholder-aspect-ratio: 95\/51;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"Function\"><\/span>Function<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>2023.9.16<\/p>\n<p>\u63a5\u53d7\u4e00\u4e2a\u53c2\u6570\u5e76\u8fd4\u56de\u4e00\u4e2a\u7ed3\u679c<\/p>\n<pre><code class=\"language-java\">import java.util.function.Function;\n\nclass Main\n{\n    static String get_string(Integer num, Function&lt;Integer,String&gt; fun)\n    {\n        return &quot;\u7ed3\u679c\u662f &quot; + fun.apply(num);\n    }\n\n    public static void main(String[] args)\n    {\n        String string = get_string(5,\n                                    (Integer num) -&gt;Integer.toString(num));\n\n        System.out.println(string);\n    }\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694865089943.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 92px; --smush-placeholder-aspect-ratio: 92\/57;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"Predicate\"><\/span>Predicate<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>2023.9.16<\/p>\n<p>\u4f20\u5165\u4e00\u4e2a\u53c2\u6570\u8fd4\u56de\u4e00\u4e2a\u5e03\u5c14\u7ed3\u679c<\/p>\n<pre><code class=\"language-java\">import java.util.function.Predicate;\n\nclass Main\n{\n    static boolean is_empty(String string, Predicate&lt;String&gt; pre)\n    {\n        return pre.test(string);\n    }\n\n    public static void main(String[] args)\n    {\n        String s1 = &quot;hello&quot;;\n        String s2 = &quot;&quot;;\n        String s3 = null;\n\n        boolean b1 = is_empty(s1, (String string) -&gt; string == null || string.isEmpty());\n        boolean b2 = is_empty(s2, (String string) -&gt; string == null || string.isEmpty());\n        boolean b3 = is_empty(s3, (String string) -&gt; string == null || string.isEmpty());\n\n        System.out.println(b1 + &quot; &quot; + b2 + &quot; &quot; + b3);\n    }\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694865075344.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 155px; --smush-placeholder-aspect-ratio: 155\/65;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"BiFunction\"><\/span>BiFunction<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>2023.9.16<\/p>\n<p>\u4f20\u5165\u4e24\u4e2a\u53c2\u6570\u8fd4\u56de\u4e00\u4e2a\u7ed3\u679c<\/p>\n<pre><code class=\"language-java\">import java.util.function.BiFunction;\n\nclass Main\n{\n    public static void main(String[] args)\n    {\n        BiFunction&lt;String, Integer, String&gt; bf = (name, age) -&gt; &quot;name: &quot; + name + &quot; age: &quot; + age;\n        String s = bf.apply(&quot;\u674e\u660e&quot;, 20);\n        System.out.println(s);\n    }\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694865056199.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 150px; --smush-placeholder-aspect-ratio: 150\/58;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"%E5%AE%9A%E4%B9%89%E5%87%BD%E6%95%B0%E5%BC%8F%E6%8E%A5%E5%8F%A3\"><\/span>\u5b9a\u4e49\u51fd\u6570\u5f0f\u63a5\u53e3<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>2023.9.16<\/p>\n<pre><code class=\"language-java\">\/\/ \u5b9a\u4e49\u4e00\u4e2a\u51fd\u6570\u5f0f\u63a5\u53e3\n@FunctionalInterface\ninterface IMyTest&lt;T&gt;\n{\n    void test(T msg);\n}\n\n\/\/ \u5b9a\u4e49\u4e00\u4e2a\u51fd\u6570\u5f0f\u63a5\u53e3\n@FunctionalInterface\ninterface ITest&lt;T1, T2&gt;\n{\n    T2 test(T1 msg);\n}\n\n\/\/ \u7528\u4e8e\u65b9\u6cd5\u5f15\u7528\u6d4b\u8bd5\nclass Test\n{\n    static Integer test_test(String string) \/\/ \u9759\u6001\u65b9\u6cd5\n    {\n        return Integer.parseInt(string) * 2;\n    }\n}\n\nclass Main\n{\n    public static void main(String[] args)\n    {\n        IMyTest&lt;String&gt; t1 = msg -&gt; System.out.println(&quot;\u6d88\u606f\u5185\u5bb9\u4e3a\uff1a&quot; + msg);\n        t1.test(&quot;\u4f60\u597d\uff0c\u4e16\u754c\uff01&quot;);\n\n        ITest&lt;String, Integer&gt; t2 = msg -&gt; msg.length();\n        int length = t2.test(&quot;hello&quot;);\n        System.out.println(length);\n\n        ITest&lt;String, Integer&gt; t3 = Integer::parseInt; \/\/ \u65b9\u6cd5\u5f15\u7528\n        System.out.println(t3.test(&quot;56&quot;) &gt; t3.test(&quot;57&quot;));\n\n        ITest&lt;String, Integer&gt; t4 = Test::test_test; \/\/ \u81ea\u5b9a\u4e49\u65b9\u6cd5\u5f15\u7528\n        System.out.println(t4.test(&quot;50&quot;));\n    }\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694866167162.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 235px; --smush-placeholder-aspect-ratio: 235\/104;\" \/><\/p>\n<h1><span class=\"ez-toc-section\" id=\"%E5%8D%95%E5%85%83%E6%B5%8B%E8%AF%95_%E2%80%93_Junit_5\"><\/span>\u5355\u5143\u6d4b\u8bd5 &#8211; Junit 5<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>2023.9.16<\/p>\n<p>\u7528\u6765\u6d4b\u8bd5\u7c7b\u548c\u65b9\u6cd5\u7684\u8bbe\u8ba1\u662f\u5426\u7b26\u5408\u9884\u671f\u7ed3\u679c<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%E7%A4%BA%E4%BE%8B%E4%BB%A3%E7%A0%81\"><\/span>\u793a\u4f8b\u4ee3\u7801<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u9879\u76ee\u7ed3\u6784<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694875699988.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 495px; --smush-placeholder-aspect-ratio: 495\/322;\" \/><\/p>\n<p>pom.xml<\/p>\n<pre><code class=\"language-xml\">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;\n&lt;project xmlns=&quot;http:\/\/maven.apache.org\/POM\/4.0.0&quot;\n         xmlns:xsi=&quot;http:\/\/www.w3.org\/2001\/XMLSchema-instance&quot;\n         xsi:schemaLocation=&quot;http:\/\/maven.apache.org\/POM\/4.0.0 http:\/\/maven.apache.org\/xsd\/maven-4.0.0.xsd&quot;&gt;\n    &lt;modelVersion&gt;4.0.0&lt;\/modelVersion&gt;\n\n    &lt;groupId&gt;com.iyatt&lt;\/groupId&gt;\n    &lt;artifactId&gt;demo&lt;\/artifactId&gt;\n    &lt;version&gt;1.0-SNAPSHOT&lt;\/version&gt;\n\n    &lt;properties&gt;\n        &lt;maven.compiler.source&gt;1.8&lt;\/maven.compiler.source&gt;\n        &lt;maven.compiler.target&gt;1.8&lt;\/maven.compiler.target&gt;\n        &lt;project.build.sourceEncoding&gt;UTF-8&lt;\/project.build.sourceEncoding&gt;\n        &lt;project.reporting.outputEncoding&gt;UTF-8&lt;\/project.reporting.outputEncoding&gt;\n    &lt;\/properties&gt;\n\n    &lt;dependencies&gt;\n        &lt;dependency&gt;\n            &lt;groupId&gt;org.junit.jupiter&lt;\/groupId&gt;\n            &lt;artifactId&gt;junit-jupiter&lt;\/artifactId&gt;\n            &lt;version&gt;5.10.0&lt;\/version&gt;\n            &lt;scope&gt;test&lt;\/scope&gt;\n        &lt;\/dependency&gt;\n    &lt;\/dependencies&gt;\n&lt;\/project&gt;<\/code><\/pre>\n<p>Modules1.java<\/p>\n<pre><code class=\"language-java\">package com.iyatt;\n\npublic class Modules1\n{\n    public int add(int num1, int num2)\n    {\n        return num1 + num2;\n    }\n\n    public int sub(int num1, int num2)\n    {\n        return num1 - num2;\n    }\n}<\/code><\/pre>\n<p>Modules2.java<\/p>\n<pre><code class=\"language-java\">package com.iyatt;\n\npublic class Modules2\n{\n    public boolean login(String account, String password)\n    {\n        if (account.equals(&quot;admin&quot;) &amp;&amp; password.equals(&quot;admin&quot;))\n        {\n            return true;\n        }\n        return false;\n    }\n}<\/code><\/pre>\n<p>TestModules1.java<\/p>\n<pre><code class=\"language-java\">package com.iyatt;\n\nimport static org.junit.jupiter.api.Assertions.assertEquals;\nimport org.junit.jupiter.api.AfterAll;\nimport org.junit.jupiter.api.AfterEach;\nimport org.junit.jupiter.api.BeforeAll;\nimport org.junit.jupiter.api.BeforeEach;\nimport org.junit.jupiter.api.Test;\n\npublic class TestModules1 \n{\n    private Modules1 m1 = new Modules1();\n\n    @Test \/\/ \u6d4b\u8bd5\u65b9\u6cd5\u5fc5\u987b\u4f7f\u7528\u6ce8\u89e3\n    \/\/ \u547d\u540d\u4e00\u822c\u4ee5 test \u5f00\u5934\u52a0\u6d4b\u8bd5\u65b9\u6cd5\u540d\n    \/\/ \u8fd4\u56de\u503c\u4e3a void \u6216 TestExecutionResult\uff08\u679a\u4e3e\uff0c\u7528\u4e8e\u8868\u793a\u6d4b\u8bd5\u7ed3\u679c\n    \/\/ \u53c2\u6570\u53ef\u4ee5\u4f7f\u7528\u6ce8\u89e3\u4f20\u9012\u7528\u4e8e\u6d4b\u8bd5\uff0c\u6bd4\u5982 @ValueSource(ints = {1, 2, 3, 4, 5}) \u53ef\u4ee5\u652f\u6301\u53ea\u6709\u4e00\u4e2a\u53c2\u6570\u7684\u65b9\u6cd5\u7684\u6d4b\u8bd5\uff0c\u7136\u540e\u6328\u4e2a\u4f20\u9012\u8fdb\u53bb\u6d4b\u8bd5\n    \/\/                                 @CsvSource({&quot;test,TEST&quot;, &quot;tEst,TEST&quot;, &quot;Java,JAVA&quot;})\u53ef\u4ee5\u652f\u6301\u6709\u591a\u4e2a\u53c2\u6570\u7684\u65b9\u6cd5\u6d4b\u8bd5\uff0c\u6bd4\u5982\u8fd9\u91cc\u6bcf\u4e2a\u5b57\u7b26\u4e32\u4ee3\u8868\u4e00\u6279\u6b21\u7684\u6d4b\u8bd5\u53c2\u6570\uff0c\u65b9\u6cd5\u7684\u591a\u4e2a\u53c2\u6570\u7528\u9017\u53f7\u9694\u5f00\n    void test_add()\n    {\n        assertEquals(8, this.m1.add(5, 3)); \/\/ \u671f\u5f85\u503c\uff0c\u5b9e\u9645\u7ed3\u679c\n    }\n\n    @Test\n    void test_sub()\n    {\n        assertEquals(3, this.m1.sub(5, 2));\n    }\n\n    @BeforeEach\n    void before_each()\n    {\n        System.out.println(&quot;\u5728\u6bcf\u4e2a\u6d4b\u8bd5\u65b9\u6cd5\u4e4b\u524d\u6267\u884c&quot;);\n    }\n\n    @BeforeAll\n    static void before_all() \/\/ \u5982\u679c\u5f53\u524d\u6d4b\u8bd5\u7c7b\u6ca1\u6709\u4f7f\u7528 @TestInstance(Lifecycle.PER_CLASS) \u6ce8\u89e3\uff0c\u90a3\u4e48\u8be5\u65b9\u6cd5\u5fc5\u987b\u662f static\n    {\n        System.out.println(&quot;\u5728\u6240\u6709\u6d4b\u8bd5\u65b9\u6cd5\u4e4b\u524d\u6267\u884c&quot;);\n    }\n\n    @AfterEach\n    void after_each()\n    {\n        System.out.println(&quot;\u5728\u6bcf\u4e2a\u6d4b\u8bd5\u65b9\u6cd5\u4e4b\u540e\u6267\u884c&quot;);\n    }\n\n    @AfterAll\n    static void after_all() \/\/ \u540c @BeforeAll\n    {\n        System.out.println(&quot;\u5728\u6240\u6709\u6d4b\u8bd5\u65b9\u6cd5\u4e4b\u540e\u6267\u884c&quot;);\n    }\n}<\/code><\/pre>\n<p>TestModules2.java<\/p>\n<pre><code class=\"language-java\">package com.iyatt;\n\nimport static org.junit.jupiter.api.Assertions.assertTrue;\nimport org.junit.jupiter.api.Test;\n\npublic class TestModules2\n{\n    Modules2 m2 = new Modules2();\n\n    @Test\n    \/\/ @Disabled \/\/ \u7981\u7528\u6d4b\u8bd5\n    void test_login()\n    {\n        assertTrue(m2.login(&quot;a&quot;, &quot;admin&quot;));\n    }\n}<\/code><\/pre>\n<h2><span class=\"ez-toc-section\" id=\"%E6%B5%8B%E8%AF%95%E5%91%BD%E4%BB%A4\"><\/span>\u6d4b\u8bd5\u547d\u4ee4<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u6d4b\u8bd5\u6240\u6709\u65b9\u6cd5<\/p>\n<pre><code class=\"language-bash\">mvn test<\/code><\/pre>\n<p>\u6d4b\u8bd5\u6307\u5b9a\u7c7b\uff08\u591a\u4e2a\u53ef\u4ee5\u4f7f\u7528\u82f1\u6587\u9017\u53f7\u9694\u5f00\uff0c\u4e0b\u540c\uff09<\/p>\n<pre><code class=\"language-bash\">mvn test -Dtest=&lt;\u6d4b\u8bd5\u7c7b\u540d1&gt;,&lt;\u6d4b\u8bd5\u7c7b\u540d2&gt;<\/code><\/pre>\n<p>\u6d4b\u8bd5\u6b63\u5e38\u5c31\u662f\u7eff\u8272\u7684<\/p>\n<p>\u6d4b\u8bd5 Modules1 \u7c7b<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694875009244.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 999px; --smush-placeholder-aspect-ratio: 999\/831;\" \/><\/p>\n<p>\u6d4b\u8bd5 Modules1 \u7c7b\u4e2d add \u65b9\u6cd5<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694875164290.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 999px; --smush-placeholder-aspect-ratio: 999\/783;\" \/><\/p>\n<p>\u6d4b\u8bd5\u6307\u5b9a\u7c7b\u4e2d\u7684\u6307\u5b9a\u65b9\u6cd5<\/p>\n<pre><code class=\"language-bash\">mvn test -Dtest=&lt;\u6d4b\u8bd5\u7c7b\u540d&gt;#&lt;\u6d4b\u8bd5\u65b9\u6cd5&gt;<\/code><\/pre>\n<p>\u8fd9\u90e8\u5206\u6211\u5728\u6d4b\u8bd5\u65b9\u6cd5\u91cc\u6545\u610f\u5199\u7684\u9519\u7684\uff0c\u8ba9\u6d4b\u8bd5\u7ed3\u679c\u548c\u9884\u671f\u4e0d\u540c<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694875242287.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 316px; --smush-placeholder-aspect-ratio: 316\/59;\" \/><br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694875279953.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 999px; --smush-placeholder-aspect-ratio: 999\/830;\" \/><\/p>\n<h1><span class=\"ez-toc-section\" id=\"%E5%8F%8D%E5%B0%84\"><\/span>\u53cd\u5c04<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>2023.9.16<\/p>\n<p>\u53d1\u5c04\u6307\u5728\u8fd0\u884c\u7684\u65f6\u5019\u5bf9\u4e8e\u4efb\u4f55\u7c7b\u90fd\u53ef\u4ee5\u83b7\u53d6\u5b83\u7684\u5168\u90e8\u6784\u6210\uff0c\u6bd4\u5982\u7c7b\u5bf9\u8c61\uff08Class\uff09\u3001\u6784\u9020\u5668\u5bf9\u8c61\uff08Constructor\uff09\u3001\u6210\u5458\u53d8\u91cf\uff08Field\uff09\u3001\u6210\u5458\u65b9\u6cd5\uff08Method\uff09<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%E8%8E%B7%E5%8F%96%E7%B1%BB%E5%AF%B9%E8%B1%A1\"><\/span>\u83b7\u53d6\u7c7b\u5bf9\u8c61<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>2023.9.17<\/p>\n<p>\u6e90\u7801\u7ed3\u6784<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694881807595.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 505px; --smush-placeholder-aspect-ratio: 505\/137;\" \/><\/p>\n<p>Test.java<\/p>\n<pre><code class=\"language-java\">package com.iyatt;\n\npublic class Test\n{\n\n}<\/code><\/pre>\n<p>Main.java<\/p>\n<pre><code class=\"language-java\">import com.iyatt.Test;\n\nclass Main\n{\n    public static void main(String[] args) throws Exception\n    {\n        \/\/ \/\/ \u83b7\u53d6 Test \u7c7b\u5bf9\u8c61\n\n        \/\/ \u65b9\u6cd5\u4e00 - \u7c7b\u540d\n        Class&lt;?&gt; c1 = Test.class;\n\n        \/\/ \u65b9\u6cd5\u4e8c - \u5b9e\u4f8b\u5bf9\u8c61\n        Test t1 = new Test();\n        Class&lt;?&gt; c2 = t1.getClass();\n\n        \/\/ \u65b9\u6cd5\u4e09 - \u5168\u9650\u5b9a\u540d\n        Class&lt;?&gt; c3 = Class.forName(&quot;com.iyatt.Test&quot;);\n\n        \/\/ \/\/ \u83b7\u53d6\u7b80\u540d\uff08\u7c7b\u540d\uff09\n        System.out.println(&quot;\u7b80\u540d\uff1a&quot; + c1.getSimpleName());\n\n        \/\/ \/\/ \u83b7\u53d6\u5168\u9650\u5b9a\u540d\uff08\u542b\u5305\u8def\u5f84\uff09\n        System.out.println(&quot;\u5168\u9650\u5b9a\u540d\uff1a&quot; + c2.getName());\n    }\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694881990376.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 838px; --smush-placeholder-aspect-ratio: 838\/157;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"%E8%8E%B7%E5%8F%96%E6%9E%84%E9%80%A0%E5%99%A8%E5%AF%B9%E8%B1%A1\"><\/span>\u83b7\u53d6\u6784\u9020\u5668\u5bf9\u8c61<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>2023.9.17<\/p>\n<pre><code class=\"language-java\">import java.lang.reflect.Constructor;\n\nclass Person\n{\n    private String name;\n    private int age;\n\n    private Person()\n    {\n        this.name = null;\n        this.age = -1;\n    }\n\n    public Person(String name, int age)\n    {\n        this.name = name;\n        this.age = age;\n    }\n\n    public void show()\n    {\n        if (name != null)\n        {\n            System.out.print(this.name);\n        }\n        else\n        {\n            System.out.print(&quot;null&quot;);\n        }\n        System.out.print(&quot; &quot;);\n        System.out.println(this.age);\n    }\n}\n\nclass Main\n{\n    static void show_constructors(Constructor&lt;?&gt;[] cs)\n    {\n        System.out.println(&quot;-----------------------------------------&quot;);\n        for (Constructor&lt;?&gt; c : cs)\n        {\n            System.out.println(&quot;\u65b9\u6cd5\u540d\uff1a&quot; + c.getName() + &quot; \u53c2\u6570\u4e2a\u6570\uff1a&quot; + c.getParameterCount()); \/\/ \u83b7\u53d6\u6784\u9020\u5668\u540d\u5b57\n        }\n    }\n\n    static void show_constructor(Constructor&lt;?&gt; c)\n    {\n        System.out.println(&quot;-----------------------------------------&quot;);\n        System.out.println(&quot;\u65b9\u6cd5\u540d\uff1a&quot; + c.getName() + &quot; \u53c2\u6570\u4e2a\u6570\uff1a&quot; + c.getParameterCount()); \/\/ \u83b7\u53d6\u6784\u9020\u5668\u540d\u5b57        \n    }\n\n    public static void main(String[] args) throws Exception\n    {\n        Class&lt;?&gt; p = Person.class;\n\n        \/\/ \u83b7\u53d6\u6240\u6709 public \u6784\u9020\u5668 - \u542b\u7236\u7c7b\n        Constructor&lt;?&gt;[] cs1 = p.getConstructors();\n        show_constructors(cs1);\n\n        \/\/ \u83b7\u53d6\u5168\u90e8\u6784\u9020\u5668\n        Constructor&lt;?&gt;[] cs2 = p.getDeclaredConstructors();\n        show_constructors(cs2);\n\n        \/\/ \u83b7\u53d6\u6307\u5b9a\u7684 public \u6784\u9020\u5668 - \u542b\u7236\u7c7b\n        Constructor&lt;?&gt; c1 = p.getConstructor(String.class, int.class); \/\/ \u901a\u8fc7\u6784\u9020\u65b9\u6cd5\u7684\u53c2\u6570\u53bb\u5339\u914d\n        show_constructor(c1);\n\n        \/\/ \u83b7\u53d6\u6307\u5b9a\u7684\u6784\u9020\u5668\n        Constructor&lt;?&gt; c2 = p.getDeclaredConstructor(String.class, int.class); \/\/ public\n        show_constructor(c2);\n\n        Constructor&lt;?&gt; c3 = p.getDeclaredConstructor(); \/\/ private\n        show_constructor(c3);\n\n        \/\/ \u7528\u6784\u9020\u5668\u5b9e\u4f8b\u5bf9\u8c61\n        c3.setAccessible(true); \/\/ \u6253\u5f00 private \u6784\u9020\u5668\u8bbf\u95ee\u6743\u9650\n        Person p1 = (Person)c3.newInstance(); \/\/ \u65e0\u53c2 \n        p1.show();\n\n        Person p2 = (Person)c2.newInstance(&quot;\u674e\u660e&quot;, 20); \/\/ \u6709\u53c2\n        p2.show();\n    }\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694884238918.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 348px; --smush-placeholder-aspect-ratio: 348\/234;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"%E8%8E%B7%E5%8F%96%E6%88%90%E5%91%98%E5%8F%98%E9%87%8F\"><\/span>\u83b7\u53d6\u6210\u5458\u53d8\u91cf<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>2023.9.17<\/p>\n<pre><code class=\"language-java\">import java.lang.reflect.Field;\n\nclass Person\n{\n    private String name = &quot;\u674e\u660e&quot;;\n    private int age = 20;\n    public static int value1 = 1;\n    public final static String value2;\n    static\n    {\n        value2 = &quot;hello&quot;;\n    }\n}\n\nclass Main\n{\n    static void show_fields(Field[] fields)\n    {\n        System.out.println(&quot;-------------------------------------------------&quot;);\n        for (Field field : fields)\n        {\n            System.out.println(&quot;\u6210\u5458\u540d\uff1a&quot; + field.getName() + &quot; \u6210\u5458\u7c7b\u578b\uff1a&quot; + field.getType());\n        }\n    }\n\n    static void show_field(Field field)\n    {\n        System.out.println(&quot;-------------------------------------------------&quot;);\n        System.out.println(&quot;\u6210\u5458\u540d\uff1a&quot; + field.getName() + &quot; \u6210\u5458\u7c7b\u578b\uff1a&quot; + field.getType());\n    }\n    public static void main(String[] args) throws Exception\n    {\n        Class&lt;?&gt; p = Person.class;\n\n        \/\/ \u83b7\u53d6\u6210\u5458\u53d8\u91cf\n        Field[] fields1 = p.getFields(); \/\/ public - \u542b\u7236\u7c7b\n        show_fields(fields1);\n\n        Field field1 = p.getField(&quot;value2&quot;); \/\/ public\uff0c\u6307\u5b9a - \u542b\u7236\u7c7b\n        show_field(field1);\n\n        Field[] fields2 = p.getDeclaredFields(); \/\/ \u6240\u6709\n        show_fields(fields2);\n\n        Field field2 = p.getDeclaredField(&quot;name&quot;); \/\/ \u6307\u5b9a\n        show_field(field2);\n\n        \/\/ \u5b9e\u4f8b\u5bf9\u8c61\n        Person person = new Person();\n\n        \/\/ \u8d4b\u503c\n        field2.setAccessible(true); \/\/ \u5f00\u542f private \u6210\u5458\uff08name\uff09\u8bbf\u95ee\u6743\u9650 - \u4e0d\u5efa\u8bae\n        System.out.println(field2.get(person));\n        field2.set(person, &quot;\u5c0f\u7ea2&quot;);\n        System.out.println(field2.get(person));\n    }\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694889467501.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 364px; --smush-placeholder-aspect-ratio: 364\/248;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"%E8%8E%B7%E5%8F%96%E6%88%90%E5%91%98%E6%96%B9%E6%B3%95\"><\/span>\u83b7\u53d6\u6210\u5458\u65b9\u6cd5<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>2023.9.17<\/p>\n<pre><code class=\"language-java\">import java.lang.reflect.Method;\n\nclass Test\n{\n    private int test1(String s1, String s2)\n    {\n        return Integer.parseInt(s1) + Integer.parseInt(s2);\n    }\n\n    public void test2()\n    {\n\n    }\n\n    public static void test3(String string1, String string2)\n    {\n        System.out.println(string1 + string2);\n    }\n}\n\nclass Main\n{\n    static void show_method(Method m)\n    {\n        System.out.println(&quot;--------------------------------------------------&quot;);\n        System.out.println(&quot;\u65b9\u6cd5\u540d\uff1a&quot; + m.getName() + &quot; \u53c2\u6570\u4e2a\u6570\uff1a&quot; + m.getParameterCount() + &quot; \u8fd4\u56de\u503c\u7c7b\u578b\uff1a&quot; + m.getReturnType());\n        System.out.println(&quot;--------------------------------------------------&quot;);\n    }\n\n    static void show_methods(Method[] ms)\n    {\n        System.out.println(&quot;--------------------------------------------------&quot;);\n        for (Method m : ms)\n        {\n            System.out.println(&quot;\u65b9\u6cd5\u540d\uff1a&quot; + m.getName() + &quot; \u53c2\u6570\u4e2a\u6570\uff1a&quot; + m.getParameterCount() + &quot; \u8fd4\u56de\u503c\u7c7b\u578b\uff1a&quot; + m.getReturnType());\n        }\n        System.out.println(&quot;--------------------------------------------------&quot;);\n    }\n\n    public static void main(String[] args) throws Exception\n    {\n        Class&lt;?&gt; t = Test.class;\n\n        \/\/ \u83b7\u53d6\u6210\u5458\u65b9\u6cd5\n        Method m1 = t.getMethod(&quot;test2&quot;); \/\/ public\uff0c\u6307\u5b9a - \u542b\u7236\u7c7b\n        show_method(m1);\n\n        Method[] ms1 = t.getMethods(); \/\/ public\uff0c\u6240\u6709 - \u542b\u7236\u7c7b\u7684\n        show_methods(ms1);\n\n        Method  m2 = t.getDeclaredMethod(&quot;test1&quot;, String.class, String.class); \/\/ \u6307\u5b9a\n        show_method(m2);\n        Method m3 = t.getDeclaredMethod(&quot;test3&quot;, String.class, String.class);\n\n        Method[] ms2 = t.getDeclaredMethods(); \/\/ \u6240\u6709\n        show_methods(ms2);\n\n        \/\/ \u8c03\u7528\u65b9\u6cd5\n        Test test = new Test();\n        m2.setAccessible(true); \/\/ \u6253\u5f00 private \u8bbf\u95ee\u6743\u9650\n        Object result = m2.invoke(test, &quot;7&quot;, &quot;3&quot;); \/\/ \u6267\u884c\u5e76\u83b7\u53d6\u8fd4\u56de\u503c\n        System.out.println(result);\n\n        m3.invoke(Test.class, &quot;hello&quot;, &quot; world&quot;); \/\/ \u9759\u6001\u65b9\u6cd5\u8c03\u7528\n    }\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694891253799.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 829px; --smush-placeholder-aspect-ratio: 829\/543;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"%E5%8F%8D%E5%B0%84%E4%BD%BF%E7%94%A8%E7%A4%BA%E4%BE%8B\"><\/span>\u53cd\u5c04\u4f7f\u7528\u793a\u4f8b<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>2023.9.17<\/p>\n<p>\u8fd9\u91cc\u5199\u4e86\u4e00\u4e2a\u4f8b\u5b50\uff0c\u9996\u5148\u96c6\u5408\u7684\u7c7b\u578b\u5b9a\u4e3a\u6574\u5f62\u4e86\uff0c\u4f46\u662f\u56e0\u4e3a Java \u7c7b\u578b\u64e6\u9664\u7684\u539f\u56e0\uff0c\u6700\u7ec8\u5728\u7f16\u8bd1\u4e4b\u540e Integer \u88ab\u64e6\u9664\uff0c\u5f80\u4e0a\u53d8\u4e3a\u4e86 Object\uff0c\u8fd9\u91cc\u4f7f\u7528\u53cd\u5c04\u673a\u5236\u53ef\u4ee5\u5f80\u91cc\u9762\u6dfb\u52a0\u5b57\u7b26\u4e32\u7c7b\u578b\u7684\u6570\u636e\u4e5f\u884c\u3002<\/p>\n<pre><code class=\"language-java\">import java.lang.reflect.Method;\nimport java.util.ArrayList;\nimport java.util.Collection;\n\npublic class Main\n{\n    public static void main(String[] args) throws Exception\n    {\n        Collection&lt;Integer&gt; c = new ArrayList&lt;&gt;();\n        c.add(1);\n        c.add(2);\n        c.add(3);\n\n        Class&lt;?&gt; class_object = c.getClass();\n        Method add_method =  class_object.getDeclaredMethod(&quot;add&quot;, Object.class);\n        add_method.invoke(c, &quot;\u4f60\u597d&quot;);\n        System.out.println(c);\n    }\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694959954655.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 154px; --smush-placeholder-aspect-ratio: 154\/66;\" \/><\/p>\n<h1><span class=\"ez-toc-section\" id=\"%E6%B3%A8%E8%A7%A3\"><\/span>\u6ce8\u89e3<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>2023.9.17<\/p>\n<p>\u6ce8\u91ca\u4eba\u7ed9\u4eba\u770b\u7684\uff0c\u65b9\u4fbf\u7406\u89e3\u4ee3\u7801\uff0c\u6ce8\u89e3\u662f\u7ed9\u7f16\u8bd1\u5668\u548c JVM \u770b\u7684\uff0c\u6839\u636e\u6ce8\u89e3\u5b8c\u6210\u76f8\u5e94\u529f\u80fd\u3002\u6bd4\u5982\u524d\u9762\u5e38\u7528\u7684 <strong>@Override<\/strong> \u7528\u6765\u6807\u8bb0\u65b9\u6cd5\u91cd\u5199\uff0c\u53ef\u4ee5\u5e2e\u52a9\u7f16\u8bd1\u5668\u68c0\u67e5\u662f\u5426\u6b63\u786e\u91cd\u5199\u7236\u7c7b\u65b9\u6cd5\uff0c<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%E8%87%AA%E5%AE%9A%E4%B9%89%E6%B3%A8%E8%A7%A3%E8%AF%AD%E6%B3%95\"><\/span>\u81ea\u5b9a\u4e49\u6ce8\u89e3\u8bed\u6cd5<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>2023.9.17<\/p>\n<pre><code class=\"language-java\">@interface Book1 \/\/ \u81ea\u5b9a\u4e49\u6ce8\u89e3\n{\n\n}\n\n@interface Book2 \/\/ \u81ea\u5b9a\u4e49\u6ce8\u89e3 - \u81ea\u5b9a\u4e49\u5c5e\u6027\n{\n    String name();\n    String[] authors();\n    double price();\n    String publish_place() default &quot;\u4e2d\u56fd&quot;; \/\/ \u9ed8\u8ba4\u503c\n}\n\n@interface Book3 \/\/ \u81ea\u5b9a\u4e49\u6ce8\u89e3 - \u7279\u6b8a\u5c5e\u6027\n{\n    String value(); \/\/ \u5c5e\u6027\u540d\u4e3a value\n}\n\n@interface Book4 \/\/ \u81ea\u5b9a\u4e49\u6ce8\u89e3 - \u7279\u6b8a\u5c5e\u6027\n{\n    String value();\n    int num() default 10; \/\/ \u542b\u6709\u9ed8\u8ba4\u503c\u7684\u5c5e\u6027\n}\n\nclass Test\n{\n    @Book1 \/\/ \u4f7f\u7528\u6ce8\u89e3\n    void test1()\n    {\n\n    }\n\n    @Book2(name=&quot;\u300aJava \u4ece\u5165\u95e8\u5230\u653e\u5f03\u300b&quot;, authors={&quot;IYATT-yx&quot;, &quot;yx&quot;}, price=99.9) \/\/ \u6570\u7ec4\u7528\u5927\u62ec\u53f7\u62ec\u8d77\u6765\uff0c\u9017\u53f7\u5206\u9694\uff0c\u6709\u9ed8\u8ba4\u503c\u7684\u53ef\u4ee5\u4e0d\u5199\n    void test2()\n    {\n\n    }\n\n    @Book3(&quot;\u503c&quot;) \/\/ \u53ea\u6709 value \u5c5e\u6027\u7684\u65f6\u5019\u53ef\u4ee5\u4e0d\u5199 value=\n    @Book4(&quot;\u503c&quot;) \/\/ \u9664\u4e86 value \u5c5e\u6027\u5176\u5b83\u5c5e\u6027\u6709\u9ed8\u8ba4\u503c\u4e5f\u53ef\u4ee5\u7701\u7565\n    void test3()\n    {\n\n    }\n\n    @Book4(value=&quot;\u503c&quot;, num=1) \/\/ \u5982\u679c\u9664\u4e86 value \u5c5e\u6027\u5176\u5b83\u5c5e\u6027\u4e5f\u8981\u8bbe\u503c\u7684\u8fd8\u662f\u8981\u5199 value=\n    void test4()\n    {\n\n    }\n}<\/code><\/pre>\n<h2><span class=\"ez-toc-section\" id=\"%E5%85%83%E6%B3%A8%E8%A7%A3\"><\/span>\u5143\u6ce8\u89e3<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>2023.9.17<\/p>\n<p>\u7528\u5728\u81ea\u5b9a\u4e49\u6ce8\u89e3\u4e0a\u7684\u6ce8\u89e3<\/p>\n<ul>\n<li>@Target \u7528\u6765\u7ea6\u675f\u81ea\u5b9a\u4e49\u6ce8\u89e3\u53ef\u4ee5\u5728\u54ea\u4e9b\u5730\u65b9\u4f7f\u7528\u7684\uff08\u9ed8\u8ba4\u4efb\u610f\u4f4d\u7f6e\uff09<\/li>\n<li>@Retention \u7533\u660e\u81ea\u5b9a\u4e49\u6ce8\u89e3\u7684\u751f\u547d\u5468\u671f<\/li>\n<\/ul>\n<pre><code class=\"language-java\">import java.lang.annotation.ElementType;\nimport java.lang.annotation.Retention;\nimport java.lang.annotation.RetentionPolicy;\nimport java.lang.annotation.Target;\n\n@Target(ElementType.METHOD) \/\/ \u53ea\u80fd\u5728\u65b9\u6cd5\u4e0a\u6ce8\u89e3\n@interface MyTest1\n{\n\n}\n\n@Target({ElementType.METHOD, ElementType.FIELD}) \/\/ \u65e2\u80fd\u5728\u65b9\u6cd5\u6ce8\u89e3\uff0c\u4e5f\u80fd\u5728\u6210\u5458\u53d8\u91cf\u6ce8\u89e3\n@interface MyTest2\n{\n\n}\n\n@Retention(RetentionPolicy.CLASS) \/\/ \u9ed8\u8ba4\u60c5\u51b5\uff0c\u5728\u6e90\u7801\u548c\u5b57\u8282\u7801\u9636\u6bb5\u8d77\u4f5c\u7528\n@interface MyTest3\n{\n\n}\n\n@Retention(RetentionPolicy.SOURCE) \/\/ \u53ea\u5728\u6e90\u7801\u9636\u6bb5\u8d77\u4f5c\u7528\n@interface MyTest4\n{\n\n}\n\n@Retention(RetentionPolicy.RUNTIME) \/\/ \u5728\u6e90\u7801\uff0c\u5b57\u8282\u7801\uff0c\u8fd0\u884c\u671f\u95f4\u90fd\u80fd\u8d77\u4f5c\u7528\n@interface MyTest5\n{\n\n}<\/code><\/pre>\n<h2><span class=\"ez-toc-section\" id=\"%E8%A7%A3%E6%9E%90%E6%B3%A8%E8%A7%A3\"><\/span>\u89e3\u6790\u6ce8\u89e3<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>2023.9.18<\/p>\n<pre><code class=\"language-java\">import java.lang.annotation.ElementType;\nimport java.lang.annotation.Retention;\nimport java.lang.annotation.RetentionPolicy;\nimport java.lang.annotation.Target;\nimport java.lang.reflect.Method;\n\n\/\/ \u5b9a\u4e49\u4e00\u4e2a\u6ce8\u89e3\n@Retention(RetentionPolicy.RUNTIME) \/\/ \u8fd0\u884c\u65f6\u5b58\u5728\n@Target(ElementType.METHOD) \/\/ \u5728\u65b9\u6cd5\u4e0a\u4f7f\u7528\n@interface Description\n{\n    String value();\n}\n\n\/\/ \u5b9a\u4e49\u4e00\u4e2a\u7c7b\u4f7f\u7528\u6ce8\u89e3\nclass Person\n{\n    @Description(&quot;\u6211\u4f1a\u8bf4\u8bdd&quot;)\n    void speak(String s)\n    {\n        System.out.println(s);\n    }\n\n    @Description(&quot;\u6211\u5728\u8dd1\u6b65&quot;)\n    void run(String s)\n    {\n        System.out.println(s);\n    }\n}\n\n\/\/ \u5b9a\u4e49\u4e00\u4e2a\u89e3\u6790\u5668\nclass AnnotationParser\n{\n    static void parser(Object obj) throws Exception\n    {\n        Class&lt;?&gt; c = obj.getClass(); \/\/ \u83b7\u53d6\u4f20\u5165\u5bf9\u8c61\u7684\u7c7b\u5bf9\u8c61\n        Method[] methods = c.getDeclaredMethods(); \/\/ \u83b7\u53d6\u7c7b\u5bf9\u8c61\u7684\u6240\u6709\u65b9\u6cd5\n        for (Method method : methods) \/\/ \u904d\u5386\n        {\n            if (method.isAnnotationPresent(Description.class)) \/\/ \u5224\u65ad\u65b9\u6cd5\u662f\u5426\u6709\u4e0a\u9762\u81ea\u5b9a\u4e49\u7684\u6ce8\u89e3\n            {\n                Description annotation = method.getAnnotation(Description.class); \/\/ \u83b7\u53d6\u6ce8\u89e3\u5b9e\u4f8b\n                String value = annotation.value(); \/\/ \u83b7\u53d6\u6ce8\u89e3\u5c5e\u6027\n                method.invoke(obj, value); \/\/ \u5c06\u6ce8\u89e3\u5c5e\u6027\u503c\u4f5c\u4e3a\u53c2\u6570\u4f20\u9012\u7ed9\u4f7f\u7528\u6ce8\u89e3\u7684\u65b9\u6cd5\n            }\n        }\n    }\n}\n\nclass Main\n{\n    public static void main(String[] args) throws Exception\n    {\n        Person p = new Person();\n        AnnotationParser.parser(p);\n    }\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694968915153.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 115px; --smush-placeholder-aspect-ratio: 115\/77;\" \/><\/p>\n<h3><span class=\"ez-toc-section\" id=\"%E6%A8%A1%E6%8B%9F_junit_%E7%9A%84_Test_%E6%B3%A8%E8%A7%A3\"><\/span>\u6a21\u62df junit \u7684 @Test \u6ce8\u89e3<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>2023.9.18<\/p>\n<pre><code class=\"language-java\">import java.lang.annotation.ElementType;\nimport java.lang.annotation.Retention;\nimport java.lang.annotation.RetentionPolicy;\nimport java.lang.annotation.Target;\nimport java.lang.reflect.Method;\n\n@Retention(RetentionPolicy.RUNTIME)\n@Target(ElementType.METHOD)\n@interface MyTest \/\/ \u6a21\u62df junit \u7684 Test \u65b9\u6cd5\uff0c\u4f7f\u7528\u8be5\u6ce8\u89e3\u7684\u65b9\u6cd5\u624d\u53ef\u4ee5\u6267\u884c\n{\n\n}\n\nclass Demo \/\/ \u4f7f\u7528\u6ce8\u89e3\n{\n    @MyTest\n    void demo1()\n    {\n        System.out.println(&quot;demo1&quot;);\n    }\n\n    void demo2()\n    {\n        System.out.println(&quot;demo2&quot;);\n    }\n\n    void demo3()\n    {\n        System.out.println(&quot;demo3&quot;);\n    }\n\n    @MyTest\n    void demo4()\n    {\n        System.out.println(&quot;demo4&quot;);\n    }\n}\n\nclass AnnotationParser\n{\n    static void parser(Object obj) throws Exception\n    {\n        Class&lt;?&gt; c = obj.getClass(); \/\/ \u83b7\u53d6\u7c7b\u5bf9\u8c61\n        Method[] methods = c.getDeclaredMethods(); \/\/ \u83b7\u53d6\u7c7b\u4e2d\u7684\u65b9\u6cd5\n        for (Method method : methods) \/\/ \u904d\u5386\n        {\n            if (method.isAnnotationPresent(MyTest.class)) \/\/ \u5982\u679c\u4f7f\u7528\u4e86 MyTest \u6ce8\u89e3\n            {\n                method.invoke(obj);\n            }\n        }\n    }\n\n    public static void main(String[] args) throws Exception\n    {\n        parser(new Demo());\n    }\n}<\/code><\/pre>\n<p>\u53ea\u6709\u4f7f\u7528\u4e86 @MyTest \u6ce8\u89e3\u7684\u65b9\u6cd5\u624d\u4f1a\u6267\u884c<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1694969611844.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 119px; --smush-placeholder-aspect-ratio: 119\/77;\" \/><\/p>\n<h1><span class=\"ez-toc-section\" id=\"XML_%E5%A4%84%E7%90%86_%E2%80%93_DOM4J\"><\/span>XML \u5904\u7406 &#8211; DOM4J<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>2023.9.18<\/p>\n<p>\u8fd9\u91cc\u4e5f\u4f7f\u7528 Maven \u914d\u7f6e\uff0c\u4e0b\u9762\u662f\u6211\u7684\u914d\u7f6e<\/p>\n<pre><code class=\"language-xml\">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;\n&lt;project xmlns=&quot;http:\/\/maven.apache.org\/POM\/4.0.0&quot;\n         xmlns:xsi=&quot;http:\/\/www.w3.org\/2001\/XMLSchema-instance&quot;\n         xsi:schemaLocation=&quot;http:\/\/maven.apache.org\/POM\/4.0.0 http:\/\/maven.apache.org\/xsd\/maven-4.0.0.xsd&quot;&gt;\n    &lt;modelVersion&gt;4.0.0&lt;\/modelVersion&gt;\n\n    &lt;groupId&gt;com.iyatt&lt;\/groupId&gt;\n    &lt;artifactId&gt;demo&lt;\/artifactId&gt;\n    &lt;version&gt;1.0-SNAPSHOT&lt;\/version&gt;\n\n    &lt;properties&gt;\n        &lt;maven.compiler.source&gt;1.8&lt;\/maven.compiler.source&gt;\n        &lt;maven.compiler.target&gt;1.8&lt;\/maven.compiler.target&gt;\n        &lt;project.build.sourceEncoding&gt;UTF-8&lt;\/project.build.sourceEncoding&gt;\n        &lt;project.reporting.outputEncoding&gt;UTF-8&lt;\/project.reporting.outputEncoding&gt;\n    &lt;\/properties&gt;\n\n    &lt;dependencies&gt;\n        &lt;dependency&gt;\n            &lt;groupId&gt;org.dom4j&lt;\/groupId&gt;\n            &lt;artifactId&gt;dom4j&lt;\/artifactId&gt;\n            &lt;version&gt;2.1.4&lt;\/version&gt;\n        &lt;\/dependency&gt;\n        &lt;dependency&gt;\n            &lt;groupId&gt;jaxen&lt;\/groupId&gt;\n            &lt;artifactId&gt;jaxen&lt;\/artifactId&gt;\n            &lt;version&gt;2.0.0&lt;\/version&gt;\n        &lt;\/dependency&gt;\n    &lt;\/dependencies&gt;\n&lt;\/project&gt;<\/code><\/pre>\n<p>\u6ce8\uff1a\u6d89\u53ca\u5230 XPath \u7684\u529f\u80fd\u4f9d\u8d56 jaxen \u5e93<\/p>\n<p>DOM4J \u63a5\u53e3\u5173\u7cfb<\/p>\n<pre><code>java.lang.Cloneable\n\u2514\u2500\u2500 org.dom4j.Node\n    \u251c\u2500\u2500 org.dom4j.Attribute\n    \u251c\u2500\u2500 org.dom4j.Branch\n    \u2502   \u251c\u2500\u2500 org.dom4j.Document\n    \u2502   \u2514\u2500\u2500 org.dom4j.Element\n    \u251c\u2500\u2500 org.dom4j.CharacterData\n    \u2502   \u251c\u2500\u2500 org.dom4j.CDATA\n    \u2502   \u251c\u2500\u2500 org.dom4j.Comment\n    \u2502   \u2514\u2500\u2500 org.dom4j.Text\n    \u251c\u2500\u2500 org.dom4j.DocumentType\n    \u251c\u2500\u2500 org.dom4j.Entity\n    \u2514\u2500\u2500 org.dom4j.ProcessingInstruction\norg.dom4j.ElementHandler\norg.dom4j.ElementPath\norg.dom4j.NodeFilter\norg.dom4j.Visitor\norg.dom4j.XPath<\/code><\/pre>\n<table>\n<thead>\n<tr>\n<th>\u63a5\u53e3<\/th>\n<th>\u529f\u80fd<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Attribute<\/td>\n<td>\u5b9a\u4e49\u4e86XML\u7684\u5c5e\u6027\uff0c\u53ef\u4ee5\u83b7\u53d6\u548c\u8bbe\u7f6e\u5c5e\u6027\u7684\u540d\u79f0\u548c\u503c<\/td>\n<\/tr>\n<tr>\n<td>Branch<\/td>\n<td>\u5b9a\u4e49\u4e86\u80fd\u591f\u5305\u542b\u5b50\u8282\u70b9\u7684\u8282\u70b9\uff0c\u5982XML\u5143\u7d20\u548c\u6587\u6863\uff0c\u53ef\u4ee5\u6dfb\u52a0\u3001\u5220\u9664\u548c\u904d\u5386\u5b50\u8282\u70b9<\/td>\n<\/tr>\n<tr>\n<td>CDATA<\/td>\n<td>\u5b9a\u4e49\u4e86XML CDATA\u533a\u57df\uff0c\u53ef\u4ee5\u83b7\u53d6\u548c\u8bbe\u7f6eCDATA\u7684\u6587\u672c\u5185\u5bb9<\/td>\n<\/tr>\n<tr>\n<td>CharacterData<\/td>\n<td>\u662f\u4e00\u4e2a\u6807\u8bc6\u63a5\u53e3\uff0c\u6807\u8bc6\u57fa\u4e8e\u5b57\u7b26\u7684\u8282\u70b9\uff0c\u5982CDATA\uff0cComment, Text<\/td>\n<\/tr>\n<tr>\n<td>Comment<\/td>\n<td>\u5b9a\u4e49\u4e86XML\u6ce8\u91ca\u7684\u884c\u4e3a\uff0c\u53ef\u4ee5\u83b7\u53d6\u548c\u8bbe\u7f6e\u6ce8\u91ca\u7684\u6587\u672c\u5185\u5bb9<\/td>\n<\/tr>\n<tr>\n<td>Document<\/td>\n<td>\u5b9a\u4e49\u4e86XML\u6587\u6863\uff0c\u53ef\u4ee5\u83b7\u53d6\u548c\u8bbe\u7f6e\u6587\u6863\u7684\u6839\u8282\u70b9\u3001\u58f0\u660e\u3001\u7c7b\u578b\u7b49\u4fe1\u606f<\/td>\n<\/tr>\n<tr>\n<td>DocumentType<\/td>\n<td>\u5b9a\u4e49\u4e86XML DOCTYPE\u58f0\u660e\uff0c\u53ef\u4ee5\u83b7\u53d6\u548c\u8bbe\u7f6e\u6587\u6863\u7c7b\u578b\u540d\u79f0\u3001\u516c\u5171\u6807\u8bc6\u7b26\u3001\u7cfb\u7edf\u6807\u8bc6\u7b26\u7b49\u4fe1\u606f<\/td>\n<\/tr>\n<tr>\n<td>Element<\/td>\n<td>\u5b9a\u4e49\u4e86XML\u5143\u7d20\uff0c\u53ef\u4ee5\u6dfb\u52a0\u3001\u5220\u9664\u548c\u904d\u5386\u5143\u7d20\u7684\u5b50\u8282\u70b9\u3001\u5c5e\u6027\u3001\u547d\u540d\u7a7a\u95f4\u7b49\u4fe1\u606f<\/td>\n<\/tr>\n<tr>\n<td>ElementHandler<\/td>\n<td>\u5b9a\u4e49\u4e86\u5143\u7d20\u5bf9\u8c61\u7684\u5904\u7406\u5668\uff0c\u53ef\u4ee5\u5728\u89e3\u6790XML\u6587\u6863\u65f6\u5bf9\u7279\u5b9a\u7684\u5143\u7d20\u8fdb\u884c\u5904\u7406<\/td>\n<\/tr>\n<tr>\n<td>ElementPath<\/td>\n<td>\u88abElementHandler\u4f7f\u7528\uff0c\u7528\u4e8e\u83b7\u53d6\u5f53\u524d\u6b63\u5728\u5904\u7406\u7684\u8def\u5f84\u5c42\u6b21\u4fe1\u606f<\/td>\n<\/tr>\n<tr>\n<td>Entity<\/td>\n<td>\u5b9a\u4e49\u4e86XML\u5b9e\u4f53\uff0c\u53ef\u4ee5\u83b7\u53d6\u548c\u8bbe\u7f6e\u5b9e\u4f53\u7684\u540d\u79f0\u548c\u6587\u672c\u5185\u5bb9<\/td>\n<\/tr>\n<tr>\n<td>Node<\/td>\n<td>\u4e3aDOM4J\u4e2d\u6240\u6709\u7684XML\u8282\u70b9\u5b9a\u4e49\u4e86\u591a\u6001\u884c\u4e3a\uff0c\u53ef\u4ee5\u83b7\u53d6\u548c\u8bbe\u7f6e\u8282\u70b9\u7684\u540d\u79f0\u3001\u7c7b\u578b\u3001\u7236\u8282\u70b9\u3001\u6587\u6863\u7b49\u4fe1\u606f<\/td>\n<\/tr>\n<tr>\n<td>NodeFilter<\/td>\n<td>\u5b9a\u4e49\u4e86\u5728DOM4J\u8282\u70b9\u4e2d\u4ea7\u751f\u7684\u4e00\u4e2a\u8fc7\u6ee4\u5668\u6216\u8c13\u8bcd\u7684\u884c\u4e3a\uff0c\u53ef\u4ee5\u6839\u636e\u4e00\u5b9a\u7684\u6761\u4ef6\u9009\u62e9\u6216\u6392\u9664\u67d0\u4e9b\u8282\u70b9<\/td>\n<\/tr>\n<tr>\n<td>ProcessingInstruction<\/td>\n<td>\u5b9a\u4e49\u4e86XML\u5904\u7406\u6307\u4ee4\uff0c\u53ef\u4ee5\u83b7\u53d6\u548c\u8bbe\u7f6e\u6307\u4ee4\u7684\u76ee\u6807\u548c\u6570\u636e<\/td>\n<\/tr>\n<tr>\n<td>Visitor<\/td>\n<td>\u7528\u4e8e\u5b9e\u73b0\u8bbf\u95ee\u8005\u6a21\u5f0f\uff0c\u53ef\u4ee5\u5bf9DOM4J\u6811\u4e2d\u7684\u5404\u79cd\u8282\u70b9\u8fdb\u884c\u8bbf\u95ee\u548c\u64cd\u4f5c<\/td>\n<\/tr>\n<tr>\n<td>XPath<\/td>\n<td>\u5728\u5206\u6790\u4e00\u4e2a\u5b57\u7b26\u4e32\u540e\u4f1a\u63d0\u4f9b\u4e00\u4e2aXPath\u8868\u8fbe\u5f0f\uff0c\u53ef\u4ee5\u6839\u636eXPath\u8bed\u6cd5\u9009\u62e9\u6216\u4fee\u6539DOM4J\u6811\u4e2d\u7684\u8282\u70b9<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2><span class=\"ez-toc-section\" id=\"%E5%AF%B9%E8%B1%A1%E5%AD%98%E5%82%A8\"><\/span>\u5bf9\u8c61\u5b58\u50a8<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>2023.9.18<\/p>\n<p>\u8fd9\u91cc\u5199\u4e86\u793a\u4f8b\uff0c\u5c06\u5bf9\u8c61\u5b58\u50a8\u4e3a XML \u6587\u4ef6\u4ee5\u53ca\u8bfb\u53d6 XML \u6587\u4ef6\u521b\u5efa\u5bf9\u8c61<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%E5%AD%98%E5%82%A8%E4%B8%BA%E5%B1%9E%E6%80%A7\"><\/span>\u5b58\u50a8\u4e3a\u5c5e\u6027<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<pre><code class=\"language-java\">package com.iyatt;\n\nimport java.io.File;\nimport java.io.FileOutputStream;\nimport java.io.OutputStreamWriter;\nimport java.io.Writer;\nimport java.util.ArrayList;\nimport java.util.List;\nimport org.dom4j.Document;\nimport org.dom4j.DocumentException;\nimport org.dom4j.DocumentHelper;\nimport org.dom4j.Element;\nimport org.dom4j.io.OutputFormat;\nimport org.dom4j.io.SAXReader;\nimport org.dom4j.io.XMLWriter;\n\n\/\/ \u7528\u4e8e\u6f14\u793a\u5b58\u50a8\u4e0e\u8bfb\u53d6\u7684\u5bf9\u8c61\nclass Person\n{\n    private String name;\n    private int age;\n\n    public Person(String name, int age)\n    {\n        this.name = name;\n        this.age = age;\n    }\n\n    public String get_name()\n    {\n        return this.name;\n    }\n\n    public int get_age()\n    {\n        return this.age;\n    }\n\n    @Override\n    public String toString()\n    {\n        return &quot;Person [name=&quot; + this.name + &quot;, age=&quot; + age + &quot;]&quot;;\n    }\n}\n\n\/\/ \u5bf9\u8c61\u5b58\u50a8\u548c\u8bfb\u53d6\u7684\u5b9e\u73b0\nclass XMLUtil\n{\n    public static void save_to_xml(String xml_path, List&lt;Person&gt; persons) throws Exception\n    {\n        Document document = DocumentHelper.createDocument(); \/\/ \u521b\u5efa\u4e00\u4e2a\u7a7a\u7684\u6587\u6863\u5bf9\u8c61\n        Element root = document.addElement(&quot;persons&quot;); \/\/ \u6dfb\u52a0\u6839\u5143\u7d20\n        for (Person person : persons) \/\/ \u904d\u5386\u5bf9\u8c61\uff0c\u4e3a\u5bf9\u8c61\u521b\u5efa\u5b50\u5143\u7d20\u5e76\u8bbe\u7f6e\u5c5e\u6027\n        {\n            Element person_element = root.addElement(&quot;person&quot;);\n            person_element.addAttribute(&quot;name&quot;, person.get_name());\n            person_element.addAttribute(&quot;age&quot;, String.valueOf(person.get_age()));\n        }\n\n        try (Writer w = new OutputStreamWriter(new FileOutputStream(xml_path), &quot;UTF-8&quot;))\n        {\n            \/\/ \u8bbe\u7f6e\u8f93\u51fa\u683c\u5f0f\n            OutputFormat format = OutputFormat.createPrettyPrint();\n            format.setNewlines(true); \/\/ \u6362\u884c\n            format.setIndentSize(4); \/\/ \u8bbe\u7f6e\u7f29\u8fdb\u5927\u5c0f\n            format.setEncoding(&quot;UTF-8&quot;); \/\/ \u8bbe\u7f6e\u7f16\u7801\n\n            XMLWriter writer = new XMLWriter(w, format); \/\/ \u8f93\u51fa XML \u6587\u4ef6\n            writer.write(document); \/\/ \u5c06\u6587\u6863\u5199\u5165\u6587\u4ef6\n        }\n    }\n\n    public static List&lt;Person&gt; read_from_xml(String xml_path) throws DocumentException\n    {\n        List&lt;Person&gt; persons = new ArrayList&lt;&gt;();\n        SAXReader reader = new SAXReader(); \/\/ \u7528\u4e8e\u89e3\u6790 XML \u6587\u4ef6\n        reader.setEncoding(&quot;UTF-8&quot;); \/\/ \u6307\u5b9a\u7f16\u7801\n        Document document = reader.read(new File(xml_path)); \/\/ \u8bfb\u53d6 XML \u6587\u4ef6\u5f97\u5230\u6587\u6863\u5bf9\u8c61\n        Element root = document.getRootElement(); \/\/ \u83b7\u53d6\u6839\u5143\u7d20\n        List&lt;Element&gt; person_elements = root.elements(); \/\/ \u83b7\u53d6\u6240\u6709\u5b50\u5143\u7d20\n        for (Element person_element : person_elements) \/\/ \u904d\u5386\u5b50\u5143\u7d20\u521b\u5efa\u5bf9\u5e94\u5bf9\u8c61\n        {\n            Person person = new Person(person_element.attributeValue(&quot;name&quot;),\n                                    Integer.parseInt(person_element.attributeValue(&quot;age&quot;)));\n            persons.add(person);\n        }\n        return persons;\n    }\n}\n\n\/\/ \u4f7f\u7528\u793a\u4f8b\nclass Main\n{\n    public static void main(String[] args) throws Exception\n    {\n        Person p1 = new Person(&quot;\u674e\u660e&quot;, 20);\n        Person p2 = new Person(&quot;\u9648\u5f3a&quot;, 23);\n        Person p3 = new Person(&quot;\u8c2d\u529b&quot;, 19);\n        List&lt;Person&gt; ps = new ArrayList&lt;&gt;();\n        ps.add(p1);\n        ps.add(p2);\n        ps.add(p3);\n\n        XMLUtil.save_to_xml(&quot;obj.xml&quot;, ps); \/\/ \u5c06\u5bf9\u8c61\u4fdd\u5b58\u4e3a XML \u6587\u4ef6\n\n        List&lt;Person&gt; ps1 = XMLUtil.read_from_xml(&quot;obj.xml&quot;); \/\/ \u4ece XML \u6587\u4ef6\u8bfb\u53d6\u521b\u5efa\u5bf9\u8c61\n        for (Person p : ps1)\n        {\n            System.out.println(p);\n        }\n    }\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1695028338114.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 223px; --smush-placeholder-aspect-ratio: 223\/82;\" \/><\/p>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1695028344788.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 339px; --smush-placeholder-aspect-ratio: 339\/186;\" \/><\/p>\n<h3><span class=\"ez-toc-section\" id=\"%E5%AD%98%E5%82%A8%E4%B8%BA%E5%80%BC\"><\/span>\u5b58\u50a8\u4e3a\u503c<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<pre><code class=\"language-java\">package com.iyatt;\n\nimport java.io.File;\nimport java.io.FileOutputStream;\nimport java.io.OutputStreamWriter;\nimport java.io.Writer;\nimport java.util.ArrayList;\nimport java.util.List;\nimport org.dom4j.Document;\nimport org.dom4j.DocumentException;\nimport org.dom4j.DocumentHelper;\nimport org.dom4j.Element;\nimport org.dom4j.io.OutputFormat;\nimport org.dom4j.io.SAXReader;\nimport org.dom4j.io.XMLWriter;\n\n\/\/ \u7528\u4e8e\u6f14\u793a\u5b58\u50a8\u4e0e\u8bfb\u53d6\u7684\u5bf9\u8c61\nclass Person\n{\n    private String name;\n    private int age;\n\n    public Person(String name, int age)\n    {\n        this.name = name;\n        this.age = age;\n    }\n\n    public String get_name()\n    {\n        return this.name;\n    }\n\n    public int get_age()\n    {\n        return this.age;\n    }\n\n    @Override\n    public String toString()\n    {\n        return &quot;Person [name=&quot; + this.name + &quot;, age=&quot; + age + &quot;]&quot;;\n    }\n}\n\n\/\/ \u5bf9\u8c61\u5b58\u50a8\u548c\u8bfb\u53d6\u7684\u5b9e\u73b0\nclass XMLUtil\n{\n    public static void save_to_xml(String xml_path, List&lt;Person&gt; persons) throws Exception\n    {\n        Document document = DocumentHelper.createDocument(); \/\/ \u521b\u5efa\u4e00\u4e2a\u7a7a\u7684\u6587\u6863\u5bf9\u8c61\n        Element root = document.addElement(&quot;persons&quot;); \/\/ \u6dfb\u52a0\u6839\u5143\u7d20\n        for (Person person : persons) \/\/ \u904d\u5386\u5bf9\u8c61\uff0c\u4e3a\u5bf9\u8c61\u521b\u5efa\u5b50\u5143\u7d20\u5e76\u8bbe\u7f6e\u5c5e\u6027\n        {\n            Element person_element = root.addElement(&quot;person&quot;);\n            person_element.addElement(&quot;name&quot;).setText(person.get_name());\n            person_element.addElement(&quot;age&quot;).setText(String.valueOf(person.get_age()));\n        }\n\n        try (Writer w = new OutputStreamWriter(new FileOutputStream(xml_path), &quot;UTF-8&quot;))\n        {\n            \/\/ \u8bbe\u7f6e\u8f93\u51fa\u683c\u5f0f\n            OutputFormat format = OutputFormat.createPrettyPrint();\n            format.setNewlines(true); \/\/ \u6362\u884c\n            format.setIndentSize(4); \/\/ \u8bbe\u7f6e\u7f29\u8fdb\u5927\u5c0f\n            format.setEncoding(&quot;UTF-8&quot;); \/\/ \u8bbe\u7f6e\u7f16\u7801\n\n            XMLWriter writer = new XMLWriter(w, format); \/\/ \u8f93\u51fa XML \u6587\u4ef6\n            writer.write(document); \/\/ \u5c06\u6587\u6863\u5199\u5165\u6587\u4ef6\n        }\n    }\n\n    public static List&lt;Person&gt; read_from_xml(String xml_path) throws DocumentException\n    {\n        List&lt;Person&gt; persons = new ArrayList&lt;&gt;();\n        SAXReader reader = new SAXReader(); \/\/ \u7528\u4e8e\u89e3\u6790 XML \u6587\u4ef6\n        reader.setEncoding(&quot;UTF-8&quot;); \/\/ \u6307\u5b9a\u7f16\u7801\n        Document document = reader.read(new File(xml_path)); \/\/ \u8bfb\u53d6 XML \u6587\u4ef6\u5f97\u5230\u6587\u6863\u5bf9\u8c61\n        Element root = document.getRootElement(); \/\/ \u83b7\u53d6\u6839\u5143\u7d20\n        List&lt;Element&gt; person_elements = root.elements(); \/\/ \u83b7\u53d6\u6240\u6709\u5b50\u5143\u7d20\n        for (Element person_element : person_elements) \/\/ \u904d\u5386\u5b50\u5143\u7d20\u521b\u5efa\u5bf9\u5e94\u5bf9\u8c61\n        {\n            Person person = new Person(person_element.elementText(&quot;name&quot;),\n                                    Integer.parseInt(person_element.elementText(&quot;age&quot;)));\n            persons.add(person);\n        }\n        return persons;\n    }\n}\n\n\/\/ \u4f7f\u7528\u793a\u4f8b\nclass Main\n{\n    public static void main(String[] args) throws Exception\n    {\n        Person p1 = new Person(&quot;\u674e\u660e&quot;, 20);\n        Person p2 = new Person(&quot;\u9648\u5f3a&quot;, 23);\n        Person p3 = new Person(&quot;\u8c2d\u529b&quot;, 19);\n        List&lt;Person&gt; ps = new ArrayList&lt;&gt;();\n        ps.add(p1);\n        ps.add(p2);\n        ps.add(p3);\n\n        XMLUtil.save_to_xml(&quot;obj.xml&quot;, ps); \/\/ \u5c06\u5bf9\u8c61\u4fdd\u5b58\u4e3a XML \u6587\u4ef6\n\n        List&lt;Person&gt; ps1 = XMLUtil.read_from_xml(&quot;obj.xml&quot;); \/\/ \u4ece XML \u6587\u4ef6\u8bfb\u53d6\u521b\u5efa\u5bf9\u8c61\n        for (Person p : ps1)\n        {\n            System.out.println(p);\n        }\n    }\n}<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2023\/09\/image-1695037323548.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 356px; --smush-placeholder-aspect-ratio: 356\/325;\" \/><\/p>\n<h1><span class=\"ez-toc-section\" id=\"try-catch-resource_%E4%BD%BF%E7%94%A8\"><\/span>try-catch-resource \u4f7f\u7528<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>2023.9.18<\/p>\n<p>\u524d\u9762\u5728\u9762\u5bf9\u8d44\u6e90\u91ca\u653e\u7684\u95ee\u9898\u4e0a\u4e00\u76f4\u90fd\u662f\u4f7f\u7528\u7684 try-catch-finally\uff0c\u8fd9\u4e2a\u8bed\u53e5\u4e0d\u7ba1\u6210\u529f\u4e0e\u5426\u90fd\u4f1a\u6267\u884c finall \u4e2d\u7684\u8bed\u53e5\uff0c\u7136\u540e\u5728\u91ca\u653e\u8d44\u6e90 close \u7684\u5730\u65b9\u53c8\u8981\u5957\u5a03\u6355\u6349\u5f02\u5e38\uff0c\u5199\u8d77\u6765\u5c31\u633a\u590d\u6742\u7684\u3002\u5728 Java 7 \u7684\u65f6\u5019\u5c31\u5f15\u5165\u4e86 try-catch-resource\uff0c\u5728\u5b9e\u73b0\u4e86 AutoCloseable \u63a5\u53e3\u6216\u8005 Closeable \u63a5\u53e3\u7684\u8d44\u6e90\u7c7b\u4e2d\u53ef\u4ee5\u4f7f\u7528\uff0c\u5728 try \u540e\u52a0\u5165 ()\uff0c\u62ec\u53f7\u4e2d\u95f4\u653e\u6253\u5f00\u8d44\u6e90\u7684\u8bed\u53e5\uff0c\u540e\u7eed\u5c31\u4e0d\u7528\u624b\u52a8\u5904\u7406\u8d44\u6e90\u91ca\u653e\u3002<\/p>\n<pre><code class=\"language-java\">import java.io.File;\nimport java.io.FileWriter;\n\nclass test\n{\n    public static void main(String[] args) throws Exception\n    {\n        \/\/ \u5199\u5b8c\u6587\u4ef6\u4f1a\u81ea\u52a8\u5173\u95ed\n        try (FileWriter fw = new FileWriter(new File(&quot;test.txt&quot;)))\n        {\n            fw.write(&quot;hello world&quot;);\n        }\n    }\n}<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u524d\u8a00 \u4eca\u5929\uff082023.8.31\uff09\u6709\u4e2a\u5b66\u957f\u95ee\u6211\u63a5\u4e0d\u63a5\u4e00\u4e2a\u5355\u5b50\uff0c\u5948\u4f55\u6ca1\u5b66\u8fc7 Java\uff0c\u672c\u6765\u4e0d\u6253\u7b97\u63a5\u7684\u3002\u53ea\u662f\u62a5\u916c\u611f\u89c9 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"zakra_page_container_layout":"customizer","zakra_page_sidebar_layout":"customizer","zakra_remove_content_margin":false,"zakra_sidebar":"customizer","zakra_transparent_header":"customizer","zakra_logo":0,"zakra_main_header_style":"default","zakra_menu_item_color":"","zakra_menu_item_hover_color":"","zakra_menu_item_active_color":"","zakra_menu_active_style":"","zakra_page_header":true,"_lmt_disableupdate":"no","_lmt_disable":"no","footnotes":""},"categories":[1,584],"tags":[],"class_list":["post-11305","post","type-post","status-publish","format-standard","hentry","category-all","category-java-kotlin"],"modified_by":"IYATT-yx","_links":{"self":[{"href":"https:\/\/blog.iyatt.com\/index.php?rest_route=\/wp\/v2\/posts\/11305","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.iyatt.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.iyatt.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.iyatt.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.iyatt.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=11305"}],"version-history":[{"count":0,"href":"https:\/\/blog.iyatt.com\/index.php?rest_route=\/wp\/v2\/posts\/11305\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.iyatt.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=11305"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.iyatt.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=11305"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.iyatt.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=11305"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}