<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>wan-stack</title>
    <link>https://wan-stack.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Fri, 12 Jun 2026 12:40:36 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>wan-stack</managingEditor>
    <item>
      <title>AI 프롬프트 잘 쓰는 법｜언어화된 샘플링으로 ChatGPT 답변 퀄리티 2배 높이기</title>
      <link>https://wan-stack.tistory.com/15</link>
      <description>&lt;h1 data-end=&quot;179&quot; data-start=&quot;147&quot;&gt;AI 프롬프트 고수들만 아는 &lt;b&gt;언어화된 샘플링&lt;/b&gt;&lt;/h1&gt;
&lt;h3 data-end=&quot;211&quot; data-start=&quot;180&quot; data-ke-size=&quot;size23&quot;&gt;같은 질문인데, 답변 퀄리티가 2배 달라지는 이유&lt;/h3&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;252&quot; data-start=&quot;218&quot; data-ke-size=&quot;size26&quot;&gt;인트로｜AI가 대답을 &amp;lsquo;대충&amp;rsquo; 한다고 느껴진 적 있나요?&lt;/h2&gt;
&lt;p data-end=&quot;280&quot; data-start=&quot;254&quot; data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;블로그 글 써줘&amp;rdquo;&lt;br /&gt;&amp;ldquo;마케팅 문구 만들어줘&amp;rdquo;&lt;/p&gt;
&lt;p data-end=&quot;280&quot; data-start=&quot;254&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;360&quot; data-start=&quot;282&quot; data-ke-size=&quot;size16&quot;&gt;ChatGPT에게 이렇게 요청했는데,&lt;br /&gt;  &lt;b&gt;어디서 본 듯한 문장&lt;/b&gt;,&lt;br /&gt;  &lt;b&gt;영혼 없는 결과&lt;/b&gt;가 나와서 실망한 적 없으신가요?&lt;/p&gt;
&lt;p data-end=&quot;360&quot; data-start=&quot;282&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;423&quot; data-start=&quot;362&quot; data-ke-size=&quot;size16&quot;&gt;사실 이건 AI 성능 문제라기보다,&lt;br /&gt;&lt;b&gt;AI에게 &amp;lsquo;생각할 시간&amp;rsquo;을 주지 않았기 때문&lt;/b&gt;일 가능성이 큽니다.&lt;/p&gt;
&lt;p data-end=&quot;423&quot; data-start=&quot;362&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;501&quot; data-start=&quot;425&quot; data-ke-size=&quot;size16&quot;&gt;오늘은&lt;br /&gt;  &lt;b&gt;AI가 스스로 분석하고&lt;/b&gt;,&lt;br /&gt;  &lt;b&gt;논리를 점검하며&lt;/b&gt;,&lt;br /&gt;  &lt;b&gt;훨씬 정교한 답변을 내놓게 만드는 방법&lt;/b&gt;&lt;/p&gt;
&lt;p data-end=&quot;552&quot; data-start=&quot;503&quot; data-ke-size=&quot;size16&quot;&gt;바로 &lt;b&gt;&amp;lsquo;언어화된 샘플링(Verbalized Sampling)&amp;rsquo;&lt;/b&gt; 기법을 소개합니다.&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-end=&quot;586&quot; data-start=&quot;559&quot; data-ke-size=&quot;size26&quot;&gt;개념 정리｜&amp;lsquo;언어화된 샘플링&amp;rsquo;이란 무엇인가?&lt;/h2&gt;
&lt;h3 data-end=&quot;601&quot; data-start=&quot;588&quot; data-ke-size=&quot;size23&quot;&gt;한 문장 요약   &lt;b&gt;AI의 생각 과정을 밖으로 꺼내게 하는 프롬프트 기법&lt;/b&gt;&lt;/h3&gt;
&lt;p data-end=&quot;654&quot; data-start=&quot;640&quot; data-ke-size=&quot;size16&quot;&gt;보통 AI는 내부적으로&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;714&quot; data-start=&quot;655&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;670&quot; data-start=&quot;655&quot;&gt;수많은 단어 후보 중&lt;/li&gt;
&lt;li data-end=&quot;692&quot; data-start=&quot;671&quot;&gt;확률이 가장 높은 단어를 선택해&lt;/li&gt;
&lt;li data-end=&quot;714&quot; data-start=&quot;693&quot;&gt;&lt;b&gt;결과만&lt;/b&gt; 우리에게 보여줍니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;746&quot; data-start=&quot;716&quot; data-ke-size=&quot;size16&quot;&gt;우리는 &lt;b&gt;과정은 보지 못하고 결과만 받는 구조&lt;/b&gt;&lt;/p&gt;
&lt;h3 data-end=&quot;763&quot; data-start=&quot;748&quot; data-ke-size=&quot;size23&quot;&gt;언어화된 샘플링이란?&lt;/h3&gt;
&lt;p data-end=&quot;779&quot; data-start=&quot;764&quot; data-ke-size=&quot;size16&quot;&gt;AI가 내부에서 수행하는&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;807&quot; data-start=&quot;780&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;786&quot; data-start=&quot;780&quot;&gt;분석&lt;/li&gt;
&lt;li data-end=&quot;793&quot; data-start=&quot;787&quot;&gt;비교&lt;/li&gt;
&lt;li data-end=&quot;800&quot; data-start=&quot;794&quot;&gt;판단&lt;/li&gt;
&lt;li data-end=&quot;807&quot; data-start=&quot;801&quot;&gt;선택&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;850&quot; data-start=&quot;809&quot; data-ke-size=&quot;size16&quot;&gt;이 과정을 &lt;b&gt;텍스트로 직접 &amp;lsquo;언어화&amp;rsquo;해서 출력하게 만드는 방식&lt;/b&gt;입니다.&lt;/p&gt;
&lt;p data-end=&quot;864&quot; data-start=&quot;852&quot; data-ke-size=&quot;size16&quot;&gt;  쉽게 비유하면&lt;/p&gt;
&lt;blockquote data-end=&quot;931&quot; data-start=&quot;865&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;931&quot; data-start=&quot;867&quot; data-ke-size=&quot;size16&quot;&gt;시험 문제를 풀 때&lt;br /&gt;  머릿속으로만 풀지 말고&lt;br /&gt;  연습장에 풀이 과정을 적으면서 풀라고 시키는 것&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-end=&quot;960&quot; data-start=&quot;933&quot; data-ke-size=&quot;size16&quot;&gt;이 차이가 &lt;b&gt;답변 퀄리티의 격차&lt;/b&gt;를 만듭니다.&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-end=&quot;992&quot; data-start=&quot;967&quot; data-ke-size=&quot;size26&quot;&gt;핵심 원리｜왜 그냥 답변보다 효과적일까?&lt;/h2&gt;
&lt;p data-end=&quot;1038&quot; data-start=&quot;994&quot; data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;결과만 달라지는 게 아니라,&lt;br /&gt;&lt;b&gt;AI의 사고 구조 자체가 달라집니다.&lt;/b&gt;&amp;rdquo;&lt;/p&gt;
&lt;h3 data-end=&quot;1063&quot; data-start=&quot;1040&quot; data-ke-size=&quot;size23&quot;&gt;① 자가 검증(Self-check)&lt;/h3&gt;
&lt;p data-end=&quot;1116&quot; data-start=&quot;1064&quot; data-ke-size=&quot;size16&quot;&gt;AI는 과정을 글로 적으면서&lt;br /&gt;  앞뒤 논리가 맞는지&lt;br /&gt;  스스로 점검하고 수정합니다.&lt;/p&gt;
&lt;h3 data-end=&quot;1137&quot; data-start=&quot;1118&quot; data-ke-size=&quot;size23&quot;&gt;② 할루시네이션(환각) 억제&lt;/h3&gt;
&lt;p data-end=&quot;1193&quot; data-start=&quot;1138&quot; data-ke-size=&quot;size16&quot;&gt;근거 &amp;rarr; 분석 &amp;rarr; 결론 구조가 되면&lt;br /&gt;  &lt;b&gt;근거 없는 말&lt;/b&gt;이 나올 확률이 급격히 줄어듭니다.&lt;/p&gt;
&lt;h3 data-end=&quot;1227&quot; data-start=&quot;1195&quot; data-ke-size=&quot;size23&quot;&gt;③ 맥락 활성화(Context Activation)&lt;/h3&gt;
&lt;p data-end=&quot;1291&quot; data-start=&quot;1228&quot; data-ke-size=&quot;size16&quot;&gt;타겟, 확률, 조건을 명시하는 순간&lt;br /&gt;  AI 내부의 관련 지식 데이터가&lt;br /&gt;  훨씬 정교하게 활성화됩니다.&lt;/p&gt;
&lt;p data-end=&quot;1344&quot; data-start=&quot;1293&quot; data-ke-size=&quot;size16&quot;&gt;즉, &lt;b&gt;&amp;ldquo;대충 하나 뽑아줘&amp;rdquo; &amp;rarr; &amp;ldquo;전략적으로 고르게 만드는 구조&amp;rdquo;&lt;/b&gt;로 바뀌는 겁니다.&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-end=&quot;1383&quot; data-start=&quot;1351&quot; data-ke-size=&quot;size26&quot;&gt;프롬프트 실전 적용｜답변 퀄리티를 높이는 마법의 문구&lt;/h2&gt;
&lt;h3 data-end=&quot;1406&quot; data-start=&quot;1385&quot; data-ke-size=&quot;size23&quot;&gt;사례｜친환경 텀블러 마케팅 문구&lt;/h3&gt;
&lt;h4 data-end=&quot;1424&quot; data-start=&quot;1408&quot; data-ke-size=&quot;size20&quot;&gt;❌ 일반적인 프롬프트&lt;/h4&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;span&gt;새로 출시된 친환경 텀블러 홍보 문구 작성해줘. &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;1468&quot; data-start=&quot;1461&quot; data-ke-size=&quot;size16&quot;&gt;  결과&lt;/p&gt;
&lt;blockquote data-end=&quot;1504&quot; data-start=&quot;1469&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;1504&quot; data-start=&quot;1471&quot; data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;지구를 생각하는 선택! 지금 친환경 텀블러를 만나보세요.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-end=&quot;1527&quot; data-start=&quot;1506&quot; data-ke-size=&quot;size16&quot;&gt;&amp;rarr; 무난하지만 &lt;b&gt;기억에 남지 않음&lt;/b&gt;&lt;/p&gt;
&lt;hr data-end=&quot;1532&quot; data-start=&quot;1529&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;1565&quot; data-start=&quot;1534&quot; data-ke-size=&quot;size20&quot;&gt;✅ 언어화된 샘플링 적용 프롬프트 (강력 추천)&lt;/h4&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&lt;b&gt;&lt;span&gt;&lt;span&gt;홍보 문구를 작성하기 전에 먼저 다음 과정을 수행해줘.&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;1.&lt;/span&gt;&lt;/span&gt;&lt;span&gt; 예상 타겟 고객을 3가지 유형으로 나눠줘. &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;2.&lt;/span&gt;&lt;/span&gt;&lt;span&gt; 각 타겟이 이 제품을 구매할 확률(%)과 그 이유를 분석해줘. &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;3.&lt;/span&gt;&lt;/span&gt;&lt;span&gt; 분석 결과 구매 확률이 가장 높은 타겟을 선정해줘. &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;4.&lt;/span&gt;&lt;/span&gt;&lt;span&gt; 그 타겟에 최적화된 홍보 문구를 작성해줘. &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-end=&quot;1734&quot; data-start=&quot;1731&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;1753&quot; data-start=&quot;1736&quot; data-ke-size=&quot;size23&quot;&gt;AI의 분석형 답변 예시&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;타겟구매 확률분석
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;1930&quot; data-start=&quot;1755&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-end=&quot;1930&quot; data-start=&quot;1789&quot;&gt;
&lt;tr data-end=&quot;1845&quot; data-start=&quot;1789&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1801&quot; data-start=&quot;1789&quot;&gt;가치소비 MZ세대&lt;/td&gt;
&lt;td data-end=&quot;1807&quot; data-start=&quot;1801&quot; data-col-size=&quot;sm&quot;&gt;65%&lt;/td&gt;
&lt;td data-end=&quot;1845&quot; data-start=&quot;1807&quot; data-col-size=&quot;sm&quot;&gt;친환경을 &amp;lsquo;힙한 라이프스타일&amp;rsquo;로 인식, SNS 공유 가치 높음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1886&quot; data-start=&quot;1846&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1856&quot; data-start=&quot;1846&quot;&gt;오피스 직장인&lt;/td&gt;
&lt;td data-end=&quot;1862&quot; data-start=&quot;1856&quot; data-col-size=&quot;sm&quot;&gt;25%&lt;/td&gt;
&lt;td data-end=&quot;1886&quot; data-start=&quot;1862&quot; data-col-size=&quot;sm&quot;&gt;보온력&amp;middot;디자인 중시, 선물 수요 존재&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1930&quot; data-start=&quot;1887&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1898&quot; data-start=&quot;1887&quot;&gt;캠핑&amp;middot;아웃도어족&lt;/td&gt;
&lt;td data-end=&quot;1904&quot; data-start=&quot;1898&quot; data-col-size=&quot;sm&quot;&gt;10%&lt;/td&gt;
&lt;td data-end=&quot;1930&quot; data-start=&quot;1904&quot; data-col-size=&quot;sm&quot;&gt;내구성 중시하지만 기존 장비 보유율 높음&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;1953&quot; data-start=&quot;1932&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;최종 문구 (MZ세대 집중)&lt;/b&gt;&lt;/p&gt;
&lt;blockquote data-end=&quot;2029&quot; data-start=&quot;1954&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;2029&quot; data-start=&quot;1956&quot; data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;내 책상 위 작은 지구 보호소.&lt;br /&gt;오늘 당신의 커피 한 잔이 가치 있는 변화의 시작이 됩니다.&lt;br /&gt;#제로웨이스트&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-end=&quot;2064&quot; data-start=&quot;2031&quot; data-ke-size=&quot;size16&quot;&gt;  단순 문구가 아니라 &lt;b&gt;전략 기반 결과물&lt;/b&gt;이 됩니다.&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-end=&quot;2102&quot; data-start=&quot;2071&quot; data-ke-size=&quot;size26&quot;&gt;기대 효과｜창의성과 논리, 두 마리 토끼를 잡는 법&lt;/h2&gt;
&lt;p data-end=&quot;2127&quot; data-start=&quot;2104&quot; data-ke-size=&quot;size16&quot;&gt;언어화된 샘플링을 사용하면 얻는 변화  &lt;/p&gt;
&lt;h3 data-end=&quot;2142&quot; data-start=&quot;2129&quot; data-ke-size=&quot;size23&quot;&gt;✔ 논리적 타당성&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2196&quot; data-start=&quot;2143&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2170&quot; data-start=&quot;2143&quot;&gt;왜 이 결과가 나왔는지 &lt;b&gt;근거 설명 가능&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;2196&quot; data-start=&quot;2171&quot;&gt;기획서, 보고서, 제안서에 바로 활용 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;2211&quot; data-start=&quot;2198&quot; data-ke-size=&quot;size23&quot;&gt;✔ 창의적 다양성&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2254&quot; data-start=&quot;2212&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2229&quot; data-start=&quot;2212&quot;&gt;확률&amp;middot;타겟 분석 과정에서&lt;/li&gt;
&lt;li data-end=&quot;2254&quot; data-start=&quot;2230&quot;&gt;&lt;b&gt;예상치 못한 키워드와 관점&lt;/b&gt;이 등장&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;2269&quot; data-start=&quot;2256&quot; data-ke-size=&quot;size23&quot;&gt;✔ 의사결정 보조&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2309&quot; data-start=&quot;2270&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2284&quot; data-start=&quot;2270&quot;&gt;결과 하나가 아니라&lt;/li&gt;
&lt;li data-end=&quot;2309&quot; data-start=&quot;2285&quot;&gt;&lt;b&gt;&amp;lsquo;미니 전략 보고서&amp;rsquo;를 받는 효과&lt;/b&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;2348&quot; data-start=&quot;2316&quot; data-ke-size=&quot;size26&quot;&gt;마무리｜AI와 대화하는 방식이 결과의 격차를 만듭니다&lt;/h2&gt;
&lt;p data-end=&quot;2379&quot; data-start=&quot;2350&quot; data-ke-size=&quot;size16&quot;&gt;이제 AI에게&lt;br /&gt;❌ &amp;ldquo;이거 해줘&amp;rdquo;라고 묻지 마세요.&lt;/p&gt;
&lt;p data-end=&quot;2394&quot; data-start=&quot;2381&quot; data-ke-size=&quot;size16&quot;&gt;대신 이렇게 말해보세요.&lt;/p&gt;
&lt;p data-end=&quot;2426&quot; data-start=&quot;2396&quot; data-ke-size=&quot;size16&quot;&gt;  &lt;b&gt;&amp;ldquo;먼저 분석하고, 그다음 결과를 알려줘.&amp;rdquo;&lt;/b&gt;&lt;/p&gt;
&lt;p data-end=&quot;2437&quot; data-start=&quot;2428&quot; data-ke-size=&quot;size16&quot;&gt;이 한 문장이&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2476&quot; data-start=&quot;2438&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2449&quot; data-start=&quot;2438&quot;&gt;초보 사용자와&lt;/li&gt;
&lt;li data-end=&quot;2476&quot; data-start=&quot;2450&quot;&gt;AI를 도구로 쓰는 고수의 차이를 만듭니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;2555&quot; data-start=&quot;2478&quot; data-ke-size=&quot;size16&quot;&gt;  오늘 소개한 &lt;b&gt;언어화된 샘플링 프롬프트&lt;/b&gt;,&lt;br /&gt;지금 바로 복사해서 사용해 보세요.&lt;br /&gt;답변의 밀도가 &lt;b&gt;확실히 달라질 겁니다.&lt;/b&gt;&lt;/p&gt;</description>
      <category>AI</category>
      <category>ai질문법</category>
      <category>AI프롬프트</category>
      <category>AI프롬프트예시</category>
      <category>AI활용법</category>
      <category>ChatGPT</category>
      <category>chatgpt잘쓰는법</category>
      <category>chatgpt활용</category>
      <category>프롬프트기술</category>
      <category>프롬프트작성법</category>
      <author>wan-stack</author>
      <guid isPermaLink="true">https://wan-stack.tistory.com/15</guid>
      <comments>https://wan-stack.tistory.com/15#entry15comment</comments>
      <pubDate>Fri, 9 Jan 2026 14:08:31 +0900</pubDate>
    </item>
    <item>
      <title>Auto GPT_차근히 알아보자:) (Chat GPT API 활용해보기)</title>
      <link>https://wan-stack.tistory.com/14</link>
      <description>&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;1. Auto GPT는?&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;Chat GPT API를 활용해서 만든 응용 프로그램&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용자가 임무를 주면 중간 단계의 보조 업무들은 자동적으로 수행된다는&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;Auto GPT는 실수를 스스로 수정하는 '자율반복(autonomous iterations)' 기능을&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용해 결과물을 생성하는 AI 챗봇,&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;GPT-4를 기반으로 '시그니피컨트 그래비타스(Significant Gravitas)라는 개발자가&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;a href=&quot;https://github.com/Significant-Gravitas/AutoGPT&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://github.com/Significant-Gravitas/AutoGPT&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1709174747645&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - Significant-Gravitas/AutoGPT: AutoGPT is the vision of accessible AI for everyone, to use and to build on. Our mission &quot; data-og-description=&quot;AutoGPT is the vision of accessible AI for everyone, to use and to build on. Our mission is to provide the tools, so that you can focus on what matters. - Significant-Gravitas/AutoGPT&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/Significant-Gravitas/AutoGPT&quot; data-og-url=&quot;https://github.com/Significant-Gravitas/AutoGPT&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/fZBTD/hyVqpjlGnt/PjRtdTiNT5mBLIr3splgZK/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/Significant-Gravitas/AutoGPT&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/Significant-Gravitas/AutoGPT&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/fZBTD/hyVqpjlGnt/PjRtdTiNT5mBLIr3splgZK/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GitHub - Significant-Gravitas/AutoGPT: AutoGPT is the vision of accessible AI for everyone, to use and to build on. Our mission&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;AutoGPT is the vision of accessible AI for everyone, to use and to build on. Our mission is to provide the tools, so that you can focus on what matters. - Significant-Gravitas/AutoGPT&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&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;b&gt;&amp;nbsp;- Auto GPT를 구성하는 기본 요소로는&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &lt;b&gt;prompt / Tool / GPT API&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; 3가지라고 볼 수 있으며, 핵심은 GPT 3.5, GPT - 4 API이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; (Tool로는 검색과 파일저장 등과 같은 것이라고 생각하면 된다.)&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;그렇다면 API란? 무엇인가???&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1000&quot; data-origin-height=&quot;470&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oyj2h/btsFp7q3TqP/Nk42OMGx0ohnv8hQq6kVTK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oyj2h/btsFp7q3TqP/Nk42OMGx0ohnv8hQq6kVTK/img.png&quot; data-alt=&quot;https://www.geeksforgeeks.org/what-is-an-api/ 이미지 참고&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oyj2h/btsFp7q3TqP/Nk42OMGx0ohnv8hQq6kVTK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Foyj2h%2FbtsFp7q3TqP%2FNk42OMGx0ohnv8hQq6kVTK%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;1000&quot; height=&quot;470&quot; data-origin-width=&quot;1000&quot; data-origin-height=&quot;470&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;https://www.geeksforgeeks.org/what-is-an-api/ 이미지 참고&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;API(Application Programming Interface)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다양한 소프트웨어 어플리케이션들이 서로 상호작용하고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;b&gt;&amp;gt;&amp;gt;각 분야의 개발자들이 자신의 서비스나 앱에서 해당 기능을 쉽게&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; 사용할 수 있도록 모아놓은 함수들이라고 생각하면 쉽다.&lt;/b&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;gt; 레스토랑에 가서 요리를 주문할 때, 주방에 가서 직접 요리하지 않고,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; 점원을 통해 주문을 하고 요리는 쉐프가 만들어서 완성된 것들을 가져다준다.&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;&amp;nbsp; &amp;nbsp; 즉, API를 통해 요청을 하고 개발자들은 다른 프로그램이나 서비스의 기능을&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;자신의 프로그램에 쉽게 적용할 수 있다는 말이다.&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;&amp;nbsp; &amp;nbsp;&amp;gt;&amp;gt; 우리가 원하는 고급 기능을 스스로 만들지 않고, 남이 만들어 놓은 것을 사용하게 되는 것!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;b&gt;&amp;nbsp;&lt;i&gt;(직접 만들지 않고 요청만으로 사용가능하다)&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;2. Auto GPT의 핵심은 GPT는??&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;GPT는?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- Generative Pre-trained Transformer 의 약자&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- Open AI에서 개발한 자연어 처리 기술&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 딥러닝 모델 중 하나로, 트랜스포머 아키텍처를 기반&amp;nbsp;&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;&amp;nbsp;GPT는 큰 규모의 텍스트 데이터를 기반으로 사전 훈련(Pre - training)이 이루어진 후,&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;챗GPT는 크게 두번의 학습을 통해서 만들어지는데, 먼저 챗GPT의 본체 격인 'GPT'에 지식을&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;학습시키고, 그 다음에 GPT에게 질문에 답을 하는 행동을 하도록 학습시키는 것&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;/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;다음 낱말 맞추기 연습을 무한히 반복시켜 지식을 학습하게 한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.donga.com/news/It/article/all/20230227/118085105/1&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.donga.com/news/It/article/all/20230227/118085105/1&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1709176263235&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;챗GPT란 무엇인가：가장 쉽게 설명해드립니다[서영빈의 데이터경제]&quot; data-og-description=&quot;1904년 독일, 사칙연산을 할 수 있는 천재적인 말 &amp;lsquo;한스&amp;rsquo;가 나타나 세상을 깜짝 놀라게 한 일이 있었습니다. 당시 수학교사였던 오스텐 씨는 &amp;lsquo;내가 기르는 말은 수학계산도 할 &amp;hellip;&quot; data-og-host=&quot;www.donga.com&quot; data-og-source-url=&quot;https://www.donga.com/news/It/article/all/20230227/118085105/1&quot; data-og-url=&quot;https://www.donga.com/news/It/article/all/20230227/118085105/1&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bToUId/hyVqji9mAB/SAKijTQ9k23e7TYZWKy63k/img.jpg?width=549&amp;amp;height=499&amp;amp;face=0_0_549_499,https://scrap.kakaocdn.net/dn/bVPSre/hyVuj9C7ai/lvJlmAIZ7ii8pfQkVFOF91/img.jpg?width=549&amp;amp;height=499&amp;amp;face=0_0_549_499,https://scrap.kakaocdn.net/dn/b38Fi6/hyVqlusDXa/4pvB7J1g6Jktyf5nYDIZZK/img.jpg?width=640&amp;amp;height=428&amp;amp;face=0_0_640_428&quot;&gt;&lt;a href=&quot;https://www.donga.com/news/It/article/all/20230227/118085105/1&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.donga.com/news/It/article/all/20230227/118085105/1&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bToUId/hyVqji9mAB/SAKijTQ9k23e7TYZWKy63k/img.jpg?width=549&amp;amp;height=499&amp;amp;face=0_0_549_499,https://scrap.kakaocdn.net/dn/bVPSre/hyVuj9C7ai/lvJlmAIZ7ii8pfQkVFOF91/img.jpg?width=549&amp;amp;height=499&amp;amp;face=0_0_549_499,https://scrap.kakaocdn.net/dn/b38Fi6/hyVqlusDXa/4pvB7J1g6Jktyf5nYDIZZK/img.jpg?width=640&amp;amp;height=428&amp;amp;face=0_0_640_428');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;챗GPT란 무엇인가：가장 쉽게 설명해드립니다[서영빈의 데이터경제]&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;1904년 독일, 사칙연산을 할 수 있는 천재적인 말 &amp;lsquo;한스&amp;rsquo;가 나타나 세상을 깜짝 놀라게 한 일이 있었습니다. 당시 수학교사였던 오스텐 씨는 &amp;lsquo;내가 기르는 말은 수학계산도 할 &amp;hellip;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.donga.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;또, GPT는 Transformer Decoder 기반의&amp;nbsp; Large Language Model&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;트랜스포머는 ' Attention is All You Need라는 논문에서 처음 나왔다고 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;582&quot; data-origin-height=&quot;368&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/prvqn/btsFm42ZuGZ/dV0DdQGhlT5SLu4L78VKz1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/prvqn/btsFm42ZuGZ/dV0DdQGhlT5SLu4L78VKz1/img.png&quot; data-alt=&quot;https://wikidocs.net/31379 /&amp;amp;nbsp; 이미지 참고&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/prvqn/btsFm42ZuGZ/dV0DdQGhlT5SLu4L78VKz1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fprvqn%2FbtsFm42ZuGZ%2FdV0DdQGhlT5SLu4L78VKz1%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;582&quot; height=&quot;368&quot; data-origin-width=&quot;582&quot; data-origin-height=&quot;368&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;https://wikidocs.net/31379 /&amp;nbsp; 이미지 참고&lt;/figcaption&gt;
&lt;/figure&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;Transformer는 모델의 구조로&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- Encoder, Decoder으로 이루어짐&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- Self - Attention 기반&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- Inductive Bias가 적음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- Scaling이 쉬움 (모델의 크기를 크게 증가시키기가 쉽다는 이야기)&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;언어 모델 뿐만 아니라 다른 비전이나 음성인식 같은 분야에서도 많이 사용되고 있는 추세라고함.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;Large Language Model은?&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;gt; Large Language Model는 &lt;b&gt;P(text)&lt;/b&gt;를 계산할 수 있는 &lt;b&gt;큰 모델&lt;/b&gt; &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;- &lt;b&gt;Probability of Text (문장, 텍스트의 확률)&lt;/b&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;- &lt;b&gt;큰 모델&lt;/b&gt;이라고 하는 것은 파라미터를 많이 사용하는 큰&amp;nbsp;뉴럴&amp;nbsp;네트워크를&amp;nbsp;뜻한다. &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;(현재까지는 일반적으로 트랜스포머를 사용하고 있다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Language&amp;nbsp;Modeling은? &lt;br /&gt;텍스트의&amp;nbsp;확률을&amp;nbsp;계산할&amp;nbsp;수&amp;nbsp;있도록&amp;nbsp;학습&amp;nbsp;하는&amp;nbsp;것 &lt;br /&gt;&lt;br /&gt;P(next&amp;nbsp;|&amp;nbsp;prev) &lt;br /&gt;이전이&amp;nbsp;주어졌을&amp;nbsp;때&amp;nbsp;다음이&amp;nbsp;나올&amp;nbsp;것에&amp;nbsp;대한&amp;nbsp;확률을&amp;nbsp;알고&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;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;In&amp;nbsp;context&amp;nbsp;learning&lt;/b&gt; &lt;br /&gt;모델에 문장을 주면 문장&amp;nbsp;내에&amp;nbsp;패턴을&amp;nbsp;이해해서&amp;nbsp;적절한&amp;nbsp;다음&amp;nbsp;토큰을&amp;nbsp;만들어&amp;nbsp;내는&amp;nbsp;능력 &lt;br /&gt;&lt;br /&gt;어떠한&amp;nbsp;입력&amp;nbsp;내에서&amp;nbsp;패턴을&amp;nbsp;배우고&amp;nbsp;다음에&amp;nbsp;어떤&amp;nbsp;말을 &lt;br /&gt;해야&amp;nbsp;될지를&amp;nbsp;알게&amp;nbsp;된다는&amp;nbsp;것 &lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;626&quot; data-origin-height=&quot;408&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/5FZ0q/btsFp84Ajrm/UNqvRPVNsXMIMwZwprtAdK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/5FZ0q/btsFp84Ajrm/UNqvRPVNsXMIMwZwprtAdK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/5FZ0q/btsFp84Ajrm/UNqvRPVNsXMIMwZwprtAdK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F5FZ0q%2FbtsFp84Ajrm%2FUNqvRPVNsXMIMwZwprtAdK%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;626&quot; height=&quot;408&quot; data-origin-width=&quot;626&quot; data-origin-height=&quot;408&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;task&amp;nbsp;description을&amp;nbsp;주고&amp;nbsp;예시를&amp;nbsp;아래에&amp;nbsp;주어준다. &lt;br /&gt;패턴을&amp;nbsp;주고&amp;nbsp;결과가&amp;nbsp;어떻게&amp;nbsp;나올&amp;nbsp;것인가? &lt;br /&gt;&lt;br /&gt;모델에게&amp;nbsp;주는&amp;nbsp;일련의&amp;nbsp;텍스트를&amp;nbsp;의미하고 &lt;br /&gt;예제를&amp;nbsp;주며&amp;nbsp;모델이&amp;nbsp;잘&amp;nbsp;이해할&amp;nbsp;수&amp;nbsp;있도록&amp;nbsp;한다. &lt;br /&gt;&lt;br /&gt;예제가&amp;nbsp;1개이면&amp;nbsp;원샷&amp;nbsp;러닝이라고도&amp;nbsp;한다. &lt;br /&gt;예제를&amp;nbsp;하나만&amp;nbsp;주고&amp;nbsp;예측하게&amp;nbsp;하는&amp;nbsp;것 &lt;br /&gt;&lt;br /&gt;3개는&amp;nbsp;3샷&amp;nbsp;러닝이라고&amp;nbsp;한다. &lt;br /&gt;&lt;br /&gt;예제를&amp;nbsp;하나도&amp;nbsp;주지&amp;nbsp;않고&amp;nbsp;예측을&amp;nbsp;하기도하는데 &lt;br /&gt;제로샷&amp;nbsp;러닝이라고&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;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Reasoning - Chain of thought&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;gt; 추론을 할 수 있는 능력&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;745&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/R2tzf/btsFm00CcZt/vMKDzkfCgNfsTOYPQkPXFK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/R2tzf/btsFm00CcZt/vMKDzkfCgNfsTOYPQkPXFK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/R2tzf/btsFm00CcZt/vMKDzkfCgNfsTOYPQkPXFK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FR2tzf%2FbtsFm00CcZt%2FvMKDzkfCgNfsTOYPQkPXFK%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;1280&quot; height=&quot;745&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;745&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;chain-of-thought prompting은 step-by-step thought process를 통해 &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;answer를 구하는 과정을 흉내낼 수 있도록 도와줍니다. &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;(여기서 흉내낸다는 의미는 Limitations에 나와있습니다.)&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;chain-of-thought prompting은 reasoning task에 있어 몇가지 좋은 특성들을 가지게 됩니다.&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; 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;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;chain-of-thought prompting은 모델이 문제를 Intermediate step으로 쪼갠 후 해결할 수 있도록 도와줍니다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;이를 통해 문제를 해결하기 위해 reasoning step을 요구하는 문제에 대해 더 많은 계산을 수행할 수 있도록 도와줍니다.&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;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;chain-of-thought prompting은 model의 행동에 관해 해석할 수 있는 window를 제공합니다. 특정한 answer에 어떻게 도착했는지 알 수 있기 때문에 어떤 intermediate step이 잘못되었는지 debugging할 수도 있습니다.&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;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;chain-of-thought prompting은 사람이 language를 이용하여 해결할 수 있는 task에 대해 적용이 가능할 수도 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;chain-of-thought prompting은 large language model에 쉽게 적용이 가능한 방법입니다.&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;style3&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;오늘은 Auto GPT와 Auto GPT의 핵심으로 사용되는 GPT에 대해서 공부해보았습니다.&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;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;트랜스포머 모델이라든지,&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;LLM의 능력 &lt;b&gt;In context learning, &lt;b&gt;Reasoning &lt;/b&gt;&lt;/b&gt;등의 개념을&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;간단하게 알아볼 수 있었습니다.&amp;nbsp;&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;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;다음으로는 ~~&lt;br /&gt;실제로 사용하기 위해서 최소한으로 필요한&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;파이썬 설치 / Auto GPT 설치 / Open AI key 설정에 대해서 공부해보도록 하겠습니다.&lt;/span&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&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;p data-ke-size=&quot;size16&quot;&gt;참고,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://velog.io/@nkw011/nlp-chain-of-thought&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://velog.io/@nkw011/nlp-chain-of-thought&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1709179021529&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;Chain-of-Thought Prompting Elicits Reasoning in Large Language Models 정리&quot; data-og-description=&quot;Chain-of-Thought Prompting Elicits Reasoning in Large Language Models 논문 요약 정리&quot; data-og-host=&quot;velog.io&quot; data-og-source-url=&quot;https://velog.io/@nkw011/nlp-chain-of-thought&quot; data-og-url=&quot;https://velog.io/@nkw011/nlp-chain-of-thought&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/D0j1U/hyVumrJRAo/C4O2jwEVSOaHptyOGUQtEk/img.png?width=2070&amp;amp;height=1206&amp;amp;face=0_0_2070_1206,https://scrap.kakaocdn.net/dn/sRs2Y/hyVqurqwyM/2WvGWkyj0arR99BcfxSEIk/img.png?width=2070&amp;amp;height=1206&amp;amp;face=0_0_2070_1206,https://scrap.kakaocdn.net/dn/XOGKg/hyVuipkZLB/m10dMMWJcpp4Q1Zplmkiy0/img.png?width=2070&amp;amp;height=1206&amp;amp;face=0_0_2070_1206&quot;&gt;&lt;a href=&quot;https://velog.io/@nkw011/nlp-chain-of-thought&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://velog.io/@nkw011/nlp-chain-of-thought&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/D0j1U/hyVumrJRAo/C4O2jwEVSOaHptyOGUQtEk/img.png?width=2070&amp;amp;height=1206&amp;amp;face=0_0_2070_1206,https://scrap.kakaocdn.net/dn/sRs2Y/hyVqurqwyM/2WvGWkyj0arR99BcfxSEIk/img.png?width=2070&amp;amp;height=1206&amp;amp;face=0_0_2070_1206,https://scrap.kakaocdn.net/dn/XOGKg/hyVuipkZLB/m10dMMWJcpp4Q1Zplmkiy0/img.png?width=2070&amp;amp;height=1206&amp;amp;face=0_0_2070_1206');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Chain-of-Thought Prompting Elicits Reasoning in Large Language Models 정리&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Chain-of-Thought Prompting Elicits Reasoning in Large Language Models 논문 요약 정리&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;velog.io&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://wikidocs.net/31379&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://wikidocs.net/31379&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1709179031594&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;16-01 트랜스포머(Transformer)&quot; data-og-description=&quot;* 이번 챕터는 앞서 설명한 어텐션 메커니즘 챕터에 대한 사전 이해가 필요합니다. 트랜스포머(Transformer)는 2017년 구글이 발표한 논문인 Attention i&amp;hellip;&quot; data-og-host=&quot;wikidocs.net&quot; data-og-source-url=&quot;https://wikidocs.net/31379&quot; data-og-url=&quot;https://wikidocs.net/31379&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/qWffd/hyVuoQDve5/vrKme3KOfrlynqORiDBP0K/img.png?width=98&amp;amp;height=130&amp;amp;face=0_0_98_130,https://scrap.kakaocdn.net/dn/bevToN/hyVqnskuy5/5q0ufy1p7fQYt8xWmkyID0/img.png?width=585&amp;amp;height=245&amp;amp;face=0_0_585_245,https://scrap.kakaocdn.net/dn/diz1QL/hyVqhFEjtG/iUVtywer0rh8ayP9BLFUk1/img.png?width=591&amp;amp;height=224&amp;amp;face=0_0_591_224&quot;&gt;&lt;a href=&quot;https://wikidocs.net/31379&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://wikidocs.net/31379&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/qWffd/hyVuoQDve5/vrKme3KOfrlynqORiDBP0K/img.png?width=98&amp;amp;height=130&amp;amp;face=0_0_98_130,https://scrap.kakaocdn.net/dn/bevToN/hyVqnskuy5/5q0ufy1p7fQYt8xWmkyID0/img.png?width=585&amp;amp;height=245&amp;amp;face=0_0_585_245,https://scrap.kakaocdn.net/dn/diz1QL/hyVqhFEjtG/iUVtywer0rh8ayP9BLFUk1/img.png?width=591&amp;amp;height=224&amp;amp;face=0_0_591_224');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;16-01 트랜스포머(Transformer)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;* 이번 챕터는 앞서 설명한 어텐션 메커니즘 챕터에 대한 사전 이해가 필요합니다. 트랜스포머(Transformer)는 2017년 구글이 발표한 논문인 Attention i&amp;hellip;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;wikidocs.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.donga.com/news/It/article/all/20230227/118085105/1&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.donga.com/news/It/article/all/20230227/118085105/1&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1709179080278&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;챗GPT란 무엇인가：가장 쉽게 설명해드립니다[서영빈의 데이터경제]&quot; data-og-description=&quot;1904년 독일, 사칙연산을 할 수 있는 천재적인 말 &amp;lsquo;한스&amp;rsquo;가 나타나 세상을 깜짝 놀라게 한 일이 있었습니다. 당시 수학교사였던 오스텐 씨는 &amp;lsquo;내가 기르는 말은 수학계산도 할 &amp;hellip;&quot; data-og-host=&quot;www.donga.com&quot; data-og-source-url=&quot;https://www.donga.com/news/It/article/all/20230227/118085105/1&quot; data-og-url=&quot;https://www.donga.com/news/It/article/all/20230227/118085105/1&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bToUId/hyVqji9mAB/SAKijTQ9k23e7TYZWKy63k/img.jpg?width=549&amp;amp;height=499&amp;amp;face=0_0_549_499,https://scrap.kakaocdn.net/dn/bVPSre/hyVuj9C7ai/lvJlmAIZ7ii8pfQkVFOF91/img.jpg?width=549&amp;amp;height=499&amp;amp;face=0_0_549_499,https://scrap.kakaocdn.net/dn/b38Fi6/hyVqlusDXa/4pvB7J1g6Jktyf5nYDIZZK/img.jpg?width=640&amp;amp;height=428&amp;amp;face=0_0_640_428&quot;&gt;&lt;a href=&quot;https://www.donga.com/news/It/article/all/20230227/118085105/1&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.donga.com/news/It/article/all/20230227/118085105/1&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bToUId/hyVqji9mAB/SAKijTQ9k23e7TYZWKy63k/img.jpg?width=549&amp;amp;height=499&amp;amp;face=0_0_549_499,https://scrap.kakaocdn.net/dn/bVPSre/hyVuj9C7ai/lvJlmAIZ7ii8pfQkVFOF91/img.jpg?width=549&amp;amp;height=499&amp;amp;face=0_0_549_499,https://scrap.kakaocdn.net/dn/b38Fi6/hyVqlusDXa/4pvB7J1g6Jktyf5nYDIZZK/img.jpg?width=640&amp;amp;height=428&amp;amp;face=0_0_640_428');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;챗GPT란 무엇인가：가장 쉽게 설명해드립니다[서영빈의 데이터경제]&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;1904년 독일, 사칙연산을 할 수 있는 천재적인 말 &amp;lsquo;한스&amp;rsquo;가 나타나 세상을 깜짝 놀라게 한 일이 있었습니다. 당시 수학교사였던 오스텐 씨는 &amp;lsquo;내가 기르는 말은 수학계산도 할 &amp;hellip;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.donga.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.geeksforgeeks.org/what-is-an-api/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.geeksforgeeks.org/what-is-an-api/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1709179101910&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;What is an API (Application Programming Interface) - GeeksforGeeks&quot; data-og-description=&quot;A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.&quot; data-og-host=&quot;www.geeksforgeeks.org&quot; data-og-source-url=&quot;https://www.geeksforgeeks.org/what-is-an-api/&quot; data-og-url=&quot;https://www.geeksforgeeks.org/what-is-an-api/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bgMkBQ/hyVqg01EEU/hQD2S2HUXmPOKrLvxGjjfk/img.png?width=200&amp;amp;height=200&amp;amp;face=0_0_200_200,https://scrap.kakaocdn.net/dn/LQ71C/hyVul0FOaw/QJkvU6skbL8c93dZAI9etK/img.png?width=1000&amp;amp;height=470&amp;amp;face=0_0_1000_470,https://scrap.kakaocdn.net/dn/rqQUY/hyVqvYb9UW/NkUCYqDfKCSe47IBMM5arK/img.png?width=1000&amp;amp;height=470&amp;amp;face=0_0_1000_470&quot;&gt;&lt;a href=&quot;https://www.geeksforgeeks.org/what-is-an-api/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.geeksforgeeks.org/what-is-an-api/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bgMkBQ/hyVqg01EEU/hQD2S2HUXmPOKrLvxGjjfk/img.png?width=200&amp;amp;height=200&amp;amp;face=0_0_200_200,https://scrap.kakaocdn.net/dn/LQ71C/hyVul0FOaw/QJkvU6skbL8c93dZAI9etK/img.png?width=1000&amp;amp;height=470&amp;amp;face=0_0_1000_470,https://scrap.kakaocdn.net/dn/rqQUY/hyVqvYb9UW/NkUCYqDfKCSe47IBMM5arK/img.png?width=1000&amp;amp;height=470&amp;amp;face=0_0_1000_470');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;What is an API (Application Programming Interface) - GeeksforGeeks&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.geeksforgeeks.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;알아서 일하는 진짜 인공지능 Auto-GPT 서비스 구현 영상 강의 참고:)&lt;/p&gt;</description>
      <category>Chat GPT 활용</category>
      <author>wan-stack</author>
      <guid isPermaLink="true">https://wan-stack.tistory.com/14</guid>
      <comments>https://wan-stack.tistory.com/14#entry14comment</comments>
      <pubDate>Thu, 29 Feb 2024 13:02:04 +0900</pubDate>
    </item>
    <item>
      <title>프로그래머스(코딩테스트)_더 크게 합치기 :)</title>
      <link>https://wan-stack.tistory.com/13</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;Level 0 문제&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;1. String.valueOf();&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;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;2. Integer.parseInt();&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;&quot; &quot; + 1 +2 / 1+ &quot; &quot; + 2라고 작성해도 문자열로 인식하고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대소비교를 위해서 문자를 다시 숫자로 만들어서&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;더 큰 숫자를 출력하면 끝&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1704698699577&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution {
    public int solution(int a, int b) {
        String strA = String.valueOf(a);
        String strB = String.valueOf(b);
        
        String before = strA + strB;
        String after = strB + strA;
        
        int c = Integer.parseInt(before);
        int d = Integer.parseInt(after);
        
  
        return c &amp;gt;= d ? c : d;
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어설프지만.. 오늘도 한 문제씩 풀어나가본다!!&lt;/p&gt;</description>
      <category>코딩테스트</category>
      <author>wan-stack</author>
      <guid isPermaLink="true">https://wan-stack.tistory.com/13</guid>
      <comments>https://wan-stack.tistory.com/13#entry13comment</comments>
      <pubDate>Mon, 8 Jan 2024 16:25:35 +0900</pubDate>
    </item>
    <item>
      <title>프로그래머스(코딩테스트)_JAVA 문자열 겹쳐쓰기:)</title>
      <link>https://wan-stack.tistory.com/12</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;Level 0 문제를 풀어봅시다:)&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;substring을 활용해서 문제를 해결하는 것!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그럼 substring에 대해서 알아야한다.&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;String의 함수에서 활용할 수 있는 문자열 자르기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. substring()&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;gt;&amp;nbsp; 문자열변수명.substring(시작지점) : 시작지점부터 끝까지 리턴&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; str.substring(5) 를 입력하면 인덱스 5부터 문자열 끝까지 잘라서 보여준다.&lt;/p&gt;
&lt;pre id=&quot;code_1704615060334&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;String str = &quot;abcdefg123&quot;;
System.out.println(str.substring(5));&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;size16&quot;&gt;출력문은 인덱스 0번부터 시작하기 때문에&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;fg123이 나온다.&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;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1202&quot; data-origin-height=&quot;388&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tnESf/btsDau2UDNJ/Ye9MSAKd2vmHcngdmtAP2K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tnESf/btsDau2UDNJ/Ye9MSAKd2vmHcngdmtAP2K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tnESf/btsDau2UDNJ/Ye9MSAKd2vmHcngdmtAP2K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtnESf%2FbtsDau2UDNJ%2FYe9MSAKd2vmHcngdmtAP2K%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;1202&quot; height=&quot;388&quot; data-origin-width=&quot;1202&quot; data-origin-height=&quot;388&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;gt; substring(시작지점, 끝지점) &amp;gt;&amp;gt; endindex는 미포함&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;2. split()&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;gt; 구분 기회 또는 정규식을 기반으로 문자열을 여러 하위 문자열로 분할&lt;/p&gt;
&lt;pre id=&quot;code_1704616240571&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;		String names = &quot;Kim, Youn, Seo, Lee&quot;;
		String[] nameArray = names.split(&quot;,&quot;);
		
		for(String a : nameArray) {
			System.out.println(a);
		}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;84&quot; data-origin-height=&quot;79&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oP8FT/btsC39sJWpv/64ik2S7qfHqkyJBy8IbsfK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oP8FT/btsC39sJWpv/64ik2S7qfHqkyJBy8IbsfK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oP8FT/btsC39sJWpv/64ik2S7qfHqkyJBy8IbsfK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoP8FT%2FbtsC39sJWpv%2F64ik2S7qfHqkyJBy8IbsfK%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;84&quot; height=&quot;79&quot; data-origin-width=&quot;84&quot; data-origin-height=&quot;79&quot;/&gt;&lt;/span&gt;&lt;/figure&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;/p&gt;
&lt;pre id=&quot;code_1704616304337&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution {
    public String solution(String my_string, String overwrite_string, int s) {
        String answer = &quot;&quot;;
        
        answer=my_string.substring(0,s)+overwrite_string;
        
        if(my_string.length() &amp;gt; answer.length()) {
            answer+=my_string.substring(answer.length());
        } 
        
        return answer;
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>코딩테스트</category>
      <author>wan-stack</author>
      <guid isPermaLink="true">https://wan-stack.tistory.com/12</guid>
      <comments>https://wan-stack.tistory.com/12#entry12comment</comments>
      <pubDate>Sun, 7 Jan 2024 17:32:36 +0900</pubDate>
    </item>
    <item>
      <title>프로그래머스(코딩테스트)_JAVA_부분 문자열 문제:)</title>
      <link>https://wan-stack.tistory.com/11</link>
      <description>&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;Level 0 코딩테스트 시작 ~&lt;/b&gt;&lt;/h4&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. contains&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. indexOf&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. matches&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;문제를 보고 contains만 생가하고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;if문을 활용해서 문제를 풀었다.&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그건 indexOf와 matches라는 함수를 활용할 수 있다는 것!!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;3가지 방법을 살펴보자&lt;/b&gt;&lt;/h4&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;b&gt;1. String의 contains 함수&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;gt; 비교하는 문자열에 포함되어 있는지 확인하고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; 결과를 true와 false를 반환해준다.&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;b&gt;2. String의 indexOf 함수&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;gt; 비교하는 문자열에서 포함된 문자의 위치를 반환&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;포함인 경우 문자열의 위치를, 미포함의 경우 -1을 반환&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;784&quot; data-origin-height=&quot;566&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/biBvVd/btsC4docZ4V/l69VJD5g5uKMX214Slo2vK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/biBvVd/btsC4docZ4V/l69VJD5g5uKMX214Slo2vK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/biBvVd/btsC4docZ4V/l69VJD5g5uKMX214Slo2vK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbiBvVd%2FbtsC4docZ4V%2Fl69VJD5g5uKMX214Slo2vK%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;784&quot; height=&quot;566&quot; data-origin-width=&quot;784&quot; data-origin-height=&quot;566&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;b&gt;3. String의 matches 함수&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;gt; 정규식을 이용하여 문자열을 비교하는 방법&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;true와 false로 반환을 해준다.&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://codechacha.com/ko/java-string-matches/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://codechacha.com/ko/java-string-matches/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1704526080018&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Java - String.matches()로 문자열 패턴 확인 및 다양한 예제 소개&quot; data-og-description=&quot;String.matches()로 특정 패턴의 문자열을 포함하는지 확인할 수 있습니다. 특정 패턴이란 정규표현식(Regex)를 의미합니다. Pattern.matches()도 동일한 역할입니다. 문자열에 해당 패턴이 일치한다면 결&quot; data-og-host=&quot;codechacha.com&quot; data-og-source-url=&quot;https://codechacha.com/ko/java-string-matches/&quot; data-og-url=&quot;https://codechacha.com/ko/java-string-matches/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bIG25F/hyU2mMCpJb/budGhArnkaknfUvp3LKTj0/img.png?width=192&amp;amp;height=192&amp;amp;face=0_0_192_192&quot;&gt;&lt;a href=&quot;https://codechacha.com/ko/java-string-matches/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://codechacha.com/ko/java-string-matches/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bIG25F/hyU2mMCpJb/budGhArnkaknfUvp3LKTj0/img.png?width=192&amp;amp;height=192&amp;amp;face=0_0_192_192');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Java - String.matches()로 문자열 패턴 확인 및 다양한 예제 소개&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;String.matches()로 특정 패턴의 문자열을 포함하는지 확인할 수 있습니다. 특정 패턴이란 정규표현식(Regex)를 의미합니다. Pattern.matches()도 동일한 역할입니다. 문자열에 해당 패턴이 일치한다면 결&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;codechacha.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>코딩테스트</category>
      <author>wan-stack</author>
      <guid isPermaLink="true">https://wan-stack.tistory.com/11</guid>
      <comments>https://wan-stack.tistory.com/11#entry11comment</comments>
      <pubDate>Sat, 6 Jan 2024 16:30:31 +0900</pubDate>
    </item>
    <item>
      <title>객체 지향 프로그래밍 4대 특성(캡상추다)</title>
      <link>https://wan-stack.tistory.com/10</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;객체 지향 프로그래밍(OOP)?&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- OOP(Object-Oriented Programming)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;b&gt;객체 지향 프로그래밍의 장점&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 객체 지향 설계를 통해 프로그램을 보다 유연하고 변경이 용이하게 만들 수 있는 점.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 각자의 독립적인 역할을 가지기에 코드의 변경을 최소화하고 유지보수하는데 유리하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 코드의 재사용을 통해 반복적인 코드를 최소화하고, 코드를 최대한 간결하게 표현할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;b&gt;객체 지향의 4대 특성&lt;/b&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;b&gt;1. 캡슐화(정보은닉)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서로 연관있는 속성과 기능을 하나의 캡슐로 만들어&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;&amp;nbsp; ** 객체의 응집도 : 한 객체의 자율성, 특정 역할에 대한 독립적인 책임을 의미&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;&amp;nbsp;1-1. 데이터보호 - 외부로부터 클래스에 정의된 속성과 기능들을 보호&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1-2. 데이터은닉 - 내부의 동작은 감추고 외부에는 필요한 부분만 노출&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;&amp;nbsp;2가지 방법 (접근제어자, getter/setter)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;접근제어자&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;public : 모든 클래스 접근이 가능하다, 접근 제약이 없다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;default : 접근 제어자를 별도로 설정하지 않으면 default 접근 제어자가 되고, 해당 패키지에서만 접근 가능&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;protected : 접근 제어자가 protected로 설정되었으면 같은 패키지내의 클래스 또는 해당 클래스를&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;상속받은 외부 패키지의 클래스에서 접근이 가능&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;private : 같은 클래스에서만 접근이 가능&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;getter/setter 메서드&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;속성들을 private으로 선언하고, getter/setter 메서드의 접근 제어자만 public으로 열어둔다.&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;b&gt;2. 상속(재사용 + 확장)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;상위 클래스의 특성을 하위 클래스에서 상속(재사용, 특성 상속)하고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;/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;&amp;nbsp;- 객체 지향의 상속은 상위 클래스의 특성을 재사용하는 것이다.&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3. 추상화 : 모델링&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;추상화란 구체적인 것을 분해해서 관심영역(애플리케이션의 경계, Application Boundary)에 있는&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;&amp;nbsp;&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;&amp;nbsp;표현하는 것이다. 즉, 모델은 추상화를 통해서 실제 사물을 단순하게 묘사하는 것&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;&amp;nbsp;추상 클래스와 인터페이스가 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 추상 클래스 : 추상 메서드를 하나 이상 가지고 있는 것이 추상 클래스&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 일반 메서드 또는 멤버 변수를 구성원으로 가지고 있다. 상속을 강제하기 위한 방법&lt;/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;&amp;nbsp; &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;/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;/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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;b&gt;4. 다형성 : 사용 편의성&lt;/b&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;&amp;nbsp;다형성을 통해 개발 유연성, 코드 재사용성을 제고 시킬 수 있다.&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;&amp;nbsp;&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;&amp;nbsp;오버로딩 : 같은 메서드 이름, 다른 인자 목록으로 다수의 메서드를 중복 정의 (중복정의)&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;&amp;nbsp;&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;a href=&quot;https://blog.metafor.kr/148&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://blog.metafor.kr/148&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1701926704243&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;추상클래스와 인터페이스의 공통점과 차이점&quot; data-og-description=&quot;추상클래스와 인터페이스를 알아보기 앞서 인터페이스와 추상클래스가 언제, 그리고 왜 쓰이는지 그 목적성에 대해서 분명히 알고 개념을 익힌다면 더욱 공통점과 차이점을 명확하게 할 수 있&quot; data-og-host=&quot;blog.metafor.kr&quot; data-og-source-url=&quot;https://blog.metafor.kr/148&quot; data-og-url=&quot;https://blog.metafor.kr/148&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/gdtoz/hyUIDIBr90/tnlH5kwXuKcq3Uv5YwOG90/img.png?width=800&amp;amp;height=450&amp;amp;face=0_0_800_450,https://scrap.kakaocdn.net/dn/6UPZr/hyUIEneMgD/kewUnKkOztwNHZ2P6kjpo0/img.png?width=800&amp;amp;height=450&amp;amp;face=0_0_800_450,https://scrap.kakaocdn.net/dn/0dl2e/hyUIq3BzNM/1KQF07zDXIE3TquIcukt01/img.png?width=2560&amp;amp;height=1440&amp;amp;face=0_0_2560_1440&quot;&gt;&lt;a href=&quot;https://blog.metafor.kr/148&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://blog.metafor.kr/148&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/gdtoz/hyUIDIBr90/tnlH5kwXuKcq3Uv5YwOG90/img.png?width=800&amp;amp;height=450&amp;amp;face=0_0_800_450,https://scrap.kakaocdn.net/dn/6UPZr/hyUIEneMgD/kewUnKkOztwNHZ2P6kjpo0/img.png?width=800&amp;amp;height=450&amp;amp;face=0_0_800_450,https://scrap.kakaocdn.net/dn/0dl2e/hyUIq3BzNM/1KQF07zDXIE3TquIcukt01/img.png?width=2560&amp;amp;height=1440&amp;amp;face=0_0_2560_1440');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;추상클래스와 인터페이스의 공통점과 차이점&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;추상클래스와 인터페이스를 알아보기 앞서 인터페이스와 추상클래스가 언제, 그리고 왜 쓰이는지 그 목적성에 대해서 분명히 알고 개념을 익힌다면 더욱 공통점과 차이점을 명확하게 할 수 있&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;blog.metafor.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://inpa.tistory.com/entry/JAVA-%E2%98%95-%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4-vs-%EC%B6%94%EC%83%81%ED%81%B4%EB%9E%98%EC%8A%A4-%EC%B0%A8%EC%9D%B4%EC%A0%90-%EC%99%84%EB%B2%BD-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://inpa.tistory.com/entry/JAVA-%E2%98%95-%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4-vs-%EC%B6%94%EC%83%81%ED%81%B4%EB%9E%98%EC%8A%A4-%EC%B0%A8%EC%9D%B4%EC%A0%90-%EC%99%84%EB%B2%BD-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1701927126466&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;☕ 인터페이스 vs 추상클래스 용도 차이점 - 완벽 이해&quot; data-og-description=&quot;인터페이스 vs 추상클래스 비교 이 글을 찾아보는 독자분들은 아마도 이미 인터페이스와 추상클래스 개념을 학습한 뒤에 이 둘에 대하여 차이의 모호함 때문에 방문 했겠지만, 그래도 다시한번 &quot; data-og-host=&quot;inpa.tistory.com&quot; data-og-source-url=&quot;https://inpa.tistory.com/entry/JAVA-%E2%98%95-%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4-vs-%EC%B6%94%EC%83%81%ED%81%B4%EB%9E%98%EC%8A%A4-%EC%B0%A8%EC%9D%B4%EC%A0%90-%EC%99%84%EB%B2%BD-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0&quot; data-og-url=&quot;https://inpa.tistory.com/entry/JAVA-%E2%98%95-%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4-vs-%EC%B6%94%EC%83%81%ED%81%B4%EB%9E%98%EC%8A%A4-%EC%B0%A8%EC%9D%B4%EC%A0%90-%EC%99%84%EB%B2%BD-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bOu1DW/hyUIzTLuvy/H4kfI6pVfrapJiDpDtZGK1/img.png?width=800&amp;amp;height=450&amp;amp;face=0_0_800_450,https://scrap.kakaocdn.net/dn/c65Tza/hyUIwJuHVA/s1RtKEsenF5XK6gyR2LmHK/img.png?width=800&amp;amp;height=450&amp;amp;face=0_0_800_450,https://scrap.kakaocdn.net/dn/voOtU/hyUIDPoGfi/QCeX4YJQ4QunWK6HvPneok/img.png?width=1283&amp;amp;height=580&amp;amp;face=0_0_1283_580&quot;&gt;&lt;a href=&quot;https://inpa.tistory.com/entry/JAVA-%E2%98%95-%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4-vs-%EC%B6%94%EC%83%81%ED%81%B4%EB%9E%98%EC%8A%A4-%EC%B0%A8%EC%9D%B4%EC%A0%90-%EC%99%84%EB%B2%BD-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://inpa.tistory.com/entry/JAVA-%E2%98%95-%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4-vs-%EC%B6%94%EC%83%81%ED%81%B4%EB%9E%98%EC%8A%A4-%EC%B0%A8%EC%9D%B4%EC%A0%90-%EC%99%84%EB%B2%BD-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bOu1DW/hyUIzTLuvy/H4kfI6pVfrapJiDpDtZGK1/img.png?width=800&amp;amp;height=450&amp;amp;face=0_0_800_450,https://scrap.kakaocdn.net/dn/c65Tza/hyUIwJuHVA/s1RtKEsenF5XK6gyR2LmHK/img.png?width=800&amp;amp;height=450&amp;amp;face=0_0_800_450,https://scrap.kakaocdn.net/dn/voOtU/hyUIDPoGfi/QCeX4YJQ4QunWK6HvPneok/img.png?width=1283&amp;amp;height=580&amp;amp;face=0_0_1283_580');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;☕ 인터페이스 vs 추상클래스 용도 차이점 - 완벽 이해&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;인터페이스 vs 추상클래스 비교 이 글을 찾아보는 독자분들은 아마도 이미 인터페이스와 추상클래스 개념을 학습한 뒤에 이 둘에 대하여 차이의 모호함 때문에 방문 했겠지만, 그래도 다시한번&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;inpa.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://myjamong.tistory.com/150&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://myjamong.tistory.com/150&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1701927315138&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[JAVA] 추상클래스 VS 인터페이스 왜 사용할까? 차이점, 예제로 확인 :: 마이자몽&quot; data-og-description=&quot;추상클래스 인터페이스 왜... 사용할까? 우리는 추상클래스와 인터페이스에 대해서 알고 있냐고 누가 물어본다면 알고 있다고 대답을 하고있습니다. 그런데 이론적인 내용 말고 정작 &amp;quot;왜 사용하&quot; data-og-host=&quot;myjamong.tistory.com&quot; data-og-source-url=&quot;https://myjamong.tistory.com/150&quot; data-og-url=&quot;https://myjamong.tistory.com/150&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/mEcOR/hyUICbSAqL/LgLjDEoKovS0zoABvO2BU1/img.png?width=800&amp;amp;height=340&amp;amp;face=0_0_800_340,https://scrap.kakaocdn.net/dn/cyUA50/hyUIFTZTrq/BkcGjOq9eTmEJgmrRYeck1/img.png?width=800&amp;amp;height=340&amp;amp;face=0_0_800_340,https://scrap.kakaocdn.net/dn/bAtgGb/hyUIvcJvNF/KIpaZuobvUWT6FPAJv1Fi0/img.png?width=848&amp;amp;height=361&amp;amp;face=0_0_848_361&quot;&gt;&lt;a href=&quot;https://myjamong.tistory.com/150&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://myjamong.tistory.com/150&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/mEcOR/hyUICbSAqL/LgLjDEoKovS0zoABvO2BU1/img.png?width=800&amp;amp;height=340&amp;amp;face=0_0_800_340,https://scrap.kakaocdn.net/dn/cyUA50/hyUIFTZTrq/BkcGjOq9eTmEJgmrRYeck1/img.png?width=800&amp;amp;height=340&amp;amp;face=0_0_800_340,https://scrap.kakaocdn.net/dn/bAtgGb/hyUIvcJvNF/KIpaZuobvUWT6FPAJv1Fi0/img.png?width=848&amp;amp;height=361&amp;amp;face=0_0_848_361');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[JAVA] 추상클래스 VS 인터페이스 왜 사용할까? 차이점, 예제로 확인 :: 마이자몽&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;추상클래스 인터페이스 왜... 사용할까? 우리는 추상클래스와 인터페이스에 대해서 알고 있냐고 누가 물어본다면 알고 있다고 대답을 하고있습니다. 그런데 이론적인 내용 말고 정작 &quot;왜 사용하&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;myjamong.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <author>wan-stack</author>
      <guid isPermaLink="true">https://wan-stack.tistory.com/10</guid>
      <comments>https://wan-stack.tistory.com/10#entry10comment</comments>
      <pubDate>Thu, 7 Dec 2023 14:35:24 +0900</pubDate>
    </item>
    <item>
      <title>Transaction (트랜잭션) 이란?</title>
      <link>https://wan-stack.tistory.com/9</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&quot;더이상 분할이 불가능한 업무 처리의 단위&quot;&lt;/b&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;** 데이터베이스와 어플리케이션의 데이터 거래(Transaction)에 있어서&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;갱신, 삭제하는 도중에 오류가 발생하면, 결과를 재반영 하는 것이 아니라 모든 작업을 원상태로&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;복구하고, 처리 과정이 모두 성공했을 때만 그 결과를 반영한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;동시에 성공하던지 동시에 실패해야 한다.&lt;/b&gt;&lt;/h4&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;트랜잭션의 개념은&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;MySQL에서 트랜잭션은 &lt;b&gt;데이터베이스 상태를 바꾸는 일종의 작업단위&lt;/b&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;INSERT, DELETE, UPDATE등의 SQL 명령문을 통해 데이터 상태를 바꿀 때마다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내부적으로 자동적으로 Commit을 실행하여 변경된 내역을 데이터 베이스에 반영한다.&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;작업 단위란 많은 질의어 명령문들을 사람이 정하는 기준에 따라 정하는 것을 의미&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;1. 게시판에 글을 작성하고, 올리기 버튼을 클릭&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 글 올리기가 처리되고 자동으로 다시 게시판으로 돌아오게 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 게시판에서 자신의 글이 포함된 업데이트된 게시글들을 볼 수 있다.&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용자가 올리기 버튼을 클릭했을 때 INSERT문을 사용하여 사용자가 입력한 게시글 데이터를 넣는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 후에, 게시판을 구성할 데이터를 다시 SELECT 하여 최신 정보를 유지한다.&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;b&gt;여기서, 작업단위는 INSERT문과 SELECT문 둘다를 합친 것&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;이러한 작업단위를 하나의 트랜잭션이라고 한다.&lt;/b&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;트랜잭션 특징(4가지)&lt;/h4&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;b&gt;1. 원자성&lt;/b&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;&amp;nbsp;&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2. 일관성&lt;/b&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;&amp;nbsp;&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;&amp;nbsp; &amp;nbsp;업데이트된 데이터베이스로 트랜잭션이 진행되는 것이 아니라,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;b&gt;처음에 트랜잭션을 진행 하기 위해 참조한 데이터베이스로 진행&lt;/b&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;b&gt;3. 독립성&lt;/b&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;&amp;nbsp; &amp;nbsp;어떤 하나의 트랜잭션이라도, 다른 트랜잭션의 연산에 끼어들 수 없다는 점&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;&amp;nbsp;- 하나의 트랜잭션이 완료될때까지, 다른 트랜잭션이 특정 트랜잭션의 결과를 참조할 수 없다.&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;b&gt;4. 지속성&lt;/b&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;&amp;nbsp; &amp;nbsp;결과는 영구적으로 반영되어야 한다는 것&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://wonit.tistory.com/462&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://wonit.tistory.com/462&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1701664313168&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[데이터베이스] Transaction, 트랜잭션이란?&quot; data-og-description=&quot;Transaction, 트랜잭션 트랜잭션(Transaction) 이란, 데이터베이스의 상태를 변경시키기 위해 수행하는 작업 단위이다. 데이터베이스의 상태를 변경시킨다는 이야기는 SELECT, UPDATE, INSERT, DELETE 와 같은 &quot; data-og-host=&quot;wonit.tistory.com&quot; data-og-source-url=&quot;https://wonit.tistory.com/462&quot; data-og-url=&quot;https://wonit.tistory.com/462&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/7nBl3/hyUEZFTjB7/9EuLbONRcnlTGpVfVpC6q1/img.png?width=466&amp;amp;height=421&amp;amp;face=0_0_466_421,https://scrap.kakaocdn.net/dn/eyrnHp/hyUIwPy6kj/qLd1lkcD4z0Q0wKppy9yF0/img.png?width=466&amp;amp;height=421&amp;amp;face=0_0_466_421,https://scrap.kakaocdn.net/dn/bWb84v/hyUIC3jOo7/izGTQoUsbDkhWSQG7ztoD1/img.png?width=466&amp;amp;height=421&amp;amp;face=0_0_466_421&quot;&gt;&lt;a href=&quot;https://wonit.tistory.com/462&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://wonit.tistory.com/462&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/7nBl3/hyUEZFTjB7/9EuLbONRcnlTGpVfVpC6q1/img.png?width=466&amp;amp;height=421&amp;amp;face=0_0_466_421,https://scrap.kakaocdn.net/dn/eyrnHp/hyUIwPy6kj/qLd1lkcD4z0Q0wKppy9yF0/img.png?width=466&amp;amp;height=421&amp;amp;face=0_0_466_421,https://scrap.kakaocdn.net/dn/bWb84v/hyUIC3jOo7/izGTQoUsbDkhWSQG7ztoD1/img.png?width=466&amp;amp;height=421&amp;amp;face=0_0_466_421');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[데이터베이스] Transaction, 트랜잭션이란?&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Transaction, 트랜잭션 트랜잭션(Transaction) 이란, 데이터베이스의 상태를 변경시키기 위해 수행하는 작업 단위이다. 데이터베이스의 상태를 변경시킨다는 이야기는 SELECT, UPDATE, INSERT, DELETE 와 같은&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;wonit.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://inpa.tistory.com/entry/MYSQL-%F0%9F%93%9A-%ED%8A%B8%EB%9E%9C%EC%9E%AD%EC%85%98Transaction-%EC%9D%B4%EB%9E%80-%F0%9F%92%AF-%EC%A0%95%EB%A6%AC&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://inpa.tistory.com/entry/MYSQL-%F0%9F%93%9A-%ED%8A%B8%EB%9E%9C%EC%9E%AD%EC%85%98Transaction-%EC%9D%B4%EB%9E%80-%F0%9F%92%AF-%EC%A0%95%EB%A6%AC&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1701664318368&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[MYSQL]   트랜잭션(Transaction) 개념 &amp;amp; 사용   완벽 정리&quot; data-og-description=&quot;트랜잭션(Transaction) 이란? 트랜잭션(Transaction)의 사전적 의미는 거래이고, 컴퓨터 과학 분야에서의 트랜잭션(Transaction)은 &amp;quot;더이상 분할이 불가능한 업무처리의 단위&amp;quot;를 의미한다. 이것은 하나의 &quot; data-og-host=&quot;inpa.tistory.com&quot; data-og-source-url=&quot;https://inpa.tistory.com/entry/MYSQL-%F0%9F%93%9A-%ED%8A%B8%EB%9E%9C%EC%9E%AD%EC%85%98Transaction-%EC%9D%B4%EB%9E%80-%F0%9F%92%AF-%EC%A0%95%EB%A6%AC&quot; data-og-url=&quot;https://inpa.tistory.com/entry/MYSQL-%F0%9F%93%9A-%ED%8A%B8%EB%9E%9C%EC%9E%AD%EC%85%98Transaction-%EC%9D%B4%EB%9E%80-%F0%9F%92%AF-%EC%A0%95%EB%A6%AC&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/CPgoa/hyUIs7tk66/Pa2AoYWCgMH15QXuyprkC0/img.png?width=800&amp;amp;height=450&amp;amp;face=0_0_800_450,https://scrap.kakaocdn.net/dn/cqONfw/hyUItZCBZE/7wTMcAmpFK9sqVLUnigA81/img.png?width=800&amp;amp;height=450&amp;amp;face=0_0_800_450,https://scrap.kakaocdn.net/dn/dgUgfL/hyUIzldJeA/J1qYCHZAFZmKxTc9ITpbKK/img.png?width=697&amp;amp;height=507&amp;amp;face=0_0_697_507&quot;&gt;&lt;a href=&quot;https://inpa.tistory.com/entry/MYSQL-%F0%9F%93%9A-%ED%8A%B8%EB%9E%9C%EC%9E%AD%EC%85%98Transaction-%EC%9D%B4%EB%9E%80-%F0%9F%92%AF-%EC%A0%95%EB%A6%AC&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://inpa.tistory.com/entry/MYSQL-%F0%9F%93%9A-%ED%8A%B8%EB%9E%9C%EC%9E%AD%EC%85%98Transaction-%EC%9D%B4%EB%9E%80-%F0%9F%92%AF-%EC%A0%95%EB%A6%AC&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/CPgoa/hyUIs7tk66/Pa2AoYWCgMH15QXuyprkC0/img.png?width=800&amp;amp;height=450&amp;amp;face=0_0_800_450,https://scrap.kakaocdn.net/dn/cqONfw/hyUItZCBZE/7wTMcAmpFK9sqVLUnigA81/img.png?width=800&amp;amp;height=450&amp;amp;face=0_0_800_450,https://scrap.kakaocdn.net/dn/dgUgfL/hyUIzldJeA/J1qYCHZAFZmKxTc9ITpbKK/img.png?width=697&amp;amp;height=507&amp;amp;face=0_0_697_507');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[MYSQL]   트랜잭션(Transaction) 개념 &amp;amp; 사용   완벽 정리&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;트랜잭션(Transaction) 이란? 트랜잭션(Transaction)의 사전적 의미는 거래이고, 컴퓨터 과학 분야에서의 트랜잭션(Transaction)은 &quot;더이상 분할이 불가능한 업무처리의 단위&quot;를 의미한다. 이것은 하나의&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;inpa.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <author>wan-stack</author>
      <guid isPermaLink="true">https://wan-stack.tistory.com/9</guid>
      <comments>https://wan-stack.tistory.com/9#entry9comment</comments>
      <pubDate>Mon, 4 Dec 2023 13:32:10 +0900</pubDate>
    </item>
    <item>
      <title>HTTP vs HTTPS 차이!</title>
      <link>https://wan-stack.tistory.com/7</link>
      <description>&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;HTTP (Hypertext Transfer Protocol)&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서로 다른 시스템들 사이에서 통신을 주고받게 해주는 가장 기초적인 프로토콜&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;상태를 가지고 있지 않은 Stateless 프로토콜&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;암호화 되지 않은 평문 데이터를 전송하는 프로토콜 &amp;gt; 보안부분의 취약점이 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;HTTPS (Hypertext Transfer Protocol Secure)&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;HTTP 프로토콜의 문제점은 서버에서부터 브라우저로 전송되는 정보가 암호화되지 않는다는 것&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;HTTPS 프로토콜은 SSL(Secure Socket Layer_보안 소켓 계층)을 사용함으로 문제를 해결&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SSL은 서버와 브라우저 사이에 안전하게 암호화된 연결을 만들 수 있게 도와주고,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서버 브라우저가 민감한 정보를 주고받을 때 도난당하는 것을 막아준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;차이,&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두 프로토콜 사이에 가장 커다란 차이는 바로 SSL 인증서&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;HTTPS는 쉽게 말해 HTTP 프로토콜에 보안 기능을 추가한 것이라고 할 수 있다.&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;SSL 인증서는 사용자가 사이트에 제공하는 정보를 암호화하는데,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해독할 수 없다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;HTTPS는 TLS(전송 계층 보안) 프로토콜을 통해서도 보안을 유지한다.&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;TLS는 데이터 무결성을 제공하기 때문에 데이터가 전송 중에 수정되거나 손상되는 것을 방지하고,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;p data-ke-size=&quot;size16&quot;&gt;HTTP&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;클라이언트- 서버 모델을 따르는 프로토콜, TCP/IP 위에서 동작하며 80번 포트를 사용하여 통신&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 비 - 연결 지향(Connetionless)&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 무상태성(Stateless)&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;&amp;nbsp;즉, 각 클라이언트에 맞게 리소스를 응답하는 것이 불가능&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;이를 해결하기위해 쿠키나 세션 또는 토큰의 방식의 OAuth 및 JWT가 사용된다.&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;HTTP Method&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;&amp;nbsp;- GET : 서버에서 조회할 리소스를 요청 (READ, 조회)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- POST : 서버에게 본문(Body)에 생성할 데이터를 삽입하여 전송한다.(CREATE, 생성)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- PUT : 서버에게 본문에 수정할 데이터를 삽입하여 전송한다. (UPDATE, 수정)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- DELETE : 서버에게 삭제할 리소스를 요청한다. (DELETE, 삭제)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- PATCH : PUT과 비슷하지만 일부만 수정한다는 점에서 다르다.&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;&amp;nbsp;- 1** (요청에 대한 정보) : 요청을 받았으면 작업을 계속한다.&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;&amp;nbsp;- 2** (성공) : 요청을 성공적으로 수행한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; 200 : 성공&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; 201 : 새 리소스 작성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; 202 : 요청 접수, 아직 처리는 안함&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;&amp;nbsp;- 3** (리다이렉션) : 클라이언트가 요청을 마치기 위해 추가적인 동작을 취해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;300 : 여러개의 응답, 선택해야함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;301 : 영구이동, 요청한 페이지가 영구적으로 이동됨&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;302 : 임시이동, 현재 응답임, 다른 페이지이긴 하지만 임시적임&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;&amp;nbsp;- 4** (클라이언트 오류) : 클라이언트에 오류가 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;401 : 권한 없음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;403 : 금지됨, 리소스에 대한 권한 없음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;404 : 찾을 수 없음, 서버에 없는 페이지&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;&amp;nbsp;- 5** (서버오류) : 서버에 오류가 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;500 : 내부 서버오류&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;501 : 요청 수행 기능 없음, 메서드 인식 불가&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;503 : 서비스 사용불가&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;HTTPS&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;HTTPS는 HTTP에 데이터 암호화가 추가된 프로토콜&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;443 포트를 기본으로 사용하며 네트워크 상에서 제 3자가 정보를 볼 수 없도록 암호화하여 전송&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;HTTPS 프로토콜은 SSL(보안 소켓 계층)을 이용해서 HTTP의 보안상 문제를 해결했으며,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SSL은 서버와 브라우저 사이에 안전하게 암호화된 연결을 만들 수 있게 도와주고 서버 브라우저가&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;HTTPS의 보안 방식&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SSL 인증서를 HTTP 프로토콜에 추가하여 만들어진 것이 HTTPS이며,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SSL 인증서는 사용자가 사이트에 제공하는 정보를 암호화하는데 이용된다.&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;따라서, 제 3자가 데이터를 훔쳐낸다고 하더라도 데이터가 암호화처리 되어 있기 때문에&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;그리고, HTTPS는 TLS(전송 계층 보안) 프로토콜을 사용해서 보안을 유지한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;TLS는 데이터 무결성을 보장해서 전송 중에 수정되거나 손상되는 것을 방지하며&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용자가 접속하려는 웹 사이트와 통신하고 있음을 증명할 수 있는 인증 기능도 가지고 있다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;참고,&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://yozm.wishket.com/magazine/detail/130/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://yozm.wishket.com/magazine/detail/130/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1701332994115&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;HTTP vs HTTPS 차이, 알면 사이트의 레벨이 보인다. | 요즘IT&quot; data-og-description=&quot;여러분이 지금 보고 있는 그 웹사이트, 주소가 HTTP로 시작하나요? 아니면 HTTPS로 시작하나요? HTTP vs HTTPS 차이를 알면 그 사이트의 보안성과 SEO품질을 알 수 있는데요. 이번 시간 HTTP vs HTTPS의 차이&quot; data-og-host=&quot;yozm.wishket.com&quot; data-og-source-url=&quot;https://yozm.wishket.com/magazine/detail/130/&quot; data-og-url=&quot;https://yozm.wishket.com/magazine/detail/130/yozm.wishket.com/magazine/detail/130/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/qVh0Z/hyUE98EouP/mZRJMvb6moLvD5qMSeFauk/img.png?width=502&amp;amp;height=502&amp;amp;face=0_0_502_502,https://scrap.kakaocdn.net/dn/blCFvp/hyUE4zwE1r/5jIi24n88r5mxzlHkhtTUk/img.png?width=502&amp;amp;height=502&amp;amp;face=0_0_502_502&quot;&gt;&lt;a href=&quot;https://yozm.wishket.com/magazine/detail/130/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://yozm.wishket.com/magazine/detail/130/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/qVh0Z/hyUE98EouP/mZRJMvb6moLvD5qMSeFauk/img.png?width=502&amp;amp;height=502&amp;amp;face=0_0_502_502,https://scrap.kakaocdn.net/dn/blCFvp/hyUE4zwE1r/5jIi24n88r5mxzlHkhtTUk/img.png?width=502&amp;amp;height=502&amp;amp;face=0_0_502_502');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;HTTP vs HTTPS 차이, 알면 사이트의 레벨이 보인다. | 요즘IT&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;여러분이 지금 보고 있는 그 웹사이트, 주소가 HTTP로 시작하나요? 아니면 HTTPS로 시작하나요? HTTP vs HTTPS 차이를 알면 그 사이트의 보안성과 SEO품질을 알 수 있는데요. 이번 시간 HTTP vs HTTPS의 차이&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;yozm.wishket.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://velog.io/@rlaclgns321/HTTP&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://velog.io/@rlaclgns321/HTTP&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1701333001269&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;HTTP, HTTPS, HTTP &amp;amp; HTTPS 차이점&quot; data-og-description=&quot;클라이언트-서버 모델을 따르는 프로토콜로 TCP/IP 위에서 동작하며 well-known 포트인 80번 포트를 사용하여 통신한다. 첫번째 표준은 HTTP/1.1이며 이후로 HTTP/2 및 HTTP/3가 등장하였다. 여기선 HTTP/1.1&quot; data-og-host=&quot;velog.io&quot; data-og-source-url=&quot;https://velog.io/@rlaclgns321/HTTP&quot; data-og-url=&quot;https://velog.io/@rlaclgns321/HTTP&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/CPgPX/hyUE2PdOF3/44vTPy39neBBVfg4OZdDDK/img.png?width=209&amp;amp;height=331&amp;amp;face=0_0_209_331,https://scrap.kakaocdn.net/dn/c85x4B/hyUE1ius9H/id3iLiRmm172SYsz6Z8Md1/img.png?width=209&amp;amp;height=331&amp;amp;face=0_0_209_331,https://scrap.kakaocdn.net/dn/hg9y4/hyUFamcnBy/z8BnLkC3tM00n0A1IeBeAK/img.jpg?width=697&amp;amp;height=742&amp;amp;face=310_278_545_534&quot;&gt;&lt;a href=&quot;https://velog.io/@rlaclgns321/HTTP&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://velog.io/@rlaclgns321/HTTP&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/CPgPX/hyUE2PdOF3/44vTPy39neBBVfg4OZdDDK/img.png?width=209&amp;amp;height=331&amp;amp;face=0_0_209_331,https://scrap.kakaocdn.net/dn/c85x4B/hyUE1ius9H/id3iLiRmm172SYsz6Z8Md1/img.png?width=209&amp;amp;height=331&amp;amp;face=0_0_209_331,https://scrap.kakaocdn.net/dn/hg9y4/hyUFamcnBy/z8BnLkC3tM00n0A1IeBeAK/img.jpg?width=697&amp;amp;height=742&amp;amp;face=310_278_545_534');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;HTTP, HTTPS, HTTP &amp;amp; HTTPS 차이점&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;클라이언트-서버 모델을 따르는 프로토콜로 TCP/IP 위에서 동작하며 well-known 포트인 80번 포트를 사용하여 통신한다. 첫번째 표준은 HTTP/1.1이며 이후로 HTTP/2 및 HTTP/3가 등장하였다. 여기선 HTTP/1.1&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;velog.io&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <author>wan-stack</author>
      <guid isPermaLink="true">https://wan-stack.tistory.com/7</guid>
      <comments>https://wan-stack.tistory.com/7#entry7comment</comments>
      <pubDate>Thu, 30 Nov 2023 17:39:53 +0900</pubDate>
    </item>
    <item>
      <title>Spring과 Spring Boot의 차이점</title>
      <link>https://wan-stack.tistory.com/6</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;Spring은 프레임워크이며,&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Spring Boot는 스프링 프레임워크를 기반으로 하는 도구&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;Spring은 설정 파일을 작성해야 하지만,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Spring Boot는 자동 설정을 제공해준다.&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;1. Spring&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 개발자가 직접 설정 파일을 작성하여 스프링 컨테이너 구성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 필요한 빈 객체를 등록&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 빈 객체 간의 의존성을 설정해야한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;2. Spring Boot&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 개발자가 설정 파일을 작성할 필요가 없다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 프로젝트의 설정과 라이브러리 의존성을 자동으로 처리&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 실행 가능한 JAR 파일을 만들 수 있다.&amp;nbsp;&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;Spring은 프레임워크이며, Spring Boot는 스프링 프레임워크를 기반으로 한 도구!&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;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Spring Framework의 특징&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. DI (Dependency Injection)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개발자가 Spring 프레임워크에 의존성을 주입하면서 객체 간 결합을 느슨하게 하는 것&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;2. IoC (Inversion of Control)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;컨트롤의 제어권이 개발자에게 있는 것이 아닌 프레임워크가 대신해주는 것을 말한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Servlet이나 Bean 같은 코드를 개발자가 직접 작성하지 않고, 프레임워크가 대신 수행&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존에는 자바 코드를 작성할 때, 객체의 생성, 의존관계 설정 등을 개발자가 해야 했지만,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;3. AOP(Aspect Oriented Programming)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AOP는 핵심기능을 제외한 부수적인 기능을 프레임워크가 제공하는 특징&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;예를 들어 Spring 프로젝트에 security를 적용하거나, logging 등을 추가하고 싶을 때,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존 비즈니스 로직을 건들지 않고 AOP로 추가할 수 있다.&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;JUnit, Mockito와 같은 유닛 테스트 프레임워크와 통합이 간단하다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개발하는 프로그램의 품질이 향상된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3가지의 주요 차이점&lt;br /&gt;(Dependency, Configuration, 배포)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. Dependengy(의존성)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;Spring Framework 같은 경우 dependency를 설정해줄 때 설정 파일이 매우 길고,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;모든 dependency에 대해 버전 관리도 하나하나 해줘야 한다.&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;&amp;nbsp;Spring Boot의 경우는 dependency 설정을 쉽게 해줄 수 있고, 버전관리도 자동으로 해준다.&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;빌드 툴을 Gradle을 사용하는 경우&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;build.gradle 파일에 dependency를 추가해주면 Spring Boot로 웹 개발을 할 때,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;필요한 모든 dependency를 자동으로 추가하고 관리해준다.&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;또 다른 예시로는&amp;nbsp; Spring의 경우 test 사용하고자 하는 경우&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Spring Test, JUnit, Hamcrest, Mockito등 모든 라이브러리를 추가해줘야 하지만,&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;Spring Boot는 spring-boot-starter-test만 추가해주면 된다.&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;2. Configuration&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;configuration설정할 때도 매우 길고, 모든 어노테이션 및 빈 등록 등을 설정해줘야 한다.&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;Spring Boot는 application.properties 파일이나 application.yml 파일에 설정하면 된다.&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;3. 편리한 배포&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Spring 프레임워크로 개발한 애플리케이션의 경우,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;war파일을 Web Application Server에 담아 배포&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;Spring Boot의 경우, Tomcat이나 Jetty같은 내장 WAS를 가지고 있기 때문에&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;jar 파일로 간편하게 배포할 수 있다.&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;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;참고&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://programforlife.tistory.com/68&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://programforlife.tistory.com/68&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://yamyam-spaghetti.tistory.com/56&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://yamyam-spaghetti.tistory.com/56&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>스프링(Spring)</category>
      <author>wan-stack</author>
      <guid isPermaLink="true">https://wan-stack.tistory.com/6</guid>
      <comments>https://wan-stack.tistory.com/6#entry6comment</comments>
      <pubDate>Thu, 30 Nov 2023 17:04:50 +0900</pubDate>
    </item>
    <item>
      <title>데이터 표현과 전달_Entity와 DTO의 개념</title>
      <link>https://wan-stack.tistory.com/5</link>
      <description>&lt;p id=&quot;SE-e2da5127-2276-4f01-9a13-b687fbb0bff7&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Entity와 DTO는 소프트웨어 개발에서 데이터를 표현하고 전달하는데 사용되는 개념&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-0403c500-d7ad-4916-99a5-27778b71ca85&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Entity&lt;/span&gt;&lt;/li&gt;
&lt;/ol&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;데이터베이스와 관련이 있는 객체를 나타냄&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;데이터베이스의 테이블과 일치하며, 데이터베이스 테이블의 각 열은 엔터티의 속성에 해당&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;데이터베이스의 영속적인 상태를 나타내고, 데이터베이스와 직접 상호작용&lt;/span&gt;&lt;/li&gt;
&lt;li&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;스프링부트에서 사용코드&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1697609030727&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package com.example.blog.domain;


import lombok.AccessLevel;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;

import javax.persistence.*;

@Entity
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class Article {

    @Id // id 필드를 기본키로 지정
    @GeneratedValue(strategy = GenerationType.IDENTITY) // 기본키를 자동으로 1씩 증가
    @Column(name = &quot;id&quot;, updatable = false)
    private Long id;

    @Column(name = &quot;title&quot;, nullable = false) // title이라는 not null 컬럼과 매핑
    private String title;

    @Column(name = &quot;content&quot;, nullable = false) // content라난 not null 컬럼과 매핑
    private String content;

    @Builder
    public Article(String title, String content) {
        this.title = title;
        this.content = content;
    }

}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-846a128a-cd54-43ae-8a44-fd31024ffd57&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-0bc58e12-b2e1-4766-ad42-32890949cf01&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;2. DTO(Data Transfer Object)&lt;/span&gt;&lt;/p&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;데이터 전송을 위한 객체&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;웹 서비스 또는 API와 같은 클라이언트와 서바 간 데이터 교환을 위해 사용됨&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;엔터티로부터 데이터를 추출하고 클라이언트에게 필요한 정보만 포함되는 객체&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;데이터 전송을 최적화하고 불필요한 데이터를 제거하여 네트워크 사용량을 최소화함&lt;/span&gt;&lt;/li&gt;
&lt;li&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; text-align: start;&quot;&gt;스프링부트에서 사용코드&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1697609099764&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package com.example.blog.dto;

import com.example.blog.domain.Article;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
@Getter
@NoArgsConstructor // 기본 생성자 추가
@AllArgsConstructor // 모든 필드 값을 파라미터로 받는 생성자 추가
public class AddArticleRequest {

    private String title;
    private String content;

    public Article toEntity() { // 생성자를 사용해 객체 생성
        return Article.builder()
                .title(title)
                .content(content)
                .build();
    }
}&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;size16&quot;&gt;&lt;b&gt;차이점 (목적과 사용사례가 주요한 차이)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-51d817c4-2a2e-4597-a8ea-2b247aea6975&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;엔터티는 데이터베이스와의 상호 작용 및 데이터 영속성을 위한 목적으로 사용되며, &lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-ddca5e34-225e-438f-a441-2307a1c65476&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;DTO는 데이터를 전송하고 클라이언트와 서버 간 데이터 통신을 효율적으로 수행하기 위해 사용됨&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-704eb22d-017c-4f62-ae6c-9349bb8461e3&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-e81a07be-7027-48b3-b183-e354f6d9fff4&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;엔터티는 데이터베이스의 구조를 반영하며 데이터 저장 및 검색에 사용되므로 데이터베이스와 밀접한 관련&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-02e9d2ab-3aba-4b95-baef-cea4113dc9a9&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;반면, DTO는 데이터 전송과 관련이 있으며 데이터 전송을 위한 최적화된 데이터 표현을 제공됨&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;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;반면, DTO는 주로 데이터 전송 및 통신에 사용되며, 데이터 전송을 단순하게 만드는데 중점을 둠&lt;/span&gt;&lt;/p&gt;</description>
      <category>스프링(Spring)</category>
      <author>wan-stack</author>
      <guid isPermaLink="true">https://wan-stack.tistory.com/5</guid>
      <comments>https://wan-stack.tistory.com/5#entry5comment</comments>
      <pubDate>Wed, 18 Oct 2023 15:07:56 +0900</pubDate>
    </item>
  </channel>
</rss>