[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"site-config":3,"primary-menu":20,"tags-cloud":109,"tagposts-java-4":293},{"config":4,"socialLinks":19},{"title":5,"subtitle":6,"logoUrl":7,"faviconUrl":8,"footerText":9,"beianIcp":10,"beianPublicSecurity":9,"seoDescription":11,"seoKeywords":12,"homepageTitle":13,"homepageSubtitle":14,"analyticsHeadCode":15,"planetQrcodeUrl":16,"planetIntroHtml":9,"planetCtaText":17,"updatedAt":18},"编码世界","用编码改变世界","https:\u002F\u002Fcdn.mashangan.com\u002Fupload\u002F2026\u002F09\u002F2f277021172f43f6bb34e1c115760b7f.png","https:\u002F\u002Fcdn.mashangan.com\u002Fupload\u002F2026\u002F09\u002Fdcbad022e68c4a729a5dc4997a9bba8a.png","","苏ICP备2026073884号","编码世界（mashangan.com）是面向 Java 后端与 Go 语言的系统化编程教程站：提供\nMyBatis Plus、Lombok、Java 8、IDEA、Docker 等原创图文教程，以及 JVM、并发、\nSpring、MySQL、Redis、消息队列、计算机网络等大厂面试八股题库，另有可落地的\n项目实战系列，帮你从入门到精通。","编码世界,Java教程,Go语言教程,Docker教程,MyBatis Plus教程,Lombok教程, Java 8新特性,IDEA教程,Java面试题,八股文,JVM面试题,Java并发面试题, MySQL面试题,Redis面试题,Spring面试题,消息队列面试题,高并发,分库分表, Netty面试题,计算机网络面试题,AI Agent,RAG,程序员学习路线","Java全栈系统化编程教程","覆盖 MyBatis Plus、Lombok、Java 8、IDEA、Go、Docker 等原创图文教程，配套大厂面试八股题库，从入门到精通，持续更新","\u003Cscript>\nvar _hmt = _hmt || [];\n(function() {\n  var hm = document.createElement(\"script\");\n  hm.src = \"https:\u002F\u002Fhm.baidu.com\u002Fhm.js?f00af7e56d956c02e11efed4131379b0\";\n  var s = document.getElementsByTagName(\"script\")[0]; \n  s.parentNode.insertBefore(hm, s);\n})();\n\u003C\u002Fscript>\n","https:\u002F\u002Fcdn.mashangan.com\u002Fupload\u002F2026\u002F09\u002Fc1a8f5de46584d3eb0bc762c180a5db9.png","扫码加入知识星球","2026-10-05T13:09:51.904487Z",[],{"metadata":21,"spec":24,"menuItems":35},{"name":22,"creationTimestamp":23},"primary","2026-09-12T06:13:55.024154Z",{"displayName":25,"menuItems":26},"主菜单",[27,28,29,30,31,32,33,34],"88c3f10b-321c-4092-86a8-70db00251b74","menu-item-izrtmxer","c4c814d1-0c2c-456b-8c96-4864965fee94","menu-item-tags","menu-item-column","menu-item-tools","menu-item-zsxq","menu-item-ocrxlczu",[36,45,55,64,73,82,91,100],{"displayName":37,"metadata":38,"spec":40,"status":43,"children":44},"首页",{"name":27,"creationTimestamp":39},"2026-09-12T06:13:54.422830Z",{"displayName":37,"href":41,"priority":42,"menuName":22},"\u002F",0,{"displayName":37,"href":41},[],{"displayName":46,"metadata":47,"spec":49,"status":53,"children":54},"Java面试八股",{"name":28,"creationTimestamp":48},"2026-09-13T09:42:02.854891Z",{"displayName":46,"href":50,"target":51,"priority":52,"menuName":22},"\u002Fjava-interview","_self",1,{"displayName":46,"href":50},[],{"displayName":56,"metadata":57,"spec":59,"status":62,"children":63},"文章",{"name":29,"creationTimestamp":58},"2026-09-12T06:13:54.457307Z",{"displayName":56,"href":60,"priority":61,"menuName":22},"\u002Farchives",2,{"displayName":56,"href":60},[],{"displayName":65,"metadata":66,"spec":68,"status":71,"children":72},"标签",{"name":30,"creationTimestamp":67},"2026-10-07T00:42:42.754151Z",{"displayName":65,"href":69,"priority":70,"menuName":22},"\u002Ftags",3,{"displayName":65,"href":69},[],{"displayName":74,"metadata":75,"spec":77,"status":80,"children":81},"项目实战",{"name":31,"creationTimestamp":76},"2026-09-14T00:35:08.138170Z",{"displayName":74,"href":78,"target":51,"priority":79,"menuName":22},"\u002Fcolumn",4,{"displayName":74,"href":78},[],{"displayName":83,"metadata":84,"spec":86,"status":89,"children":90},"在线工具",{"name":32,"creationTimestamp":85},"2026-09-14T00:35:08.171474Z",{"displayName":83,"href":87,"target":51,"priority":88,"menuName":22},"\u002Ftools",5,{"displayName":83,"href":87},[],{"displayName":92,"metadata":93,"spec":95,"status":98,"children":99},"知识星球",{"name":33,"creationTimestamp":94},"2026-09-14T00:35:08.199145Z",{"displayName":92,"href":96,"target":51,"priority":97,"menuName":22},"\u002Fzsxq",6,{"displayName":92,"href":96},[],{"displayName":101,"metadata":102,"spec":104,"status":107,"children":108},"特价云服务",{"name":34,"creationTimestamp":103},"2026-09-25T15:30:59.201614Z",{"displayName":101,"href":105,"target":51,"priority":106,"menuName":22},"\u002Fserver",7,{"displayName":101,"href":105},[],[110,117,124,131,138,145,152,159,166,172,178,184,191,197,203,209,215,221,227,233,239,245,251,257,263,269,275,281,287],{"metadata":111,"spec":113,"postCount":116},{"name":112},"tag-04980744",{"displayName":114,"slug":115},"面试题","interview",118,{"metadata":118,"spec":120,"postCount":123},{"name":119},"tag-93f725a0",{"displayName":121,"slug":122},"Java","java",68,{"metadata":125,"spec":127,"postCount":130},{"name":126},"tag-05b6053c",{"displayName":128,"slug":129},"Docker","docker",43,{"metadata":132,"spec":134,"postCount":137},{"name":133},"tag-1cba77c3",{"displayName":135,"slug":136},"IDEA","idea",32,{"metadata":139,"spec":141,"postCount":144},{"name":140},"tag-116a0109",{"displayName":142,"slug":143},"数字孪生","digital-twin",19,{"metadata":146,"spec":148,"postCount":151},{"name":147},"tag-a2fb95ac",{"displayName":149,"slug":150},"MyBatis Plus","mybatis-plus",18,{"metadata":153,"spec":155,"postCount":158},{"name":154},"tag-cc6220f9",{"displayName":156,"slug":157},"Lombok","lombok",15,{"metadata":160,"spec":162,"postCount":165},{"name":161},"tag-2a2d595e",{"displayName":163,"slug":164},"Spring","spring",10,{"metadata":167,"spec":169,"postCount":165},{"name":168},"tag-1d8a4975",{"displayName":170,"slug":171},"消息队列","mq",{"metadata":173,"spec":175,"postCount":165},{"name":174},"tag-17245299",{"displayName":176,"slug":177},"并发","concurrency",{"metadata":179,"spec":181,"postCount":165},{"name":180},"tag-4921c0e2",{"displayName":182,"slug":183},"AI","ai",{"metadata":185,"spec":187,"postCount":190},{"name":186},"tag-53bb7900",{"displayName":188,"slug":189},"卫星仿真","satellite",9,{"metadata":192,"spec":194,"postCount":88},{"name":193},"tag-62377bcf",{"displayName":195,"slug":196},"Spring Cloud","spring-cloud",{"metadata":198,"spec":200,"postCount":88},{"name":199},"tag-81c3b080",{"displayName":201,"slug":202},"MySQL","mysql",{"metadata":204,"spec":206,"postCount":88},{"name":205},"tag-86a1b907",{"displayName":207,"slug":208},"Redis","redis",{"metadata":210,"spec":212,"postCount":88},{"name":211},"tag-18897dcf",{"displayName":213,"slug":214},"Elasticsearch","elasticsearch",{"metadata":216,"spec":218,"postCount":88},{"name":217},"tag-6ce80d8e",{"displayName":219,"slug":220},"JVM","jvm",{"metadata":222,"spec":224,"postCount":88},{"name":223},"tag-aa4e1b8c",{"displayName":225,"slug":226},"Dubbo","dubbo",{"metadata":228,"spec":230,"postCount":88},{"name":229},"tag-9e30c249",{"displayName":231,"slug":232},"Netty","netty",{"metadata":234,"spec":236,"postCount":88},{"name":235},"tag-2199ace5",{"displayName":237,"slug":238},"ZooKeeper","zookeeper",{"metadata":240,"spec":242,"postCount":88},{"name":241},"tag-7c298a76",{"displayName":243,"slug":244},"设计模式","design-pattern",{"metadata":246,"spec":248,"postCount":88},{"name":247},"tag-6cf6cea9",{"displayName":249,"slug":250},"高可用","high-availability",{"metadata":252,"spec":254,"postCount":88},{"name":253},"tag-918786ab",{"displayName":255,"slug":256},"分库分表","sharding",{"metadata":258,"spec":260,"postCount":88},{"name":259},"tag-91e02cd2",{"displayName":261,"slug":262},"计算机网络","network",{"metadata":264,"spec":266,"postCount":88},{"name":265},"tag-dd302f94",{"displayName":267,"slug":268},"操作系统","os",{"metadata":270,"spec":272,"postCount":88},{"name":271},"tag-1b359d87",{"displayName":273,"slug":274},"Tomcat","tomcat",{"metadata":276,"spec":278,"postCount":79},{"name":277},"tag-f0d71b77",{"displayName":279,"slug":280},"MyBatis","mybatis",{"metadata":282,"spec":284,"postCount":52},{"name":283},"tag-a118a308",{"displayName":285,"slug":286},"时序数据库","tsdb",{"metadata":288,"spec":290,"postCount":42},{"name":289},"tag-34d1f91f",{"displayName":291,"slug":292},"Go","go",{"page":79,"size":294,"total":123,"items":295,"first":305,"last":311,"hasNext":305,"hasPrevious":311,"totalPages":79},20,[296,332,357,382,407,431,456,481],{"metadata":297,"spec":300,"status":312,"categories":316,"tags":328},{"name":298,"creationTimestamp":299},"post-java8-lambda-access-variables-970cbd1d","2026-09-12T08:29:35.499263Z",{"title":301,"slug":302,"cover":9,"excerpt":303,"publishTime":306,"categories":307,"tags":309,"priority":42,"pinned":305,"deleted":305,"visible":310,"allowComment":311},"Java 1.8 Lambda 访问局部变量","java8-lambda-access-variables",{"raw":304,"autoGenerate":305},"在 Lambda 表达式中，我们可以访问外部的 final 类型变量，如下面的示例代码...",false,"2026-09-12T08:29:35.598483Z",[308],"java8",[119],"PUBLIC",true,{"permalink":313,"excerpt":304,"lastModifyTime":314,"phase":315},"\u002Farchives\u002Fjava8-lambda-access-variables","2026-09-12T08:29:35.502061Z","PUBLISHED",[317],{"metadata":318,"spec":322,"status":326,"postCount":294},{"name":308,"creationTimestamp":319,"annotations":320},"2026-09-12T08:22:34.154837Z",{"tutorial.halo.run\u002Fstatus":321},"updating",{"displayName":323,"slug":308,"cover":324,"description":325,"priority":79,"hideFromList":305,"preventParentPostCascadeQuery":305},"Java 8 新特性教程","https:\u002F\u002Fcdn.mashangan.com\u002Fupload\u002Ftutorial-cover-java8.png","Java 8 新特性教程：Lambda、Stream API、Optional、新日期时间 API 与函数式编程。",{"permalink":327,"postCount":294,"visiblePostCount":294},"\u002Fcategories\u002Fjava8",[329],{"metadata":330,"spec":331},{"name":119},{"displayName":121,"slug":122},{"metadata":333,"spec":336,"status":344,"categories":347,"tags":353},{"name":334,"creationTimestamp":335},"post-java8-lambda-access-member-var-and-static-var-fb2278de","2026-09-12T08:29:34.640284Z",{"title":337,"slug":338,"cover":9,"excerpt":339,"publishTime":341,"categories":342,"tags":343,"priority":42,"pinned":305,"deleted":305,"visible":310,"allowComment":311},"Java 1.8 Lambda 访问成员变量和静态变量","java8-lambda-access-member-var-and-static-var",{"raw":340,"autoGenerate":305},"上一章节中，了解了如何在 Lambda 表达式中访问局部变量。与局部变量相比，在 Lambda 表达式中对成员变量和静态变量拥有读写权限...","2026-09-12T08:29:34.692814Z",[308],[119],{"permalink":345,"excerpt":340,"lastModifyTime":346,"phase":315},"\u002Farchives\u002Fjava8-lambda-access-member-var-and-static-var","2026-09-12T08:29:34.643687Z",[348],{"metadata":349,"spec":351,"status":352,"postCount":294},{"name":308,"creationTimestamp":319,"annotations":350},{"tutorial.halo.run\u002Fstatus":321},{"displayName":323,"slug":308,"cover":324,"description":325,"priority":79,"hideFromList":305,"preventParentPostCascadeQuery":305},{"permalink":327,"postCount":294,"visiblePostCount":294},[354],{"metadata":355,"spec":356},{"name":119},{"displayName":121,"slug":122},{"metadata":358,"spec":361,"status":369,"categories":372,"tags":378},{"name":359,"creationTimestamp":360},"post-java8-lambda-access-interface-default-method-2dad0242","2026-09-12T08:29:34.031524Z",{"title":362,"slug":363,"cover":9,"excerpt":364,"publishTime":366,"categories":367,"tags":368,"priority":42,"pinned":305,"deleted":305,"visible":310,"allowComment":311},"Java 1.8 Lambda 访问接口的默认方法","java8-lambda-access-interface-default-method",{"raw":365,"autoGenerate":305},"本小节中，我们将学习 Java 1.8 中如何在 Lambda 中访问接口的默认方法...","2026-09-12T08:29:34.082356Z",[308],[119],{"permalink":370,"excerpt":365,"lastModifyTime":371,"phase":315},"\u002Farchives\u002Fjava8-lambda-access-interface-default-method","2026-09-12T08:29:34.034351Z",[373],{"metadata":374,"spec":376,"status":377,"postCount":294},{"name":308,"creationTimestamp":319,"annotations":375},{"tutorial.halo.run\u002Fstatus":321},{"displayName":323,"slug":308,"cover":324,"description":325,"priority":79,"hideFromList":305,"preventParentPostCascadeQuery":305},{"permalink":327,"postCount":294,"visiblePostCount":294},[379],{"metadata":380,"spec":381},{"name":119},{"displayName":121,"slug":122},{"metadata":383,"spec":386,"status":394,"categories":397,"tags":403},{"name":384,"creationTimestamp":385},"post-java8-function-63dfbe63","2026-09-12T08:29:33.411024Z",{"title":387,"slug":388,"cover":9,"excerpt":389,"publishTime":391,"categories":392,"tags":393,"priority":42,"pinned":305,"deleted":305,"visible":310,"allowComment":311},"Java 1.8 Function 函数式接口","java8-function",{"raw":390,"autoGenerate":305},"当 Java 1.8 引入函数式接口时，Function 成为了其中一个重要的接口。Function 接口代表一个接受一个参数并且产生结果的操作。它在 Java 中被广泛用于函数式编程以及 Stream API 中的转换操作。","2026-09-12T08:29:33.468397Z",[308],[119],{"permalink":395,"excerpt":390,"lastModifyTime":396,"phase":315},"\u002Farchives\u002Fjava8-function","2026-09-30T21:46:10.902063Z",[398],{"metadata":399,"spec":401,"status":402,"postCount":294},{"name":308,"creationTimestamp":319,"annotations":400},{"tutorial.halo.run\u002Fstatus":321},{"displayName":323,"slug":308,"cover":324,"description":325,"priority":79,"hideFromList":305,"preventParentPostCascadeQuery":305},{"permalink":327,"postCount":294,"visiblePostCount":294},[404],{"metadata":405,"spec":406},{"name":119},{"displayName":121,"slug":122},{"metadata":408,"spec":411,"status":419,"categories":421,"tags":427},{"name":409,"creationTimestamp":410},"post-java8-consumer-f342cdbd","2026-09-12T08:29:32.773097Z",{"title":412,"slug":413,"cover":9,"excerpt":414,"publishTime":416,"categories":417,"tags":418,"priority":42,"pinned":305,"deleted":305,"visible":310,"allowComment":311},"Java 1.8 Consumer 消费者函数式接口","java8-consumer",{"raw":415,"autoGenerate":305},"Consumer 接口代表一个接受一个参数并且不返回结果的操作。它在 Java 中被广泛用于遍历集合或执行消费型操作。","2026-09-12T08:29:32.831051Z",[308],[119],{"permalink":420,"excerpt":415,"lastModifyTime":396,"phase":315},"\u002Farchives\u002Fjava8-consumer",[422],{"metadata":423,"spec":425,"status":426,"postCount":294},{"name":308,"creationTimestamp":319,"annotations":424},{"tutorial.halo.run\u002Fstatus":321},{"displayName":323,"slug":308,"cover":324,"description":325,"priority":79,"hideFromList":305,"preventParentPostCascadeQuery":305},{"permalink":327,"postCount":294,"visiblePostCount":294},[428],{"metadata":429,"spec":430},{"name":119},{"displayName":121,"slug":122},{"metadata":432,"spec":435,"status":443,"categories":446,"tags":452},{"name":433,"creationTimestamp":434},"post-java8-comparator-7c6e8711","2026-09-12T08:29:32.075441Z",{"title":436,"slug":437,"excerpt":438,"publishTime":440,"categories":441,"tags":442,"priority":42,"pinned":305,"deleted":305,"visible":310,"allowComment":311},"Java 1.8 Comparator 比较函数式接口","java8-comparator",{"raw":439,"autoGenerate":305},"Comparator 接口常用于比较操作，它在集合排序、搜索、自定义排序等场景中提供了灵活的比较策略。","2026-09-12T08:29:32.168878Z",[308],[119],{"permalink":444,"excerpt":439,"lastModifyTime":445,"phase":315},"\u002Farchives\u002Fjava8-comparator","2026-09-30T16:21:13.650114Z",[447],{"metadata":448,"spec":450,"status":451,"postCount":294},{"name":308,"creationTimestamp":319,"annotations":449},{"tutorial.halo.run\u002Fstatus":321},{"displayName":323,"slug":308,"cover":324,"description":325,"priority":79,"hideFromList":305,"preventParentPostCascadeQuery":305},{"permalink":327,"postCount":294,"visiblePostCount":294},[453],{"metadata":454,"spec":455},{"name":119},{"displayName":121,"slug":122},{"metadata":457,"spec":460,"status":468,"categories":471,"tags":477},{"name":458,"creationTimestamp":459},"post-java8-clock-336b78c3","2026-09-12T08:29:31.395365Z",{"title":461,"slug":462,"cover":9,"excerpt":463,"publishTime":465,"categories":466,"tags":467,"priority":42,"pinned":305,"deleted":305,"visible":310,"allowComment":311},"Java 1.8 Clock","java8-clock",{"raw":464,"autoGenerate":305},"Clock 提供对当前日期和时间的访问。我们可以利用它来替代 System.currentTimeMillis() 方法。另外，通过 clock.instant() 能够获取一个 instant 实例...","2026-09-12T08:29:31.447789Z",[308],[119],{"permalink":469,"excerpt":464,"lastModifyTime":470,"phase":315},"\u002Farchives\u002Fjava8-clock","2026-09-12T08:29:31.398896Z",[472],{"metadata":473,"spec":475,"status":476,"postCount":294},{"name":308,"creationTimestamp":319,"annotations":474},{"tutorial.halo.run\u002Fstatus":321},{"displayName":323,"slug":308,"cover":324,"description":325,"priority":79,"hideFromList":305,"preventParentPostCascadeQuery":305},{"permalink":327,"postCount":294,"visiblePostCount":294},[478],{"metadata":479,"spec":480},{"name":119},{"displayName":121,"slug":122},{"metadata":482,"spec":485,"status":493,"categories":495,"tags":501},{"name":483,"creationTimestamp":484},"post-java8-bifunction-e5cfa561","2026-09-12T08:29:30.804052Z",{"title":486,"slug":487,"cover":9,"excerpt":488,"publishTime":490,"categories":491,"tags":492,"priority":42,"pinned":305,"deleted":305,"visible":310,"allowComment":311},"Java 1.8 BiFunction 函数式接口","java8-bifunction",{"raw":489,"autoGenerate":305},"BiFunction 接口代表一个接受两个参数并产生结果的操作。它在 Java 中**被广泛用于对两个输入参数进行操作，然后返回一个结果。","2026-09-12T08:29:30.861518Z",[308],[119],{"permalink":494,"excerpt":489,"lastModifyTime":396,"phase":315},"\u002Farchives\u002Fjava8-bifunction",[496],{"metadata":497,"spec":499,"status":500,"postCount":294},{"name":308,"creationTimestamp":319,"annotations":498},{"tutorial.halo.run\u002Fstatus":321},{"displayName":323,"slug":308,"cover":324,"description":325,"priority":79,"hideFromList":305,"preventParentPostCascadeQuery":305},{"permalink":327,"postCount":294,"visiblePostCount":294},[502],{"metadata":503,"spec":504},{"name":119},{"displayName":121,"slug":122}]