[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"site-config":3,"primary-menu":20,"tags-cloud":109,"tagposts-java-3":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":70,"size":294,"total":123,"items":295,"first":305,"last":305,"hasNext":310,"hasPrevious":310,"totalPages":79},20,[296,334,362,390,418,445,474,503,530,561,585,609,633,657,682,706,730,754,778,802],{"metadata":297,"spec":300,"status":311,"categories":315,"tags":327},{"name":298,"creationTimestamp":299},"post-lombok-equals-and-hash-code-a3d03899","2026-09-12T08:29:50.011368Z",{"title":301,"slug":302,"cover":9,"excerpt":303,"publishTime":306,"categories":307,"tags":308,"priority":42,"pinned":305,"deleted":305,"visible":309,"allowComment":310},"Lombok @EqualsAndHashCode 注解：简化对象比较","lombok-equals-and-hash-code",{"raw":304,"autoGenerate":305},"Lombok 的 @EqualsAndHashCode 注解用于自动生成 equals() 和 hashCode() 方法，这两个方法对于对象比较和在集合中的使用非常重要。equals() 方法决定了对象的比较方式，而 hashCode() 则影响对象在散列集合（如 HashSet 和 HashMap）中的表现。",false,"2026-09-12T08:29:50.233386Z",[157],[154,119],"PUBLIC",true,{"permalink":312,"excerpt":304,"lastModifyTime":313,"phase":314},"\u002Farchives\u002Flombok-equals-and-hash-code","2026-09-30T21:46:10.902063Z","PUBLISHED",[316],{"metadata":317,"spec":321,"status":325,"postCount":158},{"name":157,"creationTimestamp":318,"annotations":319},"2026-09-12T08:22:44.622640Z",{"tutorial.halo.run\u002Fstatus":320},"updating",{"displayName":322,"slug":157,"cover":323,"description":324,"priority":88,"hideFromList":305,"preventParentPostCascadeQuery":305},"Lombok 使用教程","https:\u002F\u002Fcdn.mashangan.com\u002Fupload\u002Ftutorial-cover-lombok.png","Lombok 使用教程：常用注解与底层原理、IDEA 配置、序列化坑与团队使用规范。",{"permalink":326,"postCount":158,"visiblePostCount":158},"\u002Fcategories\u002Flombok",[328,331],{"metadata":329,"spec":330},{"name":154},{"displayName":156,"slug":157},{"metadata":332,"spec":333},{"name":119},{"displayName":121,"slug":122},{"metadata":335,"spec":338,"status":346,"categories":349,"tags":355},{"name":336,"creationTimestamp":337},"post-lombok-dependency-install-afb949d3","2026-09-12T08:29:49.422864Z",{"title":339,"slug":340,"excerpt":341,"publishTime":343,"categories":344,"tags":345,"priority":42,"pinned":305,"deleted":305,"visible":309,"allowComment":310},"Lombok 依赖安装","lombok-dependency-install",{"raw":342,"autoGenerate":305},"想要在项目中使用 Lombok, 首先, 你需要在项目中添加 Lombok 依赖。本小节中，我将分别演示如何在项目构建工具（ Maven 或 Gradle ）中添加 Lombok 依赖。","2026-09-12T08:29:49.475556Z",[157],[154,119],{"permalink":347,"excerpt":342,"lastModifyTime":348,"phase":314},"\u002Farchives\u002Flombok-dependency-install","2026-09-30T03:33:23.648115Z",[350],{"metadata":351,"spec":353,"status":354,"postCount":158},{"name":157,"creationTimestamp":318,"annotations":352},{"tutorial.halo.run\u002Fstatus":320},{"displayName":322,"slug":157,"cover":323,"description":324,"priority":88,"hideFromList":305,"preventParentPostCascadeQuery":305},{"permalink":326,"postCount":158,"visiblePostCount":158},[356,359],{"metadata":357,"spec":358},{"name":154},{"displayName":156,"slug":157},{"metadata":360,"spec":361},{"name":119},{"displayName":121,"slug":122},{"metadata":363,"spec":366,"status":375,"categories":377,"tags":383},{"name":364,"creationTimestamp":365},"post-lombok-data-3de3dc8b","2026-09-12T08:29:48.783849Z",{"title":367,"slug":368,"cover":369,"excerpt":370,"publishTime":372,"categories":373,"tags":374,"priority":42,"pinned":305,"deleted":305,"visible":309,"allowComment":310},"Lombok @Data 注解：快速生成类常用方法","lombok-data","https:\u002F\u002Fcdn.mashangan.com\u002Fupload\u002F167575545480437-ebty.jpg",{"raw":371,"autoGenerate":305},"在 Lombok 中，@Data 是个万金油注解。一个 @Data 注解相当于同时使用了 @Getter 、@Setter 、@RequiredArgsConstructor、@ToString、@EqualsAndHashCode...","2026-09-12T08:29:48.870613Z",[157],[119,154],{"permalink":376,"excerpt":371,"lastModifyTime":313,"phase":314},"\u002Farchives\u002Flombok-data",[378],{"metadata":379,"spec":381,"status":382,"postCount":158},{"name":157,"creationTimestamp":318,"annotations":380},{"tutorial.halo.run\u002Fstatus":320},{"displayName":322,"slug":157,"cover":323,"description":324,"priority":88,"hideFromList":305,"preventParentPostCascadeQuery":305},{"permalink":326,"postCount":158,"visiblePostCount":158},[384,387],{"metadata":385,"spec":386},{"name":119},{"displayName":121,"slug":122},{"metadata":388,"spec":389},{"name":154},{"displayName":156,"slug":157},{"metadata":391,"spec":394,"status":402,"categories":405,"tags":411},{"name":392,"creationTimestamp":393},"post-lombok-builder-0339d5b6","2026-09-12T08:29:48.038614Z",{"title":395,"slug":396,"excerpt":397,"publishTime":399,"categories":400,"tags":401,"priority":42,"pinned":305,"deleted":305,"visible":309,"allowComment":310},"Lombok @Builder 注解：流畅的构建者模式","lombok-builder",{"raw":398,"autoGenerate":305},"Lombok 的 @Builder 注解用于生成建造者（Builder）模式的代码。Builder 模式提供了一种灵活、易读的方式来创建复杂对象，尤其适合需要设置多个可选参数、支持链式调用的场景。@Builder 注解自动生成了静态内部类 Builder 及其相关方法，使代码更加简洁、清晰。","2026-09-12T08:29:48.096644Z",[157],[154,119],{"permalink":403,"excerpt":398,"lastModifyTime":404,"phase":314},"\u002Farchives\u002Flombok-builder","2026-09-30T04:27:48.959915Z",[406],{"metadata":407,"spec":409,"status":410,"postCount":158},{"name":157,"creationTimestamp":318,"annotations":408},{"tutorial.halo.run\u002Fstatus":320},{"displayName":322,"slug":157,"cover":323,"description":324,"priority":88,"hideFromList":305,"preventParentPostCascadeQuery":305},{"permalink":326,"postCount":158,"visiblePostCount":158},[412,415],{"metadata":413,"spec":414},{"name":154},{"displayName":156,"slug":157},{"metadata":416,"spec":417},{"name":119},{"displayName":121,"slug":122},{"metadata":419,"spec":422,"status":430,"categories":432,"tags":438},{"name":420,"creationTimestamp":421},"post-lombok-args-constructor-49c212ca","2026-09-12T08:29:47.407172Z",{"title":423,"slug":424,"cover":9,"excerpt":425,"publishTime":427,"categories":428,"tags":429,"priority":42,"pinned":305,"deleted":305,"visible":309,"allowComment":310},"Lombok @Constructor 系列注解：轻松生成类的构造方法","lombok-args-constructor",{"raw":426,"autoGenerate":305},"Lombok 提供了一系列构造器注解，帮助开发者轻松生成构造方法。主要包括 @NoArgsConstructor、@AllArgsConstructor 和 @RequiredArgsConstructor，可以根据需要自动生成无参、全参或指定参数的构造器。","2026-09-12T08:29:47.462011Z",[157],[119,154],{"permalink":431,"excerpt":426,"lastModifyTime":313,"phase":314},"\u002Farchives\u002Flombok-args-constructor",[433],{"metadata":434,"spec":436,"status":437,"postCount":158},{"name":157,"creationTimestamp":318,"annotations":435},{"tutorial.halo.run\u002Fstatus":320},{"displayName":322,"slug":157,"cover":323,"description":324,"priority":88,"hideFromList":305,"preventParentPostCascadeQuery":305},{"permalink":326,"postCount":158,"visiblePostCount":158},[439,442],{"metadata":440,"spec":441},{"name":119},{"displayName":121,"slug":122},{"metadata":443,"spec":444},{"name":154},{"displayName":156,"slug":157},{"metadata":446,"spec":449,"status":458,"categories":461,"tags":467},{"name":447,"creationTimestamp":448},"post-idea-install-lombok-plugin-2e5a8631","2026-09-12T08:29:46.815062Z",{"title":450,"slug":451,"cover":452,"excerpt":453,"publishTime":455,"categories":456,"tags":457,"priority":42,"pinned":305,"deleted":305,"visible":309,"allowComment":310},"IDEA 安装 Lombok 插件（图文教程）","idea-install-lombok-plugin","https:\u002F\u002Fcdn.mashangan.com\u002Fupload\u002F169059578851069-SiKa.jpg",{"raw":454,"autoGenerate":305},"本小节中，我将通图文的方式，手把手演示如何在 IDEA 中安装 Lombok 插件。","2026-09-12T08:29:46.862690Z",[157],[119,154],{"permalink":459,"excerpt":454,"lastModifyTime":460,"phase":314},"\u002Farchives\u002Fidea-install-lombok-plugin","2026-09-13T05:25:39.275975Z",[462],{"metadata":463,"spec":465,"status":466,"postCount":158},{"name":157,"creationTimestamp":318,"annotations":464},{"tutorial.halo.run\u002Fstatus":320},{"displayName":322,"slug":157,"cover":323,"description":324,"priority":88,"hideFromList":305,"preventParentPostCascadeQuery":305},{"permalink":326,"postCount":158,"visiblePostCount":158},[468,471],{"metadata":469,"spec":470},{"name":119},{"displayName":121,"slug":122},{"metadata":472,"spec":473},{"name":154},{"displayName":156,"slug":157},{"metadata":475,"spec":478,"status":487,"categories":490,"tags":496},{"name":476,"creationTimestamp":477},"post-eclipse-install-lombok-plugin-27c19d60","2026-09-12T08:29:46.234176Z",{"title":479,"slug":480,"cover":481,"excerpt":482,"publishTime":484,"categories":485,"tags":486,"priority":42,"pinned":305,"deleted":305,"visible":309,"allowComment":310},"Eclipse 安装 Lombok 插件（图文教程）","eclipse-install-lombok-plugin","https:\u002F\u002Fcdn.mashangan.com\u002Fupload\u002F169060085073147-QlhP.jpg",{"raw":483,"autoGenerate":305},"本小节中，我们将通过图文的方式，手把手教你如何在 Eclipse 中安装 Lombok 插件。","2026-09-12T08:29:46.288767Z",[157],[119,154],{"permalink":488,"excerpt":483,"lastModifyTime":489,"phase":314},"\u002Farchives\u002Feclipse-install-lombok-plugin","2026-09-30T04:27:10.352334Z",[491],{"metadata":492,"spec":494,"status":495,"postCount":158},{"name":157,"creationTimestamp":318,"annotations":493},{"tutorial.halo.run\u002Fstatus":320},{"displayName":322,"slug":157,"cover":323,"description":324,"priority":88,"hideFromList":305,"preventParentPostCascadeQuery":305},{"permalink":326,"postCount":158,"visiblePostCount":158},[497,500],{"metadata":498,"spec":499},{"name":119},{"displayName":121,"slug":122},{"metadata":501,"spec":502},{"name":154},{"displayName":156,"slug":157},{"metadata":504,"spec":507,"status":515,"categories":517,"tags":523},{"name":505,"creationTimestamp":506},"post-avoid-lombok-pitfalls-0979c95e","2026-09-12T08:29:45.645846Z",{"title":508,"slug":509,"cover":9,"excerpt":510,"publishTime":512,"categories":513,"tags":514,"priority":42,"pinned":305,"deleted":305,"visible":309,"allowComment":310},"如何避免 Lombok 的常见陷阱？","avoid-lombok-pitfalls",{"raw":511,"autoGenerate":305},"尽管 Lombok 是一个强大的工具，可以帮助我们简化代码，提高开发效率，但是如果不恰当地使用，也可能会引入一些问题。本文将为你详述如何避免 Lombok 的常见陷阱。","2026-09-12T08:29:45.700024Z",[157],[154,119],{"permalink":516,"excerpt":511,"lastModifyTime":313,"phase":314},"\u002Farchives\u002Favoid-lombok-pitfalls",[518],{"metadata":519,"spec":521,"status":522,"postCount":158},{"name":157,"creationTimestamp":318,"annotations":520},{"tutorial.halo.run\u002Fstatus":320},{"displayName":322,"slug":157,"cover":323,"description":324,"priority":88,"hideFromList":305,"preventParentPostCascadeQuery":305},{"permalink":326,"postCount":158,"visiblePostCount":158},[524,527],{"metadata":525,"spec":526},{"name":154},{"displayName":156,"slug":157},{"metadata":528,"spec":529},{"name":119},{"displayName":121,"slug":122},{"metadata":531,"spec":534,"status":543,"categories":546,"tags":557},{"name":532,"creationTimestamp":533},"post-java8-timezones-d136f398","2026-09-12T08:29:44.759663Z",{"title":535,"slug":536,"cover":9,"excerpt":537,"publishTime":539,"categories":540,"tags":542,"priority":42,"pinned":305,"deleted":305,"visible":309,"allowComment":310},"Java 1.8 Timezones 时区","java8-timezones",{"raw":538,"autoGenerate":305},"ZoneId 代表时区类。通过静态工厂方法方便地获取它，入参我们可以传入某个时区编码。另外，时区类还定义了一个偏移量，用来在当前时刻或某时间\r\n与目标时区时间之间进行转换。","2026-09-12T08:29:44.816682Z",[541],"java8",[119],{"permalink":544,"excerpt":538,"lastModifyTime":545,"phase":314},"\u002Farchives\u002Fjava8-timezones","2026-09-12T08:29:44.762611Z",[547],{"metadata":548,"spec":551,"status":555,"postCount":294},{"name":541,"creationTimestamp":549,"annotations":550},"2026-09-12T08:22:34.154837Z",{"tutorial.halo.run\u002Fstatus":320},{"displayName":552,"slug":541,"cover":553,"description":554,"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":556,"postCount":294,"visiblePostCount":294},"\u002Fcategories\u002Fjava8",[558],{"metadata":559,"spec":560},{"name":119},{"displayName":121,"slug":122},{"metadata":562,"spec":565,"status":573,"categories":575,"tags":581},{"name":563,"creationTimestamp":564},"post-java8-supplier-effd6dc5","2026-09-12T08:29:44.154617Z",{"title":566,"slug":567,"cover":9,"excerpt":568,"publishTime":570,"categories":571,"tags":572,"priority":42,"pinned":305,"deleted":305,"visible":309,"allowComment":310},"Java 1.8 Supplier 函数式接口","java8-supplier",{"raw":569,"autoGenerate":305},"Supplier 接口代表一个不接受参数但返回结果的操作。它在 Java 中被广泛用于懒加载或产生随机值等场景。","2026-09-12T08:29:44.212836Z",[541],[119],{"permalink":574,"excerpt":569,"lastModifyTime":313,"phase":314},"\u002Farchives\u002Fjava8-supplier",[576],{"metadata":577,"spec":579,"status":580,"postCount":294},{"name":541,"creationTimestamp":549,"annotations":578},{"tutorial.halo.run\u002Fstatus":320},{"displayName":552,"slug":541,"cover":553,"description":554,"priority":79,"hideFromList":305,"preventParentPostCascadeQuery":305},{"permalink":556,"postCount":294,"visiblePostCount":294},[582],{"metadata":583,"spec":584},{"name":119},{"displayName":121,"slug":122},{"metadata":586,"spec":589,"status":597,"categories":599,"tags":605},{"name":587,"creationTimestamp":588},"post-java8-stream-sorted-2177586c","2026-09-12T08:29:43.450940Z",{"title":590,"slug":591,"cover":9,"excerpt":592,"publishTime":594,"categories":595,"tags":596,"priority":42,"pinned":305,"deleted":305,"visible":309,"allowComment":310},"Java 1.8 Stream 流 Sorted 排序","java8-stream-sorted",{"raw":593,"autoGenerate":305},"在 Java 1.8 中，Stream API 提供了 sorted() 方法用于对流中的元素进行排序。sorted() 方法可以根据元素的自然顺序（如果元素实现了 Comparable 接口）或者根据指定的比较器进行排序。","2026-09-12T08:29:43.515927Z",[541],[119],{"permalink":598,"excerpt":593,"lastModifyTime":313,"phase":314},"\u002Farchives\u002Fjava8-stream-sorted",[600],{"metadata":601,"spec":603,"status":604,"postCount":294},{"name":541,"creationTimestamp":549,"annotations":602},{"tutorial.halo.run\u002Fstatus":320},{"displayName":552,"slug":541,"cover":553,"description":554,"priority":79,"hideFromList":305,"preventParentPostCascadeQuery":305},{"permalink":556,"postCount":294,"visiblePostCount":294},[606],{"metadata":607,"spec":608},{"name":119},{"displayName":121,"slug":122},{"metadata":610,"spec":613,"status":621,"categories":623,"tags":629},{"name":611,"creationTimestamp":612},"post-java8-stream-reduce-d9c374ef","2026-09-12T08:29:42.530843Z",{"title":614,"slug":615,"cover":9,"excerpt":616,"publishTime":618,"categories":619,"tags":620,"priority":42,"pinned":305,"deleted":305,"visible":309,"allowComment":310},"Java 1.8 Stream 流 Reduce 规约合并","java8-stream-reduce",{"raw":617,"autoGenerate":305},"在 Java 1.8 中，Stream API 提供了 reduce() 方法用于将流中的元素进行归约操作。reduce() 方法允许我们根据指定的操作，将流中的元素合并为一个结果。","2026-09-12T08:29:42.734409Z",[541],[119],{"permalink":622,"excerpt":617,"lastModifyTime":313,"phase":314},"\u002Farchives\u002Fjava8-stream-reduce",[624],{"metadata":625,"spec":627,"status":628,"postCount":294},{"name":541,"creationTimestamp":549,"annotations":626},{"tutorial.halo.run\u002Fstatus":320},{"displayName":552,"slug":541,"cover":553,"description":554,"priority":79,"hideFromList":305,"preventParentPostCascadeQuery":305},{"permalink":556,"postCount":294,"visiblePostCount":294},[630],{"metadata":631,"spec":632},{"name":119},{"displayName":121,"slug":122},{"metadata":634,"spec":637,"status":645,"categories":647,"tags":653},{"name":635,"creationTimestamp":636},"post-java8-stream-match-efe9648c","2026-09-12T08:29:41.833057Z",{"title":638,"slug":639,"cover":9,"excerpt":640,"publishTime":642,"categories":643,"tags":644,"priority":42,"pinned":305,"deleted":305,"visible":309,"allowComment":310},"Java 1.8 Stream 流 Match 元素匹配","java8-stream-match",{"raw":641,"autoGenerate":305},"在 Java 1.8 中，Stream API 提供了 allMatch()、anyMatch() 和 noneMatch() 方法用于对流中的元素进行匹配操作。这些方法可以帮助我们快速判断流中的元素是否满足某个条件，从而返回一个布尔值。","2026-09-12T08:29:41.891265Z",[541],[119],{"permalink":646,"excerpt":641,"lastModifyTime":313,"phase":314},"\u002Farchives\u002Fjava8-stream-match",[648],{"metadata":649,"spec":651,"status":652,"postCount":294},{"name":541,"creationTimestamp":549,"annotations":650},{"tutorial.halo.run\u002Fstatus":320},{"displayName":552,"slug":541,"cover":553,"description":554,"priority":79,"hideFromList":305,"preventParentPostCascadeQuery":305},{"permalink":556,"postCount":294,"visiblePostCount":294},[654],{"metadata":655,"spec":656},{"name":119},{"displayName":121,"slug":122},{"metadata":658,"spec":661,"status":669,"categories":672,"tags":678},{"name":659,"creationTimestamp":660},"post-java8-stream-filter-932481d2","2026-09-12T08:29:40.916371Z",{"title":662,"slug":663,"excerpt":664,"publishTime":666,"categories":667,"tags":668,"priority":42,"pinned":305,"deleted":305,"visible":309,"allowComment":310},"Java 1.8 Stream 流 Filter 过滤","java8-stream-filter",{"raw":665,"autoGenerate":305},"在 Java 1.8 中，Stream 是一个用于操作集合元素的新 API。Stream API 提供了丰富的功能，其中之一就是 filter() 方法。filter() 方法可以用于过滤集合中的元素，根据指定的条件筛选出满足条件的元素，从而得到一个新的流。","2026-09-12T08:29:40.976437Z",[541],[119],{"permalink":670,"excerpt":665,"lastModifyTime":671,"phase":314},"\u002Farchives\u002Fjava8-stream-filter","2026-09-30T16:23:56.089741Z",[673],{"metadata":674,"spec":676,"status":677,"postCount":294},{"name":541,"creationTimestamp":549,"annotations":675},{"tutorial.halo.run\u002Fstatus":320},{"displayName":552,"slug":541,"cover":553,"description":554,"priority":79,"hideFromList":305,"preventParentPostCascadeQuery":305},{"permalink":556,"postCount":294,"visiblePostCount":294},[679],{"metadata":680,"spec":681},{"name":119},{"displayName":121,"slug":122},{"metadata":683,"spec":686,"status":694,"categories":696,"tags":702},{"name":684,"creationTimestamp":685},"post-java8-stream-count-67639222","2026-09-12T08:29:40.075806Z",{"title":687,"slug":688,"cover":9,"excerpt":689,"publishTime":691,"categories":692,"tags":693,"priority":42,"pinned":305,"deleted":305,"visible":309,"allowComment":310},"Java 1.8 Stream 流 Count 计数","java8-stream-count",{"raw":690,"autoGenerate":305},"在 Java 1.8 中，Stream API 提供了 count() 方法用于计算流中的元素个数。count() 方法返回一个 long 类型的值，表示流中元素的数量。","2026-09-12T08:29:40.133568Z",[541],[119],{"permalink":695,"excerpt":690,"lastModifyTime":313,"phase":314},"\u002Farchives\u002Fjava8-stream-count",[697],{"metadata":698,"spec":700,"status":701,"postCount":294},{"name":541,"creationTimestamp":549,"annotations":699},{"tutorial.halo.run\u002Fstatus":320},{"displayName":552,"slug":541,"cover":553,"description":554,"priority":79,"hideFromList":305,"preventParentPostCascadeQuery":305},{"permalink":556,"postCount":294,"visiblePostCount":294},[703],{"metadata":704,"spec":705},{"name":119},{"displayName":121,"slug":122},{"metadata":707,"spec":710,"status":718,"categories":720,"tags":726},{"name":708,"creationTimestamp":709},"post-java8-predicate-a40f5246","2026-09-12T08:29:39.401754Z",{"title":711,"slug":712,"cover":9,"excerpt":713,"publishTime":715,"categories":716,"tags":717,"priority":42,"pinned":305,"deleted":305,"visible":309,"allowComment":310},"Java 1.8 Predicate 断言函数式接口","java8-predicate",{"raw":714,"autoGenerate":305},"在 Java 1.8 之前，我们在对集合进行筛选和过滤时，通常需要使用循环和条件语句来手动实现。而 Java 1.8 引入的 Predicate 断言接口，为我们提供了一种简单且优雅的方法来进行集合元素的筛选。","2026-09-12T08:29:39.462661Z",[541],[119],{"permalink":719,"excerpt":714,"lastModifyTime":313,"phase":314},"\u002Farchives\u002Fjava8-predicate",[721],{"metadata":722,"spec":724,"status":725,"postCount":294},{"name":541,"creationTimestamp":549,"annotations":723},{"tutorial.halo.run\u002Fstatus":320},{"displayName":552,"slug":541,"cover":553,"description":554,"priority":79,"hideFromList":305,"preventParentPostCascadeQuery":305},{"permalink":556,"postCount":294,"visiblePostCount":294},[727],{"metadata":728,"spec":729},{"name":119},{"displayName":121,"slug":122},{"metadata":731,"spec":734,"status":742,"categories":744,"tags":750},{"name":732,"creationTimestamp":733},"post-java8-map-convert-c4312a2d","2026-09-12T08:29:38.790451Z",{"title":735,"slug":736,"cover":9,"excerpt":737,"publishTime":739,"categories":740,"tags":741,"priority":42,"pinned":305,"deleted":305,"visible":309,"allowComment":310},"Java 1.8 Stream 流 Map 元素转换","java8-map-convert",{"raw":738,"autoGenerate":305},"在 Java 1.8 中，Stream API 提供了 map() 方法用于对流中的元素进行转换操作。map() 方法可以将流中的每个元素映射为另一个值，从而得到一个新的流。","2026-09-12T08:29:38.847401Z",[541],[119],{"permalink":743,"excerpt":738,"lastModifyTime":313,"phase":314},"\u002Farchives\u002Fjava8-map-convert",[745],{"metadata":746,"spec":748,"status":749,"postCount":294},{"name":541,"creationTimestamp":549,"annotations":747},{"tutorial.halo.run\u002Fstatus":320},{"displayName":552,"slug":541,"cover":553,"description":554,"priority":79,"hideFromList":305,"preventParentPostCascadeQuery":305},{"permalink":556,"postCount":294,"visiblePostCount":294},[751],{"metadata":752,"spec":753},{"name":119},{"displayName":121,"slug":122},{"metadata":755,"spec":758,"status":766,"categories":768,"tags":774},{"name":756,"creationTimestamp":757},"post-java8-localtime-95207726","2026-09-12T08:29:38.133376Z",{"title":759,"slug":760,"cover":9,"excerpt":761,"publishTime":763,"categories":764,"tags":765,"priority":42,"pinned":305,"deleted":305,"visible":309,"allowComment":310},"Java 1.8 LocalTime 时间","java8-localtime",{"raw":762,"autoGenerate":305},"在 Java 8 之前，我们通常使用 java.util.Date 类和 java.util.Calendar 类来表示和操作日期和时间。然而，这些类存在许多问题，例如不支持时区，API 设计不直观等。为了解决这些问题，Java 8 引入了全新的日期和时间 API，其中包括 LocalTime 类。","2026-09-12T08:29:38.188501Z",[541],[119],{"permalink":767,"excerpt":762,"lastModifyTime":313,"phase":314},"\u002Farchives\u002Fjava8-localtime",[769],{"metadata":770,"spec":772,"status":773,"postCount":294},{"name":541,"creationTimestamp":549,"annotations":771},{"tutorial.halo.run\u002Fstatus":320},{"displayName":552,"slug":541,"cover":553,"description":554,"priority":79,"hideFromList":305,"preventParentPostCascadeQuery":305},{"permalink":556,"postCount":294,"visiblePostCount":294},[775],{"metadata":776,"spec":777},{"name":119},{"displayName":121,"slug":122},{"metadata":779,"spec":782,"status":790,"categories":792,"tags":798},{"name":780,"creationTimestamp":781},"post-java8-localdatetime-95f2a0ee","2026-09-12T08:29:37.466020Z",{"title":783,"slug":784,"cover":9,"excerpt":785,"publishTime":787,"categories":788,"tags":789,"priority":42,"pinned":305,"deleted":305,"visible":309,"allowComment":310},"Java 1.8 LocalDateTime 日期时间","java8-localdatetime",{"raw":786,"autoGenerate":305},"LocalDateTime 是 Java 8 中一个不可变的日期-时间对象，它表示了日期（年、月、日）和时间（小时、分钟、秒），但不包含时区。","2026-09-12T08:29:37.520571Z",[541],[119],{"permalink":791,"excerpt":786,"lastModifyTime":313,"phase":314},"\u002Farchives\u002Fjava8-localdatetime",[793],{"metadata":794,"spec":796,"status":797,"postCount":294},{"name":541,"creationTimestamp":549,"annotations":795},{"tutorial.halo.run\u002Fstatus":320},{"displayName":552,"slug":541,"cover":553,"description":554,"priority":79,"hideFromList":305,"preventParentPostCascadeQuery":305},{"permalink":556,"postCount":294,"visiblePostCount":294},[799],{"metadata":800,"spec":801},{"name":119},{"displayName":121,"slug":122},{"metadata":803,"spec":806,"status":814,"categories":816,"tags":822},{"name":804,"creationTimestamp":805},"post-java8-localdate-2407e273","2026-09-12T08:29:36.753368Z",{"title":807,"slug":808,"cover":9,"excerpt":809,"publishTime":811,"categories":812,"tags":813,"priority":42,"pinned":305,"deleted":305,"visible":309,"allowComment":310},"Java 1.8 LocalDate 日期","java8-localdate",{"raw":810,"autoGenerate":305},"LocalDate 是 Java 8 中用于处理日期的不可变类，它只包含日期部分（年、月、日），没有时间和时区。","2026-09-12T08:29:36.847631Z",[541],[119],{"permalink":815,"excerpt":810,"lastModifyTime":313,"phase":314},"\u002Farchives\u002Fjava8-localdate",[817],{"metadata":818,"spec":820,"status":821,"postCount":294},{"name":541,"creationTimestamp":549,"annotations":819},{"tutorial.halo.run\u002Fstatus":320},{"displayName":552,"slug":541,"cover":553,"description":554,"priority":79,"hideFromList":305,"preventParentPostCascadeQuery":305},{"permalink":556,"postCount":294,"visiblePostCount":294},[823],{"metadata":824,"spec":825},{"name":119},{"displayName":121,"slug":122}]