[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"site-config":3,"primary-menu":20,"tags-cloud":109,"tagposts-java-1":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":52,"size":294,"total":123,"items":295,"first":305,"last":309,"hasNext":305,"hasPrevious":309,"totalPages":79},20,[296,341,376,411,446,481,518,550,582,614,646,683,715,747,779,811,848,880,912,944],{"metadata":297,"spec":300,"status":311,"categories":315,"tags":328},{"name":298,"creationTimestamp":299},"post-sc-feign-edab66ba","2026-09-13T10:01:03.910779Z",{"title":301,"slug":302,"excerpt":303,"publishTime":306,"categories":307,"tags":308,"priority":42,"pinned":309,"deleted":309,"visible":310,"allowComment":305},"OpenFeign 的工作原理？","sc-feign",{"raw":304,"autoGenerate":305},"一、使用 @FeignClient(name = \"user-service\")\npublic interface UserClient {\n    @GetMapping(\"\u002Fuser\u002F{id}\")\n    User getUser(@PathVariable Long id);\n}\n 二、原理 ",true,"2026-09-13T10:01:03.959628Z",[196],[193,119,161,112],false,"PUBLIC",{"permalink":312,"excerpt":304,"lastModifyTime":313,"phase":314},"\u002Farchives\u002Fsc-feign","2026-10-07T00:57:53.274365Z","PUBLISHED",[316],{"metadata":317,"spec":322,"status":326,"postCount":88},{"name":196,"creationTimestamp":318,"labels":319,"annotations":320},"2026-09-13T09:13:25.651927Z",{"haloweb.section":115},{"tutorial.halo.run\u002Fstatus":321},"updating",{"displayName":323,"slug":196,"cover":9,"description":324,"priority":325,"hideFromList":309,"preventParentPostCascadeQuery":309},"Spring Cloud 面试题","Spring Cloud 微服务面试题：注册中心、网关、配置中心、熔断限流与链路治理。",14,{"permalink":327,"postCount":88,"visiblePostCount":88},"\u002Fcategories\u002Fspring-cloud",[329,332,335,338],{"metadata":330,"spec":331},{"name":193},{"displayName":195,"slug":196},{"metadata":333,"spec":334},{"name":119},{"displayName":121,"slug":122},{"metadata":336,"spec":337},{"name":161},{"displayName":163,"slug":164},{"metadata":339,"spec":340},{"name":112},{"displayName":114,"slug":115},{"metadata":342,"spec":345,"status":352,"categories":356,"tags":363},{"name":343,"creationTimestamp":344},"post-sc-sentinel-aca6d4ca","2026-09-13T10:01:03.588033Z",{"title":346,"slug":347,"cover":9,"excerpt":348,"publishTime":349,"categories":350,"tags":351,"priority":42,"pinned":309,"deleted":309,"visible":310,"allowComment":305},"Sentinel 的工作原理？","sc-sentinel",{"raw":9,"autoGenerate":305},"2026-09-13T10:01:03.793927Z",[196],[161,112,193,119],{"permalink":353,"excerpt":354,"lastModifyTime":355,"phase":314},"\u002Farchives\u002Fsc-sentinel","一、核心功能 流量控制：QPS、线程数限流，支持匀速、预热等模式。 熔断降级：慢调用比例、异常比例、异常数达到阈值时熔断。 系统保护：CPU、负载、入口 QPS、平均 RT、并发线程数。 热点参数限流：针对参数维度限流。 二、工作原理 基于滑动窗口统计实时指标。 通过责任链模式处理请求：NodeSe","2026-09-16T09:14:38.324239Z",[357],{"metadata":358,"spec":361,"status":362,"postCount":88},{"name":196,"creationTimestamp":318,"labels":359,"annotations":360},{"haloweb.section":115},{"tutorial.halo.run\u002Fstatus":321},{"displayName":323,"slug":196,"cover":9,"description":324,"priority":325,"hideFromList":309,"preventParentPostCascadeQuery":309},{"permalink":327,"postCount":88,"visiblePostCount":88},[364,367,370,373],{"metadata":365,"spec":366},{"name":161},{"displayName":163,"slug":164},{"metadata":368,"spec":369},{"name":112},{"displayName":114,"slug":115},{"metadata":371,"spec":372},{"name":193},{"displayName":195,"slug":196},{"metadata":374,"spec":375},{"name":119},{"displayName":121,"slug":122},{"metadata":377,"spec":380,"status":387,"categories":391,"tags":398},{"name":378,"creationTimestamp":379},"post-sc-gateway-3716276a","2026-09-13T10:01:03.236916Z",{"title":381,"slug":382,"cover":9,"excerpt":383,"publishTime":384,"categories":385,"tags":386,"priority":42,"pinned":309,"deleted":309,"visible":310,"allowComment":305},"Spring Cloud Gateway 的工作原理？","sc-gateway",{"raw":9,"autoGenerate":305},"2026-09-13T10:01:03.432717Z",[196],[112,193,161,119],{"permalink":388,"excerpt":389,"lastModifyTime":390,"phase":314},"\u002Farchives\u002Fsc-gateway","一、核心概念 Route：路由，由 ID、目标 URI、断言、过滤器组成。 Predicate：断言，匹配 HTTP 请求的条件（路径、方法、Header 等）。 Filter：过滤器，请求前后处理（鉴权、限流、日志、修改请求\u002F响应）。 二、执行流程 请求进入 Gateway，由 HandlerMa","2026-09-16T09:14:40.145885Z",[392],{"metadata":393,"spec":396,"status":397,"postCount":88},{"name":196,"creationTimestamp":318,"labels":394,"annotations":395},{"haloweb.section":115},{"tutorial.halo.run\u002Fstatus":321},{"displayName":323,"slug":196,"cover":9,"description":324,"priority":325,"hideFromList":309,"preventParentPostCascadeQuery":309},{"permalink":327,"postCount":88,"visiblePostCount":88},[399,402,405,408],{"metadata":400,"spec":401},{"name":112},{"displayName":114,"slug":115},{"metadata":403,"spec":404},{"name":193},{"displayName":195,"slug":196},{"metadata":406,"spec":407},{"name":161},{"displayName":163,"slug":164},{"metadata":409,"spec":410},{"name":119},{"displayName":121,"slug":122},{"metadata":412,"spec":415,"status":422,"categories":426,"tags":433},{"name":413,"creationTimestamp":414},"post-sc-nacos-14cc902b","2026-09-13T10:01:03.041394Z",{"title":416,"slug":417,"cover":9,"excerpt":418,"publishTime":419,"categories":420,"tags":421,"priority":42,"pinned":309,"deleted":309,"visible":310,"allowComment":305},"Nacos 的 CP 和 AP 模式？","sc-nacos",{"raw":9,"autoGenerate":305},"2026-09-13T10:01:03.086427Z",[196],[119,161,193,112],{"permalink":423,"excerpt":424,"lastModifyTime":425,"phase":314},"\u002Farchives\u002Fsc-nacos","一、AP 模式（临时实例） 服务实例注册后，通过心跳维持，心跳超时则剔除。 各节点数据可能短暂不一致，但保证可用性。 适合服务注册场景，实例变化频繁。 二、CP 模式（持久实例） 实例注册需要集群半数以上节点确认，强一致性。 节点不可用时不会自动剔除，需手动注销。 适合需要强一致性的场景。 三、切换","2026-09-16T09:14:39.577571Z",[427],{"metadata":428,"spec":431,"status":432,"postCount":88},{"name":196,"creationTimestamp":318,"labels":429,"annotations":430},{"haloweb.section":115},{"tutorial.halo.run\u002Fstatus":321},{"displayName":323,"slug":196,"cover":9,"description":324,"priority":325,"hideFromList":309,"preventParentPostCascadeQuery":309},{"permalink":327,"postCount":88,"visiblePostCount":88},[434,437,440,443],{"metadata":435,"spec":436},{"name":119},{"displayName":121,"slug":122},{"metadata":438,"spec":439},{"name":161},{"displayName":163,"slug":164},{"metadata":441,"spec":442},{"name":193},{"displayName":195,"slug":196},{"metadata":444,"spec":445},{"name":112},{"displayName":114,"slug":115},{"metadata":447,"spec":450,"status":457,"categories":461,"tags":468},{"name":448,"creationTimestamp":449},"post-sc-components-dbcccb25","2026-09-13T10:01:02.855129Z",{"title":451,"slug":452,"cover":9,"excerpt":453,"publishTime":454,"categories":455,"tags":456,"priority":42,"pinned":309,"deleted":309,"visible":310,"allowComment":305},"Spring Cloud 常用组件有哪些？","sc-components",{"raw":9,"autoGenerate":305},"2026-09-13T10:01:02.906713Z",[196],[161,112,119,193],{"permalink":458,"excerpt":459,"lastModifyTime":460,"phase":314},"\u002Farchives\u002Fsc-components","一、注册中心 Eureka：Netflix 出品，AP，自我保护机制。 Nacos：阿里出品，支持 CP\u002FAP 切换，同时支持配置中心。 Consul：支持服务发现、KV 存储、健康检查。 二、配置中心 Spring Cloud Config：基于 Git。 Nacos Config：配置实时推送。","2026-09-16T09:14:35.918447Z",[462],{"metadata":463,"spec":466,"status":467,"postCount":88},{"name":196,"creationTimestamp":318,"labels":464,"annotations":465},{"haloweb.section":115},{"tutorial.halo.run\u002Fstatus":321},{"displayName":323,"slug":196,"cover":9,"description":324,"priority":325,"hideFromList":309,"preventParentPostCascadeQuery":309},{"permalink":327,"postCount":88,"visiblePostCount":88},[469,472,475,478],{"metadata":470,"spec":471},{"name":161},{"displayName":163,"slug":164},{"metadata":473,"spec":474},{"name":112},{"displayName":114,"slug":115},{"metadata":476,"spec":477},{"name":119},{"displayName":121,"slug":122},{"metadata":479,"spec":480},{"name":193},{"displayName":195,"slug":196},{"metadata":482,"spec":485,"status":492,"categories":496,"tags":508},{"name":483,"creationTimestamp":484},"post-spring-circular-dependency-94e0cc24","2026-09-13T10:01:02.690961Z",{"title":486,"slug":487,"cover":9,"excerpt":488,"publishTime":489,"categories":490,"tags":491,"priority":42,"pinned":309,"deleted":309,"visible":310,"allowComment":305},"Spring 如何解决循环依赖？","spring-circular-dependency",{"raw":9,"autoGenerate":305},"2026-09-13T10:01:02.739844Z",[164],[112,119,161],{"permalink":493,"excerpt":494,"lastModifyTime":495,"phase":314},"\u002Farchives\u002Fspring-circular-dependency","一、什么是循环依赖 A 依赖 B，B 依赖 A，形成循环。 二、三级缓存 Spring 通过三级缓存解决 singleton 的循环依赖： singletonObjects：一级缓存，存完全初始化好的 Bean。 earlySingletonObjects：二级缓存，存早期引用（实例化但未属性赋值）","2026-09-16T09:14:37.864948Z",[497],{"metadata":498,"spec":502,"status":506,"postCount":88},{"name":164,"creationTimestamp":499,"labels":500,"annotations":501},"2026-09-13T09:13:25.731462Z",{"haloweb.section":115},{"tutorial.halo.run\u002Fstatus":321},{"displayName":503,"slug":164,"cover":9,"description":504,"priority":505,"hideFromList":309,"preventParentPostCascadeQuery":309},"Spring 面试题","Spring 面试题：IoC 容器、AOP 原理、声明式事务、Bean 生命周期与高频源码。",17,{"permalink":507,"postCount":88,"visiblePostCount":88},"\u002Fcategories\u002Fspring",[509,512,515],{"metadata":510,"spec":511},{"name":112},{"displayName":114,"slug":115},{"metadata":513,"spec":514},{"name":119},{"displayName":121,"slug":122},{"metadata":516,"spec":517},{"name":161},{"displayName":163,"slug":164},{"metadata":519,"spec":522,"status":529,"categories":533,"tags":540},{"name":520,"creationTimestamp":521},"post-spring-transaction-4d4be0d6","2026-09-13T10:01:02.510982Z",{"title":523,"slug":524,"cover":9,"excerpt":525,"publishTime":526,"categories":527,"tags":528,"priority":42,"pinned":309,"deleted":309,"visible":310,"allowComment":305},"Spring 事务的传播行为和隔离级别？","spring-transaction",{"raw":9,"autoGenerate":305},"2026-09-13T10:01:02.556020Z",[164],[112,119,161],{"permalink":530,"excerpt":531,"lastModifyTime":532,"phase":314},"\u002Farchives\u002Fspring-transaction","一、七种传播行为 传播行为 说明 REQUIRED（默认） 有事务就加入，没有就新建 REQUIRES_NEW 总是新建事务，挂起当前事务 SUPPORTS 有事务就加入，没有就非事务执行 NOT_SUPPORTED 非事务执行，挂起当前事务 MANDATORY 必须有事务，否则抛异常 NEVER ","2026-09-16T09:14:37.402303Z",[534],{"metadata":535,"spec":538,"status":539,"postCount":88},{"name":164,"creationTimestamp":499,"labels":536,"annotations":537},{"haloweb.section":115},{"tutorial.halo.run\u002Fstatus":321},{"displayName":503,"slug":164,"cover":9,"description":504,"priority":505,"hideFromList":309,"preventParentPostCascadeQuery":309},{"permalink":507,"postCount":88,"visiblePostCount":88},[541,544,547],{"metadata":542,"spec":543},{"name":112},{"displayName":114,"slug":115},{"metadata":545,"spec":546},{"name":119},{"displayName":121,"slug":122},{"metadata":548,"spec":549},{"name":161},{"displayName":163,"slug":164},{"metadata":551,"spec":554,"status":561,"categories":565,"tags":572},{"name":552,"creationTimestamp":553},"post-spring-aop-000624ea","2026-09-13T10:01:02.330064Z",{"title":555,"slug":556,"cover":9,"excerpt":557,"publishTime":558,"categories":559,"tags":560,"priority":42,"pinned":309,"deleted":309,"visible":310,"allowComment":305},"Spring AOP 的实现原理？","spring-aop",{"raw":9,"autoGenerate":305},"2026-09-13T10:01:02.385481Z",[164],[119,161,112],{"permalink":562,"excerpt":563,"lastModifyTime":564,"phase":314},"\u002Farchives\u002Fspring-aop","一、AOP 概念 面向切面编程，把横切逻辑（日志、事务、权限）从业务代码中抽离，通过动态织入实现。 二、动态代理 JDK 动态代理：目标类实现接口时使用，基于反射生成代理类。 CGLIB 代理：目标类无接口时使用，基于 ASM 生成目标类的子类。 Spring 自动选择：有接口用 JDK，无接口用 ","2026-09-16T09:14:36.969681Z",[566],{"metadata":567,"spec":570,"status":571,"postCount":88},{"name":164,"creationTimestamp":499,"labels":568,"annotations":569},{"haloweb.section":115},{"tutorial.halo.run\u002Fstatus":321},{"displayName":503,"slug":164,"cover":9,"description":504,"priority":505,"hideFromList":309,"preventParentPostCascadeQuery":309},{"permalink":507,"postCount":88,"visiblePostCount":88},[573,576,579],{"metadata":574,"spec":575},{"name":119},{"displayName":121,"slug":122},{"metadata":577,"spec":578},{"name":161},{"displayName":163,"slug":164},{"metadata":580,"spec":581},{"name":112},{"displayName":114,"slug":115},{"metadata":583,"spec":586,"status":593,"categories":597,"tags":604},{"name":584,"creationTimestamp":585},"post-spring-bean-scope-0026d011","2026-09-13T10:01:02.137013Z",{"title":587,"slug":588,"cover":9,"excerpt":589,"publishTime":590,"categories":591,"tags":592,"priority":42,"pinned":309,"deleted":309,"visible":310,"allowComment":305},"Spring Bean 的作用域有哪些？","spring-bean-scope",{"raw":9,"autoGenerate":305},"2026-09-13T10:01:02.186869Z",[164],[119,161,112],{"permalink":594,"excerpt":595,"lastModifyTime":596,"phase":314},"\u002Farchives\u002Fspring-bean-scope","一、singleton（默认） 容器中只有一个实例，全局共享。适合无状态 Bean。 二、prototype 每次获取都创建新实例。适合有状态 Bean。 三、request（Web） 每次 HTTP 请求一个实例。 四、session（Web） 每个 HTTP Session 一个实例。 五、ap","2026-09-16T09:14:36.382287Z",[598],{"metadata":599,"spec":602,"status":603,"postCount":88},{"name":164,"creationTimestamp":499,"labels":600,"annotations":601},{"haloweb.section":115},{"tutorial.halo.run\u002Fstatus":321},{"displayName":503,"slug":164,"cover":9,"description":504,"priority":505,"hideFromList":309,"preventParentPostCascadeQuery":309},{"permalink":507,"postCount":88,"visiblePostCount":88},[605,608,611],{"metadata":606,"spec":607},{"name":119},{"displayName":121,"slug":122},{"metadata":609,"spec":610},{"name":161},{"displayName":163,"slug":164},{"metadata":612,"spec":613},{"name":112},{"displayName":114,"slug":115},{"metadata":615,"spec":618,"status":625,"categories":629,"tags":636},{"name":616,"creationTimestamp":617},"post-spring-ioc-di-413f32bf","2026-09-13T10:01:01.935988Z",{"title":619,"slug":620,"cover":9,"excerpt":621,"publishTime":622,"categories":623,"tags":624,"priority":42,"pinned":309,"deleted":309,"visible":310,"allowComment":305},"Spring 的 IOC 和 DI 是什么？","spring-ioc-di",{"raw":9,"autoGenerate":305},"2026-09-13T10:01:01.985311Z",[164],[161,119,112],{"permalink":626,"excerpt":627,"lastModifyTime":628,"phase":314},"\u002Farchives\u002Fspring-ioc-di","一、IOC（控制反转） 对象的创建和依赖管理由容器负责，而不是在代码中 new。控制权从业务代码转移到 Spring 容器。 二、DI（依赖注入） IOC 的实现方式。容器把对象依赖的其他对象注入进去。 三种注入方式： - 构造器注入：通过构造方法，推荐（依赖不可变、无循环依赖风险）。 - sett","2026-09-16T09:13:51.823789Z",[630],{"metadata":631,"spec":634,"status":635,"postCount":88},{"name":164,"creationTimestamp":499,"labels":632,"annotations":633},{"haloweb.section":115},{"tutorial.halo.run\u002Fstatus":321},{"displayName":503,"slug":164,"cover":9,"description":504,"priority":505,"hideFromList":309,"preventParentPostCascadeQuery":309},{"permalink":507,"postCount":88,"visiblePostCount":88},[637,640,643],{"metadata":638,"spec":639},{"name":161},{"displayName":163,"slug":164},{"metadata":641,"spec":642},{"name":119},{"displayName":121,"slug":122},{"metadata":644,"spec":645},{"name":112},{"displayName":114,"slug":115},{"metadata":647,"spec":650,"status":658,"categories":662,"tags":673},{"name":648,"creationTimestamp":649},"post-jc-countdownlatch-cyclicbarrier-e9df49ff","2026-09-13T10:00:59.739697Z",{"title":651,"slug":652,"cover":9,"excerpt":653,"publishTime":654,"categories":655,"tags":657,"priority":42,"pinned":309,"deleted":309,"visible":310,"allowComment":305},"CountDownLatch 和 CyclicBarrier 的区别？","jc-countdownlatch-cyclicbarrier",{"raw":9,"autoGenerate":305},"2026-09-13T10:00:59.785610Z",[656],"java-concurrent",[119,112,174],{"permalink":659,"excerpt":660,"lastModifyTime":661,"phase":314},"\u002Farchives\u002Fjc-countdownlatch-cyclicbarrier","一、CountDownLatch 一个或多个线程等待其他线程完成后再继续。 用计数器实现，countDown() 减 1，await() 等待归零。 一次性，归零后不能重置。 场景：主线程等待多个子任务完成。 二、CyclicBarrier 一组线程互相等待，全部到达屏障点后一起继续。 可循环使用，","2026-09-16T09:13:46.649457Z",[663],{"metadata":664,"spec":668,"status":671,"postCount":88},{"name":656,"creationTimestamp":665,"labels":666,"annotations":667},"2026-09-13T09:13:25.680850Z",{"haloweb.section":115},{"tutorial.halo.run\u002Fstatus":321},{"displayName":669,"slug":656,"cover":9,"description":670,"priority":158,"hideFromList":309,"preventParentPostCascadeQuery":309},"Java 并发面试题","Java 并发编程面试题：JMM、synchronized 与锁、线程池、AQS 与并发容器。",{"permalink":672,"postCount":88,"visiblePostCount":88},"\u002Fcategories\u002Fjava-concurrent",[674,677,680],{"metadata":675,"spec":676},{"name":119},{"displayName":121,"slug":122},{"metadata":678,"spec":679},{"name":112},{"displayName":114,"slug":115},{"metadata":681,"spec":682},{"name":174},{"displayName":176,"slug":177},{"metadata":684,"spec":687,"status":694,"categories":698,"tags":705},{"name":685,"creationTimestamp":686},"post-jc-volatile-b6390e4d","2026-09-13T10:00:59.557235Z",{"title":688,"slug":689,"cover":9,"excerpt":690,"publishTime":691,"categories":692,"tags":693,"priority":42,"pinned":309,"deleted":309,"visible":310,"allowComment":305},"volatile 关键字的作用？","jc-volatile",{"raw":9,"autoGenerate":305},"2026-09-13T10:00:59.633464Z",[656],[174,112,119],{"permalink":695,"excerpt":696,"lastModifyTime":697,"phase":314},"\u002Farchives\u002Fjc-volatile","一、两大作用 可见性：被 volatile 修饰的变量，一个线程修改后其他线程立即可见。实现：写入时立即刷新主内存，读取时从主内存重新加载。 禁止指令重排：在读写操作前后插入内存屏障。 二、不保证原子性 volatile int count = 0;\ncount++;   \u002F\u002F 不是原子操作，多线程","2026-09-16T09:13:45.577642Z",[699],{"metadata":700,"spec":703,"status":704,"postCount":88},{"name":656,"creationTimestamp":665,"labels":701,"annotations":702},{"haloweb.section":115},{"tutorial.halo.run\u002Fstatus":321},{"displayName":669,"slug":656,"cover":9,"description":670,"priority":158,"hideFromList":309,"preventParentPostCascadeQuery":309},{"permalink":672,"postCount":88,"visiblePostCount":88},[706,709,712],{"metadata":707,"spec":708},{"name":174},{"displayName":176,"slug":177},{"metadata":710,"spec":711},{"name":112},{"displayName":114,"slug":115},{"metadata":713,"spec":714},{"name":119},{"displayName":121,"slug":122},{"metadata":716,"spec":719,"status":726,"categories":730,"tags":737},{"name":717,"creationTimestamp":718},"post-jc-aqs-principle-2a5a9213","2026-09-13T10:00:59.136776Z",{"title":720,"slug":721,"cover":9,"excerpt":722,"publishTime":723,"categories":724,"tags":725,"priority":42,"pinned":309,"deleted":309,"visible":310,"allowComment":305},"AQS 的原理是什么？","jc-aqs-principle",{"raw":9,"autoGenerate":305},"2026-09-13T10:00:59.366386Z",[656],[112,174,119],{"permalink":727,"excerpt":728,"lastModifyTime":729,"phase":314},"\u002Farchives\u002Fjc-aqs-principle","一、定义 AQS（AbstractQueuedSynchronizer）是 JUC 锁的基础框架，用一个 int 状态变量（state）和一个 FIFO 等待队列实现同步。 二、核心 state：同步状态，0 表示空闲，>0 表示被占用。 CLH 队列：未获取锁的线程封装成 Node 入队，自旋 +","2026-09-16T09:14:31.781664Z",[731],{"metadata":732,"spec":735,"status":736,"postCount":88},{"name":656,"creationTimestamp":665,"labels":733,"annotations":734},{"haloweb.section":115},{"tutorial.halo.run\u002Fstatus":321},{"displayName":669,"slug":656,"cover":9,"description":670,"priority":158,"hideFromList":309,"preventParentPostCascadeQuery":309},{"permalink":672,"postCount":88,"visiblePostCount":88},[738,741,744],{"metadata":739,"spec":740},{"name":112},{"displayName":114,"slug":115},{"metadata":742,"spec":743},{"name":174},{"displayName":176,"slug":177},{"metadata":745,"spec":746},{"name":119},{"displayName":121,"slug":122},{"metadata":748,"spec":751,"status":758,"categories":762,"tags":769},{"name":749,"creationTimestamp":750},"post-jc-thread-pool-9d19f73f","2026-09-13T10:00:58.904245Z",{"title":752,"slug":753,"cover":9,"excerpt":754,"publishTime":755,"categories":756,"tags":757,"priority":42,"pinned":309,"deleted":309,"visible":310,"allowComment":305},"线程池的核心参数与工作流程？","jc-thread-pool",{"raw":9,"autoGenerate":305},"2026-09-13T10:00:58.966174Z",[656],[119,112,174],{"permalink":759,"excerpt":760,"lastModifyTime":761,"phase":314},"\u002Farchives\u002Fjc-thread-pool","一、七大核心参数 corePoolSize：核心线程数，即使空闲也保留。 maximumPoolSize：最大线程数。 keepAliveTime：非核心线程空闲存活时间。 unit：时间单位。 workQueue：阻塞队列。 threadFactory：线程工厂。 handler：拒绝策略。 二、","2026-09-16T09:13:44.180134Z",[763],{"metadata":764,"spec":767,"status":768,"postCount":88},{"name":656,"creationTimestamp":665,"labels":765,"annotations":766},{"haloweb.section":115},{"tutorial.halo.run\u002Fstatus":321},{"displayName":669,"slug":656,"cover":9,"description":670,"priority":158,"hideFromList":309,"preventParentPostCascadeQuery":309},{"permalink":672,"postCount":88,"visiblePostCount":88},[770,773,776],{"metadata":771,"spec":772},{"name":119},{"displayName":121,"slug":122},{"metadata":774,"spec":775},{"name":112},{"displayName":114,"slug":115},{"metadata":777,"spec":778},{"name":174},{"displayName":176,"slug":177},{"metadata":780,"spec":783,"status":790,"categories":794,"tags":801},{"name":781,"creationTimestamp":782},"post-jc-synchronized-vs-reentrantlock-135c349a","2026-09-13T10:00:58.693292Z",{"title":784,"slug":785,"cover":9,"excerpt":786,"publishTime":787,"categories":788,"tags":789,"priority":42,"pinned":309,"deleted":309,"visible":310,"allowComment":305},"synchronized 和 ReentrantLock 的区别？","jc-synchronized-vs-reentrantlock",{"raw":9,"autoGenerate":305},"2026-09-13T10:00:58.757444Z",[656],[112,119,174],{"permalink":791,"excerpt":792,"lastModifyTime":793,"phase":314},"\u002Farchives\u002Fjc-synchronized-vs-reentrantlock","一、底层实现 synchronized：JVM 级，字节码指令 monitorenter\u002Fmonitorexit，依赖对象头的 Mark Word。 ReentrantLock：JDK 级，基于 AQS（AbstractQueuedSynchronizer）实现。 二、对比 维度 synchroni","2026-09-16T09:14:31.338006Z",[795],{"metadata":796,"spec":799,"status":800,"postCount":88},{"name":656,"creationTimestamp":665,"labels":797,"annotations":798},{"haloweb.section":115},{"tutorial.halo.run\u002Fstatus":321},{"displayName":669,"slug":656,"cover":9,"description":670,"priority":158,"hideFromList":309,"preventParentPostCascadeQuery":309},{"permalink":672,"postCount":88,"visiblePostCount":88},[802,805,808],{"metadata":803,"spec":804},{"name":112},{"displayName":114,"slug":115},{"metadata":806,"spec":807},{"name":119},{"displayName":121,"slug":122},{"metadata":809,"spec":810},{"name":174},{"displayName":176,"slug":177},{"metadata":812,"spec":815,"status":822,"categories":826,"tags":838},{"name":813,"creationTimestamp":814},"post-jvm-oom-types-66061da5","2026-09-13T10:00:58.521007Z",{"title":816,"slug":817,"cover":9,"excerpt":818,"publishTime":819,"categories":820,"tags":821,"priority":42,"pinned":309,"deleted":309,"visible":310,"allowComment":305},"常见的 OOM 有哪些？","jvm-oom-types",{"raw":9,"autoGenerate":305},"2026-09-13T10:00:58.572152Z",[220],[112,119,217],{"permalink":823,"excerpt":824,"lastModifyTime":825,"phase":314},"\u002Farchives\u002Fjvm-oom-types","一、Java heap space 堆内存不足，对象太多或内存泄漏。排查：dump 堆快照，用 MAT 分析大对象\u002F泄漏点。 二、GC overhead limit exceeded GC 耗时过长（98% 时间用于 GC 且回收不到 2% 内存）。通常是堆太小或内存泄漏。 三、Java.lang.","2026-09-16T09:14:30.722962Z",[827],{"metadata":828,"spec":832,"status":836,"postCount":88},{"name":220,"creationTimestamp":829,"labels":830,"annotations":831},"2026-09-13T09:13:25.841121Z",{"haloweb.section":115},{"tutorial.halo.run\u002Fstatus":321},{"displayName":833,"slug":220,"cover":9,"description":834,"priority":835,"hideFromList":309,"preventParentPostCascadeQuery":309},"JVM 面试题","JVM 面试题：内存区域、垃圾回收算法与收集器、类加载机制与线上调优参数。",21,{"permalink":837,"postCount":88,"visiblePostCount":88},"\u002Fcategories\u002Fjvm",[839,842,845],{"metadata":840,"spec":841},{"name":112},{"displayName":114,"slug":115},{"metadata":843,"spec":844},{"name":119},{"displayName":121,"slug":122},{"metadata":846,"spec":847},{"name":217},{"displayName":219,"slug":220},{"metadata":849,"spec":852,"status":859,"categories":863,"tags":870},{"name":850,"creationTimestamp":851},"post-jvm-class-loading-e984c960","2026-09-13T10:00:58.362832Z",{"title":853,"slug":854,"cover":9,"excerpt":855,"publishTime":856,"categories":857,"tags":858,"priority":42,"pinned":309,"deleted":309,"visible":310,"allowComment":305},"类加载过程是怎样的？","jvm-class-loading",{"raw":9,"autoGenerate":305},"2026-09-13T10:00:58.408526Z",[220],[217,112,119],{"permalink":860,"excerpt":861,"lastModifyTime":862,"phase":314},"\u002Farchives\u002Fjvm-class-loading","一、五个阶段 加载：通过类的全限定名获取二进制字节流，在内存中生成 Class 对象。 验证：校验字节码的合法性（魔数、版本、语义）。 准备：为类的静态变量分配内存并赋默认值（零值），final static 在编译期已赋值。 解析：把符号引用替换为直接引用。 初始化：执行 \u003Cclinit> 方法，","2026-09-16T09:13:36.695610Z",[864],{"metadata":865,"spec":868,"status":869,"postCount":88},{"name":220,"creationTimestamp":829,"labels":866,"annotations":867},{"haloweb.section":115},{"tutorial.halo.run\u002Fstatus":321},{"displayName":833,"slug":220,"cover":9,"description":834,"priority":835,"hideFromList":309,"preventParentPostCascadeQuery":309},{"permalink":837,"postCount":88,"visiblePostCount":88},[871,874,877],{"metadata":872,"spec":873},{"name":217},{"displayName":219,"slug":220},{"metadata":875,"spec":876},{"name":112},{"displayName":114,"slug":115},{"metadata":878,"spec":879},{"name":119},{"displayName":121,"slug":122},{"metadata":881,"spec":884,"status":891,"categories":895,"tags":902},{"name":882,"creationTimestamp":883},"post-jvm-cms-vs-g1-a6ba005b","2026-09-13T10:00:58.169843Z",{"title":885,"slug":886,"cover":9,"excerpt":887,"publishTime":888,"categories":889,"tags":890,"priority":42,"pinned":309,"deleted":309,"visible":310,"allowComment":305},"CMS 和 G1 的区别？","jvm-cms-vs-g1",{"raw":9,"autoGenerate":305},"2026-09-13T10:00:58.215157Z",[220],[119,217,112],{"permalink":892,"excerpt":893,"lastModifyTime":894,"phase":314},"\u002Farchives\u002Fjvm-cms-vs-g1","一、CMS 基于标记-清除算法。 以最短停顿时间为目标。 流程：初始标记（STW）→ 并发标记 → 重新标记（STW）→ 并发清除。 缺点：内存碎片、并发阶段消耗 CPU、浮动垃圾、可能 Concurrent Mode Failure 退化为 Serial Old。 二、G1 把堆分成多个 Regi","2026-09-16T09:12:31.222727Z",[896],{"metadata":897,"spec":900,"status":901,"postCount":88},{"name":220,"creationTimestamp":829,"labels":898,"annotations":899},{"haloweb.section":115},{"tutorial.halo.run\u002Fstatus":321},{"displayName":833,"slug":220,"cover":9,"description":834,"priority":835,"hideFromList":309,"preventParentPostCascadeQuery":309},{"permalink":837,"postCount":88,"visiblePostCount":88},[903,906,909],{"metadata":904,"spec":905},{"name":119},{"displayName":121,"slug":122},{"metadata":907,"spec":908},{"name":217},{"displayName":219,"slug":220},{"metadata":910,"spec":911},{"name":112},{"displayName":114,"slug":115},{"metadata":913,"spec":916,"status":923,"categories":927,"tags":934},{"name":914,"creationTimestamp":915},"post-jvm-gc-algorithms-f3d021b9","2026-09-13T10:00:57.985775Z",{"title":917,"slug":918,"cover":9,"excerpt":919,"publishTime":920,"categories":921,"tags":922,"priority":42,"pinned":309,"deleted":309,"visible":310,"allowComment":305},"常见的垃圾回收算法？","jvm-gc-algorithms",{"raw":9,"autoGenerate":305},"2026-09-13T10:00:58.037353Z",[220],[112,119,217],{"permalink":924,"excerpt":925,"lastModifyTime":926,"phase":314},"\u002Farchives\u002Fjvm-gc-algorithms","一、判断对象是否可回收 引用计数法：对象被引用计数 +1，为 0 则回收。无法解决循环引用。 可达性分析：从 GC Roots 出发，不可达的对象可回收。GC Roots 包括栈中引用、静态变量、常量、JNI 引用。 二、回收算法 标记-清除：标记存活对象，清除垃圾。缺点：内存碎片。 标记-复制：内","2026-09-16T09:13:37.177956Z",[928],{"metadata":929,"spec":932,"status":933,"postCount":88},{"name":220,"creationTimestamp":829,"labels":930,"annotations":931},{"haloweb.section":115},{"tutorial.halo.run\u002Fstatus":321},{"displayName":833,"slug":220,"cover":9,"description":834,"priority":835,"hideFromList":309,"preventParentPostCascadeQuery":309},{"permalink":837,"postCount":88,"visiblePostCount":88},[935,938,941],{"metadata":936,"spec":937},{"name":112},{"displayName":114,"slug":115},{"metadata":939,"spec":940},{"name":119},{"displayName":121,"slug":122},{"metadata":942,"spec":943},{"name":217},{"displayName":219,"slug":220},{"metadata":945,"spec":948,"status":955,"categories":959,"tags":966},{"name":946,"creationTimestamp":947},"post-jvm-memory-structure-42710c3c","2026-09-13T10:00:57.786002Z",{"title":949,"slug":950,"cover":9,"excerpt":951,"publishTime":952,"categories":953,"tags":954,"priority":42,"pinned":309,"deleted":309,"visible":310,"allowComment":305},"JVM 运行时内存结构？","jvm-memory-structure",{"raw":9,"autoGenerate":305},"2026-09-13T10:00:57.832357Z",[220],[112,119,217],{"permalink":956,"excerpt":957,"lastModifyTime":958,"phase":314},"\u002Farchives\u002Fjvm-memory-structure","一、线程私有 程序计数器：记录当前线程执行的字节码行号，唯一不会 OOM 的区域。 虚拟机栈：每个方法调用创建一个栈帧，存局部变量、操作数栈、动态链接。栈深度过深抛 StackOverflowError。 本地方法栈：为 native 方法服务。 二、线程共享 堆：对象实例和数组，GC 主要区域，可","2026-09-16T09:13:37.671380Z",[960],{"metadata":961,"spec":964,"status":965,"postCount":88},{"name":220,"creationTimestamp":829,"labels":962,"annotations":963},{"haloweb.section":115},{"tutorial.halo.run\u002Fstatus":321},{"displayName":833,"slug":220,"cover":9,"description":834,"priority":835,"hideFromList":309,"preventParentPostCascadeQuery":309},{"permalink":837,"postCount":88,"visiblePostCount":88},[967,970,973],{"metadata":968,"spec":969},{"name":112},{"displayName":114,"slug":115},{"metadata":971,"spec":972},{"name":119},{"displayName":121,"slug":122},{"metadata":974,"spec":975},{"name":217},{"displayName":219,"slug":220}]