<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>기록들의 보관함</title>
    <link>https://junecode.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Mon, 11 May 2026 11:13:56 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>인디아나쥰이</managingEditor>
    <image>
      <title>기록들의 보관함</title>
      <url>https://tistory1.daumcdn.net/tistory/4212931/attach/d7f2461508b54dbfa7db496e96fe2aee</url>
      <link>https://junecode.tistory.com</link>
    </image>
    <item>
      <title>ArrayList</title>
      <link>https://junecode.tistory.com/143</link>
      <description>&lt;div class=&quot;revenue_unit_wrap&quot;&gt;
  &lt;div class=&quot;revenue_unit_item adsense responsive&quot;&gt;
    &lt;div class=&quot;revenue_unit_info&quot;&gt;반응형&lt;/div&gt;
    &lt;script src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot; async=&quot;async&quot;&gt;&lt;/script&gt;
    &lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block;&quot; data-ad-host=&quot;ca-host-pub-9691043933427338&quot; data-ad-client=&quot;ca-pub-1464652913393983&quot; data-ad-format=&quot;auto&quot;&gt;&lt;/ins&gt;
    &lt;script&gt;(adsbygoogle = window.adsbygoogle || []).push({});&lt;/script&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;revenue_unit_wrap&quot;&gt;
  &lt;div class=&quot;revenue_unit_item adfit&quot;&gt;
    &lt;div class=&quot;revenue_unit_info&quot;&gt;728x90&lt;/div&gt;
    &lt;ins class=&quot;kakao_ad_area&quot; style=&quot;display: none;&quot; data-ad-unit=&quot;DAN-TxjsXAoseUHXMf0I&quot; data-ad-width=&quot;728px&quot; data-ad-height=&quot;90px&quot;&gt;&lt;/ins&gt;
    &lt;script type=&quot;text/javascript&quot; src=&quot;//t1.daumcdn.net/kas/static/ba.min.js&quot; async=&quot;async&quot;&gt;&lt;/script&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ArrayList를 설명하기에 앞서, 필요한 사전지식을 매우 간단하게 설명하겠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자바에는 컬렉션 프레임웍(Collection Framework)라는것이 존재한다.&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 가지의 컬렉션 데이터 그룹이 존재한다고 인식하고 각 컬렉션을 다루는데 필요한 기능을 가진 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;b&gt;1. List&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2. Set&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3. Map&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;그 중에서 List의 ArrayList가 오늘 정리할 내용이다.&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;List 인터페이스&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;List인터페이스는 &lt;b&gt;중복을 허용&lt;/b&gt;하면서 &lt;b&gt;저장순서가 유지&lt;/b&gt;되는 컬렉션을 구현 하는데 사용된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;List인터페이스는 제목처럼 말그대로 인터페이스다.&amp;nbsp;&lt;br /&gt;그렇다면&amp;nbsp; &lt;span style=&quot;background-color: #eeeeee; color: #555555;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;ArrayList는 List를 상속 받아 만들어진 클래스&amp;nbsp;&lt;/span&gt;인 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(List에 대한 자세한 설명은 추후 작성)&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;b&gt;ArrayList&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ArrayList는 컬렉션 프레임웍에서 가장 자주 사용되는 컬렉션 클래스이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;당연하게도 List를 상속받아 만들어진 클래스며, List의 특징을 가진다.(저장순서 유지, 중복을 허용)&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;b&gt;ArrayList 메소드&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;void add(int index, object element)&lt;/b&gt;:&lt;span&gt; 저장된 위치(index)에 객체를 저장&lt;/span&gt;&lt;/li&gt;
&lt;li data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;b&gt;Object get(index)&lt;/b&gt;: 저장된 위치(index)에 저장된 객체를 반환&lt;/span&gt;&lt;/li&gt;
&lt;li data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;b&gt;int indexOf(Object o)&lt;/b&gt;:&lt;span&gt; 지정된 객체가 저장된 위치를 찾아 반환한다.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;b&gt;int lastindexOf(Object o)&lt;/b&gt;: 객체가 저장된 위치를 끝부터 역방향으로 검색해서 반환&lt;/span&gt;&lt;/li&gt;
&lt;li data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Object remove(int index),&lt;b&gt;boolen&lt;/b&gt; remove(Object o)&lt;/b&gt;: 지정된 위치의 객체 제거 or 지정된 객체 제거&lt;/li&gt;
&lt;li data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;boolen contains(Object o)&lt;/b&gt;:&lt;span&gt; 지정된 객체가 ArrayList에 포함되어있는지 확인&lt;/span&gt;&lt;/li&gt;
&lt;li data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;b&gt;void clear()&lt;/b&gt;: ArrayList를 완전히 비운다.&lt;/span&gt;&lt;/li&gt;
&lt;li data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;b&gt;boolen isEmpty()&lt;/b&gt;:&lt;span&gt; ArrayList가 비어있는지 확인한다.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;b&gt;int size()&lt;/b&gt;: ArrayList에 저장된 객체의 개수를 반환한다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&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;span&gt;ArrayList의 선언&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1656233668569&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ArrayList list = new ArrayList(); //타입 미설정 Object로 선언된다.
ArrayList&amp;lt;Softwiz&amp;gt; members = new ArrayList&amp;lt;Softwiz&amp;gt;(); //타입설정 Softwiz객체만 사용가능
ArrayList&amp;lt;Integer&amp;gt; num = new ArrayList&amp;lt;Integer&amp;gt;();//타입설정 int타입만 사용가능&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 처럼 ArrayList를 선언해도 된다!(절대 틀린 방법이 아니다.)&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;다만, 조금더 ArrayList선언시에 유연하게 사용할 수 있도록 선언하는 방법이 있다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1656235944587&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;  List list = new ArrayList();&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약&lt;span&gt;&amp;nbsp;&lt;/span&gt;ArrayList&amp;lt;Object&amp;gt; list = new ArrayList&amp;lt;&amp;gt;();&lt;span&gt;&amp;nbsp;&lt;/span&gt;와 같이 ArrayList라는 인스턴스로 선언하면,&lt;br /&gt;나중에 데이터의 용도가 LinkedList 자료구조로 변경해야 할 때 ArrayList로 선언된 모든 부분을 LinkedList로 변경해 주어야 한다.&lt;br /&gt;또, ArrayList에서는 지원하지만 LinkedList에서는 지원하지 않는 메소드를 사용했다면 그 메소드를 더 이상 사용할 수 없게 된다.&lt;br /&gt;이는 변경에 유연하지 못하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;그러나&amp;nbsp;&lt;/span&gt;List&amp;lt;Object&amp;gt; arrList = new ArrayList&amp;lt;&amp;gt;();&lt;span&gt;&amp;nbsp;&lt;/span&gt;와 같이 List라는 인스턴스로 선언하면,&lt;br /&gt;똑같은 상황이 오더라도 선언부 외에 다른 부분을 변경할 필요가 없다. 이런 부분에서 이점이 있기 때문에 List로서 선언하는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>JAVA</category>
      <category>add()</category>
      <category>ArrrayList</category>
      <category>conllection</category>
      <category>contains()</category>
      <category>get()</category>
      <category>indexof()</category>
      <category>Java</category>
      <category>list</category>
      <category>map</category>
      <category>SET</category>
      <author>인디아나쥰이</author>
      <guid isPermaLink="true">https://junecode.tistory.com/143</guid>
      <comments>https://junecode.tistory.com/143#entry143comment</comments>
      <pubDate>Sun, 26 Jun 2022 18:36:50 +0900</pubDate>
    </item>
    <item>
      <title>[mybatis] Mapper Xml 파일 - select문</title>
      <link>https://junecode.tistory.com/142</link>
      <description>&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;cache&lt;span&gt;&amp;nbsp;&lt;/span&gt;- 해당 네임스페이스을 위한 캐시 설정&lt;/li&gt;
&lt;li&gt;cache-ref&lt;span&gt;&amp;nbsp;&lt;/span&gt;- 다른 네임스페이스의 캐시 설정에 대한 참조&lt;/li&gt;
&lt;li&gt;resultMap&lt;span&gt;&amp;nbsp;&lt;/span&gt;- 데이터베이스 결과데이터를 객체에 로드하는 방법을 정의하는 엘리먼트&lt;/li&gt;
&lt;li&gt;sql&lt;span&gt;&amp;nbsp;&lt;/span&gt;- 다른 구문에서 재사용하기 위한 SQL 조각&lt;/li&gt;
&lt;li&gt;insert&lt;span&gt;&amp;nbsp;&lt;/span&gt;- 매핑된 INSERT 구문.&lt;/li&gt;
&lt;li&gt;update&lt;span&gt;&amp;nbsp;&lt;/span&gt;- 매핑된 UPDATE 구문.&lt;/li&gt;
&lt;li&gt;delete&lt;span&gt;&amp;nbsp;&lt;/span&gt;- 매핑된 DELEETE 구문.&lt;/li&gt;
&lt;li&gt;select&lt;span&gt;&amp;nbsp;&lt;/span&gt;- 매핑된 SELECT 구문.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;Select&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가장 흔히 사용할 엘리먼트.&amp;nbsp;&lt;br /&gt;데이터베이스에서 데이터를 가져올때 사용한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;간단히 말하자면 mybatis의 select는 데이터를 조회하고 그 결과를 매핑한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1650191393049&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;select id=&quot;selectPerson&quot; parameterType=&quot;int&quot; resultType=&quot;hashmap&quot;&amp;gt;
	SELECT * FROM PERSON WHERE ID = #{id}
&amp;lt;/select&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 구문의 이름은 selectPerson 이고 int 타입의 파라미터를 가진다.&lt;br /&gt;그리고 그 결과 데이터는 hashMap에 저장된다.&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;#{id} 라는 표기법은 PreparedStatement 파라미터를 만들도록 마이바티스에게 지시하는데&amp;nbsp;&lt;br /&gt;JDBC(Java Database Connectivity)를 사용할때 PreparedStatement 에 &quot;?&quot; 형태로 파라미터가 전달된다.&lt;br /&gt;즉 위의 쿼리문은 아래와 같이 동작하게 된다.&lt;/p&gt;
&lt;pre id=&quot;code_1650193208060&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;String selectPerson = &quot;SELECT * FROM PERSON WHERER ID=?&quot;;
PreparedStatement ps = conn.prepareStatement(selectperson);
ps.setInt(1, id);

// PreparedStatement 객체는 SQL구문을 실행시키는 기능을 갖는 객체로서
// '?'에 대응되는 값을 지정할때 setXXX메소드를 통해 설정한다.&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;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;Select문 속성&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;속성&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;설명&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 15.6977%;&quot;&gt;&lt;span style=&quot;color: #000000; background-color: #ffc1c8;&quot;&gt;id&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 84.186%;&quot;&gt;&lt;span style=&quot;color: #000000; background-color: #ffc1c8;&quot;&gt;명령문을 참조하는 데 사용할 수 있는 이 네임스페이스의 고유 식별자입니다.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 15.6977%;&quot;&gt;&lt;span style=&quot;background-color: #ffc1c8; color: #000000;&quot;&gt;parameterType&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 84.186%;&quot;&gt;&lt;span style=&quot;background-color: #ffc1c8; color: #000000;&quot;&gt;이 명령문에 전달될 매개변수의 완전한 클래스 이름 또는 별명.&amp;nbsp;MyBatis는 명령문에 전달된 실제 매개변수에서 사용할 TypeHandler를 계산할 수 있기 때문에 이 속성은 선택 사항입니다.&amp;nbsp;기본값은&amp;nbsp;unset입니다.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 15.6977%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 84.186%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 15.6977%;&quot;&gt;&lt;span style=&quot;color: #000000; background-color: #ffc1c8;&quot;&gt;resultType&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 84.186%;&quot;&gt;&lt;span style=&quot;background-color: #ffc1c8;&quot;&gt;쿼리문 수행 후 어떤 타입으로 반환할것이다 라는걸 지정해준다.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 15.6977%;&quot;&gt;resultMap&lt;/td&gt;
&lt;td style=&quot;width: 84.186%;&quot;&gt;외부에 대한 명명된 참조&lt;span&gt;&amp;nbsp;&lt;/span&gt;resultMap입니다.&lt;span&gt;&amp;nbsp;&lt;/span&gt;결과 맵은 마이바티스의 가장 강력한 기능으로, 이를 잘 이해하면 어려운 매핑 사례를 많이 해결할 수 있다.&lt;span&gt;&amp;nbsp;&lt;/span&gt;resultMapOR 둘 다&lt;span&gt;&amp;nbsp;&lt;/span&gt;사용&lt;span&gt;&amp;nbsp;&lt;/span&gt;resultType하지 마십시오.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 15.6977%;&quot;&gt;flushCache&lt;/td&gt;
&lt;td style=&quot;width: 84.186%;&quot;&gt;이것을 true로 설정하면 이 문이 호출될 때마다 로컬 및 2차 수준 캐시가 플러시됩니다.&lt;span&gt;&amp;nbsp;&lt;/span&gt;기본값:&lt;span&gt;&amp;nbsp;&lt;/span&gt;falseselect 문용입니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 15.6977%;&quot;&gt;useCache&lt;/td&gt;
&lt;td style=&quot;width: 84.186%;&quot;&gt;이것을 true로 설정하면 이 문의 결과가 2단계 캐시에 캐시됩니다.&lt;span&gt;&amp;nbsp;&lt;/span&gt;기본값:&lt;span&gt;&amp;nbsp;&lt;/span&gt;trueselect 문용입니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 15.6977%;&quot;&gt;timeout&lt;/td&gt;
&lt;td style=&quot;width: 84.186%;&quot;&gt;이것은 드라이버가 예외를 던지기 전에 데이터베이스가 요청에서 반환될 때까지 기다리는 시간(초)을 설정합니다.&lt;span&gt;&amp;nbsp;&lt;/span&gt;기본값은&lt;span&gt;&amp;nbsp;&lt;/span&gt;unset(드라이버에 따라 다름)입니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 15.6977%;&quot;&gt;fetchSize&lt;/td&gt;
&lt;td style=&quot;width: 84.186%;&quot;&gt;이것은 드라이버가 이 설정과 동일한 크기로 번호가 매겨진 행 배치의 결과를 반환하도록 하는 드라이버 힌트입니다.&lt;span&gt;&amp;nbsp;&lt;/span&gt;기본값은&lt;span&gt;&amp;nbsp;&lt;/span&gt;unset(드라이버에 따라 다름)입니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 15.6977%;&quot;&gt;statementType&lt;/td&gt;
&lt;td style=&quot;width: 84.186%;&quot;&gt;STATEMENT,&lt;span&gt;&amp;nbsp;&lt;/span&gt;PREPARED또는&lt;span&gt;&amp;nbsp;&lt;/span&gt;CALLABLE.&lt;span&gt;&amp;nbsp;&lt;/span&gt;_&lt;span&gt;&amp;nbsp;&lt;/span&gt;이로 인해 MyBatis는&lt;span&gt;&amp;nbsp;&lt;/span&gt;각각&lt;span&gt;&amp;nbsp;&lt;/span&gt;또는&lt;span&gt;&amp;nbsp;&lt;/span&gt;Statement를 사용합니다.&lt;span&gt;&amp;nbsp;&lt;/span&gt;기본값:&lt;span&gt;&amp;nbsp;&lt;/span&gt;.&lt;span&gt;&amp;nbsp;&lt;/span&gt;PreparedStatementCallableStatementPREPARED&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 15.6977%;&quot;&gt;resultSetType&lt;/td&gt;
&lt;td style=&quot;width: 84.186%;&quot;&gt;다음 중 하나&lt;span&gt;&amp;nbsp;&lt;/span&gt;FORWARD_ONLY|&lt;span&gt;&amp;nbsp;&lt;/span&gt;SCROLL_SENSITIVE|&lt;span&gt;&amp;nbsp;&lt;/span&gt;SCROLL_INSENSITIVE|&lt;span&gt;&amp;nbsp;&lt;/span&gt;DEFAULT(미설정과 동일).&lt;span&gt;&amp;nbsp;&lt;/span&gt;기본값은&lt;span&gt;&amp;nbsp;&lt;/span&gt;unset(드라이버에 따라 다름)입니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 15.6977%;&quot;&gt;databaseId&lt;/td&gt;
&lt;td style=&quot;width: 84.186%;&quot;&gt;구성된 databaseIdProvider가 있는 경우 MyBatis는 속성이&lt;span&gt;&amp;nbsp;&lt;/span&gt;databaseId&lt;span&gt;&amp;nbsp;&lt;/span&gt;없거나 현재 속성과&lt;span&gt;&amp;nbsp;&lt;/span&gt;databaseId일치하는 모든 명령문을 로드합니다.&lt;span&gt;&amp;nbsp;&lt;/span&gt;databaseId후자가 있는 경우&lt;span&gt;&amp;nbsp;&lt;/span&gt;와 없는 경우 동일한 진술이 발견되면 폐기됩니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 15.6977%;&quot;&gt;resultOrdered&lt;/td&gt;
&lt;td style=&quot;width: 84.186%;&quot;&gt;이것은 중첩된 결과 선택 문에만 적용 가능합니다. 이것이 true인 경우 중첩된 결과가 포함되거나 함께 그룹화되어 새 기본 결과 행이 반환될 때 이전 결과 행에 대한 참조가 더 이상 발생하지 않는다고 가정합니다.&lt;span&gt;&amp;nbsp;&lt;/span&gt;이렇게 하면 중첩된 결과를 훨씬 더 메모리 친화적으로 채울 수 있습니다.&lt;span&gt;&amp;nbsp;&lt;/span&gt;기본값:&lt;span&gt;&amp;nbsp;&lt;/span&gt;false.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 15.6977%;&quot;&gt;resultSets&lt;/td&gt;
&lt;td style=&quot;width: 84.186%;&quot;&gt;이는 여러 결과 집합에만 적용됩니다.&lt;span&gt;&amp;nbsp;&lt;/span&gt;명령문에서 반환할 결과 집합을 나열하고 각각에 이름을 지정합니다.&lt;span&gt;&amp;nbsp;&lt;/span&gt;이름은 쉼표로 구분됩니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;mybatis 문서에서 복사해왔당.&amp;nbsp;&lt;br /&gt;개인적으로 자주 봤던 항목들은 색깔로 표시해놨다...! 다른 항목들은 자주 사용안해본것 같아..&lt;/p&gt;</description>
      <category>mapper</category>
      <category>mybatis</category>
      <category>select</category>
      <author>인디아나쥰이</author>
      <guid isPermaLink="true">https://junecode.tistory.com/142</guid>
      <comments>https://junecode.tistory.com/142#entry142comment</comments>
      <pubDate>Sun, 17 Apr 2022 22:40:55 +0900</pubDate>
    </item>
    <item>
      <title>props 와 state</title>
      <link>https://junecode.tistory.com/141</link>
      <description>&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;props란?&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;props는 읽기 전용 데이터로서 수정 할 수 없다는 특징을 가지고 있다.&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;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;컴포넌트에서의 props&lt;/b&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1647092350415&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;//1.함수 컴포넌트에서의 props
function Welcome(props) {
	return &amp;lt;h1&amp;gt;Hello, {props.name}&amp;lt;/h1&amp;gt;;
}

// 2.클래스형 컴포넌트에서의 props
class Welcome extends React.Component {
	render() {
    	return &amp;lt;h1&amp;gt;Hello, {this.props.name}&amp;lt;/h1&amp;gt;;
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;props를 이용한 컴포넌트 렌더링&lt;/b&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1647092951440&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;...
&amp;lt;div id=&quot;root&quot;&amp;gt;&amp;lt;/div&amp;gt;

function Welcome(props) {
	return &amp;lt;h1&amp;gt;Hello, {props.name}&amp;lt;/h1&amp;gt;;
}

const element = &amp;lt;Welcome name=&quot;sara&quot; /&amp;gt;;

ReactDOM.render(
	element, document.getElementById('root')
)

// render함수 사용법 : ReactDOM.render(element, containter[, callback])
// React 엘리먼트를 container DOM에 렌더링하고 컴포넌트에 대한 참조를 반환한다.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실행시 브라우저 화면에 Hello, Sara가 출력되는 것을 확인할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1647095480969&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;div id=&quot;root&quot;&amp;gt;&amp;lt;/div&amp;gt;

function Welcome(props) {
	return &amp;lt;h1&amp;gt;Hello, {props.name}&amp;lt;/h1&amp;gt;;
}

function App() {
	return(
    	&amp;lt;div&amp;gt;
            &amp;lt;Welcome name=&quot;Sara&quot; /&amp;gt;
            &amp;lt;Welcome name=&quot;Cahal&quot; /&amp;gt;
            &amp;lt;Welcome name=&quot;Edite&quot; /&amp;gt;
        &amp;lt;/div&amp;gt;
    )
}

ReactDOM.render(
	&amp;lt;App /&amp;gt;, document.getElementById('root')
)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;혹은 Welcome을 랜더링 하기 위한 App 이라는 컴포넌트를 생성하여 Welcome을 여러번 렌더링 하여 Sara, Cahal, Edite을 출력 해 줄 수도 있다.&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;State란&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;간단하게 생각한다면 props와 비슷한 변수 정도로 생각할수 있지만, 일반 변수와는 다르게 값이 변하면 렌더링이 일어난다는 것이 특징이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1648126202856&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Clock extends React.Component {
  constructor(props) {
    super(props);
    this.state = {date: new Date()};
  }

  componentDidMount() {
    this.timerID = setInterval(
      () =&amp;gt; this.tick(),
      1000
    );
  }

  // componentWillUnmount() {
  //   clearInterval(this.timerID);
  // }

  tick() {
    this.setState({
      date: new Date()
    });
  }

  render() {
    return (
      &amp;lt;div&amp;gt;
        &amp;lt;h1&amp;gt;Hello, world!&amp;lt;/h1&amp;gt;
        &amp;lt;h2&amp;gt;It is {this.state.date.toLocaleTimeString()}.&amp;lt;/h2&amp;gt;
      &amp;lt;/div&amp;gt;
    );
  }
}

ReactDOM.render(
  &amp;lt;Clock /&amp;gt;,
  document.getElementById('root')
);&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;함수형 컴포넌트의 state&lt;/p&gt;
&lt;pre id=&quot;code_1648133696920&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function Message(props) {
  
  const [message, setMessage] = React.useState(&quot;Hello World&quot;);
   
  function saying() {
    setMessage(&quot;you again!&quot;)
  }
  
  return (
    &amp;lt;div&amp;gt;
      &amp;lt;h1 onClick={saying}&amp;gt;{message}&amp;lt;/h1&amp;gt;
    &amp;lt;/div&amp;gt;
  );
}

  ReactDOM.render(
    &amp;lt;Message/&amp;gt;,
    document.getElementById('root')
  );&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;화면상의 Hello World를 클릭하면 you again!으로 메세지가 바뀌는 간단한 예제를 만들어보았다.&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: #ee2323;&quot;&gt;&lt;b&gt;첫 번째 파라미터&lt;/b&gt;&lt;/span&gt;는 state(변수명)이고,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;두 번째 파라미터&lt;/span&gt;&lt;/b&gt;는 state를 변경해주는 함수이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #818c96;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;const [message, setMessage] = useState('&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;초기값');&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;background-color: #272822; color: #818c96;&quot;&gt;&lt;/span&gt;&lt;/p&gt;</description>
      <category>React</category>
      <category>props</category>
      <category>react</category>
      <category>State</category>
      <category>useState</category>
      <author>인디아나쥰이</author>
      <guid isPermaLink="true">https://junecode.tistory.com/141</guid>
      <comments>https://junecode.tistory.com/141#entry141comment</comments>
      <pubDate>Thu, 24 Mar 2022 23:59:32 +0900</pubDate>
    </item>
    <item>
      <title>React란?</title>
      <link>https://junecode.tistory.com/140</link>
      <description>&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;React란?&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;React는 사용자 인터페이스를 구축하기 위한 선언적이고 효율적이며 유연한 js 라이브러리&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;컴포넌트&quot;라고 불리는 작고 고립된 코드의 파편을 이용하여 복잡한 UI의 구성을 돕는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 사용자 인터페이스란, 사람들과 컴퓨터, 시스템, 기기, 도구 등 그 사이에서 일어나는 상호작용을 매개하는것인데&lt;br /&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;앞서, React는 선언적인 라이브러리 라고 이야기 하였다.&lt;br /&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위키 백과에 따르면 선언형 프로그래밍이란&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;프로그램이 어떤방법으로(How) 해야 하는지를 나타내기 보다 무엇과(What)과 같은지를 설명하는 경우에&amp;nbsp; &quot;선언형&quot; 이라고 한다.&lt;/li&gt;
&lt;li&gt;프로그램이 함수형 프로그래밍 언어, 논리형 프로그래밍 언어 등의 명령형 언어와 대비되는 프로그래밍 언어로 작성된 경우에 &quot;선언형&quot; 이라고 한다.&lt;/li&gt;
&lt;/ul&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;명령형 방식(How): 11:30 분이 되면 핸드폰을 찾으세요. 핸드폰의 전화기 아이콘을 누르세요. 최고당 돈가스 집 번호인 031-1234-1234를 누르세요.&lt;br /&gt;상대방의 음성이 들리면 &quot;로제돈가스 1개를 주문하겠습니다&quot;를 말하세요.&lt;/li&gt;
&lt;li&gt;선언형 방식(What): 점심으로 최고당에서 돈가스를 먹겠습니다.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이와 같이 어떻게 (How)에 대한 부분은 추상화를 하고 무엇을(What)에 초점을 맞추는 프로그래밍이 선언형 프로그래밍입니다.&lt;br /&gt;&lt;br /&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;pre id=&quot;code_1646659017432&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;ul id=&quot;member&quot;&amp;gt;&amp;lt;/ul&amp;gt;
&amp;lt;script&amp;gt;
var mbr = [&quot;jk&quot;, &quot;jh&quot;, &quot;th&quot;, &quot;sj&quot;, &quot;jy&quot;]
var elem = document.querySelector(&quot;#member&quot;);

for(let i = 0; i &amp;lt; mbr.length; i++) {
	var child = document.createElement(&quot;li&quot;);
    child.innerHTML = mbr[i];
    elem.appendChild(child);
}
&amp;lt;/script&amp;gt;

// innerHTML은 QuerySelector로 가져온 도큐먼트 오브젝트의 내용이나, 내부 HTML코드를 JS코드에서 변경가능
// appendChild는 한 노드를 특정 부모 노드의 자식 노드 리스트 중 마지막 자식으로 붙인다.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1646659405352&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;const mbr = [&quot;jk&quot;, &quot;jh&quot;, &quot;tk&quot;, &quot;sj&quot;, &quot;jy&quot;];
return (
	&amp;lt;ul&amp;gt;
		{mbr.map((elem) =&amp;gt; (  
    		&amp;lt;li&amp;gt;{elem}&amp;lt;/li&amp;gt;
    	))}
    &amp;lt;/ul&amp;gt;
);

// map() 메서드는 배열 내의 모든 요소 각각에 대하여 주어진 함수를 호출한 결과를 모아 새로운 배열을 반환함

// 위의 코드는 아래와 같이 치환된다
const mbr = [&quot;jk&quot;, &quot;jh&quot;, &quot;tk&quot;, &quot;sj&quot;, &quot;jy&quot;];
return(
	&amp;lt;ul&amp;gt;
    	{mbr.map((elem) =&amp;gt; (
        	React.createElement('li', null, `${elem}`)
        ))}
    &amp;lt;/ul&amp;gt;
);&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;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;함수형 컴포넌트 VS 클래스형 컴포넌트&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;리액트 공식문서에서 말하기를 개념적으로 컴포넌트는 JS 함수와 유사하다고 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;props&quot; 라고 하는 임의의 입력을 받은 후, 화면에 어떻게 표시되는지를 기술하는&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;React엘리먼트를 반환한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;리액트에서 컴포넌트는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;u&gt;앱을 이루는 최소한의 단위&lt;/u&gt;이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;또한&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;props&lt;/b&gt;나&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;state&lt;/b&gt;와 같은 데이터를 입력받아 DOM 노드를 생성한다고 한다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;함수형 컴포넌트&lt;/p&gt;
&lt;pre id=&quot;code_1646660077227&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function Welcome(props) {
  return &amp;lt;h1&amp;gt;Hello, {props.name}&amp;lt;/h1&amp;gt;;
}&lt;/code&gt;&lt;/pre&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;span style=&quot;background-color: #2c2c2c; color: #dddddd;&quot;&gt;state, lifeCycle 관련 기능사용 불가능하다. Hook을 통해 해결&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;/p&gt;
&lt;pre id=&quot;code_1646660111935&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Welcome extends React.Component {
  render() {
    return &amp;lt;h1&amp;gt;Hello, {this.props.name}&amp;lt;/h1&amp;gt;;
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-Class 키워드가 필요하다.&lt;br /&gt;-Component로 상속을 받아야한다.&lt;br /&gt;- render() 메소드가 반드시 있어햐한다.&lt;br /&gt;-함수형보다 메모리 자원을 더 사용한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;span style=&quot;background-color: #2c2c2c; color: #dddddd;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;state, lifeCycle 관련 기능사용이 가능하다&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;&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;span style=&quot;color: #000000;&quot;&gt;둘의 차이점 중 state와 lifeCycle, Hook 에 관한 부분이 있는데&amp;nbsp; 이 부분은 다음에 좀더 자세히 다루고자 한다.&lt;/span&gt;&lt;/p&gt;</description>
      <category>React</category>
      <category>react</category>
      <category>리액트</category>
      <category>명령형</category>
      <category>선언형</category>
      <category>클래스형 컴포넌트</category>
      <category>함수형 컴포넌트</category>
      <author>인디아나쥰이</author>
      <guid isPermaLink="true">https://junecode.tistory.com/140</guid>
      <comments>https://junecode.tistory.com/140#entry140comment</comments>
      <pubDate>Mon, 7 Mar 2022 22:46:42 +0900</pubDate>
    </item>
    <item>
      <title>객체지향 분석 및 설계</title>
      <link>https://junecode.tistory.com/139</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;객체지향 분석(OOA : Object Oriented Analysis)&lt;/b&gt;&lt;/h3&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; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 객체 모델링 기법(OMT, Object-Modeling Technique)라고도 함.&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; '동적 모델링' -&amp;gt; '기능 모델링' 순서&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 17.6745%;&quot;&gt;객체 모델링&lt;/td&gt;
&lt;td style=&quot;width: 82.3255%;&quot;&gt;정보 모델링 이라고도 하며, 시스템에서 요구되는 객체를 찾아내어 속성과 연산 식별 및 객체들 간의 관계를 규정하여 객체 다이어그램 으로 표시하는것.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 17.6745%;&quot;&gt;동적 모델링&lt;/td&gt;
&lt;td style=&quot;width: 82.3255%;&quot;&gt;상태 다이어그램을 이용하여, 시간의 흐름에 따른 객체들 간의 제어, 흐름, 상호작용, 동작 순서 등의 동적인 행위를 표현하는 모델링&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 17.6745%;&quot;&gt;기능 모델링&lt;/td&gt;
&lt;td style=&quot;width: 82.3255%;&quot;&gt;자료 흐름도를 이용하여 다수의 프로세스들 간의 자료 흐름을 중심으로 처리 과정을 표현한 모델링&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;객체지향 설계 원칙&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style4&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;단일 책임 원칙(SRP, Single Responsibility Principle)&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;-객체는 단 하나의 책임만 가져아 함&lt;br /&gt;-응집도는 높고, 결합도는 낮게 설계&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;개방-폐쇠 원칙(OCP, Open-Closed Principle)&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;-기존의 코드를 변경하지 않고 기능을 추가할 수 있도록 설계해야 함&lt;br /&gt;-공통 인터페이스를 하나의 인터페이스로 묶어 캡슐화 하는 방법&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;리스코프 치환 원칙(LSP, Liskov Substitution Principle)&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;-자식 클래스는 최소한 자신의 부모 클래스에서 가능한 행위는 수행 할 수 있어햐 한다는 원칙.&lt;br /&gt;-자식 클래스는 부모 클래스의 책임을 무시하거나 재정의하지 않고 확장만 수행해야함&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;인터페이스 분리 원칙(ISP, Interface Segregation Principle)&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;-자신이 사용하지 않는 인터페이스와 의존 관계를 맺거나 영향을 받지 않아야 한다는 원칙&lt;br /&gt;-단일 책임 원칙이 객체가 갖는 하나의 책임이라면, 인터페이스 분리원칙은 인터페이스가 갖는 하나의 책임이다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;의존 역전 원칙(DIP, Dependency Inversion Principle)&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;-각 객체들 간의 의존 관계가 성립될 때, 추상성이 낮은 클래스보다 추상성이 높은 클래스와 의존관계를 맺어야 한다는 원칙&lt;br /&gt;-일반적으로 인터페이스를 활용하면 이 원칙은 준수됨&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;추상성이란?&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;관련없는 세부 사항을 무시하고 객체의 필요한 특성만 식별하는 프로세스로 정의&lt;/li&gt;
&lt;li&gt;추상클래스를 상속받은 자식클래스에서 추상메서드의 구현부를 완성해야 함(강제상속)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;간단히 설명하여 필요한 부분만을 표현!&lt;/p&gt;</description>
      <category>컴퓨터 사이언스</category>
      <category>solid</category>
      <category>객체지향 설계</category>
      <category>추상성</category>
      <author>인디아나쥰이</author>
      <guid isPermaLink="true">https://junecode.tistory.com/139</guid>
      <comments>https://junecode.tistory.com/139#entry139comment</comments>
      <pubDate>Sat, 30 Oct 2021 22:56:32 +0900</pubDate>
    </item>
    <item>
      <title>객체 지향(Object-Oriented)</title>
      <link>https://junecode.tistory.com/138</link>
      <description>&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;객체 지향의 개요?&lt;/b&gt;&lt;/h3&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; 확장이 용이하여 빠른 개발과 유지보수가 쉽다는 이점이 있다.&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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;객체 지향의 구성 요소&lt;/b&gt;&lt;/h3&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;/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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 객체는 독립적으로 식별 가능한 이름을 가지고 있다. ( ex. 자동차 번호판)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 객체가 가질 수 있는 조건을 상태라고 하는데, 일반적으로 상태는 시간에 따라 변한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 객체와 객체는 상호 연관성에 의한 관계가 형성된다. (ex. 리그오브 레전드 바론한타)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 객체가 반응할 수 있는 메시지의 집합을 행위라고 하며,객체는 행위의 특징을 나타낼 수 있다.(ex. 카직스 궁은 은신이지만 미포 궁은 총알 난사다.)&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;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;/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;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;캡슐화&amp;nbsp;&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;-재사용성이 용이하다.&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;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;/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;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;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;/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;두 개 이상의 객체(클래스)들이 상호 참조하는 관계를 말한다.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 92px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 18.1007%; height: 20px;&quot;&gt;종류&lt;/td&gt;
&lt;td style=&quot;width: 27.5194%; height: 20px;&quot;&gt;의미&lt;/td&gt;
&lt;td style=&quot;width: 54.3798%; height: 20px;&quot;&gt;특징&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 18.1007%; height: 18px;&quot;&gt;is member of&lt;/td&gt;
&lt;td style=&quot;width: 27.5194%; height: 18px;&quot;&gt;연관화(Association)&lt;/td&gt;
&lt;td style=&quot;width: 54.3798%; height: 18px;&quot;&gt;2개 이상의 객체가 상호 관련되어 있음을 의미.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 18.1007%; height: 18px;&quot;&gt;is instance of&lt;/td&gt;
&lt;td style=&quot;width: 27.5194%; height: 18px;&quot;&gt;분류화(Classfication)&lt;/td&gt;
&lt;td style=&quot;width: 54.3798%; height: 18px;&quot;&gt;동일한 형의 특성을 갖는 객체들을 모아 구성하는 것&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 18.1007%; height: 18px;&quot;&gt;is part of&lt;/td&gt;
&lt;td style=&quot;width: 27.5194%; height: 18px;&quot;&gt;집단화(Aggregation)&lt;/td&gt;
&lt;td style=&quot;width: 54.3798%; height: 18px;&quot;&gt;관련 있는 객체들을 묶어 하나의 상위 객체를 구성하는것&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 18.1007%; height: 18px;&quot;&gt;is a&lt;/td&gt;
&lt;td style=&quot;width: 27.5194%; height: 18px;&quot;&gt;일반화(Generalization)&lt;/td&gt;
&lt;td style=&quot;width: 54.3798%; height: 18px;&quot;&gt;공통적인 성질들로 추상화한 상위 객체를 구성하는 것&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 18.1007%;&quot;&gt;is a&lt;/td&gt;
&lt;td style=&quot;width: 27.5194%;&quot;&gt;특수화/상세화(Specialization)&lt;/td&gt;
&lt;td style=&quot;width: 54.3798%;&quot;&gt;상위 객체를 구체화하여 하위 객체를 구성하는 것&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;</description>
      <category>컴퓨터 사이언스</category>
      <category>Java</category>
      <category>객체</category>
      <category>객체지향</category>
      <category>다형성</category>
      <category>인스턴스</category>
      <category>캡슐화</category>
      <category>클래스</category>
      <author>인디아나쥰이</author>
      <guid isPermaLink="true">https://junecode.tistory.com/138</guid>
      <comments>https://junecode.tistory.com/138#entry138comment</comments>
      <pubDate>Sat, 30 Oct 2021 21:49:13 +0900</pubDate>
    </item>
    <item>
      <title>[JAVA] iterator</title>
      <link>https://junecode.tistory.com/137</link>
      <description>&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;Iterator란&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Collection 인터페이스에 정의된 메서드로 while문을 사용해서 컬렉션의 클래스 요소들을 읽어올수 있다.&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;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 25.4651%;&quot;&gt;boolean hasNext()&lt;/td&gt;
&lt;td style=&quot;width: 74.5349%;&quot;&gt;읽어 올 요소가 남아있는지 확인. 있으면 true 없으면 false를 반환한다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 25.4651%;&quot;&gt;object next()&lt;/td&gt;
&lt;td style=&quot;width: 74.5349%;&quot;&gt;다음 요소를 읽어온다. next() 를 호출하기전 hasNext()를 호출해서 읽어올 요소의 존재여부를 확인하는게 안전하다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 25.4651%;&quot;&gt;void remove()&lt;/td&gt;
&lt;td style=&quot;width: 74.5349%;&quot;&gt;next()로 읽어 온 요소를 삭제한다. (선택적 기능)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1632989853888&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;int i = 0;

while(i &amp;lt; 5)
{
	if(!reviews.hasNext()) //존재하는 리뷰가 5개보다 적을때.
	{
    		System.out.println(&quot;---------결과 끝.----------&quot;);
        	return &quot;결과 출력 완료&quot;;
       	}
    String review = reviews.next().text();

    System.out.println(&quot;------------------------&quot;);
    System.out.println(&quot;리뷰 : &quot; + review);

    i++;
}&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;iterator를 사용하며 한가지 의문이 들었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;어째서 review를 먼저 출력하고 next()를 사용하는것이 아닌 next()를 먼저 호출한다음 출력을 하는것일까&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;찾아보니 iterator는 &lt;u&gt;자신이 가리키는 데이터 저장소의 첫번째 항목의 전을 가리키기 때문에&lt;/u&gt; next를 호출해야 데이터를 가져올 수 있다고 한다.&amp;nbsp;&lt;/p&gt;</description>
      <category>JAVA</category>
      <category>Iterator</category>
      <category>Java</category>
      <author>인디아나쥰이</author>
      <guid isPermaLink="true">https://junecode.tistory.com/137</guid>
      <comments>https://junecode.tistory.com/137#entry137comment</comments>
      <pubDate>Thu, 30 Sep 2021 17:22:59 +0900</pubDate>
    </item>
    <item>
      <title>JOIN (INNER JOIN, OUTER JOIN, LEFT JOIN, RIGHT JOIN)</title>
      <link>https://junecode.tistory.com/136</link>
      <description>&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;join이란?&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;연결하기 위해선 테이블들이 적어도 하나의 칼럼을 공유하고 있어야하고,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 공유하고 있는 컬럼을 PK 또는 FK값으로 사용해야한다.&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-origin-width=&quot;800&quot; data-origin-height=&quot;566&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nVOEW/btrcLBnVZgJ/fgZlOHP8iaFx1GZDyhpIfK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nVOEW/btrcLBnVZgJ/fgZlOHP8iaFx1GZDyhpIfK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nVOEW/btrcLBnVZgJ/fgZlOHP8iaFx1GZDyhpIfK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnVOEW%2FbtrcLBnVZgJ%2FfgZlOHP8iaFx1GZDyhpIfK%2Fimg.png&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;566&quot; data-ke-mobilestyle=&quot;widthOrigin&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;/&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;&amp;nbsp;&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;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;368&quot; data-origin-height=&quot;538&quot; data-filename=&quot;스크린샷 2021-08-20 오후 6.12.36.png&quot; width=&quot;267&quot; height=&quot;390&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bqno5k/btrcNMhEYTQ/AHg0i4JKk7VZYUcWiZVnAk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bqno5k/btrcNMhEYTQ/AHg0i4JKk7VZYUcWiZVnAk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bqno5k/btrcNMhEYTQ/AHg0i4JKk7VZYUcWiZVnAk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbqno5k%2FbtrcNMhEYTQ%2FAHg0i4JKk7VZYUcWiZVnAk%2Fimg.png&quot; data-origin-width=&quot;368&quot; data-origin-height=&quot;538&quot; data-filename=&quot;스크린샷 2021-08-20 오후 6.12.36.png&quot; width=&quot;267&quot; height=&quot;390&quot; data-ke-mobilestyle=&quot;widthOrigin&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;/&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;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;inner join&lt;/b&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;292&quot; data-origin-height=&quot;348&quot; data-filename=&quot;스크린샷 2021-08-20 오후 6.26.29.png&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bdmk3r/btrcGjIBmzn/GKoEcOAkA4fER8RGaCasv1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bdmk3r/btrcGjIBmzn/GKoEcOAkA4fER8RGaCasv1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bdmk3r/btrcGjIBmzn/GKoEcOAkA4fER8RGaCasv1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbdmk3r%2FbtrcGjIBmzn%2FGKoEcOAkA4fER8RGaCasv1%2Fimg.png&quot; data-origin-width=&quot;292&quot; data-origin-height=&quot;348&quot; data-filename=&quot;스크린샷 2021-08-20 오후 6.26.29.png&quot; data-ke-mobilestyle=&quot;widthOrigin&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1629450933829&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT
테이블별칭.조회할칼럼,
테이블별칭.조회할칼럼
FROM 기준테이블 별칭
INNER JOIN 조인테이블 별칭 ON 기준테이블별칭.기준키 = 조인테이블별칭.기준키;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1120&quot; data-origin-height=&quot;214&quot; data-filename=&quot;스크린샷 2021-08-20 오후 6.14.00.png&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/be5ChL/btrcMHVGVEi/cLwXhPcfy6jQkyiwQZ7hiK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/be5ChL/btrcMHVGVEi/cLwXhPcfy6jQkyiwQZ7hiK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/be5ChL/btrcMHVGVEi/cLwXhPcfy6jQkyiwQZ7hiK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbe5ChL%2FbtrcMHVGVEi%2FcLwXhPcfy6jQkyiwQZ7hiK%2Fimg.png&quot; data-origin-width=&quot;1120&quot; data-origin-height=&quot;214&quot; data-filename=&quot;스크린샷 2021-08-20 오후 6.14.00.png&quot; data-ke-mobilestyle=&quot;widthOrigin&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;/&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;&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;b&gt;left join&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;&amp;nbsp;&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-origin-width=&quot;476&quot; data-origin-height=&quot;354&quot; data-filename=&quot;스크린샷 2021-08-20 오후 6.26.55.png&quot; width=&quot;397&quot; height=&quot;295&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cKxThk/btrcGj2RkEo/FbDdFd9kFlHQZ49dA2rZ31/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cKxThk/btrcGj2RkEo/FbDdFd9kFlHQZ49dA2rZ31/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cKxThk/btrcGj2RkEo/FbDdFd9kFlHQZ49dA2rZ31/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcKxThk%2FbtrcGj2RkEo%2FFbDdFd9kFlHQZ49dA2rZ31%2Fimg.png&quot; data-origin-width=&quot;476&quot; data-origin-height=&quot;354&quot; data-filename=&quot;스크린샷 2021-08-20 오후 6.26.55.png&quot; width=&quot;397&quot; height=&quot;295&quot; data-ke-mobilestyle=&quot;widthOrigin&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1629451193886&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT
테이블별칭.조회할칼럼,
테이블별칭.조회할칼럼
FROM 기준테이블 별칭
LEFT OUTER JOIN 조인테이블 별칭 ON 기준테이블별칭.기준키 = 조인테이블별칭.기준키;&lt;/code&gt;&lt;/pre&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-origin-width=&quot;1106&quot; data-origin-height=&quot;232&quot; data-filename=&quot;스크린샷 2021-08-20 오후 6.19.51.png&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b7YocC/btrcHD0QlDI/xCxRo8am3OQvjMXYk5sAy0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b7YocC/btrcHD0QlDI/xCxRo8am3OQvjMXYk5sAy0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b7YocC/btrcHD0QlDI/xCxRo8am3OQvjMXYk5sAy0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb7YocC%2FbtrcHD0QlDI%2FxCxRo8am3OQvjMXYk5sAy0%2Fimg.png&quot; data-origin-width=&quot;1106&quot; data-origin-height=&quot;232&quot; data-filename=&quot;스크린샷 2021-08-20 오후 6.19.51.png&quot; data-ke-mobilestyle=&quot;widthOrigin&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;/&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;532&quot; data-origin-height=&quot;338&quot; data-filename=&quot;스크린샷 2021-08-20 오후 6.27.41.png&quot; width=&quot;478&quot; height=&quot;304&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Oh3yb/btrcMD6Rz7z/Kb6IW3rziFIfPMYqG0uJb0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Oh3yb/btrcMD6Rz7z/Kb6IW3rziFIfPMYqG0uJb0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Oh3yb/btrcMD6Rz7z/Kb6IW3rziFIfPMYqG0uJb0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FOh3yb%2FbtrcMD6Rz7z%2FKb6IW3rziFIfPMYqG0uJb0%2Fimg.png&quot; data-origin-width=&quot;532&quot; data-origin-height=&quot;338&quot; data-filename=&quot;스크린샷 2021-08-20 오후 6.27.41.png&quot; width=&quot;478&quot; height=&quot;304&quot; data-ke-mobilestyle=&quot;widthOrigin&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1629451736176&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT
테이블별칭.조회할칼럼,
테이블별칭.조회할칼럼
FROM 기준테이블 별칭
LEFT OUTER JOIN 조인테이블 별칭 ON 기준테이블별칭.기준키 = 조인테이블별칭.기준키
WHERE 조인테이블별칭.기준키 IS NULL;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1432&quot; data-origin-height=&quot;200&quot; data-filename=&quot;스크린샷 2021-08-20 오후 6.29.56.png&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b0RjKm/btrcMHIb3eo/ADHBVJp5nPGuK4W3DoWEf1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b0RjKm/btrcMHIb3eo/ADHBVJp5nPGuK4W3DoWEf1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b0RjKm/btrcMHIb3eo/ADHBVJp5nPGuK4W3DoWEf1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb0RjKm%2FbtrcMHIb3eo%2FADHBVJp5nPGuK4W3DoWEf1%2Fimg.png&quot; data-origin-width=&quot;1432&quot; data-origin-height=&quot;200&quot; data-filename=&quot;스크린샷 2021-08-20 오후 6.29.56.png&quot; data-ke-mobilestyle=&quot;widthOrigin&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;/&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;right join&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;464&quot; data-origin-height=&quot;338&quot; data-filename=&quot;스크린샷 2021-08-20 오후 6.30.34.png&quot; width=&quot;339&quot; height=&quot;247&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ccuUtQ/btrcHD0RLZk/EbSn7R8IE9jXiuiGdMSbTK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ccuUtQ/btrcHD0RLZk/EbSn7R8IE9jXiuiGdMSbTK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ccuUtQ/btrcHD0RLZk/EbSn7R8IE9jXiuiGdMSbTK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FccuUtQ%2FbtrcHD0RLZk%2FEbSn7R8IE9jXiuiGdMSbTK%2Fimg.png&quot; data-origin-width=&quot;464&quot; data-origin-height=&quot;338&quot; data-filename=&quot;스크린샷 2021-08-20 오후 6.30.34.png&quot; width=&quot;339&quot; height=&quot;247&quot; data-ke-mobilestyle=&quot;widthOrigin&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1629452013023&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT
테이블별칭.조회할칼럼,
테이블별칭.조회할칼럼
FROM 기준테이블 별칭
RIGHT OUTER JOIN 조인테이블 별칭 ON 기준테이블별칭.기준키 = 조인테이블별칭.기준키;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1108&quot; data-origin-height=&quot;308&quot; data-filename=&quot;스크린샷 2021-08-20 오후 6.32.34.png&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bzYbI6/btrcM0U490N/BKnSLocd1LU431AGbbvyw1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bzYbI6/btrcM0U490N/BKnSLocd1LU431AGbbvyw1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bzYbI6/btrcM0U490N/BKnSLocd1LU431AGbbvyw1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbzYbI6%2FbtrcM0U490N%2FBKnSLocd1LU431AGbbvyw1%2Fimg.png&quot; data-origin-width=&quot;1108&quot; data-origin-height=&quot;308&quot; data-filename=&quot;스크린샷 2021-08-20 오후 6.32.34.png&quot; data-ke-mobilestyle=&quot;widthOrigin&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;/&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;&amp;nbsp;&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-origin-width=&quot;486&quot; data-origin-height=&quot;292&quot; data-filename=&quot;스크린샷 2021-08-20 오후 6.34.09.png&quot; width=&quot;356&quot; height=&quot;214&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bX1d4J/btrcIUVDsyT/HDlhHGgSY8z0R7crkwOj01/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bX1d4J/btrcIUVDsyT/HDlhHGgSY8z0R7crkwOj01/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bX1d4J/btrcIUVDsyT/HDlhHGgSY8z0R7crkwOj01/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbX1d4J%2FbtrcIUVDsyT%2FHDlhHGgSY8z0R7crkwOj01%2Fimg.png&quot; data-origin-width=&quot;486&quot; data-origin-height=&quot;292&quot; data-filename=&quot;스크린샷 2021-08-20 오후 6.34.09.png&quot; width=&quot;356&quot; height=&quot;214&quot; data-ke-mobilestyle=&quot;widthOrigin&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1629452237877&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT
테이블별칭.조회할칼럼,
테이블별칭.조회할칼럼
FROM 기준테이블 별칭
RIGHT OUTER JOIN 조인테이블 별칭 ON 기준테이블별칭.기준키 = 조인테이블별칭.기준키
WHERE 기준테이블 별칭 IS NULL;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1374&quot; data-origin-height=&quot;260&quot; data-filename=&quot;스크린샷 2021-08-20 오후 6.35.20.png&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/50Rc5/btrcMVzrG0L/BLNB6BEXYHiZjPt5zIw1Z0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/50Rc5/btrcMVzrG0L/BLNB6BEXYHiZjPt5zIw1Z0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/50Rc5/btrcMVzrG0L/BLNB6BEXYHiZjPt5zIw1Z0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F50Rc5%2FbtrcMVzrG0L%2FBLNB6BEXYHiZjPt5zIw1Z0%2Fimg.png&quot; data-origin-width=&quot;1374&quot; data-origin-height=&quot;260&quot; data-filename=&quot;스크린샷 2021-08-20 오후 6.35.20.png&quot; data-ke-mobilestyle=&quot;widthOrigin&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;/&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;full outer join&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;556&quot; data-origin-height=&quot;238&quot; data-filename=&quot;스크린샷 2021-08-20 오후 6.37.52.png&quot; width=&quot;509&quot; height=&quot;218&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nrYqx/btrcGVt2hqx/SODIhSfIc4THnppkXkk701/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nrYqx/btrcGVt2hqx/SODIhSfIc4THnppkXkk701/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nrYqx/btrcGVt2hqx/SODIhSfIc4THnppkXkk701/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnrYqx%2FbtrcGVt2hqx%2FSODIhSfIc4THnppkXkk701%2Fimg.png&quot; data-origin-width=&quot;556&quot; data-origin-height=&quot;238&quot; data-filename=&quot;스크린샷 2021-08-20 오후 6.37.52.png&quot; width=&quot;509&quot; height=&quot;218&quot; data-ke-mobilestyle=&quot;widthOrigin&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;/&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;pre id=&quot;code_1629452344361&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT
테이블별칭.조회할칼럼,
테이블별칭.조회할칼럼
FROM 기준테이블 별칭
FULL OUTER JOIN 조인테이블 별칭 ON 기준테이블별칭.기준키 = 조인테이블별칭.기준키 .....;&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;span style=&quot;color: #ee2323;&quot;&gt;but!! Mysql 에선 지원하지 않기때문에 union 방식으로 해결한다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1629452679656&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT * FROM 기준테이블 별칭 LEFT JOIN 조인테이블 ON 기준테이블별칭.기준키 = 조인테이블별칭.기준키
UNION
SELECT * FROM 기준테이블 별칭 RIGHT JOIN 조인테이블 ON 기준테이블별칭.기준키 = 조인테이블별칭.기준키
WHERE 기준테이블별칭.기준키 IS NULL;&lt;/code&gt;&lt;/pre&gt;
&lt;figure data-ke-type=&quot;image&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; data-ke-style=&quot;alignCenter&quot;&gt;&lt;br /&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1786&quot; data-origin-height=&quot;320&quot; data-filename=&quot;스크린샷 2021-08-20 오후 6.44.36.png&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/BMOiE/btrcGUu6Ly6/n6M3NdJprRvNvGptxFVFAK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/BMOiE/btrcGUu6Ly6/n6M3NdJprRvNvGptxFVFAK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/BMOiE/btrcGUu6Ly6/n6M3NdJprRvNvGptxFVFAK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBMOiE%2FbtrcGUu6Ly6%2Fn6M3NdJprRvNvGptxFVFAK%2Fimg.png&quot; data-origin-width=&quot;1786&quot; data-origin-height=&quot;320&quot; data-filename=&quot;스크린샷 2021-08-20 오후 6.44.36.png&quot; data-ke-mobilestyle=&quot;widthOrigin&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>DB</category>
      <category>db</category>
      <category>JOIN</category>
      <category>MySQL</category>
      <category>SQL</category>
      <author>인디아나쥰이</author>
      <guid isPermaLink="true">https://junecode.tistory.com/136</guid>
      <comments>https://junecode.tistory.com/136#entry136comment</comments>
      <pubDate>Fri, 20 Aug 2021 18:49:17 +0900</pubDate>
    </item>
    <item>
      <title>[JAVA] ArrayList</title>
      <link>https://junecode.tistory.com/135</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;ArrayList란?&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존의 Vector를 개선한 것이며, Object 배열을 이용해서 데이터를 순차적으로 저장한다.&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;&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;b&gt;ArrayList 생성&lt;/b&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1629277468110&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.ArrayList;

ArrayList&amp;lt;Integer&amp;gt; lis1 = new ArrayList&amp;lt;Integer&amp;gt;(); // 자료형을 지정
ArrayList&amp;lt;Integer&amp;gt; list2 = new ArrayList&amp;lt;&amp;gt;(); //자료형 생략도 가능
ArrayList&amp;lt;Integer&amp;gt; list3 = new ArrayList&amp;lt;&amp;gt;(10); //초기용량 설정&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1629303785327&quot; class=&quot;java&quot; style=&quot;margin: 20px auto 0px; display: block; overflow: auto; padding: 20px; color: #383a42; background: #f8f8f8; font-size: 14px; font-family: 'SF Mono', Menlo, Consolas, Monaco, monospace; border: 1px solid #ebebeb; line-height: 1.71; cursor: default; z-index: 1; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Class Main{

  public static void main(String[] args)
  {
  	ArrayList list1 = new ArrayList(10);
    list1.add(new Integer(5));
    list1.add(new Integer(4));
    list1.add(new Integer(2));
    list1.add(new Integer(0));
    list1.add(new Integer(1));
    list1.add(new Integer(3));
    
    ArrayList list2 = new ArrayList(list1.subList(1, 4)); // 1부터 4사이의 값들을 반환
    print(list1, list2);
    
    Collection.sort(list1); //정렬
    Collection.sort(list2);
    
    print(list1, list2);
    
    //list2가 list1의 모든 요소를 가졌는지 여부
    System.out.println(&quot;list1.containsAll(list2) : &quot; + list1.containsAll(list2)); 
    
    list2.add(&quot;B&quot;);
    list2.add(&quot;C&quot;);
    list2.add(3, &quot;A&quot;); //인덱스를 지정해서 값 넣기
    print(list1, list2);
    
    list2.set(3, &quot;AA&quot;); //주어진 객체를 지정된 위치에 저장
    print(list1, list2);
    
    //list1에서 list2와 겹치는 부분만 남기고 나머지는 삭제한다.
    System.out.println(&quot;list1.retainAll(list2): &quot; + list1.retainAll(list2));
    
    print(list1, list2);
    
    //list2에서 list1에 포함된 객체들을 삭제한다.
    for(int i = list2.size() - 1; i &amp;gt;= 0; i--)
    {
    	if(list1.contains(list2.get(i)))
        	list2.remove(i);
	}
    print(list1, list2);
  }
  
    static void print(ArrayList list1, ArrayList list2)
    {
    	System.out.println(&quot;list1 : &quot; + list1);
        System.out.println(&quot;list2 : &quot; + list2);
        System.out.println();
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;※JDK .1.5부터는 타입을 지정하지않고 ArrayList를 사용하면 에러가 난다!!&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;제네릭은 추후 정리할 예정이다.&lt;/p&gt;</description>
      <category>JAVA</category>
      <category>ArrayList</category>
      <category>Java</category>
      <author>인디아나쥰이</author>
      <guid isPermaLink="true">https://junecode.tistory.com/135</guid>
      <comments>https://junecode.tistory.com/135#entry135comment</comments>
      <pubDate>Thu, 19 Aug 2021 01:23:38 +0900</pubDate>
    </item>
    <item>
      <title>[JAVA] println, print 차이</title>
      <link>https://junecode.tistory.com/134</link>
      <description>&lt;div class=&quot;revenue_unit_wrap&quot;&gt;
  &lt;div class=&quot;revenue_unit_item adfit&quot;&gt;
    &lt;div class=&quot;revenue_unit_info&quot;&gt;728x90&lt;/div&gt;
    &lt;ins class=&quot;kakao_ad_area&quot; style=&quot;display: none;&quot; data-ad-unit=&quot;DAN-TxjsXAoseUHXMf0I&quot; data-ad-width=&quot;728px&quot; data-ad-height=&quot;90px&quot;&gt;&lt;/ins&gt;
    &lt;script type=&quot;text/javascript&quot; src=&quot;//t1.daumcdn.net/kas/static/ba.min.js&quot; async=&quot;async&quot;&gt;&lt;/script&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;revenue_unit_wrap&quot;&gt;
  &lt;div class=&quot;revenue_unit_item adsense responsive&quot;&gt;
    &lt;div class=&quot;revenue_unit_info&quot;&gt;반응형&lt;/div&gt;
    &lt;script src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot; async=&quot;async&quot;&gt;&lt;/script&gt;
    &lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block;&quot; data-ad-host=&quot;ca-host-pub-9691043933427338&quot; data-ad-client=&quot;ca-pub-1464652913393983&quot; data-ad-format=&quot;auto&quot;&gt;&lt;/ins&gt;
    &lt;script&gt;(adsbygoogle = window.adsbygoogle || []).push({});&lt;/script&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;System.out.println()&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;&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;System.out.print()&lt;/b&gt;는 줄바꿈을 하지 않는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1628415526937&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;public static void main(String[] args)
{
  System.out.println(&quot;줄바꿈한다.&quot;);
  System.out.println(&quot;줄바꿈한다.&quot;);
  System.out.println(&quot;줄바꿈한다.&quot;);


  System.out.println(); 


  System.out.print(&quot;이어서 출력한다.&quot;);
  System.out.print(&quot;이어서 출력한다.&quot;);
  System.out.print(&quot;이어서 출력한다.&quot;);

}&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;&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-filename=&quot;스크린샷 2021-08-08 오후 6.38.04.png&quot; data-origin-width=&quot;858&quot; data-origin-height=&quot;136&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nUWk3/btrbqvpPonX/Vafc6RETqlTosHLx63wk40/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nUWk3/btrbqvpPonX/Vafc6RETqlTosHLx63wk40/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nUWk3/btrbqvpPonX/Vafc6RETqlTosHLx63wk40/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnUWk3%2FbtrbqvpPonX%2FVafc6RETqlTosHLx63wk40%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;858&quot; height=&quot;136&quot; data-filename=&quot;스크린샷 2021-08-08 오후 6.38.04.png&quot; data-origin-width=&quot;858&quot; data-origin-height=&quot;136&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>JAVA</category>
      <category>Java</category>
      <category>PRINT</category>
      <category>println</category>
      <category>출력</category>
      <author>인디아나쥰이</author>
      <guid isPermaLink="true">https://junecode.tistory.com/134</guid>
      <comments>https://junecode.tistory.com/134#entry134comment</comments>
      <pubDate>Sun, 8 Aug 2021 18:39:40 +0900</pubDate>
    </item>
  </channel>
</rss>