1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[61436],{91595:function(e,n,i){(window.__NEXT_P=window.__NEXT_P||[]).push(["/blog/anki/next-step",function(){return i(83013)}])},83013:function(e,n,i){"use strict";i.r(n),i.d(n,{__toc:function(){return o}});var r=i(85893),a=i(92673),t=i(37320),d=i(39812);i(16719),i(46834);var s=i(82643);let o=[{depth:2,value:"Database",id:"database"},{depth:3,value:"1. ì±ë¥ ìµì í & íë",id:"1-ì±ë¥-ìµì í--íë"},{depth:3,value:"2. í¸ëìì
& ëìì± ì ì´",id:"2-í¸ëìì
--ëìì±-ì ì´"},{depth:3,value:"3. ë³µì & ê³ ê°ì©ì±",id:"3-ë³µì --ê³ ê°ì©ì±"},{depth:3,value:"4. ì¤ë© & íí°ì
ë",id:"4-ì¤ë©--íí°ì
ë"},{depth:3,value:"5. ì¤í¤ë§ ì¤ê³ & 모ë¸ë§",id:"5-ì¤í¤ë§-ì¤ê³--모ë¸ë§"},{depth:3,value:"6. ë°±ì
& 복구",id:"6-ë°±ì
--복구"},{depth:3,value:"7. ìºì± ì ëµ",id:"7-ìºì±-ì ëµ"},{depth:3,value:"8. 모ëí°ë§ & ì¥ì ëì",id:"8-모ëí°ë§--ì¥ì -ëì"},{depth:3,value:"9. ë§ì´ê·¸ë ì´ì
& ì¤í¤ë§ ë³ê²½",id:"9-ë§ì´ê·¸ë ì´ì
--ì¤í¤ë§-ë³ê²½"},{depth:3,value:"10. ë³´ì",id:"10-ë³´ì"},{depth:3,value:"11. ì¤ì ì¥ì ì¬ë¡ ê¸°ë° ì§ë¬¸",id:"11-ì¤ì -ì¥ì -ì¬ë¡-기ë°-ì§ë¬¸"},{depth:2,value:"Redis",id:"redis"},{depth:3,value:"1. 기본 ê°ë
& ìí¤í
ì²",id:"1-기본-ê°ë
--ìí¤í
ì²"},{depth:3,value:"2. ë°ì´í° íì
& íì©",id:"2-ë°ì´í°-íì
--íì©"},{depth:3,value:"3. ìºì± ì ëµ",id:"3-ìºì±-ì ëµ"},{depth:3,value:"4. ë¶ì° ë½ (Distributed Lock)",id:"4-ë¶ì°-ë½-distributed-lock"},{depth:3,value:"5. ììì± (Persistence)",id:"5-ììì±-persistence"},{depth:3,value:"6. ë³µì (Replication)",id:"6-ë³µì -replication"},{depth:3,value:"7. ê³ ê°ì©ì± (Sentinel)",id:"7-ê³ ê°ì©ì±-sentinel"},{depth:3,value:"8. í´ë¬ì¤í° (Redis Cluster)",id:"8-í´ë¬ì¤í°-redis-cluster"},{depth:3,value:"9. ì±ë¥ ìµì í",id:"9-ì±ë¥-ìµì í"},{depth:3,value:"10. í¸ëìì
& ììì±",id:"10-í¸ëìì
--ììì±"},{depth:3,value:"11. 모ëí°ë§ & ì¥ì ëì",id:"11-모ëí°ë§--ì¥ì -ëì"},{depth:3,value:"12. Rate Limiting",id:"12-rate-limiting"},{depth:3,value:"13. ì¸ì
ê´ë¦¬",id:"13-ì¸ì
-ê´ë¦¬"},{depth:3,value:"14. ì¤ìê° ê¸°ë¥ êµ¬í",id:"14-ì¤ìê°-기ë¥-구í"},{depth:3,value:"15. ë³´ì",id:"15-ë³´ì"},{depth:3,value:"16. ì¤ì ì¥ì ì¬ë¡ 기ë°",id:"16-ì¤ì -ì¥ì -ì¬ë¡-기ë°"},{depth:3,value:"17. ìí¤í
ì² ì¤ê³",id:"17-ìí¤í
ì²-ì¤ê³"},{depth:2,value:"Spring",id:"spring"},{depth:3,value:"1. Spring Core (IoC, DI, AOP)",id:"1-spring-core-ioc-di-aop"},{depth:3,value:"2. Spring Boot",id:"2-spring-boot"},{depth:3,value:"3. Spring MVC / WebFlux",id:"3-spring-mvc--webflux"},{depth:3,value:"4. Spring Data JPA",id:"4-spring-data-jpa"},{depth:3,value:"5. Transaction Management",id:"5-transaction-management"},{depth:3,value:"6. Spring Security",id:"6-spring-security"},{depth:3,value:"7. ì±ë¥ ìµì í",id:"7-ì±ë¥-ìµì í"},{depth:3,value:"8. í
ì¤í
",id:"8-í
ì¤í
"},{depth:3,value:"9. ë¹ë기 ì²ë¦¬ & ì¤ì¼ì¤ë§",id:"9-ë¹ë기-ì²ë¦¬--ì¤ì¼ì¤ë§"},{depth:3,value:"10. API ì¤ê³ & ë²ì ê´ë¦¬",id:"10-api-ì¤ê³--ë²ì ê´ë¦¬"},{depth:3,value:"11. ìë¬ í¸ë¤ë§ & ë¡ê¹
",id:"11-ìë¬-í¸ë¤ë§--ë¡ê¹
"},{depth:3,value:"12. í´ë¼ì°ë & 컨í
ì´ë",id:"12-í´ë¼ì°ë--컨í
ì´ë"},{depth:3,value:"13. ë©í°ëª¨ë & ìí¤í
ì²",id:"13-ë©í°ëª¨ë--ìí¤í
ì²"},{depth:3,value:"14. ì¤ì ì¥ì ì¬ë¡ 기ë°",id:"14-ì¤ì -ì¥ì -ì¬ë¡-기ë°"},{depth:3,value:"15. ì½ë íì§ & ì¤ê³",id:"15-ì½ë-íì§--ì¤ê³"},{depth:3,value:"16. ì±ë¥ 측ì & íë¡íì¼ë§",id:"16-ì±ë¥-측ì --íë¡íì¼ë§"},{depth:3,value:"17. ìµì 기ì & í¸ë ë",id:"17-ìµì -기ì --í¸ë ë"},{depth:2,value:"Java",id:"java"},{depth:3,value:"Java 기본 ê°ë
",id:"java-기본-ê°ë
"},{depth:3,value:"ê°ì²´ì§í¥ íë¡ê·¸ëë°(OOP)",id:"ê°ì²´ì§í¥-íë¡ê·¸ëë°oop"},{depth:3,value:"ë©ëª¨ë¦¬ ê´ë¦¬",id:"ë©ëª¨ë¦¬-ê´ë¦¬"},{depth:3,value:"ìë£íê³¼ ë³ì",id:"ìë£íê³¼-ë³ì"},{depth:3,value:"ìì¸ ì²ë¦¬",id:"ìì¸-ì²ë¦¬"},{depth:3,value:"ì ë¤ë¦(Generic)",id:"ì ë¤ë¦generic"},{depth:3,value:"컬ë ì
íë ììí¬",id:"컬ë ì
-íë ììí¬"},{depth:3,value:"ëë¤ì ì¤í¸ë¦¼",id:"ëë¤ì-ì¤í¸ë¦¼"},{depth:3,value:"ë©í°ì¤ë ë©",id:"ë©í°ì¤ë ë©"},{depth:3,value:"Java 8+ 주ì 기ë¥",id:"java-8-주ì-기ë¥"},{depth:3,value:"í´ëì¤ ë¡ë©",id:"í´ëì¤-ë¡ë©"},{depth:3,value:"ì±ë¥ê³¼ ìµì í",id:"ì±ë¥ê³¼-ìµì í"},{depth:3,value:"기í ì¤ì ê°ë
",id:"기í-ì¤ì-ê°ë
"},{depth:3,value:"ì¶ì²",id:"ì¶ì²"}];function _createMdxContent(e){let n=Object.assign({h2:"h2",p:"p",h3:"h3",strong:"strong",ul:"ul",li:"li",ol:"ol",a:"a"},(0,s.a)(),e.components);return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h2,{id:"database",children:"Database"}),"\n",(0,r.jsx)(n.p,{children:"ë°ì´í°ë² ì´ì¤ ì¤ë¬´ ì§ë¬¸ë¤ì ëì´ëë³ë¡ ì 리íìµëë¤."}),"\n",(0,r.jsx)(n.h3,{id:"1-ì±ë¥-ìµì í--íë",children:"1. ì±ë¥ ìµì í & íë"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"기본:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"ì¸ë±ì¤ë¥¼ ì¶ê°íëë° ì¤íë ¤ ì±ë¥ì´ ë¨ì´ì¡ìµëë¤. ì ê·¸ë´ê¹ì? â
"}),"\n",(0,r.jsx)(n.li,{children:"EXPLAIN ê²°ê³¼ìì typeì´ ALLë¡ ëì¤ëë° ì´ë»ê² ê°ì í ì ìëì? â
"}),"\n",(0,r.jsx)(n.li,{children:"쿼리 ìëê° ëë¦°ë° ì¸ë±ì¤ 문ì ì¸ì§ ì´ë»ê² íë¨íëì? â
"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"ì¤ê¸:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Covering Indexì ì¼ë° Indexì ì¤ì ì±ë¥ ì°¨ì´ë ì¼ë§ë ë ê¹ì? â
"}),"\n",(0,r.jsx)(n.li,{children:"JOIN ììê° ì±ë¥ì ì´ë¤ ìí¥ì 미ì¹ëì? ìµí°ë§ì´ì ê° íì ìµì ì ìì를 ì ííëì? â
"}),"\n",(0,r.jsx)(n.li,{children:"ë³µí© ì¸ë±ì¤ìì ì»¬ë¼ ìì를 ì´ë»ê² ê²°ì í´ì¼ íëì?"}),"\n",(0,r.jsx)(n.li,{children:"WHERE ì ì í¨ì를 ì¬ì©íë©´ ì ì¸ë±ì¤ë¥¼ 못 íëì? í´ê²° ë°©ë²ì?"}),"\n",(0,r.jsx)(n.li,{children:"íì´ì§ 쿼리ìì OFFSETì´ í¬ë©´ ëë ¤ì§ëë°, ì´ë»ê² ê°ì í ì ìëì?"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"ê³ ê¸:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"10ìµ ê±´ì ë°ì´í°ìì GROUP BY ì§ê³ ì¿¼ë¦¬ê° ë무 ë립ëë¤. ì´ë»ê² ìµì ííìê² ìµëê¹?"}),"\n",(0,r.jsx)(n.li,{children:"Index Skip Scanì ì¸ì ë°ìíê³ , ì´ë»ê² íì©í ì ìëì?"}),"\n",(0,r.jsx)(n.li,{children:"Cardinalityê° ë®ì 컬ë¼ì ì¸ë±ì¤ë¥¼ 걸ì´ì¼ í ëê° ìëì?"}),"\n",(0,r.jsx)(n.li,{children:"Buffer Pool í¬ê¸°ë ì´ë»ê² ì¤ì í´ì¼ ìµì ì¼ê¹ì?"}),"\n",(0,r.jsx)(n.li,{children:"íµê³ ì ë³´ê° ì¤ëëì´ ì¤í ê³íì´ ì못 ì립ëë ê²½ì° ì´ë»ê² ëìíëì?"}),"\n"]}
1),"\n",(0,r.jsx)(n.h3,{id:"2-í¸ëìì
--ëìì±-ì ì´",children:"2. í¸ëìì
& ëìì± ì ì´"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"기본:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"READ COMMITTEDì REPEATABLE READì ì¤ì ì°¨ì´ë¥¼ ê²½íí ì ì´ ìëì?"}),"\n",(0,r.jsx)(n.li,{children:"í¸ëìì
ì´ ê¸¸ì´ì§ë©´ ì´ë¤ 문ì ê° ë°ìíëì?"}),"\n",(0,r.jsx)(n.li,{children:"Deadlockì´ ë°ìíì ë ì´ë»ê² í´ê²°íì
¨ëì?"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"ì¤ê¸:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"ì¬ê³ ì°¨ê° ë¡ì§ìì ëìì± ë¬¸ì 를 ì´ë»ê² í´ê²°íì
¨ëì?"}),"\n",(0,r.jsx)(n.li,{children:"SELECT FOR UPDATEì ë¹ê´ì ë½, ëê´ì ë½ ì¤ ì´ë¤ ê²ì ì ííì
¨ê³ ì ê·¸ë¬ëì?"}),"\n",(0,r.jsx)(n.li,{children:"Lost Update 문ì 를 ì¤ì ë¡ ê²½ííì ì ìëì? ì´ë»ê² í´ê²°íì
¨ëì?"}),"\n",(0,r.jsx)(n.li,{children:"ë¶ì° íê²½ìì DB ë½ë§ì¼ë¡ ëìì±ì ì ì´í기 ì´ë ¤ì´ ì´ì ë?"}),"\n",(0,r.jsx)(n.li,{children:"SERIALIZABLEë¡ ì¤ì íë©´ ì±ë¥ì´ ì¼ë§ë ë¨ì´ì§ëì?"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"ê³ ê¸:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Phantom Read를 ë°©ì§í기 ìí´ Gap Lockì ì¬ì©íëë°, Deadlockì´ ì주 ë°ìí©ëë¤. ì´ë»ê² í´ê²°íëì?"}),"\n",(0,r.jsx)(n.li,{children:"MVCC íê²½ìì Long Transactionì´ Undo Log를 ê³ì ìì´ê² ë§ëë 문ì 를 ì´ë»ê² í´ê²°íëì?"}),"\n",(0,r.jsx)(n.li,{children:"Write Skew 문ì 를 ê²½ííì ì ìëì? ì´ë»ê² ê°ì§íê³ í´ê²°íëì?"}),"\n",(0,r.jsx)(n.li,{children:"2PLê³¼ MVCCì ì¤ì ì±ë¥ ì°¨ì´ë¥¼ 측ì í´ë³´ì ì ìëì?"}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"3-ë³µì --ê³ ê°ì©ì±",children:"3. ë³µì & ê³ ê°ì©ì±"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"기본:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Master-Slave 구조ìì Replication Lagì´ ë°ìíë ì´ì ë?"}),"\n",(0,r.jsx)(n.li,{children:"Read Replicaì 쿼리를 ë³´ëëë° ë°©ê¸ INSERTí ë°ì´í°ê° ì ë³´ì
ëë¤. ì ê·¸ë´ê¹ì?"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"ì¤ê¸:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Replication Lagì 모ëí°ë§íë ë°©ë²ì? ì¼ë§ë ì§ì°ëë©´ 문ì ì¸ê°ì?"}),"\n",(0,r.jsx)(n.li,{children:"Masterê° ì£½ìì ë Failover ê³¼ì ìì ë°ì´í° ì ì¤ì ë°©ì§íë ¤ë©´?"}),"\n",(0,r.jsx)(n.li,{children:"ë¹ë기 ë³µì ì ë기 ë³µì ì ì¥ë¨ì ì ì¤ì ê²½íì ë¹ì¶ì´ ì¤ëª
í´ì£¼ì¸ì"}),"\n",(0,r.jsx)(n.li,{children:"Active-Active 구조ì 문ì ì ì 무ìì¸ê°ì?"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"ê³ ê¸:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Multi-Master Replicationìì ì¶©ëì ì´ë»ê² í´ê²°íëì?"}),"\n",(0,r.jsx)(n.li,{children:"Statement-based vs Row-based vs Mixed Replicationì ì°¨ì´ì ì í 기ì¤ì?"}),"\n",(0,r.jsx)(n.li,{children:"Split Brain ìí©ì ì´ë»ê² ê°ì§íê³ ë³µêµ¬íëì?"}),"\n",(0,r.jsx)(n.li,{children:"Binlog를 ì´ì©í CDC(Change Data Capture)를 구íí´ë³´ì ì ìëì?"}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"4-ì¤ë©--íí°ì
ë",children:"4. ì¤ë© & íí°ì
ë"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"기본:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"ìí íí°ì
ëê³¼ ì¤ë©ì ì°¨ì´ë?"}),"\n",(0,r.jsx)(n.li,{children:"íí°ì
ëíì ë ì¸ë±ì¤ë ì´ë»ê² ëëì?"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"ì¤ê¸:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Range vs Hash vs List íí°ì
ë ì¤ ì´ë¤ ê²ì ì ííì
¨ê³ , ê·¸ ì´ì ë?"}),"\n",(0,r.jsx)(n.li,{children:"ì¤ë© í¤ë¥¼ ì못 ì ííë©´ ì´ë¤ 문ì ê° ì기ëì?"}),"\n",(0,r.jsx)(n.li,{children:"ì¬ë¬ ì¤ëì ê±¸ì¹ JOINì´ë GROUP BYë ì´ë»ê² ì²ë¦¬íëì?"}),"\n",(0,r.jsx)(n.li,{children:"ì¤ë 리밸ë°ì±ì ì´ë»ê² íëì? ìë¹ì¤ ì¤ë¨ ìì´ ê°ë¥íê°ì?"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"ê³ ê¸:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Consistent Hashingì ì¤ì ë¡ êµ¬íí´ë³´ì ì ìëì?"}
1),"\n",(0,r.jsx)(n.li,{children:"ì¤ëê° ë¶ê· ííê² ì»¤ì¡ì ë(Hot Shard) ì´ë»ê² í´ê²°íëì?"}),"\n",(0,r.jsx)(n.li,{children:"ê¸ë¡ë² ì ëí¬ ID를 ì´ë»ê² ìì±íëì? (Snowflake, UUID, etc.)"}),"\n",(0,r.jsx)(n.li,{children:"ì¤ë©ë DBìì í¸ëìì
ì¼ê´ì±ì ì´ë»ê² ë³´ì¥íëì?"}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"5-ì¤í¤ë§-ì¤ê³--모ë¸ë§",children:"5. ì¤í¤ë§ ì¤ê³ & 모ë¸ë§"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"기본:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"1:N ê´ê³ì N:M ê´ê³ë¥¼ ì´ë»ê² í
ì´ë¸ë¡ íííëì?"}),"\n",(0,r.jsx)(n.li,{children:"NULLì íì©í´ì¼ í ëì ì í ëì 기ì¤ì?"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"ì¤ê¸:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"JSON 컬ë¼ì ì¬ì©í ê²½íì´ ìëì? ì¸ì ì¬ì©íê³ ì¸ì ì¬ì©íì§ ë§ìì¼ íëì?"}),"\n",(0,r.jsx)(n.li,{children:"ìíí¸ ìì (deleted_at)ì íë ìì ì¤ ì´ë¤ ê²ì ì ííëì?"}),"\n",(0,r.jsx)(n.li,{children:"ì´ë ¥ ê´ë¦¬(History) í
ì´ë¸ì ì´ë»ê² ì¤ê³íëì?"}),"\n",(0,r.jsx)(n.li,{children:"Polymorphic Associationì DBìì ì´ë»ê² 구ííëì?"}),"\n",(0,r.jsx)(n.li,{children:"ENUM vs VARCHAR vs ë³ë í
ì´ë¸, ì´ë¤ ê²ì ì ííëì?"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"ê³ ê¸:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Time Series ë°ì´í°ë ì´ë»ê² ì¤ê³íê³ ìµì ííëì?"}),"\n",(0,r.jsx)(n.li,{children:"ê³ì¸µ 구조(Tree) ë°ì´í°ë¥¼ íííë ì¬ë¬ ë°©ë²(Adjacency List, Nested Set, Path Enumeration)ì ì¥ë¨ì ì?"}),"\n",(0,r.jsx)(n.li,{children:"ì ê·íì ë¹ì ê·íì ì í 기ì¤ì? ì¤ì ë¡ ë¹ì ê·í를 ì íí ì¬ë¡ê° ìëì?"}),"\n",(0,r.jsx)(n.li,{children:"Event Sourcing í¨í´ì DBì ì ì©í´ë³´ì ì ìëì?"}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"6-ë°±ì
--복구",children:"6. ë°±ì
& 복구"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"기본:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"ë
¼ë¦¬ ë°±ì
ê³¼ 물리 ë°±ì
ì ì°¨ì´ë?"}),"\n",(0,r.jsx)(n.li,{children:"mysqldumpë¡ ë°±ì
ì¤ìë ìë¹ì¤ê° ê°ë¥íê°ì?"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"ì¤ê¸:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Point-in-Time Recovery(PITR)를 ì´ë»ê² 구ííëì?"}),"\n",(0,r.jsx)(n.li,{children:"ë°±ì
ìê°ì ë¨ì¶íë ë°©ë²ì?"}),"\n",(0,r.jsx)(n.li,{children:"ë°±ì
ê²ì¦ì ì´ë»ê² íëì?"}),"\n",(0,r.jsx)(n.li,{children:"ì¦ë¶ ë°±ì
ì ì¥ë¨ì ì?"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"ê³ ê¸:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"100TB ë°ì´í°ë² ì´ì¤ì ë°±ì
ì ëµì?"}),"\n",(0,r.jsx)(n.li,{children:"Binlog를 ì´ì©í 복구 ì 주ìì¬íì?"}),"\n",(0,r.jsx)(n.li,{children:"í¬ë¡ì¤ 리ì ë°±ì
ì ëµì?"}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"7-ìºì±-ì ëµ",children:"7. ìºì± ì ëµ"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"기본:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"ì´ë¤ ë°ì´í°ë¥¼ ìºì±íê³ ì´ë¤ ë°ì´í°ë¥¼ ìºì±íì§ ìëì?"}),"\n",(0,r.jsx)(n.li,{children:"Cache Invalidationì ì´ë»ê² ì²ë¦¬íëì?"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"ì¤ê¸:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Cache Aside vs Write Through vs Write Behind ì¤ ì´ë¤ ê²ì ì¬ì©íëì?"}),"\n",(0,r.jsx)(n.li,{children:"Cache Stampede 문ì 를 ê²½ííì ì ìëì?"}),"\n",(0,r.jsx)(n.li,{children:"DBì Redisì ë°ì´í° ë¶ì¼ì¹ë¥¼ ì´ë»ê² ë°©ì§íëì?"}),"\n",(0,r.jsx)(n.li,{children:"TTLì ì´ë»ê² ì¤ì íëì?"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"ê³ ê¸:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Look-aside Cacheìì ë°ìí ì ìë Race Conditionì?"}),"\n",(0,r.jsx)(n.li,{children:"ë¶ì° ìºì íê²½ìì ì¼ê´ì±ì ì´ë»ê² ë³´ì¥íëì?"}),"\n",(0,r.jsx)(n.li,{children:"Cache Warming ì ëµì?"}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"8-모ëí°ë§--ì¥ì -ëì",children:"8. 모ëí°ë§ & ì¥ì ëì"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"기본:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"ì´ë¤ ë©í¸ë¦ì 모ëí°ë§íëì?"}),"\n",(0,r.jsx)(n.li,{children:"Slow Query를 ì´ë»ê² ì°¾ê³ ê°ì íëì?"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"ì¤ê¸:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Connection Pool í¬ê¸°ë ì´ë»ê² ì¤ì íëì?"}),"\n",(0,r.jsx)(n.li,{children:"DB CPUê° 100%ì¼ ë ìì¸ì ì°¾ë ë°©ë²ì?"}),"\n",(0,r.jsx)(n.li,{children:"Table Lockì´ ê±¸ë ¤ì ìë¹ì¤ ì¥ì ê° ë°ìíìµëë¤. ì´ë»ê² ëìíëì?"}),"\n",(0,r.jsx)(n.li,{children:"DB ëì¤í¬ê° ê½ ì°¼ì ë ê¸´ê¸ ëì ë°©ë²ì?"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"ê³ ê¸:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"InnoDB Buffer Poolì Hit Rateê° ë®ì ë ìì¸ê³¼ í´ê²°ì±
ì?"}),"\n",(0,r.jsx)(n.li,{children:"ê°ì기 Connectionì´ ê³ ê°ëìì ë ìì¸ì ì°¾ë ë°©ë²ì?"}),"\n",(0,r.jsx)(n.li,{children:"Replication Lagì´ ê³ì ëì´ëë ìí©ìì ì´ë»ê² ëìíëì?"}),"\n",(0,r.jsx)(n.li,{children:"Query of Deathê° ë°ìíì ë ì´ë»ê² ë¹ ë¥´ê² Killíëì?"}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"9-ë§ì´ê·¸ë ì´ì
--ì¤í¤ë§-ë³ê²½",children:"9. ë§ì´ê·¸ë ì´ì
& ì¤í¤ë§ ë³ê²½"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"기본:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"ALTER TABLE ì¤í ì¤ì ìë¹ì¤ ì¤ë¨ì´ ë°ìíëì?"}),"\n",(0,r.jsx)(n.li,{children:"í
ì´ë¸ëª
ì ë³ê²½íë ¤ë©´ ì´ë»ê² í´ì¼ íëì?"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"ì¤ê¸:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Online DDLì ëì ì리ë?"}),"\n",(0,r.jsx)(n.li,{children:"NOT NULL ì ì½ì¡°ê±´ì ì¶ê°í ë 주ìì¬íì?"}),"\n",(0,r.jsx)(n.li,{children:"ëì©ë í
ì´ë¸ì 컬ë¼ì ì¶ê°íë ë°©ë²ì?"}),"\n",(0,r.jsx)(n.li,{children:"pt-online-schema-change를 ì¬ì©í´ë³´ì ì ìëì?"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"ê³ ê¸:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Zero Downtime Migrationì ì´ë»ê² ë¬ì±íëì?"}),"\n",(0,r.jsx)(n.li,{children:"ì¤ë©ë DB를 리ì¤ë©íë ì ëµì?"}),"\n",(0,r.jsx)(n.li,{children:"DB를 PostgreSQLìì MySQLë¡(ëë ë°ëë¡) ë§ì´ê·¸ë ì´ì
í ê²½íì´ ìëì?"}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"10-ë³´ì",children:"10. ë³´ì"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"기본:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"SQL Injectionì ë°©ì§íë ë°©ë²ì?"}),"\n",(0,r.jsx)(n.li,{children:"DB ê³ì ê¶íì ì´ë»ê² ê´ë¦¬íëì?"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"ì¤ê¸:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"ê°ì¸ì 보를 ìí¸íí´ì ì ì¥í´ì¼ í ë ì´ë»ê² 구ííëì?"}),"\n",(0,r.jsx)(n.li,{children:"민ê°í ë°ì´í°ì ì ê·¼ ë¡ê·¸ë ì´ë»ê² ë¨ê¸°ëì?"}),"\n",(0,r.jsx)(n.li,{children:"DB Auditì ì´ë»ê² ì¤ì íëì?"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"ê³ ê¸:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Column-level Encryption vs Transparent Data Encryptionì ì°¨ì´ë?"}),"\n",(0,r.jsx)(n.li,{children:"ë°ì´í° ë§ì¤í¹ ì ëµì?"}),"\n",(0,r.jsx)(n.li,{children:"Credential Rotationì ì´ë»ê² 구ííëì?"}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"11-ì¤ì -ì¥ì -ì¬ë¡-기ë°-ì§ë¬¸",children:"11. ì¤ì ì¥ì ì¬ë¡ ê¸°ë° ì§ë¬¸"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:'"í¸ëìì
ìì ì¸ë¶ API를 í¸ì¶íëë DB Connectionì´ ê³ ê°ëììµëë¤. ìì¸ê³¼ í´ê²°ì±
ì?"'}),"\n",(0,r.jsx)(n.li,{children:'"ë°°ì¹ ìì
ì´ ì¤íëë ìë²½ìë§ Deadlockì´ ë°ìí©ëë¤. ì´ë»ê² ëë²ê¹
íëì?"'}),"\n",(0,r.jsx)(n.li,{children:'"ê°ì기 INSERT ì±ë¥ì´ 10ë°° ëë ¤ì¡ìµëë¤. ê°ë¥í ìì¸ë¤ì?"'}),"\n",(0,r.jsx)(n.li,{children:'"AUTO_INCREMENTê° ê³ ê°ë ê² ê°ìµëë¤. ì´ë»ê² ëìíëì?"'}),"\n",(0,r.jsx)(n.li,{children:'"FK ì ì½ì¡°ê±´ ë문ì DELETEê° ë무 ë립ëë¤. ì´ë»ê² í´ê²°íëì?"'}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"redis",children:"Redis"}),"\n",(0,r.jsx)(n.p,{children:"Redis ê´ë ¨ ì¤ë¬´ ë©´ì ì§ë¬¸ë¤ì ëì´ëë³ë¡ ì 리íìµëë¤."}),"\n",(0,r.jsx)(n.h3,{id:"1-기본-ê°ë
--ìí¤í
ì²",children:"1. 기본 ê°ë
& ìí¤í
ì²"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"기본:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Redisê° ë¹ ë¥¸ ì´ì ë 무ìì¸ê°ì?"}),"\n",(0,r.jsx)(n.li,{children:"Redisë Single Threadì¸ë° ì´ë»ê² ëìì ì¬ë¬ ìì²ì ì²ë¦¬íëì?"}),"\n",(0,r.jsx)(n.li,{children:"Redisì Memcachedì ì°¨ì´ë?"}),"\n",(0,r.jsx)(n.li,{children:"Redisì ë©ëª¨ë¦¬ê° ë¶ì¡±íë©´ ì´ë»ê² ëëì?"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"ì¤ê¸:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Redis 6.0ë¶í° Multi-threaded I/Oê° ëì
ëìëë°, ì´ê² ì íí 무ìì¸ê°ì?"}),"\n",(0,r.jsx)(n.li,{children:"Event Loop ë°©ìì¼ë¡ ëìíë¤ëë°, 구체ì ì¼ë¡ ì´ë»ê² ëìíëì?"}),"\n",(0,r.jsx)(n.li,{children:"Redisì ë©ëª¨ë¦¬ í ë¹ ì ëµ(jemalloc)ì ëí´ ì¤ëª
í´ì£¼ì¸ì"}),"\n",(0,r.jsx)(n.li,{children:"Copy-on-Writeë ì´ë»ê² ëìíëì?"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"ê³ ê¸:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Redis 7.0ì Functionsì Lua Scriptì ì°¨ì´ë?"}),"\n",(0,r.jsx)(n.li,{children:"Redisì Lazy Freeë ì¸ì ì¬ì©ëê³ ì´ë»ê² ëìíëì?"}),"\n",(0,r.jsx)(n.li,{children:"Reactor Patternì´ Redisìì ì´ë»ê² 구íëì´ ìëì?"}),"\n",(0,r.jsx)(n.li,{children:"Redisì Object Encoding ì ëµì ëí´ ì¤ëª
í´ì£¼ì¸ì (int, embstr, raw, ziplist ë±)"}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"2-ë°ì´í°-íì
--íì©",children:"2. ë°ì´í° íì
& íì©"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"기본:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"String, List, Set, Sorted Set, Hashì ì¬ì© ì¬ë¡ë¥¼ ê°ê° ì¤ëª
í´ì£¼ì¸ì"}),"\n",(0,r.jsx)(n.li,{children:"Sorted Setì ì´ë»ê² 구íëì´ ìëì?"}),"\n",(0,r.jsx)(n.li,{children:"List를 Queueë¡ ì¬ì©í ë LPUSH/RPOP vs RPUSH/LPOP ì¤ ì´ë¤ ê²ì ì ííëì?"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"ì¤ê¸:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"HyperLogLogë ì¸ì ì¬ì©íê³ , ì íëë ì´ë ì ëì¸ê°ì?"}),"\n",(0,r.jsx)(n.li,{children:"Bitmapì¼ë¡ DAU를 ê³ì°íë ë°©ë²ì 구íí´ë³´ì¸ì"}),"\n",(0,r.jsx)(n.li,{children:"Geo ìë£êµ¬ì¡°ë¡ ë°ê²½ ê²ìì 구íí ê²½íì´ ìëì?"}),"\n",(0,r.jsx)(n.li,{children:"Streamì ì¬ì©í ê²½íì´ ìëì? Kafkaìì ì°¨ì´ë?"}),"\n",(0,r.jsx)(n.li,{children:"Bloom Filter를 Redisìì ì¬ì©í´ë³´ì ì ìëì?"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"ê³ ê¸:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Sorted Setì ë´ë¶ 구조(Skiplist + Hash Table)를 ì¤ëª
íê³ , ì ì´ë° 구조를 ì ííìê¹ì?"}),"\n",(0,r.jsx)(n.li,{children:"Ziplistì ì¥ë¨ì ê³¼ ì¸ì ë¤ë¥¸ ì¸ì½ë©ì¼ë¡ ì íëëì?"}),"\n",(0,r.jsx)(n.li,{children:"Listpackì´ Ziplist를 ëì²´íë ì´ì ë?"}),"\n",(0,r.jsx)(n.li,{children:"Redis Stackì JSON, Search, Time Series 모ëì ì¬ì©í´ë³´ì ì ìëì?"}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"3-ìºì±-ì ëµ",children:"3. ìºì± ì ëµ"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"기본:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Cache Aside í¨í´ì ì¤ëª
íê³ , ì¥ë¨ì ì ë§í´ì£¼ì¸ì"}),"\n",(0,r.jsx)(n.li,{children:"TTLì ì´ë»ê² ì¤ì íëì?"}),"\n",(0,r.jsx)(n.li,{children:"Cache Missê° ë°ìíë©´ ì´ë»ê² ì²ë¦¬íëì?"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"ì¤ê¸:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Cache Stampede 문ì 를 ì´ë»ê² í´ê²°íëì?"}),"\n",(0,r.jsx)(n.li,{children:"Write Behind vs Write Through ì¤ ì´ë¤ ê²ì ì ííê³ ì ê·¸ë¬ëì?"}),"\n",(0,r.jsx)(n.li,{children:"Hot Key 문ì 를 ê²½ííì ì ìëì? ì´ë»ê² í´ê²°íëì?"}),"\n",(0,r.jsx)(n.li,{children:"Cache Warmingì ì´ë»ê² 구ííëì?"}),"\n",(0,r.jsx)(n.li,{children:"Stale Cache 문ì 를 ì´ë»ê² ë°©ì§íëì?"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"ê³ ê¸:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Look-aside Cacheìì ë°ìíë Race Conditionì ì¤ëª
íê³ í´ê²°ì±
ì ì ìí´ì£¼ì¸ì"}),"\n",(0,r.jsx)(n.li,{children:"Cacheì DBì ì í©ì±ì ë³´ì¥íë ì¬ë¬ í¨í´ì ì¤ëª
í´ì£¼ì¸ì"}),"\n",(0,r.jsx)(n.li,{children:"Probabilistic Early Expirationì 구íí´ë³´ì ì ìëì?"}),"\n",(0,r.jsx)(n.li,{children:"Refresh-ahead ì ëµì ì¸ì ì¬ì©íëì?"}),"\n",(0,r.jsx)(n.li,{children:"2-tier Cache 구조(Local Cache + Redis)를 ì¬ì©í´ë³´ì ì ìëì?"}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"4-ë¶ì°-ë½-distributed-lock",children:"4. ë¶ì° ë½ (Distributed Lock)"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"기본:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Redisë¡ ë¶ì° ë½ì 구ííë ë°©ë²ì ì¤ëª
í´ì£¼ì¸ì"}),"\n",(0,r.jsx)(n.li,{children:"SETNXì 문ì ì ì 무ìì¸ê°ì?"}),"\n",(0,r.jsx)(n.li,{children:"SET NX EX를 ì¬ì©íë ì´ì ë?"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"ì¤ê¸:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Redlock ìê³ ë¦¬ì¦ì ì¤ëª
í´ì£¼ì¸ì"}),"\n",(0,r.jsx)(n.li,{children:"Redissonì ì¬ì©í ê²½íì´ ìëì? ë´ë¶ì ì¼ë¡ ì´ë»ê² ëìíëì?"}),"\n",(0,r.jsx)(n.li,{children:"Lockì timeoutì ì´ë»ê² ì¤ì íëì?"}),"\n",(0,r.jsx)(n.li,{children:"Spin Lock vs Sleep ë°©ìì ì°¨ì´ë?"}
1),"\n",(0,r.jsx)(n.li,{children:"ë½ ê°±ì (Lock Renewal)ì ì´ë»ê² 구ííëì?"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"ê³ ê¸:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Redlockì 문ì ì ê³¼ Martin Kleppmannì ë¹íì ëí´ ììëì?"}),"\n",(0,r.jsx)(n.li,{children:"Fencing Tokenì ì¬ì©í ê²½íì´ ìëì?"}),"\n",(0,r.jsx)(n.li,{children:"Redis Cluster íê²½ìì ë¶ì° ë½ì ìì ì± ë¬¸ì ë?"}),"\n",(0,r.jsx)(n.li,{children:"Watch를 ì´ì©í Optimistic Lockì 구íí´ë³´ì ì ìëì?"}),"\n",(0,r.jsx)(n.li,{children:"Lua Scriptë¡ ììì±ì ë³´ì¥íë ë½ì 구íí ê²½íì´ ìëì?"}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"5-ììì±-persistence",children:"5. ììì± (Persistence)"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"기본:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"RDBì AOFì ì°¨ì´ë?"}),"\n",(0,r.jsx)(n.li,{children:"Redis를 ìºìê° ìë ë°ì´í°ë² ì´ì¤ë¡ ì¬ì©í ì ìëì?"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"ì¤ê¸:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"RDB snapshot ìì± ì ìë¹ì¤ì 미ì¹ë ìí¥ì?"}),"\n",(0,r.jsx)(n.li,{children:"AOF Rewriteë ì¸ì ë°ìíê³ ì´ë»ê² ëìíëì?"}),"\n",(0,r.jsx)(n.li,{children:"fsync ì ì±
(always, everysec, no)ì ì°¨ì´ë?"}),"\n",(0,r.jsx)(n.li,{children:"RDBì AOF를 ëìì ì¬ì©íë©´ ì´ë»ê² ëëì?"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"ê³ ê¸:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Fork() ì ë©ëª¨ë¦¬ ì¬ì©ëì´ 2ë°°ë¡ ì¦ê°íëì?"}),"\n",(0,r.jsx)(n.li,{children:"AOFì RDBì 복구 ì°ì ììì ì´ì ë?"}),"\n",(0,r.jsx)(n.li,{children:"Redis 7.0ì Multi-part AOFì ì¥ì ì?"}),"\n",(0,r.jsx)(n.li,{children:"Copy-on-Write ê³¼ì ìì ë©ëª¨ë¦¬ ë¨í¸í 문ì 를 ì´ë»ê² í´ê²°íëì?"}),"\n",(0,r.jsx)(n.li,{children:"Diskless Replicationì ì¸ì ì¬ì©íëì?"}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"6-ë³µì -replication",children:"6. ë³µì (Replication)"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"기본:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Master-Slave ë³µì 구조를 ì¤ëª
í´ì£¼ì¸ì"}),"\n",(0,r.jsx)(n.li,{children:"Replication Lagì´ ë°ìíë ì´ì ë?"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"ì¤ê¸:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Partial Resync vs Full Resyncì ì°¨ì´ë?"}),"\n",(0,r.jsx)(n.li,{children:"Replication Bufferì Backlogì ìí ì?"}),"\n",(0,r.jsx)(n.li,{children:"Slaveê° Masterë¡ ì¹ê²©ëë ê³¼ì ì ì¤ëª
í´ì£¼ì¸ì"}),"\n",(0,r.jsx)(n.li,{children:"Read Replicaì ê°ì를 ë리면 ì´ë¤ 문ì ê° ì길 ì ìëì?"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"ê³ ê¸:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"PSYNC2ì ê°ì ì¬íì 무ìì¸ê°ì?"}),"\n",(0,r.jsx)(n.li,{children:"Replication Offsetì ì´ì©í ë°ì´í° ì¼ê´ì± ê²ì¦ ë°©ë²ì?"}),"\n",(0,r.jsx)(n.li,{children:"Masterê° ì£½ìì ë ë°ì´í° ì ì¤ì ìµìííë ë°©ë²ì?"}),"\n",(0,r.jsx)(n.li,{children:"Diskless Replicationì ëì ì리ì ì¥ë¨ì ì?"}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"7-ê³ ê°ì©ì±-sentinel",children:"7. ê³ ê°ì©ì± (Sentinel)"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"기본:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Sentinelì ìí ì 무ìì¸ê°ì?"}),"\n",(0,r.jsx)(n.li,{children:"Sentinelì ëª ê°ë¥¼ ëìì¼ íëì?"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"ì¤ê¸:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Quorumê³¼ Majorityì ì°¨ì´ë¥¼ ì¤ëª
í´ì£¼ì¸ì"}),"\n",(0,r.jsx)(n.li,{children:"Sentinelì´ Master ì¥ì 를 ê°ì§íë ê³¼ì ì ìì¸í ì¤ëª
í´ì£¼ì¸ì"}),"\n",(0,r.jsx)(n.li,{children:"SDOWN vs ODOWNì ì°¨ì´ë?"}),"\n",(0,r.jsx)(n.li,{children:"Failover ê³¼ì ìì ë°ì´í° ì ì¤ì´ ë°ìí ì ìëì?"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"ê³ ê¸:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Sentinelì Gossip Protocolì ëí´ ì¤ëª
í´ì£¼ì¸ì"}),"\n",(0,r.jsx)(n.li,{children:"Split Brain ìí©ì ì´ë»ê² ë°©ì§íëì?"}),"\n",(0,r.jsx)(n.li,{children:"Sentinel ìì²´ì ë¨ì¼ ì¥ì ì 문ì ë?"}),"\n",(0,r.jsx)(n.li,{children:"min-slaves-to-write ì¤ì ì ì미ì ì¬ì© ìë리ì¤ë?"}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"8-í´ë¬ì¤í°-redis-cluster",children:"8. í´ë¬ì¤í° (Redis Cluster)"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"기본:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Redis Clusterê° íìí ì´ì ë?"}),"\n",(0,r.jsx)(n.li,{children:"Hash Slotì 무ìì´ê³ ì 16384ê°ì¸ê°ì?"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"ì¤ê¸:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Redis Clusterë ì´ë»ê² ì¤ë©íëì?"}),"\n",(0,r.jsx)(n.li,{children:"Reshardingì ì´ë»ê² ì§íëëì?"}),"\n",(0,r.jsx)(n.li,{children:"MOVED vs ASK 리ë¤ì´ë ì
ì ì°¨ì´ë?"}),"\n",(0,r.jsx)(n.li,{children:"Multi-key ì°ì°ì´ ì ì íëëì? í´ê²° ë°©ë²ì?"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"ê³ ê¸:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Gossip Protocolë¡ í´ë¬ì¤í° ìí를 ë기ííë ê³¼ì ì ì¤ëª
í´ì£¼ì¸ì"}),"\n",(0,r.jsx)(n.li,{children:"Hash Tag를 ì¬ì©í ê²½íì´ ìëì?"}),"\n",(0,r.jsx)(n.li,{children:"í´ë¬ì¤í° íí°ì
(Split Brain) ìí©ìì ì´ë»ê² ëìíëì?"}),"\n",(0,r.jsx)(n.li,{children:"Replica Migrationì ì¸ì ë°ìíëì?"}),"\n",(0,r.jsx)(n.li,{children:"í´ë¬ì¤í° íê²½ìì Lua Script ì¬ì© ì ì ì½ì¬íì?"}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"9-ì±ë¥-ìµì í",children:"9. ì±ë¥ ìµì í"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"기본:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Pipelineì ì¬ì©íë ì´ì ë?"}),"\n",(0,r.jsx)(n.li,{children:"KEYS ëª
ë ¹ì´ë¥¼ íë¡ëì
ìì ì¬ì©íë©´ ì ëë ì´ì ë?"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"ì¤ê¸:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Pipeline vs Transactionì ì°¨ì´ë?"}),"\n",(0,r.jsx)(n.li,{children:"Big Key 문ì 를 ì´ë»ê² ë°ê²¬íê³ í´ê²°íëì?"}),"\n",(0,r.jsx)(n.li,{children:"SCANì ëì ì리ì ì¬ì©ë²ì ì¤ëª
í´ì£¼ì¸ì"}
1),"\n",(0,r.jsx)(n.li,{children:"Batch ìì
ì ì±ë¥ ìµì í ë°©ë²ì?"}),"\n",(0,r.jsx)(n.li,{children:"Slowlogë ì´ë»ê² íì©íëì?"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"ê³ ê¸:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"O(N) ëª
ë ¹ì´ë¤(KEYS, SMEMBERS, HGETALL ë±)ì ëìì?"}),"\n",(0,r.jsx)(n.li,{children:"ë©ëª¨ë¦¬ ë¨í¸í 문ì 를 ì´ë»ê² í´ê²°íëì?"}),"\n",(0,r.jsx)(n.li,{children:"Active Defragmentationì ì¸ì ì¬ì©íëì?"}),"\n",(0,r.jsx)(n.li,{children:"Client-side Cachingì 구íí´ë³´ì ì ìëì?"}),"\n",(0,r.jsx)(n.li,{children:"Redisì Eviction Policy ì í 기ì¤ì? (LRU, LFU, Random ë±)"}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"10-í¸ëìì
--ììì±",children:"10. í¸ëìì
& ììì±"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"기본:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"MULTI/EXECì ëì ì리를 ì¤ëª
í´ì£¼ì¸ì"}),"\n",(0,r.jsx)(n.li,{children:"Redisì í¸ëìì
ì ACID를 ë³´ì¥íëì?"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"ì¤ê¸:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"WATCH를 ì¬ì©í Optimistic Lockì 구íí´ë³´ì¸ì"}),"\n",(0,r.jsx)(n.li,{children:"MULTI/EXEC ë´ìì ìë¬ê° ë°ìíë©´ ì´ë»ê² ëëì?"}),"\n",(0,r.jsx)(n.li,{children:"Lua Script vs MULTI/EXECì ì°¨ì´ë?"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"ê³ ê¸:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Lua Scriptë¡ ë³µì¡í ììì ì°ì°ì 구íí ê²½íì´ ìëì?"}),"\n",(0,r.jsx)(n.li,{children:"EVAL vs EVALSHAì ì°¨ì´ì ì±ë¥ ìµì í ë°©ë²ì?"}),"\n",(0,r.jsx)(n.li,{children:"Lua Scriptì ì¤í ìê° ì íê³¼ ëì ë°©ë²ì?"}),"\n",(0,r.jsx)(n.li,{children:"Redis Transactionì´ Rollbackì ì§ìíì§ ìë ì´ì ë?"}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"11-모ëí°ë§--ì¥ì -ëì",children:"11. 모ëí°ë§ & ì¥ì ëì"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"기본:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Redisì 주ì 모ëí°ë§ ë©í¸ë¦ì?"}),"\n",(0,r.jsx)(n.li,{children:"INFO ëª
ë ¹ì´ë¡ ì´ë¤ ì 보를 íì¸í ì ìëì?"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"ì¤ê¸:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"ë©ëª¨ë¦¬ ì¬ì©ë¥ ì´ ê¸ì¦í ë ìì¸ì ì°¾ë ë°©ë²ì?"}),"\n",(0,r.jsx)(n.li,{children:"Connectionì´ ê³ì ì¦ê°í ë ì´ë»ê² ëìíëì?"}),"\n",(0,r.jsx)(n.li,{children:"Latencyê° ê°ì기 ì¦ê°íì ë ëë²ê¹
ë°©ë²ì?"}),"\n",(0,r.jsx)(n.li,{children:"Redisì ë©ëª¨ë¦¬ ì¬ì©ëì ë¶ìíë ë구ë?"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"ê³ ê¸:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Intrinsic Latency vs Network Latency를 ì´ë»ê² 구ë¶íëì?"}),"\n",(0,r.jsx)(n.li,{children:"Fork ì ë°ìíë Latency Spike를 ì´ë»ê² ìµìííëì?"}),"\n",(0,r.jsx)(n.li,{children:"CLIENT LISTë¡ ë¬¸ì ìë í´ë¼ì´ì¸í¸ë¥¼ ì°¾ë ë°©ë²ì?"}),"\n",(0,r.jsx)(n.li,{children:"Redisì Blocked Clients 문ì ë ì´ë»ê² í´ê²°íëì?"}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"12-rate-limiting",children:"12. Rate Limiting"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"기본:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Redisë¡ Rate Limiter를 구ííë ë°©ë²ì?"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"ì¤ê¸:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Fixed Window vs Sliding Windowì ì°¨ì´ë?"}),"\n",(0,r.jsx)(n.li,{children:"Token Bucket ìê³ ë¦¬ì¦ì Redisë¡ êµ¬íí´ë³´ì¸ì"}),"\n",(0,r.jsx)(n.li,{children:"Leaky Bucket vs Token Bucketì ì°¨ì´ë?"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"ê³ ê¸:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Sliding Window Log vs Sliding Window Counterì ì±ë¥ ì°¨ì´ë?"}),"\n",(0,r.jsx)(n.li,{children:"ë¶ì° íê²½ìì ì íí Rate Limitingì 구ííë ë°©ë²ì?"}),"\n",(0,r.jsx)(n.li,{children:"Redis Cell 모ëì ì¬ì©í´ë³´ì ì ìëì?"}),"\n",(0,r.jsx)(n.li,{children:"Rate Limiterì ë©ëª¨ë¦¬ ìµì í ë°©ë²ì?"}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"13-ì¸ì
-ê´ë¦¬",children:"13. ì¸ì
ê´ë¦¬"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"기본:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Redis를 ì¸ì
ì¤í ì´ë¡ ì¬ì©íë ì´ì ë?"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"ì¤ê¸:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Session Clustering ì ê³ ë ¤ì¬íì?"}),"\n",(0,r.jsx)(n.li,{children:"Session TTLì ì´ë»ê² ì¤ì íëì?"}),"\n",(0,r.jsx)(n.li,{children:"Sticky Session vs Session Replicationì ì°¨ì´ë?"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"ê³ ê¸:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Multi-region íê²½ìì ì¸ì
ë기í ì ëµì?"}),"\n",(0,r.jsx)(n.li,{children:"Session Fixation 공격ì ì´ë»ê² ë°©ì§íëì?"}),"\n",(0,r.jsx)(n.li,{children:"Redisì JWT ì¤ ì´ë¤ ê²ì ì ííê³ ì ê·¸ë¬ëì?"}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"14-ì¤ìê°-기ë¥-구í",children:"14. ì¤ìê° ê¸°ë¥ êµ¬í"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"기본:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Pub/Subì ëì ì리를 ì¤ëª
í´ì£¼ì¸ì"}),"\n",(0,r.jsx)(n.li,{children:"Pub/Subì íê³ë 무ìì¸ê°ì?"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"ì¤ê¸:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Redis Stream vs Pub/Subì ì°¨ì´ë?"}),"\n",(0,r.jsx)(n.li,{children:"Consumer Groupì ì´ë»ê² ëìíëì?"}),"\n",(0,r.jsx)(n.li,{children:"Leaderboard를 Sorted Setì¼ë¡ 구íí ê²½íì´ ìëì?"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"ê³ ê¸:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Pub/Subìì ë©ìì§ ì ì¤ ë¬¸ì 를 ì´ë»ê² í´ê²°íëì?"}),"\n",(0,r.jsx)(n.li,{children:"Streamì XREAD vs XREADGROUPì ì°¨ì´ë?"}),"\n",(0,r.jsx)(n.li,{children:"Real-time Analytics를 Redisë¡ êµ¬íí ì¬ë¡ê° ìëì?"}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"15-ë³´ì",children:"15. ë³´ì"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"기본:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Redisì 기본 ë³´ì ì¤ì ì?"}),"\n",(0,r.jsx)(n.li,{children:"requirepassë ì¶©ë¶í ìì íê°ì?"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"ì¤ê¸:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"ACLì ì¤ì í´ë³´ì ì ìëì?"}),"\n",(0,r.jsx)(n.li,{children:"RENAME-COMMAND를 ì¬ì©íë ì´ì ë?"}),"\n",(0,r.jsx)(n.li,{children:"Protected Modeë 무ìì¸ê°ì?"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"ê³ ê¸:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Redisì Encryption at Rest를 ì ì©íë ë°©ë²ì?"}),"\n",(0,r.jsx)(n.li,{children:"TLS/SSLì ì¤ì í´ë³´ì ì ìëì?"}),"\n",(0,r.jsx)(n.li,{children:"Command Filtering ì ëµì?"}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"16-ì¤ì -ì¥ì -ì¬ë¡-기ë°",children:"16. ì¤ì ì¥ì ì¬ë¡ 기ë°"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:'"Lua Scriptê° ë¬´í 루íì ë¹ ì ¸ì Redisê° ë©ì·ìµëë¤. ì´ë»ê² ëìíëì?"'}),"\n",(0,r.jsx)(n.li,{children:'"Fork ì¤í¨ë¡ RDB snapshotì ë§ë¤ ì ììµëë¤. ìì¸ê³¼ í´ê²°ì±
ì?"'}),"\n",(0,r.jsx)(n.li,{children:'"ê°ì기 모ë Redis ìì²ì´ timeout ë©ëë¤. ì´ë»ê² ëë²ê¹
íëì?"'}),"\n",(0,r.jsx)(n.li,{children:'"ë©ëª¨ë¦¬ë ì¶©ë¶íë° OOMì´ ë°ìí©ëë¤. ê°ë¥í ìì¸ë¤ì?"'}),"\n",(0,r.jsx)(n.li,{children:'"Replication Lagì´ ê³ì ì¦ê°í©ëë¤. ì´ë»ê² í´ê²°íëì?"'}),"\n",(0,r.jsx)(n.li,{children:'"í¹ì ìê°ìë§ Redis ì±ë¥ì´ ê¸ê²©í ë¨ì´ì§ëë¤. ìì¸ì ì°¾ìë³´ì¸ì"'}),"\n",(0,r.jsx)(n.li,{children:'"Masterì Slaveì ë°ì´í°ê° ë¶ì¼ì¹í©ëë¤. ì´ë»ê² ê°ì§íê³ ë³µêµ¬íëì?"'}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"17-ìí¤í
ì²-ì¤ê³",children:"17. ìí¤í
ì² ì¤ê³"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:'"ì 1ìµ ëª
ì´ ì¬ì©íë ìë¹ì¤ì Redis ìí¤í
ì²ë¥¼ ì¤ê³í´ì£¼ì¸ì"'}),"\n",(0,r.jsx)(n.li,{children:'"Multi-region íê²½ìì Redis êµ¬ì± ì ëµì?"'}),"\n",(0,r.jsx)(n.li,{children:'"Redis를 Primary DBë¡ ì¬ì©í ì ìëì? ê³ ë ¤ì¬íì?"'}),"\n",(0,r.jsx)(n.li,{children:'"Cache + Message Queue + Session Store를 모ë Redisë¡
1? ë¶ë¦¬í´ì¼ íëì?"'}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"spring",children:"Spring"}),"\n",(0,r.jsx)(n.h3,{id:"1-spring-core-ioc-di-aop",children:"1. Spring Core (IoC, DI, AOP)"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"기본:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"@Component, @Service, @Repositoryì ì°¨ì´ë ë¨ìí ì미ì ì¸ ì°¨ì´ì¸ê°ì?"}),"\n",(0,r.jsx)(n.li,{children:"ìí ì°¸ì¡°ê° ë°ìíì ë ì´ë»ê² í´ê²°íëì?"}),"\n",(0,r.jsx)(n.li,{children:"@Autowired vs ìì±ì 주ì
, ì¤ë¬´ìì ì´ë¤ ê²ì ì ííëì?"}),"\n",(0,r.jsx)(n.li,{children:"ApplicationContextì BeanFactoryì ì°¨ì´ë?"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"ì¤ê¸:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Beanì ìëª
주기를 ì¤ëª
íê³ , ê° ë¨ê³ìì í ì ìë ìì
ì?"}),"\n",(0,r.jsx)(n.li,{children:"@PostConstruct vs InitializingBean vs @Bean(initMethod), ì¸ì 무ìì ì¬ì©íëì?"}),"\n",(0,r.jsx)(n.li,{children:"ê°ì íì
ì Beanì´ ì¬ë¬ ê°ì¼ ë ì´ë»ê² 주ì
ë°ëì?"}),"\n",(0,r.jsx)(n.li,{children:"@Primary vs @Qualifierì ì í 기ì¤ì?"}),"\n",(0,r.jsx)(n.li,{children:"Prototype Beanì Singleton Beanì 주ì
íë©´ ì´ë»ê² ëëì?"}),"\n",(0,r.jsx)(n.li,{children:"AOPì Proxy ë°©ì(JDK Dynamic Proxy vs CGLIB)ì ì°¨ì´ì ì±ë¥ ìí¥ì?"}),"\n",(0,r.jsx)(n.li,{children:"@Transactionalì´ private ë©ìëìì ëìíì§ ìë ì´ì ë?"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"ê³ ê¸:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"BeanPostProcessor를 ì§ì 구íí´ë³¸ ì ìëì? ì´ë¤ ê²½ì°ì ì¬ì©íëì?"}),"\n",(0,r.jsx)(n.li,{children:"@Asyncì ë´ë¶ ëì ì리ì Thread Pool ì¤ì ì ëµì?"}),"\n",(0,r.jsx)(n.li,{children:"ApplicationContext를 ì¬ë¬ ê° ê³ì¸µì ì¼ë¡ 구ì±í ê²½íì´ ìëì?"}),"\n",(0,r.jsx)(n.li,{children:"Lazy Initializationì ì¥ë¨ì ê³¼ ì¤ë¬´ ì ì© ì¬ë¡ë?"}),"\n",(0,r.jsx)(n.li,{children:"AOPìì this vs targetì ì°¨ì´ì self-invocation 문ì ë?"}),"\n",(0,r.jsx)(n.li,{children:"Around Adviceìì ProceedingJoinPoint를 proceed() íì§ ìì¼ë©´?"}),"\n",(0,r.jsx)(n.li,{children:"AspectJ Weaving (Compile-time, Load-time) vs Spring AOPì ì í 기ì¤ì?"}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"2-spring-boot",children:"2. Spring Boot"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"기본:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Springê³¼ Spring Bootì ì°¨ì´ë?"}),"\n",(0,r.jsx)(n.li,{children:"Auto Configurationì ì´ë»ê² ëìíëì?"}),"\n",(0,r.jsx)(n.li,{children:"application.yml vs application.properties, ì´ë¤ ê²ì ì ííëì?"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"ì¤ê¸:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"@SpringBootApplicationì´ íë ì¼ì ìì¸í ì¤ëª
í´ì£¼ì¸ì"}),"\n",(0,r.jsx)(n.li,{children:"Profileì ì´ë»ê² ê´ë¦¬íëì? (dev, staging, prod)"}),"\n",(0,r.jsx)(n.li,{children:"ì¸ë¶ ì¤ì ì 주ì
ë°ë ì¬ë¬ ë°©ë²(@Value, @ConfigurationProperties)ì ì°¨ì´ë?"}),"\n",(0,r.jsx)(n.li,{children:"Spring Boot Actuatorë¡ ì´ë¤ ë©í¸ë¦ì 모ëí°ë§íëì?"}),"\n",(0,r.jsx)(n.li,{children:"Custom Auto Configurationì ë§ë¤ì´ë³¸ ì ìëì?"}),"\n",(0,r.jsx)(n.li,{children:"Conditional Annotationë¤(@ConditionalOnProperty ë±)ì íì©í ì¬ë¡ë?"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"ê³ ê¸:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Spring Bootì Graceful Shutdownì ì´ë»ê² ëìíëì?"}),"\n",(0,r.jsx)(n.li,{children:"Embedded Tomcat vs External Tomcat, ì¸ì 무ìì ì ííëì?"}),"\n",(0,r.jsx)(n.li,{children:"Spring Boot ì í리ì¼ì´ì
ì ìì ìê°ì ìµì ííë ë°©ë²ì?"}),"\n",(0,r.jsx)(n.li,{children:"Layered JARë 무ìì´ê³ ì ì¬ì©íëì?"}),"\n",(0,r.jsx)(n.li,{children:"Spring Native(GraalVM)를 ê³ ë ¤í´ë³¸ ì ìëì? ì¥ë¨ì ì?"}),"\n",(0,r.jsx)(n.li,{children:"FailureAnalyzer를 커ì¤í°ë§ì´ì§í´ë³¸ ê²½íì´ ìëì?"}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"3-spring-mvc--webflux",children:"3. Spring MVC / WebFlux"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"기본:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"DispatcherServletì ëì íë¦ì ì¤ëª
í´ì£¼ì¸ì"}),"\n",(0,r.jsx)(n.li,{children:"@RestController vs @Controllerì ì°¨ì´ë?"}),"\n",(0,r.jsx)(n.li,{children:"@RequestBody vs @ModelAttributeì ì°¨ì´ë?"}),"\n",(0,r.jsx)(n.li,{children:"ResponseEntity를 ì¬ì©íë ì´ì ë?"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"ì¤ê¸:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Interceptor vs Filter vs AOPì ì°¨ì´ì ì¬ì© ìë리ì¤ë?"}),"\n",(0,r.jsx)(n.li,{children:"HandlerMethodArgumentResolver를 ì§ì 구íí´ë³¸ ì ìëì?"}),"\n",(0,r.jsx)(n.li,{children:"MessageConverterë ì´ë»ê² ëìíëì? (Jackson, Gson ë±)"}),"\n",(0,r.jsx)(n.li,{children:"Content Negotiationì ì´ë»ê² ì²ë¦¬ëëì?"}),"\n",(0,r.jsx)(n.li,{children:"Validationì ì´ëì ìííëì? (@Valid, @Validated ì°¨ì´)"}),"\n",(0,r.jsx)(n.li,{children:"CORSë ì´ë»ê² ì¤ì íê³ , Preflightë ì¸ì ë°ìíëì?"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"ê³ ê¸:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"WebFluxì MVC를 ì ííë 기ì¤ì? ì¤ì ë¡ WebFlux를 íë¡ëì
ì ì ì©í´ë³´ì
¨ëì?"}),"\n",(0,r.jsx)(n.li,{children:"Reactive Streamì Backpressure를 ì´ë»ê² ì²ë¦¬íëì?"}),"\n",(0,r.jsx)(n.li,{children:"Thread-per-request vs Event Loop, ê°ê°ì ì¥ë¨ì ì?"}),"\n",(0,r.jsx)(n.li,{children:"WebClient vs RestTemplate, ì±ë¥ ì°¨ì´ë ì¼ë§ë ëëì?"}),"\n",(0,r.jsx)(n.li,{children:"Servlet 3.0ì Async Processingì ì¬ì©í´ë³¸ ì ìëì?"}),"\n",(0,r.jsx)(n.li,{children:"SSE(Server-Sent Events)를 구íí ê²½íì´ ìëì?"}),"\n",(0,r.jsx)(n.li,{children:"WebSocket + STOMP를 ì¬ì©í ì¤ìê° íµì 구í ê²½íì?"}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"4-spring-data-jpa",children:"4. Spring Data JPA"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"기본:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"JPAì ììì± ì»¨í
ì¤í¸ë?"}),"\n",(0,r.jsx)(n.li,{children:"1ì°¨ ìºìì 2ì°¨ ìºìì ì°¨ì´ë?"}),"\n",(0,r.jsx)(n.li,{children:"Eager Loading vs Lazy Loading, ì¸ì 무ìì ì¬ì©íëì?"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"ì¤ê¸:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"N+1 문ì 를 ê²½ííì ì ìëì? ì´ë»ê² í´ê²°í
1ì
¨ëì?"}),"\n",(0,r.jsx)(n.li,{children:"@Query vs QueryDSL vs Criteria API, ê°ê°ì ì¥ë¨ì ì?"}),"\n",(0,r.jsx)(n.li,{children:"@EntityGraph를 ì¬ì©í ê²½íì´ ìëì?"}),"\n",(0,r.jsx)(n.li,{children:"Dirty Checkingì ì´ë»ê² ëìíëì?"}),"\n",(0,r.jsx)(n.li,{children:"save() ë©ìëë ë´ë¶ì ì¼ë¡ ì´ë»ê² ëìíëì? (isNew() íë¨)"}),"\n",(0,r.jsx)(n.li,{children:"@ManyToOneìì FetchType.EAGER를 ì¬ì©íë©´ ì ëë ì´ì ë?"}),"\n",(0,r.jsx)(n.li,{children:"Pagination ì±ë¥ ìµì í ë°©ë²ì? (Offset vs Cursor)"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"ê³ ê¸:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"JPAìì Batch Insertë ì´ë»ê² ìµì ííëì?"}),"\n",(0,r.jsx)(n.li,{children:"OSIV(Open Session In View)ì 문ì ì ê³¼ í´ê²° ë°©ë²ì?"}),"\n",(0,r.jsx)(n.li,{children:"QueryDSLì ëì 쿼리 ìµì í ê²½íì´ ìëì?"}),"\n",(0,r.jsx)(n.li,{children:"@Transactional(readOnly=true)ê° ì±ë¥ì 미ì¹ë ìí¥ì?"}),"\n",(0,r.jsx)(n.li,{children:"ìí°í°ë¥¼ DTOë¡ ë³ííë ìì ê³¼ ì ëµì? (Mapper, MapStruct ë±)"}),"\n",(0,r.jsx)(n.li,{children:"Hibernateì 2ì°¨ ìºì(EhCache, Redis) ì¤ì ê²½íì´ ìëì?"}),"\n",(0,r.jsx)(n.li,{children:"Pessimistic Lock vs Optimistic Lock, ì¤ë¬´ììì ì í 기ì¤ì?"}),"\n",(0,r.jsx)(n.li,{children:"JPAìì Native Query를 ì¬ì©í ë 주ìì¬íì?"}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"5-transaction-management",children:"5. Transaction Management"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"기본:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"@Transactionalì ì´ë»ê² ëìíëì?"}),"\n",(0,r.jsx)(n.li,{children:"Checked Exception vs Unchecked Exception, ì´ë¤ ê²ì´ 롤백ëëì?"}),"\n",(0,r.jsx)(n.li,{children:"Propagationì REQUIRED vs REQUIRES_NEWì ì°¨ì´ë?"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"ì¤ê¸:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"í¸ëìì
ì´ ë무 길면 ì´ë¤ 문ì ê° ë°ìíëì?"}),"\n",(0,r.jsx)(n.li,{children:"@Transactionalì´ ëìíì§ ìë ê²½ì°ë¤ì ì¤ëª
í´ì£¼ì¸ì"}),"\n",(0,r.jsx)(n.li,{children:"Isolation Levelì ë³ê²½í´ë³¸ ê²½íì´ ìëì? ì¸ì ë³ê²½íëì?"}),"\n",(0,r.jsx)(n.li,{children:"ë¶ì° í¸ëìì
(2PC, Saga)ì 구íí´ë³¸ ì ìëì?"}),"\n",(0,r.jsx)(n.li,{children:"TransactionSynchronizationì ì¬ì©í´ë³¸ ì ìëì?"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"ê³ ê¸:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Springì í¸ëìì
ë기íë ì´ë»ê² 구íëì´ ìëì? (ThreadLocal)"}),"\n",(0,r.jsx)(n.li,{children:"í¸ëìì
ë´ìì ì¸ë¶ API를 í¸ì¶íë©´ ì´ë¤ 문ì ê° ì기ëì?"}),"\n",(0,r.jsx)(n.li,{children:"TransactionTemplate vs @Transactional, ì¸ì 무ìì ì¬ì©íëì?"}),"\n",(0,r.jsx)(n.li,{children:"Programmatic Transaction Managementê° íìí ê²½ì°ë?"}),"\n",(0,r.jsx)(n.li,{children:"í¸ëìì
ì»¤ë° íì í¹ì ìì
ì ìííë ¤ë©´? (@TransactionalEventListener)"}),"\n",(0,r.jsx)(n.li,{children:"JTA를 ì¬ì©í ê²½íì´ ìëì?"}),"\n",(0,r.jsx)(n.li,{children:"Seata, Atomikos ê°ì ë¶ì° í¸ëìì
ë¼ì´ë¸ë¬ë¦¬ë¥¼ ì¬ì©í´ë³´ì
¨ëì?"}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"6-spring-security",children:"6. Spring Security"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"기본:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Spring Securityì ì¸ì¦/ì¸ê° íë¦ì ì¤ëª
í´ì£¼ì¸ì"}),"\n",(0,r.jsx)(n.li,{children:"Filter Chainì ì´ë»ê² ëìíëì?"}),"\n",(0,r.jsx)(n.li,{children:"JWT ì¸ì¦ì 구íí ê²½íì´ ìëì?"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"ì¤ê¸:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"SecurityContextë ì´ë»ê² ê´ë¦¬ëëì? (ThreadLocal)"}),"\n",(0,r.jsx)(n.li,{children:"Session vs Token ê¸°ë° ì¸ì¦ì ì¥ë¨ì ì?"}),"\n",(0,r.jsx)(n.li,{children:"CSRF ë°©ì´ë ì´ë»ê² ëìíëì?"}),"\n",(0,r.jsx)(n.li,{children:"OAuth2 ë¡ê·¸ì¸ì 구íí ê²½íì´ ìëì?"}),"\n",(0,r.jsx)(n.li,{children:"Method Security (@PreAuthorize, @Secured)ë ì¸ì ì¬ì©íëì?"}),"\n",(0,r.jsx)(n.li,{children:"Password Encoder ì í 기ì¤ì? (BCrypt, SCrypt, Argon2)"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"ê³ ê¸:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"JWT Refresh Token ì ëµì ì´ë»ê² ì¤ê³íì
¨ëì?"}),"\n",(0,r.jsx)(n.li,{children:"Stateless ì¸ì¦ íê²½ìì ì¬ì©ì ê¶í ë³ê²½ ì ì
1´ë»ê² ì²ë¦¬íëì?"}),"\n",(0,r.jsx)(n.li,{children:"Spring Securityìì Custom AuthenticationProvider를 ë§ë ì´ì ë?"}),"\n",(0,r.jsx)(n.li,{children:"Multi-tenancy íê²½ìì Security를 ì´ë»ê² 구ì±íëì?"}),"\n",(0,r.jsx)(n.li,{children:"WebFlux Securityì MVC Securityì ì°¨ì´ë?"}),"\n",(0,r.jsx)(n.li,{children:"Rate Limitingì Spring Securityì íµí©í ê²½íì´ ìëì?"}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"7-ì±ë¥-ìµì í",children:"7. ì±ë¥ ìµì í"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"기본:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Spring ì í리ì¼ì´ì
ì ì±ë¥ ë³ëª©ì ì´ë»ê² ì°¾ëì?"}),"\n",(0,r.jsx)(n.li,{children:"Connection Pool í¬ê¸°ë ì´ë»ê² ì¤ì íëì?"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"ì¤ê¸:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Thread Pool í¬ê¸° ì¤ì ì ëµì? (Tomcat, @Async)"}),"\n",(0,r.jsx)(n.li,{children:"Lazy Initializationì´ ìì ìê°ì 미ì¹ë ìí¥ì?"}),"\n",(0,r.jsx)(n.li,{children:"@Cacheableì ì´ë»ê² íì©íëì? (Redis, EhCache)"}),"\n",(0,r.jsx)(n.li,{children:"HTTP Clientì Keep-Alive ì¤ì ê²½íì´ ìëì?"}),"\n",(0,r.jsx)(n.li,{children:"RestTemplate vs WebClient, ì±ë¥ í
ì¤í¸ ê²°ê³¼ë?"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"ê³ ê¸:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"JVM íë ê²½íì´ ìëì? (Heap, GC ì¤ì )"}),"\n",(0,r.jsx)(n.li,{children:"Spring Boot ì í리ì¼ì´ì
ì ë©ëª¨ë¦¬ ëì를 ì´ë»ê² ì°¾ëì?"}),"\n",(0,r.jsx)(n.li,{children:"Reactive Programmingì¼ë¡ ì ííì ë ì±ë¥ ê°ì í¨ê³¼ë?"}),"\n",(0,r.jsx)(n.li,{children:"Database Connection Pool ê³ ê° ë¬¸ì 를 ì´ë»ê² í´ê²°íëì?"}),"\n",(0,r.jsx)(n.li,{children:"API ìëµ ìê°ì 10ë°° ê°ì í ê²½íì 구체ì ì¼ë¡ ì¤ëª
í´ì£¼ì¸ì"}),"\n",(0,r.jsx)(n.li,{children:"Virtual Thread(Project Loom)를 ê³ ë ¤í´ë³´ì
¨ëì?"}),"\n",(0,r.jsx)(n.li,{children:"Nettyì EventLoop íë ê²½íì´ ìëì?"}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"8-í
ì¤í
",children:"8. í
ì¤í
"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"기본:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"@SpringBootTest vs @WebMvcTestì ì°¨ì´ë?"}),"\n",(0,r.jsx)(n.li,{children:"Mockingì ì¸ì ì¬ì©íëì? (Mockito)"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"ì¤ê¸:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"TestContainers를 ì¬ì©í ê²½íì´ ìëì?"}),"\n",(0,r.jsx)(n.li,{children:"@DataJpaTestììë ì´ë¤ Beanë¤ì´ ë¡ëëëì?"}),"\n",(0,r.jsx)(n.li,{children:"í
ì¤í¸ 격리(Test Isolation)ë ì´ë»ê² ë³´ì¥íëì?"}),"\n",(0,r.jsx)(n.li,{children:"@Transactionalì´ í
ì¤í¸ìì ì´ë»ê² ëìíëì?"}),"\n",(0,r.jsx)(n.li,{children:"Integration Test vs Unit Testì ë¹ì¨ì?"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"ê³ ê¸:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"í
ì¤í¸ ì±ë¥ì ê°ì íë ë°©ë²ì? (Context Caching)"}),"\n",(0,r.jsx)(n.li,{children:"Fixture를 ì´ë»ê² ê´ë¦¬íëì?"}),"\n",(0,r.jsx)(n.li,{children:"Contract Testing(Pact)ì ëì
í ê²½íì´ ìëì?"}),"\n",(0,r.jsx)(n.li,{children:"Chaos Engineeringì Spring íê²½ì ì ì©í´ë³´ì
¨ëì?"}),"\n",(0,r.jsx)(n.li,{children:"Embedded Redis/Kafka를 í
ì¤í¸ì ì¬ì©í ê²½íì?"}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"9-ë¹ë기-ì²ë¦¬--ì¤ì¼ì¤ë§",children:"9. ë¹ë기 ì²ë¦¬ & ì¤ì¼ì¤ë§"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"기본:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"@Asyncì ëì ì리ë?"}),"\n",(0,r.jsx)(n.li,{children:"@Scheduledë ì´ë»ê² ëìíëì?"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"ì¤ê¸:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"CompletableFuture를 Springìì ì´ë»ê² íì©íëì?"}),"\n",(0,r.jsx)(n.li,{children:"@Async ë©ìëìì Exceptionì´ ë°ìíë©´?"}),"\n",(0,r.jsx)(n.li,{children:"ShedLockì ì¬ì©í ë¶ì° ì¤ì¼ì¤ë§ ê²½íì´ ìëì?"}),"\n",(0,r.jsx)(n.li,{children:"Quartz Scheduler vs Spring @Scheduled, ì¸ì 무ìì ì ííëì?"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"ê³ ê¸:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"ëì©ë ë°°ì¹ ì²ë¦¬ë¥¼ ì´ë»ê² ìµì ííëì?"}),"\n",(0,r.jsx)(n.li,{children:"Spring Batch vs Spring Cloud Data Flowì ì°¨ì´ë?"}),"\n",(0,r.jsx)(n.li,{children:"Event-Driven Architecture를 Springì¼ë¡ 구íí ê²½íì?"}),"\n",(0,r.jsx)(n.li,{children:"Kafka/RabbitMQì Springì íµí© ê²½íì´ ìëì?"}),"\n",(0,r.jsx)(n.li,{children:"TaskExecutorì ì¢
ë¥ì ì í 기ì¤ì?"}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"10-api-ì¤ê³--ë²ì ê´ë¦¬",children:"10. API ì¤ê³ & ë²ì ê´ë¦¬"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"기본:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"REST API ì¤ê³ ìì¹ì?"}),"\n",(0,r.jsx)(n.li,{children:"HTTP Status Codeë ì´ë»ê² ì ííëì?"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"ì¤ê¸:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"API ë²ì ê´ë¦¬ ì ëµì? (URI vs Header vs Query Parameter)"}),"\n",(0,r.jsx)(n.li,{children:"API Rate Limitingì ì´ë»ê² 구ííëì?"}),"\n",(0,r.jsx)(n.li,{children:"HATEOAS를 ì ì©í´ë³¸ ì ìëì?"}
1),"\n",(0,r.jsx)(n.li,{children:"OpenAPI(Swagger) 문ì ìëí ê²½íì´ ìëì?"}),"\n",(0,r.jsx)(n.li,{children:"API Gateway í¨í´ì ì ì©í ê²½íì?"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"ê³ ê¸:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"GraphQL vs REST, ì¤ë¬´ììì ì í 기ì¤ì?"}),"\n",(0,r.jsx)(n.li,{children:"API Deprecation ì ëµì?"}),"\n",(0,r.jsx)(n.li,{children:"Backward Compatibility를 ì´ë»ê² ì ì§íëì?"}),"\n",(0,r.jsx)(n.li,{children:"gRPC를 Springê³¼ íµí©í ê²½íì´ ìëì?"}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"11-ìë¬-í¸ë¤ë§--ë¡ê¹
",children:"11. ìë¬ í¸ë¤ë§ & ë¡ê¹
"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"기본:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"@ExceptionHandler vs @ControllerAdviceì ì°¨ì´ë?"}),"\n",(0,r.jsx)(n.li,{children:"íì¤ ìë¬ ìëµ íìì ì´ë»ê² ì¤ê³íëì?"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"ì¤ê¸:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"ì ì ìì¸ ì²ë¦¬ ì ëµì?"}),"\n",(0,r.jsx)(n.li,{children:"ë¡ê¹
ë 벨(DEBUG, INFO, WARN, ERROR)ì ì´ë»ê² ì¤ì íëì?"}),"\n",(0,r.jsx)(n.li,{children:"MDC(Mapped Diagnostic Context)를 íì©í ê²½íì´ ìëì?"}),"\n",(0,r.jsx)(n.li,{children:"Request ID를 ì¶ì íë ë°©ë²ì?"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"ê³ ê¸:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Circuit Breaker(Resilience4j)를 ì ì©í ê²½íì´ ìëì?"}),"\n",(0,r.jsx)(n.li,{children:"Structured Loggingì 구íí ë°©ë²ì?"}),"\n",(0,r.jsx)(n.li,{children:"ELK Stackê³¼ Spring Bootì íµí© ê²½íì?"}),"\n",(0,r.jsx)(n.li,{children:"Sentry, Datadog ê°ì APM ë구 ì°ë ê²½íì?"}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"12-í´ë¼ì°ë--컨í
ì´ë",children:"12. í´ë¼ì°ë & 컨í
ì´ë"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"기본:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Dockerìì Spring Boot를 ì¤íí ë 주ìì¬íì?"}),"\n",(0,r.jsx)(n.li,{children:"Health Check Endpointë ì´ë»ê² 구ííëì?"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"ì¤ê¸:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Kubernetesìì Spring Boot ë°°í¬ ì ì¤ì ì?"}),"\n",(0,r.jsx)(n.li,{children:"12 Factor App ìì¹ì ì´ë»ê² ì ì©íëì?"}),"\n",(0,r.jsx)(n.li,{children:"Config Server를 ì¬ì©í ê²½íì´ ìëì?"}),"\n",(0,r.jsx)(n.li,{children:"Service Discovery(Eureka, Consul)를 ì¬ì©í´ë³´ì
¨ëì?"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"ê³ ê¸:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Blue-Green vs Canary ë°°í¬ë¥¼ ì´ë»ê² 구ííëì?"}),"\n",(0,r.jsx)(n.li,{children:"Spring Cloud Gateway vs Netflix Zuulì ì°¨ì´ë?"}),"\n",(0,r.jsx)(n.li,{children:"Distributed Tracing(Zipkin, Jaeger)ì ì ì©í ê²½íì?"}),"\n",(0,r.jsx)(n.li,{children:"Multi-region ë°°í¬ ì ê³ ë ¤ì¬íì?"}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"13-ë©í°ëª¨ë--ìí¤í
ì²",children:"13. ë©í°ëª¨ë & ìí¤í
ì²"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"기본:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"ë©í°ëª¨ë íë¡ì í¸ì ì¥ì ì?"}),"\n",(0,r.jsx)(n.li,{children:"ê³ì¸µí ìí¤í
ì² vs í¥ì¬ê³ ë ìí¤í
ì²ì ì°¨ì´ë?"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"ì¤ê¸:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"ê³µíµ ëª¨ëì ì´ë»ê² ì¤ê³íëì?"}),"\n",(0,r.jsx)(n.li,{children:"Domain 모ëê³¼ Infrastructure 모ëì ìì¡´ì± ë°©í¥ì?"}),"\n",(0,r.jsx)(n.li,{children:"CQRS í¨í´ì ì ì©í´ë³¸ ì ìëì?"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"ê³ ê¸:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"DDD(Domain-Driven Design)를 Springì ì´ë»ê² ì ì©íëì?"}),"\n",(0,r.jsx)(n.li,{children:"Event Sourcingì 구íí ê²½íì´ ìëì?"}),"\n",(0,r.jsx)(n.li,{children:"Modular Monolith를 ê³ ë ¤í ì ìëì?"}),"\n",(0,r.jsx)(n.li,{children:"Microservicesë¡ ì íí ê²½íê³¼ ì´ë ¤ìì?"}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"14-ì¤ì -ì¥ì -ì¬ë¡-기ë°",children:"14. ì¤ì ì¥ì ì¬ë¡ 기ë°"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:'"OutOfMemoryErrorê° ë°ìíìµëë¤. ì´ë»ê² ìì¸ì ì°¾ê³ í´ê²°íëì?"'}),"\n",(0,r.jsx)(n.li,{children:'"Connection Poolì´ ê³ ê°ëì´ ìë¹ì¤ê° ë©ì·ìµëë¤. ìì¸ê³¼ ëì ë°©ë²ì?"'}),"\n",(0,r.jsx)(n.li,{children:'"ë°°í¬ í í¸ëìì
ì´ ì»¤ë°ëì§ ìë íìì´ ë°ìíìµëë¤. ì´ë»ê² ëë²ê¹
íëì?"'}),"\n",(0,r.jsx)(n.li,{children:'"@Transactionalì´ ëìíì§ ìì ë°ì´í° ì í©ì± 문ì ê° ë°ìíìµëë¤. ê°ë¥í ìì¸ë¤ì?"'}),"\n",(0,r.jsx)(n.li,{children:'"í¹ì APIë§ ìëµ ìê°ì´ 10ì´ ì´ì 걸립ëë¤. ì´ë»ê² ìì¸ì ì°¾ëì?"'}),"\n",(0,r.jsx)(n.li,{children:'"Lazy Loadingì¼ë¡ ì¸í LazyInitializationExceptionì´ ë°ìíìµëë¤. í´ê²° ë°©ë²ì?"'}),"\n",(0,r.jsx)(n.li,{children:'"ëìì ê°ì ë°ì´í°ë¥¼ ìì íë©´ì Lost Updateê° ë°ìíìµëë¤. ì´ë»ê² ë°©ì§íëì?"'}),"\n",(0,r.jsx)(n.li,{children:'"Batch Jobì´ ì¤í ì¤ ë©ëª¨ë¦¬ê° ë¶ì¡±í´ì§ëë¤. ì´ë»ê² ìµì ííëì?"'}),"\n",(0,r.jsx)(n.li,{children:'"Circuitì´ Open ìíë¡ ê³ì ì ì§ë©ëë¤. ì´ë»ê² 복구íëì?"'}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"15-ì½ë-íì§--ì¤ê³",children:"15. ì½ë íì§ & ì¤ê³"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"기본:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"SOLID ìì¹ì Springìì ì´ë»ê² ì ì©íëì?"}),"\n",(0,r.jsx)(n.li,{children:"DTO vs Entity, ì´ë»ê² ë³ííëì?"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"ì¤ê¸:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Strategy Patternì Spring Beanì¼ë¡ 구íí ê²½íì?"}),"\n",(0,r.jsx)(n.li,{children:"Mapper 구í ë°©ë²ì? (ìë vs ModelMapper vs MapStruct)"}),"\n",(0,r.jsx)(n.li,{children:"Validationì ì´ëìì ìííëì? (Controller, Service, Domain)"}),"\n",(0,r.jsx)(n.li,{children:"Lombokì ì¥ë¨ì ì? íë¡ëì
ìì ì¬ì©íëì?"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"ê³ ê¸:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Anemic Domain Model vs Rich Domain Modelì ì í 기ì¤ì?"}),"\n",(0,r.jsx)(n.li,{children:"Value Object를 ì´ë»ê² íì©íëì?"}),"\n",(0,r.jsx)(n.li,{children:"ë¶ë³ ê°ì²´ë¥¼ ì í¸íë ì´ì ë?"}),"\n",(0,r.jsx)(n.li,{children:"Functional Programming ì¤íì¼ì Java/Springì ì´ë»ê² ì ì©íëì?"}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"16-ì±ë¥-측ì --íë¡íì¼ë§",children:"16. ì±ë¥ 측ì & íë¡íì¼ë§"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:'"Profiler(JProfiler, VisualVM, Async-profiler)를 ì¬ì©í ê²½íì´ ìëì?"'}),"\n",(0,r.jsx)(n.li,{children:'"Thread Dump를 ë¶ìí´ë³¸ ì ìëì? ì´ë¤ ì 보를 ì»ì ì ìëì?"'}),"\n",(0,r.jsx)(n.li,{children:'"Heap Dump를 ë¶ìíë ë°©ë²ì?"'}),"\n",(0,r.jsx)(n.li,{children:'"JMeter, Gatlingì¼ë¡ ë¶í í
ì¤í¸ë¥¼ ì§íí ê²½íì?"'}),"\n",(0,r.jsx)(n.li,{children:'"ì±ë¥ í
ì¤í¸ 결과를 ì´ë»ê² í´ìíê³ ê°ì íëì?"'}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"17-ìµì -기ì --í¸ë ë",children:"17. ìµì 기ì & í¸ë ë"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:'"Java 17/21ì ìë¡ì´ 기ë¥ì íë¡ì í¸ì ì ì©í´ë³´ì
¨ëì?"'}),"\n",(0,r.jsx)(n.li,{children:'"Spring Boot 3.xë¡ ë§ì´ê·¸ë ì´ì
í ê²½íì´ ìëì?"'}),"\n",(0,r.jsx)(n.li,{children:'"Virtual Threads를 ì ì©í ê³íì´ ìëì?"'}),"\n",(0,r.jsx)(n.li,{children:'"Spring AOTì Native Image를 ê³ ë ¤í ì ìëì?"'}),"\n",(0,r.jsx)(n.li,{children:'"Kotlin + Springì ê³ ë ¤í´ë³´ì
¨ëì?"'}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"java",children:"Java"}),"\n",(0,r.jsx)(n.p,{children:"Java ë©´ì ìì ì¶ì ë¹ëê° ëì íµì¬ ì§ë¬¸ë¤ì ì 리í´ëë¦¬ê² ìµëë¤."}),"\n",(0,r.jsx)(n.h3,{id:"java-기본-ê°ë
",children:(0,r.jsx)(n.strong,{children:"Java 기본 ê°ë
"})}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Javaì 주ì í¹ì§ê³¼ ì¥ë¨ì ì ëí´ ì¤ëª
í´ì£¼ì¸ì."})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"JVM(Java Virtual Machine)ì 구조ì ëì ì리ì ëí´ ì¤ëª
í´ì£¼ì¸ì."})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Java íë¡ê·¸ë¨ì ì»´íì¼ ë° ì¤í ê³¼ì ì ëí´ ì¤ëª
í´ì£¼ì¸ì."})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"JDK, JRE, JVMì ì°¨ì´ì ì 무ìì¸ê°ì?"})}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"ê°ì²´ì§í¥-íë¡ê·¸ëë°oop",children:(0,r.jsx)(n.strong,{children:"ê°ì²´ì§í¥ íë¡ê·¸ëë°(OOP)"})}),"\n",(0,r.jsxs)(n.ol,{start:"5",children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"ê°ì²´ì§í¥ íë¡ê·¸ëë°ì 4ë í¹ì§(캡ìí, ìì, ì¶ìí, ë¤íì±)ì ëí´ ì¤ëª
í´ì£¼ì¸ì."})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Overloadingê³¼ Overridingì ì°¨ì´ì ì 무ìì¸ê°ì?"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"ì¶ì í´ëì¤(Abstract Class)ì ì¸í°íì´ì¤(Interface)ì ì°¨ì´ì ì 무ìì´ë©°, ê°ê° ì¸ì ì¬ì©íëì?"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"static ë©ìëë ì¤ë²ë¼ì´ë©ì´ ê°ë¥íê°ì?"})}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"ë©ëª¨ë¦¬-ê´ë¦¬",children:(0,r.jsx)(n.strong,{children:"ë©ëª¨ë¦¬ ê´ë¦¬"})}),"\n",(0,r.jsxs)(n.ol,{start:"9",children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"JVMì Runtime Data Area 구조ì ëí´ ì¤ëª
í´ì£¼ì¸ì."})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Heap ììê³¼ Stack ììì ì°¨ì´ì ì 무ìì¸ê°ì?"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"ì§ìë³ì, ì¸ì¤í´ì¤ ë³ì, í´ëì¤ ë³ìë ê°ê° ë©ëª¨ë¦¬ì ì´ë ììì ì ì¥ëëì?"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Garbage Collection(GC)ì´ë 무ìì´ë©°, ì´ë»ê² ëìíëì?"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Minor GCì Major GC(Full GC)ì ì°¨ì´ì ì 무ìì¸ê°ì?"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Stop-The-World íìì´ë 무ìì¸ê°ì?"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"ëíì ì¸ GC ìê³ ë¦¬ì¦ë¤ì ì¢
ë¥ì í¹ì§ì ì¤ëª
í´ì£¼ì¸ì."})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Mark and Sweep ìê³ ë¦¬ì¦ì ëí´ ì¤ëª
í´ì£¼ì¸ì."})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Javaìì ë©ëª¨ë¦¬ ëì(Memory Leak)ê° ë°ìí ì ìë ìí©ì ì´ë¤ ê²ë¤ì´ ìëì?"})}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"ìë£íê³¼-ë³ì",children:(0,r.jsx)(n.strong,{children:"ìë£íê³¼ ë³ì"})}),"\n",(0,r.jsxs)(n.ol,{start:"18",children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"기본 ìë£í(Primitive Type)ê³¼ 참조 ìë£í(Reference Type)ì ì°¨ì´ì ì 무ìì¸ê°ì?"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Wrapper Classë 무ìì´ë©°, Boxingê³¼ Unboxingì ì¸ì ë°ìíëì?"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"String, StringBuffer, StringBuilderì ì°¨ì´ì ì 무ìì¸ê°ì?"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"String ê°
1ì²´ê° ë¶ë³(Immutable)ì¼ë¡ ì¤ê³ë ì´ì ë 무ìì¸ê°ì?"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"String Poolì ëí´ ì¤ëª
í´ì£¼ì¸ì."})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"== ì°ì°ìì equals() ë©ìëì ì°¨ì´ì ì 무ìì¸ê°ì?"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"equals()를 ì¬ì ìí ë hashCode()ë í¨ê» ì¬ì ìí´ì¼ íë ì´ì ë 무ìì¸ê°ì?"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"final í¤ìëê° ë³ì, ë©ìë, í´ëì¤ì ì¬ì©ë ë ê°ê° ì´ë¤ ì미를 ê°ì§ëì?"})}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"ìì¸-ì²ë¦¬",children:(0,r.jsx)(n.strong,{children:"ìì¸ ì²ë¦¬"})}),"\n",(0,r.jsxs)(n.ol,{start:"26",children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Errorì Exceptionì ì°¨ì´ì ì 무ìì¸ê°ì?"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Checked Exceptionê³¼ Unchecked Exceptionì ì°¨ì´ì ì 무ìì¸ê°ì?"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"try-catch-finally 구문ì ëì ìì를 ì¤ëª
í´ì£¼ì¸ì."})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"try-with-resources 구문ì´ë 무ìì´ë©°, ì´ë¤ ì¥ì ì´ ìëì?"})}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"ì ë¤ë¦generic",children:(0,r.jsx)(n.strong,{children:"ì ë¤ë¦(Generic)"})}),"\n",(0,r.jsxs)(n.ol,{start:"30",children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"ì ë¤ë¦(Generic)ì´ë 무ìì´ë©°, ì¬ì©íë ì´ì ë 무ìì¸ê°ì?"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"ì ë¤ë¦ì íì
ìê±°(Type Erasure)ë 무ìì¸ê°ì?"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"ìì¼ëì¹´ë(Wildcard)ì ì¢
ë¥ì ê°ê°ì ì°¨ì´ì ì ëí´ ì¤ëª
í´ì£¼ì¸ì."})}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"컬ë ì
-íë ììí¬",children:(0,r.jsx)(n.strong,{children:"컬ë ì
íë ììí¬"})}),"\n",(0,r.jsxs)(n.ol,{start:"33",children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"List, Set, Map ì¸í°íì´ì¤ì 주ì í¹ì§ê³¼ ì°¨ì´ì ì 무ìì¸ê°ì?"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"ArrayListì LinkedListì ì°¨ì´ì ê³¼ ê°ê°ì ìê° ë³µì¡ëì ëí´ ì¤ëª
í´ì£¼ì¸ì."})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"ArrayListë ë´ë¶ì ì¼ë¡ í¬ê¸°ë¥¼ ì´ë»ê² ì¡°ì íëì?"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"HashMapì ëì ì리ì í´ì ì¶©ë í´ê²° ë°©ë²ì ëí´ ì¤ëª
í´ì£¼ì¸ì."})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"HashMap, HashTable, ConcurrentHashMapì ì°¨ì´ì ì 무ìì¸ê°ì?"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"HashSetì´ ì¤ë³µì ì ê±°íë ì리ì ëí´ ì¤ëª
í´ì£¼ì¸ì."})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"fail-fast Iteratorì fail-safe Iteratorì ì°¨ì´ì ì 무ìì¸ê°ì?"})}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"ëë¤ì-ì¤í¸ë¦¼",children:(0,r.jsx)(n.strong,{children:"ëë¤ì ì¤í¸ë¦¼"})}),"\n",(0,r.jsxs)(n.ol,{start:"40",children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"ëë¤ ííì(Lambda Expression)ì´ë 무ìì¸ê°ì?"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"í¨ìí ì¸í°íì´ì¤(Functional Interface)ë 무ìì¸ê°ì?"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Stream APIì í¹ì§ê³¼ ì¥ì ì ëí´ ì¤ëª
í´ì£¼ì¸ì."})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Streamì ì¤ê° ì°ì°ê³¼ ìµì¢
ì°ì°ì ì°¨ì´ì ì 무ìì¸ê°ì?"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"map()ê³¼ flatMap()ì ì°¨ì´ì ì 무ìì¸ê°ì?"})}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"ë©í°ì¤ë ë©",children:(0,r.jsx)(n.strong,{children:"ë©í°ì¤ë ë©"})}),"\n",(0,r.jsxs)(n.ol,{start:"45",children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"íë¡ì¸ì¤ì ì¤ë ëì ì°¨ì´ì ì 무ìì¸ê°ì?"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"ë©í°ì¤ë ë© íê²½ì ì¥ë¨ì ì ëí´ ì¤ëª
í´ì£¼ì¸ì."})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Javaìì ì¤ë ë를 ìì±íë ë°©ë²ë¤ì ëí´ ì¤ëª
í´ì£¼ì¸ì."})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Javaì ë기í(Synchronized) í¤ìëì ëí´ ì¤ëª
í´ì£¼ì¸ì."})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"volatile í¤ìëì ìí ê³¼ ì¸ì ì¬ì©í´ì¼ íëì§ ì¤ëª
í´ì£¼ì¸ì."})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"ë°ëë½(Deadlock)ì´ë 무ìì´ë©°, ë°ì ì¡°ê±´ 4ê°ì§ë 무ìì¸ê°ì?"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Thread-Safeí íë¡ê·¸ë¨ì ìì±í기 ìí ë°©ë²ìë ì´ë¤ ê²ë¤ì´ ìëì?"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Callableê³¼ Runnable ì¸í°íì´ì¤ì ì°¨ì´ì ì 무ìì¸ê°ì?"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"ExecutorService íë ììí¬ì ëí´ ì¤ëª
í´ì£¼ì¸ì."})}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"java-8-주ì-기ë¥",children:(0,r.jsx)(n.strong,{children:"Java 8+ 주ì 기ë¥"})}),"\n",(0,r.jsxs)(n.ol,{start:"54",children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Java 8ìì ì¶ê°ë 주ì 기ë¥ë¤ì ëí´ ì¤ëª
í´ì£¼ì¸ì."})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Optionalì´ë 무ìì´ë©°, ì¬ì©íë ì´ì ë 무ìì¸ê°ì?"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"ì¸í°íì´ì¤ì Default Methodë 무ìì¸ê°ì?"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Java 8ì Date/Time APIê° ê¸°ì¡´ ë°©ì(Date, Calendar)ê³¼ ë¤ë¥¸ ì ì 무ìì¸ê°ì?"})}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"í´ëì¤-ë¡ë©",children:(0,r.jsx)(n.strong,{children:"í´ëì¤ ë¡ë©"})}),"\n",(0,r.jsxs)(n.ol,{start:"58",children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"í´ëì¤ ë¡ë(ClassLoader)ì ìí ì 무ìì¸ê°ì?"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"JVMì í´ëì¤ ë¡ë© ê³¼ì (Loading, Linking, Initialization)ì ëí´ ì¤ëª
í´ì£¼ì¸ì."})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"ClassNotFoundExceptionê³¼ NoClassDefFoundErrorì ì°¨ì´ì ì 무ìì¸ê°ì?"})}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"ì±ë¥ê³¼-ìµì í",children:(0,r.jsx)(n.strong,{children:"ì±ë¥ê³¼ ìµì í"})}),"\n",(0,r.jsxs)(n.ol,{start:"61",children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"리íë ì
(Reflection)ì´ë 무ìì´ë©°, ì¬ì© ì 주ìí ì ì 무ìì¸ê°ì?"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"ìë° ì§ë ¬í(Serialization)ë 무ìì´ë©°, ì¸ì ì¬ì©íëì?"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"transient í¤ìëì ìí ì 무ìì¸ê°ì?"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"ìì ë³µì¬ì ê¹ì ë³µì¬ì ì°¨ì´ì ì 무ìì¸ê°ì?"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"ë¶ë³(Immutable) ê°ì²´ì ì¥ì ì 무ìì¸ê°ì?"})}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"기í-ì¤ì-ê°ë
",children:(0,r.jsx)(n.strong,{children:"기í ì¤ì ê°ë
"})}),"\n",(0,r.jsxs)(n.ol,{start:"66",children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"JIT ì»´íì¼ë¬ì ìí ê³¼ ëì ë°©ìì ëí´ ì¤ëª
í´ì£¼ì¸ì."})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"ì ì ë°ì¸ë©ê³¼ ëì ë°ì¸ë©ì ì°¨ì´ì ì 무ìì¸ê°ì?"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"Marker Interfaceë 무ìì´ë©°, ëíì ì¸ ììë 무ìì¸ê°ì?"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.strong,{children:"ì»´íì¼ íì(Compile Time)ê³¼ ë°íì(Runtime)ì ì°¨ì´ì ì 무ìì¸ê°ì?"})}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"ì¶ì²",children:(0,r.jsx)(n.strong,{children:"ì¶ì²"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"https://velog.io/@ka0ka0ka/1-3d8vtbh5",children:"https://velog.io/@ka0ka0ka/1-3d8vtbh5"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"https://smjeon.dev/etc/interview-question/",children:"https://smjeon.dev/etc/interview-question/"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"https://gmlwjd9405.github.io/2017/10/01/basic-concepts-of-development-java.html",children:"https://gmlwjd9405.github.io/2017/10/01/basic-concepts-of-development-java.html"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"https://github.com/ksundong/backend-interview-question",children:"https://github.com/ksundong/backend-interview-question"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"https://johngrib.github.io/wiki/jvm-memory/",children:"https://johngrib.github.io/wiki/jvm-memory/"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"https://github.com/hongcheol/CS-study/issues/138",children:"https://github.com/hongcheol/CS-study/issues/138"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"https://devfoxstar.github.io/java/technical-interview/",children:"https://devfoxstar.github.io/java/technical-interview/"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"https://www.hanbit.co.kr/channel/category/category_view.html?cms_code=CMS1626582373",children:"https://www.hanbit.co.kr/channel/category/category_view.html?cms_code=CMS1626582373"})}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"ì´ ì§ë¬¸ë¤ì ì ì
ë¶í° ê²½ë ¥ê¹ì§ ê³µíµì ì¼ë¡ ë§ì´ ëì¤ë ì§ë¬¸ë¤ì
ëë¤. ê° ì§ë¬¸ì ëí´ ëª
ííê² ëµë³í ì ìëë¡ ì¤ë¹íìë©´ ì¢ì ê² ê°ìµëë¤."})]})}let l={MDXContent:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{wrapper:n}=Object.assign({},(0,s.a)(),e.components);return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(_createMdxContent,{...e})}):_createMdxContent(e)},pageOpts:{filePath:"pages/blog/anki/next-step.mdx",route:"/blog/anki/next-step",pageMap:[{kind:"Meta",data:{"java-and-spring":{type:"page",title:"Spring"},etc:{type:"page",title:"Etc Programming"},algorithm:{type:"page",title:"Algorithm"},theory:{type:"page",title:"Theory"},"js-framework":{type:"page",title:"Node"},docs:{type:"page",title:"Docs"},blog:{type:"page",title:"Blog"},index:{type:"page",title:"Introduce"}}},{kind:"Folder",name:"algorithm",route:"/algorithm",children:[{kind:"Meta",data:{"search-algorithm-complete-guide":"íì ìê³ ë¦¬ì¦ ìì ì ë³µ",lcs:"LCS","prefix-sum":"ëì í©",comb
1ination:"ì¡°í©ê³¼ ìì´","sleve-of-eratosthenes":"ìë¼í ì¤í
ë¤ì¤ì ì²´",backtracking:"ë°±í¸ëí¹","python-grammar":"íì´ì¬ 문ë²",list:"List",queue:"íì ì¤í","hash-table":"í´ì í
ì´ë¸",tree:"í¸ë¦¬",graph:"ê·¸ëí",dp:"Dynamic Programming",dijkstra:"Dijkstra",mst:"MST",sort:"ì ë ¬",search:"íì",leetcode:"LeetCode",baekjoon:"ë°±ì¤",programmers:"íë¡ê·¸ë머ì¤",codetree:"ì½ëí¸ë¦¬",custom:"ì°½ì문ì ","next-step":"Next Step"}},{kind:"MdxPage",name:"backtracking",route:"/algorithm/backtracking"},{kind:"Folder",name:"baekjoon",route:"/algorithm/baekjoon",children:[{kind:"MdxPage",name:"13397",route:"/algorithm/baekjoon/13397"},{kind:"MdxPage",name:"15650",route:"/algorithm/baekjoon/15650"},{kind:"MdxPage",name:"1937",route:"/algorithm/baekjoon/1937"},{kind:"Meta",data:{1937:"ìì¬ìì´ íë¤",13397:"êµ¬ê° ëë기 2",15650:"Nê³¼ M (2)",python:"Python"}},{kind:"Folder",name:"python",route:"/algorithm/baekjoon/python",children:[{kind:"MdxPage",name:"1003",route:"/algorithm/baekjoon/python/1003"},{kind:"MdxPage",name:"1005",route:"/algorithm/baekjoon/python/1005"},{kind:"MdxPage",name:"1107",route:"/algorithm/baekjoon/python/1107"},{kind:"MdxPage",name:"1157",route:"/algorithm/baekjoon/python/1157"},{kind:"MdxPage",name:"1197",route:"/algorithm/baekjoon/python/1197"},{kind:"MdxPage",name:"12100",route:"/algorithm/baekjoon/python/12100"},{kind:"MdxPage",name:"13460",route:"/algorithm/baekjoon/python/13460"},{kind:"MdxPage",name:"14890",route:"/algorithm/baekjoon/python/14890"},{kind:"MdxPage",name:"14891",route:"/algorithm/baekjoon/python/14891"},{kind:"MdxPage",name:"15684",route:"/algorithm/baekjoon/python/15684"},{kind:"MdxPage",name:"15685",route:"/algorithm/baekjoon/python/15685"},{kind:"MdxPage",name:"16234",route:"/algorithm/baekjoon/python/16234"},{kind:"MdxPage",name:"1654",route:"/algorithm/baekjoon/python/1654"},{kind:"MdxPage",name:"1697",route:"/algorithm/baekjoon/python/1697"},{kind:"MdxPage",name:"1931",route:"/algorithm/baekjoon/python/1931"},{kind:"MdxPage",name:"2579",route:"/algorithm/baekjoon/python/2579"},{kind:"MdxPage",name:"2839",route:"/algorithm/baekjoon/python/2839"},{kind:"Meta",data:{1003:"í¼ë³´ëì¹ í¨ì",1005:"ACM Craft",1107:"리모컨",1157:"ë¨ì´ ê³µë¶",1197:"ìµì ì¤í¨ë í¸ë¦¬",1654:"ëì ì르기",1697:"ì¨ë°ê¼ì§",1931:"íìì¤ ë°°ì ",2579:"ê³ë¨ ì¤ë¥´ê¸°",2839:"ì¤í ë°°ë¬",12100:"2048 (Easy)",13460:"êµ¬ì¬ íì¶ 2",14890:"ê²½ì¬ë¡",14891:"í±ë ë°í´",15684:"ì¬ë¤ë¦¬ ì¡°ì",15685:"ëë곤 커ë¸",16234:"ì¸êµ¬ì´ë","baek-joon":"ë°±ì¤ ì¬ì©ë²"}},{kind:"MdxPage",name:"baek-joon",route:"/algorithm/baekjoon/python/baek-joon"}]}]},{kind:"Folder",name:"codetree",route:"/algorithm/codetree",children:[{kind:"Meta",data:{"doubling-sequence-solution":"ë ë°°ê¹ì§ 커ì§ë ìì´","calculating-change":"ê±°ì¤ë¦ë ê³ì°í기"}},{kind:"MdxPage",name:"calculating-change",route:"/algorithm/codetree/calculating-change"},{kind:"MdxPage",name:"doubling-sequence-solution",route:"/algorithm/codetree/doubling-sequence-solution"}]},{kind:"MdxPage",name:"combination",route:"/algorithm/combination"},{kind:"Folder",name:"custom",route:"/algorithm/custom",children:[{kind:"Meta",data:{"binary-conversion":"2ì§ì ë³í"}},{kind:"MdxPage",name:"binary-conversion",route:"/algorithm/custom/binary-conversion"}]},{kind:"MdxPage",name:"dijkstra",route:"/algorithm/dijkstra"},{kind:"MdxPage",name:"dp",route:"/algorithm/dp"},{kind:"MdxPage",name:"graph",route:"/algorithm/graph"},{kind:"MdxPage",name:"hash-table",route:"/algorithm/hash-table"},{kind:"MdxPage",name:"lcs",route:"/algorithm/lcs"},{kind:"Folder",name:"leetcode",route:"/algorithm/leetcode",children:[{kind:"MdxPage",name:"3sum",route:"/algorithm/leetcode/3sum"},{kind:"Meta",data:{java:"Java","n-queen":"N-Queen","extra-leetcode":"ë§ì¶ 문ì ë¤","valid-palindrome":"ì í¨í í°ë¦°ë롬(ìë°)",candy:"Candy","network-delay":"Network Delay Time","lowest-common-ancestor":"ê°ì¥ ìì ì¡°ì","maximum-depth-of-binary-tree":"ìµëê¹ì´","trapping-rain-water":"ë¹ë¬¼ í¸ëí(í림)","3sum":"ì¸ ìì í©(í림)","product-of-array-except-self":"ìì ì ì¸ ëª¨ë ê³±(í림)","add-two-numbers":"Add Two Numbers","number-of-islands":"Number of Islands(í림)","shortest-path-in-binary-matrix":"Shortest Path in Binary Matrix(í림)","climbing-stairs":"Climbing Stairs(í림)","number-of-island":"Number of Island"}},{kind:"MdxPage",name:"add-two-numbers",route:"/algorithm/leetcode/add-two-numbers"},{kind:"MdxPage",name:"candy",route:"/algorithm/leetcode/candy"},{kind:"MdxPage",name:"climbing-stairs",route:"/algorithm/leetcode/climbing-stairs"},{kind:"MdxPage",name:"extra-leetcode",route:"/algorithm/leetcode/extra-leetcode"},{kind:"Folder",name:"java",route:"/algorithm/leetcode/java",children:[{kind:"Meta",data:{"longest-palindromic-substring":"ê°ì¥ 긴 í°ë¦°ë롬 ë¶ë¶ 문ìì´","group-anagrams":"그룹 ì ëê·¸ë¨","most-common-word":"ê°ì¥ íí ë¨ì´"}},{kind:"MdxPage",name:"group-anagrams",route:"/algorithm/leetcode/java/group-anagrams"},{kind:"MdxPage",name:"longest-palindromic-substring",route:"/algorithm/leetcode/java/longest-palindromic-substring"},{kind:"MdxPage",name:"most-common-word",route:"/algorithm/leetcode/java/most-common-word"}]},{kind:"MdxPage",name:"lowest-common-ancestor",route:"/algorithm/leetcode/lowest-common-ancestor"},{kind:"MdxPage",name:"maximum-depth-of-binary-tree",route:"/algorithm/leetcode/maximum-depth-of-binary-tree"},{kind:"MdxPage",name:"n-queen",route:"/algorithm/leetcode/n-queen"},{kind:"MdxPage",name:"network-delay",route:"/algorithm/leetcode/network-delay"},{kind:"MdxPage",name:"number-of-island",route:"/algorithm/leetcode/number-of-island"},{kind:"MdxPage",name:"product-of-array-except-self",route:"/algorithm/leetcode/product-of-array-except-self"},{kind:"MdxPage",name:"shortest-path-in-binary-matrix",route:"/algorithm/leetcode/shortest-path-in-binary-matrix"},{kind:"MdxPage",name:"trapping-rain-water",route:"/algorithm/leetcode/trapping-rain-water"},{kind:"MdxPage",name:"valid-palindrome",route:"/algorithm/leetcode/valid-palindrome"}]},{kind:"MdxPage",name:"list",route:"/algorithm/list"},{kind:"MdxPage",name:"mst",route:"/algorithm/mst"},{kind:"MdxPage",name:"next-step",route:"/algorithm/next-step"},{kind:"MdxPage",name:"prefix-sum",route:"/algorithm/prefix-sum"},{kind:"Folder",name:"programmers",route:"/algorithm/programmers",children:[{kind:"Meta",data:{java:"Java",python:"Python",sql:"SQL"}},{kind:"Folder",name:"java",route:"/algorithm/programmers/java",children:[{kind:"MdxPage",name:"12949",route:"/algorithm/programmers/java/12949"},{kind:"MdxPage",name:"150368",route:"/algorithm/programmers/java/150368"},{kind:"MdxPage",name:"17681",route:"/algorithm/programmers/java/17681"},{kind:"MdxPage",name:"17686",route:"/algorithm/programmers/java/17686"},{kind:"MdxPage",name:"42579",route:"/algorithm/programmers/java/42579"},{kind:"MdxPage",name:"42584",route:"/algorithm/programmers/java/42584"},{kind:"MdxPage",name:"42586",route:"/algorithm/programmers/java/42586"},{kind:"MdxPage",name:"42746",route:"/algorithm/programmers/java/42746"},{kind:"MdxPage",name:"42840",route:"/algorithm/programmers/java/42840"},{kind:"MdxPage",name:"42890",route:"/algorithm/programmers/java/42890"},{kind:"MdxPage",name:"60057",route:"/algorithm/programmers/java/60057"},{kind:"MdxPage",name:"64065",route:"/algorithm/programmers/java/64065"},{kind:"MdxPage",name:"67257",route:"/algorithm/programmers/java/67257"},{kind:"MdxPage",name:"68644",route:"/algorithm/programmers/java/68644"},{kind:"MdxPage",name:"72411",route:"/algorithm/programmers/java/72411"},{kind:"MdxPage",name:"72412",route:"/algorithm/programmers/java/72412"},{kind:"MdxPage",name:"76502",route:"/algorithm/programmers/java/76502"},{kind:"MdxPage",name:"81302",route:"/algorithm/programmers/java/81302"},{kind:"MdxPage",name:"81303",route:"/algorithm/programmers/java/81303"},{kind:"MdxPage",name:"92335",route:"/algorithm/programmers/java/92335"},{kind:"MdxPage",name:"92341",route:"/algorithm/programmers/java/92341"},{kind:"MdxPage",name:"92342",route:"/algorithm/programmers/java/92342"},{kind:"Meta",data:{12949:"íë ¬ì ê³±ì
",17681:"ë¹ë° ì§ë",17686:"íì¼ëª
ì ë ¬",42579:"ë² ì¤í¸ ì¨ë²",42584:"주ìê°ê²©",42586:"기ë¥ê°ë°",42746:"ê°ì¥ í° ì",42840:"모ìê³ ì¬",42890:"íë³´í¤",60057:"문ìì´ ìì¶",64065:"íí",67257:"ìì ìµëí",68644:"ë ê° ë½ìì ëí기",72411:"ë©ë´ 리ë´ì¼",72412:"ìì ê²ì",76502:"ê´í¸ íì í기",81302:"거리ë기 íì¸í기",81303:"í í¸ì§",92335:"kì§ììì ìì ê°ì 구í기",92341:"주차 ìê¸ ê³ì°",92342:"ìê¶ëí",150368:"ì´ëª¨í°ì½ í ì¸íì¬","failure-rate":"ì¤í¨ì¨","correct-parentheses":"ì¬ë°ë¥¸ ê´í¸"}},{kind:"MdxPage",name:"correct-parentheses",route:"/algorithm/programmers/java/correct-parentheses"},{kind:"MdxPage",name:"failure-rate",route:"/algorithm/programmers/java/failure-rate"}]},{kind:"Folder",name:"python",route:"/algorithm/programmers/python",children:[{kind:"MdxPage",name:"118667",route:"/algorithm/programmers/python/118667"},{kind:"Meta",data:{118667:"ë íì í© ê°ê² ë§ë¤ê¸°","dart-game":"ë¤í¸ ê²ì","failure-rate":"ì¤í¨ì¨","press-keypad":"í¤í¨ë ë르기","recommend-newid":"ì ê· ìì´ë ì¶ì²",receiving_report_results:"ì ê³ ê²°ê³¼ ë°ê¸°","get-item":"ìì´í
ì¤ê¸°","donuts-and-bar-graphs":"ëë ì°¨í¸ì ë§ë ê·¸ëí","crossing-the-stepping-bridge":"ì§ê²ë¤ë¦¬ ê±´ë기","pccp-1":"PCCP 1ë² ë¶ëê°ê¸°","personality-type-test":"ì±ê²© ì í ê²ì¬","numeric-characters-and-english-word":"ì«ì 문ìì´ê³¼ ìë¨ì´","delivery-and-collection-of-packages":"íë°° ë°°ë¬ê³¼ ìê±°í기","matrices-and-operations":"íë ¬ê³¼ ì°ì°","target-number":"íê²ëë²",phoneketmon:"í°ì¼ëª¬","phone-book":"ì íë²í¸ 목ë¡","the-largest-number":"ê°ì¥ í° ì",process:"íë¡ì¸ì¤","stock-price":"주ì ê°ê²©","mock-test":"모ìê³ ì¬","functional-development":"기ë¥ê°ë°","programmers-etc":"Programmers Etc","receiving-report-results":"Receiving Report Results"}},{kind:"MdxPage",name:"crossing-the-stepping-bridge",route:"/algorithm/programmers/python/crossing-the-stepping-bridge"},{kind:"MdxPage",name:"dart-game",route:"/algorithm/programmers/python/dart-game"},{kind:"MdxPage",name:"delivery-and-collection-of-packages",route:"/algorithm/programmers/python/delivery-and-collection-of-packages"},{kind:"MdxPage",name:"donuts-and-bar-graphs",route:"/algorithm/programmers/python/donuts-and-bar-graphs"},{kind:"MdxPage",name:"failure-rate",route:"/algorithm/programmers/python/failure-rate"},{kind:"MdxPage",name:"functional-development",route:"/algorithm/programmers/python/functional-development"},{kind:"MdxPage",name:"get-item",route:"/algorithm/programmers/python/get-item"},{kind:"MdxPage",name:"matrices-and-operations",route:"/algorithm/programmers/python/matrices-and-operations"},{kind:"MdxPage",name:"mock-test",route:"/algorithm/programmers/python/mock-test"},{kind:"MdxPage",name:"numeric-characters-and-english-word",route:"/algorithm/programmers/python/numeric-characters-and-english-word"},{kind:"MdxPage",name:"pccp-1",route:"/algorithm/programmers/python/pccp-1"},{kind:"MdxPage",name:"personality-type-test",route:"/algorithm/programmers/python/personality-type-test"},{kind:"MdxPage",name:"phone-book",route:"/algorithm/programmers/python/phone-book"},{kind:"MdxPage",name:"phoneketmon",route:"/algorithm/programmers/python/phoneketmon"},{kind:"MdxPage",name:"press-keypad",route:"/algorithm/programmers/python/press-keypad"},{kind:"MdxPage",name:"process",route:"/algorithm/programmers/python/process"},{kind:"MdxPage",name:"programmers-etc",route:"/algorithm/programmers/python/programmers-etc"},{kind:"MdxPage",name:"receiving-report-results",route:"/algorithm/programmers/python/receiving-report-results"},{kind:"MdxPage",name:"recommend-newid",route:"/algorithm/programmers/python/recommend-newid"},{kind:"MdxPage",name:"stock-price",route:"/algorithm/programmers/python/stock-price"},{kind:"MdxPage",name:"target-number",route:"/algorithm/programmers/python/target-number"},{kind:"MdxPage",name:"the-largest-number",route:"/algorithm/programmers/python/the-largest-number"}]},{kind:"Folder",name:"sql",route:"/algorithm/programmers/sql",children:[{kind:"Meta",data:{most_favorite_restaurant:"ì¦ê²¨ì°¾ê¸°ê° ê°ì¥ ë§ì ìë¹ ì ë³´"}},{kind:"MdxPage",name:"most_favorite_restaurant",route:"/algorithm/programmers/sql/most_favorite_restaurant"}]}]},{kind:"MdxPage",name:"python-grammar",route:"/algorithm/python-grammar"},{kind:"MdxPage",name:"queue",route:"/algorithm/queue"},{kind:"MdxPage",name:"search-algorithm-complete-guide",route:"/algorithm/search-algorithm-complete-guide",frontMatter:{title:"ê²ì ìê³ ë¦¬ì¦ ìë²½ ê°ì´ë: Fuzzy Search, Trie, Aho-Corasick, ë²¡í° DB",description:"Fuzzy Search, Full Text Index, Trie, ìí¸ì½ë¼ì ìê³ ë¦¬ì¦, ë²¡í° ë°ì´í°ë² ì´ì¤(HNSW, IVF)ì ì리ì 구íì ì¤íìë ì´í´í ì ìê² ìíì ì¦ëª
ê³¼ ìê°íë¡ ì¤ëª
í©ëë¤",date:"2025-12-11",tags:["ìê³ ë¦¬ì¦","search","trie","aho-corasick","vector-database","HNSW","IVF"]}},{kind:"MdxPage",name:"search",route:"/algorithm/search"},{kind:"MdxPage",name:"sleve-of-eratosthenes",route:"/algorithm/sleve-of-eratosthenes"},{kind:"MdxPage",name:"sort",route:"/algorithm/sort"},{kind:"MdxPage",name:"tree",route:"/algorithm/tree"}]},{kind:"Folder",name:"blog",route:"/blog",children:[{kind:"Meta",data:{cs:"ì»´í¨í° ê³µí",finance:"ê¸ìµ ëë©ì¸",conference:"컨í¼ë°ì¤",study:"ì¤í°ë",linux:"리ë
ì¤ í","lecture-review":"ê°ì 리뷰","book-review":"ì±
리뷰",tools:"Tools","electronic-product":"ì ìì í 리뷰","ai-log":"AI",cpp:"C++",anki:"Anki","be-writer":"ê¸ì°ê¸°","python-script":"Python Script","cover-letter":"ì기ìê°ì",portfolio:"Portfolio"}},{kind:"Folder",name:"ai-log",route:"/blog/ai-log",children:[{kind:"Meta",data:{"next-step":"Next Step",notebook:"ë©ëª¨ì¥",basic:"Basic"}},{kind:"Folder",name:"basic",route:"/blog/ai-log/basic",children:[{kind:"Meta",data:{anaconda:"Anaconda"}},{kind:"MdxPage",name:"anaconda",route:"/blog/ai-log/basic/anaconda"}]},{kind:"MdxPage",name:"next-step",route:"/blog/ai-log/next-step"},{kind:"MdxPage",name:"notebook",route:"/blog/ai-log/notebook"}]},{kind:"Folder",name:"anki",route:"/blog/anki",children:[{kind:"Meta",data:{"next-step":"ë¤ì ë¨ê³",interview:"ë©´ì ì§ë¬¸ ëë¹","operating-system":"ì´ìì²´ì ","software-engineering":"ìíí¸ì¨ì´ ê³µí",
1spring:"Spring",java:"Java","java-problem":"Java 문ì ","database-internal":"ë°ì´í°ë² ì´ì¤ ì´ë¡ ",database:"ë°ì´í°ë² ì´ì¤ 문ì ","db-problem":"ë°ì´í°ë² ì´ì¤ 문ì ",sql:"SQL ì½í
문ì ",redis:"Redis",rabbitmq:"RabbitMQ",ohksj77:"ohks ë©´ì ì§ë¬¸",network:"ë¤í¸ìí¬","computer-science":"ì»´í¨í° ê³¼í",architecture:"ìíí¸ì¨ì´ ìí¤í
ì²",python:"Python"}},{kind:"MdxPage",name:"architecture",route:"/blog/anki/architecture"},{kind:"MdxPage",name:"computer-science",route:"/blog/anki/computer-science"},{kind:"MdxPage",name:"database-internal",route:"/blog/anki/database-internal"},{kind:"MdxPage",name:"database",route:"/blog/anki/database"},{kind:"Folder",name:"db-problem",route:"/blog/anki/db-problem",children:[{kind:"MdxPage",name:"20251204-database-problem",route:"/blog/anki/db-problem/20251204-database-problem"},{kind:"MdxPage",name:"20251214-database-problem",route:"/blog/anki/db-problem/20251214-database-problem"},{kind:"MdxPage",name:"20251219-database-problem",route:"/blog/anki/db-problem/20251219-database-problem"},{kind:"Meta",data:{"20251204-database-problem":"20251204 ë°ì´í°ë² ì´ì¤ 문ì ","20251214-database-problem":"20251214 ë°ì´í°ë² ì´ì¤ 문ì ","20251219-database-problem":"20251219 ë°ì´í°ë² ì´ì¤ 문ì "}}]},{kind:"MdxPage",name:"interview",route:"/blog/anki/interview"},{kind:"Folder",name:"java-problem",route:"/blog/anki/java-problem",children:[{kind:"MdxPage",name:"20251212-java-problem",route:"/blog/anki/java-problem/20251212-java-problem"},{kind:"Meta",data:{"20251212-java-problem":"20251212 ìë° ë¬¸ì "}}]},{kind:"MdxPage",name:"java",route:"/blog/anki/java"},{kind:"MdxPage",name:"network",route:"/blog/anki/network"},{kind:"MdxPage",name:"next-step",route:"/blog/anki/next-step"},{kind:"MdxPage",name:"ohksj77",route:"/blog/anki/ohksj77"},{kind:"MdxPage",name:"operating-system",route:"/blog/anki/operating-system"},{kind:"MdxPage",name:"python",route:"/blog/anki/python"},{kind:"MdxPage",name:"rabbitmq",route:"/blog/anki/rabbitmq"},{kind:"MdxPage",name:"redis",route:"/blog/anki/redis"},{kind:"MdxPage",name:"software-engineering",route:"/blog/anki/software-engineering"},{kind:"MdxPage",name:"spring",route:"/blog/anki/spring"},{kind:"MdxPage",name:"sql",route:"/blog/anki/sql"}]},{kind:"MdxPage",name:"be-writer",route:"/blog/be-writer"},{kind:"Folder",name:"book-review",route:"/blog/book-review",children:[{kind:"Meta",data:{"secret-of-the-underlying-computer":"ì»´í¨í° ë°ë°ë¥ì ë¹ë°","headfirst-design-patterns":"í¤ëí¼ì¤í¸ ëìì¸ í¨í´",hexagonalarchitecturedesignandimplementation:"í¥ì¬ê³ ë ìí¤í
ì² ì¤ê³ì 구í","clean-architecture-learning-in-the-making":"ë§ë¤ë©´ì ë°°ì°ë í´ë¦° ìí¤í
ì²","real-mysql":"ë¦¬ì¼ MySQL","pragmatic-programming-for-java-spring":"ìë° ì¤íë§ ê°ë°ì를 ìí ì¤ì©ì£¼ì íë¡ê·¸ëë°","nginx-cookbook":"Nginx ì¿¡ë¶"}},{kind:"MdxPage",name:"clean-architecture-learning-in-the-making",route:"/blog/book-review/clean-architecture-learning-in-the-making"},{kind:"MdxPage",name:"headfirst-design-patterns",route:"/blog/book-review/headfirst-design-patterns"},{kind:"MdxPage",name:"hexagonalarchitecturedesignandimplementation",route:"/blog/book-review/hexagonalarchitecturedesignandimplementation"},{kind:"MdxPage",name:"nginx-cookbook",route:"/blog/book-review/nginx-cookbook"},{kind:"MdxPage",name:"pragmatic-programming-for-java-spring",route:"/blog/book-review/pragmatic-programming-for-java-spring"},{kind:"Folder",name:"real-mysql",route:"/blog/book-review/real-mysql",children:[{kind:"MdxPage",name:"05-transaction-and-lcok",route:"/blog/book-review/real-mysql/05-transaction-and-lcok"},{kind:"MdxPage",name:"06-data-compress",route:"/blog/book-review/real-mysql/06-data-compress"},{kind:"MdxPage",name:"07-data-encryption",route:"/blog/book-review/real-mysql/07-data-encryption"},{kind:"MdxPage",name:"08-index",route:"/blog/book-review/real-mysql/08-index"},{kind:"MdxPage",name:"09-optimizer-hint",route:"/blog/book-review/real-mysql/09-optimizer-hint"},{kind:"MdxPage",name:"10-query-explain-plan",route:"/blog/book-review/real-mysql/10-query-explain-plan"},{kind:"Meta",data:{"05-transaction-and-lcok":"5ì¥ í¸ëìì
ê³¼ ì ê¸","06-data-compress":"6ì¥ ë°ì´í° ìì¶","07-data-encryption":"7ì¥ ë°ì´í° ìí¸í","08-index":"8ì¥ ì¸ë±ì¤","09-optimizer-hint":"9ì¥ ìµí°ë§ì´ì ì íí¸","10-query-explain-plan":"10ì¥ ì¿¼ë¦¬ ì¤í ê³í",deadlock:"Deadlock","mysql-index":"MySQL Index","basic-data-processing":"기본 ë°ì´í° ì²ë¦¬",replication:"Replication",etc:"Etc"}},{kind:"MdxPage",name:"basic-data-processing",route:"/blog/book-review/real-mysql/basic-data-processing"},{kind:"MdxPage",name:"deadlock",route:"/blog/book-review/real-mysql/deadlock"},{kind:"MdxPage",name:"etc",route:"/blog/book-review/real-mysql/etc"},{kind:"MdxPage",name:"mysql-index",route:"/blog/book-review/real-mysql/mysql-index"},{kind:"MdxPage",name:"replication",route:"/blog/book-review/real-mysql/replication"}]},{kind:"Folder",name:"secret-of-the-underlying-computer",route:"/blog/book-review/secret-of-the-underlying-computer",children:[{kind:"Meta",data:{"sotuc-chapter-1":"íë¡ê·¸ëë° ì¸ì´ë¶í° íë¡ê·¸ë¨ ì¤íê¹ì§, ì´ë ê² ì§íëë¤.","sotuc-chapter-2":"Sotuc Chapter 2"}},{kind:"MdxPage",name:"sotuc-chapter-1",route:"/blog/book-review/secret-of-the-underlying-computer/sotuc-chapter-1"},{kind:"MdxPage",name:"sotuc-chapter-2",route:"/blog/book-review/secret-of-the-underlying-computer/sotuc-chapter-2"}]}]},{kind:"Folder",name:"conference",route:"/blog/conference",children:[{kind:"Meta",data:{"flutter-seoul":"íë¬í° ìì¸","dev-fest-2024"
1:"Dev Fest 2024"}},{kind:"MdxPage",name:"dev-fest-2024",route:"/blog/conference/dev-fest-2024"},{kind:"MdxPage",name:"flutter-seoul",route:"/blog/conference/flutter-seoul"}]},{kind:"MdxPage",name:"cover-letter",route:"/blog/cover-letter"},{kind:"Folder",name:"cpp",route:"/blog/cpp",children:[{kind:"Meta",data:{index:"CPP 문ë²"}},{kind:"MdxPage",name:"index",route:"/blog/cpp"}]},{kind:"Folder",name:"cs",route:"/blog/cs",children:[{kind:"Meta",data:{"computer-orgranization":"ì»´í¨í° 구조",database:"Database",ipie:"IPIE","software-architecture":"ìíí¸ì¨ì´ ìí¤í
ì²"}},{kind:"Folder",name:"computer-orgranization",route:"/blog/cs/computer-orgranization",children:[{kind:"Meta",data:{"compiler-and-interpreter":"Compiler & Interperter"}},{kind:"MdxPage",name:"compiler-and-interpreter",route:"/blog/cs/computer-orgranization/compiler-and-interpreter"}]},{kind:"Folder",name:"database",route:"/blog/cs/database",children:[{kind:"Meta",data:{sql:"SQL",mysql:"MySQL",redis:"Redis"}},{kind:"MdxPage",name:"mysql",route:"/blog/cs/database/mysql"},{kind:"Folder",name:"redis",route:"/blog/cs/database/redis",children:[{kind:"Meta",data:{"redis-session":"ë ëì¤ ì¸ì
ê´ë¦¬","redis-index":"ë ëì¤ ê¸°ë³¸ ì¬ì©ë²","redis-memory-policy":"ë ëì¤ ë©ëª¨ë¦¬ ì ì±
"}},{kind:"MdxPage",name:"redis-index",route:"/blog/cs/database/redis/redis-index"},{kind:"MdxPage",name:"redis-memory-policy",route:"/blog/cs/database/redis/redis-memory-policy"},{kind:"MdxPage",name:"redis-session",route:"/blog/cs/database/redis/redis-session"}]},{kind:"MdxPage",name:"sql",route:"/blog/cs/database/sql"}]},{kind:"Folder",name:"ipie",route:"/blog/cs/ipie",children:[{kind:"Meta",data:{"usability-test":"ì¬ì©ì± í
ì¤í¸",diagram:"ë¤ì´ì´ê·¸ë¨"}},{kind:"MdxPage",name:"diagram",route:"/blog/cs/ipie/diagram"},{kind:"MdxPage",name:"usability-test",route:"/blog/cs/ipie/usability-test"}]},{kind:"Folder",name:"software-architecture",route:"/blog/cs/software-architecture",children:[{kind:"Meta",data:{pagination:"íì´ì§ ë¤ì´ì
","clean-code":"í´ë¦° ì½ë","clean-architecture":"í´ë¦° ìí¤í
ì³",oop:"ê°ì²´ì§í¥ íë¡ê·¸ëë°","design-pattern":"ëìì¸ í¨í´",mvvm:"MVC vs MVP vs MVVM",tools:"Tools","immutable-data":"Immutable"}},{kind:"MdxPage",name:"clean-architecture",route:"/blog/cs/software-architecture/clean-architecture"},{kind:"MdxPage",name:"clean-code",route:"/blog/cs/software-architecture/clean-code"},{kind:"MdxPage",name:"design-pattern",route:"/blog/cs/software-architecture/design-pattern"},{kind:"MdxPage",name:"immutable-data",route:"/blog/cs/software-architecture/immutable-data"},{kind:"MdxPage",name:"mvvm",route:"/blog/cs/software-architecture/mvvm"},{kind:"MdxPage",name:"oop",route:"/blog/cs/software-architecture/oop"},{kind:"MdxPage",name:"pagination",route:"/blog/cs/software-architecture/pagination"}]}]},{kind:"Folder",name:"electronic-product",route:"/blog/electronic-product",children:[{kind:"Meta",data:{"nreal-air":"Nreal - Air"}},{kind:"MdxPage",name:"nreal-air",route:"/blog/electronic-product/nreal-air"}]},{kind:"Folder",name:"finance",route:"/blog/finance",children:[{kind:"Meta",data:{"financial-terminology":"ê¸ìµ ì©ì´ ì 리"}},{kind:"MdxPage",name:"financial-terminology",route:"/blog/finance/financial-terminology"}]},{kind:"Folder",name:"lecture-review",route:"/blog/lecture-review",children:[{kind:"Meta",data:{"oop-foo":"ì¤ë¬´ ìë° ê°ë°ì ìí OOPì íµì¬ ëìì¸ í¨í´","white-ship-gof-design-pattern":"백기ì GoF ëìì¸ í¨í´","database-engineering":"ë°ì´í°ë² ì´ì¤ ìì§ëì´ë§",resilience4j:"Resilience4j"}},{kind:"MdxPage",name:"database-engineering",route:"/blog/lecture-review/database-engineering"},{kind:"MdxPage",name:"oop-foo",route:"/blog/lecture-review/oop-foo"},{kind:"MdxPage",name:"resilience4j",route:"/blog/lecture-review/resilience4j"},{kind:"Folder",name:"white-ship-gof-design-pattern",route:"/blog/lecture-review/white-ship-gof-design-pattern",children:[{kind:"Meta",data:{index:"Index","behavioral-patterns":"Behavioral Patterns","
1structual-patterns":"Structural Patterns"}},{kind:"Folder",name:"behavioral-patterns",route:"/blog/lecture-review/white-ship-gof-design-pattern/behavioral-patterns",children:[{kind:"Meta",data:{"template-method":"Template Method",facade:"Facade"}},{kind:"MdxPage",name:"facade",route:"/blog/lecture-review/white-ship-gof-design-pattern/behavioral-patterns/facade"},{kind:"MdxPage",name:"template-method",route:"/blog/lecture-review/white-ship-gof-design-pattern/behavioral-patterns/template-method"}]},{kind:"MdxPage",name:"index",route:"/blog/lecture-review/white-ship-gof-design-pattern"},{kind:"Folder",name:"structual-patterns",route:"/blog/lecture-review/white-ship-gof-design-pattern/structual-patterns",children:[{kind:"Meta",data:{proxy:"Proxy"}},{kind:"MdxPage",name:"proxy",route:"/blog/lecture-review/white-ship-gof-design-pattern/structual-patterns/proxy"}]}]}]},{kind:"MdxPage",name:"linux",route:"/blog/linux"},{kind:"Folder",name:"portfolio",route:"/blog/portfolio",children:[{kind:"Meta",data:{questi:"Questi"}},{kind:"MdxPage",name:"questi",route:"/blog/portfolio/questi"}]},{kind:"MdxPage",name:"python-script",route:"/blog/python-script"},{kind:"Folder",name:"study",route:"/blog/study",children:[{kind:"Meta",data:{dingcodingco:"ë©ì½ë©ì½ ì¤í°ë","someone-pooped-on-my-cs":"Someone pooped on my CS",infiniteloop:"무í루í CS ì¤í°ë","woowa-course":"ì°ìíí
í¬ì½ì¤","tech-dive":"Tech Dive",groom:"êµ¬ë¦ íí
í¬ ì¸í´ì½ íì¤í"}},{kind:"Folder",name:"cs-study",route:"/blog/study/cs-study",children:[{kind:"Folder",name:"1",route:"/blog/study/cs-study/1",children:[{kind:"Meta",data:{systemcall:"ìì¤í
ì½","osi-7-layer":"OSI 7 ê³ì¸µ","rdb-vs-nosql":"RDB vs NoSQL",jvm:"JVM",servlet:"Servlet"}},{kind:"MdxPage",name:"jvm",route:"/blog/study/cs-study/1/jvm"},{kind:"MdxPage",name:"osi-7-layer",route:"/blog/study/cs-study/1/osi-7-layer"},{kind:"MdxPage",name:"rdb-vs-nosql",route:"/blog/study/cs-study/1/rdb-vs-nosql"},{kind:"MdxPage",name:"servlet",route:"/blog/study/cs-study/1/servlet"},{kind:"MdxPage",name:"systemcall",route:"/blog/study/cs-study/1/systemcall"}]},{kind:"Folder",name:"11",route:"/blog/study/cs-study/11",children:[{kind:"MdxPage",name:"3-way-handshake",route:"/blog/study/cs-study/11/3-way-handshake"},{kind:"Meta",data:{"mutex-and-semaphore":"뮤í
ì¤ì ì¸ë§í¬ì´","db-join":"ë°ì´í°ë² ì´ì¤ ì¡°ì¸","3-way-handshake":"3-way í¸ëìì´í¬",transactional:"@Transactional"}},{kind:"MdxPage",name:"db-join",route:"/blog/study/cs-study/11/db-join"},{kind:"MdxPage",name:"mutex-and-semaphore",route:"/blog/study/cs-study/11/mutex-and-semaphore"},{kind:"MdxPage",name:"transactional",route:"/blog/study/cs-study/11/transactional"}]},{kind:"Folder",name:"12",route:"/blog/study/cs-study/12",children:[{kind:"MdxPage",name:"4-way-handshacking",route:"/blog/study/cs-study/12/4-way-handshacking"},{kind:"Meta",data:{"threadpool-forkandjoin":"Thread Pool, Fork/Join","4-way-handshacking":"4 way handshacking","db-traffic":"DB í¸ëí½",oop:"OOP"}},{kind:"MdxPage",name:"db-traffic",route:"/blog/study/cs-study/12/db-traffic"},{kind:"MdxPage",name:"oop",route:"/blog/study/cs-study/12/oop"},{kind:"MdxPage",name:"threadpool-forkandjoin",route:"/blog/study/cs-study/12/threadpool-forkandjoin"}]},{kind:"Folder",name:"13",route:"/blog/study/cs-study/13",children:[{kind:"Meta",data:{deadlock:"ë°ëë½","ip-address":"IP 주ì",dbcp:"DBCP","design-pattern-in-spring":"ì¤íë§ ëìì¸ í¨í´",servlet:"ìë¸ë¦¿"}},{kind:"MdxPage",name:"dbcp",route:"/blog/study/cs-study/13/dbcp"},{kind:"MdxPage",name:"deadlock",route:"/blog/study/cs-study/13/deadlock"},{kind:"MdxPage",name:"design-pattern-in-spring",route:"/blog/study/cs-study/13/design-pattern-in-spring"},{kind:"MdxPage",name:"ip-address",route:"/blog/study/cs-study/13/ip-address"},{kind:"MdxPage",name:"servlet",route:"/blog/study/cs-study/13/servlet"}]},{kind:"Folder",name:"14",route:"/blog/study/cs-study/14",children:[{kind:"Meta",data:{"cache-memory":"ìºì ë©ëª¨ë¦¬",router:"ë¼ì°í°","db-locking":"ë°ì´í°ë² ì´ì¤ ë½",lambda:"Lambda","dispatcher-servelet":"ëì¤í¨ì² ìë¸ë¦¿"}},{kind:"MdxPage",name:"cache-memory",route:"/blog/study/cs-study/14/cache-memory"},{kind:"MdxPage",name:"db-locking",route:"/blog/study/cs-study/14/db-locking"},{kind:"MdxPage",name:"dispatcher-servelet",route:"/blog/study/cs-study/14/dispatcher-servelet"},{kind:"MdxPage",name:"lambda",route:"/blog/study/cs-study/14/lambda"},{kind:"MdxPage",name:"router",route:"/blog/study/cs-study/14/router"}]},{kind:"Folder",name:"15",route:"/blog/study/cs-study/15",children:[{kind:"Meta",data:{"memory-allocation-and-fragmentation":"ë©ëª¨ë¦¬ í ë¹ê³¼ ë¨í¸í","subnetmask-gateway":"ìë¸ë· ë§ì¤í¬ì ê²ì´í¸ì¨ì´","sql-injection":"SQL ì¸ì ì
","java-annotation":"ìë° ì´ë
¸í
ì´ì
",tomcat:"í°ìº£"}},{kind:"MdxPage",name:"java-annotation",route:"/blog/study/cs-study/15/java-annotation"},{kind:"MdxPage",name:"memory-allocation-and-fragmentation",route:"/blog/study/cs-study/15/memory-allocation-and-fragmentation"},{kind:"MdxPage",name:"sql-injection",route:"/blog/study/cs-study/15/sql-injection"},{kind:"MdxPage",name:"subnetmask-gateway",route:"/blog/study/cs-study/15/subnetmask-gateway"},{kind:"MdxPage",name:"tomcat",route:"/blog/study/cs-study/15/tomcat"}]},{kind:"Folder",name:"16",route:"/blog/study/cs-study/16",children:[{kind:"Meta",data:{"virtual-memory":"ê°ì ë©ëª¨ë¦¬",dhcp:"DHCP","inno-db-engine":"Inno DB ìì§","string-string-builder
1-string-buffer":"String, StringBuilder, StringBuffer","servlet-filter-spring-interceptor":"ìë¸ë¦¿ íí°ì ì¤íë§ ì¸í°ì
í°"}},{kind:"MdxPage",name:"dhcp",route:"/blog/study/cs-study/16/dhcp"},{kind:"MdxPage",name:"inno-db-engine",route:"/blog/study/cs-study/16/inno-db-engine"},{kind:"MdxPage",name:"servlet-filter-spring-interceptor",route:"/blog/study/cs-study/16/servlet-filter-spring-interceptor"},{kind:"MdxPage",name:"string-string-builder-string-buffer",route:"/blog/study/cs-study/16/string-string-builder-string-buffer"},{kind:"MdxPage",name:"virtual-memory",route:"/blog/study/cs-study/16/virtual-memory"}]},{kind:"Folder",name:"17",route:"/blog/study/cs-study/17",children:[{kind:"Meta",data:{"segmentation-paging":"ì¸ê·¸ë©í
ì´ì
ê³¼ íì´ì§","type-url-in-browser":"ë¸ë¼ì°ì ì URLì ì
ë ¥íë©´ ì기ë ì¼","mysql-engine":"MySQL ìì§ ìí¤í
ì²","java-version":"ìë° 8 vs ìë° 11 vs ìë° 17","data-model":"DTO, DAO, VO, Entity"}},{kind:"MdxPage",name:"data-model",route:"/blog/study/cs-study/17/data-model"},{kind:"MdxPage",name:"java-version",route:"/blog/study/cs-study/17/java-version"},{kind:"MdxPage",name:"mysql-engine",route:"/blog/study/cs-study/17/mysql-engine"},{kind:"MdxPage",name:"segmentation-paging",route:"/blog/study/cs-study/17/segmentation-paging"},{kind:"MdxPage",name:"type-url-in-browser",route:"/blog/study/cs-study/17/type-url-in-browser"}]},{kind:"Folder",name:"19",route:"/blog/study/cs-study/19",children:[{kind:"MdxPage",name:"AOP",route:"/blog/study/cs-study/19/AOP"},{kind:"Meta",data:{AOP:"AOP"}}]},{kind:"Folder",name:"2",route:"/blog/study/cs-study/2",children:[{kind:"Meta",data:{interrupt:"ì¸í°ë½í¸","multiplexing-demultiplexing":"Multiplexing / Demultiplexing",schema:"ì¤í¤ë§","garbage-collection":"ê°ë¹ì§ 컬ë ì
","dispatcher-servlet":"Dispatcher Servlet"}},{kind:"MdxPage",name:"dispatcher-servlet",route:"/blog/study/cs-study/2/dispatcher-servlet"},{kind:"MdxPage",name:"garbage-collection",route:"/blog/study/cs-study/2/garbage-collection"},{kind:"MdxPage",name:"interrupt",route:"/blog/study/cs-study/2/interrupt"},{kind:"MdxPage",name:"multiplexing-demultiplexing",route:"/blog/study/cs-study/2/multiplexing-demultiplexing"},{kind:"MdxPage",name:"schema",route:"/blog/study/cs-study/2/schema"}]},{kind:"Folder",name:"20",route:"/blog/study/cs-study/20",children:[{kind:"Meta",data:{"page-replace-algorithm":"íì´ì§ êµì²´ ìê³ ë¦¬ì¦",sop:"SOP ì ì±
",redis:"Redis",optional:"Optional","ioc-di":"IoC/DI"}},{kind:"MdxPage",name:"ioc-di",route:"/blog/study/cs-study/20/ioc-di"},{kind:"MdxPage",name:"optional",route:"/blog/study/cs-study/20/optional"},{kind:"MdxPage",name:"page-replace-algorithm",route:"/blog/study/cs-study/20/page-replace-algorithm"},{kind:"MdxPage",name:"redis",route:"/blog/study/cs-study/20/redis"},{kind:"MdxPage",name:"sop",route:"/blog/study/cs-study/20/sop"}]},{kind:"Folder",name:"21",route:"/blog/study/cs-study/21",children:[{kind:"Meta",data:{"file-system":"íì¼ìì¤í
","xss-csrf":"XSSì CSRF","apache-kafka":"ìíì¹ ì¹´íì¹´",jdbc:"JDBC"}},{kind:"MdxPage",name:"apache-kafka",route:"/blog/study/cs-study/21/apache-kafka"},{kind:"MdxPage",name:"file-system",route:"/blog/study/cs-study/21/file-system"},{kind:"MdxPage",name:"jdbc",route:"/blog/study/cs-study/21/jdbc"},{kind:"MdxPage",name:"xss-csrf",route:"/blog/study/cs-study/21/xss-csrf"}]},{kind:"Folder",name:"22",route:"/blog/study/cs-study/22",children:[{kind:"Meta",data:{"async-non-block":"ë기 ë¹ë기 vs ë¸ë¡í¹ ë
¼ë¸ë¡í¹",grpc:"gRPC",flyway:"Flyway",jackson:"Jackson","spring-data-jpa":"Spring Data JPA"}},{kind:"MdxPage",name:"async-non-block",route:"/blog/study/cs-study/22/async-non-block"},{kind:"MdxPage",name:"flyway",route:"/blog/study/cs-study/22/flyway"},{kind:"MdxPage",name:"grpc",route:"/blog/study/cs-study/22/grpc"},{kind:"MdxPage",name:"jackson",route:"/blog/study/cs-study/22/jackson"},{kind:"MdxPage",name:"spring-data-jpa",route:"/blog/study/cs-study/22/spring-data-jpa"}]},{kind:"Folder",name:"23",route:"/blog/study/cs-study/23",children:[{kind:"Meta",data:{dmz:"DMZ","procedure-trigger":"íë¡ìì ì í¸ë¦¬ê±°","table-scan-vs-index-scan":"í
ì´ë¸ ì¤ìºê³¼ ì¸ë±ì¤ ì¤ìº","persistence-context":"Persistence Context","java-generic":"Java Generic"}},{kind:"MdxPage",name:"dmz",route:"/blog/study/cs-study/23/dmz"},{kind:"MdxPage",name:"java-generic",route:"/blog/study/cs-study/23/java-generic"},{kind:"MdxPage",name:"persistence-context",route:"/blog/study/cs-study/23/persistence-context"},{kind:"MdxPage",name:"procedure-trigger",route:"/blog/study/cs-study/23/procedure-trigger"},{kind:"MdxPage",name:"table-scan-vs-index-scan",route:"/blog/study/cs-study/23/table-scan-vs-index-scan"}]},{kind:"Folder",name:"24",route:"/blog/study/cs-study/24",children:[{kind:"Meta",data:{rxjava:"RxJava","java-thread":"Java Thread","virtual-thread":"Virtual Thread",webflux:"WebFlux","jpa-association-mapping":"JPA ì°ê´ê´ê³ ë§µí","n-plus-one-problem":"N+1 Problem"}},{kind:"MdxPage",name:"java-thread",route:"/blog/study/cs-study/24/java-thread"},{kind:"MdxPage",name:"jpa-association-mapping",route:"/blog/study/cs-study/24/jpa-association-mapping"},{kind:"MdxPage",name:"n-plus-one-problem",route:"/blog/study/cs-study/24/n-plus-one-problem"},{kind:"MdxPage",name:"rxjava",route:"/blog/study/cs-study/24/rxjava"},{kind:"MdxPage",name:"virtual-thread",route:"/blog/study/cs-study/24/virtual-thread"},{kind:"MdxPage",name:"webflux",route:"/blog/study/cs-study/24/webflux"}]},{kind:"Folder",name:"3",route:"/blog/study/cs-study/3",children:[{kind:"Meta",data:{compile:"ì»´íì¼",socket:"Socket",key:"Key",final:"Final",tomcat:"Tomcat"}},{kind:"MdxPage",name:"compile",route:"/blog/study/cs-study/3/compile"},{kind:"MdxPage",name:"final",route:"/blog/study/cs-study/3/final"},{kind:"MdxPage",name:"key",route:"/blog/study/cs-study/3/key"},{kind:"MdxPage",name:"socket",route:"/blog/study/cs-study/3/socket"},{kind:"MdxPage",name:"tomcat",route:"/blog/study/cs-study/3/tomcat"}]},{kind:"Folder",name:"4",route:"/blog/study/cs-study/4",children:[{kind:"Meta",data:{process:"íë¡ì¸ì¤","db-index":"ì¸ë±ì¤",static:"static í´ëì¤ì static ë©ìë"}},{kind:"MdxPage",name:"db-index",route:"/blog/study/cs-study/4/db-index"},{kind:"MdxPage",name:"process",route:"/blog/study/cs-study/4/process"},{kind:"MdxPage",name:"static",route:"/blog/study/cs-study/4/static"}]},{kind:"Folder",name:"5",route:"/blog/study/cs-study/5",children:[{kind:"Meta",data:{"process-memory":"íë¡ì¸ì¤ 주ìê³µê°","cookie-session":"ì¿ í¤ì ì¸ì
","b-tree":"B-Tree","abstract-interface":"ì¶ìí´ëì¤ì ì¸í°íì´ì¤"}},{kind:"MdxPage",name:"abstract-interface",route:"/blog/study/cs-study/5/abstract-interface"},{kind:"MdxPage",name:"b-tree",route:"/blog/study/cs-study/5/b-tree"},{kind:"MdxPage",name:"cookie-session",route:"/blog/study/cs-study/5/cookie-session"},{kind:"MdxPage",name:"process-memory",route:"/blog/study/cs-study/5/process-memory"}]},{kind:"Folder",name:"6",route:"/blog/study/cs-study/6",children:[{kind:"Meta",data:{"context-switch":"컨í
ì¤í¸ ì¤ìì¹",http:"HTTP",view:"ë·°","equals-hashcode":"equalsì hashcode","spring-mvc-spring-boot":"Spring MVCì Spring Boot"}}
1,{kind:"MdxPage",name:"context-switch",route:"/blog/study/cs-study/6/context-switch"},{kind:"MdxPage",name:"equals-hashcode",route:"/blog/study/cs-study/6/equals-hashcode"},{kind:"MdxPage",name:"http",route:"/blog/study/cs-study/6/http"},{kind:"MdxPage",name:"spring-mvc-spring-boot",route:"/blog/study/cs-study/6/spring-mvc-spring-boot"},{kind:"MdxPage",name:"view",route:"/blog/study/cs-study/6/view"}]},{kind:"Folder",name:"7",route:"/blog/study/cs-study/7",children:[{kind:"Meta",data:{"process-scheduling-algorithm":"íë¡ì¸ì¤ ì¤ì¼ì¤ë§ ìê³ ë¦¬ì¦","http-version":"HTTP ë²ì ",normalization:"ì ê·í",collections:"Collections"}},{kind:"MdxPage",name:"collections",route:"/blog/study/cs-study/7/collections"},{kind:"MdxPage",name:"http-version",route:"/blog/study/cs-study/7/http-version"},{kind:"MdxPage",name:"normalization",route:"/blog/study/cs-study/7/normalization"},{kind:"MdxPage",name:"process-scheduling-algorithm",route:"/blog/study/cs-study/7/process-scheduling-algorithm"}]},{kind:"Folder",name:"8",route:"/blog/study/cs-study/8",children:[{kind:"Meta",data:{ipc:"IPC"}},{kind:"MdxPage",name:"ipc",route:"/blog/study/cs-study/8/ipc"}]},{kind:"Meta",data:{1:"1주차",2:"2주차",3:"3주차",4:"4주차",5:"5주차",6:"6주차",7:"7주차",8:"8주차",11:"11주차",12:"12주차",13:"13주차",14:"14주차",15:"15주차",16:"16주차",17:"17주차",18:"18주차",19:"19주차",20:"20주차",21:"21주차",22:"22주차",23:"23주차",24:"24주차",index:"Index"}},{kind:"MdxPage",name:"index",route:"/blog/study/cs-study"}]},{kind:"Folder",name:"dingcodingco",route:"/blog/study/dingcodingco",children:[{kind:"Meta",data:{"backend-interview-3days-challenge":"ë°±ìë ì¸í°ë·° 3ì¼ ì±ë¦°ì§"}},{kind:"MdxPage",name:"backend-interview-3days-challenge",route:"/blog/study/dingcodingco/backend-interview-3days-challenge"}]},{kind:"Folder",name:"groom",route:"/blog/study/groom",children:[{kind:"Meta",data:{"groom-orientation":"ì¤ë¦¬ìí
ì´ì
"}},{kind:"MdxPage",name:"groom-orientation",route:"/blog/study/groom/groom-orientation"}]},{kind:"Folder",name:"infiniteloop",route:"/blog/study/infiniteloop",children:[{kind:"Meta",data:{"linux-basic-for-server-management":"ìë² ì´ìì íìí 리ë
ì¤ ê¸°ë³¸ ì§ì","reentrant-lock-vs-synchronized":"ReentrantLock vs synchronized"}},{kind:"MdxPage",name:"linux-basic-for-server-management",route:"/blog/study/infiniteloop/linux-basic-for-server-management"},{kind:"MdxPage",name:"reentrant-lock-vs-synchronized",route:"/blog/study/infiniteloop/reentrant-lock-vs-synchronized"}]},{kind:"Folder",name:"someone-pooped-on-my-cs",route:"/blog/study/someone-pooped-on-my-cs",children:[{kind:"Meta",data:{"async-non-blocking":"Async vs Non blocking","easycode-transaction":"ì¬ì´ì½ë í¸ëìì
"}},{kind:"MdxPage",name:"async-non-blocking",route:"/blog/study/someone-pooped-on-my-cs/async-non-blocking"},{kind:"MdxPage",name:"easycode-transaction",route:"/blog/study/someone-pooped-on-my-cs/easycode-transaction"}]},{kind:"Folder",name:"tech-dive",route:"/blog/study/tech-dive",children:[{kind:"Meta",data:{"tech-dive-5-recap":"Tech Dive ì¤í°ë 5íì°¨(News Feed System)","sns-feed-research":"News Feed ì ì ì¡°ì¬"}},{kind:"Folder",name:"sns-feed-research",route:"/blog/study/tech-dive/sns-feed-research",children:[{kind:"Meta",data:{"sns-feed-system-design":"SNS í¼ë ìì¤í
ì¤ê³","sns-feed-system-infra-architecture":"SNS í¼ë ì¸íë¼ ìí
1¤í
ì²","sns-feed-graph-database":"SNS í¼ë Graph Database","facebook-tao-graph":"Facebook TAO Graph"}},{kind:"MdxPage",name:"facebook-tao-graph",route:"/blog/study/tech-dive/sns-feed-research/facebook-tao-graph"},{kind:"MdxPage",name:"sns-feed-graph-database",route:"/blog/study/tech-dive/sns-feed-research/sns-feed-graph-database"},{kind:"MdxPage",name:"sns-feed-system-design",route:"/blog/study/tech-dive/sns-feed-research/sns-feed-system-design"},{kind:"MdxPage",name:"sns-feed-system-infra-architecture",route:"/blog/study/tech-dive/sns-feed-research/sns-feed-system-infra-architecture"}]},{kind:"MdxPage",name:"tech-dive-5-recap",route:"/blog/study/tech-dive/tech-dive-5-recap"}]},{kind:"MdxPage",name:"woowa-course",route:"/blog/study/woowa-course"}]},{kind:"Folder",name:"tools",route:"/blog/tools",children:[{kind:"Meta",data:{docker:"Docker","docker-compose-up-build":"docker-compose up --build",intellij:"IntelliJ IDEA",git:"Git",chrome:"Chrome","nvim-lazyvim":"Nvim & LazyVim",vmware:"Vmware"}},{kind:"MdxPage",name:"chrome",route:"/blog/tools/chrome"},{kind:"MdxPage",name:"docker-compose-up-build",route:"/blog/tools/docker-compose-up-build"},{kind:"MdxPage",name:"docker",route:"/blog/tools/docker"},{kind:"MdxPage",name:"git",route:"/blog/tools/git"},{kind:"MdxPage",name:"intellij",route:"/blog/tools/intellij"},{kind:"Folder",name:"nvim-lazyvim",route:"/blog/tools/nvim-lazyvim",children:[{kind:"Meta",data:{keymaps:"keymaps",xclip:"xclip"}},{kind:"MdxPage",name:"keymaps",route:"/blog/tools/nvim-lazyvim/keymaps"},{kind:"MdxPage",name:"xclip",route:"/blog/tools/nvim-lazyvim/xclip"}]},{kind:"MdxPage",name:"vmware",route:"/blog/tools/vmware"}]}]},{kind:"Folder",name:"docs",route:"/docs",children:[{kind:"Meta",data:{paypal:"PayPal",redis:"Redis"}},{kind:"Folder",name:"paypal",route:"/docs/paypal",children:[{kind:"Meta",data:{"subscription-api":"구ë
API","webhook-api":"ì¹í
API"}},{kind:"MdxPage",name:"subscription-api",route:"/docs/paypal/subscription-api"},{kind:"MdxPage",name:"webhook-api",route:"/docs/paypal/webhook-api"}]},{kind:"Folder",name:"redis",route:"/docs/redis",children:[{kind:"Meta",data:{"redis-stream":"Redis Stream","redis-transaction":"Redis Transactionì íê³ì Pipeline ë¹êµ","redis-geospatial":"Redis Geospatial"}},{kind:"MdxPage",name:"redis-geospatial",route:"/docs/redis/redis-geospatial"},{kind:"MdxPage",name:"redis-stream",route:"/docs/redis/redis-stream"},{kind:"MdxPage",name:"redis-transaction",route:"/docs/redis/redis-transaction"}]}]},{kind:"Folder",name:"etc",route:"/etc",children:[{kind:"Meta",data:{ruby:"Ruby",flutter:"Flutter",fastapi:"FastAPI"}},{kind:"Folder",name:"fastapi",route:"/etc/fastapi",children:[{kind:"Meta",data:{"fastapi-background-task":"Background Task","celery-vs-fastapi-background-task":"Celery vs FastAPI Background Task","dishka-generic-di":"Dishka Generic DI",pytest:"Pytest"}},{kind:"MdxPage",name:"celery-vs-fastapi-background-task",route:"/etc/fastapi/celery-vs-fastapi-background-task"},{kind:"MdxPage",name:"dishka-generic-di",route:"/etc/fastapi/dishka-generic-di"},{kind:"MdxPage",name:"fastapi-background-task",route:"/etc/fastapi/fastapi-background-task"},{kind:"Folder",name:"pytest",route:"/etc/fastapi/pytest",children:[{kind:"Meta",data:{"get-started":"Get Started","python-test-rollback":"Python Test Rollback"}},{kind:"MdxPage",name:"get-started",route:"/etc/fastapi/pytest/get-started"},{kind:"MdxPage",name:"python-test-rollback",route:"/etc/fastapi/pytest/python-test-rollback"}]}]},{kind:"Folder",name:"flutter",route:"/etc/flutter",children:[{kind:"Meta",data:{"flutter-tips":"íë¬í° í",theory:"ì´ë¡ ",package:"í¨í¤ì§"}},{kind:"MdxPage",name:"flutter-tips",route:"/etc/flutter/flutter-tips"},{kind:"Folder",name:"package",route:"/etc/flutter/package",children:[{kind:"Meta",data:{firebase:"Firebase","flutter-http":"Flutter HTTP","go-router":"Go Router",riverpod:"Riverpod","modal-bottom-sheet":"Modal Bottom Sheet","local-noti":"Local Notification"}},{kind:"MdxPage",name:"firebase",route:"/etc/flutter/package/firebase"},{kind:"MdxPage",name:"flutter-http",route:"/etc/flutter/package/flutter-http"},{kind:"MdxPage",name:"go-router",route:"/etc/flutter/package/go-router"},{kind:"MdxPage",name:"local-noti",route:"/etc/flutter/package/local-noti"},{kind:"MdxPage",name:"modal-bottom-sheet",route:"/etc/flutter/package/modal-bottom-sheet",frontMatter:{
1sidebar_position:2,toc_max_heading_level:4}},{kind:"MdxPage",name:"riverpod",route:"/etc/flutter/package/riverpod"}]},{kind:"Folder",name:"theory",route:"/etc/flutter/theory",children:[{kind:"Meta",data:{"sqflite-vs-drift":"Sqflite vs Drift","async-technique":"Async Technique","session-and-token":"Session and Token"}},{kind:"MdxPage",name:"async-technique",route:"/etc/flutter/theory/async-technique"},{kind:"MdxPage",name:"session-and-token",route:"/etc/flutter/theory/session-and-token"},{kind:"MdxPage",name:"sqflite-vs-drift",route:"/etc/flutter/theory/sqflite-vs-drift"}]}]},{kind:"Folder",name:"ruby",route:"/etc/ruby",children:[{kind:"Meta",data:{index:"Ruby?"}},{kind:"MdxPage",name:"index",route:"/etc/ruby"}]}]},{kind:"MdxPage",name:"index",route:"/"},{kind:"Folder",name:"java-and-spring",route:"/java-and-spring",children:[{kind:"Meta",data:{"next-step":"Next Step",msa:"MSA",index:"Javaë?",basic:"Basic",spring:"Spring","spring-boot":"Spring Boot",jpa:"JPA",webflux:"WebFlux","deep-dive":"Deep Dive",pattern:"Pattern",api:"API",project:"Project"}},{kind:"Folder",name:"api",route:"/java-and-spring/api",children:[{kind:"Meta",data:{redis:"Redis","kafka-with-spring":"Kafka",json:"ì§ë ¬í / ìì§ë ¬í","http-url-connection":"HTTP / WEB íµì ","office-file-io":"MS Office íì¼ ì
ì¶ë ¥",thymeleaf:"Thymeleaf",concurrency:"ëìì± ê´ë ¨"}},{kind:"MdxPage",name:"concurrency",route:"/java-and-spring/api/concurrency"},{kind:"MdxPage",name:"http-url-connection",route:"/java-and-spring/api/http-url-connection"},{kind:"MdxPage",name:"json",route:"/java-and-spring/api/json"},{kind:"MdxPage",name:"kafka-with-spring",route:"/java-and-spring/api/kafka-with-spring"},{kind:"MdxPage",name:"office-file-io",route:"/java-and-spring/api/office-file-io"},{kind:"MdxPage",name:"redis",route:"/java-and-spring/api/redis"},{kind:"MdxPage",name:"thymeleaf",route:"/java-and-spring/api/thymeleaf"}]},{kind:"Folder",name:"basic",route:"/java-and-spring/basic",children:[{kind:"Meta",data:{java:"Java 문ë²",kotlin:"Kotlin 문ë²","web-theory":"ì¹ ê°ë° 기ì´","multi-module":"ë©í° 모ë","useful-annotation":"Useful Annotation"}},{kind:"Folder",name:"java",route:"/java-and-spring/basic/java",children:[{kind:"Meta",data:{"for-programming-test":"ì½í
ì© ìë°","java-grammar":"ìë° ë¬¸ë²"}},{kind:"MdxPage",name:"for-programming-test",route:"/java-and-spring/basic/java/for-programming-test"},{kind:"MdxPage",name:"java-grammar",route:"/java-and-spring/basic/java/java-grammar"}]},{kind:"Folder",name:"kotlin",route:"/java-and-spring/basic/kotlin",children:[{kind:"Meta",data:{"kotlin-basic-type":"ì½í린 ê¸°ì´ ìë£í","kotlin-control-flow":"ì½í린 조건문","kotlin-loop":"ì½í린 ë°ë³µë¬¸","kotlin-function":"ì½í린 í¨ì","kotlin-class":"ì½í린 í´ëì¤"}},{kind:"MdxPage",name:"kotlin-basic-type",route:"/java-and-spring/basic/kotlin/kotlin-basic-type"},{kind:"MdxPage",name:"kotlin-class",route:"/java-and-spring/basic/kotlin/kotlin-class"},{kind:"MdxPage",name:"kotlin-control-flow",route:"/java-and-spring/basic/kotlin/kotlin-control-flow"},{kind:"MdxPage",name:"kotlin-function",route:"/java-and-spring/basic/kotlin/kotlin-function"},{kind:"MdxPage",name:"kotlin-loop",route:"/java-and-spring/basic/kotlin/kotlin-loop"}]},{kind:"MdxPage",name:"multi-module",route:"/java-and-spring/basic/multi-module"},{kind:"MdxPage",name:"useful-annotation",route:"/java-and-spring/basic/useful-annotation"},{kind:"MdxPage",name:"web-theory",route:"/java-and-spring/basic/web-theory"}]},{kind:"Folder",name:"deep-dive",route:"/java-and-spring/deep-dive",children:[{kind:"Meta",data:{jvm:"JVM","jvm-gc":"JVM GC"}},{kind:"MdxPage",name:"jvm-gc",route:"/java-and-spring/deep-dive/jvm-gc"},{kind:"MdxPage",name:"jvm",route:"/java-and-spring/deep-dive/jvm"}]},{kind:"MdxPage",name:"index",route:"/java-and-spring"},{kind:"Folder",name:"jpa",route:"/java-and-spring/jpa",children:[{kind:"Meta",data:{"quick-start":"JPA Quick Start","association-mapping":"ì°ê´ê´ê³ 매í","query-dsl":"QueryDSL",theory:"JPA ì´ë¡ ",error:"JPA를 ì¬ì©íë©° 겪ì ìë¬ ëª¨ì","spring-data-redis":"Redis"}},{kind:"MdxPage",name:"association-mapping",route:"/java-and-spring/jpa/association-mapping"},{kind:"MdxPage",name:"error",route:"/java-and-spring/jpa/error"},{kind:"MdxPage",name:"query-dsl",route:"/java-and-spring/jpa/query-dsl"},{kind:"MdxPage",name:"quick-start",route:"/java-and-spring/jpa/quick-start"},{kind:"MdxPage",name:"spring-data-redis",route:"/java-and-spring/jpa/spring-data-redis"},{kind:"MdxPage",name:"theory",route:"/java-and-spring/jpa/theory"}]},{kind:"Folder",name:"msa",route:"/java-and-spring/msa",children:[{kind:"Meta",data:{"microservice-theory":"ë§ì´í¬ë¡ ìë¹ì¤ ì´ë¡ ","microservice-pattern":"ë§ì´í¬ë¡ ìë¹ì¤ í¨í´",ddd:"ëë©ì¸ 주ë ì¤ê³"}},{kind:"MdxPage",name:"ddd",route:"/java-and-spring/msa/ddd"},{kind:"MdxPage",name:"microservice-pattern",route:"/java-and-spring/msa/microservice-pattern"},{kind:"MdxPage",name:"microservice-theory",route:"/java-and-spring/msa/microservice-theory"}]},{kind:"MdxPage",name:"next-step",route:"/java-and-spring/next-step"},{kind:"Folder",name:"pattern",route:"/java-and-spring/pattern",children:[{kind:"Meta",data:{envelop_pattern:"ë´í¬í¨í´"}},{kind:"MdxPage",name:"envelop_pattern",route:"/java-and-spring/pattern/envelop_pattern"}]},{kind:"Folder",name:"project",route:"/java-and-spring/project",children:[{kind:"Meta",data:{lolmoonchul:"ë¡¤ë¬¸ì² (ì§í ì¤)",shoppingmall:"Thymeleaf ì¼í몰(ì¤ë¨)","delivery-app-mvp":"ë°°ë¬ì±"}},{kind:"MdxPage",name:"delivery-app-mvp",route:"/java-and-spring/project/delivery-app-mvp"},{kind:"MdxPage",name:"lolmoonchul",route:"/java-and-spring/project/lolmoonchul"},{kind:"MdxPage",name:"shoppingmall",route:"/java-and-spring/project/shoppingmall"}]},{kind:"Folder",name:"spring-boot",route:"/java-and-spring/spring-boot",children:[{kind:"Meta",data:{"spring-boot":"Spring ì¤ì ","rest-api":"Rest API","response-code":"Request & Response",exception:"Exception & Validation","container-and-context":"Container & Context","interceptor-and-filter":"Interceptor & Filter",pagination:"Pagination","spring-auth":"Auth","spring-security":"Spring Security","spring-cloud":"Spring Cloud","junit-test":"Junitê³¼ Test",monitoring:"Monitoring","spring-batch":"Spring Batch",aop:"Spring ê´ì ì§í¥ íë¡ê·¸ëë°","spring-tip":"Spring í","message-queue":"Message Queue"}},{kind:"MdxPage",name:"aop",route:"/java-and-spring/spring-boot/aop"},{kind:"MdxPage",name:"container-and-context",route:"/java-and-spring/spring-boot/container-and-context"},{kind:"MdxPage",name:"exception",route:"/java-and-spring/spring-boot/exception"},{kind:"MdxPage",name:"interceptor-and-filter",route:"/java-and-spring/spring-boot/interceptor-and-filter"},{kind:"MdxPage",name:"junit-test",route:"/java-and-spring/spring-boot/junit-test"},{kind:"MdxPage",name:"message-queue",route:"/java-and-spring/spring-boot/message-queue"},{kind:"MdxPage",name:"monitoring",route:"/java-and-spring/spring-boot/monitoring"},{kind:"MdxPage",name:"pagination",route:"/java-and-spring/spring-boot/pagination"},{kind:"MdxPage",name:"response-code",route:"/java-and-spring/spring-boot/response-code"},{kind:"MdxPage",name:"rest-api",route:"/java-and-spring/spring-boot/rest-api"},{kind:"MdxPage",name:"spring-auth",route:"/java-and-spring/spring-boot/spring-auth"},{kind:"MdxPage",name:"spring-batch",route:"/java-and-spring/spring-boot/spring-batch"},{kind:"MdxPage",name:"spring-boot",route:"/java-and-spring/spring-boot/spring-boot"},{kind:"MdxPage",name:"spring-cloud",route:"/java-and-spring/spring-boot/spring-cloud"},{kind:"MdxPage",name:"spring-security",route:"/java-and-spring/spring-boot/spring-security"},{kind:"MdxPage",name:"spring-tip",route:"/java-and-spring/spring-boot/spring-tip"}]},{kind:"Folder",name:"webflux",route:"/java-and-spring/webflux",children:[{kind:"Meta",data:{"webflux-info":"WebFluxë?"}},{kind:"MdxPage",name:"webflux-info",route:"/java-and-spring/webflux/webflux-info"}]}]},{kind:"Folder",name:"js-framework",route:"/js-framework",children:[{kind:"Meta",data:{"node-next-step":"Node Next Step","js-grammar":"JavaScript 문ë²",nest:"Nest.js",nodejs:"Node.js ë?",expressjs:"Express",next:"Next.js"}},{kind:"MdxPage",name:"expressjs",route:"/js-framework/expressjs"},{kind:"MdxPage",name:"js-grammar",route:"/js-framework/js-grammar"},{kind:"Folder",name:"nest",route:"/js-framework/nest",children:[{kind:"Meta",data:{index:"Index","
1nest-scheduling":"Nest Scheduling ë¹êµ","nest-command":"Nest Command","nest-proxy":"Nest Proxy","nest-aop":"Nest AOP","nest-swagger":"Swagger","nest-data-loader":"Data Loader","guard-strategy":"Guard & Strategy",prisma:"Prisma","module-system":"Module system",controller:"Controller",exception:"Exception",typeorm:"Typeorm",drizzle:"Drizzle",validation:"Validation"}},{kind:"MdxPage",name:"controller",route:"/js-framework/nest/controller"},{kind:"MdxPage",name:"drizzle",route:"/js-framework/nest/drizzle"},{kind:"MdxPage",name:"exception",route:"/js-framework/nest/exception"},{kind:"MdxPage",name:"guard-strategy",route:"/js-framework/nest/guard-strategy"},{kind:"MdxPage",name:"index",route:"/js-framework/nest"},{kind:"MdxPage",name:"module-system",route:"/js-framework/nest/module-system"},{kind:"MdxPage",name:"nest-aop",route:"/js-framework/nest/nest-aop"},{kind:"MdxPage",name:"nest-command",route:"/js-framework/nest/nest-command"},{kind:"MdxPage",name:"nest-data-loader",route:"/js-framework/nest/nest-data-loader"},{kind:"MdxPage",name:"nest-proxy",route:"/js-framework/nest/nest-proxy"},{kind:"MdxPage",name:"nest-scheduling",route:"/js-framework/nest/nest-scheduling"},{kind:"MdxPage",name:"nest-swagger",route:"/js-framework/nest/nest-swagger"},{kind:"Folder",name:"prisma",route:"/js-framework/nest/prisma",children:[{kind:"Meta",data:{prisma:"Index","prisma-query-patterns-comparison":"Prisma ëì Query ë¹êµ"}},{kind:"MdxPage",name:"prisma-query-patterns-comparison",route:"/js-framework/nest/prisma/prisma-query-patterns-comparison"},{kind:"MdxPage",name:"prisma",route:"/js-framework/nest/prisma/prisma"}]},{kind:"MdxPage",name:"typeorm",route:"/js-framework/nest/typeorm"},{kind:"MdxPage",name:"validation",route:"/js-framework/nest/validation"}]},{kind:"Folder",name:"next",route:"/js-framework/next",children:[{kind:"Meta",data:{"react-short":"리ì¡í¸ ìì½","next-basic":"ë¥ì¤í¸ ììí기"}},{kind:"MdxPage",name:"next-basic",route:"/js-framework/next/next-basic"},{kind:"MdxPage",name:"react-short",route:"/js-framework/next/react-short"}]},{kind:"MdxPage",name:"node-next-step",route:"/js-framework/node-next-step"},{kind:"MdxPage",name:"nodejs",route:"/js-framework/nodejs"}]},{kind:"Folder",name:"theory",route:"/theory",children:[{kind:"Meta",data:{"operating-system":"ì´ìì²´ì ",infra:"ì¸íë¼",java:"JAVA/Kotlin",spring:"Spring",python:"Python","data-structure":"ìë£êµ¬ì¡°",database:"Database",network:"ë¤í¸ìí¬",security:"Security",mongodb:"MongoDB"}},{kind:"Folder",name:"data-structure",route:"/theory/data-structure",children:[{kind:"Meta",data:{hash:"Hash","b-tree":"B Tree","sql-index":"SQL Index"}},{kind:"MdxPage",name:"b-tree",route:"/theory/data-structure/b-tree"},{kind:"MdxPage",name:"hash",route:"/theory/data-structure/hash"},{kind:"MdxPage",name:"sql-index",route:"/theory/data-structure/sql-index"}]},{kind:"Folder",name:"database",route:"/theory/database",children:[{kind:"Meta",data:{"ap-database-system":"AP ë°ì´í°ë² ì´ì¤ ìì¤í
","sql-grammar":"SQL 문ë²","n-plus-one":"N+1",schema:"ì¤í¤ë§","database-normalization":"ë°ì´í°ë² ì´ì¤ ì ê·í",view:"ë·°",transaction:"í¸ëìì
",replication:"ë³µì ","join-type":"ì¡°ì¸ ì¢
ë¥","database-zero-downtime-migration":"ë°ì´í°ë² ì´ì¤ 무ì¤ë¨ ë§ì´ê·¸ë ì´ì
"}},{kind:"MdxPage",name:"ap-database-system",route:"/theory/database/ap-database-system"},{kind:"MdxPage",name:"database-normalization",route:"/theory/database/database-normalization"},{kind:"MdxPage",name:"database-zero-downtime-migration",route:"/theory/database/database-zero-downtime-migration"},{kind:"MdxPage",name:"join-type",route:"/theory/database/join-type"},{kind:"MdxPage",name:"n-plus-one",route:"/theory/database/n-plus-one"},{kind:"MdxPage",name:"replication",route:"/theory/database/replication"},{kind:"MdxPage",name:"schema",route:"/theory/database/schema"},{kind:"MdxPage",name:"sql-grammar",route:"/theory/database/sql-grammar"},{kind:"MdxPage",name:"transaction",route:"/theory/database/transaction"},{kind:"MdxPage",name:"view",route:"/theory/database/view"}]},{kind:"Folder",name:"infra",route:"/theory/infra",children:[{kind:"Meta",data:{messaging:"ë©ìì§(ì´ë¡ )","rabbitmq-official":"RabbitMQ ê³µì문ì ë²ì",redis:"Redis",aws:"AWS",azure:"Azure","loki-document":"Loki ê³µì 문ì ë²ì"}},{kind:"Folder",name:"aws",route:"/theory/infra/aws",children:[{kind:"Meta",data:{"amazon-sqs-queue-comparison":"Amazon SQS í ë¹êµ","aws-sqs":"AWS SQS"}},{kind:"MdxPage",name:"amazon-sqs-queue-comparison",route:"/theory/infra/aws/amazon-sqs-queue-comparison"},{kind:"MdxPage",name:"aws-sqs",route:"/theory/infra/aws/aws-sqs"}]},{kind:"Folder",name:"azure",route:"/theory/infra/azure",children:[{kind:"Meta",data:{"functions-python-guide":"Functions Python Guide","azure-functions-deploy":"Azure Functions Deploy","durable-functions-perf-and-scale":"Durable Functions Perf and Scale","azure-durable-functions-billing":"Azure Durable Functions Billing","azure-container-apps-billing":"Azure Container Apps Billing","azure-function-container-ssh":"Azure Functions 컨í
ì´ë ë°°í¬ ë° SSH ì ì ê°ì´ë"}},{kind:"MdxPage",name:"azure-durable-functions-billing",route:"/theory/infra/azure/azure-durable-functions-billing",frontMatter:{title:"Azure Durable Functions & Container Apps ê³¼ê¸ êµ¬ì¡°"}},{kind:"MdxPage",name:"azure-function-container-ssh",route:"/theory/infra/azure/azure-function-container-ssh",frontMatter:{title:"Azure Functions 컨í
ì´ë ë°°í¬ ë° SSH ì ì ê°ì´ë"}},{kind:"MdxPage",name:"azure-functions-deploy",route:"/theory/infra/azure/azure-functions-deploy"},{kind:"MdxPage",name:"durable-functions-perf-and-scale",route:"/theory/infra/azure/durable-functions-perf-and-scale"},{kind:"MdxPage",name:"functions-python-guide",route:"/theory/infra/azure/functions-python-guide"}]},{kind:"Folder",name:"loki-document",route:"/theory/infra/loki-document",children:[{kind:"Meta",data:{index:"ìê°","get-started":"ììí기","send-data":"Lokië¡ ë¡ê·¸ ë°ì´í° ë³´ë´ê¸°",query:"LogQL 쿼리",operations:"Loki ê´ë¦¬"}},{kind:"Folder",name:"get-started",route:"/theory/infra/loki-document/get-started",children:[{kind:"Meta",data:{overview:"Loki ê°ì","quick-start":"ë¹ ë¥¸ ìì",architecture:"ìí
1¤í
ì²",components:"ì»´í¬ëí¸","deployment-modes":"ë°°í¬ ëª¨ë",labels:"ë ì´ë¸","hash-rings":"í´ì ë§"}},{kind:"MdxPage",name:"architecture",route:"/theory/infra/loki-document/get-started/architecture"},{kind:"MdxPage",name:"components",route:"/theory/infra/loki-document/get-started/components"},{kind:"MdxPage",name:"deployment-modes",route:"/theory/infra/loki-document/get-started/deployment-modes"},{kind:"MdxPage",name:"hash-rings",route:"/theory/infra/loki-document/get-started/hash-rings",frontMatter:{title:"ì¼ê´ë í´ì ë§",description:"Lokiì ì¼ê´ë í´ì ë§ì ëí´ ììë´
ëë¤."}},{kind:"Folder",name:"labels",route:"/theory/infra/loki-document/get-started/labels",children:[{kind:"Meta",data:{"bp-labels":"ë ì´ë¸ ëª¨ë² ì¬ë¡",cardinality:"ì¹´ëë리í°","structured-metadata":"구조íë ë©íë°ì´í°","remove-default-labels":"기본 ë ì´ë¸ ì ê±°"}},{kind:"MdxPage",name:"bp-labels",route:"/theory/infra/loki-document/get-started/labels/bp-labels",frontMatter:{title:"ë ì´ë¸ ëª¨ë² ì¬ë¡",description:"Loki ë ì´ë¸ ì¬ì©ì ëí ëª¨ë² ì¬ë¡ë¥¼ ììë´
ëë¤."}},{kind:"MdxPage",name:"cardinality",route:"/theory/infra/loki-document/get-started/labels/cardinality",frontMatter:{title:"ì¹´ëë리í°",description:"Lokiìì ì¹´ëë리í°ê° 무ìì¸ì§ ììë´
ëë¤."}},{kind:"MdxPage",name:"remove-default-labels",route:"/theory/infra/loki-document/get-started/labels/remove-default-labels",frontMatter:{title:"기본 OpenTelemetry ë ì´ë¸ ì ê±°",description:"기본 OpenTelemetry ë ì´ë¸ì ì ê±°íë ë°©ë²ì ììë´
ëë¤."}},{kind:"MdxPage",name:"structured-metadata",route:"/theory/infra/loki-document/get-started/labels/structured-metadata",frontMatter:{title:"구조íë ë©íë°ì´í°ë 무ìì¸ê°",description:"Lokiìì 구조íë ë©íë°ì´í°ì ëí´ ììë´
ëë¤."}}]},{kind:"MdxPage",name:"labels",route:"/theory/infra/loki-document/get-started/labels",frontMatter:{title:"ë ì´ë¸ ì´í´í기",description:"Lokiì ë ì´ë¸ì ëí´ ììë´
ëë¤."}},{kind:"MdxPage",name:"overview",route:"/theory/infra/loki-document/get-started/overview"},{kind:"Folder",name:"quick-start",route:"/theory/infra/loki-document/get-started/quick-start",children:[{kind:"Meta",data:{"quick-start":"Loki íµì¤íí¸",tutorial:"Loki íí 리ì¼"}},{kind:"MdxPage",name:"quick-start",route:"/theory/infra/loki-document/get-started/quick-start/quick-start"},{kind:"MdxPage",name:"tutorial",route:"/theory/infra/loki-document/get-started/quick-start/tutorial"}]},{kind:"MdxPage",name:"quick-start",route:"/theory/infra/loki-document/get-started/quick-start"}]},{kind:"MdxPage",name:"index",route:"/theory/infra/loki-document"},{kind:"Folder",name:"operations",route:"/theory/infra/loki-document/operations",children:[{kind:"Meta",data:{index:"ìê°"}},{kind:"MdxPage",name:"index",route:"/theory/infra/loki-document/operations"}]},{kind:"Folder",name:"query",route:"/theory/infra/loki-document/query",children:[{kind:"Meta",data:{index:"ìê°"}},{kind:"MdxPage",name:"index",route:"/theory/infra/loki-document/query"}]},{kind:"Folder",name:"send-data",route:"/theory/infra/loki-document/send-data",children:[{kind:"Meta",data:{index:"ìê°"}},{kind:"MdxPage",name:"index",route:"/theory/infra/loki-document/send-data"}]},{kind:"Folder",name:"setup",route:"/theory/infra/loki-document/setup",children:[{kind:"Meta",data:{index:"ìê°",size:"í´ë¬ì¤í° í¬ê¸° ì¡°ì ",install:"ì¤ì¹",migrate:"ë§ì´ê·¸ë ì´ì
",upgrade:"ì
ê·¸ë ì´ë"}},{kind:"MdxPage",name:"index",route:"/theory/infra/loki-document/setup",frontMatter:{title:"Loki ì¤ì ",description:"Loki를 ì¤ì íë ë°©ë²ì ììë´
ëë¤."}},{kind:"Folder",name:"install",route:"/theory/infra/loki-document/setup/install",children:[{kind:"Meta",data:{helm:"Helmì ì¬ì©íì¬ ì¤ì¹",tanka:"Tanka를 ì¬ì©íì¬ ì¤ì¹",docker:"Docker를 ì¬ì©íì¬ ì¤ì¹",local:"ë¡ì»¬ì ì¤ì¹",istio:"Istioì ì¤ì¹","install-from-source":"ìì¤ìì ì¤ì¹"}},{kind:"MdxPage",name:"docker",route:"/theory/infra/loki-document/setup/install/docker"},{kind:"Folder",name:"helm",route:"/theory/infra/loki-document/setup/install/helm",children:[{kind:"Meta",data:{index:"ìê°",concepts:"Helm ì°¨í¸ êµ¬ì± ìì","install-monolithic":"모ë리ì Loki ì¤ì¹","install-microservices":"ë§ì´í¬ë¡ìë¹ì¤ Loki ì¤ì¹","install-scalable":"íì¥ ê°ë¥í Loki ì¤ì¹","deployment-guides":"í´ë¼ì°ë ë°°í¬ ê°ì´ë","configure-storage":"ì¤í ë¦¬ì§ êµ¬ì±",values:"Helm ì°¨í¸ ê°","monitor-and-alert":"모ëí°ë§"}},{kind:"MdxPage",name:"concepts",route:"/theory/infra/loki-document/setup/install/helm/concepts",frontMatter:{title:"Helm ì°¨í¸ êµ¬ì± ìì",description:"Loki Helm ì°¨í¸ìì ì¤ì¹íë êµ¬ì± ìì를 ììë´
ëë¤."}},{kind:"MdxPage",name:"configure-storage",route:"/theory/infra/loki-document/setup/install/helm/configure-storage"},{kind:"Folder",name:"deployment-guides",route:"/theory/infra/loki-document/setup/install/helm/deployment-guides",children:[{kind:"Meta",data:{index:"ìê°",aws:"AWSì ë°°í¬",azure:"Azureì ë°°í¬",gcp:"GCPì ë°°í¬"}},{kind:"MdxPage",name:"aws",route:"/theory/infra/loki-document/setup/install/helm/deployment-guides/aws",frontMatter:{title:"AW
1Sìì Loki Helm ì°¨í¸ ë°°í¬",description:"AWSìì Loki Helm ì°¨í¸ë¥¼ ë°°í¬íë ë°©ë²ì ììë´
ëë¤."}},{kind:"MdxPage",name:"azure",route:"/theory/infra/loki-document/setup/install/helm/deployment-guides/azure"},{kind:"MdxPage",name:"gcp",route:"/theory/infra/loki-document/setup/install/helm/deployment-guides/gcp"},{kind:"MdxPage",name:"index",route:"/theory/infra/loki-document/setup/install/helm/deployment-guides",frontMatter:{title:"í´ë¼ì°ë ë°°í¬ ê°ì´ë",description:"í´ë¼ì°ë ì ê³µì
ì²´ì Loki를 ë°°í¬íë ë°©ë²ì ììë´
ëë¤."}}]},{kind:"MdxPage",name:"install-microservices",route:"/theory/infra/loki-document/setup/install/helm/install-microservices",frontMatter:{title:"ë§ì´í¬ë¡ìë¹ì¤ Helm ì°¨í¸ ì¤ì¹",description:"ë§ì´í¬ë¡ìë¹ì¤ 모ëìì Loki Helm ì°¨í¸ë¥¼ ì¤ì¹íë ë°©ë²ì ììë´
ëë¤."}},{kind:"MdxPage",name:"install-monolithic",route:"/theory/infra/loki-document/setup/install/helm/install-monolithic",frontMatter:{title:"모ë리ì Helm ì°¨í¸ ì¤ì¹",description:"모ë리ì 모ëìì Loki Helm ì°¨í¸ë¥¼ ì¤ì¹íë ë°©ë²ì ììë´
ëë¤."}},{kind:"MdxPage",name:"install-scalable",route:"/theory/infra/loki-document/setup/install/helm/install-scalable",frontMatter:{title:"ë¨ì íì¥ ê°ë¥ Helm ì°¨í¸ ì¤ì¹",description:"ë¨ì íì¥ ê°ë¥ 모ëìì Loki Helm ì°¨í¸ë¥¼ ì¤ì¹íë ë°©ë²ì ììë´
ëë¤."}},{kind:"Folder",name:"monitor-and-alert",route:"/theory/infra/loki-document/setup/install/helm/monitor-and-alert",children:[{kind:"Meta",data:{index:"ê°ì","with-grafana-cloud":"Grafana Cloudë¡ ëª¨ëí°ë§","with-local-monitoring":"ë¡ì»¬ 모ëí°ë§"}},{kind:"MdxPage",name:"index",route:"/theory/infra/loki-document/setup/install/helm/monitor-and-alert"},{kind:"MdxPage",name:"with-grafana-cloud",route:"/theory/infra/loki-document/setup/install/helm/monitor-and-alert/with-grafana-cloud"},{kind:"MdxPage",name:"with-local-monitoring",route:"/theory/infra/loki-document/setup/install/helm/monitor-and-alert/with-local-monitoring"}]},{kind:"MdxPage",name:"values",route:"/theory/infra/loki-document/setup/install/helm/values"}]},{kind:"MdxPage",name:"helm",route:"/theory/infra/loki-document/setup/install/helm",frontMatter:{title:"Helmì¼ë¡ Grafana Loki ì¤ì¹",description:"Helmì ì¬ì©íì¬ Grafana Loki를 ì¤ì¹íë ë°©ë²ì ììë´
ëë¤."}},{kind:"MdxPage",name:"install-from-source",route:"/theory/infra/loki-document/setup/install/install-from-source"},{kind:"MdxPage",name:"istio",route:"/theory/infra/loki-document/setup/install/istio"},{kind:"MdxPage",name:"local",route:"/theory/infra/loki-document/setup/install/local"},{kind:"MdxPage",name:"tanka",route:"/theory/infra/loki-document/setup/install/tanka"}]},{kind:"MdxPage",name:"install",route:"/theory/infra/loki-document/setup/install",frontMatter:{title:"Loki ì¤ì¹",description:"Loki를 ì¤ì¹íë ë¤ìí ë°©ë²ì ììë´
ëë¤."}},{kind:"Folder",name:"migrate",route:"/theory/infra/loki-document/setup/migrate",children:[{kind:"Meta",data:{index:"ê°ì","migrate-to-alloy":"Alloyë¡ ë§ì´ê·¸ë ì´ì
","ssd-to-distributed":"SSDìì ë¶ì°ì¼ë¡ ë§ì´ê·¸ë ì´ì
","migrate-to-tsdb":"TSDBë¡ ë§ì´ê·¸ë ì´ì
","migrate-from-distributed":"`loki-distributed`ìì ë§ì´ê·¸ë ì´ì
","migrate-to-three-scalable-targets":"ì¸ ê°ì ëìì¼ë¡ ë§ì´ê·¸ë ì´ì
","migrate-storage-clients":"Thanos ì¤í ë¦¬ì§ í´ë¼ì´ì¸í¸ë¡ ë§ì´ê·¸ë ì´ì
"}},{kind:"MdxPage",name:"index",route:"/theory/infra/loki-document/setup/migrate"},{kind:"MdxPage",name:"migrate-from-distributed",route:"/theory/infra/loki-document/setup/migrate/migrate-from-distributed"},{kind:"MdxPage",name:"migrate-storage-clients",route:"/theory/infra/loki-document/setup/migrate/migrate-storage-clients"},{kind:"MdxPage",name:"migrate-to-alloy",route:"/theory/infra/loki-document/setup/migrate/migrate-to-alloy"},{kind:"MdxPage",name:"migrate-to-three-scalable-targets",route:"/theory/infra/loki-document/setup/migrate/migrate-to-three-scalable-targets"},{kind:"MdxPage",name:"migrate-to-tsdb",route:"/theory/infra/loki-document/setup/migrate/migrate-to-tsdb"},{kind:"MdxPage",name:"ssd-to-distributed",route:"/theory/infra/loki-document/setup/migrate/ssd-to-distributed"}]},{kind:"MdxPage",name:"size",route:"/theory/infra/loki-document/setup/size",frontMatter:{title:"í´ë¬ì¤í° í¬ê¸° ì¡°ì ",description:"Loki í´ë¬ì¤í°ì í¬ê¸°ë¥¼ ì¡°ì íë ë°©ë²ì ììë´
ëë¤."}},{kind:"Folder",name:"upgrade",route:"/theory/infra/loki-document/setup/upgrade",children:[{kind:"Meta",data:{index:"Overview"}},{kind:"MdxPage",name:"index",route:"/theory/infra/loki-document/setup/upgrade",frontMatter:{title:"Loki ì
ê·¸ë ì´ë",description:"Loki를 ì
ê·¸ë ì´ëíë ë°©ë²ì ììë´
ëë¤."}}]}]}]},{kind:"MdxPage",name:"messaging",route:"/theory/infra/messaging"},{kind:"MdxPage",name:"rabbitmq-official",route:"/theory/infra/rabbitmq-official"},{kind:"Folder",name:"redis",route:"/theory/infra/redis",children:[{kind:"Meta",data:{"index-and-persistence":"Index And persistence",replication:"Replication(ê³µì문ì ë²ì)",sentinel:"Sentinel(ê³µì문ì ë²ì)"}},{kind:"MdxPage",name:"index-and-persistence",route:"/theory/infra/redis/index-and-persistence"},{kind:"MdxPage",name:"replication",route:"/theory/infra/redis/replication"},{kind:"MdxPage",name:"sentinel",route:"/theory/infra/redis/sentinel"}]}]},{kind:"Folder",name:"java",route:"/theory/java",children:[{kind:"Meta",data:{jvm:"JVM",gc:"GC",synchronized:"Synchronized"}},{kind:"MdxPage",name:"gc",route:"/theory/java/gc"},{kind:"MdxPage",name:"jvm",route:"/theory/java/jvm"},{kind:"MdxPage",name:"synchronized",route:"/theory/java/synchronized"}]},{kind:"Folder",name:"mongodb",route:"/theory/mongodb",children:[{kind:"Meta",data:{"transaction-vs-rdbms":"Transaction vs RDBMS","index-vs-rdbms":"Index vs RDBMS","mongodb-oom-killer":"MongoDBì OOM Killer: ë©ëª¨ë¦¬ ë¶ì¡± 문ì í´ê²° ê°ì´ë",report:"Report"}},{kind:"MdxPage",name:"index-vs-rdbms",route:"/theory/mongodb/index-vs-rdbms"},{kind:"MdxPage",name:"mongodb-oom-killer",route:"/theory/mongodb/mongodb-oom-killer",frontMatter:{title:"MongoDBì OOM Killer: ë©ëª¨ë¦¬ ë¶ì¡± 문ì í´ê²° ê°ì´ë",description:"Linuxìì MongoDB를 ì´ìí ë ë°ìí ì ìë OOM(Out of Memory) Killer 문ì ì ìì¸ì íì
íê³ , ì´ë¥¼ ë°©ì§í기 ìí ìì¤í
ë° ë°ì´í°ë² ì´ì¤ ìµì í ì ëµì ììë´
ëë¤."}},{kind:"MdxPage",name:"report",route:"/theory/mongodb/report"},{kind:"MdxPage",name:"transaction-vs-rdbms",route:"/theory/mongodb/transaction-vs-rdbms"}]},{kind:"Folder",name:"network",route:"/theory/network",children:[{kind:"Meta",data:{"rate-limiter"
1:"Rate Limiter",multiplexing:"Multiplexing & Demultiplexing","stateless-and-connectionless":"Stateless & Connectionless",websocket:"WebSocket","http-versions-comparison":"HTTP ë²ì ë¹êµ (1.1, 2, 3)"}},{kind:"MdxPage",name:"http-versions-comparison",route:"/theory/network/http-versions-comparison"},{kind:"MdxPage",name:"multiplexing",route:"/theory/network/multiplexing"},{kind:"MdxPage",name:"rate-limiter",route:"/theory/network/rate-limiter"},{kind:"MdxPage",name:"stateless-and-connectionless",route:"/theory/network/stateless-and-connectionless"},{kind:"MdxPage",name:"websocket",route:"/theory/network/websocket"}]},{kind:"Folder",name:"operating-system",route:"/theory/operating-system",children:[{kind:"Meta",data:{"process-thread":"íë¡ì¸ì¤ì ì¤ë ë",ipc:"IPC","process-schedule":"íë¡ì¸ì¤ ì¤ì¼ì¤",thread:"ì¤ë ë","process-sync":"íë¡ì¸ì¤ ë기í","select-vs-epoll":"select vs epoll","memory-management":"Memory Management"}},{kind:"MdxPage",name:"ipc",route:"/theory/operating-system/ipc"},{kind:"MdxPage",name:"memory-management",route:"/theory/operating-system/memory-management"},{kind:"MdxPage",name:"process-schedule",route:"/theory/operating-system/process-schedule"},{kind:"MdxPage",name:"process-sync",route:"/theory/operating-system/process-sync"},{kind:"MdxPage",name:"process-thread",route:"/theory/operating-system/process-thread"},{kind:"MdxPage",name:"select-vs-epoll",route:"/theory/operating-system/select-vs-epoll"},{kind:"MdxPage",name:"thread",route:"/theory/operating-system/thread"}]},{kind:"Folder",name:"python",route:"/theory/python",children:[{kind:"Meta",data:{"python-interpreter":"Python Interpreter","libuv-vs-asyncio":"Libuv VS AsyncIO"}},{kind:"MdxPage",name:"libuv-vs-asyncio",route:"/theory/python/libuv-vs-asyncio"},{kind:"MdxPage",name:"python-interpreter",route:"/theory/python/python-interpreter"}]},{kind:"Folder",name:"security",route:"/theory/security",children:[{kind:"Meta",data:{"apple-vs-google-oauth-diff":"Apple & Goole OAuth ì°¨ì´ì ","oauth-grant-type":"Oauth Grant Type"}},{kind:"MdxPage",name:"apple-vs-google-oauth-diff",route:"/theory/security/apple-vs-google-oauth-diff"},{kind:"MdxPage",name:"oauth-grant-type",route:"/theory/security/oauth-grant-type"}]},{kind:"Folder",name:"spring",route:"/theory/spring",children:[{kind:"Meta",data:{servlet:"ìë¸ë¦¿"}},{kind:"MdxPage",name:"servlet",route:"/theory/spring/servlet"}]}]}],flexsearch:{codeblocks:!0},title:"Next Step",headings:o},pageNextRoute:"/blog/anki/next-step",nextraLayout:t.ZP,themeConfig:d.Z};n.default=(0,a.j)(l)},39812:function(e,n,i){"use strict";var r=i(85893);i(67294);let a={logo:(0,r.jsx)("span",{style:{fontWeight:"bold"},children:"Rookedsysc"}),project:{link:"https://github.com/rookedsysc"},sidebar:{defaultMenuCollapseLevel:1,autoCollapse:!0,toggleButton:!0},chat:{link:"https://open.kakao.com/me/rookedsysc"},docsRepositoryBase:"https://github.com/rookedsysc/nextra-blog/tree/main",footer:{text:"Rookedsysc"}};n.Z=a},15789:function(){}},function(e){e.O(0,[49774,86976,92888,40179],function(){return e(e.s=91595)}),_N_E=e.O()}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.