<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>코디잉</title>
    <link>https://yong-codinglog.tistory.com/</link>
    <description>ღ'ᴗ'ღ 공부한 거 기록</description>
    <language>ko</language>
    <pubDate>Mon, 27 Jul 2026 19:05:55 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>yong_ღ'ᴗ'ღ</managingEditor>
    <image>
      <title>코디잉</title>
      <url>https://tistory1.daumcdn.net/tistory/5543246/attach/d306767da7ef4c21a58a067f69844c51</url>
      <link>https://yong-codinglog.tistory.com</link>
    </image>
    <item>
      <title>리터럴(Literal)이란 무엇이고, 타입은 어떻게 결정될까?</title>
      <link>https://yong-codinglog.tistory.com/275</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;자바 기본 문법을 공부하다 보면 &amp;lsquo;&lt;b&gt;리터럴(Literal)&lt;/b&gt;&amp;rsquo;이라는 용어를 접하게 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이번 글에서는 리터럴의 개념과 자바에서 리터럴의 타입이 어떻게 결정되는지를 정리해본다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;  리터럴(Literal)이란? &lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;리터럴(Literal)은 &lt;i&gt;코드에 개발자가 직접 작성한 &lt;b&gt;고정된 값 &lt;/b&gt;&lt;/i&gt;을 의미한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1766034740828&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;int a = 100;
boolean b = true;
String c = &quot;Hello&quot;;&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;br /&gt;위 코드에서 &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;span style=&quot;background-color: #dddddd;&quot;&gt;100&lt;/span&gt;, &lt;span style=&quot;background-color: #dddddd;&quot;&gt;true&lt;/span&gt;, &lt;span style=&quot;background-color: #dddddd;&quot;&gt;&quot;Hello&quot;&lt;/span&gt;와 같이&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;b&gt;코드에 직접 작성된 값&lt;/b&gt;들이 모두 리터럴이다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;리터럴 자체는 변하지 않는다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;  &amp;ldquo;값은 바뀔 수 있는 거 아닌가?&amp;rdquo; &lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;여기서 이런 의문이 든다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;i&gt; &lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;'리터럴 자체는 변하지 않는다고?&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;i&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;그런데 값은 바뀌잖아?&quot;&lt;/span&gt; &lt;/i&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1766038599389&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;int a = 100;
a = 200;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;위 코드를 보면 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;background-color: #dddddd;&quot;&gt;a&lt;/span&gt;의 값이 바뀌었으니&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;리터럴도 바뀐 것처럼 느껴질 수 있다.&lt;/span&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;&lt;span style=&quot;color: #000000;&quot;&gt;하지만 실제로는 그렇지 않다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1766038782685&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;int a = 100;
//  --  ----
// 변수 리터럴&lt;/code&gt;&lt;/pre&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;span style=&quot;color: #000000;&quot;&gt;이후 &lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1766038832173&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;a = 200;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이 실행되면,&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&amp;nbsp; ◽&amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; 리터럴 &lt;span style=&quot;background-color: #dddddd;&quot;&gt;100&lt;/span&gt;이 바뀌는 것이 아니라&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&amp;nbsp; ◽&amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; &lt;b&gt;&lt;u&gt;새로운 리터럴&lt;/u&gt; &lt;span style=&quot;background-color: #dddddd;&quot;&gt;200&lt;/span&gt;이 변수 &lt;span style=&quot;background-color: #dddddd;&quot;&gt;a&lt;/span&gt;에 할당되는 것&lt;/b&gt;이다.&lt;/span&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;&lt;b&gt; &lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;변수의 값은 변할 수 있지만, 리터럴 자체는 변하지 않는다.&lt;/span&gt; &lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;  정수 / 실수 리터럴의 기본 타입 &lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;자바에서는 &lt;b&gt;리터럴의 종류에 따라 기본으로 선택되는 타입&lt;/b&gt;이 정해져 있다.&lt;/span&gt;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt; ✔ 정수 리터럴&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&amp;nbsp; ◽&amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;span&gt; 기본 타입: &lt;span style=&quot;background-color: #dddddd; color: #000000; text-align: start;&quot;&gt;int&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&amp;nbsp; ◽&amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;span&gt;&lt;span&gt; &lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: #dddddd; color: #000000; text-align: start;&quot;&gt;int&lt;/span&gt; &lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;범위 내에서는 접미사 없이 사용 가능&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1766039378166&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;int a = 100;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&amp;nbsp; ◽ &lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&amp;nbsp;&lt;span&gt; &amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;span&gt;&lt;span style=&quot;background-color: #dddddd; color: #000000; text-align: start;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;범위를 초과하는 값은 &lt;span style=&quot;background-color: #dddddd;&quot;&gt;l 또는 L&lt;/span&gt;을 붙여 &lt;span style=&quot;background-color: #dddddd;&quot;&gt;long&lt;/span&gt; 리터럴로 명시해야 한다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1766039394640&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;long b = 3000000000L;&lt;/code&gt;&lt;/pre&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;✔ 실수 리터럴&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&amp;nbsp; ◽&amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;기본 타입:&lt;span&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #dddddd; color: #000000; text-align: start;&quot;&gt;double&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&amp;nbsp; ◽&amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #dddddd; color: #000000; text-align: start;&quot;&gt;float&lt;/span&gt;&lt;span&gt; 을 사용하려면 &lt;span style=&quot;background-color: #dddddd;&quot;&gt;f&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt; 또는 &lt;/span&gt;F&lt;/span&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;를 붙여야 한다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1766039497221&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;double d = 3.14;
float f = 3.14f;&lt;/code&gt;&lt;/pre&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;✔ 기타 리터럴&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&amp;nbsp; ◽&amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;span&gt;&lt;span&gt; &lt;span style=&quot;background-color: #dddddd;&quot;&gt;true&lt;/span&gt;, &lt;span style=&quot;background-color: #dddddd;&quot;&gt;false&lt;/span&gt; &amp;rarr; &lt;span style=&quot;background-color: #dddddd;&quot;&gt;boolean&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;span&gt;&lt;span style=&quot;background-color: #dddddd; color: #000000; text-align: start;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&amp;nbsp; ◽ &lt;span&gt;&amp;nbsp; &lt;span style=&quot;background-color: #dddddd;&quot;&gt;'a'&lt;/span&gt; &amp;rarr; &lt;span style=&quot;background-color: #dddddd;&quot;&gt;char&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&amp;nbsp; ◽&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;span&gt;&lt;span&gt; &lt;span style=&quot;background-color: #dddddd;&quot;&gt;&quot;Hello&quot;&lt;/span&gt; &amp;rarr; &lt;span style=&quot;background-color: #dddddd;&quot;&gt;String&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt; &lt;span style=&quot;background-color: #dddddd;&quot;&gt; long a = 111;&lt;/span&gt; 과 &lt;span style=&quot;background-color: #dddddd;&quot;&gt;long a = 111L&lt;/span&gt;&amp;nbsp;의 차이 &lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;아래 두 코드는 모두 정상적으로 컴파일된다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1766041276210&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;long a = 111;
long b = 111L;&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;그렇다면 이 둘의 차이는 무엇일까?&lt;/span&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;  &lt;span style=&quot;background-color: #dddddd;&quot;&gt;long a = 111;&lt;/span&gt; 은 어떻게 처리될까?&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1766041424963&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;long a = 111;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;&amp;nbsp; (1) &lt;span style=&quot;background-color: #dddddd;&quot;&gt;111&lt;/span&gt;은 &lt;b&gt;정수 리터럴&lt;/b&gt;이므로 기본적으로 &lt;span style=&quot;background-color: #dddddd;&quot;&gt;int&lt;/span&gt; 타입으로 해석된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;&amp;nbsp; (2) &lt;span style=&quot;background-color: #dddddd;&quot;&gt;int &amp;rarr; long&lt;/span&gt; 은 &lt;b&gt;자동형변환&lt;/b&gt;이 가능하다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt; &lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;&amp;nbsp; (3) 따라서 컴파일러는 이를 문제없이 허용한다.&lt;/span&gt;&lt;/span&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;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;이 과정은 &lt;b&gt;컴파일 타임에 타입을 해석하는 단계&lt;/b&gt;이며,&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;리터럴 111을 보고 &lt;span style=&quot;background-color: #dddddd;&quot;&gt;int&lt;/span&gt; 메모리를 잡았다가&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt; long type 변수인 a를 본 후, 다시 &lt;span style=&quot;background-color: #dddddd;&quot;&gt;long&lt;/span&gt;으로 바꾸는 과정은 없다.&amp;nbsp;&lt;/span&gt;&lt;/span&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;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;실행 시에는 &lt;span style=&quot;background-color: #dddddd;&quot;&gt;a&lt;/span&gt;가 &lt;b&gt;long type 메모리(8byte)&lt;/b&gt;를 사용한다.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;  &lt;span style=&quot;background-color: #dddddd;&quot;&gt;long b = 111L;&lt;/span&gt; 은 무엇이 다를까?&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1766041438890&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;long b = 111L;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&amp;nbsp; ◽&amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #dddddd;&quot;&gt;111&lt;/span&gt;을 처음부터 &lt;b&gt;long 리터럴로 명시&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&amp;nbsp; ◽&amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;span&gt;&lt;span&gt; 컴파일러가 &lt;span style=&quot;background-color: #dddddd;&quot;&gt;int&lt;/span&gt;로 해석하지 않는다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;span&gt;&lt;span&gt;실행 결과나 성능 차이는 없지만, &lt;b&gt;타입 의도가 더 명확해진다.&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;⚠️ 큰 정수 리터럴과 &lt;span style=&quot;background-color: #dddddd;&quot;&gt;L&lt;/span&gt; 접미사 &lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;아래 코드는 컴파일 에러가 발생한다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1766041778839&quot; class=&quot;java&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;long a = 3000000000;	// (30억) 컴파일 에러&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;이유는 간단하다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&amp;nbsp; ◽&amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;정수 리터럴은 기본적으로 int&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&amp;nbsp; ◽&amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;3000000000(30억)은 int 범위를 초과&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&amp;nbsp; ◽&amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;컴파일러는 자동으로&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: #dddddd;&quot;&gt;long&lt;/span&gt;으로 바꿔주지 않는다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;span&gt;&lt;span&gt;따라서 반드시 다음과 같이 명시해야 한다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1766041876410&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;long a = 3000000000L;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;✅ 그래서 어떤 방식이 더 나을까? &lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1766041718723&quot; class=&quot;java&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;java&quot;&gt;&lt;code&gt;long a = 111;
long b = 111L;&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;두 코드는&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&amp;nbsp; ◽&amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;실행결과 동일&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&amp;nbsp; ◽&amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;성능 동일&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&amp;nbsp; ◽&amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;메모리 사용 동일&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;b&gt;   기술적으로는 동일한 코드&lt;/b&gt;이다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;다만 실무에서는&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&amp;nbsp; ◽&amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt; 타입 의도가 명확하고&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&amp;nbsp; ◽&amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt; 값 변경 시 실수를 방지할 수 있기 때문에&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;background-color: #dddddd;&quot;&gt;L&lt;/span&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;접미사를 붙이는 방식을 더 선호한다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;  정리 &lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&amp;nbsp; ◽&amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;리터럴은 코드에 개발자가 직접 작성한 고정된 값이다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&amp;nbsp; ◽&amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;span&gt;&lt;span&gt; 변수의 값은 변할 수 있지만, 리터럴 자체는 변하지 않는다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&amp;nbsp; ◽&amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt; 자바에서는 리터럴의 종류에 따라 기본 타입이 정해져 있다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&amp;nbsp; ◽&amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;background-color: #dddddd;&quot;&gt; long a = 111;&lt;/span&gt;과 &lt;span style=&quot;background-color: #dddddd;&quot;&gt;long a = 111L;&lt;/span&gt;의 실행 결과는 동일하다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&amp;nbsp; ◽&amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt; 의도를 명확히 하기 위해 접미사 &lt;span style=&quot;background-color: #dddddd;&quot;&gt;L&lt;/span&gt;을 붙이는 것이 바람직하다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;  이 글은 인프런 김영한님의 자바 강의를 듣고,&lt;br /&gt;리터럴과 타입 결정 방식을 이해하기 위해 정리한 내용입니다.&lt;/blockquote&gt;</description>
      <category>CS/Java</category>
      <category>int</category>
      <category>Java</category>
      <category>literal</category>
      <category>long</category>
      <category>리터럴</category>
      <category>타입</category>
      <author>yong_ღ'ᴗ'ღ</author>
      <guid isPermaLink="true">https://yong-codinglog.tistory.com/275</guid>
      <comments>https://yong-codinglog.tistory.com/275#entry275comment</comments>
      <pubDate>Wed, 17 Dec 2025 12:09:29 +0900</pubDate>
    </item>
    <item>
      <title>초기화하지 않은 지역 변수를 사용할 수 없는 이유</title>
      <link>https://yong-codinglog.tistory.com/274</link>
      <description>&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;자바에서 지역 변수는 반드시 초기화한 후에 사용해야 한다.&lt;/span&gt;&lt;/b&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;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이 규칙은 자바를 처음 배울 때부터 자주 들었지만,&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;왜 이렇게까지 엄격하게 제한하는지 깊이 생각해보지 않고 넘어갔다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;초기화하지 않은 변수를 사용하면 어떻게 되고, &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;왜 자바에서는 이를 허용하지 않을까?&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;❗ 초기화하지 않은 지역변수 사용&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;자바에서는 &lt;b&gt;초기화하지 않은 지역변수&lt;/b&gt;를 읽거나 사용하려고 하면 &lt;b&gt;컴파일 에러&lt;/b&gt;가 발생한다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1766034155224&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;int local;
System.out.println(local);	// 컴파일 에러&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1766035507628&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;java: variable local might not have been initialized&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;  왜 이런 에러가 발생하는 걸까?&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;자바 컴파일러는 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;지역 변수가 &lt;b&gt;사용되기 전에&lt;/b&gt; &lt;b&gt;반드시 초기화되었다고 확실하게 판단할 수 없는 경우,&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;코드 실행 자체를 &lt;b&gt;허용하지 않는다&lt;/b&gt;.&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;참고: Definite Assignment(확정 할당) &lt;br /&gt;&lt;br /&gt;자바 컴파일러는 지역 변수가 사용되기 전에 반드시 초기화되었는지를 컴파일 타임에 정적으로 검사한다. 이 규칙을 Definite Assignment(확정 할당)라고 한다.&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;  &quot;확실하게 판단할 수 없는 경우&quot;란??&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;pre id=&quot;code_1766036024477&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;int local;

if (condition) {
    local = 10;
}

System.out.println(local);	// 컴파일 에러&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;위의 코드를 보면,&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&quot;condition이 true면 초기화되는데 왜 컴파일 에러 발생하지?&quot; &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;라고 생각할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;하지만 컴파일러 입장에서는&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt; &amp;nbsp; ◽&amp;nbsp; &lt;span style=&quot;text-align: start;&quot;&gt;&lt;span style=&quot;background-color: #dddddd;&quot;&gt;condition&lt;/span&gt;이 항상 true라는 보장이 없고,&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt; &amp;nbsp; ◽&amp;nbsp; 따라서 &lt;span style=&quot;background-color: #dddddd;&quot;&gt;local&lt;/span&gt;이 &lt;b&gt;항상 초기화된다고 확신할 수 없다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그래서 자바 컴파일러는 &lt;b&gt;실행 자체를 허용하지 않고 컴파일 에러를 발생시킨다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;에러 메시지를 다시 보자.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1766037651130&quot; class=&quot;gams&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;java&quot;&gt;&lt;code&gt;java: variable local might not have been initialized&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이것이 바로 에러 메시지에 나오는 &quot;&lt;u&gt;&lt;b&gt;might&lt;/b&gt; not &lt;b&gt;have&lt;/b&gt; been initializ&lt;b&gt;ed&lt;/b&gt;&lt;/u&gt;&quot; &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&quot;&lt;u&gt;초기화하지 않았을 &lt;b&gt;수도 있다&lt;/b&gt;&lt;/u&gt;&quot; 는 의미다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt; ️ 왜 이렇게 엄격할까?&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;자바는 실행 중 발생할 수 있는 오류를 가능한 한 컴파일 단계에서 차단한다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;초기화되지 않은 변수를 허용하면,&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;span style=&quot;background-color: #ffffff; text-align: start;&quot;&gt;&amp;nbsp; ◽&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;text-align: start;&quot;&gt; 어떤 값이 들어있을지 예측할 수 없고&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;span style=&quot;background-color: #ffffff; text-align: start;&quot;&gt;&amp;nbsp; ◽&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;text-align: start;&quot;&gt; 실행 결과가 환경에 따라 달라질 수 있으며&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;span style=&quot;background-color: #ffffff; text-align: start;&quot;&gt;&amp;nbsp; ◽&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;text-align: start;&quot;&gt; 디버깅이 매우 어려워진다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;자바는 이런 문제를 실행 시점이 아니라 &lt;b&gt;컴파일 시점에 차단&lt;/b&gt;한다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;C/C++ 계열 언어에서는 초기화되지 않은 지역 변수를 사용할 수 있지만, 그 값은 예측할 수 없다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;반면 자바에서는 그러한 상황이 발생하기 전에 컴파일 단계에서 코드 실행을 아예 차단한다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;  참고: 지역 변수 vs 멤버 변수 &lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;위 규칙은 &lt;b&gt;지역 변수에만 해당&lt;/b&gt;한다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;span style=&quot;background-color: #ffffff; text-align: start;&quot;&gt;&amp;nbsp; ◽&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;text-align: start;&quot;&gt; 지역 변수 &amp;rarr; 반드시 초기화 필요&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;span style=&quot;background-color: #ffffff; text-align: start;&quot;&gt;&amp;nbsp; ◽&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;text-align: start;&quot;&gt; 멤버 변수 / 클래스 변수 &amp;rarr; 자동으로 기본값으로 초기화&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;✍️ 정리 &lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;span style=&quot;background-color: #ffffff; text-align: start;&quot;&gt;&amp;nbsp; ◽&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;text-align: start;&quot;&gt; 자바에서는 초기화하지 않은 &lt;b&gt;지역 변수&lt;/b&gt;를 사용할 수 없다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;span style=&quot;background-color: #ffffff; text-align: start;&quot;&gt;&amp;nbsp; ◽&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;text-align: start;&quot;&gt; 이는 실행 중 오류를 방지하기 위한 &lt;b&gt;컴파일 타임 안전 장치&lt;/b&gt;다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;span style=&quot;background-color: #ffffff; text-align: start;&quot;&gt;&amp;nbsp; ◽&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;text-align: start;&quot;&gt; 자바 컴파일러는 &quot;이 변수가 확실히 초기화되었는가?&quot;를 기준으로 코드를 판단한다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;span style=&quot;background-color: #ffffff; text-align: start;&quot;&gt;&amp;nbsp; ◽&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;text-align: start;&quot;&gt; 확실하지 않다면, &lt;b&gt;컴파일 단계에서 실행 자체를 막는다.&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;  이 글은 인프런 김영한님의 자바 강의를 듣고,&lt;br /&gt;지역 변수 초기화 규칙을 다시 이해하며 정리한 내용입니다.&lt;/blockquote&gt;</description>
      <category>CS/Java</category>
      <category>Java</category>
      <category>변수</category>
      <category>지역변수</category>
      <category>컴파일</category>
      <author>yong_ღ'ᴗ'ღ</author>
      <guid isPermaLink="true">https://yong-codinglog.tistory.com/274</guid>
      <comments>https://yong-codinglog.tistory.com/274#entry274comment</comments>
      <pubDate>Tue, 16 Dec 2025 09:39:26 +0900</pubDate>
    </item>
    <item>
      <title>자바 프로그램은 어떻게 컴파일되고 실행될까?</title>
      <link>https://yong-codinglog.tistory.com/273</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;자바 프로그램의 컴파일과 실행 과정&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000; letter-spacing: 0px;&quot;&gt;자바 프로그램은 &lt;b&gt;컴파일 단계&lt;/b&gt;와 &lt;b&gt;실행 단계&lt;/b&gt;를 거쳐서 실행된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000; letter-spacing: 0px;&quot;&gt;그동안 이 흐름을 막연하게 알고 있었는데, &lt;/span&gt;&lt;span style=&quot;color: #000000; letter-spacing: 0px;&quot;&gt;다시 공부하고 정리하면서 IDE가 가려주던 실행 과정을 더 명확히 이해할 수 있었다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;div data-message-id=&quot;67492786-679c-4683-8f4e-db99ec923e4a&quot; data-message-author-role=&quot;user&quot;&gt;
&lt;div data-multiline=&quot;&quot;&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;   전체 흐름&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;div&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1837&quot; data-origin-height=&quot;660&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bqM3D7/dJMcabJxLPJ/Lp0tx2hRNkzThYMzHi1pV0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bqM3D7/dJMcabJxLPJ/Lp0tx2hRNkzThYMzHi1pV0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bqM3D7/dJMcabJxLPJ/Lp0tx2hRNkzThYMzHi1pV0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbqM3D7%2FdJMcabJxLPJ%2FLp0tx2hRNkzThYMzHi1pV0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1837&quot; height=&quot;660&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1837&quot; data-origin-height=&quot;660&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;자바 소스 코드(&lt;span style=&quot;background-color: #dddddd;&quot;&gt;Hello.java&lt;/span&gt;)는 &lt;span style=&quot;background-color: #dddddd;&quot;&gt;javac&lt;/span&gt; 컴파일러를 통해 바이트코드 파일(&lt;span style=&quot;background-color: #dddddd;&quot;&gt;Hello.class&lt;/span&gt;)로 컴파일된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이후 &lt;span style=&quot;background-color: #dddddd;&quot;&gt;java&lt;/span&gt; 명령을 실행하면 운영체제가&amp;nbsp;&lt;b&gt;JVM&amp;nbsp; 프로세스를 실행&lt;/b&gt;하고,&amp;nbsp;JVM은 &lt;span style=&quot;background-color: #dddddd;&quot;&gt;Hello.class&lt;/span&gt; 파일을 로드하여 &lt;b&gt;내부에서 실행&lt;/b&gt;한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;즉, 자바 프로그램을 실행한다는 것은&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;background-color: #dddddd;&quot;&gt;.class&lt;/span&gt; 파일을 직접 실행하는 것이 아니라&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;JVM을 실행하고 그 안에서 class 파일을 실행하는 것&lt;/b&gt;을 의미한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;  ️ 컴파일 단계 (javac)&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;자바 소스 코드는 &lt;span style=&quot;background-color: #dddddd;&quot;&gt;javac&lt;/span&gt; 컴파일러를 통해 컴파일된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1765977930282&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;javac 파일명.java
# 예: javac Hello.java&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이 과정에서 다음과 같은 작업이 수행된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; ◽&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;background-color: #dddddd;&quot;&gt;.java&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;파일이&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: #dddddd;&quot;&gt;.class&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;파일로 변환된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;&amp;nbsp; &lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;◽&lt;/span&gt; &amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;자바 소스 코드는 JVM이 이해할 수 있는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;바이트코드&lt;/b&gt;로 변환된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;&amp;nbsp; &lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;◽&lt;/span&gt; &amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;문법 오류, 타입 오류 등을 포함한&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;컴파일 타임 오류&lt;/b&gt;를 미리 검출할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;&amp;nbsp; &lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;◽&lt;/span&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;주석과 같은&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;소스 코드 수준의 메타 정보&lt;/b&gt;는 제거된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;컴파일 단계의 목적은&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;실행 전에 최대한 많은 오류를 잡고, JVM이 실행할 준비를 마치는 것&lt;/b&gt;이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt; ▶️ 실행 단계 (java)&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;컴파일된 &lt;span style=&quot;background-color: #dddddd;&quot;&gt;.class&lt;/span&gt; 파일은 &lt;span style=&quot;background-color: #dddddd;&quot;&gt;java&lt;/span&gt; 명령을 통해 실행한다.&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;
&lt;pre id=&quot;code_1765978035234&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;java 클래스명
# 예: java Hello&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이 명령을 실행하면 다음 순서로 동작한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; (1) 운영체제가 &lt;b&gt;JVM 프로세스&lt;/b&gt;를 실행한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; (2) JVM은 &lt;span style=&quot;background-color: #dddddd;&quot;&gt;Hello.class&lt;/span&gt; 파일을 로드한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; (3) 로드된 바이트코드를 실행한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt; ⚙️ JVM의 실행 방식 (인터프리터 &amp;amp; JIT)&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;JVM은 바이트코드를 실행할 때 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;인터프리터 방식&lt;/b&gt;과 &lt;b&gt;JIT(Just-In-Time) 컴파일 방식&lt;/b&gt;을 함께 사용한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;(&lt;b&gt;1) 처음 실행될 때&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;&amp;nbsp; ◽&amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; 인터프리터가 바이트코드를 한 줄씩 해석해서 실행한다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;&amp;nbsp; ◽&amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;span&gt; 빠르게 실행을 시작할 수 있지만 성능은 상대적으로 낮다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;(2) 실행 중 (Hot Spot 판단)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;&amp;nbsp; ◽&amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; JVM이 자주 실행되는 코드를 감지한다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;&amp;nbsp; ◽&amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; 해당 코드를 &lt;b&gt;JIT 컴파일&lt;/b&gt;을 통해 기계어로 변환한다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;(3) 이후 실행&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;&amp;nbsp; ◽&amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; 해석 없이 컴파일된 기계어로 바로 실행된다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;&amp;nbsp; ◽&amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;span&gt; 실행 성능이 향상된다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;즉, 하나의 코드는 실행 생애 동안&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;해석 &amp;rarr; JIT 컴파일 &amp;rarr; JIT 코드 실행&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이 흐름을 모두 거칠 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;div&gt;&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;✨ IDE가 해주는 일&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;IntelliJ와 같은 IDE에서 실행 버튼(Run)을 누르면, 컴파일과 실행 과정을 모두 자동으로 처리해준다.&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; ◽&amp;nbsp;&lt;span&gt; 내부적으로 &lt;span style=&quot;background-color: #dddddd;&quot;&gt;javac&lt;/span&gt;, &lt;span style=&quot;background-color: #dddddd;&quot;&gt;java&lt;/span&gt; 명령을 실행&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;&amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;◽&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt; 컴파일된 &lt;span style=&quot;background-color: #dddddd;&quot;&gt;.class&lt;/span&gt; 파일은 &lt;span style=&quot;background-color: #dddddd;&quot;&gt;out&lt;/span&gt; 디렉토리에 생성&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;span style=&quot;background-color: #dddddd; text-align: start;&quot;&gt;.class&lt;/span&gt; 파일은 바이트코드로 구성되어 사람이 직접 읽기 어렵지만,&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;IDE는 이를 &lt;b&gt;디컴파일&lt;/b&gt;하여 원본 자바 소스 코드와 &lt;b&gt;유사한 형태&lt;/b&gt;로 보여준다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;디컴파일된 코드는 실제 소스 코드가 아니며, 주석이나 일부 정보는 포함되지 않는다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;  이 글은 인프런 김영한님의 자바 강의를 듣고,&lt;br /&gt;자바 프로그램의 컴파일과 실행 과정을 다시 이해하며 정리한 내용입니다.&lt;/blockquote&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <category>CS/Java</category>
      <category>Java</category>
      <category>javac</category>
      <category>JIT</category>
      <category>JVM</category>
      <category>백엔드</category>
      <category>실행</category>
      <category>컴파일</category>
      <author>yong_ღ'ᴗ'ღ</author>
      <guid isPermaLink="true">https://yong-codinglog.tistory.com/273</guid>
      <comments>https://yong-codinglog.tistory.com/273#entry273comment</comments>
      <pubDate>Mon, 15 Dec 2025 22:24:41 +0900</pubDate>
    </item>
    <item>
      <title>[항해 Lite 백엔드 1기] 회사 병행하며 10주 항해 솔직 후기  </title>
      <link>https://yong-codinglog.tistory.com/272</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;항해.png&quot; data-origin-width=&quot;414&quot; data-origin-height=&quot;122&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ei4KvK/btsPLZj4usc/QT830847lgJp4IHgg10AX1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ei4KvK/btsPLZj4usc/QT830847lgJp4IHgg10AX1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ei4KvK/btsPLZj4usc/QT830847lgJp4IHgg10AX1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fei4KvK%2FbtsPLZj4usc%2FQT830847lgJp4IHgg10AX1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;502&quot; height=&quot;148&quot; data-filename=&quot;항해.png&quot; data-origin-width=&quot;414&quot; data-origin-height=&quot;122&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-start=&quot;165&quot; data-end=&quot;183&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt; &amp;zwj;  나는,&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-end=&quot;366&quot; data-start=&quot;184&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;올해로 &lt;b&gt;백엔드 개발 경력 1년 차를 넘긴&lt;/b&gt; 개발자로, 그동안 풀스택 개발을 경험했지만, 현재는 운영 업무를 맡고 있다.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;마음 한켠에는 &lt;b&gt;&quot;기본기가 부족하다&quot;&lt;/b&gt;는 생각이 늘 있었고, 여러 곳에서 많이 볼 수 있는 &lt;b&gt;TDD, Redis, Kafka, 대용량 트래픽 처리, 아키텍처 설계&lt;/b&gt; 같은 주제들을 직접 경험해 보고 싶었다.&lt;/span&gt;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-end=&quot;183&quot; data-start=&quot;165&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;   &lt;b&gt;시작 전 고민 &amp;amp; 항해 Lite 선택 이유 &lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-end=&quot;366&quot; data-start=&quot;184&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;퇴근 후 집에 오면 &lt;b&gt;&quot;공부해야지&quot;&lt;/b&gt;라는 생각은 가득했지만, 막상 실행으로 옮기는 건 쉽지 않았다. 공부할 건 정말정말 많고, 어떤 것부터 시작해야 할지도 막막했다.&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-end=&quot;366&quot; data-start=&quot;184&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;예전부터 항해 플러스를 해볼까 고민했지만, 직장과 병행하기엔 &lt;b&gt;빡세 보이는 커리큘럼과 금액&lt;/b&gt; 때문에 망설여졌다..ㅎㅎ&lt;/span&gt;&lt;/p&gt;
&lt;p data-end=&quot;366&quot; data-start=&quot;184&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;366&quot; data-start=&quot;184&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그러던 중 &lt;b&gt;퇴근 후 + 주말에 유연하게 참여할 수 있는&lt;/b&gt; 항해 Lite가 나왔고, 바로 참여를 결심했다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-end=&quot;366&quot; data-start=&quot;184&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;606&quot; data-start=&quot;589&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;무엇보다 10주간의 커리큘럼 구성이 마음에 들었고,&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;632&quot; data-start=&quot;607&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;시니어 멘토의 &lt;u&gt;&lt;b&gt;1:1 코드 리뷰&lt;/b&gt;&lt;/u&gt; 기회&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; 그리고 주차별 과제와 피드백을 통해 성장할 수 있는 구조가 매력적으로 다가왔다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &amp;lsquo;자율적이지만 반드시 제출해야 리뷰를 받을 수 있는&amp;rsquo; 시스템 덕분에, 강제성이 적더라도 꾸준히 학습을 이어갈 수 있을 거란 확신이 들었다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-end=&quot;679&quot; data-start=&quot;664&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;  10주간의 항해&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-end=&quot;775&quot; data-start=&quot;680&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;1주마다 &lt;b&gt;학습자료/강의 &amp;rarr; 공부 &amp;rarr; 과제 제출 &amp;rarr; 코드리뷰&lt;/b&gt;의 흐름을 반복했다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;10주간 열심히 참여해서 모든 과제를 제출하여 &lt;b&gt; &lt;/b&gt;ALL PASS &lt;/b&gt;를 받았다 (❁&amp;acute;◡`❁)&lt;/span&gt;&lt;/p&gt;
&lt;p data-end=&quot;775&quot; data-start=&quot;680&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;956&quot; data-start=&quot;777&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Lite 코스는 &amp;lsquo;유연형 1인 부트캠프&amp;rsquo;이기 때문에, &lt;b&gt;완벽하지 않더라도 과제를 꼭 제출해 코드 리뷰를 받는 의지&lt;/b&gt;가 중요한 것 같다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;자율성이 장점이지만, 의지가 약하면 흐지부지될 수 있다는 점...ㅎㅎ!!! 이건 다른 것도 마찬가지겠지만, 과제를 점점 놓치게 되면 할게 산더미처럼 쌓여 나중에는...많이 힘들어질 수 있다...&lt;/span&gt;&lt;/p&gt;
&lt;p data-end=&quot;956&quot; data-start=&quot;777&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;(물론 한 번 놓치더라도 다음주에 같이 제출하면, 코드리뷰를 함께 받을 수 있다는 점도 좋았다)&lt;/span&gt;&lt;/p&gt;
&lt;p data-end=&quot;956&quot; data-start=&quot;777&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;996&quot; data-start=&quot;958&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;주 단위 진행&lt;/b&gt;은 학습과 구현을 병행하기에 딱 적당하고 좋았다.&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1033&quot; data-start=&quot;997&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1014&quot; data-start=&quot;997&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;더 짧으면 너무 버겁고,&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;1033&quot; data-start=&quot;1015&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;더 길면 루즈해질 수 있을 것 같았다.&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;항해 Lite 코스는 &amp;lsquo;1인 부트캠프&amp;rsquo; 방식이라 팀으로 협업하며 진행되는 과정은 없다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;팀 프로젝트나 협업 경험을 원한다면 Lite 보다는 항해 플러스 과정이 더 적절할 듯하다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;물론 디스코드와 같은 소통 채널이 있어서, 동기들과 질의응답을 하거나 정보를 공유하는 교류는 가능하다.&lt;/span&gt;&lt;/p&gt;
&lt;h3 data-end=&quot;1537&quot; data-start=&quot;1515&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;  항해 Lite 전/후의 변화&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-end=&quot;1646&quot; data-start=&quot;1538&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;가장 큰 변화는 &lt;b&gt;&quot;이름만 알던 기술들을 직접 구현해본 경험&quot;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;교육 전에는 &amp;lsquo;이게 뭔지&amp;rsquo; 정도만 알던 기술들이, 교육 후에는 &lt;b&gt;&amp;lsquo;왜 쓰고, 어떻게 구현하는지&amp;rsquo;&lt;/b&gt;로 바뀌었다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-end=&quot;1646&quot; data-start=&quot;1538&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;1646&quot; data-start=&quot;1538&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이번 과정을 통해 &lt;b&gt;백엔드 개발자 역량&lt;/b&gt;을 한 단계 끌어올릴 수 있었다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-end=&quot;1646&quot; data-start=&quot;1538&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;특히 &lt;b&gt;TDD, 아키텍처 설계, 동시성 처리, Redis, Kafka&lt;/b&gt;를 활용하며 직접 고민하고 설계해볼 수 있어서 좋았다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-end=&quot;1646&quot; data-start=&quot;1538&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;단순히 강의만 듣는 것이 아니라, 실제 서비스 개발 환경에서 발생할 수 있는 문제들을 스스로 고민해보고 해결하며, 익힐 수 있었다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-end=&quot;1646&quot; data-start=&quot;1538&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;1708&quot; data-start=&quot;1648&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;  &lt;b&gt;자가진단 전/후 비교&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;자가진단.png&quot; data-origin-width=&quot;945&quot; data-origin-height=&quot;548&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bQK3ZU/btsPOqm5WUE/3e9nosGuXfs7I1XLKs563K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bQK3ZU/btsPOqm5WUE/3e9nosGuXfs7I1XLKs563K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bQK3ZU/btsPOqm5WUE/3e9nosGuXfs7I1XLKs563K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbQK3ZU%2FbtsPOqm5WUE%2F3e9nosGuXfs7I1XLKs563K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;945&quot; height=&quot;548&quot; data-filename=&quot;자가진단.png&quot; data-origin-width=&quot;945&quot; data-origin-height=&quot;548&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-end=&quot;1728&quot; data-start=&quot;1715&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;  성장 포인트&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1881&quot; data-start=&quot;1729&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1770&quot; data-start=&quot;1729&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;혼자였다면 미뤘을 학습을, 일정과 목표를 정해 &lt;b&gt;10주간 항해 성공&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;1770&quot; data-start=&quot;1729&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;다른 수강생들의 과제 및 코드리뷰도 전부 확인 가능 &amp;rarr; 다양한 관점에서 학습 가능&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;1841&quot; data-start=&quot;1771&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Git 잔디&lt;/b&gt;를 오랜만에 빽빽하게 채움&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;git.png&quot; data-origin-width=&quot;301&quot; data-origin-height=&quot;148&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/5WKpj/btsPN5jdd96/JRvc4lfsr0BkquaIWLZSIk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/5WKpj/btsPN5jdd96/JRvc4lfsr0BkquaIWLZSIk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/5WKpj/btsPN5jdd96/JRvc4lfsr0BkquaIWLZSIk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F5WKpj%2FbtsPN5jdd96%2FJRvc4lfsr0BkquaIWLZSIk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;301&quot; height=&quot;148&quot; data-filename=&quot;git.png&quot; data-origin-width=&quot;301&quot; data-origin-height=&quot;148&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-end=&quot;1906&quot; data-start=&quot;1888&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;  수강 팁&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;2069&quot; data-start=&quot;1907&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;1960&quot; data-start=&quot;1907&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;과제는 완벽하지 않아도 꼭 제출&lt;/b&gt;하기 &amp;rarr; 코드리뷰가 진짜 큰 성장 포인트&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;2015&quot; data-start=&quot;1961&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;다른 수강생 코드 리뷰&lt;/b&gt;를 꼭 참고하기 &amp;rarr; 다양한 접근 방식을 배울 수 있음&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;2015&quot; data-start=&quot;1961&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;질문 많이 하기 &amp;rarr; 질문을 많이 못해서 아쉬웠지만, 다른 수강생분들이 한 질문과 답변을 보며 배운 점이 많았음&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 data-end=&quot;2103&quot; data-start=&quot;2076&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;  수강 고민중이라면&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2262&quot; data-start=&quot;2104&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2146&quot; data-start=&quot;2104&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;커리어에 대한 고민과 학습 의지는 있지만, 혼자 진행하기 어렵다면,&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;2262&quot; data-start=&quot;2147&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;TDD, Redis, Kafka, 대용량 트래픽 처리, 아키텍처 설계&lt;/b&gt;를 프로젝트로 경험해보고 싶다면,&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;2262&quot; data-start=&quot;2147&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;내가 작성한 코드를 누군가에게 피드백 받고 싶다면,&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;2262&quot; data-start=&quot;2147&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;퇴근 후 &lt;b&gt;&amp;ldquo;해야지&amp;rdquo;&lt;/b&gt;만 했다면,  &lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;⭐&lt;/span&gt; 10주간 열심히 학습하면 후회 없는 선택이 될 거라 생각합니다. 추천추천⭐&lt;/span&gt;&lt;/p&gt;
&lt;h3 data-end=&quot;2285&quot; data-start=&quot;2269&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;  수료생 추천 할인 혜택&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2363&quot; data-start=&quot;2286&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2313&quot; data-start=&quot;2286&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;아래 코드 입력 시 등록금 5&lt;u&gt;만원 할인&lt;/u&gt;받으실 수 있습니다&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;2363&quot; data-start=&quot;2314&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;할인 코드: &lt;span style=&quot;color: #f5334f;&quot;&gt;&lt;b&gt;GoZNrB&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>PROJECT/항해플러스 Lite 백엔드</category>
      <category>항해Lite백엔드</category>
      <category>항해Lite후기</category>
      <category>항해솔직후기</category>
      <author>yong_ღ'ᴗ'ღ</author>
      <guid isPermaLink="true">https://yong-codinglog.tistory.com/272</guid>
      <comments>https://yong-codinglog.tistory.com/272#entry272comment</comments>
      <pubDate>Sun, 10 Aug 2025 23:52:15 +0900</pubDate>
    </item>
    <item>
      <title>9주차 - WIL (Weekly I Learned)</title>
      <link>https://yong-codinglog.tistory.com/269</link>
      <description>&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;  9주차 과제&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Kafka 도입: 결제 성공 후 처리 로직을 Kafka 메시지 기반으로 비동기 처리하도록 개선 &lt;/span&gt;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt; &amp;zwj;♀️ 고민했던 부분&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; 기존 ApplicationEvent &amp;rarr; Kafka 기반 구조로 리팩토링 &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;◾ 기존에는 @TransactionalEventListener(phase = AFTER_COMMIT) 기반으로 비동기 이벤트를 처리했음&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt; ◾ Kafka를 도입하여, 이벤트들을 Kafka 메시지로 발행하고 별도 Consumer에서 처리하도록 구조 변경&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;◽ 발행: ReservationService.pay() 성공 시 PaymentSuccessMessage Kafka로 전송 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;◽ 소비: PaymentSuccessKafkaConsumer.consume()에서 메시지 수신 후 랭킹/토큰/내역 순차 처리 &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot; data-start=&quot;424&quot; data-end=&quot;507&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; ◾ 이벤트 리스너 &amp;rarr; 메시지 기반으로 변경하면서 생기는 차이점들을 고려해야 했음 &lt;/span&gt;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;✅ Keep (잘한 점 / 유지할 점)&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; Kafka 기반 구조로 리팩토링하며 시스템의 확장성과 비동기 분산 처리 구조 경험 &lt;/span&gt;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;  이번 주 알게 된 것들&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;기존 ApplicationEvent &amp;rarr; Kafka 기반 구조로 리팩토링 하는 방법&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Kafka Producer/Consumer 기본 설정 및 메시지 직렬화 방식 (JsonSerializer, trusted.packages 설정 등) &lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>PROJECT/항해플러스 Lite 백엔드</category>
      <author>yong_ღ'ᴗ'ღ</author>
      <guid isPermaLink="true">https://yong-codinglog.tistory.com/269</guid>
      <comments>https://yong-codinglog.tistory.com/269#entry269comment</comments>
      <pubDate>Sun, 20 Jul 2025 17:47:27 +0900</pubDate>
    </item>
    <item>
      <title>[혼공컴운]_3주차_Chapter 06 ~ 08</title>
      <link>https://yong-codinglog.tistory.com/268</link>
      <description>&lt;blockquote style=&quot;color: #666666; text-align: left;&quot; data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;  책: 『혼자 공부하는 컴퓨터 구조+운영체제』&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt; ️ 기간: 3주차&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;  범위: Chapter 06 ~ &lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;Chapter 08&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt; &amp;nbsp; &amp;nbsp;Chapter 06 | 메모리와 캐시 메모리 &lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;6-1. RAM의 특징과 종류&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;✅ RAM (Random Access Memory)&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;478&quot; data-start=&quot;365&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;399&quot; data-start=&quot;365&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;실행할 프로그램의&amp;nbsp;&lt;b&gt;명령어와 데이터&lt;/b&gt;가 저장되는 메모리&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;429&quot; data-start=&quot;400&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;휘발성&lt;/b&gt;: 전원이 꺼지면 데이터가 사라짐&lt;/span&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li data-end=&quot;429&quot; data-start=&quot;400&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;비휘발성 메모리 예시: 하드디스크, SSD, CD-ROM, USB 등&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;478&quot; data-start=&quot;430&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;RAM 용량이 클수록 더 많은 프로그램을 &lt;b&gt;동시에 빠르게 실행하는데 유리&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-end=&quot;546&quot; data-start=&quot;528&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;  RAM의 종류&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 105px;&quot; border=&quot;1&quot; data-end=&quot;840&quot; data-start=&quot;548&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style15&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;종류&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;설명&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;특징&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot; data-end=&quot;659&quot; data-start=&quot;588&quot;&gt;
&lt;td style=&quot;height: 21px;&quot; data-col-size=&quot;sm&quot; data-end=&quot;613&quot; data-start=&quot;588&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;DRAM&lt;/b&gt; (Dynamic RAM)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot; data-col-size=&quot;sm&quot; data-end=&quot;624&quot; data-start=&quot;613&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;일반적인 RAM&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot; data-col-size=&quot;sm&quot; data-end=&quot;659&quot; data-start=&quot;624&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;- 주기적으로 새로 저장 필요&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;- 소비전력이 비교적 낮고, 저렴&lt;br /&gt;- &lt;b&gt;집적도 높아서 대용량으로 설계하기 용이&lt;/b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot; data-end=&quot;720&quot; data-start=&quot;660&quot;&gt;
&lt;td style=&quot;height: 21px;&quot; data-col-size=&quot;sm&quot; data-end=&quot;684&quot; data-start=&quot;660&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;SRAM&lt;/b&gt; (Static RAM)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot; data-col-size=&quot;sm&quot; data-end=&quot;697&quot; data-start=&quot;684&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;캐시 메모리에 사용&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot; data-col-size=&quot;sm&quot; data-end=&quot;720&quot; data-start=&quot;697&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;- 시간이 지나도 데이터 사라지지 않음&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;- DRAM보다 빠르지만, &lt;b&gt;비싸고 집적도 낮음&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot; data-end=&quot;771&quot; data-start=&quot;721&quot;&gt;
&lt;td style=&quot;height: 21px;&quot; data-col-size=&quot;sm&quot; data-end=&quot;733&quot; data-start=&quot;721&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;SDRAM&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot; data-col-size=&quot;sm&quot; data-end=&quot;752&quot; data-start=&quot;733&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;클럭 신호와 동기화된 DRAM&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;(Synchronous Dynamic RAM)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot; data-col-size=&quot;sm&quot; data-end=&quot;771&quot; data-start=&quot;752&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;표준 DRAM보다 성능 개선&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot; data-end=&quot;840&quot; data-start=&quot;772&quot;&gt;
&lt;td style=&quot;height: 21px;&quot; data-col-size=&quot;sm&quot; data-end=&quot;788&quot; data-start=&quot;772&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;DDR SDRAM&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot; data-col-size=&quot;sm&quot; data-end=&quot;813&quot; data-start=&quot;788&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Double Data Rate SDRAM&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot; data-col-size=&quot;sm&quot; data-end=&quot;840&quot; data-start=&quot;813&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;대역폭 2배 넓은 SDRAM&lt;/b&gt;, 현재 가장 흔히 사용&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div&gt;
&lt;div&gt;&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;h3 data-end=&quot;1037&quot; data-start=&quot;1015&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;6-2. 메모리의 주소 공간&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1135&quot; data-start=&quot;1039&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1090&quot; data-start=&quot;1039&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;물리 주소 (Physical Address)&lt;/b&gt;: 메모리 하드웨어 상의 주소&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;1135&quot; data-start=&quot;1091&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;논리 주소 (Logical Address)&lt;/b&gt;: CPU와&amp;nbsp;실행&amp;nbsp;중인&amp;nbsp;프로그램이 인식하는 주소&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;1135&quot; data-start=&quot;1091&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;논리 주소 &amp;rarr; 물리 주소 변환: &lt;b&gt;MMU (Memory Management Unit)&lt;/b&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt; 에서 수행&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;1226&quot; data-start=&quot;1209&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;6-3. 캐시 메모리&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot; data-start=&quot;1039&quot; data-end=&quot;1135&quot;&gt;
&lt;li data-start=&quot;1091&quot; data-end=&quot;1135&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;span style=&quot;text-align: start;&quot;&gt;자주 사용하는 데이터는&amp;nbsp;&lt;/span&gt;&lt;b&gt;메모리보다 더 빠른 캐시 메모리&lt;/b&gt;&lt;span style=&quot;text-align: start;&quot;&gt;에 보관하여 CPU 성능을 높임&lt;/span&gt; &lt;/span&gt;&lt;/li&gt;
&lt;li data-start=&quot;1091&quot; data-end=&quot;1135&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;참조 지역성의 원리에 따라 메모리로부터 가져올 데이터를 결정한다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 77.2092%; height: 68px;&quot; border=&quot;1&quot; data-end=&quot;1426&quot; data-start=&quot;1303&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-end=&quot;1426&quot; data-start=&quot;1342&quot;&gt;
&lt;tr style=&quot;height: 29px;&quot; data-end=&quot;1384&quot; data-start=&quot;1342&quot;&gt;
&lt;td style=&quot;width: 24.3299%; height: 29px;&quot; data-col-size=&quot;sm&quot; data-end=&quot;1355&quot; data-start=&quot;1342&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;시간 지역성&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 75.4639%; height: 29px;&quot; data-col-size=&quot;sm&quot; data-end=&quot;1384&quot; data-start=&quot;1355&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; CPU는 최근에 접근했던 메모리 공간에 다시 접근하려는 경향이 있다.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 29px;&quot; data-end=&quot;1426&quot; data-start=&quot;1385&quot;&gt;
&lt;td style=&quot;width: 24.3299%; height: 29px;&quot; data-col-size=&quot;sm&quot; data-end=&quot;1398&quot; data-start=&quot;1385&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;공간 지역성&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 75.4639%; height: 29px;&quot; data-col-size=&quot;sm&quot; data-end=&quot;1426&quot; data-start=&quot;1398&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;CPU는&amp;nbsp;접근한&amp;nbsp;메모리&amp;nbsp;공간&amp;nbsp;근처를&amp;nbsp;접근하려는&amp;nbsp;경향이&amp;nbsp;있다.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;&lt;/div&gt;
&lt;h2 data-end=&quot;1162&quot; data-start=&quot;1137&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;  Chapter 07 | 보조기억장치&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;h3 data-end=&quot;1181&quot; data-start=&quot;1164&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;✅ 대표적인 보조기억장치&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1224&quot; data-start=&quot;1182&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1201&quot; data-start=&quot;1182&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;하드디스크 (HDD; Hard Disk Drive)&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;1224&quot; data-start=&quot;1202&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;플래시 메모리 (예: SSD)&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;1276&quot; data-start=&quot;1226&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;  RAID (Redundant Array of Independent Disks)&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1362&quot; data-start=&quot;1277&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1316&quot; data-start=&quot;1277&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;기술&lt;/li&gt;
&lt;li data-end=&quot;1362&quot; data-start=&quot;1340&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;주로 HDD나 SSD를 이용하여 구성&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-end=&quot;1393&quot; data-start=&quot;1369&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;  Chapter 08 | 입출력장치&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;h3 data-end=&quot;1409&quot; data-start=&quot;1395&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;  장치 컨트롤러&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1499&quot; data-start=&quot;1410&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1440&quot; data-start=&quot;1410&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;CPU와 입출력장치 간 &lt;b&gt;통신 중개자&lt;/b&gt; 역할&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;1499&quot; data-start=&quot;1441&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;오류 검출&lt;/b&gt;, &lt;b&gt;데이터 버퍼링&lt;/b&gt; 등 담당 (&amp;rarr; CPU와 I/O 장치 간 속도 차이 해결)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;1515&quot; data-start=&quot;1501&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;  장치 드라이버&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1590&quot; data-start=&quot;1516&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1590&quot; data-start=&quot;1551&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;장치 컨트롤러가 컴퓨터 내부와 &lt;b&gt;정보를 주고받도록 도와주는 프로그램&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-style=&quot;style6&quot; data-ke-type=&quot;horizontalRule&quot; /&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size18&quot; data-start=&quot;1590&quot; data-end=&quot;1603&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &amp;nbsp;&lt;b&gt;[문제 풀이]&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot; data-start=&quot;1605&quot; data-end=&quot;1626&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;   &lt;b&gt;연습문제 p.185 - 3번 &lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 46.5116%; height: 163px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 51.1082%;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;주로 캐시 메모리로 활용&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 48.7755%;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;SRAM&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 51.1082%;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;주로 주기억장치로 활용&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 48.7755%;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;DRAM&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 51.1082%;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;대용량화에 유리&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 48.7755%;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;DRAM&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 51.1082%;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;집적도가 상대적으로 낮음&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 48.7755%;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;SRAM&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt; &lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;연습문제 p.205 - 1번&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;556&quot; data-origin-height=&quot;460&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yyxkO/btsPpUp0hid/fVxJzQWkq9t4bj7xJ7IrPk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yyxkO/btsPpUp0hid/fVxJzQWkq9t4bj7xJ7IrPk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yyxkO/btsPpUp0hid/fVxJzQWkq9t4bj7xJ7IrPk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyyxkO%2FbtsPpUp0hid%2FfVxJzQWkq9t4bj7xJ7IrPk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;380&quot; height=&quot;314&quot; data-origin-width=&quot;556&quot; data-origin-height=&quot;460&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>Reading/혼자 공부하는 컴퓨터 구조+운영체제</category>
      <category>혼공컴운</category>
      <category>혼공파</category>
      <category>혼공학습단</category>
      <category>혼자공부하는컴퓨터구조운영체제</category>
      <author>yong_ღ'ᴗ'ღ</author>
      <guid isPermaLink="true">https://yong-codinglog.tistory.com/268</guid>
      <comments>https://yong-codinglog.tistory.com/268#entry268comment</comments>
      <pubDate>Sun, 20 Jul 2025 12:26:36 +0900</pubDate>
    </item>
    <item>
      <title>8주차 - WIL (Weekly I Learned)</title>
      <link>https://yong-codinglog.tistory.com/267</link>
      <description>&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;  8주차 과제&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;1. &lt;span style=&quot;background-color: #ffffff; text-align: left;&quot;&gt;Application Event: 이벤트를 활용하여 트랜잭션과 관심사를 분리하기&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;2. &lt;span style=&quot;background-color: #ffffff; text-align: left;&quot;&gt;Asynchronous Design: 대기열 기능에 대해 Redis 기반의 설계를 진행&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;3. feedback - &lt;span style=&quot;background-color: #ffffff; text-align: left;&quot;&gt;RedisReservationRankingManager 상수값 외부 설정으로 빼기&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; text-align: left;&quot;&gt;4. feedback - &lt;span style=&quot;background-color: #ffffff; text-align: left;&quot;&gt;redis 분산락 TTL 충분히 길게 줘서 중복실행 확률 낮추기&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt; &amp;zwj;♀️ 고민했던 부분&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;① Event 활용하여 트랜잭션과 관심사 분리&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;◾ 기존에는 모든 로직이 ReservationService.pay() 내에 포함되어 있어, 핵심로직과 부가로직이 혼재된 구조였다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;◽ 핵심 로직: 대기열 토큰 검증, 포인트 사용, 좌석 상태 변경&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;◽ 부가 로직: 예매율 랭킹 갱신, 대기열 토큰 완료 처리, 결제 내역 저장&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-end=&quot;507&quot; data-start=&quot;424&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;◾ 위 부가로직은 예외가 발생하더라도 핵심 로직에는 영향을 주지 않아야 했고, 성능과 유지보수 측면에서도 이벤트 기반 처리가 적절하다고 판단했다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-end=&quot;628&quot; data-start=&quot;509&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;◾ 특히 결제 실패 이력 저장의 경우, 핵심 트랜잭션이 롤백되더라도 반드시 저장되어야 하므로 @Transactional(propagation = REQUIRES_NEW) 로 별도 트랜잭션으로 분리해 처리함.&lt;/span&gt;&lt;/p&gt;
&lt;p data-end=&quot;628&quot; data-start=&quot;509&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;628&quot; data-start=&quot;509&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;② Redis로 대기열 기능 구현&lt;/span&gt;&lt;/p&gt;
&lt;p data-end=&quot;628&quot; data-start=&quot;509&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;span style=&quot;text-align: start;&quot;&gt;◾&amp;nbsp;&lt;/span&gt; Redis ZSET 사용 결정. 무제한 입장을 막기 위해 allowedLimit(ex. 1000명) 설정 &lt;/span&gt;&lt;/p&gt;
&lt;p data-end=&quot;628&quot; data-start=&quot;509&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; ◾&amp;nbsp; 스케줄러 처리 방식&lt;/span&gt;&lt;/p&gt;
&lt;p data-end=&quot;628&quot; data-start=&quot;509&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;span style=&quot;text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;◽&amp;nbsp;&lt;/span&gt; ALLOWED 상태에서 TTL이 지난 토큰은 TIMEOUT으로 변경 &lt;/span&gt;&lt;/p&gt;
&lt;p data-end=&quot;628&quot; data-start=&quot;509&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;span style=&quot;text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;◽&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;text-align: start;&quot;&gt;&amp;nbsp;&lt;/span&gt; WAITING 상태 중 상위 토큰들을 ALLOWED로 전환 (현재 허용 인원 기준) &lt;/span&gt;&lt;/p&gt;
&lt;p data-end=&quot;628&quot; data-start=&quot;509&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;➡️ 한 번에 너무 많은 대기열을 조회하지 않기 위해 Redis에서 limit &amp;times; 2 정도만 추출 후 상태 체크 &lt;/span&gt;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;✅ Keep (잘한 점 / 유지할 점)&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;- @TransactionalEventListener 를 활용해 &lt;b&gt;AFTER_COMMIT&lt;/b&gt; 시점에만 부가로직 수행 &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;- 이벤트 리스너를 비동기 처리(@Async)하여 주 쓰레드의 성능 저하 방지 &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;- 예외 발생 시 REQUIRES_NEW 로 실패 이력 저장 &amp;rarr; 핵심 트랜잭션의 영향을 받지 않도록 설계 &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;- 예매율 랭킹 / 토큰 상태 변경 / 결제 성공 내역 저장을 각각 이벤트 리스너로 분리하여 &lt;b&gt;단일 책임&lt;/b&gt; 원칙 지킴 &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;- 대기열 진입 로직을 별도의 &lt;b&gt;Facade 서비스&lt;/b&gt;로 구성하여 토큰 발급 &amp;rarr; 대기열 진입 흐름을 하나의 API로 처리&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;- 토큰 상태값은 RDB에서 관리하고, 큐 순번은 Redis에서 분리 관리하여 &lt;b&gt;상태/순번 책임 분리&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;❗️Problem (문제점) &amp;amp;&lt;/b&gt;&lt;b&gt; Try (해결을 위한 시도)&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;- JPA dirty checking 기반의 토큰 상태 변경(엔티티 변경만)도 이벤트로 분리하려 했지만, 트랜잭션 범위를 벗어나면 dirty checking이 적용되지 않아 다시 save 호출이 필요함 &amp;rarr; 이를 고려해 save 호출을 명시적으로 추가함 &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;- 처음에는 ReservationService가 QueueService를 호출하는 구조로 구현했으나 서비스 간 의존성 문제 발생 가능성 있어서 &amp;rarr; &lt;b&gt;Facade 패턴 도입&lt;/b&gt; &lt;/span&gt;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;  이번 주 알게 된 것들&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;- @TransactionalEventListener 의 phase 종류 (BEFORE_COMMIT, AFTER_COMMIT, AFTER_ROLLBACK) 와 각각의 동작 시점 &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;- 서비스 간 호출이 필요할 경우 &lt;b&gt;Facade 계층 사용&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;</description>
      <category>PROJECT/항해플러스 Lite 백엔드</category>
      <author>yong_ღ'ᴗ'ღ</author>
      <guid isPermaLink="true">https://yong-codinglog.tistory.com/267</guid>
      <comments>https://yong-codinglog.tistory.com/267#entry267comment</comments>
      <pubDate>Sun, 13 Jul 2025 20:35:49 +0900</pubDate>
    </item>
    <item>
      <title>[혼공컴운]_2주차_Chapter 05</title>
      <link>https://yong-codinglog.tistory.com/266</link>
      <description>&lt;blockquote style=&quot;color: #666666; text-align: left;&quot; data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;  책: 『혼자 공부하는 컴퓨터 구조+운영체제』&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt; ️ 기간: 2주차&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;  범위: Chapter 05&lt;/span&gt;&lt;/blockquote&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;   &amp;nbsp; Chapter 04 | CPU 성능 향상 기법&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;h3 data-end=&quot;283&quot; data-start=&quot;263&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;✅ CPU 성능을 높이는 방법&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;335&quot; data-start=&quot;285&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;302&quot; data-start=&quot;285&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;클럭 속도 ⬆️&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;319&quot; data-start=&quot;303&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;코어 수 &lt;b&gt;⬆️&lt;/b&gt; &lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;335&quot; data-start=&quot;320&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;스레드 수 &lt;b&gt;⬆️&lt;/b&gt; &lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 data-end=&quot;358&quot; data-start=&quot;342&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;  클럭(Clock)&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;489&quot; data-start=&quot;360&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;395&quot; data-start=&quot;360&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;CPU 내부에서 &lt;b&gt;작동 타이밍&lt;/b&gt;을 맞춰주는 전기 신호&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;439&quot; data-start=&quot;396&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;클럭 속도 &amp;uarr; &amp;rarr; 명령어 사이클 반복 속도 &amp;uarr; &amp;rarr; 연산 속도 &amp;uarr;&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;489&quot; data-start=&quot;440&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;하지만, &lt;b&gt;발열&lt;/b&gt;&amp;nbsp;등의 문제로 인해 무작정 높이기엔 &lt;b&gt;한계&lt;/b&gt;가 존재&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-end=&quot;511&quot; data-start=&quot;496&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;  코어(Core)&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;656&quot; data-start=&quot;513&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;539&quot; data-start=&quot;513&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;명령어를 실행하는 부품&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;584&quot; data-start=&quot;540&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;하나의 CPU 안에 여러 개의 코어가 탑재된 경우 &amp;rarr; &lt;b&gt;멀티코어 CPU&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;656&quot; data-start=&quot;585&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;코어 수가 많다고 무조건 성능이 오르지는 않음!&lt;/b&gt;&lt;/span&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-end=&quot;656&quot; data-start=&quot;626&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li data-end=&quot;656&quot; data-start=&quot;626&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;각 코어에 &lt;b&gt;연산 작업이 잘 분배&lt;/b&gt;되는게 중요하다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-end=&quot;681&quot; data-start=&quot;663&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;  스레드(Thread)&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;710&quot; data-start=&quot;683&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;하드웨어 스레드&lt;/span&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li data-end=&quot;740&quot; data-start=&quot;711&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;하나의 코어가 동시에 처리하는 명령어 단위&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;780&quot; data-start=&quot;741&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;하나의 코어로 여러 명령어를 동시에 실행 가능한 구조 &amp;rarr; &lt;b&gt;멀티스레드 CPU&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;810&quot; data-start=&quot;782&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;소프트웨어 스레드&lt;/span&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li data-end=&quot;844&quot; data-start=&quot;811&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;하나의 프로그램 내부에서 독립적으로 실행되는 단위&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;907&quot; data-start=&quot;845&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;기능별로 스레드를 나누면 동시에 실행 가능&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;rarr; 1코어 1스레드 CPU도 멀티스레드 프로그램 실행 가능&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;916&quot; data-start=&quot;909&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;⭐ 즉,&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;973&quot; data-start=&quot;917&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;943&quot; data-start=&quot;917&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;하드웨어 스레드 = 코어가 처리하는 단위&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;973&quot; data-start=&quot;944&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;소프트웨어 스레드 = 프로그램이 처리하는 단위&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-end=&quot;1603&quot; data-start=&quot;1590&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &amp;nbsp;&lt;b&gt;[문제 풀이]&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-end=&quot;1626&quot; data-start=&quot;1605&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;  p.125 확인문제 2번 :&amp;nbsp;&lt;/b&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;b&gt;코어&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;</description>
      <category>Reading/혼자 공부하는 컴퓨터 구조+운영체제</category>
      <category>혼공컴운</category>
      <category>혼공파</category>
      <category>혼공학습단</category>
      <category>혼자공부하는컴퓨터구조운영체제</category>
      <author>yong_ღ'ᴗ'ღ</author>
      <guid isPermaLink="true">https://yong-codinglog.tistory.com/266</guid>
      <comments>https://yong-codinglog.tistory.com/266#entry266comment</comments>
      <pubDate>Sun, 13 Jul 2025 16:30:11 +0900</pubDate>
    </item>
    <item>
      <title>[혼공컴운]_2주차_Chapter 04</title>
      <link>https://yong-codinglog.tistory.com/265</link>
      <description>&lt;blockquote style=&quot;color: #666666; text-align: left;&quot; data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;  책: 『혼자 공부하는 컴퓨터 구조+운영체제』&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt; ️ 기간: 2주차&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;  범위: Chapter 04&lt;/span&gt;&lt;/blockquote&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;   &amp;nbsp;Chapter 04 | CPU의 작동 원리&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;h3 data-end=&quot;305&quot; data-start=&quot;285&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;4-1) ALU와 제어장치&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;h4 data-end=&quot;328&quot; data-start=&quot;307&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;  CPU의 주요 구성 요소&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;424&quot; data-start=&quot;329&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;359&quot; data-start=&quot;329&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;ALU (산술논리연산장치)&lt;/b&gt;: 계산 담당&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;391&quot; data-start=&quot;360&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;레지스터&lt;/b&gt;: CPU 내부의 임시 저장 공간&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;424&quot; data-start=&quot;392&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;제어장치&lt;/b&gt;: 명령어를 해석하고 제어 신호를 보냄&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 data-end=&quot;450&quot; data-start=&quot;431&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;  ALU (연산 장치)&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;564&quot; data-start=&quot;451&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;496&quot; data-start=&quot;451&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;레지스터로부터 &lt;b&gt;피연산자&lt;/b&gt;, 제어장치로부터 &lt;b&gt;제어신호&lt;/b&gt;를 전달받음&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;531&quot; data-start=&quot;497&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;산술/논리 연산 수행 후 &lt;b&gt;결과 + 플래그&lt;/b&gt;를 출력&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;564&quot; data-start=&quot;532&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;결과는 레지스터에, 플래그는 플래그 레지스터에 저장&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;564&quot; data-start=&quot;532&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;플래그 종류: 부호 플래그, 제로 플래그, 캐리 플래그, 오버플로우 플래그, 인터럽트 플래그 등&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-end=&quot;703&quot; data-start=&quot;691&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;  제어장치&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;784&quot; data-start=&quot;704&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;729&quot; data-start=&quot;704&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;명령어 해석 및 &lt;b&gt;제어 신호 생성&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;764&quot; data-start=&quot;730&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;컴퓨터 부품들을 관리하고 작동시키기 위한 일종의&amp;nbsp;&lt;b&gt;전기적 신호&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;784&quot; data-start=&quot;765&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;CPU 제조사마다 차이 있음&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;784&quot; data-start=&quot;765&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;제어장치가 받는 정보: &lt;b&gt;클럭(clock)&lt;/b&gt; 신호, 명령어 레지스터의 &lt;b&gt;명령어&lt;/b&gt;, &lt;b&gt;플래그 값&lt;/b&gt;, 제어 버스로 전달된 &lt;b&gt;제어 신호&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;784&quot; data-start=&quot;765&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;CPU 내부/외부로 제어신호를 내보냄&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;4-2) 레지스터&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style15&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 48.4884%;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;레지스터명&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 51.3954%;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;설명&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 48.4884%;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;프로그램 카운터 (PC, Program Counter)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 51.3954%;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;- 다음 명령어의 메모리 주소 저장&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;- 각&amp;nbsp;명령어&amp;nbsp;실행&amp;nbsp;후&amp;nbsp;자동으로&amp;nbsp;다음&amp;nbsp;명령어의&amp;nbsp;주소로&amp;nbsp;업데이트&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 48.4884%;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;명령어 레지스터 (IR, Instruction Register)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 51.3954%;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;- 현재&amp;nbsp;실행할&amp;nbsp;명령어&amp;nbsp;코드를&amp;nbsp;저장&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&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;가리킨다.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 48.4884%;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;메모리 주소 레지스터 (MAR, Memory Address Register)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 51.3954%;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;-&amp;nbsp;CPU가&amp;nbsp;읽거나&amp;nbsp;써야&amp;nbsp;하는&amp;nbsp;데이터의&amp;nbsp;&lt;b&gt;메모리&amp;nbsp;주소를&amp;nbsp;저장&lt;/b&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;-&amp;nbsp;CPU가&amp;nbsp;데이터에&amp;nbsp;접근해야&amp;nbsp;할&amp;nbsp;때,&amp;nbsp;먼저&amp;nbsp;메모리&amp;nbsp;주소를&amp;nbsp;MAR에&amp;nbsp;저장&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 48.4884%;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;메모리&amp;nbsp;데이터&amp;nbsp;레지스터(MDR,&amp;nbsp;Memory&amp;nbsp;Data&amp;nbsp;Register)&lt;br /&gt;메모리&amp;nbsp;버퍼&amp;nbsp;레지스터(MBR,&amp;nbsp;Memory&amp;nbsp;Buffer&amp;nbsp;Register)&amp;nbsp;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 51.3954%;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;-&amp;nbsp;메모리에서&amp;nbsp;읽어온&amp;nbsp;데이터나&amp;nbsp;메모리에&amp;nbsp;저장할&amp;nbsp;데이터를&amp;nbsp;임시로&amp;nbsp;저장 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;-&amp;nbsp;CPU가&amp;nbsp;메모리에서&amp;nbsp;데이터를&amp;nbsp;읽어올&amp;nbsp;때,&amp;nbsp;읽어온&amp;nbsp;데이터는&amp;nbsp;먼저&amp;nbsp;MDR에&amp;nbsp;저장 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;-&amp;nbsp;CPU가&amp;nbsp;메모리에&amp;nbsp;데이터를&amp;nbsp;저장해야&amp;nbsp;할&amp;nbsp;때,&amp;nbsp;저장할&amp;nbsp;데이터는&amp;nbsp;먼저&amp;nbsp;MDR에&amp;nbsp;저장 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;-&amp;nbsp;CPU와&amp;nbsp;메모리&amp;nbsp;사이에서&amp;nbsp;데이터를&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;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;-&amp;nbsp;MAR이&amp;nbsp;지정한&amp;nbsp;주소에&amp;nbsp;있는&amp;nbsp;데이터를&amp;nbsp;저장&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 48.4884%;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;플래그 레지스터 (Flag&amp;nbsp;Register)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 51.3954%;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;- 연산결과나 CPU 상태에 대한 부가적인 정보를 저장&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 48.4884%;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;범용 레지스터 (GPR, General Purpose Register)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 51.3954%;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;-&amp;nbsp;데이터&amp;nbsp;값과&amp;nbsp;메모리&amp;nbsp;주소를&amp;nbsp;모두&amp;nbsp;저장할&amp;nbsp;수&amp;nbsp;있다. &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&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;사용&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 48.4884%;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;스택 포인터 (Stack&amp;nbsp;Pointer)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 51.3954%;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;-&amp;nbsp;스택&amp;nbsp;주소&amp;nbsp;지정&amp;nbsp;방식에&amp;nbsp;사용 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;-&amp;nbsp;스택의&amp;nbsp;꼭대기,&amp;nbsp;즉&amp;nbsp;스택에&amp;nbsp;어디까지&amp;nbsp;데이터가&amp;nbsp;채워져&amp;nbsp;있는지를&amp;nbsp;가리키는&amp;nbsp;레지스터&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 48.4884%;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;베이스 레지스터 (Base Register)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 51.3954%;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;-&amp;nbsp;변위&amp;nbsp;주소&amp;nbsp;지정&amp;nbsp;방식(Displacement&amp;nbsp;Addressing&amp;nbsp;Mode)에&amp;nbsp;사용 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;-&amp;nbsp;베이스&amp;nbsp;레지스터의&amp;nbsp;내용에&amp;nbsp;변위&amp;nbsp;값을&amp;nbsp;더하여&amp;nbsp;피연산자의&amp;nbsp;유효&amp;nbsp;주소를&amp;nbsp;계산&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-style=&quot;style1&quot; data-ke-type=&quot;horizontalRule&quot; /&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;4-3) 명령어 사이클과 인터럽트&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;h4 data-end=&quot;1328&quot; data-start=&quot;1313&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;  명령어 사이클&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1328&quot; data-start=&quot;1313&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;일반적으로&amp;nbsp;인출,&amp;nbsp;실행,&amp;nbsp;간접,&amp;nbsp;인터럽트&amp;nbsp;사이클을&amp;nbsp;반복하며&amp;nbsp;실행된다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-end=&quot;1435&quot; data-start=&quot;1423&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;  인터럽트&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1458&quot; data-start=&quot;1436&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1458&quot; data-start=&quot;1436&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;CPU 작업을 &lt;b&gt;방해하는 신호&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;1505&quot; data-start=&quot;1470&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;동기 인터럽트&lt;/b&gt;: 우리가&amp;nbsp;흔히&amp;nbsp;예외(exception)라고&amp;nbsp;부르는&amp;nbsp;것&lt;/span&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li data-end=&quot;1505&quot; data-start=&quot;1470&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;ex)&amp;nbsp;CPU가&amp;nbsp;실행하는&amp;nbsp;프로그래밍상의&amp;nbsp;오류&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1547&quot; data-start=&quot;1506&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;비동기 인터럽트&lt;/b&gt;: 주로&amp;nbsp;입출력장치에&amp;nbsp;의해&amp;nbsp;발생하는&amp;nbsp;인터럽트&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot; data-start=&quot;1590&quot; data-end=&quot;1603&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &amp;nbsp;&lt;b&gt;[문제 풀이]&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot; data-start=&quot;1605&quot; data-end=&quot;1626&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;  p.125 확인문제 2번&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1665&quot; data-start=&quot;1618&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;b&gt;플래그 레지스터&lt;/b&gt;&lt;/span&gt;: 연산&amp;nbsp;결과&amp;nbsp;혹은&amp;nbsp;CPU&amp;nbsp;상태에&amp;nbsp;대한&amp;nbsp;부가&amp;nbsp;정보를&amp;nbsp;저장하는&amp;nbsp;레지스터&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;1706&quot; data-start=&quot;1666&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;b&gt;프로그램 카운터&lt;/b&gt;&lt;/span&gt;: 메모리에서&amp;nbsp;가져올&amp;nbsp;명령어의&amp;nbsp;주소를&amp;nbsp;저장하는&amp;nbsp;레지스터&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;1740&quot; data-start=&quot;1707&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;b&gt;범용 레지스터&lt;/b&gt;&lt;/span&gt;: 데이터와&amp;nbsp;주소를&amp;nbsp;모두&amp;nbsp;저장할&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;레지스터&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;1768&quot; data-start=&quot;1741&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;b&gt;명령어 레지스터&lt;/b&gt;&lt;/span&gt;: 해석할&amp;nbsp;명령어를&amp;nbsp;저장하는&amp;nbsp;레지스터&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Reading/혼자 공부하는 컴퓨터 구조+운영체제</category>
      <category>혼공컴운</category>
      <category>혼공파</category>
      <category>혼공학습단</category>
      <category>혼자공부하는컴퓨터구조운영체제</category>
      <author>yong_ღ'ᴗ'ღ</author>
      <guid isPermaLink="true">https://yong-codinglog.tistory.com/265</guid>
      <comments>https://yong-codinglog.tistory.com/265#entry265comment</comments>
      <pubDate>Sun, 13 Jul 2025 00:50:44 +0900</pubDate>
    </item>
    <item>
      <title>[혼공컴운]_1주차_Chapter 01~03</title>
      <link>https://yong-codinglog.tistory.com/262</link>
      <description>&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;   책: 『혼자 공부하는 컴퓨터 구조+운영체제』&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt; ️ 기간: 1주차&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;  범위: Chapter 01 ~ Chapter 03 &lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;  Chapter 01 | 컴퓨터 구조 시작하기 &lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;h3 data-end=&quot;296&quot; data-start=&quot;285&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;✅&lt;b&gt; 컴퓨터란?&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;483&quot; data-start=&quot;297&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;315&quot; data-start=&quot;297&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;명령어를 처리하는 기계&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;483&quot; data-start=&quot;316&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;컴퓨터 구조는 크게 2가지로 구성됨&lt;/span&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;483&quot; data-start=&quot;344&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;373&quot; data-start=&quot;344&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;컴퓨터가 이해하는 정보: &lt;i&gt;데이터, 명령어&lt;/i&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;483&quot; data-start=&quot;376&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;컴퓨터의 4대 핵심 부품:&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;483&quot; data-start=&quot;401&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;421&quot; data-start=&quot;401&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;CPU (중앙처리장치)&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;446&quot; data-start=&quot;427&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;메모리 (주기억장치)&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;466&quot; data-start=&quot;452&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;보조기억장치&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;483&quot; data-start=&quot;472&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;입출력장치&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;500&quot; data-start=&quot;490&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;  &lt;b&gt;CPU&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;539&quot; data-start=&quot;501&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;515&quot; data-start=&quot;501&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;컴퓨터의 두뇌 역할&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;539&quot; data-start=&quot;516&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;명령어를 읽고 &amp;rarr; 해석하고 &amp;rarr; 실행&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;555&quot; data-start=&quot;541&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;주요 구성 요소&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;590&quot; data-start=&quot;556&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;574&quot; data-start=&quot;556&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;ALU (산술논리연산장치)&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;583&quot; data-start=&quot;575&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;레지스터&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;590&quot; data-start=&quot;584&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;제어장치&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;607&quot; data-start=&quot;597&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;  &lt;b&gt;메모리&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;684&quot; data-start=&quot;608&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;641&quot; data-start=&quot;608&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; 현재 실행되는 프로그램의 명령어와 데이터를 저장하는 부품&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;641&quot; data-start=&quot;608&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt; 프로그램이 실행되려면 반드시 메모리에 저장되어 있어야 한다.&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;669&quot; data-start=&quot;642&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;휘발성&lt;/b&gt;: 전원 꺼지면 데이터 사라짐&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;684&quot; data-start=&quot;670&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;가격 &amp;uarr;, 저장용량 &amp;darr;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;705&quot; data-start=&quot;691&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; ️ &lt;b&gt;보조기억장치&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;740&quot; data-start=&quot;706&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;723&quot; data-start=&quot;706&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;비휘발성&lt;/b&gt; 저장장치&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;740&quot; data-start=&quot;724&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;전원이 꺼져도 데이터 유지&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;760&quot; data-start=&quot;747&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; ️ &lt;b&gt;입출력장치&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;804&quot; data-start=&quot;761&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;783&quot; data-start=&quot;761&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; 컴퓨터 외부에 연결되어 컴퓨터 내부와 정보를 교환하는 장치&amp;nbsp; &lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;804&quot; data-start=&quot;784&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;예: 키보드, 마우스, 프린터 등&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;824&quot; data-start=&quot;811&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;  시스템 버스&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;846&quot; data-start=&quot;825&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;846&quot; data-start=&quot;825&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;위의 4가지 핵심 부품들이 서로 정보를 주고받는 통로 &lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-end=&quot;875&quot; data-start=&quot;853&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;  &lt;b&gt;Chapter 02 | 데이터&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;h3 data-end=&quot;888&quot; data-start=&quot;877&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;✅&lt;b&gt; 기본 개념&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;987&quot; data-start=&quot;889&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;917&quot; data-start=&quot;889&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;비트&lt;/b&gt;: 0과 1로 표현되는 최소 단위&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;987&quot; data-start=&quot;918&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;2의 보수&lt;/b&gt;: 음수 표현 방식&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;987&quot; data-start=&quot;944&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;968&quot; data-start=&quot;944&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;① 0과 1 뒤집기 &amp;rarr; ② 1 더하기&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;987&quot; data-start=&quot;971&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;부호 플래그로 양수/음수 구분&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;1006&quot; data-start=&quot;994&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;  &lt;b&gt;문자 표현&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1072&quot; data-start=&quot;1007&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1034&quot; data-start=&quot;1007&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;유니코드&lt;/b&gt;: 여러 나라의 문자를 광범위하게 표현할 수 있는 통일된 문자 집합 &lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;1072&quot; data-start=&quot;1035&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;인코딩 방식: UTF-8, UTF-16, UTF-32&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-style=&quot;style5&quot; data-ke-type=&quot;horizontalRule&quot; /&gt;
&lt;h2 data-end=&quot;1101&quot; data-start=&quot;1079&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;  &lt;b&gt;Chapter 03 | 명령어&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;h3 data-end=&quot;1115&quot; data-start=&quot;1103&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;✅ &lt;b&gt;언어의 분류&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1260&quot; data-start=&quot;1116&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1186&quot; data-start=&quot;1116&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;컴파일 언어&lt;/b&gt;: 컴파일러에 의해 소스 코드 전체가 저급 언어로 변환되어 실행되는 고급 언어 &lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1186&quot; data-start=&quot;1155&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1165&quot; data-start=&quot;1155&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;예: C&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;1186&quot; data-start=&quot;1168&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;오류 1개만 있어도 전체 실패&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1260&quot; data-start=&quot;1188&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;인터프리터 언어&lt;/b&gt;: 인터프리터에 의해 소스 코드가 한 줄씩 저급 언어로 변환되어 실행되는 고급 언어 &lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1260&quot; data-start=&quot;1221&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1236&quot; data-start=&quot;1221&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;예: Python&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;1260&quot; data-start=&quot;1239&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &amp;nbsp;&lt;b&gt;소스 코드를 한 줄씩&lt;/b&gt;&lt;span style=&quot;text-align: start;&quot;&gt;&amp;nbsp;차례로 실행한다.&amp;nbsp;&lt;/span&gt;&lt;b&gt;N번째 줄에 오류가 있더라도 N-1번째 줄까지는 수행&lt;/b&gt;된다. &lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;1280&quot; data-start=&quot;1267&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;⚙️&lt;b&gt; 명령어 구성&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1425&quot; data-start=&quot;1281&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1317&quot; data-start=&quot;1281&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;연산 코드 (Operation Code)&lt;/b&gt;: 수행할 연산 (연산자) &lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;1425&quot; data-start=&quot;1318&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;오퍼랜드 (Operand)&lt;/b&gt;: 연산에 필요한 데이터 or 그 데이터가 저장된 위치 (피연산자) &lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1425&quot; data-start=&quot;1362&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1394&quot; data-start=&quot;1362&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;피연산자는 없을 수도, 여러 개일 수도 있음&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;1425&quot; data-start=&quot;1397&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;보통은 메모리 주소나 레지스터 이름 형태로 명시&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-end=&quot;1450&quot; data-start=&quot;1432&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;  &lt;b&gt;[자료구조] 스택과 큐&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style2&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;자료구조&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;설명&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;방식&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;  ️ 스택(Stack) &lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; 한쪽이 막힌 구조 &lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; 후입선출 (LIFO)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;: 나중에 저장한 데이터를 가장 먼저 빼내는 데이터 관리 방식 &lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;   큐(Queue) &lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; 양쪽이 열린 구조 &lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; 선입선출 (FIFO)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;: 가장 먼저 저장된 데이터부터 빼네는 데이터 관리 방식 &lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-end=&quot;1603&quot; data-start=&quot;1590&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;  &lt;b&gt;[문제 풀이]&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;h3 data-end=&quot;1626&quot; data-start=&quot;1605&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;  &lt;b&gt;p.51 확인문제 3번&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; 프로그램이 실행되려면 반드시 (&lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;b&gt;메모리)&lt;/b&gt;&lt;/span&gt;에 저장되어 있어야 합니다. &lt;/span&gt;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-start=&quot;1605&quot; data-end=&quot;1626&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &amp;nbsp;&lt;b&gt;p.65 확인문제 3번&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Q. 1101(2)의 음수를 2의 보수 표현법으로 구하기&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1751809275874&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;1 1 0 1
   &amp;darr;      (모든 0과 1 뒤집기)
0 0 1 0
   &amp;darr;      (1 더하기)
0 0 1 1&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;정답: &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;0011(2)&lt;/span&gt; &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;</description>
      <category>Reading/혼자 공부하는 컴퓨터 구조+운영체제</category>
      <category>혼공컴운</category>
      <category>혼공파</category>
      <category>혼공학습단</category>
      <category>혼자공부하는컴퓨터구조운영체제</category>
      <author>yong_ღ'ᴗ'ღ</author>
      <guid isPermaLink="true">https://yong-codinglog.tistory.com/262</guid>
      <comments>https://yong-codinglog.tistory.com/262#entry262comment</comments>
      <pubDate>Sun, 6 Jul 2025 22:43:42 +0900</pubDate>
    </item>
  </channel>
</rss>