[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"site-settings":3,"\u002Fcategories":26,"\u002Farticles:{\"page\":2,\"size\":20,\"keyword\":\"\"}":54},{"code":4,"message":5,"data":6},0,"ok",{"author_city":7,"author_years":8,"site_tagline":9,"site_description":10,"skill_one_desc":11,"author_status":12,"skill_two_title":13,"about_hero_image":9,"skill_one_title":14,"icp":15,"author_role":16,"og_default_image":9,"closing_quote_date":17,"toolkit":18,"skill_two_desc":19,"author_bio":9,"site_footer":9,"site_url":20,"author_tagline":21,"weekly_thought":9,"tagline_line_one":22,"author_bio_two":9,"closing_quote":23,"site_name":24,"tagline_line_two":25,"home_hero_image":9},"西安","10","","花开空白 - 个人博客","熟悉Java、Python、Go等后端语言。","努力工作中","前端开发","后端开发","陕ICP备2021009682号-1","开发者","2022年·秋","Java,JavaScript,TypeScript,Python,Go","熟悉Js、Ts语言以及Vue、uniapp等框架。","https:\u002F\u002Firule.cn","很高兴遇见你。","把复杂的事，","把每次一发布，都当成一次和陌生人的握手。","花开空白","写成简单的故事。",{"code":4,"message":5,"data":27},[28,34,40,47],{"id":29,"name":30,"slug":31,"description":32,"sortOrder":4,"articleCount":33},"1946000000000000001","antlr4","tech","编程与技术笔记","13",{"id":35,"name":36,"slug":37,"description":38,"sortOrder":4,"articleCount":39},"2113897628365230081","设计模式","design-pattern","设计模式系列","34",{"id":41,"name":42,"slug":43,"description":44,"sortOrder":45,"articleCount":46},"1946000000000000002","随笔","essay","生活与思考",1,"0",{"id":48,"name":49,"slug":50,"description":51,"sortOrder":52,"articleCount":53},"2105200093764698113","工具","tools","好用的工具推荐",2,"1",{"code":4,"message":5,"data":55},{"list":56,"total":227,"page":228,"size":229},[57,66,75,83,92,100,108,116,125,134,142,151,159,168,176,185,194,202,210,219],{"id":58,"slug":59,"title":60,"summary":61,"coverUrl":9,"categoryId":35,"status":45,"topFlag":4,"viewCount":62,"likeCount":4,"wordCount":63,"readingMinutes":64,"publishedAt":65},"2113931965261418497","design-pattern-15","设计模式修炼之路 ⑮ 策略模式——if-else 的解药","一个分支一个类、工厂加 Map 连选择处都不写 if-else、Spring 自动收集、线程池拒绝策略",1681,7953,20,"2024-06-16T18:10:44",{"id":67,"slug":68,"title":69,"summary":70,"coverUrl":9,"categoryId":35,"status":45,"topFlag":4,"viewCount":71,"likeCount":4,"wordCount":72,"readingMinutes":73,"publishedAt":74},"2113933745433088002","design-pattern-14","设计模式修炼之路 ⑭ 模板模式——焊死骨架，留白细节","final 焊死流程骨架、四种方法各司其职、钩子是选答题、从 Servlet 到 AQS 全是填空",3418,8834,23,"2024-06-13T15:33:43",{"id":76,"slug":77,"title":78,"summary":79,"coverUrl":9,"categoryId":35,"status":45,"topFlag":4,"viewCount":80,"likeCount":4,"wordCount":81,"readingMinutes":73,"publishedAt":82},"2113932970753527809","design-pattern-13","设计模式修炼之路 ⑬ 代理模式——控制访问，而非增强","控制访问而非增强、JDK 动态代理的 $Proxy0、CGLIB 与 Spring AOP 的老搭档",3804,9153,"2024-05-02T10:29:24",{"id":84,"slug":85,"title":86,"summary":87,"coverUrl":9,"categoryId":35,"status":45,"topFlag":4,"viewCount":88,"likeCount":4,"wordCount":89,"readingMinutes":90,"publishedAt":91},"2113931783249596417","design-pattern-12","设计模式修炼之路 ⑫ 享元模式——共享细粒度对象","共享细粒度对象、内部状态与外部状态的切分、Integer 缓存与字符串常量池",2866,6956,18,"2024-04-15T17:46:59",{"id":93,"slug":94,"title":95,"summary":96,"coverUrl":9,"categoryId":35,"status":45,"topFlag":4,"viewCount":97,"likeCount":4,"wordCount":98,"readingMinutes":64,"publishedAt":99},"2113933638763548673","design-pattern-11","设计模式修炼之路 ⑪ 外观模式——给杂乱子系统一个入口","给杂乱子系统一个统一入口、只编排不干活、SLF4J 名字里的 Facade",3176,7681,"2024-03-20T15:49:38",{"id":101,"slug":102,"title":103,"summary":104,"coverUrl":9,"categoryId":35,"status":45,"topFlag":4,"viewCount":105,"likeCount":4,"wordCount":106,"readingMinutes":64,"publishedAt":107},"2113931625669595138","design-pattern-10","设计模式修炼之路 ⑩ 装饰器模式——不改原类，动态加功能","不改原类动态加功能、\"我是组件+我有组件\"、Java IO 流的套娃设计",1003,7847,"2024-02-10T15:14:16",{"id":109,"slug":110,"title":111,"summary":112,"coverUrl":9,"categoryId":35,"status":45,"topFlag":4,"viewCount":113,"likeCount":4,"wordCount":114,"readingMinutes":64,"publishedAt":115},"2113931567565901825","design-pattern-09","设计模式修炼之路 ⑨ 组合模式——叶子和容器一视同仁","部分-整体、叶子和容器一视同仁、在 DOM\u002FMyBatis 里找它",3281,7735,"2024-01-25T15:35:13",{"id":117,"slug":118,"title":119,"summary":120,"coverUrl":9,"categoryId":35,"status":45,"topFlag":4,"viewCount":121,"likeCount":4,"wordCount":122,"readingMinutes":123,"publishedAt":124},"2113931511261564929","design-pattern-08","设计模式修炼之路 ⑧ 过滤器模式——与或非条件当积木","非 GoF、与或非条件当积木、Predicate 是 JDK 收编版",3801,7442,19,"2024-01-08T20:51:45",{"id":126,"slug":127,"title":128,"summary":129,"coverUrl":9,"categoryId":35,"status":45,"topFlag":4,"viewCount":130,"likeCount":4,"wordCount":131,"readingMinutes":132,"publishedAt":133},"2113931455091445761","design-pattern-07","设计模式修炼之路 ⑦ 桥接模式——m×n 降为 m+n","继承爆炸的解药、m×n 降为 m+n、在 JDBC 里找它",1907,5226,14,"2023-12-15T15:12:08",{"id":135,"slug":136,"title":137,"summary":138,"coverUrl":9,"categoryId":35,"status":45,"topFlag":4,"viewCount":139,"likeCount":4,"wordCount":140,"readingMinutes":132,"publishedAt":141},"2113931305484816386","design-pattern-06","设计模式修炼之路 ⑥ 适配器模式——让不兼容的接口握手","类适配器 vs 对象适配器、在 Spring MVC 里找它",1578,5381,"2023-12-11T21:59:29",{"id":143,"slug":144,"title":145,"summary":146,"coverUrl":9,"categoryId":35,"status":45,"topFlag":4,"viewCount":147,"likeCount":4,"wordCount":148,"readingMinutes":149,"publishedAt":150},"2113931247385317377","design-pattern-05","设计模式修炼之路 ⑤ 原型模式——clone() 的浅与深","clone() 与 Cloneable、浅拷贝踩坑、逐字段克隆与序列化两种深拷贝",2661,5758,15,"2023-11-17T17:12:14",{"id":152,"slug":153,"title":154,"summary":155,"coverUrl":9,"categoryId":35,"status":45,"topFlag":4,"viewCount":156,"likeCount":4,"wordCount":157,"readingMinutes":123,"publishedAt":158},"2113931192066641922","design-pattern-04","设计模式修炼之路 ④ 建造者模式——告别重叠构造器","重叠构造器的坑、经典四角色建造者、Effective Java 式链式 Builder",3577,7441,"2023-11-06T18:16:44",{"id":160,"slug":161,"title":162,"summary":163,"coverUrl":9,"categoryId":35,"status":45,"topFlag":4,"viewCount":164,"likeCount":4,"wordCount":165,"readingMinutes":166,"publishedAt":167},"2113931131085656066","design-pattern-03","设计模式修炼之路 ③ 工厂模式——简单工厂、工厂方法、抽象工厂三兄弟","简单工厂、工厂方法、抽象工厂三兄弟的演进与取舍、开闭原则得失",3741,6415,17,"2023-10-13T21:36:05",{"id":169,"slug":170,"title":171,"summary":172,"coverUrl":9,"categoryId":35,"status":45,"topFlag":4,"viewCount":173,"likeCount":4,"wordCount":174,"readingMinutes":132,"publishedAt":175},"2113930718034792450","design-pattern-02","设计模式修炼之路 ② 单例模式——一个实例，六种写法","一个类在整个应用里只允许存在一个实例——听着是一句话需求，做起来是一路打怪：懒汉式、饿汉式、双重校验锁、静态内部类、枚举，六种写法沿着\"线程安全\"这条主线层层演进。",1709,5238,"2023-09-24T10:50:03",{"id":177,"slug":178,"title":179,"summary":180,"coverUrl":9,"categoryId":35,"status":45,"topFlag":4,"viewCount":181,"likeCount":4,"wordCount":182,"readingMinutes":183,"publishedAt":184},"2113907939247919106","design-pattern-01","设计模式修炼之路 ① 初识设计模式——先把地图摊开","这是系列的第一篇，没有一行代码：设计模式是什么、模式分哪四大家族、六大原则长什么样。先把地图摊开，路从下一篇开始走。",3268,1903,5,"2023-09-10T12:19:35",{"id":186,"slug":187,"title":188,"summary":189,"coverUrl":190,"categoryId":29,"status":45,"topFlag":4,"viewCount":191,"likeCount":4,"wordCount":192,"readingMinutes":132,"publishedAt":193},"2101652901984649217","antlr4-13-listener-vs-visitor","Antlr4系列⑬：Listener模式对比","用Listener重新实现部分能力、实测对比if\u002Felse下Listener与Visitor的行为差异",null,2541,5439,"2023-07-31T14:50:16",{"id":195,"slug":196,"title":197,"summary":198,"coverUrl":190,"categoryId":29,"status":45,"topFlag":4,"viewCount":199,"likeCount":4,"wordCount":200,"readingMinutes":149,"publishedAt":201},"2101647962931642369","antlr4-12-string-concat-expressions","Antlr4系列⑫：字符串拼接与通用表达式","calcu升级为通用表达式、字符串拼接、setArg\u002FassignStmt\u002Fprint合并简化",2813,5692,"2023-07-16T20:51:12",{"id":203,"slug":204,"title":205,"summary":206,"coverUrl":190,"categoryId":29,"status":45,"topFlag":4,"viewCount":207,"likeCount":4,"wordCount":208,"readingMinutes":132,"publishedAt":209},"2101642321643094018","antlr4-11-builtin-functions","Antlr4系列⑪：内置函数注册机制","BuiltinFunction注册表、len\u002Fsum\u002Fabs\u002Fmax、放宽变量类型限制",2508,5528,"2023-07-01T14:48:19",{"id":211,"slug":212,"title":213,"summary":214,"coverUrl":190,"categoryId":29,"status":45,"topFlag":4,"viewCount":215,"likeCount":4,"wordCount":216,"readingMinutes":217,"publishedAt":218},"2101635146136862722","antlr4-10-arrays","Antlr4系列⑩：支持数组","array类型、字面量、下标读写、len",3910,5036,13,"2023-06-16T20:20:11",{"id":220,"slug":221,"title":222,"summary":223,"coverUrl":190,"categoryId":29,"status":45,"topFlag":4,"viewCount":224,"likeCount":4,"wordCount":225,"readingMinutes":149,"publishedAt":226},"2101631008783122433","antlr4-09-debugger-step-over","Antlr4系列⑨：调试器进阶之Step Over与条件断点","Step Into\u002FOver\u002FOut、调用栈展示、条件断点",3347,5666,"2023-06-01T14:02:28","48","2","20"]