<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>KTKO 개발 블로그와 여행 일기</title>
    <link>https://ktko.tistory.com/</link>
    <description>개발을 직업으로 삼고, 여행을 좋아하는 남자의 블로그</description>
    <language>ko</language>
    <pubDate>Mon, 13 Apr 2026 02:11:31 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>ktko</managingEditor>
    <item>
      <title>Being 사용법 3가지</title>
      <link>https://ktko.tistory.com/entry/Being-%EC%82%AC%EC%9A%A9%EB%B2%95-3%EA%B0%80%EC%A7%80</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;1. &quot;왜 저러지&quot; 이 느낌이 들 때 쓰인다.&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;you're nice. 너는 착해&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;you're being nice 너 (지금) 착하게 군다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;why are you being so nice to me ?&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;왜 나한테 잘해줘 ? (갑자기 왜 ?)&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;you're rude 넌 무례해&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;you're being rude 넌 무례해(지금 너의 행동들이 무례해)&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;you're being mean ? 너 지금 되게 못됐다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;why are you being mean to me ? 왜 나한테 모질게 굴어 ?&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2. p.p앞에 오는 being 쓰임새 무언가가 그렇게 되고 있을 때&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;I'm fixing a computer = A computer is being fixed&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;치킨 &amp;amp; 짜장면 is being delivered. 치킨과 짜장면이 배달 중이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;My time is being wasted, My money is being wasted&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;They're attacing us. so, we're being attacked.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;그들은 우릴 공격하고, 우리는 공격 받고 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3. 되는 것, 있는 것(동명사로 쓰인다)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;being a teacher is my dream 나의 꿈은 선생님이 되는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;being in an office is boring 사무실에 있는 것은 지루하다&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;being a doctor is not easy. 의사가 되는 것은 쉽지 않다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;출처 : &lt;a href=&quot;https://youtu.be/8HdJEUrdo-I&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://youtu.be/8HdJEUrdo-I&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>영어 공부/영어 문법</category>
      <category>being</category>
      <author>ktko</author>
      <guid isPermaLink="true">https://ktko.tistory.com/414</guid>
      <comments>https://ktko.tistory.com/entry/Being-%EC%82%AC%EC%9A%A9%EB%B2%95-3%EA%B0%80%EC%A7%80#entry414comment</comments>
      <pubDate>Tue, 13 Jul 2021 10:38:02 +0900</pubDate>
    </item>
    <item>
      <title>Garbage Collection Part2</title>
      <link>https://ktko.tistory.com/entry/Garbage-Collection-Part2</link>
      <description>&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;GC (Garbage Collector)의 방식은&amp;nbsp;무엇이 있을까&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;&quot;Garbage Collection Part1&quot;에서 기본적인 GC Process 절차에 대해서 알게 되었다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;이번 포스팅은 GC의 종류 및 방식에 대해서 이어서 진행한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;GC의 종류&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;GC는 크게 Minor GC와 Major GC 두가지 종류가 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;Minor : Young 영역에서 발생하는 GC&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;Major : Old 영역이나 Perm 영역에서 발생하는 GC&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;GC가 발생하거나 객체가 다른 영역으로 이동할 때 병목이 발생하여 성능에 영향을 준다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;&lt;b&gt;핫 스팟 JVM에서는 TLABs&lt;/b&gt;(Thread-local allocation Buffers)라는 것을 사용한다. 이를 통해 각 스레드 메모리 버퍼를 사용하면 다른 스레드에 영향을 주지 않는 메모리 할당 작업이 가능하다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;- 에덴 내에 있는 한 영역&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;- 스레드마다 할당되는 객체의 버퍼, 하나의 스레드가 처리할 수 있는 객체의 최대 크기,&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;- 각 스레드마다 로컬에 할당되므로, 동기화에 신경쓰지 않아도 된다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;- 큰 객체를 많이 할당하는 어플리케이션, 에덴의 크기에 비해 상대적으로 스레드의 개수가 많은 어플리케이션은 TLAB 튜닝으로 상당한 이익을 어들 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;GC의 방식은 5가지가 있다.&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;1. Serial GC&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;2. Parallel GC&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;3. Parallel Old GC&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;4. CMS (Concurrent Mark &amp;amp; Sweep GC)&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;5 G1(Garbage First) GC&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 729px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/995A334B5FCC6BE713&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F995A334B5FCC6BE713&quot; width=&quot;729&quot; height=&quot;329&quot; filename=&quot;스크린샷 2020-12-06 오후 2.24.14.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;https://www.dynatrace.com/resources/ebooks/javabook/reduce-garbage-collection-pause-time/&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;Serial GC&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;Java 5, 6에서의 기본 가비지 컬렉트이고, 싱글 스레드로 돌아간다. 위 이미지 첫 번째 이미지를보면 Pause(Stop-the-Wold)시간이 긴 것을 볼 수 있다. 싱글 스레드로 GC를 수행하기 문에 수행 시간이 긴 것을 볼 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;table class=&quot;txc-table&quot; width=&quot;829&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; style=&quot;border:none;border-collapse:collapse;;font-family:&quot; 맑은=&quot;&quot; 고딕&quot;,=&quot;&quot; sans-serif;font-size:19px&quot;=&quot;&quot;&gt;&lt;tbody&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;-XX:+UseSerialGC&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;Parallel GC&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;Parallel GC는 Serial GC와 똑같은 원리로 동작하지만 Young 영역의 GC과정을 멀티 스레드로 수행한 다는 점이 차이가 있다. 그래서 Pause시간이 짧은 것을 볼 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;-XX:+UseParallelGC&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;Parallel Old GC&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;위의 의미지에선 언급되진 않았지만 Parallel Old GC는 Old 영역에 대해서도 멀티 스레드로 수행한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;Mark-Sweap-compact알고리즘에서 Mark-Summary-Compact 알고리즘을 사용한다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;-XX:+UseParallelOldGC&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;CMS&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 580px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/992EDE4E5FCC8C231C&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F992EDE4E5FCC8C231C&quot; width=&quot;580&quot; height=&quot;371&quot; filename=&quot;스크린샷 2020-12-06 오후 4.44.57.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;CMS GC는 Young 영역에 대한 GC는 Parallel과 비슷하다, Old영역의 GC는 4가지 단계를 거친다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;1. Initial Mark : 매우 짧은 시간의 Pause시간 동안 GC Root를 가장 먼저 참조하는 객체들을 식별한다. 이 부분은 싱글스레드로 동작한다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;2. Concurrent Mark : 싱글 스레드로 수행되고, Initial Mark 단계에서 식별한 객체가 참조하고 있는 모든 객체들을 추적, 어플리케이션 실행과 동시에 진행된다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;3. Remark : Concurrent Mark단계에서 식발한 객체를 다시 추적한다. 멀티 스레드로 동작하여 pause가 짧다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;4. Concurrent Sweep : 최종적으로 살아있는 객체를 제외한 객체들을 삭제한다. 싱글 스레드로 수행되며 다른 스레드와 동시에 수행되기 때문에 Stop The World가 발생하지않는다. 하지만 Compact 과정이 존재하지 않기 때문에 메모리 단편화가 생겨 Concurrent Mode Failure(CMF) 가 발생할 수 있다. Concurrent Mode Failure는 Old영역에 더 이상 메모리를 할당할 공간이 없을 때 발생하는데 메모리 단편화로 인해 Old 영역의 빈 공간이 충분히 존재함에도 불구하고 크기가 큰 객체를 할당할 수 없는 경우가 생길 수 있다. CMF가 발생하면 강제적으로 Compaction을 수행하므로 'Stop The World' 시간이 다른 GC보다 길어질 가능성이 있다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;-XX:+UseConcMarkSweepGC&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;G1GC&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;G1GC는 CMS를 대체하기 위해 만들어졌다. 일반적으로 Young, Old Generation이라는 영역으로 나누어 지지않았고, Region이라는 영역으로 관리한다. CMS과 다르게 Compaction단계를 통해 메모리 단편화를 업앤다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;color: rgb(56, 56, 56); font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif; font-size: 14pt;&quot;&gt;G1 GC는&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(56, 56, 56); font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif; font-size: 14pt;&quot;&gt;Garbage만 있는 Region을 처음에 수거하기 때문에 Garbage First라는 이름이 붙었다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;color: rgb(56, 56, 56); font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif; font-size: 14pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;font color=&quot;#383838&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;G1GC의 프로세스에 대해서는 &quot;&lt;/span&gt;&lt;a href=&quot;https://www.oracle.com/technetwork/tutorials/tutorials-1876574.html&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;Oracle G1Gc Getting started&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;&quot;를 참고하였다.&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;1. G1 Heap Structure&lt;/span&gt;&lt;/p&gt;&lt;table class=&quot;txc-table&quot; width=&quot;829&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; style=&quot;border:none;border-collapse:collapse;;font-family:&quot; 맑은=&quot;&quot; 고딕&quot;,=&quot;&quot; sans-serif;font-size:19px&quot;=&quot;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;width:829;height:24;border-bottom:1px solid #ccc;border-right:1px solid #ccc;border-top:1px solid #ccc;border-left:1px solid #ccc;;&quot;&gt;&lt;figcaption style=&quot;&quot;&gt;&lt;p style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: 15px;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;The heap is one memory area split into many fixed sized regions.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: 15px;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;Region size is chosen by the JVM at startup. The JVM generally targets around 2000 regions varying in size from 1 to 32Mb.&lt;/span&gt;&lt;span style=&quot;font-weight: bold; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif; font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: 15px;&quot;&gt;&lt;span style=&quot;font-weight: bold; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif; font-size: 19px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;Heap을 여러개의 고정된 Region이라는 논리적 단위로 나누어 졌고,&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;JVM 시작시 Region 사이즈는 결정되고 일반적으로 1~32MB 사이즈에 약 2000개의 리즌으로 나눠진다.&lt;/span&gt;&lt;/p&gt;&lt;/figcaption&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 580px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/990BF8335FCC92381F&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F990BF8335FCC92381F&quot; width=&quot;580&quot; height=&quot;435&quot; filename=&quot;Slide1.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;2.&lt;/span&gt;&lt;b style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: 15px;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;G1 Heap Allocation&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;table class=&quot;txc-table&quot; width=&quot;829&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; style=&quot;border:none;border-collapse:collapse;;font-family:&quot; 맑은=&quot;&quot; 고딕&quot;,=&quot;&quot; sans-serif;font-size:19px&quot;=&quot;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;width:829;height:24;border-bottom:1px solid #ccc;border-right:1px solid #ccc;border-top:1px solid #ccc;border-left:1px solid #ccc;;&quot;&gt;&lt;figcaption style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: 15px;&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;In reality, these regions are mapped into logical representations of Eden, Survivor, and old generation spaces.&lt;/span&gt;&lt;/p&gt;&lt;/figcaption&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;아래 이미지에서 리전은 Eden, Survivor, Old 이 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: 15px;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;The colors in the picture shows which region is associated with which role. Live objects are evacuated (i.e., copied or moved) from one region to another. Regions are designed to be collected in parallel with or without stopping all other application threads.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: 15px;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;각 색의 리전들은 각각의 Role(Eden, Suvivor, Old)의 역할이 있다. 이 객체는 다른 리즌에서 또다른 리즌으로 옮겨지며, 어플리케이션 중지 없이 다른 리즌으로 모여지도록 설계되어 있다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: 15px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: 15px;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;As shown regions can be allocated into Eden, survivor, and old generation regions. In addition, there is a fourth type of object known as Humongous regions. These regions are designed to hold objects that are 50% the size of a standard region or larger. They are stored as a set of contiguous regions. Finally the last type of regions would be the unused areas of the heap.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: 15px;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;Eden, survivor, old Region으로 할당되고,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif; font-size: 14pt;&quot;&gt;Humongous regions이라는 것은 할당된 리즌사이즈보다 클 때 사용되는 4번째 region 타입입니다. 마지막영역 (회색)은 사용하지 않는 공간을 나타낸다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: 15px;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif; font-size: 14pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: 15px;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;Note:&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;&amp;nbsp;At the time of this writing, collecting humongous objects has not been optimized. Therefore, you should avoid creating objects of this size.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 580px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/990BF0335FCC92391F&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F990BF0335FCC92391F&quot; width=&quot;580&quot; height=&quot;434&quot; filename=&quot;Slide2.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;3.&lt;/span&gt;&lt;/p&gt;&lt;table class=&quot;txc-table&quot; width=&quot;829&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; style=&quot;border:none;border-collapse:collapse;;font-family:&quot; 맑은=&quot;&quot; 고딕&quot;,=&quot;&quot; sans-serif;font-size:19px&quot;=&quot;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;width:829;height:24;border-bottom:1px solid #ccc;border-right:1px solid #ccc;border-top:1px solid #ccc;border-left:1px solid #ccc;;&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;The heap is split into approximately 2000 regions. Minimum size is 1Mb and maximum size is 32Mb. Blue regions hold old generation objects and green regions hold young generation objects.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;대략 2000개의 리즌으로 나눠지고 1~32MB 크기로 사용된다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;Note that the regions are not required to be contiguous like the older garbage collectors.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;이전 GC처럼 리전은 인접 또는 연속적일 필요가 없다.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 580px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/990C50335FCC92391F&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F990C50335FCC92391F&quot; width=&quot;580&quot; height=&quot;434&quot; filename=&quot;Slide3.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;4.&lt;/span&gt;&lt;/p&gt;&lt;table class=&quot;txc-table&quot; width=&quot;829&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; style=&quot;border:none;border-collapse:collapse;;font-family:&quot; 맑은=&quot;&quot; 고딕&quot;,=&quot;&quot; sans-serif;font-size:19px&quot;=&quot;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;width:829;height:24;border-bottom:1px solid #ccc;border-right:1px solid #ccc;border-top:1px solid #ccc;border-left:1px solid #ccc;;&quot;&gt;&lt;figcaption style=&quot;&quot;&gt;&lt;p style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: 15px;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;Live objects are evacuated (i.e., copied or moved) to one or more survivor regions. If the aging threshold is met, some of the objects are promoted to old generation regions.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: 15px;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;처음 메모리에 올라간 객체들은 1개 이상의 survivor Regions로 복사 또는 옮겨지며 만약 age가 한계점에 도다랐으면 Old Generation Region으로 옮겨진다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: 15px;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: 15px;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;This is a stop the world (STW) pause. Eden size and survivor size is calculated for the next young GC. Accounting information is kept to help calculate the size. Things like the pause time goal are taken into consideration.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: 15px;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;이때 Stop-the-World가 발생한다. Eden 그리고 survivor의 크기는 다음 발생할 Young GC를 위해 계산되고, 계산된 정보는 Region Size계산을 위해 저장된다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: 15px;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;&quot;&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;This approach makes it very easy to resize regions, making them bigger or smaller as needed.&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;div style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: 15px;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;이런 접근 방식을 통해 리즌 사이즈를 더 크게, 또는 적게 요구에 따라 쉽게 재조정 할 수 있다.&lt;/span&gt;&lt;/div&gt;&lt;/figcaption&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 580px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/990225335FCC923920&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F990225335FCC923920&quot; width=&quot;580&quot; height=&quot;434&quot; filename=&quot;Slide4.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;5.&lt;/span&gt;&lt;/p&gt;&lt;table class=&quot;txc-table&quot; width=&quot;829&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; style=&quot;border:none;border-collapse:collapse;;font-family:&quot; 맑은=&quot;&quot; 고딕&quot;,=&quot;&quot; sans-serif;font-size:19px&quot;=&quot;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;width:829;height:24;border-bottom:1px solid #ccc;border-right:1px solid #ccc;border-top:1px solid #ccc;border-left:1px solid #ccc;;&quot;&gt;&lt;figcaption style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: 15px;&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;Live objects have been evacuated to survivor regions or to old generation regions.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif; font-size: 14pt;&quot;&gt;생성된 객체들은 survivor 영역 또는 Old generation 영역으로 옮겨진다.&lt;/span&gt;&lt;/p&gt;&lt;figcaption&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;Recently promoted objects are shown in dark blue. Survivor regions in green.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;최근 promotion(young -&amp;gt; old)된 객체들은 진한 파랑, 새로 young generation으로 옮겨진 객체는 초록 계열로 옮겨진다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;In summary, the following can be said about the young generation in G1:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;- The heap is a single memory space split into regions&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;- Young generation memory is composed of a set of non-contiguous regions. This makes it easy to resize when needed&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;- Young generation garbage collections, or young GCs, are stop the world events. All application threads are stopped for the operation.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;- The young GC is done in parallel using multiple threads.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;- Live objects are copied to new survivor or old generation regions.&lt;/span&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;Young Generation GC는&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;- Heap은 여러개의 리즌 공간으로 나눠진다.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;- young Generation은 연속적이지 않은&amp;nbsp; region으로 구성된다. 이것은 더 쉽게 사이즈 조정할 할 수 있게 한다.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;- Young GC시 Stop-the-world가 일어난다. 모든 어플리케이션 스레드는 종료된다.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;- Young GC가 멀티 스레드가 병렬로 실행 된다.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;- 살아있는 객체들은 survivor 또는 Old generation 리전으로 옮겨진다.&lt;/span&gt;&lt;/div&gt;&lt;/figcaption&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;/figcaption&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 580px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/990C54335FCC923A1F&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F990C54335FCC923A1F&quot; width=&quot;580&quot; height=&quot;434&quot; filename=&quot;Slide5.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;아래 표는 G1GC에서 Old Generation 단계에 대한 설명을 나타낸다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span style=&quot;font-size: 18.6667px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;clear: none; float: none;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;Old Generation Collection with G1&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;clear: none; float: none;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;CMS와 같이 G1은 Old Generation에서 중지시간을 단축시키기 위해 디자인 되었다.&amp;nbsp; 아래 테이블은 Old Generation에 대해서 G1 Collection의 동작 방법에 대해서 설명한다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;table class=&quot;txc-table&quot; width=&quot;829&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; 맑은=&quot;&quot; 고딕&quot;,=&quot;&quot; sans-serif;font-size:19px&quot;=&quot;&quot; style=&quot;border: none; border-collapse: collapse;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;width: 255px; height: 24px; border-width: 1px; border-style: solid; border-color: rgb(204, 204, 204);&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;&amp;nbsp;Phase(&lt;/span&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;단계)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;width: 573px; height: 24px; border-bottom: 1px solid rgb(204, 204, 204); border-right: 1px solid rgb(204, 204, 204); border-top: 1px solid rgb(204, 204, 204);&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;&amp;nbsp;Description&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;width: 255px; height: 24px; border-bottom: 1px solid rgb(204, 204, 204); border-right: 1px solid rgb(204, 204, 204); border-left: 1px solid rgb(204, 204, 204);&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;&amp;nbsp;1. Initial Mark&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;Stop the world가 발생한다.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;width: 573px; height: 24px; border-bottom: 1px solid rgb(204, 204, 204); border-right: 1px solid rgb(204, 204, 204);&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;table border=&quot;1px&quot; id=&quot;twoColThinTable&quot; style=&quot;width: 700px; border: 1px solid rgb(217, 213, 190); border-collapse: collapse; margin: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; font-size: 0.9em; color: rgb(0, 0, 0); font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;tbody&gt;&lt;tr class=&quot;row&quot; style=&quot;border-bottom: 1px solid rgb(217, 213, 190); background: rgb(237, 237, 237);&quot;&gt;&lt;td class=&quot;col2&quot; style=&quot;padding: 6px; width: 476px; vertical-align: top;&quot;&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;This is a stop the world event. With G1, it is piggybacked on a normal young GC. Mark survivor regions (root regions) which may have references to objects in old generation.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;row&quot; style=&quot;border-bottom: 1px solid rgb(217, 213, 190);&quot;&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;여기서 Stop the world 이벤트가 발생, Old Generation에 있는 객체를 참조하고&amp;nbsp;있는 Survivor Region을 마킹한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;width: 255px; height: 129px; border-bottom: 1px solid rgb(204, 204, 204); border-right: 1px solid rgb(204, 204, 204); border-left: 1px solid rgb(204, 204, 204);&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;&amp;nbsp;2. Root Region Scanning&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;width: 573px; height: 129px; border-bottom: 1px solid rgb(204, 204, 204); border-right: 1px solid rgb(204, 204, 204);&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;table border=&quot;1px&quot; id=&quot;twoColThinTable&quot; style=&quot;width: 700px; border: 1px solid rgb(217, 213, 190); border-collapse: collapse; margin: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; font-size: 0.9em; color: rgb(0, 0, 0); font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;tbody&gt;&lt;tr class=&quot;row&quot; style=&quot;border-bottom: 1px solid rgb(217, 213, 190);&quot;&gt;&lt;td class=&quot;col2&quot; style=&quot;padding: 6px; width: 476px; vertical-align: top;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;Scan survivor regions for references into the old generation. This happens while the application continues to run. The phase must be completed before a young GC can occur.&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;row&quot; style=&quot;border-bottom: 1px solid rgb(217, 213, 190); background: rgb(237, 237, 237);&quot;&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;Old Generation으로 참조하는 Survivor 리즌을 조회한다. 이때 어플리케이션은 실행되고 있고, 이 단계가 완료되야 Young GC가 수행될 수 있다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;width: 255px; height: 106px; border-bottom: 1px solid rgb(204, 204, 204); border-right: 1px solid rgb(204, 204, 204); border-left: 1px solid rgb(204, 204, 204);&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;3.&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;Concurrent Marking&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;width: 573px; height: 106px; border-bottom: 1px solid rgb(204, 204, 204); border-right: 1px solid rgb(204, 204, 204);&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;table border=&quot;1px&quot; id=&quot;twoColThinTable&quot; style=&quot;width: 700px; border: 1px solid rgb(217, 213, 190); border-collapse: collapse; margin: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; font-size: 0.9em; color: rgb(0, 0, 0); font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;tbody&gt;&lt;tr class=&quot;row&quot; style=&quot;border-bottom: 1px solid rgb(217, 213, 190);&quot;&gt;&lt;td class=&quot;col2&quot; style=&quot;padding: 6px; width: 476px; vertical-align: top;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;Find live objects over the entire heap. This happens while the application is running. This phase can be interrupted by young generation garbage collections.&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;row&quot; style=&quot;border-bottom: 1px solid rgb(217, 213, 190); background: rgb(237, 237, 237);&quot;&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;Heap 영역에 있는 모든 살아있는 객체를 조회한다. 어플리케이션이 실행되는 동안 실행되며, 이 단계에서Young GC에 의해 중단될 수 있다.&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;width: 255px; height: 129px; border-bottom: 1px solid rgb(204, 204, 204); border-right: 1px solid rgb(204, 204, 204); border-left: 1px solid rgb(204, 204, 204);&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;4. Remark&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;Stop the world가 발생한다&lt;/span&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;width: 573px; height: 129px; border-bottom: 1px solid rgb(204, 204, 204); border-right: 1px solid rgb(204, 204, 204);&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;table border=&quot;1px&quot; id=&quot;twoColThinTable&quot; style=&quot;width: 700px; border: 1px solid rgb(217, 213, 190); border-collapse: collapse; margin: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; font-size: 0.9em; color: rgb(0, 0, 0); font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;tbody&gt;&lt;tr class=&quot;row&quot; style=&quot;border-bottom: 1px solid rgb(217, 213, 190); background: rgb(237, 237, 237);&quot;&gt;&lt;td class=&quot;col2&quot; style=&quot;padding: 6px; width: 476px; vertical-align: top;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;Completes the marking of live object in the heap. Uses an algorithm called snapshot-at-the-beginning (SATB) which is much faster than what was used in the CMS collector.&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;row&quot; style=&quot;border-bottom: 1px solid rgb(217, 213, 190);&quot;&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;Heal 영역에 있는 살아있는 객체 마킹을 완료하고, SATP라는 알고리즘을 사용하여 CMS보다 더 빠르게 동작한다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;width: 255px; height: 24px; border-bottom: 1px solid rgb(204, 204, 204); border-right: 1px solid rgb(204, 204, 204); border-left: 1px solid rgb(204, 204, 204);&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;&amp;nbsp;5. Clean up&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;Stop the world Event and Concurrent&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;width: 573px; height: 24px; border-bottom: 1px solid rgb(204, 204, 204); border-right: 1px solid rgb(204, 204, 204);&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;ul style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: 13.5px; background-color: rgb(237, 237, 237);&quot;&gt;&lt;li&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;Performs accounting on live objects and completely free regions. (Stop the world)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;Scrubs the Remembered Sets. (Stop the world)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;Reset the empty regions and return them to the free list. (Concurrent)&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;살아있는 객체를 조회하고, 비어있는 Region을 계산합니다. (Stop the world) 발생&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;Remembered Set을 정리한다.&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;Reference를 가진 객체가 어떤 Region에 할당되어 있는지 알기 위한 자료구조&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;비어있는 Region을 정리하고 Free list에 추가한다. (동시에 실행 )&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;span style=&quot;font-size: 18.6667px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;width: 255px; height: 24px; border-bottom: 1px solid rgb(204, 204, 204); border-right: 1px solid rgb(204, 204, 204); border-left: 1px solid rgb(204, 204, 204);&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;&amp;nbsp;(*) Copying&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;Stop the world가 발생한다&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;width: 573px; height: 24px; border-bottom: 1px solid rgb(204, 204, 204); border-right: 1px solid rgb(204, 204, 204);&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;ol style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: 15px;&quot;&gt;&lt;div style=&quot;margin-left: -0.5em;&quot;&gt;&lt;table border=&quot;1px&quot; id=&quot;twoColThinTable&quot; style=&quot;width: 700px; border: 1px solid rgb(217, 213, 190); border-collapse: collapse; margin: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; font-size: 0.9em;&quot;&gt;&lt;tbody&gt;&lt;tr class=&quot;row&quot; style=&quot;border-bottom: 1px solid rgb(217, 213, 190); background: rgb(237, 237, 237);&quot;&gt;&lt;td class=&quot;col2&quot; style=&quot;padding: 6px; width: 476px; vertical-align: top;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;These are the stop the world pauses to evacuate or copy live objects to new unused regions.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;This can be done with young generation regions which are logged as&lt;/span&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;[GC pause (young)]&lt;/span&gt;&lt;/code&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;Or both young and old generation regions which are logged as&lt;/span&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;[GC Pause (mixed)]&lt;/span&gt;&lt;/code&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/ol&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;사용하지 않은 리즌으로 살아 있는 객체를 복사한다&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;Young Generation에서는 [GC pause (young) ] 구문으로 로깅된다.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p style=&quot;clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;clear: none; float: none;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;6. Initial Marking Phase&lt;/span&gt;&lt;/p&gt;&lt;table class=&quot;txc-table&quot; width=&quot;829&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; style=&quot;border:none;border-collapse:collapse;;font-family:&quot; 맑은=&quot;&quot; 고딕&quot;,=&quot;&quot; sans-serif;font-size:19px&quot;=&quot;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;width: 829px; height: 60px; border-width: 1px; border-style: solid; border-color: rgb(204, 204, 204);&quot;&gt;&lt;figcaption style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: 15px;&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;Initial marking of live object is piggybacked on a young generation garbage collection. In the logs this is noted as&amp;nbsp;&lt;/span&gt;&lt;code&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;GC pause (young)(inital-mark)&lt;/span&gt;&lt;/code&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;&lt;/figcaption&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;p style=&quot;clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 580px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/990C5A335FCC923A1F&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F990C5A335FCC923A1F&quot; width=&quot;580&quot; height=&quot;434&quot; filename=&quot;Slide6.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;7.&amp;nbsp;&lt;/span&gt;&lt;b style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: 15px;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;Concurrent Marking Phase&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;table class=&quot;txc-table&quot; width=&quot;829&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; style=&quot;border:none;border-collapse:collapse;;font-family:&quot; 맑은=&quot;&quot; 고딕&quot;,=&quot;&quot; sans-serif;font-size:19px&quot;=&quot;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;width:829;height:24;border-bottom:1px solid #ccc;border-right:1px solid #ccc;border-top:1px solid #ccc;border-left:1px solid #ccc;;&quot;&gt;&lt;figcaption style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: 15px;&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;If empty regions are found (as denoted by the &quot;X&quot;), they are removed immediately in the Remark phase. Also, &quot;accounting&quot; information that determines liveness is calculated.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;비어있는 Region이 발견되면, 그 리즌은 Remark 단계에서 삭제된다.&lt;/span&gt;&lt;/p&gt;&lt;/figcaption&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;b style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: 15px;&quot;&gt;&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 580px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/990D2F335FCC923A1F&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F990D2F335FCC923A1F&quot; width=&quot;580&quot; height=&quot;434&quot; filename=&quot;Slide7.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;8.&amp;nbsp;&lt;/span&gt;&lt;b style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: 15px;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;Remark Phase&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&lt;b style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: 15px;&quot;&gt;&lt;/b&gt;&lt;b style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: 15px;&quot;&gt;&lt;table class=&quot;txc-table&quot; width=&quot;829&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; style=&quot;border:none;border-collapse:collapse;;font-family:&quot; 맑은=&quot;&quot; 고딕&quot;,=&quot;&quot; sans-serif;font-size:19px&quot;=&quot;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;width:829;height:24;border-bottom:1px solid #ccc;border-right:1px solid #ccc;border-top:1px solid #ccc;border-left:1px solid #ccc;;&quot;&gt;&lt;figcaption style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: 15px;&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;Empty regions are removed and reclaimed. Region liveness is now calculated for all regions.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;비어 있는 리즌들은 제거되고 반환되며, 모든 Region에 대한 liveness가 계산된다.&lt;/span&gt;&lt;/p&gt;&lt;/figcaption&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 580px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/990CB1335FCC923A1F&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F990CB1335FCC923A1F&quot; width=&quot;580&quot; height=&quot;434&quot; filename=&quot;Slide8.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;9.&lt;/span&gt;&lt;b style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: 15px;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;Copying/Cleanup Phase&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;table class=&quot;txc-table&quot; width=&quot;829&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; style=&quot;border:none;border-collapse:collapse;;font-family:&quot; 맑은=&quot;&quot; 고딕&quot;,=&quot;&quot; sans-serif;font-size:19px&quot;=&quot;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;width:829;height:24;border-bottom:1px solid #ccc;border-right:1px solid #ccc;border-top:1px solid #ccc;border-left:1px solid #ccc;;&quot;&gt;&lt;figcaption style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;p style=&quot;font-size: 15px;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;G1 selects the regions with the lowest &quot;liveness&quot;, those regions which can be collected the fastest. Then those regions are collected at the same time as a young GC. This is denoted in the logs as&amp;nbsp;&lt;/span&gt;&lt;code&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;[GC pause (mixed)]&lt;/span&gt;&lt;/code&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;. So both young and old generations are collected at the same time.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;font-size: 15px;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;font-size: 15px;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;G1 &quot;liveness&quot;가 낮은 리전을 선택하고 모아서 young GC를 수행하고, 리전들을 모아서 수집합니다(compact)&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;이 부분은 Young, Old Generation이 동시해 수행됩니다.&lt;/span&gt;&lt;/p&gt;&lt;/figcaption&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;b style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: 15px;&quot;&gt;&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&lt;b style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: 15px;&quot;&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 580px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/990D23335FCC923B1F&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F990D23335FCC923B1F&quot; width=&quot;580&quot; height=&quot;434&quot; filename=&quot;Slide9.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;10.&amp;nbsp;&lt;/span&gt;&lt;b style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: 15px;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;After Copying/Cleanup Phase&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&lt;b style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: 15px;&quot;&gt;&lt;/b&gt;&lt;b style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: 15px;&quot;&gt;&lt;table class=&quot;txc-table&quot; width=&quot;829&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; style=&quot;border:none;border-collapse:collapse;;font-family:&quot; 맑은=&quot;&quot; 고딕&quot;,=&quot;&quot; sans-serif;font-size:19px&quot;=&quot;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;width:829;height:24;border-bottom:1px solid #ccc;border-right:1px solid #ccc;border-top:1px solid #ccc;border-left:1px solid #ccc;;&quot;&gt;&lt;figcaption style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: 15px;&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;The regions selected have been collected and compacted into the dark blue region and the dark green region shown in the diagram.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;/figcaption&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;GC가 일어난 이후에 진한 녹색(최근 Young generation으로 compact), 진한 파랑(최근 Old Generation) Region으로 이동하고 Compact&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 580px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/990A50415FCC923B1D&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F990A50415FCC923B1D&quot; width=&quot;580&quot; height=&quot;434&quot; filename=&quot;Slide10.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;ol style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: 15px;&quot;&gt;&lt;h4 style=&quot;font-size: 1.17em; color: rgb(102, 0, 102); cursor: pointer;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Summary of Old Generation GC&lt;/span&gt;&lt;/h4&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;In summary, there are a few key points we can make about the G1 garbage collection on the old generation.&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Concurrent Marking Phase&lt;/span&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Liveness information is calculated concurrently while the application is running.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;This liveness information identifies which regions will be best to reclaim during an evacuation pause.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;There is no sweeping phase like in CMS.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Remark Phase&lt;/span&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Uses the Snapshot-at-the-Beginning (SATB) algorithm which is much faster then what was used with CMS.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Completely empty regions are reclaimed.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Copying/Cleanup Phase&lt;/span&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Young generation and old generation are reclaimed at the same time.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Old generation regions are selected based on their liveness.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;/ol&gt;&lt;div&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Old Generation GC 요약&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: 15px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: 15px;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;- Concurrent Marking Phase&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt; font-family: Arial, Helvetica, sans-serif;&quot;&gt;Liveness(활성) 정보는 어플리케이션이 실행되는 동안 동시에 계산된다.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: 14pt; font-family: Arial, Helvetica, sans-serif;&quot;&gt;각 리전의 활성 정보가 evacuation pause(young gc) 진행되는 동안 최적화가 될 수 있도록 reclaim 한다.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;CMS와 같은 sweeping 단계가 존재하지 않는다.&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;- Remark Phase&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;CMS에서 사용하고 있는 알고리즘보다 더 빠른 SATP를 사용한다.&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;완벽하게 비어있는 리즌은 반환된다.&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;span style=&quot;font-size:14pt;&quot;&gt;-&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Copying/Cleanup Phase&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Old generation 리전은 활성(liveness) 상태에 따라서 지정된다.&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Young generation과 Old generation은 동시에 reclaim 된다.&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;div&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;table class=&quot;txc-table&quot; width=&quot;829&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; style=&quot;border:none;border-collapse:collapse;;font-family:&quot; 맑은=&quot;&quot; 고딕&quot;,=&quot;&quot; sans-serif;font-size:19px&quot;=&quot;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;width: 165px; height: 24px; border-width: 1px; border-style: solid; border-color: rgb(209, 223, 250); background-color: rgb(231, 239, 255); color: rgb(0, 0, 0);&quot;&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td style=&quot;width: 165px; height: 24px; border-bottom: 1px solid rgb(209, 223, 250); border-right: 1px solid rgb(209, 223, 250); border-top: 1px solid rgb(209, 223, 250); background-color: rgb(231, 239, 255); color: rgb(0, 0, 0);&quot;&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;&amp;nbsp;Serial&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td style=&quot;width: 165px; height: 24px; border-bottom: 1px solid rgb(209, 223, 250); border-right: 1px solid rgb(209, 223, 250); border-top: 1px solid rgb(209, 223, 250); background-color: rgb(231, 239, 255); color: rgb(0, 0, 0);&quot;&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;&amp;nbsp;Parallel&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td style=&quot;width: 165px; height: 24px; border-bottom: 1px solid rgb(209, 223, 250); border-right: 1px solid rgb(209, 223, 250); border-top: 1px solid rgb(209, 223, 250); background-color: rgb(231, 239, 255); color: rgb(0, 0, 0);&quot;&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;CMS&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td style=&quot;width: 165px; height: 24px; border-bottom: 1px solid rgb(209, 223, 250); border-right: 1px solid rgb(209, 223, 250); border-top: 1px solid rgb(209, 223, 250); background-color: rgb(231, 239, 255); color: rgb(0, 0, 0);&quot;&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;G1&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;width: 165px; height: 24px; border-bottom: 1px solid rgb(209, 223, 250); border-right: 1px solid rgb(209, 223, 250); border-left: 1px solid rgb(209, 223, 250); background-color: transparent; color: rgb(0, 0, 0);&quot;&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;병렬 수행&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;(Parallel)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td style=&quot;width: 165px; height: 24px; border-bottom: 1px solid rgb(209, 223, 250); border-right: 1px solid rgb(209, 223, 250); background-color: transparent; color: rgb(0, 0, 0);&quot;&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;X&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td style=&quot;width: 165px; height: 24px; border-bottom: 1px solid rgb(209, 223, 250); border-right: 1px solid rgb(209, 223, 250); background-color: transparent; color: rgb(0, 0, 0);&quot;&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;&amp;nbsp;O&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td style=&quot;width: 165px; height: 24px; border-bottom: 1px solid rgb(209, 223, 250); border-right: 1px solid rgb(209, 223, 250); background-color: transparent; color: rgb(0, 0, 0);&quot;&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;O&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td style=&quot;width: 165px; height: 24px; border-bottom: 1px solid rgb(209, 223, 250); border-right: 1px solid rgb(209, 223, 250); background-color: transparent; color: rgb(0, 0, 0);&quot;&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;O&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;width: 165px; height: 24px; border-bottom: 1px solid rgb(209, 223, 250); border-right: 1px solid rgb(209, 223, 250); border-left: 1px solid rgb(209, 223, 250); background-color: transparent; color: rgb(0, 0, 0);&quot;&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;동시 수행(&lt;/span&gt;&lt;span style=&quot;background-color: transparent; font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;Concurrency)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td style=&quot;width: 165px; height: 24px; border-bottom: 1px solid rgb(209, 223, 250); border-right: 1px solid rgb(209, 223, 250); background-color: transparent; color: rgb(0, 0, 0);&quot;&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;X&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td style=&quot;width: 165px; height: 24px; border-bottom: 1px solid rgb(209, 223, 250); border-right: 1px solid rgb(209, 223, 250); background-color: transparent; color: rgb(0, 0, 0);&quot;&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;&amp;nbsp;X&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td style=&quot;width: 165px; height: 24px; border-bottom: 1px solid rgb(209, 223, 250); border-right: 1px solid rgb(209, 223, 250); background-color: transparent; color: rgb(0, 0, 0);&quot;&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;O&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td style=&quot;width: 165px; height: 24px; border-bottom: 1px solid rgb(209, 223, 250); border-right: 1px solid rgb(209, 223, 250); background-color: transparent; color: rgb(0, 0, 0);&quot;&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;O&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;width: 165px; height: 24px; border-bottom: 1px solid rgb(209, 223, 250); border-right: 1px solid rgb(209, 223, 250); border-left: 1px solid rgb(209, 223, 250); background-color: transparent; color: rgb(0, 0, 0);&quot;&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;Young GC&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td style=&quot;width: 165px; height: 24px; border-bottom: 1px solid rgb(209, 223, 250); border-right: 1px solid rgb(209, 223, 250); background-color: transparent; color: rgb(0, 0, 0);&quot;&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;Serial&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td style=&quot;width: 165px; height: 24px; border-bottom: 1px solid rgb(209, 223, 250); border-right: 1px solid rgb(209, 223, 250); background-color: transparent; color: rgb(0, 0, 0);&quot;&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;background-color: transparent; font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;Parallel&lt;/span&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td style=&quot;width: 165px; height: 24px; border-bottom: 1px solid rgb(209, 223, 250); border-right: 1px solid rgb(209, 223, 250); background-color: transparent; color: rgb(0, 0, 0);&quot;&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;background-color: transparent; font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;Parallel&lt;/span&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td style=&quot;width: 165px; height: 24px; border-bottom: 1px solid rgb(209, 223, 250); border-right: 1px solid rgb(209, 223, 250); background-color: transparent; color: rgb(0, 0, 0);&quot;&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;Parallel&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;width: 165px; height: 24px; border-bottom: 1px solid rgb(209, 223, 250); border-right: 1px solid rgb(209, 223, 250); border-left: 1px solid rgb(209, 223, 250); background-color: transparent; color: rgb(0, 0, 0);&quot;&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;Old&amp;nbsp;Gc&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td style=&quot;width: 165px; height: 24px; border-bottom: 1px solid rgb(209, 223, 250); border-right: 1px solid rgb(209, 223, 250); background-color: transparent; color: rgb(0, 0, 0);&quot;&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;Serial&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td style=&quot;width: 165px; height: 24px; border-bottom: 1px solid rgb(209, 223, 250); border-right: 1px solid rgb(209, 223, 250); background-color: transparent; color: rgb(0, 0, 0);&quot;&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;background-color: transparent; font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;Parallel&lt;/span&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td style=&quot;width: 165px; height: 24px; border-bottom: 1px solid rgb(209, 223, 250); border-right: 1px solid rgb(209, 223, 250); background-color: transparent; color: rgb(0, 0, 0);&quot;&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;background-color: transparent; font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;Parallel &amp;amp; Conc&lt;/span&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td style=&quot;width: 165px; height: 24px; border-bottom: 1px solid rgb(209, 223, 250); border-right: 1px solid rgb(209, 223, 250); background-color: transparent; color: rgb(0, 0, 0);&quot;&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;background-color: transparent; font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;Parallel &amp;amp; Conc&lt;/span&gt;&lt;span style=&quot;background-color: transparent; font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;참조..&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;주요 정리 블로그&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;https://www.slipp.net/wiki/pages/viewpage.action?pageId=30770051&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;https://12bme.tistory.com/57&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;https://javabom.tistory.com/7?category=835783&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;https://johngrib.github.io/wiki/jvm-memory/&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;//g1gc 설명&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;https://imp51.tistory.com/entry/G1-GC-Garbage-First-Garbage-Collector-Tuning&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;//로그 분석 설명&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;https://b.luavis.kr/server/g1-gc&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;https://blog.naver.com/PostView.nhn?blogId=bumsukoh&amp;amp;logNo=110119881124&amp;amp;parentCategoryNo=&amp;amp;categoryNo=22&amp;amp;viewDate=&amp;amp;isShowPopularPosts=false&amp;amp;from=postView&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;// perm 과 메타스페이스 설명&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;https://mirinae312.github.io/develop/2018/06/04/jvm_memory.html&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;// java DNS TTL 관리&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;https://skysince.tistory.com/16&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;http://kwon37xi.egloos.com/4455415&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;// TLAB이란 무엇인가&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;https://m.blog.naver.com/PostView.nhn?blogId=kbh3983&amp;amp;logNo=220995694888&amp;amp;proxyReferer=https:%2F%2Fwww.google.com%2F&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Java 개발 이야기</category>
      <author>ktko</author>
      <guid isPermaLink="true">https://ktko.tistory.com/413</guid>
      <comments>https://ktko.tistory.com/entry/Garbage-Collection-Part2#entry413comment</comments>
      <pubDate>Sun, 6 Dec 2020 23:39:29 +0900</pubDate>
    </item>
    <item>
      <title>Garbage Collection Part1</title>
      <link>https://ktko.tistory.com/entry/GC-%EC%A2%85%EB%A5%98%EC%99%80-%EB%A1%9C%EA%B7%B8-%EB%B6%84%EC%84%9D-%EC%98%88%EC%A0%9C</link>
      <description>&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;최근 메모리 관련 문제라고 생각되는 이슈가 있어서, GC 로그를 보게 되었고, 로그 분석을 하다가 GC에 관해서 다시 공부하고 재정립하는 시간을 갖게 되었다. 이 내용을 공유하고자 오랫만에 블로그에 글을 올린다.\&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;GC종류에 대해서 설명하기 전에 알아야 할 개념 몇 가지가 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18.6667px;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;1. Stop-the-world&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;GC를 실행하기 위해 어플리케이션 실행을 멈춘다. 효율적인 GC 알고리즘을 작성하는 것은 Stop-the-world의 시간을 줄이는 것이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18.6667px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18.6667px;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;2. Reachable와 Unreachable&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;GC에 의해 사용하지 않는 객체는 삭제되는데, 어떤 방식으로 유효한건지 판별하는걸까 ?&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;아래에서 그림에서 GC Roots를 참조할 수 있는 모든 객체를 Reachable, GC Roots 참조할 수 없는 객체를 Unreachable이라고 한다. 참조 트리에서 유효한 객체인지 확인하기 위해서 항상 유효한 최초의 객체가 존재해야 하는데 이를 GC Root라고 한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18.6667px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 462px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/995AC8365FCC462E0E&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F995AC8365FCC462E0E&quot; width=&quot;462&quot; height=&quot;320&quot; filename=&quot;스크린샷 2020-12-06 오전 11.43.31.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18.6667px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;자세한 설명은 우하한 테크톡 &quot;&lt;/span&gt;&lt;a href=&quot;https://youtu.be/Fe3TVCEJhzo&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;엘리의 GC&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;&quot;편을 보면 좋을 것 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18.6667px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18.6667px;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;3. Mark, Sweap, Compact&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 419px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/991A1E425FCC49310E&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F991A1E425FCC49310E&quot; width=&quot;419&quot; height=&quot;384&quot; filename=&quot;스크린샷 2020-12-06 오전 11.58.59.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;http://www.cs.columbia.edu/~aho/cs6998/Lectures/14-10-27_Li_GarbageCollection.pdf&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: 18.6667px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-size: 18.6667px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;GC의 기본 프로세스는 &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;Mark and Sweap &lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;이라고 할 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18.6667px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;참조되지 않는 객체를 실벽하는 Mark, Marking된 객체를 삭제하는 Sweap, Sweap 후 발생한 메모리 단편화 문제를 해결하기 위한 Compact&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18.6667px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;4. JVM 메모리 구조에 대해&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;JVM 메모리 구조에 대해서는 &quot;&lt;/span&gt;&lt;a href=&quot;https://ktko.tistory.com/entry/JVM-%EB%A9%94%EB%AA%A8%EB%A6%AC-%EA%B5%AC%EC%A1%B0-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;JVM 메모리 구조 이해하기&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;&quot; 편에 정리를 해 놓았다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18.6667px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;여기 까지 내가 아는 기본적인 용어와 배경 지식에 대해서 정리를 해놓았다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;이제 GC종류에 대해서 알아보자.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18.6667px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size:14pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif; font-size: 14pt;&quot;&gt;5&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif; font-size: 14pt;&quot;&gt;. &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;왜 Young Generation, Old Generation, Minor GC, Major GC가 나왔을까, 그냥 한번에 모든 메모리를 통합하는 GC를 사용하는게 좋지 않을까 ?&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18.6667px;&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 600px; width: 600px; height: 415px;; height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99F8B83B5FCC4E8111&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99F8B83B5FCC4E8111&quot; width=&quot;600&quot; height=&quot;415&quot; filename=&quot;ObjectLifetime.gif&quot; filemime=&quot;image/gif&quot; style=&quot;width: 600px; height: 415px;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: 18.6667px;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;https://www.oracle.com/webfolder/technetwork/tutorials/obe/java/gc01/index.html&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18.6667px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;위의 질문은 누구나 생각하고 의문을 표할 수 있다고 생각되고, 왜 이렇게 나눠놨는지 오라클 GC 튜토리얼에 씌여있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18.6667px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;table class=&quot;txc-table&quot; width=&quot;829&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; style=&quot;border:none;border-collapse:collapse;;font-family:&quot; 맑은=&quot;&quot; 고딕&quot;,=&quot;&quot; sans-serif;font-size:19px&quot;=&quot;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;width: 829px; height: 150px; border-width: 1px; border-style: solid; border-color: rgb(204, 204, 204);&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif; font-size: 14pt;&quot;&gt;As stated earlier, having to mark and compact all the objects in a JVM is inefficient. As more and more objects are allocated, the list of objects grows and grows leading to longer and longer garbage collection time. However, empirical analysis of applications has shown that most objects are short lived.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;JVM에 있는 모든 Object를 GC하는 것은 비효율 적이다, 더 많은 객체들이 메모리에 할당 됨으로써 GC의 시간이 길어지게 될 뿐이다. Application의 분석에 따르면 대부분의 객체의 생명주기는 매우 짧다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif; font-size: 14pt;&quot;&gt;As you can see, fewer and fewer objects remain allocated over time. In fact most objects have a very short life as shown by the higher values on the left side of the graph.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif; font-size: 14pt;&quot;&gt;위의 표를 보면 알 수 있다. 시간이 지날 수록 객체들은 할당되고, 실질적으로, 대부분의 객체는 매우 짧은 수명을 갖고 있고 그래프의 왼쪽 부분을 보면 알 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size:14pt;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;weak generational hypothesis&quot;라는 가설이 있&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18.6667px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1. 대부분의 객체는 금방 접근 불가능한 상태가 된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;대부분의 객체는 중괄호 안에서 생성된다. 이 객체들은 괄호가 끝나면 사용되지 않습니다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18.6667px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2. 오래된 객체에서 젊은 객체로의 참조는 적다&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;일반적으로 대부분의 비지니스 로직은 순차적으로 객체가 생성되고 사용됩니다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;앞에서 생성된 객체는 다음 로직에서 사용된 이후 대부분 사용되지 않습니다.&lt;/span&gt;&lt;/p&gt;&lt;hr&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18.6667px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;GC Process&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18.6667px;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif; font-size: 14pt;&quot;&gt;GC가 일어나는 과정에 대해서 살펴본다. 모든 이미지와 설명은 &lt;/span&gt;&lt;a href=&quot;https://www.oracle.com/webfolder/technetwork/tutorials/obe/java/gc01/index.html&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif; font-size: 14pt;&quot;&gt;Oracle 사이트&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif; font-size: 14pt;&quot;&gt;를 참조하였다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18.6667px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;1.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;table class=&quot;txc-table&quot; width=&quot;829&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; style=&quot;border:none;border-collapse:collapse;;font-family:&quot; 맑은=&quot;&quot; 고딕&quot;,=&quot;&quot; sans-serif;font-size:19px&quot;=&quot;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;width:829;height:24;border-bottom:1px solid #ccc;border-right:1px solid #ccc;border-top:1px solid #ccc;border-left:1px solid #ccc;;&quot;&gt;&lt;figcaption style=&quot;&quot;&gt;&lt;p style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: 15px;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif; font-size: 14pt;&quot;&gt;First, any new objects are allocated to the eden space. Both survivor spaces start out empty.&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif; font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif; font-size: 14pt;&quot;&gt;새로 생긴 객체는 eden 영역에 생성되고, 두개의 survior space는 비어있는 상태로 시작된다.&lt;/span&gt;&lt;/p&gt;&lt;/figcaption&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif; font-size: 14pt;&quot;&gt;s0에 있는 3,1은 s0에서 s1로 옮겨진다라는 걸 보여주기 위해 표현된 것 같다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 400px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99F36F3A5FCC5FB812&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99F36F3A5FCC5FB812&quot; width=&quot;400&quot; height=&quot;300&quot; filename=&quot;Slide1.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif; font-size: 14pt;&quot;&gt;2. &lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;table class=&quot;txc-table&quot; width=&quot;829&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; style=&quot;border:none;border-collapse:collapse;;font-family:&quot; 맑은=&quot;&quot; 고딕&quot;,=&quot;&quot; sans-serif;font-size:19px&quot;=&quot;&quot;&gt;&lt;/table&gt;&lt;table class=&quot;txc-table&quot; width=&quot;829&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; style=&quot;border:none;border-collapse:collapse;;font-family:&quot; 맑은=&quot;&quot; 고딕&quot;,=&quot;&quot; sans-serif;font-size:19px&quot;=&quot;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;width:829;height:24;border-bottom:1px solid #ccc;border-right:1px solid #ccc;border-top:1px solid #ccc;border-left:1px solid #ccc;;&quot;&gt;&lt;figcaption style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: 15px;&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif; font-size: 14pt;&quot;&gt;When the eden space fills up, a minor garbage collection is triggered.&lt;/span&gt;&lt;/p&gt;&lt;/figcaption&gt;&lt;p&gt;&lt;span style=&quot;font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif; font-size: 14pt;&quot;&gt;Eden 영역이 꽉 찼을 때 minow GC가 시작된다.&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif; font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 400px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99F31B3A5FCC5FB912&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99F31B3A5FCC5FB912&quot; width=&quot;400&quot; height=&quot;298&quot; filename=&quot;Slide2.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif; font-size: 14pt;&quot;&gt;3.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;table class=&quot;txc-table&quot; width=&quot;829&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; style=&quot;border:none;border-collapse:collapse;;font-family:&quot; 맑은=&quot;&quot; 고딕&quot;,=&quot;&quot; sans-serif;font-size:19px&quot;=&quot;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;width:829;height:24;border-bottom:1px solid #ccc;border-right:1px solid #ccc;border-top:1px solid #ccc;border-left:1px solid #ccc;;&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif; font-size: 14pt;&quot;&gt;Referenced objects are moved to the first survivor space. Unreferenced objects are deleted when the eden space is cleared.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif; font-size: 14pt;&quot;&gt;참조된 객체 (여기서는 Reachable 가능한 객체를 의미하는 것 같다.) 는 survivor space &lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif; font-size: 14pt;&quot;&gt;영역으로 옮겨지고 참조&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif; font-size: 14pt;&quot;&gt;불가능한 객체들은 eden&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif; font-size: 14pt;&quot;&gt;&amp;nbsp;영역에서 삭제된다&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;div&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: 15px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 400px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99F37A3A5FCC5FB912&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99F37A3A5FCC5FB912&quot; width=&quot;400&quot; height=&quot;298&quot; filename=&quot;Slide3.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18.6667px;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif; font-size: 14pt;&quot;&gt;4.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;table class=&quot;txc-table&quot; width=&quot;829&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; style=&quot;border:none;border-collapse:collapse;;font-family:&quot; 맑은=&quot;&quot; 고딕&quot;,=&quot;&quot; sans-serif;font-size:19px&quot;=&quot;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;width:829;height:24;border-bottom:1px solid #ccc;border-right:1px solid #ccc;border-top:1px solid #ccc;border-left:1px solid #ccc;;&quot;&gt;&lt;figcaption style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: 15px;&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif; font-size: 14pt;&quot;&gt;At the next minor GC, the same thing happens for the eden space. Unreferenced objects are deleted and referenced objects are moved to a survivor space. However, in this case, they are moved to the second survivor space (S1). In addition, objects from the last minor GC on the first survivor space (S0) have their age incremented and get moved to S1. Once all surviving objects have been moved to S1, both S0 and eden are cleared. Notice we now have differently aged object in the survivor space.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif; font-size: 14pt;&quot;&gt;첫 번째 GC가 일어난 다음에 Eden영역에 객체가 생성되고 꽉차게 되면 minor GC가 일어난다. 똑같이 참조불가능한 객체는 삭제되고, 참조가능한 객체는 survivor영역으로 옮겨지는데 s0이 아닌 s1영역으로 옮겨진다. 그리고 s0에서 s1로 옮겨진 객체들의 age는 1씩증가된다.&lt;/span&gt;&lt;/p&gt;&lt;/figcaption&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18.6667px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;여기서 주의할 점은 s0 그리고 s1 둘중에 하나는 무조건 비어져 있어야 한다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 400px; text-align: center;; height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99F3733A5FCC5FB912&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99F3733A5FCC5FB912&quot; width=&quot;400&quot; height=&quot;298&quot; filename=&quot;Slide4.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;text-align: center;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5. &lt;/span&gt;&lt;/p&gt;&lt;table class=&quot;txc-table&quot; width=&quot;829&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; style=&quot;border:none;border-collapse:collapse;;font-family:&quot; 맑은=&quot;&quot; 고딕&quot;,=&quot;&quot; sans-serif;font-size:19px&quot;=&quot;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;width:829;height:24;border-bottom:1px solid #ccc;border-right:1px solid #ccc;border-top:1px solid #ccc;border-left:1px solid #ccc;;&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;At the next minor GC, the same process repeats. However this time the survivor spaces switch. Referenced objects are moved to S0. Surviving objects are aged. Eden and S1 are cleared.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;다시 Minor GC가 발생했을 때 똑같이 반복한다. 아래 사진을 보면 s1-&amp;gt; s0영역으로 다시 옮겨지고 age가 1씩증가하며 Eden과 S1영역이 비어진다.&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 400px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9929FD4E5FCC638812&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9929FD4E5FCC638812&quot; width=&quot;400&quot; height=&quot;300&quot; filename=&quot;Slide5.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;6.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;table class=&quot;txc-table&quot; width=&quot;829&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; style=&quot;border:none;border-collapse:collapse;;font-family:&quot; 맑은=&quot;&quot; 고딕&quot;,=&quot;&quot; sans-serif;font-size:19px&quot;=&quot;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;width:829;height:24;border-bottom:1px solid #ccc;border-right:1px solid #ccc;border-top:1px solid #ccc;border-left:1px solid #ccc;;&quot;&gt;&lt;figcaption style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: 15px;&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;This slide demonstrates promotion. After a minor GC, when aged objects reach a certain age threshold (8 in this example) they are promoted from young generation to old generation.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;위의 과정을 끊임없이 반복하면서 특정 객체의 age는 한계점에 도달한다 (아래 이미지에서는 한계점이 8로 설정) age가 8이 넘어가면 Old Generation으로 옮겨진다. Young Generation -&amp;gt; Old Generation으로 넘어가는 넘어가는 것을 Promotion이라 한다.&lt;/span&gt;&lt;/p&gt;&lt;/figcaption&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 400px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/992A5A4E5FCC638812&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F992A5A4E5FCC638812&quot; width=&quot;400&quot; height=&quot;298&quot; filename=&quot;Slide6.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;7.&lt;/span&gt;&lt;/p&gt;&lt;table class=&quot;txc-table&quot; width=&quot;829&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; style=&quot;border:none;border-collapse:collapse;;font-family:&quot; 맑은=&quot;&quot; 고딕&quot;,=&quot;&quot; sans-serif;font-size:19px&quot;=&quot;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;width:829;height:24;border-bottom:1px solid #ccc;border-right:1px solid #ccc;border-top:1px solid #ccc;border-left:1px solid #ccc;;&quot;&gt;&lt;figcaption style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: 15px;&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;As minor GCs continue to occure objects will continue to be promoted to the old generation space.&lt;/span&gt;&lt;/p&gt;&lt;/figcaption&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Minor GC가 계속해서 발생함으로써, Old Generation 으로 계속해서 promoted 하게 된다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;위에서 설명한 promotion이 계속해서 발생한다는 뜻이다.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 400px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/992A544E5FCC638812&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F992A544E5FCC638812&quot; width=&quot;400&quot; height=&quot;298&quot; filename=&quot;Slide7.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18.6667px;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;8.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;table class=&quot;txc-table&quot; width=&quot;829&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; style=&quot;border:none;border-collapse:collapse;;font-family:&quot; 맑은=&quot;&quot; 고딕&quot;,=&quot;&quot; sans-serif;font-size:19px&quot;=&quot;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;width:829;height:24;border-bottom:1px solid #ccc;border-right:1px solid #ccc;border-top:1px solid #ccc;border-left:1px solid #ccc;;&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;So that pretty much covers the entire process with the young generation. Eventually, a major GC will be performed on the old generation which cleans up and compacts that space.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Young Generation에 대한 전반적인 프로세스 절차에 대해서 다루었다. &lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt; 마지막으로 Major GC는 Old Beneration영역에서 수행되고 사용하지 않은 객체는 사라지고 Compacts 과정이 일어난다.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18.6667px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18.6667px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;전반적인 GC 절차에 대해서 살펴보았다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;다음편에는 GC종류 그리고 Java 8로 인해 바뀐 JVM 구조에 대해서 설명한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18.6667px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;</description>
      <category>Java 개발 이야기</category>
      <author>ktko</author>
      <guid isPermaLink="true">https://ktko.tistory.com/412</guid>
      <comments>https://ktko.tistory.com/entry/GC-%EC%A2%85%EB%A5%98%EC%99%80-%EB%A1%9C%EA%B7%B8-%EB%B6%84%EC%84%9D-%EC%98%88%EC%A0%9C#entry412comment</comments>
      <pubDate>Sun, 6 Dec 2020 23:39:08 +0900</pubDate>
    </item>
    <item>
      <title>자바 콜백 패턴 구현해보기</title>
      <link>https://ktko.tistory.com/entry/%EC%9E%90%EB%B0%94-%EC%BD%9C%EB%B0%B1-%ED%8C%A8%ED%84%B4%EC%97%90-%EB%8C%80%ED%95%B4%EC%84%9C</link>
      <description>&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;잠깐 reactive document를 보다가 콜백, 비동기 등등 얘기가 나와서 자바에서는 콜백을 어떻게 구현하는지 한번 정리해보고자 글을 써본다.(reactive document는 내가 영어가 딸려서 번역이 안된다.... 때려침...)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;일반적으로 함수 호출을 할 때에는 함수를 호출하는 함수(Caller)와&amp;nbsp;호출당하는 함수(Callee)가&amp;nbsp;있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;쉽게 말해서 A클래스와 B클래스가 존재하고, A클래스에는 a함수가, B클래스에는 b함수가 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; color: rgb(255, 0, 0);&quot;&gt;A클래스의 a함수가 B클래스의 b함수를 호출한다면 a함수는 Caller이 되고, b함수는 Callee가 된다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;콜백(Callback)은 일반적인 함수 호출의 흐름과 다르게 동작을 한다. 호출을 당한 함수(Callee)에서 호출을 한 함수(Caller)을 호출할 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 668px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/990E1F3C5DFE26A10E&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F990E1F3C5DFE26A10E&quot; width=&quot;668&quot; height=&quot;179&quot; filename=&quot;noname.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;1. 먼저 콜백 interface를 정의하였다.&lt;/p&gt;&lt;p&gt;인터페이스에는 숫자를 더하는 addCount, 숫자를 빼는 subtractCount메서드가 있고, 이게 0보다 작은지 확인하는 isLessZero 메서드가 있다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0;font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important;overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin: 0px; padding: 0px; border: none; background-color: rgb(39, 39, 39); border-radius: 4px; width: 1180px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; width=&quot;1180&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px;border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0;padding:0;word-break:normal;text-align:right;color:#aaa;font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important;line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding: 6px 0px;&quot;&gt;&lt;div style=&quot;margin:0;padding:0;color:#f0f0f0;font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important;line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;interface&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;callback&amp;nbsp;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;void&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;addCount();&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;void&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;subtractCount();&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;boolean&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;isLessZero();&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align: bottom; padding: 0px 2px 4px 0px; width: 833px;&quot;&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0;font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important;overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin: 0px; padding: 0px; border: none; background-color: rgb(39, 39, 39); border-radius: 4px; width: 1172px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; width=&quot;1172&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px;border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0;padding:0;word-break:normal;text-align:right;color:#aaa;font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important;line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;6&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;7&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;8&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;9&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;10&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;11&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;12&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;13&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;14&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;15&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;16&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;17&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;18&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;19&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;20&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;21&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;22&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;23&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;24&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;25&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;26&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;27&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;28&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;29&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;30&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;31&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;32&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;33&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;34&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;35&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;36&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;37&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;38&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;39&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding: 6px 0px;&quot;&gt;&lt;div style=&quot;margin:0;padding:0;color:#f0f0f0;font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important;line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;Callee&amp;nbsp;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;private&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;count;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;private&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;callback&amp;nbsp;callBack;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;Callee()&amp;nbsp;{&amp;nbsp;count&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;void&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;setCallBack(callback&amp;nbsp;callBack)&amp;nbsp;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;.callBack&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;callBack;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;getCount()&amp;nbsp;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;count;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;void&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;addCount()&amp;nbsp;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;.count&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;void&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;subtractCount()&amp;nbsp;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;.count&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;boolean&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;execute()&amp;nbsp;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;Scanner&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;scanner&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;Scanner&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;System&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;System&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;out&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;println&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;Input&amp;nbsp;Data&amp;nbsp;:&amp;nbsp;&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;condition&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;scanner.nextInt();&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;switch&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;(condition)&amp;nbsp;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;case&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;.callBack.addCount();&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;break&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;case&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;.callBack.subtractCount();&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;break&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;callBack.isLessZero();&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right;margin-top:-13px;margin-right:5px;font-size:9px;font-style:italic&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align: bottom; padding: 0px 2px 4px 0px; width: 562px;&quot;&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0;font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important;overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin: 0px; padding: 0px; border: none; background-color: rgb(39, 39, 39); border-radius: 4px; width: 1009px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; width=&quot;1009&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px;border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0;padding:0;word-break:normal;text-align:right;color:#aaa;font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important;line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;6&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;7&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;8&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;9&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;10&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;11&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;12&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;13&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;14&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;15&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;16&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;17&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;18&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;19&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;20&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;21&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;22&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;23&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;24&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;25&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;26&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;27&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;28&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;29&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding: 6px 0px;&quot;&gt;&lt;div style=&quot;margin:0;padding:0;color:#f0f0f0;font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important;line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;Caller&amp;nbsp;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;static&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;void&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;main(&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;String&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;[]&amp;nbsp;args)&amp;nbsp;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Callee&amp;nbsp;callee&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;Callee();&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;callee.setCallBack(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;callback()&amp;nbsp;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Override&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;void&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;addCount()&amp;nbsp;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;callee.addCount();&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;System&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;out&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;println&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(callee.getCount());&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Override&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;void&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;subtractCount()&amp;nbsp;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;callee.subtractCount();&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;System&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;out&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;println&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(callee.getCount());&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Override&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;boolean&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;isLessZero()&amp;nbsp;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;(callee.getCount()&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;});&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;while&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&amp;nbsp;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;(callee.execute())&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;break&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right;margin-top:-13px;margin-right:5px;font-size:9px;font-style:italic&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align: bottom; padding: 0px 2px 4px 0px; width: 330px;&quot;&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Java 개발 이야기</category>
      <category>자바</category>
      <category>자바 콜백</category>
      <category>콜백 패턴</category>
      <author>ktko</author>
      <guid isPermaLink="true">https://ktko.tistory.com/385</guid>
      <comments>https://ktko.tistory.com/entry/%EC%9E%90%EB%B0%94-%EC%BD%9C%EB%B0%B1-%ED%8C%A8%ED%84%B4%EC%97%90-%EB%8C%80%ED%95%B4%EC%84%9C#entry385comment</comments>
      <pubDate>Tue, 21 Apr 2020 15:48:38 +0900</pubDate>
    </item>
    <item>
      <title>Spring Boot에 WireMock 적용해보자</title>
      <link>https://ktko.tistory.com/entry/Spring-Boot-Test-%EB%B0%A9%EB%B2%95</link>
      <description>&lt;p&gt;&lt;font color=&quot;#172b4d&quot; face=&quot;-apple-system, system-ui, Segoe UI, Roboto, Noto Sans, Ubuntu, Droid Sans, Helvetica Neue, sans-serif&quot;&gt;&lt;span style=&quot;font-size: 18.6667px; letter-spacing: -0.08px; white-space: pre-wrap;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 192px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99CC5B4B5E5BDE1B13&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99CC5B4B5E5BDE1B13&quot; width=&quot;192&quot; height=&quot;192&quot; filename=&quot;large.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;아래 내용 보다는 코드를 보고 테스트를 실행하는 게 더 좋다.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/ko-theo/Spring-WireMock&quot;&gt;https://github.com/ko-theo/Spring-WireMock&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;font color=&quot;#172b4d&quot; face=&quot;-apple-system, system-ui, Segoe UI, Roboto, Noto Sans, Ubuntu, Droid Sans, Helvetica Neue, sans-serif&quot;&gt;&lt;span style=&quot;font-size: 18.6667px; letter-spacing: -0.08px; white-space: pre-wrap;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color=&quot;#172b4d&quot; face=&quot;-apple-system, system-ui, Segoe UI, Roboto, Noto Sans, Ubuntu, Droid Sans, Helvetica Neue, sans-serif&quot;&gt;&lt;span style=&quot;font-size: 18.6667px; letter-spacing: -0.08px; white-space: pre-wrap;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;개발 환경&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/font&gt;&lt;br style=&quot;color: rgb(23, 43, 77); font-family: -apple-system, system-ui, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Noto Sans&amp;quot;, Ubuntu, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, sans-serif; font-size: 16px; letter-spacing: -0.08px; white-space: pre-wrap;&quot;&gt;&lt;span data-mark-type=&quot;annotation&quot; data-mark-annotation-type=&quot;inlineComment&quot; data-id=&quot;94f7918b-837c-4415-acad-77028f50be10&quot; class=&quot;valid&quot; style=&quot;background-color: rgba(246, 195, 66, 0.3); color: rgb(23, 43, 77); font-family: -apple-system, system-ui, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Noto Sans&amp;quot;, Ubuntu, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, sans-serif; font-size: 14pt; letter-spacing: -0.08px; white-space: pre-wrap;&quot;&gt;Spring Boot(v2.2.4),&lt;/span&gt;&lt;span style=&quot;color: rgb(23, 43, 77); font-family: -apple-system, system-ui, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Noto Sans&amp;quot;, Ubuntu, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, sans-serif; font-size: 14pt; letter-spacing: -0.08px; white-space: pre-wrap;&quot;&gt; Junit5, Gradle, Java 11, Kotlin,&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size:14pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size:14pt;&quot;&gt;대부분의 사이트 및 블로그는 Junit4 기준으로 설명이 되어있지만(&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;WireMock&amp;nbsp;Document에서도 Junit4를 기준으로 설명하고 있다.)&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;현재 사내에서 Junit5를 사용하고 있고, 실제로도 Junit5를 많이 사용하고 있기에 Junit5를 기준으로 설명을 작성하였다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://wiremock.org/&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Wiremock&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt; 은&amp;nbsp;다양한 기능(Proxy, Record and Playback.. 등등) 을 제공하고 있으며, 더 자세한 내용은 사이트 방문을 통하여 보는 것을 추천한다. 작성된 내용은 기본적인 내용 그리고 간단하게 작성된 코드에 Wiremock이 적용된 샘플 예제를 첨부하였다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;hr&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;WireMock&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size:14pt;&quot;&gt;WireMock은 테스트 목적으로 사용할 수 있는&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;웹 서버이다. WireMock을 사용하면서 특정 포트로 지정한 규칙과 매칭된 HTTP 요청이 들어오면 지정한 응답을 전송한다. 따라서, 실제 웹 서버가 존재하지 않더라도 HTTP 클라이언트를 테스트할 수가 있&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;장점&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Avoid rate limits and server cost&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;실제 서버 테스트를 진행할 경우 발생할 수 있는 서버 비용 및 제한된 조건을 피할 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Cover edge cases and error scenarios&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;다양한 테스트 케이스 및 Error 발생시 시나리오를 테스트 해볼 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Speed&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;컴퓨터 내부에 서버를 사용함으로써 테스트에 사용되는 네트워크 속도가 빠르다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;WireMock&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;을 사용하기 앞서, Mock과 Stub 용어와 의미를 아는 것이 좋을 것 같아 간단하게 정리하였다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;테스트 더블이란 테스트를 진행할 때 실제 객체를 대신해서 사용되는 모든 방법들을 호칭하는 것으로 Stub, Mock 또한 테스트 더블에 속한다고 할 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Dummy, Spy, Mock, Fake, Stub과 같은 용어들 또한 테스트 더블에 속한다고 할 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size:14pt;&quot;&gt;자세한 내용은&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://brunch.co.kr/@tilltue/55&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;요기 블로그&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-size:14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;에 잘 정리되어 있으니 꼭 보는 것을 추천한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;stub : 테스트에서 호출된 요청에 대한 결과를 미리 준비하여 제공을 한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;mock : 호출에 대한 기대를 명세하고, 해당 내용에 따라 동작하도록 코드로 작성된 프로그래밍 된 객체(MockMvc)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;hr&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Stand Alone 적용 방법&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;WireMock 라이브러리 .jar파일만 가지고 있어도 &lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;별도의 MockServer을 만들 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://wiremock.org/docs/download-and-installation/&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;http://wiremock.org/docs/download-and-installation/&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;링크에서 jar파일을 다운로드 한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0;font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important;overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin: 0px; padding: 0px; border: none; background-color: rgb(39, 39, 39); border-radius: 4px; width: 2283px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; width=&quot;2283&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px;border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0;padding:0;word-break:normal;text-align:right;color:#aaa;font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important;line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding: 6px 0px; width: 566px;&quot;&gt;&lt;div style=&quot;margin:0;padding:0;color:#f0f0f0;font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important;line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;java&amp;nbsp;-jar&amp;nbsp;wiremock-standalone-2.26.0.jar&amp;nbsp;--verbose&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align: bottom; padding: 0px 2px 4px 0px; width: 1675px;&quot;&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 580px; text-align: center;; height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/990B56425E579A7229&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F990B56425E579A7229&quot; width=&quot;580&quot; height=&quot;338&quot; filename=&quot;스크린샷 2020-02-27 오후 7.28.25.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;text-align: center;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;위의 명령어를 실행하면, 해당 jar파일 경로에 __files와 mappings 디렉토리가 생성되며 로컬호스트:8080으로 접속하면 서버가 실행되었음을 알 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 580px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/991F58425E579AB929&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F991F58425E579AB929&quot; width=&quot;580&quot; height=&quot;198&quot; filename=&quot;스크린샷 2020-02-27 오후 7.30.16.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;stub 설정을 진행한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0;font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important;overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0;padding:0;border:none;background-color:#272727;border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px;border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0;padding:0;word-break:normal;text-align:right;color:#aaa;font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important;line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;6&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;7&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;8&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;9&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;10&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;11&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;12&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;13&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding: 6px 0px;&quot;&gt;&lt;div style=&quot;margin:0;padding:0;color:#f0f0f0;font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important;line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;request&quot;:{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;urlPattern&quot;:&quot;/product/p0001&quot;,&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;method&quot;:&quot;GET&quot;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;},&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;response&quot;:{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;status&quot;:200,&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;headers&quot;:{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;Content-Type&quot;:&quot;application/json&quot;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;},&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;body&quot;:&quot;{&amp;nbsp;\&quot;_id\&quot;&amp;nbsp;:&amp;nbsp;\&quot;p0001\&quot;,&amp;nbsp;\&quot;product_display_name\&quot;&amp;nbsp;:&amp;nbsp;\&quot;Brother&amp;nbsp;-&amp;nbsp;MFC-J4320DW&amp;nbsp;Wireless&amp;nbsp;All-In-One&amp;nbsp;Printer&amp;nbsp;-&amp;nbsp;Black/Gray\&quot;,&amp;nbsp;\&quot;category_ids\&quot;&amp;nbsp;:&amp;nbsp;[&amp;nbsp;\&quot;pcmcat247400050001\&quot;&amp;nbsp;],&amp;nbsp;\&quot;is_active\&quot;&amp;nbsp;:&amp;nbsp;true,&amp;nbsp;\&quot;on_sale\&quot;&amp;nbsp;:&amp;nbsp;true,&amp;nbsp;\&quot;price\&quot;&amp;nbsp;:&amp;nbsp;{&amp;nbsp;\&quot;list_price\&quot;&amp;nbsp;:&amp;nbsp;149.99,&amp;nbsp;\&quot;sale_price\&quot;&amp;nbsp;:&amp;nbsp;123.99&amp;nbsp;},&amp;nbsp;\&quot;upc\&quot;&amp;nbsp;:&amp;nbsp;\&quot;012502637677\&quot;,&amp;nbsp;\&quot;mpn\&quot;&amp;nbsp;:&amp;nbsp;\&quot;MFC-J4320DW\&quot;,&amp;nbsp;\&quot;manufacturer\&quot;&amp;nbsp;:&amp;nbsp;\&quot;Brother\&quot;,&amp;nbsp;\&quot;product_short_description\&quot;&amp;nbsp;:&amp;nbsp;\&quot;4-in-1&amp;nbsp;functionalityBuilt-in&amp;nbsp;wireless&amp;nbsp;LAN&amp;nbsp;(802.11b/g/n)Prints&amp;nbsp;up&amp;nbsp;to&amp;nbsp;20&amp;nbsp;ISO&amp;nbsp;ppm&amp;nbsp;in&amp;nbsp;black,&amp;nbsp;up&amp;nbsp;to&amp;nbsp;18&amp;nbsp;ISO&amp;nbsp;ppm&amp;nbsp;in&amp;nbsp;color&amp;nbsp;(Print&amp;nbsp;speeds&amp;nbsp;vary&amp;nbsp;with&amp;nbsp;use.&amp;nbsp;See&amp;nbsp;mfg.&amp;nbsp;for&amp;nbsp;info&amp;nbsp;on&amp;nbsp;print&amp;nbsp;speeds.)150-sheet&amp;nbsp;tray2.7\\\&quot;\&quot;&amp;nbsp;}&quot;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right;margin-top:-13px;margin-right:5px;font-size:9px;font-style:italic&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom;padding:0 2px 4px 0&quot;&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;위의 JSON은 /product/p0001을 요청했을 경우, 200Status에 header에는 &quot;application/json&quot;, body에는 요청 응답값 정보가 담겨져 있다. product.json으로 파일을 저정한 후, WireMock서버를 다시 실행한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 1000px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99CAFD3A5E579F0B2F&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99CAFD3A5E579F0B2F&quot; width=&quot;1000&quot; height=&quot;625&quot; filename=&quot;스크린샷 2020-02-27 오후 7.46.59.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;위에 json에서 정의한대로 응답받을 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;jar파일 실행시 command 옵션으로 포트, https 포트 설정, Address 바인딩 등등 다양한 옵션을 정의할 수 있으며, 위의 JSON&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;예제처럼 1개의 요청이 아닌 여러개의 stub을 등록하여 서버를 세팅할 수 있다. 아래 예제를 보면 2개의 Request와 Response의 응답값을 등록하여 사용하는 것을 볼 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0;font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important;overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin: 0px; padding: 0px; border: none; background-color: rgb(39, 39, 39); border-radius: 4px; width: 2282px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; width=&quot;2282&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px;border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0;padding:0;word-break:normal;text-align:right;color:#aaa;font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important;line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;6&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;7&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;8&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;9&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;10&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;11&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;12&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;13&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;14&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;15&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;16&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;17&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;18&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;19&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;20&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;21&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding: 6px 0px; width: 280px;&quot;&gt;&lt;div style=&quot;margin:0;padding:0;color:#f0f0f0;font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important;line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&quot;mappings&quot;:&amp;nbsp;[&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;request&quot;:&amp;nbsp;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;method&quot;:&amp;nbsp;&quot;GET&quot;,&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;url&quot;:&amp;nbsp;&quot;/one&quot;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;},&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;response&quot;:&amp;nbsp;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;status&quot;:&amp;nbsp;200&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;},&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;request&quot;:&amp;nbsp;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;url&quot;:&amp;nbsp;&quot;/two&quot;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;},&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;response&quot;:&amp;nbsp;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;body&quot;:&amp;nbsp;&quot;Updated&quot;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;]&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align: bottom; padding: 0px 2px 4px 0px; width: 1947px;&quot;&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;hr&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Spring Boot 적용 방법&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Spring Boot에서는&amp;nbsp;&lt;/span&gt;&lt;code class=&quot;literal&quot; style=&quot;font-size: medium; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Courier, monospace; color: rgb(109, 24, 11); background-color: rgb(242, 242, 242); border: 1px solid rgb(204, 204, 204); border-radius: 4px; padding: 1px 3px 0px; text-shadow: none; white-space: nowrap;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;spring-cloud-starter-contract-stub-runner&lt;/span&gt;&lt;/code&gt;&lt;span style=&quot;color: rgb(51, 51, 51); font-family: Helvetica, Arial, Freesans, Clean, sans-serif; font-size: 14pt;&quot;&gt;&amp;nbsp;를 ClassPath에 추가함으로써 WireMock를 사용할 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Spring initializer에서 WireMock을 검색하면 아래의 라이브러리를 선택할 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 700px; width: 700px; height: 466px;; height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9977F1385E561F050B&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9977F1385E561F050B&quot; width=&quot;700&quot; height=&quot;466&quot; filename=&quot;스크린샷 2020-02-26 오후 4.29.35.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;width: 700px; height: 466px;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;선택하면 아래와 같이 Gradle에 dependencies를 추가된다.&lt;/span&gt;&lt;/p&gt;&lt;pre style=&quot;background-color:#2b2b2b;color:#a9b7c6;font-family:'Menlo';font-size:12.8pt;&quot;&gt;&lt;span style=&quot;color: rgb(255, 198, 109); font-style: italic; font-size: 14pt;&quot;&gt;testImplementation&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(106, 135, 89); font-size: 14pt;&quot;&gt;&quot;org.springframework.cloud:spring-cloud-starter-contract-stub-runner&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&lt;/span&gt;&lt;/pre&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0;font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important;overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin: 0px; padding: 0px; border: none; background-color: rgb(39, 39, 39); border-radius: 4px; width: 2296px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; width=&quot;2296&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding: 6px; border-right: 2px solid rgb(79, 79, 79); width: 37px;&quot;&gt;&lt;div style=&quot;margin:0;padding:0;word-break:normal;text-align:right;color:#aaa;font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important;line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;6&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;7&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;8&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;9&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;10&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;11&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;12&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;13&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;14&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;15&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;16&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;17&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;18&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;19&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;20&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;21&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;22&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;23&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;24&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding: 6px 0px; width: 967px;&quot;&gt;&lt;div style=&quot;margin:0;padding:0;color:#f0f0f0;font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important;line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;@SpringBootTest(webEnvironment&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;WebEnvironment.RANDOM_PORT)&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;@AutoConfigureWireMock(port&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;WiremockForDocsTests&amp;nbsp;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(153, 153, 153); font-size: 14pt;&quot;&gt;//&amp;nbsp;A&amp;nbsp;service&amp;nbsp;that&amp;nbsp;calls&amp;nbsp;out&amp;nbsp;over&amp;nbsp;HTTP&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Autowired&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;private&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;Service&amp;nbsp;service;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@BeforeEach&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;void&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;setup()&amp;nbsp;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;.service.setBase(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;http://localhost:&quot;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;.environment.getProperty(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;wiremock.server.port&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;));&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(153, 153, 153); font-size: 14pt;&quot;&gt;//&amp;nbsp;Using&amp;nbsp;the&amp;nbsp;WireMock&amp;nbsp;APIs&amp;nbsp;in&amp;nbsp;the&amp;nbsp;normal&amp;nbsp;way:&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Test&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;void&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;contextLoads()&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;throws&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;Exception&amp;nbsp;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(153, 153, 153); font-size: 14pt;&quot;&gt;//&amp;nbsp;Stubbing&amp;nbsp;WireMock&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;stubFor(get(urlEqualTo(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;/resource&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)).willReturn(aResponse()&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.withHeader(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;Content-Type&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;text/plain&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;).withBody(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;Hello&amp;nbsp;World!&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)));&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(153, 153, 153); font-size: 14pt;&quot;&gt;//&amp;nbsp;We're&amp;nbsp;asserting&amp;nbsp;if&amp;nbsp;WireMock&amp;nbsp;responded&amp;nbsp;properly&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;assertThat(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;.service.go()).isEqualTo(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;Hello&amp;nbsp;World!&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right;margin-top:-13px;margin-right:5px;font-size:9px;font-style:italic&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align: bottom; padding: 0px 2px 4px 0px; width: 1292px;&quot;&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Stub 서버를 실행할 때 포트를 다르게 하려면&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: Menlo; font-size: 14pt; color: rgb(255, 255, 255); background-color: rgb(0, 0, 0);&quot;&gt;@AutoConfigureWireMock&lt;/span&gt;&lt;span style=&quot;background-color: rgb(0, 0, 0); color: rgb(255, 255, 255); font-family: Menlo; font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;font-family: Menlo; font-size: 14pt; color: rgb(255, 255, 255); background-color: rgb(0, 0, 0);&quot;&gt;port = &lt;/span&gt;&lt;span style=&quot;font-family: Menlo; font-size: 14pt; color: rgb(255, 255, 255); background-color: rgb(0, 0, 0);&quot;&gt;8090&lt;/span&gt;&lt;span style=&quot;background-color: rgb(0, 0, 0); color: rgb(255, 255, 255); font-family: Menlo; font-size: 12.8pt;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-color: rgb(255, 255, 255); font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;과 같이 port를 설정할 수 있다, 만약 랜덤으로 포트를 설정하려면 0으로 설정한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Stub 서버의 포트는 또한 Test Application Context의 wiremock.server.port 프로퍼티로 바인딩 되는데 관련된 내용의 코드는 12Line에서 볼 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: rgb(109, 24, 11); font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Courier, monospace; font-size: 14pt; white-space: nowrap; background-color: rgb(242, 242, 242);&quot;&gt;@AutoConfigureWireMock&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;을 사용하는 것은 WireMockConfiuration을 테스트 환경에 빈으로 설정하는 것과 동일하다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-color: rgb(242, 242, 242); color: rgb(109, 24, 11); font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Courier, monospace; font-size: 14pt; white-space: nowrap;&quot;&gt;@AutoConfigureWireMock&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;을 선언하여 classpath에 Json stub을 등록할 수 있다(default : src/test/resources/mappings).&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;stub 속성을 사용하여 JSON 위치를 변경할 수 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0;font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important;overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin: 0px; padding: 0px; border: none; background-color: rgb(39, 39, 39); border-radius: 4px; width: 2289px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; width=&quot;2289&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px;border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0;padding:0;word-break:normal;text-align:right;color:#aaa;font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important;line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;6&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;7&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;8&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;9&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;10&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;11&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;12&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;13&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding: 6px 0px; width: 728px;&quot;&gt;&lt;div style=&quot;margin:0;padding:0;color:#f0f0f0;font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important;line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;@ExtendWith(SpringExtension::&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;@SpringBootTest&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;@AutoConfigureWireMock(stubs&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;classpath:/stubs&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;WiremockImportApplicationTests&amp;nbsp;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Autowired&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;private&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;Service&amp;nbsp;service;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Test&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;void&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;contextLoads()&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;throws&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;Exception&amp;nbsp;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;assertThat(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;.service.go()).isEqualTo(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;Hello&amp;nbsp;World!&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right;margin-top:-13px;margin-right:5px;font-size:9px;font-style:italic&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align: bottom; padding: 0px 2px 4px 0px; width: 1509px;&quot;&gt;&lt;p&gt;&lt;span style=&quot;color: white; font-size: 9px; word-break: normal; background-color: rgb(79, 79, 79); border-radius: 10px; padding: 1px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;hr&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18.6667px;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;WireMock 코드 작성&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18.6667px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size:14pt;&quot;&gt;게시글을 등록, 조회, 게시글의 댓글얼 조회하는 Rest API&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;가 있고,&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;요청 및 응답 데이터는 아래와 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;table class=&quot;txc-table&quot; width=&quot;861&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; style=&quot;border: none; border-collapse: collapse; width: 861px;&quot; 맑은=&quot;&quot; 고딕&quot;,=&quot;&quot; sans-serif;font-size:19px&quot;=&quot;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;width: 35px; height: 24px; border-width: 1px; border-style: solid; border-color: rgb(204, 204, 204);&quot; colspan=&quot;1&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;No&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;width: 140px; height: 24px; border-width: 1px; border-style: solid; border-color: rgb(204, 204, 204);&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size:14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;METHOD&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;width: 251px; height: 24px; border-bottom: 1px solid rgb(204, 204, 204); border-right: 1px solid rgb(204, 204, 204); border-top: 1px solid rgb(204, 204, 204);&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size:14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;URL&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td style=&quot;width: 432px; height: 24px; border-bottom: 1px solid rgb(204, 204, 204); border-right: 1px solid rgb(204, 204, 204); border-top: 1px solid rgb(204, 204, 204);&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size:14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Description&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;width: 35px; height: 24px; border-bottom: 1px solid rgb(204, 204, 204); border-right: 1px solid rgb(204, 204, 204); border-left: 1px solid rgb(204, 204, 204);&quot; colspan=&quot;1&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;1&lt;/span&gt;&lt;/td&gt;&lt;td style=&quot;width: 140px; height: 24px; border-bottom: 1px solid rgb(204, 204, 204); border-right: 1px solid rgb(204, 204, 204); border-left: 1px solid rgb(204, 204, 204);&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;GET&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td style=&quot;width: 251px; height: 24px; border-bottom: 1px solid rgb(204, 204, 204); border-right: 1px solid rgb(204, 204, 204);&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;/post/{id}&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td style=&quot;width: 432px; height: 24px; border-bottom: 1px solid rgb(204, 204, 204); border-right: 1px solid rgb(204, 204, 204);&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;게시물 검색&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;width: 35px; height: 24px; border-bottom: 1px solid rgb(204, 204, 204); border-right: 1px solid rgb(204, 204, 204); border-left: 1px solid rgb(204, 204, 204);&quot; colspan=&quot;1&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;2&lt;/span&gt;&lt;/td&gt;&lt;td style=&quot;width: 140px; height: 24px; border-bottom: 1px solid rgb(204, 204, 204); border-right: 1px solid rgb(204, 204, 204); border-left: 1px solid rgb(204, 204, 204);&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;GET&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td style=&quot;width: 251px; height: 24px; border-bottom: 1px solid rgb(204, 204, 204); border-right: 1px solid rgb(204, 204, 204);&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;/comments?postId={id}&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td style=&quot;width: 432px; height: 24px; border-bottom: 1px solid rgb(204, 204, 204); border-right: 1px solid rgb(204, 204, 204);&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;게시물에 있는 댓글 검색&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;width: 35px; height: 24px; border-bottom: 1px solid rgb(204, 204, 204); border-right: 1px solid rgb(204, 204, 204); border-left: 1px solid rgb(204, 204, 204);&quot; colspan=&quot;1&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;3&lt;/span&gt;&lt;/td&gt;&lt;td style=&quot;width: 140px; height: 24px; border-bottom: 1px solid rgb(204, 204, 204); border-right: 1px solid rgb(204, 204, 204); border-left: 1px solid rgb(204, 204, 204);&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;POST&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td style=&quot;width: 251px; height: 24px; border-bottom: 1px solid rgb(204, 204, 204); border-right: 1px solid rgb(204, 204, 204);&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;/post&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td style=&quot;width: 432px; height: 24px; border-bottom: 1px solid rgb(204, 204, 204); border-right: 1px solid rgb(204, 204, 204);&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;게시물 등록&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1. 게시글 조회&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0;font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important;overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0;padding:0;border:none;background-color:#272727;border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px;border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0;padding:0;word-break:normal;text-align:right;color:#aaa;font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important;line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;6&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding: 6px 0px; width: 1024px;&quot;&gt;&lt;div style=&quot;margin:0;padding:0;color:#f0f0f0;font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important;line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;userId&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;id&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;title&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;sunt&amp;nbsp;aut&amp;nbsp;facere&amp;nbsp;repellat&amp;nbsp;provident&amp;nbsp;occaecati&amp;nbsp;excepturi&amp;nbsp;optio&amp;nbsp;reprehenderit&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;completed&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;false&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right;margin-top:-13px;margin-right:5px;font-size:9px;font-style:italic&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align: bottom; padding: 0px 2px 4px 0px; width: 20px;&quot;&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2. 댓글 조회&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0;font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important;overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0;padding:0;border:none;background-color:#272727;border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px;border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0;padding:0;word-break:normal;text-align:right;color:#aaa;font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important;line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;6&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;7&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;8&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;9&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding: 6px 0px;&quot;&gt;&lt;div style=&quot;margin:0;padding:0;color:#f0f0f0;font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important;line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;[&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;postId&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;id&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;name&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;id&amp;nbsp;labore&amp;nbsp;ex&amp;nbsp;et&amp;nbsp;quam&amp;nbsp;laborum&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;email&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;Eliseo@gardner.biz&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;body&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;laudantium&amp;nbsp;enim&amp;nbsp;quasi&amp;nbsp;est&amp;nbsp;quidem&amp;nbsp;magnam&amp;nbsp;voluptate&amp;nbsp;ipsam&amp;nbsp;eos\ntempora&amp;nbsp;quo&amp;nbsp;necessitatibus\ndolor&amp;nbsp;quam&amp;nbsp;autem&amp;nbsp;quasi\nreiciendis&amp;nbsp;et&amp;nbsp;nam&amp;nbsp;sapiente&amp;nbsp;accusantium&quot;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right;margin-top:-13px;margin-right:5px;font-size:9px;font-style:italic&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom;padding:0 2px 4px 0&quot;&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3. 게시글 등록&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0;font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important;overflow:auto&quot;&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin: 0px; padding: 0px; border: none; background-color: rgb(39, 39, 39); border-radius: 4px; width: 1007px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; width=&quot;1007&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px;border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0;padding:0;word-break:normal;text-align:right;color:#aaa;font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important;line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;6&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;7&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;8&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;9&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;10&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;11&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;12&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;13&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;14&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding: 6px 0px; width: 235px;&quot;&gt;&lt;div style=&quot;margin:0;padding:0;color:#f0f0f0;font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important;line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(153, 153, 153); font-size: 14pt;&quot;&gt;/**&amp;nbsp;요청&amp;nbsp;**/&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;userId&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;:&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;title&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;:&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;THEO&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;body&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;:&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;foo&quot;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(153, 153, 153); font-size: 14pt;&quot;&gt;/**&amp;nbsp;응답&amp;nbsp;**/&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;id&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;101&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;userId&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;title&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;THEO&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;body&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;foo&quot;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align: bottom; padding: 0px 2px 4px 0px; width: 717px;&quot;&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18.6667px;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;자바코드&quot;만&quot; 사용해서 테스트 코드 작성&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;WireMock은 자바 코드로 요청 및 응답에 대한 테스트 데이터를 작성할 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0;font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important;overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0;padding:0;border:none;background-color:#272727;border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding: 6px; border-right: 2px solid rgb(79, 79, 79); width: 37px;&quot;&gt;&lt;div style=&quot;margin:0;padding:0;word-break:normal;text-align:right;color:#aaa;font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important;line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;1&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;2&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;3&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;4&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;5&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;6&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;7&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;8&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;9&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;10&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;11&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;12&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;13&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;14&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;15&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;16&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;17&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;18&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;19&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;20&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;21&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;22&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;23&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;24&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;25&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;26&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;27&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;28&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;29&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;30&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;31&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;32&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;33&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;34&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;35&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;36&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;37&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;38&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;39&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;40&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;41&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;42&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;43&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;44&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;45&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;46&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;47&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;48&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;49&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;50&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;51&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;52&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;53&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;54&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;55&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;56&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;57&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;58&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;59&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;60&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;61&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;62&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;63&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;64&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;65&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding: 6px 0px; width: 1134px;&quot;&gt;&lt;div style=&quot;margin:0;padding:0;color:#f0f0f0;font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important;line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;class&lt;/span&gt;&amp;nbsp;PostServiceTest&amp;nbsp;@Autowired&amp;nbsp;constructor(&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;val&amp;nbsp;postService:&amp;nbsp;PostService,&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;val&amp;nbsp;postClient:&amp;nbsp;PostClient&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;)&amp;nbsp;:&amp;nbsp;BaseSpringTest()&amp;nbsp;{&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@BeforeEach&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fun&amp;nbsp;init()&amp;nbsp;{&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wireMockServer&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;WireMockServer()&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wireMockServer.start()&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@AfterEach&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fun&amp;nbsp;shutDown()&amp;nbsp;{&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wireMockServer.stop()&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Test&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fun&amp;nbsp;getPost()&amp;nbsp;{&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;stubFor(&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WireMock.get(WireMock.urlEqualTo(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;/posts/1&quot;&lt;/span&gt;))&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.willReturn(&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WireMock.aResponse()&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.withStatus(HttpStatus.OK)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.withHeader(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;Content-Type&quot;&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;application/json&quot;&lt;/span&gt;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.withBody(getBody)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;assertThat(postService.getPost(&lt;span style=&quot;color:#c10aff&quot;&gt;1&lt;/span&gt;).title).isEqualTo(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;delectus&amp;nbsp;aut&amp;nbsp;autem&quot;&lt;/span&gt;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;verify(getRequestedFor(urlEqualTo(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;/posts/1&quot;&lt;/span&gt;)))&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Test&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fun&amp;nbsp;getComments()&amp;nbsp;{&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;stubFor(&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WireMock.get(WireMock.urlEqualTo(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;/comments?postId=1&quot;&lt;/span&gt;))&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.willReturn(&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WireMock.aResponse()&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.withStatus(HttpStatus.OK)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.withHeader(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;Content-Type&quot;&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;application/json&quot;&lt;/span&gt;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.withBody(commentBody)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;assertThat(postService.getComments(&lt;span style=&quot;color:#c10aff&quot;&gt;1&lt;/span&gt;).size).isEqualTo(&lt;span style=&quot;color:#c10aff&quot;&gt;1&lt;/span&gt;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Test&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fun&amp;nbsp;createPost()&amp;nbsp;{&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;stubFor(WireMock.post(WireMock.urlEqualTo(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;/posts&quot;&lt;/span&gt;))&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.withRequestBody(&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;equalToJson(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;{&amp;nbsp;\&quot;userId\&quot;&amp;nbsp;:&amp;nbsp;1,&amp;nbsp;\&quot;title\&quot;&amp;nbsp;:&amp;nbsp;\&quot;THEO\&quot;,&amp;nbsp;\&quot;body\&quot;&amp;nbsp;:&amp;nbsp;\&quot;GAMEHUB\&quot;}&quot;&lt;/span&gt;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.willReturn(&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WireMock.aResponse()&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.withStatus(HttpStatus.OK)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.withHeader(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;Content-Type&quot;&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;application/json&quot;&lt;/span&gt;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.withBody(postBody)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;assertThat(postService.createPost(todoRequest).title).isEqualTo(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;THEO&quot;&lt;/span&gt;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;}&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right;margin-top:-13px;margin-right:5px;font-size:9px;font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot;&gt;Colored by Color Scripter&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom;padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: white;&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: rgb(79, 79, 79); border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;JSON 파일을 이용한 테스트 코드 작성&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;위의 예제에서는 stubFor을 이용해서 요청 및 응답 데이터를 작성했다면, 아래 예제는 요청 및 응답 정보를 포함하는&amp;nbsp;&amp;nbsp;json파일을 이용하여 테스트를 작성한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;WireMock은 Default로 resources/mappings 디렉토리에 있는 Json 들을 import 한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 255px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/990217495E5BD9311F&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F990217495E5BD9311F&quot; width=&quot;255&quot; height=&quot;113&quot; filename=&quot;스크린샷 2020-03-02 오전 12.45.42.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0;font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important;overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0;padding:0;border:none;background-color:#272727;border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px;border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0;padding:0;word-break:normal;text-align:right;color:#aaa;font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important;line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;1&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;2&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;3&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;4&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;5&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;6&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;7&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;8&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;9&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;10&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;11&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;12&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;13&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;14&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;15&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;16&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;17&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;18&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;19&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;20&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;21&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;22&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;23&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;24&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;25&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;26&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;27&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;28&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;29&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;30&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;31&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;32&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;33&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;34&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;35&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;36&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;37&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;38&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;39&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;40&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;41&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;42&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;43&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;44&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;45&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;46&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;47&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding: 6px 0px;&quot;&gt;&lt;div style=&quot;margin:0;padding:0;color:#f0f0f0;font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important;line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#999999&quot;&gt;/**&amp;nbsp;getPost&amp;nbsp;**/&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;{&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;request&quot;&lt;/span&gt;:&amp;nbsp;{&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;method&quot;&lt;/span&gt;:&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;GET&quot;&lt;/span&gt;,&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;url&quot;&lt;/span&gt;:&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;/posts/1&quot;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;},&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;response&quot;&lt;/span&gt;:&amp;nbsp;{&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;headers&quot;&lt;/span&gt;:&amp;nbsp;{&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;Content-Type&quot;&lt;/span&gt;:&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;application/json&quot;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;},&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;status&quot;&lt;/span&gt;:&amp;nbsp;&lt;span style=&quot;color:#c10aff&quot;&gt;200&lt;/span&gt;,&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;body&quot;&lt;/span&gt;:&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;{\&quot;userId\&quot;&amp;nbsp;:&amp;nbsp;\&quot;1\&quot;,&amp;nbsp;\&quot;id\&quot;&amp;nbsp;:&amp;nbsp;\&quot;1\&quot;,&amp;nbsp;\&quot;title\&quot;&amp;nbsp;:&amp;nbsp;\&quot;delectus&amp;nbsp;aut&amp;nbsp;autem\&quot;,&amp;nbsp;\&quot;completed\&quot;:&amp;nbsp;\&quot;false\&quot;}&quot;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;}&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#999999&quot;&gt;/**&amp;nbsp;getComments**/&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;{&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;request&quot;&lt;/span&gt;:&amp;nbsp;{&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;method&quot;&lt;/span&gt;:&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;GET&quot;&lt;/span&gt;,&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;url&quot;&lt;/span&gt;:&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;/comments?postId=1&quot;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;},&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;response&quot;&lt;/span&gt;:&amp;nbsp;{&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;headers&quot;&lt;/span&gt;:&amp;nbsp;{&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;Content-Type&quot;&lt;/span&gt;:&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;application/json&quot;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;},&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;status&quot;&lt;/span&gt;:&amp;nbsp;&lt;span style=&quot;color:#c10aff&quot;&gt;200&lt;/span&gt;,&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;body&quot;&lt;/span&gt;:&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;[{\&quot;postId\&quot;&amp;nbsp;:&amp;nbsp;\&quot;1\&quot;,&amp;nbsp;\&quot;id\&quot;&amp;nbsp;:&amp;nbsp;\&quot;1\&quot;,&amp;nbsp;\&quot;name\&quot;&amp;nbsp;:&amp;nbsp;\&quot;id&amp;nbsp;labore&amp;nbsp;ex&amp;nbsp;et&amp;nbsp;quam&amp;nbsp;laborum\&quot;,&amp;nbsp;\&quot;email\&quot;:&amp;nbsp;\&quot;Eliseo@gardner.biz\&quot;,&amp;nbsp;\&quot;body\&quot;:&amp;nbsp;\&quot;laudantium&amp;nbsp;enim&amp;nbsp;quasi&amp;nbsp;est&amp;nbsp;quidem&amp;nbsp;magnam&amp;nbsp;voluptate&amp;nbsp;ipsam&amp;nbsp;eos&amp;nbsp;tempora&amp;nbsp;quo&amp;nbsp;necessitatibus&amp;nbsp;dolor&amp;nbsp;quam&amp;nbsp;autem&amp;nbsp;quasi&amp;nbsp;reiciendis&amp;nbsp;et&amp;nbsp;nam&amp;nbsp;sapiente&amp;nbsp;accusantium\&quot;}]&quot;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;}&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#999999&quot;&gt;/**&amp;nbsp;createPost&amp;nbsp;**/&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;{&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;request&quot;&lt;/span&gt;:&amp;nbsp;{&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;method&quot;&lt;/span&gt;:&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;POST&quot;&lt;/span&gt;,&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;url&quot;&lt;/span&gt;:&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;/posts&quot;&lt;/span&gt;,&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;bodyPatterns&quot;&lt;/span&gt;&amp;nbsp;:&amp;nbsp;[&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;equalToJson&quot;&lt;/span&gt;&amp;nbsp;:&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;{&amp;nbsp;\&quot;userId\&quot;&amp;nbsp;:&amp;nbsp;1,&amp;nbsp;\&quot;title\&quot;&amp;nbsp;:&amp;nbsp;\&quot;THEO\&quot;,&amp;nbsp;\&quot;body\&quot;&amp;nbsp;:&amp;nbsp;\&quot;GAMEHUB\&quot;}&quot;&lt;/span&gt;}&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;]&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;},&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;response&quot;&lt;/span&gt;:&amp;nbsp;{&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;status&quot;&lt;/span&gt;:&lt;span style=&quot;color:#c10aff&quot;&gt;200&lt;/span&gt;,&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;headers&quot;&lt;/span&gt;:{&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;Content-Type&quot;&lt;/span&gt;:&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;application/json&quot;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;},&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;body&quot;&lt;/span&gt;&amp;nbsp;:&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;{&amp;nbsp;\&quot;id\&quot;&amp;nbsp;:&amp;nbsp;\&quot;1\&quot;,&amp;nbsp;\&quot;userId\&quot;&amp;nbsp;:&amp;nbsp;\&quot;1\&quot;,&amp;nbsp;\&quot;title\&quot;&amp;nbsp;:&amp;nbsp;\&quot;THEO\&quot;,&amp;nbsp;\&quot;body\&quot;&amp;nbsp;:&amp;nbsp;\&quot;GAMEHUB\&quot;&amp;nbsp;}&quot;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;}&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right;margin-top:-13px;margin-right:5px;font-size:9px;font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot;&gt;Colored by Color Scripter&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom;padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: white;&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: rgb(79, 79, 79); border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Request Matching&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;WireMock에서는 Attribute 사용하여&amp;nbsp;stub 또는 검증을 진행한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;내용이 너무 많아 중요한 몇개(URL, HTTP Method[GET, POST], Query Parameters, Header, Request Body)만 설명을 진행한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;ul style=&quot;box-sizing: border-box; orphans: 3; widows: 3; color: rgb(102, 102, 102); font-family: Lato, &amp;quot;Segoe UI&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Lucida Grande&amp;quot;, Arial, sans-serif; font-size: 18px;&quot;&gt;&lt;li style=&quot;box-sizing: border-box; margin-bottom: 0.5em; font-size: 1em;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;URL&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;table class=&quot;txc-table&quot; width=&quot;842&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; style=&quot;border: none; border-collapse: collapse; width: 842px;&quot; 맑은=&quot;&quot; 고딕&quot;,=&quot;&quot; sans-serif;font-size:19px&quot;=&quot;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;width: 191px; height: 24px; border-width: 1px; border-style: solid; border-color: rgb(204, 204, 204);&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;java&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td style=&quot;width: 214px; height: 24px; border-bottom: 1px solid rgb(204, 204, 204); border-right: 1px solid rgb(204, 204, 204); border-top: 1px solid rgb(204, 204, 204);&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;json&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td style=&quot;width: 436px; height: 24px; border-bottom: 1px solid rgb(204, 204, 204); border-right: 1px solid rgb(204, 204, 204); border-top: 1px solid rgb(204, 204, 204);&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;Description&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;width: 191px; height: 24px; border-bottom: 1px solid rgb(204, 204, 204); border-right: 1px solid rgb(204, 204, 204); border-left: 1px solid rgb(204, 204, 204);&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;urlEqualTo&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td style=&quot;width: 214px; height: 24px; border-bottom: 1px solid rgb(204, 204, 204); border-right: 1px solid rgb(204, 204, 204);&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;url&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td style=&quot;width: 436px; height: 24px; border-bottom: 1px solid rgb(204, 204, 204); border-right: 1px solid rgb(204, 204, 204);&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;Equality matching on path and query&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;width: 191px; height: 24px; border-bottom: 1px solid rgb(204, 204, 204); border-right: 1px solid rgb(204, 204, 204); border-left: 1px solid rgb(204, 204, 204);&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;urlMatching&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td style=&quot;width: 214px; height: 24px; border-bottom: 1px solid rgb(204, 204, 204); border-right: 1px solid rgb(204, 204, 204);&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;urlPattern&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td style=&quot;width: 436px; height: 24px; border-bottom: 1px solid rgb(204, 204, 204); border-right: 1px solid rgb(204, 204, 204);&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;Regex matching on path and query&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;width: 191px; height: 24px; border-bottom: 1px solid rgb(204, 204, 204); border-right: 1px solid rgb(204, 204, 204); border-left: 1px solid rgb(204, 204, 204);&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;urlPathEqualTo&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td style=&quot;width: 214px; height: 24px; border-bottom: 1px solid rgb(204, 204, 204); border-right: 1px solid rgb(204, 204, 204);&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;urlPath&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td style=&quot;width: 436px; height: 24px; border-bottom: 1px solid rgb(204, 204, 204); border-right: 1px solid rgb(204, 204, 204);&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;Equality matching on the path only&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;width: 191px; height: 24px; border-bottom: 1px solid rgb(204, 204, 204); border-right: 1px solid rgb(204, 204, 204); border-left: 1px solid rgb(204, 204, 204);&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;urlPathMatching&lt;/span&gt;&lt;/td&gt;&lt;td style=&quot;width: 214px; height: 24px; border-bottom: 1px solid rgb(204, 204, 204); border-right: 1px solid rgb(204, 204, 204);&quot; rowspan=&quot;1&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;urlPathPattern&lt;/span&gt;&lt;/td&gt;&lt;td style=&quot;width: 436px; height: 24px; border-bottom: 1px solid rgb(204, 204, 204); border-right: 1px solid rgb(204, 204, 204);&quot; rowspan=&quot;1&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;Regex matching on the path only&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;li style=&quot;box-sizing: border-box; margin-bottom: 0.5em; font-size: 1em;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;HTTP Method(GET, POST, PUT, DELETE 등&lt;/span&gt;&lt;/li&gt;&lt;li style=&quot;box-sizing: border-box; margin-bottom: 0.5em; font-size: 1em;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Query parameters&lt;/span&gt;&lt;/li&gt;&lt;li style=&quot;box-sizing: border-box; margin-bottom: 0.5em; font-size: 1em;&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Headers&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style=&quot;orphans: 3; widows: 3;&quot;&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0;font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important;overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin: 0px; padding: 0px; border: none; background-color: rgb(39, 39, 39); border-radius: 4px; width: 871px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; width=&quot;871&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px;border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0;padding:0;word-break:normal;text-align:right;color:#aaa;font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important;line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding: 6px 0px;&quot;&gt;&lt;div style=&quot;margin:0;padding:0;color:#f0f0f0;font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important;line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;.withHeader(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;Content-Type&quot;&lt;/span&gt;,&amp;nbsp;equalTo(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;application/json&quot;&lt;/span&gt;))&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align: bottom; padding: 0px 2px 4px 0px; width: 192px;&quot;&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;orphans: 3; widows: 3;&quot;&gt;&lt;font color=&quot;#666666&quot; face=&quot;Lato, Segoe UI, Helvetica Neue, Lucida Grande, Arial, sans-serif&quot;&gt;&lt;span style=&quot;font-size: 18.6667px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;orphans: 3; widows: 3;&quot;&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0;font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important;overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin: 0px; padding: 0px; border: none; background-color: rgb(39, 39, 39); border-radius: 4px; width: 873px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; width=&quot;873&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px;border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0;padding:0;word-break:normal;text-align:right;color:#aaa;font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important;line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;1&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;2&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;3&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;4&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;5&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;6&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;7&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;8&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;9&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;10&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;11&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding: 6px 0px;&quot;&gt;&lt;div style=&quot;margin:0;padding:0;color:#f0f0f0;font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important;line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;{&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;request&quot;&lt;/span&gt;:&amp;nbsp;{&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;...&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;headers&quot;&lt;/span&gt;:&amp;nbsp;{&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;Content-Type&quot;&lt;/span&gt;:&amp;nbsp;{&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;equalTo&quot;&lt;/span&gt;:&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;application/json&quot;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;...&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;},&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;...&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;}&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right;margin-top:-13px;margin-right:5px;font-size:9px;font-style:italic&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align: bottom; padding: 0px 2px 4px 0px; width: 400px;&quot;&gt;&lt;p&gt;ㅈ&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;ul style=&quot;box-sizing: border-box; orphans: 3; widows: 3; color: rgb(102, 102, 102); font-family: Lato, &amp;quot;Segoe UI&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Lucida Grande&amp;quot;, Arial, sans-serif; font-size: 18px;&quot;&gt;&lt;li style=&quot;box-sizing: border-box; margin-bottom: 0.5em; font-size: 1em;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Request body&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0;font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important;overflow:auto&quot;&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;overflow: auto; position: relative !important;&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin: 0px; padding: 0px; border: none; background-color: rgb(39, 39, 39); border-radius: 4px; width: 872px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; width=&quot;872&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px;border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0;padding:0;word-break:normal;text-align:right;color:#aaa;font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important;line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding: 6px 0px;&quot;&gt;&lt;div style=&quot;margin:0;padding:0;color:#f0f0f0;font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important;line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;.withRequestBody(equalToJson(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;{&amp;nbsp;\&quot;total_results\&quot;:&amp;nbsp;4&amp;nbsp;}&quot;&lt;/span&gt;))&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align: bottom; padding: 0px 2px 4px 0px; width: 181px;&quot;&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0;font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important;overflow:auto&quot;&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;overflow: auto; position: relative !important;&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin: 0px; padding: 0px; border: none; background-color: rgb(39, 39, 39); border-radius: 4px; width: 871px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; width=&quot;871&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px;border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0;padding:0;word-break:normal;text-align:right;color:#aaa;font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important;line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;1&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;2&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;3&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;4&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;5&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;6&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;7&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;8&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;9&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding: 6px 0px;&quot;&gt;&lt;div style=&quot;margin:0;padding:0;color:#f0f0f0;font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important;line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;{&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;request&quot;&lt;/span&gt;:&amp;nbsp;{&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;...&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;bodyPatterns&quot;&lt;/span&gt;&amp;nbsp;:&amp;nbsp;[&amp;nbsp;{&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;equalToJson&quot;&lt;/span&gt;&amp;nbsp;:&amp;nbsp;{&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;total_results&quot;&lt;/span&gt;:&amp;nbsp;&lt;span style=&quot;color:#c10aff&quot;&gt;4&lt;/span&gt;&amp;nbsp;}&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;]&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;...&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;},&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;...&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;}&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right;margin-top:-13px;margin-right:5px;font-size:9px;font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot;&gt;&amp;nbsp;b&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align: bottom; padding: 0px 2px 4px 0px; width: 318px;&quot;&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0;font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important;overflow:auto&quot;&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;overflow: auto; position: relative !important;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;다른 속성들은 아래와 같고, &lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;사용 방법은&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;http://wiremock.org/docs/request-matching/&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;http://wiremock.org/docs/request-matching/&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;를 확인한다.&lt;/span&gt;&lt;/p&gt;&lt;ul style=&quot;box-sizing: border-box; orphans: 3; widows: 3; color: rgb(102, 102, 102); font-family: Lato, &amp;quot;Segoe UI&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Lucida Grande&amp;quot;, Arial, sans-serif; font-size: 18px;&quot;&gt;&lt;li style=&quot;box-sizing: border-box; margin-bottom: 0.5em; font-size: 1em;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Basic authentication (a special case of header matching)&lt;/span&gt;&lt;/li&gt;&lt;li style=&quot;box-sizing: border-box; margin-bottom: 0.5em; font-size: 1em;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Cookies&lt;/span&gt;&lt;/li&gt;&lt;li style=&quot;box-sizing: border-box; margin-bottom: 0.5em; font-size: 1em;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Multipart/form-data&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;hr&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;검증(Verifying)&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;WireMock은 수신한 모든 요청을 Memory에 기록하며, 실제 서버에 요청이 되었는지 확인할 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0;font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important;overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin: 0px; padding: 0px; border: none; background-color: rgb(39, 39, 39); border-radius: 4px; width: 939px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; width=&quot;939&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px;border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0;padding:0;word-break:normal;text-align:right;color:#aaa;font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important;line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;1&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;2&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;3&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;4&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;5&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;6&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;7&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;8&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;9&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;10&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;11&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;12&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;13&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;14&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding: 6px 0px;&quot;&gt;&lt;div style=&quot;margin:0;padding:0;color:#f0f0f0;font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important;line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;fun&amp;nbsp;getPost()&amp;nbsp;{&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;stubFor(&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WireMock.get(WireMock.urlEqualTo(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;/posts/1&quot;&lt;/span&gt;))&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.willReturn(&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WireMock.aResponse()&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.withStatus(HttpStatus.OK)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.withHeader(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;Content-Type&quot;&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;application/json&quot;&lt;/span&gt;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.withBody(getBody)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;assertThat(postService.getPost(&lt;span style=&quot;color:#c10aff&quot;&gt;1&lt;/span&gt;).title).isEqualTo(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;delectus&amp;nbsp;aut&amp;nbsp;autem&quot;&lt;/span&gt;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;verify(getRequestedFor(urlEqualTo(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;/posts/2&quot;&lt;/span&gt;)))&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;}&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right;margin-top:-13px;margin-right:5px;font-size:9px;font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot;&gt;Colored by Color Scripter&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align: bottom; padding: 0px 2px 4px 0px; width: 20px;&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: white;&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: rgb(79, 79, 79); border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;hr&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18.6667px;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;WireMock and Spring MVC Mocks&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: Karla, sans-serif; font-size: 14pt;&quot;&gt;Spring Cloud Contract에서는 WireMock를 좀 더 편리하게 사용할 수 있는 MockRestServiceServer을 제공한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: Karla, sans-serif; font-size: 16px;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;아래는 예제 코드이며, 관련 &lt;/span&gt;&lt;a href=&quot;https://cloud.spring.io/spring-cloud-contract/reference/html/project-features.html#features-build-tools&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;링크&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;를 첨부한다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0;font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important;overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin: 0px; padding: 0px; border: none; background-color: rgb(39, 39, 39); border-radius: 4px; width: 1076px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; width=&quot;1076&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px;border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0;padding:0;word-break:normal;text-align:right;color:#aaa;font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important;line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;1&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;2&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;3&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;4&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;5&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;6&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;7&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;8&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;9&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;10&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;11&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;12&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;13&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;14&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;15&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;16&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;17&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;18&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;19&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;20&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;21&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding: 6px 0px; width: 1019px;&quot;&gt;&lt;div style=&quot;margin:0;padding:0;color:#f0f0f0;font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important;line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;@SpringBootTest(webEnvironment&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;WebEnvironment.NONE)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;class&lt;/span&gt;&amp;nbsp;WiremockForDocsMockServerApplicationTests&amp;nbsp;{&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Autowired&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;private&lt;/span&gt;&amp;nbsp;RestTemplate&amp;nbsp;restTemplate;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Autowired&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;private&lt;/span&gt;&amp;nbsp;Service&amp;nbsp;service;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Test&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;void&lt;/span&gt;&amp;nbsp;contextLoads()&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;throws&lt;/span&gt;&amp;nbsp;Exception&amp;nbsp;{&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#999999&quot;&gt;//&amp;nbsp;will&amp;nbsp;read&amp;nbsp;stubs&amp;nbsp;classpath&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MockRestServiceServer&amp;nbsp;server&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;WireMockRestServiceServer.with(&lt;span style=&quot;color:#ff3399&quot;&gt;this&lt;/span&gt;.restTemplate)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.baseUrl(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;https://example.org&quot;&lt;/span&gt;).stubs(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;classpath:/stubs/resource.json&quot;&lt;/span&gt;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.build();&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#999999&quot;&gt;//&amp;nbsp;We're&amp;nbsp;asserting&amp;nbsp;if&amp;nbsp;WireMock&amp;nbsp;responded&amp;nbsp;properly&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;assertThat(&lt;span style=&quot;color:#ff3399&quot;&gt;this&lt;/span&gt;.service.go()).isEqualTo(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;Hello&amp;nbsp;World&quot;&lt;/span&gt;);&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;server.verify();&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;}&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right;margin-top:-13px;margin-right:5px;font-size:9px;font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot;&gt;Colored by Color Scripter&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align: bottom; padding: 0px 2px 4px 0px; width: 20px;&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: white;&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: rgb(79, 79, 79); border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;hr&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;** 참고&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;json 제공 :&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://jsonplaceholder.typicode.com/&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;https://jsonplaceholder.typicode.com/&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;stub :&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://m.blog.naver.com/PostView.nhn?blogId=suresofttech&amp;amp;logNo=221204092938&amp;amp;proxyReferer=https%3A%2F%2Fwww.google.com%2F&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;https://m.blog.naver.com/PostView.nhn?blogId=suresofttech&amp;amp;logNo=221204092938&amp;amp;proxyReferer=https%3A%2F%2Fwww.google.com%2F&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;wiremock :&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://cloud.spring.io/spring-cloud-contract/reference/html/project-features.html#features-build-tools&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;https://cloud.spring.io/spring-cloud-contract/reference/html/project-features.html#features-build-tools&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://www.baeldung.com/introduction-to-wiremock&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;https://www.baeldung.com/introduction-to-wiremock&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://wiremock.org/docs/getting-started/&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;http://wiremock.org/docs/getting-started/&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=pPtTz6X0yRE&amp;amp;t=3s&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;https://www.youtube.com/watch?v=pPtTz6X0yRE&amp;amp;t=3s&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://dzone.com/articles/mocking-rest-api-with-wiremock-using-recording-mod&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;https://dzone.com/articles/mocking-rest-api-with-wiremock-using-recording-mod&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;/** Stand alone 사용 방법 **/&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://dzone.com/articles/wiremock-mock-your-rest-apis&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;https://dzone.com/articles/wiremock-mock-your-rest-apis&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;</description>
      <category>Spring 스프링</category>
      <category>Spring boot</category>
      <category>WireMock</category>
      <category>WireMockServer</category>
      <category>테스트</category>
      <author>ktko</author>
      <guid isPermaLink="true">https://ktko.tistory.com/408</guid>
      <comments>https://ktko.tistory.com/entry/Spring-Boot-Test-%EB%B0%A9%EB%B2%95#entry408comment</comments>
      <pubDate>Mon, 2 Mar 2020 01:10:02 +0900</pubDate>
    </item>
    <item>
      <title>used to / be used to 동사 / be used to 명사 or 동명사 정리</title>
      <link>https://ktko.tistory.com/entry/used-to-be-used-to-get-used-to-%EB%B9%84%EA%B5%90-%EB%B0%8F-%EC%A0%95%EB%A6%AC</link>
      <description>&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;use는 주로 사용하다 라고 해석이 많이 되지만 used는 과거형이 아닌 익숙한 이란 형용사로 해석이 된다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;이 형용사를 알면 해석하는데 많은 도움이 된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;table class=&quot;txc-table&quot; width=&quot;893&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; style=&quot;border: none; border-collapse: collapse; width: 893px;&quot; 맑은=&quot;&quot; 고딕&quot;,=&quot;&quot; sans-serif;font-size:19px&quot;=&quot;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;width: 245px; height: 24px; border-width: 1px; border-style: solid; border-color: rgb(204, 204, 204);&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;used to 동사&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;원형&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td style=&quot;width: 647px; height: 24px; border-bottom: 1px solid rgb(204, 204, 204); border-right: 1px solid rgb(204, 204, 204); border-top: 1px solid rgb(204, 204, 204);&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;~ 하곤 했다.&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt; 과거 시제로만 사용되며 현재는 그렇지 않다는 것을 말한다.&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;동사 use의 뜻이 사용된다.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;width: 245px; height: 47px; border-bottom: 1px solid rgb(204, 204, 204); border-right: 1px solid rgb(204, 204, 204); border-left: 1px solid rgb(204, 204, 204);&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;be used to 동사원형&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td style=&quot;width: 647px; height: 47px; border-bottom: 1px solid rgb(204, 204, 204); border-right: 1px solid rgb(204, 204, 204);&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;~ 하는데 사용되다, ~ 하는데 쓰여지다.&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;수동태로 사용되며 동사 use의 뜻이 사용된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;width: 245px; height: 47px; border-bottom: 1px solid rgb(204, 204, 204); border-right: 1px solid rgb(204, 204, 204); border-left: 1px solid rgb(204, 204, 204);&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;be used to 명사 / 동명사&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td style=&quot;width: 647px; height: 47px; border-bottom: 1px solid rgb(204, 204, 204); border-right: 1px solid rgb(204, 204, 204);&quot;&gt;&lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;~ 하는데 익숙하다, ~에 익숙하다.&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;형용사 used의 익숙한 뜻을 알게되면 해석하기 쉽다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span style=&quot;color: rgb(255, 0, 0); font-size: 14pt;&quot;&gt;used to 예문&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;I didn't used to listen to my father.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;나는 아빠 말을 잘 안 듣곤 했어(지금은 잘 듣는다&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;My brother often used to pick on me.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;우리형은 날 자주 괴롭히곤 했어(지금은 안 괴롭힌다)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span style=&quot;color: rgb(255, 0, 0); font-size: 14pt;&quot;&gt;be used to 명사 / 동명사 예문&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;This is used to make a bread&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;빵 만드는데 사용된다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;What is this used to do?&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;뭐 하는데 사용되?&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span style=&quot;color: rgb(255, 0, 0); font-size: 14pt;&quot;&gt;be used to 동사원형 예문&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;I'm used to getting up early.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;일찍 일어나는데 익숙하다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;I'm used to cooking.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;나는 요리하는데 익숙하다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>영어 공부/영어 문법</category>
      <category>be used to</category>
      <category>used to</category>
      <author>ktko</author>
      <guid isPermaLink="true">https://ktko.tistory.com/398</guid>
      <comments>https://ktko.tistory.com/entry/used-to-be-used-to-get-used-to-%EB%B9%84%EA%B5%90-%EB%B0%8F-%EC%A0%95%EB%A6%AC#entry398comment</comments>
      <pubDate>Thu, 16 Jan 2020 12:50:53 +0900</pubDate>
    </item>
    <item>
      <title>감각동사와 지각동사</title>
      <link>https://ktko.tistory.com/entry/%EA%B0%90%EA%B0%81%EB%8F%99%EC%82%AC%EC%99%80-%EC%A7%80%EA%B0%81%EB%8F%99%EC%82%AC</link>
      <description>&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b style=&quot;color: rgb(255, 0, 0);&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;감각동사는 사람의 오감을 나타내는 동사를 말한다.&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;감각동사 종류(2형식)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;table class=&quot;txc-table&quot; width=&quot;899&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; style=&quot;border: none; border-collapse: collapse; width: 900px;&quot; 맑은=&quot;&quot; 고딕&quot;,=&quot;&quot; sans-serif;font-size:19px&quot;=&quot;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;width: 898px; height: 24px; border-width: 1px; border-style: solid; border-color: rgb(204, 204, 204);&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;look(~처럼 보이다)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;sound(~처럼 들리다)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;smell(~한 냄새가 나다)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;taste(~한 맛이 나다)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;fee&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;l(~하게 느껴지다)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;사용법 : 감각동사 + 형용사&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;이렇게 5개의 단어가 감각동사로 많이 쓰이며 look, sound는 지각동사로는 쓰이지 않고 감각동사로만 사&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;용 된다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;감각동사는 2형식으로 주격보&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;어가 나오며, 주격보어로 형용사가 제일 많이 나온다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;table class=&quot;txc-table&quot; width=&quot;899&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; style=&quot;border: none; border-collapse: collapse; width: 899px;&quot; 맑은=&quot;&quot; 고딕&quot;,=&quot;&quot; sans-serif;font-size:19px&quot;=&quot;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;width: 898px; height: 24px; border-width: 1px; border-style: solid; border-color: rgb(204, 204, 204);&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Theo looks happy&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;테오는 행복해 보인다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;The bread smells good.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;그 빵은 좋은 냄새가 난다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;The story sound good.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;그 이야기가 좋다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;The bread&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;taste good.&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;그 빵은 맛이 좋다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;The cloth felt smooth.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;그 천은 부드럽게 느껴졌다.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span style=&quot;color: rgb(255, 0, 0); font-size: 14pt;&quot;&gt;지각동사는 사람의 감각기관을 통해 인식하는 동사를 말한다.&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;지각동사 종류&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;style type=&quot;text/css&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;lt;!--td {border: 1px solid #ccc;}br {mso-data-placement:same-cell;}--&amp;gt;&lt;/span&gt;&lt;/style&gt;&lt;/p&gt;&lt;table xmlns=&quot;http://www.w3.org/1999/xhtml&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; dir=&quot;ltr&quot; border=&quot;1&quot; style=&quot;table-layout: fixed; font-size: 10pt; font-family: arial, sans, sans-serif; width: 897px; border-collapse: collapse; border: none;&quot; width=&quot;897&quot;&gt;&lt;colgroup&gt;&lt;col width=&quot;100&quot;&gt;&lt;col width=&quot;100&quot;&gt;&lt;col width=&quot;100&quot;&gt;&lt;col width=&quot;100&quot;&gt;&lt;/colgroup&gt;&lt;tbody&gt;&lt;tr style=&quot;height:21px;&quot;&gt;&lt;td style=&quot;overflow:hidden;padding:2px 3px 2px 3px;vertical-align:middle;text-align:center;&quot; rowspan=&quot;5&quot; colspan=&quot;1&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;시각&amp;quot;}&quot;&gt;&lt;div style=&quot;max-height:105px&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;시각&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;overflow: hidden; padding: 2px 3px; vertical-align: bottom; width: 190px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;see&amp;quot;}&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;see&lt;/span&gt;&lt;/td&gt;&lt;td style=&quot;overflow: hidden; padding: 2px 3px; vertical-align: middle; text-align: center; width: 290px;&quot; rowspan=&quot;4&quot; colspan=&quot;1&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;3, 5형식&amp;quot;}&quot;&gt;&lt;div style=&quot;max-height:84px&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3, 5형식&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;overflow: hidden; padding: 2px 3px; vertical-align: middle; text-align: center; width: 175px;&quot; rowspan=&quot;5&quot; colspan=&quot;1&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;~을 보다\n인지하다&amp;quot;}&quot;&gt;&lt;div style=&quot;max-height:105px&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;~을 보다&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;인지하다&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height:21px;&quot;&gt;&lt;td style=&quot;overflow: hidden; padding: 2px 3px; vertical-align: bottom; width: 190px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;watch&amp;quot;}&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;watch&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height:21px;&quot;&gt;&lt;td style=&quot;overflow: hidden; padding: 2px 3px; vertical-align: bottom; height: 28px; width: 190px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;notice&amp;quot;}&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;notice&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height:21px;&quot;&gt;&lt;td style=&quot;overflow: hidden; padding: 2px 3px; vertical-align: bottom; width: 190px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;observe&amp;quot;}&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;observe&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height:21px;&quot;&gt;&lt;td style=&quot;overflow: hidden; padding: 2px 3px; vertical-align: bottom; width: 190px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;look at&amp;quot;}&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;look at&lt;/span&gt;&lt;/td&gt;&lt;td style=&quot;overflow: hidden; padding: 2px 3px; vertical-align: bottom; text-align: center; width: 290px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;3형식&amp;quot;}&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3형식&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height:21px;&quot;&gt;&lt;td style=&quot;overflow:hidden;padding:2px 3px 2px 3px;vertical-align:middle;text-align:center;&quot; rowspan=&quot;2&quot; colspan=&quot;1&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;청각&amp;quot;}&quot;&gt;&lt;div style=&quot;max-height:42px&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;청각&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;overflow: hidden; padding: 2px 3px; vertical-align: bottom; width: 190px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;hear&amp;quot;}&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;hear&lt;/span&gt;&lt;/td&gt;&lt;td style=&quot;overflow: hidden; padding: 2px 3px; vertical-align: bottom; text-align: center; width: 290px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;3, 5형식&amp;quot;}&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3, 5형식&lt;/span&gt;&lt;/td&gt;&lt;td style=&quot;overflow: hidden; padding: 2px 3px; vertical-align: middle; text-align: center; width: 175px;&quot; rowspan=&quot;2&quot; colspan=&quot;1&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;~을 듣다&amp;quot;}&quot;&gt;&lt;div style=&quot;max-height:42px&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;~을 듣다&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height:21px;&quot;&gt;&lt;td style=&quot;overflow: hidden; padding: 2px 3px; vertical-align: bottom; width: 190px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;listen to&amp;quot;}&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;listen to&lt;/span&gt;&lt;/td&gt;&lt;td style=&quot;overflow: hidden; padding: 2px 3px; vertical-align: bottom; text-align: center; width: 290px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;3 형식&amp;quot;}&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3 형식&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height:21px;&quot;&gt;&lt;td style=&quot;overflow:hidden;padding:2px 3px 2px 3px;vertical-align:bottom;text-align:center;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;촉각&amp;quot;}&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;촉각&lt;/span&gt;&lt;/td&gt;&lt;td style=&quot;overflow: hidden; padding: 2px 3px; vertical-align: bottom; width: 190px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;feel&amp;quot;}&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;feel&lt;/span&gt;&lt;/td&gt;&lt;td style=&quot;overflow: hidden; padding: 2px 3px; vertical-align: bottom; text-align: center; width: 290px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;3,5형식&amp;quot;}&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3,5형식&lt;/span&gt;&lt;/td&gt;&lt;td style=&quot;overflow: hidden; padding: 2px 3px; vertical-align: bottom; text-align: center; width: 175px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;~을 느끼다.&amp;quot;}&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;~을 느끼다.&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;이 외에도 smell, taste 등등이 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;지각동사 뒤에는 목적어와 목적어 보충 설명을 해주는 5형식이 많이 쓰여진다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;table class=&quot;txc-table&quot; width=&quot;897&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; style=&quot;border: none; border-collapse: collapse; width: 897px;&quot; 맑은=&quot;&quot; 고딕&quot;,=&quot;&quot; sans-serif;font-size:19px&quot;=&quot;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;width: 896px; height: 24px; border-width: 1px; border-style: solid; border-color: rgb(204, 204, 204);&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;I saw her dance.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;나는 그녀가 춤추는 것을 보았다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;I saw him enter the house.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;나는 너가 집에 들어가는 것을 보았다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;I heard her play the piano.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;나는 그녀가 피아노 치는 것을 들었다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;I felt my room shake last night.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;나는 내 방이 흔들리는 것을 느꼈다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;I saw him run.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;그가 달리는 것을 보았다.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;복습을 하기 위해 5형식을 다시 정리해보자면 아래와 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;table class=&quot;txc-table&quot; width=&quot;964&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; style=&quot;border:none;border-collapse:collapse;;font-family:&quot; 맑은=&quot;&quot; 고딕&quot;,=&quot;&quot; sans-serif;font-size:19px&quot;=&quot;&quot;&gt;&lt;/table&gt;&lt;table class=&quot;txc-table&quot; width=&quot;896&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; 맑은=&quot;&quot; 고딕&quot;,=&quot;&quot; sans-serif;font-size:19px&quot;=&quot;&quot; style=&quot;border: none; border-collapse: collapse; width: 896px;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;width: 895px; height: 24px; border-width: 1px; border-style: solid; border-color: rgb(204, 204, 204);&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;주어 + 동사 + 목적어 + (목적격)보어&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;table class=&quot;txc-table&quot; width=&quot;898&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; 맑은=&quot;&quot; 고딕&quot;,=&quot;&quot; sans-serif;font-size:19px&quot;=&quot;&quot; style=&quot;border: none; border-collapse: collapse; width: 898px;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;width: 897px; height: 24px; border-width: 1px; border-style: solid; border-color: rgb(204, 204, 204);&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;I&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;saw&amp;nbsp; &amp;nbsp; &amp;nbsp; her&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;dance&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;주어 &amp;nbsp; 동사&amp;nbsp; &amp;nbsp; &amp;nbsp; 목적어&amp;nbsp; &amp;nbsp; (목적격)보어&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;블로그 설명중에 지각동사로 5형식을 사용할 때&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: rgb(255, 0, 0); font-size: 14pt;&quot;&gt;목적격 보어에 동사원형이 되어 있다고 했는데 찾아보니 형태가 다양하게 들어올 수 있다.&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;table class=&quot;txc-table&quot; width=&quot;899&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; style=&quot;border: none; border-collapse: collapse; width: 899px;&quot; 맑은=&quot;&quot; 고딕&quot;,=&quot;&quot; sans-serif;font-size:19px&quot;=&quot;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;width: 898px; height: 24px; border-width: 1px; border-style: solid; border-color: rgb(204, 204, 204);&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;주어 + 동사 + 목적어 + (목적격) 보어&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 명사&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 형용사&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;과거분사&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;현재분사&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;동사원형(원형부정사)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;table class=&quot;txc-table&quot; width=&quot;901&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; style=&quot;border: none; border-collapse: collapse; width: 901px;&quot; 맑은=&quot;&quot; 고딕&quot;,=&quot;&quot; sans-serif;font-size:19px&quot;=&quot;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;width: 900px; height: 24px; border-width: 1px; border-style: solid; border-color: rgb(204, 204, 204);&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;I saw her dancing. (현재분사)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;그녀가 춤추고 있는 것을 보았다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;I saw him entering the house. (현재분사)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;그가 집에 들어가고 있는 것을 보았다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;I heard her playing the piano. (현재분사)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;그녀가 피아노 치고 있는 것을 들었다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;I felt my room shaking last night. (현재분사)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;나는 내 방이 흔들리고 있는 것을 느꼈다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;I heard my name called (과거분사)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;나는 내이름이 불린 것을 들었다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;I saw her dead. (형용사)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;나는 그녀가 죽은 것을 보았다.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>영어 공부/영어 문법</category>
      <category>감각동사</category>
      <category>지각동사</category>
      <author>ktko</author>
      <guid isPermaLink="true">https://ktko.tistory.com/394</guid>
      <comments>https://ktko.tistory.com/entry/%EA%B0%90%EA%B0%81%EB%8F%99%EC%82%AC%EC%99%80-%EC%A7%80%EA%B0%81%EB%8F%99%EC%82%AC#entry394comment</comments>
      <pubDate>Tue, 14 Jan 2020 00:31:32 +0900</pubDate>
    </item>
    <item>
      <title>영어 5형식 구조</title>
      <link>https://ktko.tistory.com/entry/%EC%98%81%EC%96%B4-5%ED%98%95%EC%8B%9D-%EA%B5%AC%EC%A1%B0</link>
      <description>&lt;p&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;문장 성분으로 본 5형식 구조&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;table class=&quot;txc-table&quot; width=&quot;964&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; style=&quot;border:none;border-collapse:collapse;;font-family:&quot; 맑은=&quot;&quot; 고딕&quot;,=&quot;&quot; sans-serif;font-size:19px&quot;=&quot;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;width:964;height:24;border-bottom:1px solid #ccc;border-right:1px solid #ccc;border-top:1px solid #ccc;border-left:1px solid #ccc;;&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1형식 : 주어 + (자)동사&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2형식 : 주어 + (자)동사 + 보어&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3형식 : 주어 + (타)동사 + 목적어&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4형식 : 주어 + (타)동사 + 간접목적어 + 직접목적어&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5형식 : 주어 + (타)동사 + 목적어 + 보어&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;자동사는 동사가 주어에게 영향을 준다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;반면에 타동사는 동사가 목적어 등에 영향을 준다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;품사로 본 5형식 구조&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;table class=&quot;txc-table&quot; width=&quot;964&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; style=&quot;border:none;border-collapse:collapse;;font-family:&quot; 맑은=&quot;&quot; 고딕&quot;,=&quot;&quot; sans-serif;font-size:19px&quot;=&quot;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;width:964;height:24;border-bottom:1px solid #ccc;border-right:1px solid #ccc;border-top:1px solid #ccc;border-left:1px solid #ccc;;&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1형식 : 명사 + (자)동사&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2형식 : 명사 + (자)동사 + 명사/형용사&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3형식 : 명사 + (타)동사 + 명사&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4형식 : 명사 + 동사 + 명사 + 명사&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5형식 : 명사 + 동사 + 명사 + 명사/형용사&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5형식 해석하기&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1형식 :&amp;nbsp;~은,는,이,가 + ~다&lt;/span&gt;&lt;/p&gt;&lt;table class=&quot;txc-table&quot; width=&quot;964&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; style=&quot;border:none;border-collapse:collapse;;font-family:&quot; 맑은=&quot;&quot; 고딕&quot;,=&quot;&quot; sans-serif;font-size:19px&quot;=&quot;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;width:964;height:24;border-bottom:1px solid #ccc;border-right:1px solid #ccc;border-top:1px solid #ccc;border-left:1px solid #ccc;;&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;I sleep&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;나는 잔다 &lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2형식 :&amp;nbsp;~은,는,이,가 + ~다 + ~인,~한 등&lt;/span&gt;&lt;/p&gt;&lt;table class=&quot;txc-table&quot; width=&quot;964&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; style=&quot;border:none;border-collapse:collapse;;font-family:&quot; 맑은=&quot;&quot; 고딕&quot;,=&quot;&quot; sans-serif;font-size:19px&quot;=&quot;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;width:964;height:24;border-bottom:1px solid #ccc;border-right:1px solid #ccc;border-top:1px solid #ccc;border-left:1px solid #ccc;;&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;She is beautiful&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;그녀는 아름답다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Theo is Programmer&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;테오는 프로그래머다.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3형식 :&amp;nbsp;~은,는,이,가 + ~다 + ~을, 를&lt;/span&gt;&lt;/p&gt;&lt;table class=&quot;txc-table&quot; width=&quot;964&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; style=&quot;border:none;border-collapse:collapse;;font-family:&quot; 맑은=&quot;&quot; 고딕&quot;,=&quot;&quot; sans-serif;font-size:19px&quot;=&quot;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;width: 964px; height: 47px; border-width: 1px; border-style: solid; border-color: rgb(204, 204, 204);&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;I love you&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;나는 너를 사랑한다.&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;I ate an apple&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;나는 사과를 먹었다.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4형식 :&amp;nbsp;~은,는,이,가 + ~다 + ~에게 + ~을,를&lt;/span&gt;&lt;/p&gt;&lt;table class=&quot;txc-table&quot; width=&quot;964&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; style=&quot;border:none;border-collapse:collapse;;font-family:&quot; 맑은=&quot;&quot; 고딕&quot;,=&quot;&quot; sans-serif;font-size:19px&quot;=&quot;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;width:964;height:24;border-bottom:1px solid #ccc;border-right:1px solid #ccc;border-top:1px solid #ccc;border-left:1px solid #ccc;;&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;He made me cookies&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;그는 나에게 쿠키를 만들어주었다.&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;me는 간접목적어, cookies는 직접목적어가 된다.&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5형식 :&amp;nbsp;~은,는,이,가 + ~다 + ~를 + ~하도록,~하게 등&lt;/span&gt;&lt;/p&gt;&lt;table class=&quot;txc-table&quot; width=&quot;964&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; style=&quot;border:none;border-collapse:collapse;;font-family:&quot; 맑은=&quot;&quot; 고딕&quot;,=&quot;&quot; sans-serif;font-size:19px&quot;=&quot;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;width:964;height:24;border-bottom:1px solid #ccc;border-right:1px solid #ccc;border-top:1px solid #ccc;border-left:1px solid #ccc;;&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;He made me crazy&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;그는 나를 미치게 만들었다.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5형식은 사역동사/지각동사를 더 공부해야되는데, 공부해서 포스팅해야겠다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;</description>
      <category>영어 공부/영어 문법</category>
      <category>5형식</category>
      <category>5형식 문장 구조</category>
      <author>ktko</author>
      <guid isPermaLink="true">https://ktko.tistory.com/393</guid>
      <comments>https://ktko.tistory.com/entry/%EC%98%81%EC%96%B4-5%ED%98%95%EC%8B%9D-%EA%B5%AC%EC%A1%B0#entry393comment</comments>
      <pubDate>Mon, 13 Jan 2020 00:17:34 +0900</pubDate>
    </item>
    <item>
      <title>as 해석 쉽게 해보기</title>
      <link>https://ktko.tistory.com/entry/as-%ED%95%B4%EC%84%9D-%EC%89%BD%EA%B2%8C-%ED%95%B4%EB%B3%B4%EA%B8%B0</link>
      <description>&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;부사, 전치사, 접속사로 사용되는 as는 8가지의 뜻을 가지고 있는데 쉽게 해석할 수 있는 방법이 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;그 방법은.. as&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;를 해석할 때 (equal), = 이라는 큰 틀을 가지고 생각하자.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;~ 처럼 (전치사)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;table class=&quot;txc-table&quot; width=&quot;964&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; style=&quot;border:none;border-collapse:collapse;;font-family:&quot; 맑은=&quot;&quot; 고딕&quot;,=&quot;&quot; sans-serif;font-size:19px&quot;=&quot;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;width:964;height:24;border-bottom:1px solid #ccc;border-right:1px solid #ccc;border-top:1px solid #ccc;border-left:1px solid #ccc;;&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Theo was dressed as Diablo&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;테오는 옷을 입었다. 디아블로처럼&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Theo = Diablo&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;~ 로서 (전치사)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;table class=&quot;txc-table&quot; width=&quot;964&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; style=&quot;border:none;border-collapse:collapse;;font-family:&quot; 맑은=&quot;&quot; 고딕&quot;,=&quot;&quot; sans-serif;font-size:19px&quot;=&quot;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;width:964;height:24;border-bottom:1px solid #ccc;border-right:1px solid #ccc;border-top:1px solid #ccc;border-left:1px solid #ccc;;&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;As your friend, Can I give you advice ?&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;친구로서, 내가 너에게 충고를 해도 될까 ?&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Your friend = I&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;~ 듯이 (부사)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;table class=&quot;txc-table&quot; width=&quot;964&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; style=&quot;border:none;border-collapse:collapse;;font-family:&quot; 맑은=&quot;&quot; 고딕&quot;,=&quot;&quot; sans-serif;font-size:19px&quot;=&quot;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;width:964;height:24;border-bottom:1px solid #ccc;border-right:1px solid #ccc;border-top:1px solid #ccc;border-left:1px solid #ccc;;&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Theo worked hard today as always&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;테오는 항상 열심히 일했다 늘 그랬듯이.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;worked hard = always&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;항상 열심히 일한 것 = 항상 &lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;~ 만큼 ~한 (부사)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;table class=&quot;txc-table&quot; width=&quot;964&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; style=&quot;border:none;border-collapse:collapse;;font-family:&quot; 맑은=&quot;&quot; 고딕&quot;,=&quot;&quot; sans-serif;font-size:19px&quot;=&quot;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;width:964;height:24;border-bottom:1px solid #ccc;border-right:1px solid #ccc;border-top:1px solid #ccc;border-left:1px solid #ccc;;&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;I am as handsome as Saru&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;나는 사루 만큼 잘생겼다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;I = handsome = Saru&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;~ 하는 동안에 (접속사)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;table class=&quot;txc-table&quot; width=&quot;964&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; style=&quot;border:none;border-collapse:collapse;;font-family:&quot; 맑은=&quot;&quot; 고딕&quot;,=&quot;&quot; sans-serif;font-size:19px&quot;=&quot;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;width:964;height:24;border-bottom:1px solid #ccc;border-right:1px solid #ccc;border-top:1px solid #ccc;border-left:1px solid #ccc;;&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Theo studied english as saru cleaned the house&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;사루가 집을 청소하는 동안에 테오는 영어 공부를 했다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;여기서는 theo와 saru가 같다는 의미가 아니다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;시간대의 동등함을 나타내고 있다. 즉 공부했던 시간과 청소했던 시간이 동등함을 나타낸다.&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;~ 대로 (접속사)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;table class=&quot;txc-table&quot; width=&quot;964&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; style=&quot;border:none;border-collapse:collapse;;font-family:&quot; 맑은=&quot;&quot; 고딕&quot;,=&quot;&quot; sans-serif;font-size:19px&quot;=&quot;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;width:964;height:24;border-bottom:1px solid #ccc;border-right:1px solid #ccc;border-top:1px solid #ccc;border-left:1px solid #ccc;;&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;please do as I say&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;내가 말하는 대로 해주세요.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;내가 말하는(I say)와 해달라는(do)의 동등함을 나타낸다.&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;~ 듯이 (접속사)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;table class=&quot;txc-table&quot; width=&quot;964&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; style=&quot;border:none;border-collapse:collapse;;font-family:&quot; 맑은=&quot;&quot; 고딕&quot;,=&quot;&quot; sans-serif;font-size:19px&quot;=&quot;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;width:964;height:24;border-bottom:1px solid #ccc;border-right:1px solid #ccc;border-top:1px solid #ccc;border-left:1px solid #ccc;;&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;As you know. we need to finish this project soon.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;너가 알고 있듯이, 우리는 이 프로젝트를 빨리 끝내야 한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;you know = to finish this project soon.&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;~ 때문에 (접속사)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;table class=&quot;txc-table&quot; width=&quot;964&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; style=&quot;border:none;border-collapse:collapse;;font-family:&quot; 맑은=&quot;&quot; 고딕&quot;,=&quot;&quot; sans-serif;font-size:19px&quot;=&quot;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;width: 964px; height: 47px; border-width: 1px; border-style: solid; border-color: rgb(204, 204, 204);&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;I had to pay for the repairs as it was my fault.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;내가 한 실수 때문에 치료비를 지불해야 한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;원인과 결과가 한 묶음으로서 표현되었다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;내가 한 실수는 = 수리비의 지불&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>영어 공부/영어 문법</category>
      <category>AS 뜻</category>
      <category>as 번역</category>
      <category>as 해석</category>
      <author>ktko</author>
      <guid isPermaLink="true">https://ktko.tistory.com/391</guid>
      <comments>https://ktko.tistory.com/entry/as-%ED%95%B4%EC%84%9D-%EC%89%BD%EA%B2%8C-%ED%95%B4%EB%B3%B4%EA%B8%B0#entry391comment</comments>
      <pubDate>Sun, 12 Jan 2020 19:14:37 +0900</pubDate>
    </item>
    <item>
      <title>shoud, have to 차이에 대해서</title>
      <link>https://ktko.tistory.com/entry/shoud-have-to-%EC%B0%A8%EC%9D%B4%EC%97%90-%EB%8C%80%ED%95%B4%EC%84%9C</link>
      <description>&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;I should go to work this saturday.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;이번주 토요일에 출근해야 돼라고 번역하면 should를 잘못 이해하는 것이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;have to(의무)&amp;nbsp;: ~해야되 / 해야된다는&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;should(권장의 의미) : ~ 하는게 좋겠어, ~하는게 좋을거야&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;I should go to work this saturday.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;나 이번주 토요일에 출근해야겠어/해야되겠어/하는게 좋을거야/하는게 좋겠어&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;I have to go work this saturday.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;나 이번주 토요일에 출근해야돼&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;don't have to&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;안해도 된다, 할 필요가 없다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;you don't have to come early&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;일찍 오지 않아도 된다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;I don't have to get up early tomorrow&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;내일 일찍 일어나지 않아도 된다. 내일 일찍 일어날 필요가 없다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;You don't have to worry about that&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;걱정할 필요가 없다. 걱정 안해도 된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;shouldn't(개인적인 충고/조언)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;~하지 않는게 좋겠다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;~하면 안된다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;~ 하지마&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;You shouldn't carry so much cash.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;많은 돈을 가지고 다니면 안된다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;You shouldn't take those vitamins so often&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;그&amp;nbsp;비타민을 자주 먹으면 안된다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;참고 :&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=UUTnXGIHi4c&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;https://www.youtube.com/watch?v=UUTnXGIHi4c&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>영어 공부/영어 문법</category>
      <author>ktko</author>
      <guid isPermaLink="true">https://ktko.tistory.com/388</guid>
      <comments>https://ktko.tistory.com/entry/shoud-have-to-%EC%B0%A8%EC%9D%B4%EC%97%90-%EB%8C%80%ED%95%B4%EC%84%9C#entry388comment</comments>
      <pubDate>Thu, 9 Jan 2020 13:50:27 +0900</pubDate>
    </item>
  </channel>
</rss>