<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>개발자는 멋있다</title>
    <link>https://priming.tistory.com/</link>
    <description>멋있는 개발자가 되고 싶습니다.</description>
    <language>ko</language>
    <pubDate>Tue, 26 May 2026 07:28:12 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>priming</managingEditor>
    <item>
      <title>[Python] 문자열 포매팅 방법 - format, f-string 활용</title>
      <link>https://priming.tistory.com/200</link>
      <description>&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;h2 data-ke-size=&quot;size26&quot;&gt;format 함수로 문자열 포매팅&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;기본 사용법&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;format 함수로 문자열을 포맷팅하는 기본 사용법입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1740974773115&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;name = &quot;Alice&quot;
age = 25
print(&quot;이름: {}, 나이: {}&quot;.format(name, age))

# 출력 결과: 이름: Alice, 나이: 25&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;{}가 자리 표시자 역할을 하고, format 메소드를 통해 전달한 값이 차례대로 들어갑니다.&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;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인덱스를 사용하여 값을 전달하는 순서를 변경할 수 있습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1740974803419&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;print(&quot;이름: {1}, 나이: {0}&quot;.format(age, name))

# 출력 결과: 이름: Alice, 나이: 25&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부터 시작하며, {0}으로 설정하면 0번째 인자 값이 들어갑니다.&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;/h3&gt;
&lt;pre id=&quot;code_1740974820035&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;print(&quot;이름: {n}, 나이: {a}&quot;.format(n=name, a=age))

# 출력 결과: 이름: Alice, 나이: 25&lt;/code&gt;&lt;/pre&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;/h3&gt;
&lt;pre id=&quot;code_1740974838092&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;pi = 3.1415926535
print(&quot;원주율: {:.2f}&quot;.format(pi))

# 출력 결과: 원주율: 3.14&lt;/code&gt;&lt;/pre&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;/h3&gt;
&lt;pre id=&quot;code_1740974866246&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;print(&quot;이름: {:&amp;gt;10}&quot;.format(name))  # 오른쪽 정렬 (10칸)
print(&quot;이름: {:&amp;lt;10}&quot;.format(name))  # 왼쪽 정렬 (10칸)
print(&quot;이름: {:^10}&quot;.format(name))  # 가운데 정렬 (10칸)

# 출력 결과
# 이름:      Alice
# 이름: Alice     
# 이름:   Alice&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&lt;!-- 중간-디스플레이-수평-1 --&gt; &lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block;&quot; data-ad-client=&quot;ca-pub-3244792068052716&quot; data-ad-slot=&quot;1629193049&quot; data-ad-format=&quot;auto&quot; data-full-width-responsive=&quot;true&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/div&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;h2 data-ke-size=&quot;size26&quot;&gt;f-string으로 문자열 포매팅&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;기본 사용법&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;f-string으로 문자열을 포매팅하는 방법은 문자열 앞에 f를 붙이고 {}안에 변수를 직접 넣으면 됩니다.&lt;/p&gt;
&lt;pre id=&quot;code_1740974885864&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;print(f&quot;이름: {name}, 나이: {age}&quot;)

# 출력 결과: 이름: Alice, 나이: 25&lt;/code&gt;&lt;/pre&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;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;{}괄호 안에서 연산을 직접 할 수도 있습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1740974910117&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;print(f&quot;내년 나이는 {age + 1}살 입니다.&quot;)

# 출력 결과: 내년 나이는 26살 입니다&lt;/code&gt;&lt;/pre&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;/h3&gt;
&lt;pre id=&quot;code_1740974930847&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;print(f&quot;원주율: {pi:.3f}&quot;)

# 출력 결과: 원주율: 3.142&lt;/code&gt;&lt;/pre&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;/h3&gt;
&lt;pre id=&quot;code_1740974958793&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;print(f&quot;이름: {name:&amp;gt;10}&quot;)  # 오른쪽 정렬
print(f&quot;이름: {name:&amp;lt;10}&quot;)  # 왼쪽 정렬
print(f&quot;이름: {name:^10}&quot;)  # 가운데 정렬

# 출력 결과
# 이름:      Alice
# 이름: Alice     
# 이름:   Alice&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Study/python</category>
      <category>파이썬</category>
      <category>파이썬 문자열 포맷팅</category>
      <author>priming</author>
      <guid isPermaLink="true">https://priming.tistory.com/200</guid>
      <comments>https://priming.tistory.com/200#entry200comment</comments>
      <pubDate>Mon, 3 Mar 2025 13:12:55 +0900</pubDate>
    </item>
    <item>
      <title>[Linux] VI, Vim 편집기 명령어 모음(편집, 검색, 커서 이동)</title>
      <link>https://priming.tistory.com/199</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;VI 자주 사용되는 명령어&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;파일 열기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;vi 편집기로 파일을 여는 명령어입니다. cmd 창에서 다음 명령어를 입력하면 vi 편집기로 파일이 열립니다.&lt;/p&gt;
&lt;pre id=&quot;code_1740972836324&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;vi &amp;lt;파일명&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;해당 파일이 존재하지 않는 경우에는 신규 파일 생성 모드로 열리고, 존재하는 파일인 경우에는 해당 파일을 열게 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;신규 생성 모드일 때는 맨 하단에 [NEW]라고 표시되어있습니다.&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;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;편집기에서 무언가를 입력하거나 지우고 싶을 때는 입력(Insert) 모드로 전환해야 합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1740973042697&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;i

# i 입력하면 하단 텍스트가 다음과 같이 변경됨
-- INSERT --&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;i를 입력하면 맨 하단 텍스트가 -- INSERT --로 변경됩니다.&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;파일 저장&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;편집한 파일의 내용을 저장하고 싶을 때는 w 명령어를 사용하면 됩니다.&lt;/p&gt;
&lt;pre id=&quot;code_1740973200938&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# esc로 명령 모드로 전환 후

:w&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;입력 모드에서 편집 후 저장하고자 할 때 esc를 눌러서 명령 모드로 전환 후 :w를 입력하면 현재 입력되어있는 내용이 저장됩니다.&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;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;편집기를 닫고싶을 때는 다음과 같이 사용하면 됩니다.&lt;/p&gt;
&lt;pre id=&quot;code_1740973383387&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# esc를 눌러 명령 모드로 전환 후 실행
# 닫기
:q

# 저장 후 닫기
:wq

# 강제 종료
:q!&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;아무것도 편집하지 않은 상태에서 닫고싶다면 명령 모드에서 :q를 입력하면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 파일 내용이 변경되었는데 :q 명령어를 실행하면&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;E37: No write since last change (add ! to override) 오류가 발생합니다.&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&gt;변경된 내용을 반영하면서 편집기를 닫고싶다면 명령 모드에서 :wq를 입력합니다.&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&gt;만약 변경된 내용을 반영하지 않고 강제로 닫고싶다면 느낌표를 붙여서 :q! 로 실행하면 됩니다.&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;div&gt;&lt;!-- 중간-디스플레이-수평-1 --&gt; &lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block;&quot; data-ad-client=&quot;ca-pub-3244792068052716&quot; data-ad-slot=&quot;1629193049&quot; data-ad-format=&quot;auto&quot; data-full-width-responsive=&quot;true&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/div&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;h2 data-ke-size=&quot;size26&quot;&gt;VI 텍스트 검색 명령어&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;vi/vim 편집기 명령어를 통해 텍스트를 검색하는 방법입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1740973700851&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 위에서 아래로 검색
/&amp;lt;검색하고자 하는 문자열&amp;gt;

# 아래에서 위로 검색
?&amp;lt;검색하고자 하는 문자열&amp;gt;

# 커서 이동
# 같은 방향으로 다음 검색 결과 이동
n

# 반대 방향 이동
N&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;?(물음표)로 검색하면 아래에서 위 방향으로 검색이 가능합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;VI 커서 이동 명령어&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;vim 편집기 내부에서 커서를 이동시킬 수 있는 명령어입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 명령어는 esc를 눌러 명령 모드인 상태에서 사용이 가능합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1740974185436&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# esc를 눌러 명령모드로 전환한 상태에서 사용 가능

# 마지막 줄로 이동
G

# 첫번째 줄로 이동
gg

# 3번째 줄로 이동
3G

# 다음 단어로 이동
w

# 이전 단어로 이동
b

# 현재 줄의 맨 끝으로 이동
$

# 현재 줄의 맨 앞으로 이동
0&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;</description>
      <category>Study/OS</category>
      <category>vi</category>
      <category>vim</category>
      <author>priming</author>
      <guid isPermaLink="true">https://priming.tistory.com/199</guid>
      <comments>https://priming.tistory.com/199#entry199comment</comments>
      <pubDate>Mon, 3 Mar 2025 12:57:23 +0900</pubDate>
    </item>
    <item>
      <title>[Python] 리스트의 문자열 따옴표 없이 출력하는 방법</title>
      <link>https://priming.tistory.com/198</link>
      <description>&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;h2 data-ke-size=&quot;size26&quot;&gt;join() 사용(문자열 리스트일때)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문자열 리스트에서 각 요소를 따옴표 없이 출력하고 싶을 때 join 메소드를 사용할 수 있습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1740970308362&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;my_list = [&quot;apple&quot;, &quot;banana&quot;, &quot;cherry&quot;]
print(&quot; &quot;.join(my_list))

# 출력결과: apple banana cherry&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;pre id=&quot;code_1740970376342&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;my_list = [&quot;apple&quot;, &quot;banana&quot;, &quot;cherry&quot;]
print(&quot;, &quot;.join(my_list))

# 출력 결과: apple, banana, cherry&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;* 연산자 사용&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* 연산자를 사용하면 리스트의 요소가 공백으로 구분되어 출력됩니다.&lt;/p&gt;
&lt;pre id=&quot;code_1740970404288&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;my_list = [1, 2, 3, 4, 5]
print(*my_list)

# 출력 결과: 1 2 3 4 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;숫자 리스트 뿐만 아니라 문자열 리스트에도 적용이 가능합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1740970526708&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;my_list = [&quot;apple&quot;, &quot;banana&quot;, &quot;cherry&quot;]
print(*my_list)

# 출력 결과: apple banana cherry&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;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&lt;!-- 중간-디스플레이-수평-1 --&gt; &lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block;&quot; data-ad-client=&quot;ca-pub-3244792068052716&quot; data-ad-slot=&quot;1629193049&quot; data-ad-format=&quot;auto&quot; data-full-width-responsive=&quot;true&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/div&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;h2 data-ke-size=&quot;size26&quot;&gt;sep 매개변수 사용&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;print 메소드를 사용할 때 seq 매개변수를 지정하면 원하는 구분자로 출력할 수 있습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1740970572907&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;my_list = [&quot;apple&quot;, &quot;banana&quot;, &quot;cherry&quot;]
print(*my_list, sep=&quot;, &quot;)

# 출력 결과: apple, banana, cherry&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;map()과 join()을 함께 사용(숫자 리스트일때)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;숫자 리스트에서 join을 사용하고자 할 때, 숫자 리스트는 join 메소드를 바로 사용할 수 없기 때문에 map을 활용하여 문자열로 변환하는 과정이 필요합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1740970627996&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;my_list = [1, 2, 3, 4, 5]
print(&quot; &quot;.join(map(str, my_list)))

# 출력 결과: 1 2 3 4 5&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Study/python</category>
      <category>파이썬 리스트</category>
      <category>파이썬 리스트 출력</category>
      <author>priming</author>
      <guid isPermaLink="true">https://priming.tistory.com/198</guid>
      <comments>https://priming.tistory.com/198#entry198comment</comments>
      <pubDate>Mon, 3 Mar 2025 11:57:50 +0900</pubDate>
    </item>
    <item>
      <title>[Java] 배열 값 더하기, 자르기, 합치기 방법 정리</title>
      <link>https://priming.tistory.com/197</link>
      <description>&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;h2 data-ke-size=&quot;size26&quot;&gt;배열 값 더하는 방법&lt;/h2&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;반복문 사용&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;반복문을 사용하여 값을 모두 더하는 방법입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1740968640561&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 숫자 배열 요소를 모두 더하는 방법
int[] numbers = {1, 2, 3, 4, 5};
int sum = 0;

for (int num : numbers) { // 향상된 for문 사용
    sum += num;
}

System.out.println(&quot;배열의 합: &quot; + sum);

// 문자열 배열 요소를 모두 더하는 방법
String[] strings = {&quot;Hello&quot;, &quot;World&quot;, &quot;Java&quot;};
String result = &quot;&quot;;
for (String str : strings) {
    result += str + &quot; &quot;;
}
System.out.println(&quot;문자열 배열의 합: &quot; + result);&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;270&quot; data-origin-height=&quot;46&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/T0TsQ/btsMzXWOuS6/I68v6jgxt6kSLbd4qerrO0/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/T0TsQ/btsMzXWOuS6/I68v6jgxt6kSLbd4qerrO0/img.webp&quot; data-alt=&quot;반복문을 사용하여 배열의 값을 모두 더한 결과&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/T0TsQ/btsMzXWOuS6/I68v6jgxt6kSLbd4qerrO0/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FT0TsQ%2FbtsMzXWOuS6%2FI68v6jgxt6kSLbd4qerrO0%2Fimg.webp&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; alt=&quot;반복문을 사용하여 배열의 값을 모두 더한 결과&quot; loading=&quot;lazy&quot; width=&quot;270&quot; height=&quot;46&quot; data-origin-width=&quot;270&quot; data-origin-height=&quot;46&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;반복문을 사용하여 배열의 값을 모두 더한 결과&lt;/figcaption&gt;
&lt;/figure&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;Stream 사용&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Arrays.stream() 메소드를 사용할 수도 있습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1740968837918&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// Arrays.stream() 메소드를 사용하여 배열 요소를 모두 더하는 방법
int sumOfNumbers = Arrays.stream(numbers).sum();
System.out.println(&quot;배열의 합: &quot; + sumOfNumbers);

String sumOfStrings = Arrays.stream(strings).reduce(&quot;&quot;, (a, b) -&amp;gt; a + b);
System.out.println(&quot;문자열 배열의 합: &quot; + sumOfStrings);&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;220&quot; data-origin-height=&quot;46&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/esrYSO/btsMA41UkSr/kYOC7MOtqeIH78mQPRYMc0/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/esrYSO/btsMA41UkSr/kYOC7MOtqeIH78mQPRYMc0/img.webp&quot; data-alt=&quot;Arrays.stream을 사용하여 배열의 값을 모두 더한 결과&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/esrYSO/btsMA41UkSr/kYOC7MOtqeIH78mQPRYMc0/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FesrYSO%2FbtsMA41UkSr%2FkYOC7MOtqeIH78mQPRYMc0%2Fimg.webp&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; alt=&quot;Arrays.stream을 사용하여 배열의 값을 모두 더한 결과&quot; loading=&quot;lazy&quot; width=&quot;220&quot; height=&quot;46&quot; data-origin-width=&quot;220&quot; data-origin-height=&quot;46&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Arrays.stream을 사용하여 배열의 값을 모두 더한 결과&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;배열 자르는 방법(부분 배열을 만드는 방법)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;배열을 잘라서 부분 배열을 만드는 방법입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;배열을 자를 때는 Arrays.copyOfRange 메소드를 사용하면 됩니다.&lt;/p&gt;
&lt;pre id=&quot;code_1740969131953&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;int[] numbers = {1, 2, 3, 4, 5};
int[] subArray = Arrays.copyOfRange(numbers, 1, 4); // 인덱스 1부터 4전까지 자름 (즉, {2, 3, 4})

System.out.println(&quot;잘린 배열: &quot; + Arrays.toString(subArray));&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;146&quot; data-origin-height=&quot;24&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eIxj6N/btsMyabQv2z/4wn77udXx9bqrF0bsDATPk/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eIxj6N/btsMyabQv2z/4wn77udXx9bqrF0bsDATPk/img.webp&quot; data-alt=&quot;Arrays.copyOfRange로 배열을 자른 결과&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eIxj6N/btsMyabQv2z/4wn77udXx9bqrF0bsDATPk/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeIxj6N%2FbtsMyabQv2z%2F4wn77udXx9bqrF0bsDATPk%2Fimg.webp&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; alt=&quot;Arrays.copyOfRange로 배열을 자른 결과&quot; loading=&quot;lazy&quot; width=&quot;146&quot; height=&quot;24&quot; data-origin-width=&quot;146&quot; data-origin-height=&quot;24&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Arrays.copyOfRange로 배열을 자른 결과&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&lt;!-- 중간-디스플레이-수평-1 --&gt; &lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block;&quot; data-ad-client=&quot;ca-pub-3244792068052716&quot; data-ad-slot=&quot;1629193049&quot; data-ad-format=&quot;auto&quot; data-full-width-responsive=&quot;true&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/div&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;h2 data-ke-size=&quot;size26&quot;&gt;여러 배열을 합치는 방법&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두개의 배열을 하나로 합치기 위해 System.arraycopy나 Stream.concat 메소드를 사용할 수 있습니다.&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;System.copyOfRange 사용&lt;/h3&gt;
&lt;pre id=&quot;code_1740969211313&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 배열을 합치는 방법
int[] arr1 = {1, 2, 3};
int[] arr2 = {4, 5, 6};

int[] mergedArray = new int[arr1.length + arr2.length];

System.arraycopy(arr1, 0, mergedArray, 0, arr1.length);
System.arraycopy(arr2, 0, mergedArray, arr1.length, arr2.length);

System.out.println(&quot;합쳐진 배열: &quot; + Arrays.toString(mergedArray));&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;221&quot; data-origin-height=&quot;27&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/toVrn/btsMyuOID15/F6EQlfua4AlLkH4GFIXBzk/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/toVrn/btsMyuOID15/F6EQlfua4AlLkH4GFIXBzk/img.webp&quot; data-alt=&quot;System.arraycopy 메소드로 여러 배열을 합친 결과&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/toVrn/btsMyuOID15/F6EQlfua4AlLkH4GFIXBzk/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtoVrn%2FbtsMyuOID15%2FF6EQlfua4AlLkH4GFIXBzk%2Fimg.webp&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; alt=&quot;System.arraycopy 메소드로 여러 배열을 합친 결과&quot; loading=&quot;lazy&quot; width=&quot;221&quot; height=&quot;27&quot; data-origin-width=&quot;221&quot; data-origin-height=&quot;27&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;System.arraycopy 메소드로 여러 배열을 합친 결과&lt;/figcaption&gt;
&lt;/figure&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;Stream.concat 사용&lt;/h3&gt;
&lt;pre id=&quot;code_1740969401609&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;int[] arr1 = {1, 2, 3};
int[] arr2 = {4, 5, 6};

int[] mergedArrayFromStream = IntStream.concat(Arrays.stream(arr1), Arrays.stream(arr2)).toArray();

System.out.println(&quot;합쳐진 배열: &quot; + Arrays.toString(mergedArrayFromStream));&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결과는 System.copyOfRange와 동일합니다.&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;</description>
      <category>Study/java</category>
      <category>자바</category>
      <category>자바 배열</category>
      <author>priming</author>
      <guid isPermaLink="true">https://priming.tistory.com/197</guid>
      <comments>https://priming.tistory.com/197#entry197comment</comments>
      <pubDate>Mon, 3 Mar 2025 11:38:48 +0900</pubDate>
    </item>
    <item>
      <title>[Java] 비밀번호 체크 정규식 모음(영문, 숫자, 특수문자 포함)</title>
      <link>https://priming.tistory.com/196</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Java로 비밀번호 체크 시 많이 사용되는 정규식에 대해 설명드리겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;영문 대소문자 1개 이상 포함 여부 정규식&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;대문자 포함 여부 체크&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;비밀번호에 대문자가 포함되었는지 체크하는 정규식입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1739009739217&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;String includeUpperLetterPassword = &quot;Abcdefg123&quot;;
String notIncludeUpperLetterPassword = &quot;abcdefg123&quot;; // 대문자가 없는 비밀번호
String includeUpperLetterRegex = &quot;^(?=.*[A-Z]).+$&quot;;

System.out.println(&quot;includeUpperLetter - &quot; + includeUpperLetterPassword + &quot; : &quot; + includeUpperLetterPassword.matches(includeUpperLetterRegex));
System.out.println(&quot;notIncludeUpperLetter - &quot; + notIncludeUpperLetterPassword + &quot; : &quot; + notIncludeUpperLetterPassword.matches(includeUpperLetterRegex));&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;310&quot; data-origin-height=&quot;47&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c47uMy/btsMaSCiIxc/gIhqGvFGkTciTryHYTiz60/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c47uMy/btsMaSCiIxc/gIhqGvFGkTciTryHYTiz60/img.webp&quot; data-alt=&quot;대문자 포함여부 정규식 체크 결과&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c47uMy/btsMaSCiIxc/gIhqGvFGkTciTryHYTiz60/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc47uMy%2FbtsMaSCiIxc%2FgIhqGvFGkTciTryHYTiz60%2Fimg.webp&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; alt=&quot;대문자 포함여부 정규식 체크 결과&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;45&quot; data-origin-width=&quot;310&quot; data-origin-height=&quot;47&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;대문자 포함여부 정규식 체크 결과&lt;/figcaption&gt;
&lt;/figure&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;대소문자 1개 이상 포함 여부 체크&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대소문자가 1개 이상 포함되어있는지 체크하는 정규식입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1739009981535&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;String includeUpperLetterPassword = &quot;Abcdefg123&quot;;
String notIncludeUpperLetterPassword = &quot;abcdefg123&quot;;

String includeUpperAndLowerLetterRegex = &quot;^(?=.*[A-Z])(?=.*[a-z]).+$&quot;;

System.out.println(&quot;includeUpperAndLowerLetter - &quot; + includeUpperLetterPassword + &quot; : &quot; + includeUpperLetterPassword.matches(includeUpperAndLowerLetterRegex));
System.out.println(&quot;includeUpperAndLowerLetter - &quot; + notIncludeUpperLetterPassword + &quot; : &quot; + notIncludeUpperLetterPassword.matches(includeUpperAndLowerLetterRegex));&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;340&quot; data-origin-height=&quot;44&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uYplT/btsMbGOHFIR/afDXNhalH5NHC5N03bxPI1/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uYplT/btsMbGOHFIR/afDXNhalH5NHC5N03bxPI1/img.webp&quot; data-alt=&quot;대소문자 1개 이상 포함 여부 체크 결과&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uYplT/btsMbGOHFIR/afDXNhalH5NHC5N03bxPI1/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuYplT%2FbtsMbGOHFIR%2FafDXNhalH5NHC5N03bxPI1%2Fimg.webp&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; alt=&quot;대소문자 1개 이상 포함 여부 체크 결과&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;39&quot; data-origin-width=&quot;340&quot; data-origin-height=&quot;44&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;대소문자 1개 이상 포함 여부 체크 결과&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;숫자 포함 여부 정규식&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;숫자가 포함되었는지 체크하는 정규식입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1739010142761&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;String includeNumberPassword = &quot;Abcdefg123&quot;;
String notIncludeNumberPassword = &quot;Abcdefg&quot;;

String includeNumberRegex = &quot;^(?=.*[0-9]).+$&quot;;

System.out.println(&quot;includeNumber - &quot; + includeUpperLetterPassword + &quot; : &quot; + includeUpperLetterPassword.matches(includeNumberRegex));
System.out.println(&quot;notIncludeNumber - &quot; + notIncludeNumberPassword + &quot; : &quot; + notIncludeNumberPassword.matches(includeNumberRegex));&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;247&quot; data-origin-height=&quot;43&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kYBsZ/btsMcf4fir4/isoVLrzGk4BgdAqd6Tq7pk/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kYBsZ/btsMcf4fir4/isoVLrzGk4BgdAqd6Tq7pk/img.webp&quot; data-alt=&quot;숫자 포함 여부 체크 결과&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kYBsZ/btsMcf4fir4/isoVLrzGk4BgdAqd6Tq7pk/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkYBsZ%2FbtsMcf4fir4%2FisoVLrzGk4BgdAqd6Tq7pk%2Fimg.webp&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; alt=&quot;숫자 포함 여부 체크 결과&quot; loading=&quot;lazy&quot; width=&quot;200&quot; height=&quot;35&quot; data-origin-width=&quot;247&quot; data-origin-height=&quot;43&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;숫자 포함 여부 체크 결과&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;&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;div&gt;&lt;!-- 중간-디스플레이-수평-1 --&gt; &lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block;&quot; data-ad-client=&quot;ca-pub-3244792068052716&quot; data-ad-slot=&quot;1629193049&quot; data-ad-format=&quot;auto&quot; data-full-width-responsive=&quot;true&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/div&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;h2 data-ke-size=&quot;size26&quot;&gt;특수문자 1개 이상 포함 여부 정규식&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특수문자가 1개 이상 포함되어있는지 체크하는 정규식입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1739010290033&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;String includeSpecialLetterPassword = &quot;Abcdefg123!&quot;;
String notIncludeSpecialLetterPassword = &quot;Abcdefg123&quot;;

String includeSpecialLetterRegex = &quot;^(?=.*[!@#$%^&amp;amp;*()_+\\-=\\[\\]{};':\&quot;\\\\|,.&amp;lt;&amp;gt;\\/?]).+$&quot;;

System.out.println(&quot;includeNumber - &quot; + includeUpperLetterPassword + &quot; : &quot; + includeUpperLetterPassword.matches(includeNumberRegex));
System.out.println(&quot;notIncludeNumber - &quot; + notIncludeNumberPassword + &quot; : &quot; + notIncludeNumberPassword.matches(includeNumberRegex));&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;325&quot; data-origin-height=&quot;47&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b9luO3/btsMbcgdWcd/TxaLykzkpFS0pEsm1IKeXk/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b9luO3/btsMbcgdWcd/TxaLykzkpFS0pEsm1IKeXk/img.webp&quot; data-alt=&quot;특수문자 포함 여부 체크 결과&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b9luO3/btsMbcgdWcd/TxaLykzkpFS0pEsm1IKeXk/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb9luO3%2FbtsMbcgdWcd%2FTxaLykzkpFS0pEsm1IKeXk%2Fimg.webp&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; alt=&quot;특수문자 포함 여부 체크 결과&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;43&quot; data-origin-width=&quot;325&quot; data-origin-height=&quot;47&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;특수문자 포함 여부 체크 결과&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;영문 + 숫자 + 특수문자 포함 여부 정규식&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;영문 대소문자 1개 이상 포함, 숫자 포함, 특수문자 포함여부를 체크하는 정규식입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1739010638298&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;String includeUpperAndNumberAndSpecialLetterPassword = &quot;Abcdefg123!&quot;;
String notIncludeUpperLetterPassword = &quot;abcdefg123&quot;;
String notIncludeNumberPassword = &quot;Abcdefg&quot;;
String notIncludeSpecialLetterPassword = &quot;Abcdefg123&quot;;

String includeUpperAndLowerAndNumberAndSpecialLetterRegex = &quot;^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[!@#$%^&amp;amp;*()_+\\-=\\[\\]{};':\&quot;\\\\|,.&amp;lt;&amp;gt;\\/?]).+$&quot;;

System.out.println(&quot;includeUpperAndLowerAndNumberAndSpecialLetter - &quot; + includeUpperAndNumberAndSpecialLetterPassword + &quot; : &quot; + includeUpperAndNumberAndSpecialLetterPassword.matches(includeUpperAndLowerAndNumberAndSpecialLetterRegex));
System.out.println(&quot;notIncludeUpperLetter - &quot; + notIncludeUpperLetterPassword + &quot; : &quot; + notIncludeUpperLetterPassword.matches(includeUpperAndLowerAndNumberAndSpecialLetterRegex));
System.out.println(&quot;notIncludeNumber - &quot; + notIncludeNumberPassword + &quot; : &quot; + notIncludeNumberPassword.matches(includeUpperAndLowerAndNumberAndSpecialLetterRegex));
System.out.println(&quot;notIncludeSpecialLetter - &quot; + notIncludeSpecialLetterPassword + &quot; : &quot; + notIncludeSpecialLetterPassword.matches(includeUpperAndLowerAndNumberAndSpecialLetterRegex));&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;479&quot; data-origin-height=&quot;97&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kWiAS/btsMdkXWcZ4/pKq82IC2tK85rUPsK0BTwK/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kWiAS/btsMdkXWcZ4/pKq82IC2tK85rUPsK0BTwK/img.webp&quot; data-alt=&quot;대소문자, 숫자, 특수문자 포함 여부 체크 결과&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kWiAS/btsMdkXWcZ4/pKq82IC2tK85rUPsK0BTwK/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkWiAS%2FbtsMdkXWcZ4%2FpKq82IC2tK85rUPsK0BTwK%2Fimg.webp&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; alt=&quot;대소문자, 숫자, 특수문자 포함 여부 체크 결과&quot; loading=&quot;lazy&quot; width=&quot;450&quot; height=&quot;91&quot; data-origin-width=&quot;479&quot; data-origin-height=&quot;97&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;대소문자, 숫자, 특수문자 포함 여부 체크 결과&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;&amp;nbsp;&lt;/p&gt;</description>
      <category>Study/java</category>
      <category>java 비밀번호 정규식</category>
      <category>java 정규식</category>
      <author>priming</author>
      <guid isPermaLink="true">https://priming.tistory.com/196</guid>
      <comments>https://priming.tistory.com/196#entry196comment</comments>
      <pubDate>Sat, 8 Feb 2025 19:32:59 +0900</pubDate>
    </item>
    <item>
      <title>[MySQL] LIMIT과 OFFSET을 사용하여 페이징 구현 방법</title>
      <link>https://priming.tistory.com/195</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;LIMIT이란?&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MySQL의 limit 절은 가져올 행(row)의 개수를 지정하는 절입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기본적으로 다음과 같이 사용됩니다.&lt;/p&gt;
&lt;pre id=&quot;code_1739007788562&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 데이터를 5건만 조회
SELECT * FROM 테이블명
LIMIT 5;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;OFFSET이란?&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MySQL의 offset 절은 건너뛸 행(row)의 개수를 지정하는 절입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기본적으로 다음과 같이 사용됩니다.&lt;/p&gt;
&lt;pre id=&quot;code_1739007869658&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 0개의 행을 건너뛰고 5건 조회
# offset 사용
SELECT * FROM 테이블명
LIMIT 5 OFFSET 0;

# offset 생략
SELECT * FROM 테이블명
LIMIT 5, 0;&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;h2 data-ke-size=&quot;size26&quot;&gt;LIMIT과 OFFSET으로 페이징 구현하기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예제에 사용될 테이블과 데이터입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1739008024629&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 테이블 생성
CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(50),
    email VARCHAR(100),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

# 생성한 테이블에 데이터 등록
INSERT INTO users (name, email) VALUES
('Alice', 'alice@example.com'),
('Bob', 'bob@example.com'),
('Charlie', 'charlie@example.com'),
('David', 'david@example.com'),
('Eve', 'eve@example.com'),
('Frank', 'frank@example.com'),
('Grace', 'grace@example.com'),
('Hank', 'hank@example.com'),
('Ivy', 'ivy@example.com'),
('Jack', 'jack@example.com');&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;위 예제 데이터에서 한 페이지 당 5건을 가져온다고 할 때, 1페이지를 가져오는 쿼리입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1739008052397&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT * FROM users
ORDER BY id
LIMIT 5 OFFSET 0;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;limit 5 offset 0은 0개의 행을 건너 뛴 데이터 중 5개를 반환한다는 의미입니다.&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;pre id=&quot;code_1739008219103&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT * FROM users
ORDER BY id
LIMIT 5 OFFSET 5;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;offset 5에 의해 5개의 행을 건너뛰고 5건을 조회하는 쿼리입니다.&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_1739008371833&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# page_size = 한 페이지 당 데이터 개수
# page = 페이지 번호

# 페이지 번호가 0부터 시작하는 경우
limit ${page_size} offset ${page} * ${page_size} 

# 페이지 번호가 1부터 시작하는 경우
limit ${page_size} offset (${page} - 1) * ${page_size}&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;OFFSET 절의 경우, 큰 offset 값이 들어올 때 offset에 해당하는 행을 무시하면서 계속 읽어야하기 때문에 성능 문제가 생길 수 있습니다.&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;</description>
      <category>Study/DB</category>
      <category>MySQL</category>
      <category>MySQL LIMIT</category>
      <category>mysql offset</category>
      <category>mysql 페이징</category>
      <author>priming</author>
      <guid isPermaLink="true">https://priming.tistory.com/195</guid>
      <comments>https://priming.tistory.com/195#entry195comment</comments>
      <pubDate>Sat, 8 Feb 2025 18:55:56 +0900</pubDate>
    </item>
    <item>
      <title>[MySQL] SELECT 쿼리 실행 순서 확인 방법 정리</title>
      <link>https://priming.tistory.com/194</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;MySQL의 SELECT 쿼리 실행 순서는?&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MySQL의 SELECT 쿼리 실행 순서는 다음과 같습니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;FROM&lt;/li&gt;
&lt;li&gt;WHERE/JOIN&lt;/li&gt;
&lt;li&gt;GROUP BY&lt;/li&gt;
&lt;li&gt;HAVING&lt;/li&gt;
&lt;li&gt;SELECT&lt;/li&gt;
&lt;li&gt;DISTINCT&lt;/li&gt;
&lt;li&gt;ORDER BY&lt;/li&gt;
&lt;li&gt;LIMIT&lt;/li&gt;
&lt;/ol&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;h2 data-ke-size=&quot;size26&quot;&gt;실행 순서 확인&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실행 순서를 확인할 예제 쿼리입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1739005531788&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 인구가 50만명 이상인 도시를 2개 이상 보유한 국가 상위 2건 조회
select 
	c.name, count(1) as total_cities
from 
	world.city_population cp
left join world.country c on c.Code = cp.country_code
where 
	cp.population &amp;gt;= 500000
group by 
	cp.country_code
having 
	count(1) &amp;gt; 1
order by 
	total_cities desc
limit 2;&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;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. FROM&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;from 절에 있는 city_population 테이블의 데이터를 가져옵니다.&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. WHERE, JOIN&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;WHERE 절과 JOIN 절의 순서는 MySQL의 최적화 방식과 인덱스 여부 및 테이블 크기에 따라 달라질 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일반적으로는 JOIN 절이 먼저 수행되며, WHERE 절에 사용된 컬럼에 인덱스가 있는 경우 WHERE 절이 먼저 수행된다고 합니다.&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;- WHERE 먼저 실행 시&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1) population &amp;gt;= 500000 조건에 의해 인구가 50만명 이상인 도시만 필터링됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2) 필터링된 city_population 데이터 기준으로 country 테이블과 left join을 수행합니다.&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;- JOIN 먼저 실행 시&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1) city_population 전체 데이터 기준으로 country 테이블과 left join을 수행합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2) join된 데이터 기준으로 where 절의 조건을 적용합니다.&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. GROUP BY&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;city_population 테이블의 country_code 기준으로 도시 개수를 그룹화 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;group by 실행 결과 각 국가별로 도시가 그룹화됩니다.&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. HAVING&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그룹화된 데이터에서 count(1) &amp;gt; 1 조건을 만족하는 국가만 선택합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;HAVING은 그룹화된 데이터에 대한 필터링을 적용하기 때문에 WHERE보다 나중에 실행됩니다.&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;5. SELECT 컬럼 선택&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;위 예제 쿼리에서는 country 테이블의 name 컬럼과 count(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;&lt;b&gt;6. ORDER BY&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;order by total_cities 절에 의해 도시 개수의 내림차순으로 정렬합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;order by 이전에 select가 먼저 실행되었기 때문에 order by 절에서 실제로 테이블에 존재하지 않는 total_cities를 정렬 컬럼으로 사용할 수 있습니다.&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;7. LIMIT&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;limit 2에 의해 데이터 중 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;&lt;/p&gt;</description>
      <category>Study/DB</category>
      <category>MySQL</category>
      <category>mysql 실행 순서</category>
      <category>select</category>
      <author>priming</author>
      <guid isPermaLink="true">https://priming.tistory.com/194</guid>
      <comments>https://priming.tistory.com/194#entry194comment</comments>
      <pubDate>Sat, 8 Feb 2025 18:34:14 +0900</pubDate>
    </item>
    <item>
      <title>[Python] 따옴표, 쌍따옴표, 따옴표 3개 차이와 예제 정리</title>
      <link>https://priming.tistory.com/193</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Python 따옴표와 쌍따옴표&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;따옴표와 쌍따옴표 둘다 단일 문자열을 정의할 때 사용합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;'(따옴표)와 &quot;(쌍따옴표)의 기능은 동일하며, 혼용이 가능합니다.&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;h3 data-ke-size=&quot;size23&quot;&gt;Python 따옴표, 쌍따옴표 사용 예제&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파이썬으로 따옴표와 쌍따옴표를 사용하는 예제입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1737897851247&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 따옴표 사용
single_quote = 'Hello, Python!'
print(single_quote)  # 출력: Hello, Python!

# 쌍따옴표 사용
double_quote = &quot;Hello, Python!&quot;
print(double_quote)  # 출력: Hello, Python!

# 문자열 안에 작은 따옴표 포함
sentence1 = &quot;It's a beautiful day.&quot;
print(sentence1)  # 출력: It's a beautiful day.

# 문자열 안에 쌍따옴표 포함
sentence2 = 'He said, &quot;Hello!&quot;'
print(sentence2)  # 출력: He said, &quot;Hello!&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Python 따옴표 3개&lt;/h2&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&lt;!-- 중간-디스플레이-수평-1 --&gt; &lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block;&quot; data-ad-client=&quot;ca-pub-3244792068052716&quot; data-ad-slot=&quot;1629193049&quot; data-ad-format=&quot;auto&quot; data-full-width-responsive=&quot;true&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/div&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;h3 data-ke-size=&quot;size23&quot;&gt;Python 따옴표 3개 사용 예제&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파이썬으로 따옴표 3개를 사용하여 문자열을 선언하는 예제입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1737897966411&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 여러 줄 문자열
multi_line_string = '''This is a 
multi-line string
in Python.'''
print(multi_line_string)
# 출력:
# This is a 
# multi-line string
# in Python.

# 따옴표 3개 안에 따옴표 포함하기
multi_line_with_quotes = &quot;&quot;&quot;She said, &quot;It's a great day!&quot; &quot;&quot;&quot;
print(multi_line_with_quotes)
# 출력: She said, &quot;It's a great day!&quot;

# 문자열 내 들여쓰기
formatted_text = &quot;&quot;&quot;
    Python is:
        - Easy to learn
        - Powerful
        - Versatile
&quot;&quot;&quot;
print(formatted_text)
# 출력:
#     Python is:
#         - Easy to learn
#         - Powerful
#         - Versatile&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Python에서 따옴표 Escape&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문자열 내부에서 동일한 종류의 따옴표가 필요한 경우, 백슬래시를 사용하여 이스케이프 처리를 할 수 있습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1737898080433&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 작은 따옴표를 포함한 문자열
sentence = 'It\'s a beautiful day.'
print(sentence)  # 출력: It's a beautiful day.

# 큰 따옴표를 포함한 문자열
quote = &quot;He said, \&quot;Hello!\&quot;&quot;
print(quote)  # 출력: He said, &quot;Hello!&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Study/python</category>
      <category>python</category>
      <category>python 따옴표</category>
      <author>priming</author>
      <guid isPermaLink="true">https://priming.tistory.com/193</guid>
      <comments>https://priming.tistory.com/193#entry193comment</comments>
      <pubDate>Sun, 26 Jan 2025 22:29:48 +0900</pubDate>
    </item>
    <item>
      <title>[Python] VSCode 파이썬 확장 프로그램 소개 및 추천</title>
      <link>https://priming.tistory.com/192</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Visual Studio Code에서 파이썬 개발에 유용한 확장프로그램을 소개드리겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Python Vscode 확장 프로그램 추천&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Python&lt;/h3&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;318&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cfGTM5/btsL1VrHey5/4nHhwutbUW0n5kKQ2zdWe0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cfGTM5/btsL1VrHey5/4nHhwutbUW0n5kKQ2zdWe0/img.png&quot; data-alt=&quot;확장 프로그램 Python&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cfGTM5/btsL1VrHey5/4nHhwutbUW0n5kKQ2zdWe0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcfGTM5%2FbtsL1VrHey5%2F4nHhwutbUW0n5kKQ2zdWe0%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; alt=&quot;확장 프로그램 Python&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;124&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;318&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;확장 프로그램 Python&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Microsoft에서 제공하는 공식 파이썬 확장 프로그램으로, 파이썬 코드 실행 및 디버깅, 코드 포맷팅을 지원합니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;파이썬 개발을 위해 가장 먼저 설치해야합니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=ms-python.python&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;VSCode Python 확장프로그램 공식 사이트 바로가기&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1737896456752&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;Python - Visual Studio Marketplace&quot; data-og-description=&quot;Extension for Visual Studio Code - Python language support with extension access points for IntelliSense (Pylance), Debugging (Python Debugger), linting, formatting, refactoring, unit tests, and more.&quot; data-og-host=&quot;marketplace.visualstudio.com&quot; data-og-source-url=&quot;https://marketplace.visualstudio.com/items?itemName=ms-python.python&quot; data-og-url=&quot;https://marketplace.visualstudio.com/items?itemName=ms-python.python&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/5BrYK/hyX4kzZDW6/JBHLx92fZGAgFbt4Xcsdl1/img.png?width=600&amp;amp;height=607&amp;amp;face=0_0_600_607,https://scrap.kakaocdn.net/dn/A5zTa/hyX4sSg9mB/2r4dcPyV0XlGEVpN6Ocpi1/img.png?width=600&amp;amp;height=607&amp;amp;face=0_0_600_607&quot;&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=ms-python.python&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://marketplace.visualstudio.com/items?itemName=ms-python.python&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/5BrYK/hyX4kzZDW6/JBHLx92fZGAgFbt4Xcsdl1/img.png?width=600&amp;amp;height=607&amp;amp;face=0_0_600_607,https://scrap.kakaocdn.net/dn/A5zTa/hyX4sSg9mB/2r4dcPyV0XlGEVpN6Ocpi1/img.png?width=600&amp;amp;height=607&amp;amp;face=0_0_600_607');&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;Python - Visual Studio Marketplace&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Extension for Visual Studio Code - Python language support with extension access points for IntelliSense (Pylance), Debugging (Python Debugger), linting, formatting, refactoring, unit tests, and more.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;marketplace.visualstudio.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;h3 data-ke-size=&quot;size23&quot;&gt;Pylance&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1278&quot; data-origin-height=&quot;308&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mI99o/btsL18qMkfK/Bj4g0GUFQlTpixwwWEmf9K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mI99o/btsL18qMkfK/Bj4g0GUFQlTpixwwWEmf9K/img.png&quot; data-alt=&quot;확장 프로그램 Pylance&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mI99o/btsL18qMkfK/Bj4g0GUFQlTpixwwWEmf9K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmI99o%2FbtsL18qMkfK%2FBj4g0GUFQlTpixwwWEmf9K%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; alt=&quot;확장 프로그램 Pylance&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;121&quot; data-origin-width=&quot;1278&quot; data-origin-height=&quot;308&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;확장 프로그램 Pylance&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Pylance는 빠르고 정확한 타입 검사와 코드 분석을 지원하는 파이썬 언어 서버입니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; 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;Python Indent&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1032&quot; data-origin-height=&quot;296&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wlOFx/btsL2IE934b/a9H3KbcevqSLw5bHMGYdVK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wlOFx/btsL2IE934b/a9H3KbcevqSLw5bHMGYdVK/img.png&quot; data-alt=&quot;확장 프로그램 Python Indent&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wlOFx/btsL2IE934b/a9H3KbcevqSLw5bHMGYdVK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwlOFx%2FbtsL2IE934b%2Fa9H3KbcevqSLw5bHMGYdVK%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; alt=&quot;확장 프로그램 Python Indent&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;143&quot; data-origin-width=&quot;1032&quot; data-origin-height=&quot;296&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;확장 프로그램 Python Indent&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Python Indent는 파이썬 코드 작성 시 들여쓰기를 자동으로 관리해주는 확장 프로그램입니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; 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;div&gt;&lt;!-- 중간-디스플레이-수평-1 --&gt; &lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block;&quot; data-ad-client=&quot;ca-pub-3244792068052716&quot; data-ad-slot=&quot;1629193049&quot; data-ad-format=&quot;auto&quot; data-full-width-responsive=&quot;true&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/div&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;h3 data-ke-size=&quot;size23&quot;&gt;autoDocstring&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;authDocstring은 파이썬 코드에서 함수와 클래스에 필요한 docstring을 자동으로 생성해주는 확장 프로그램입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용 방법은 함수나 클래스 위에서 &quot;&quot;&quot; 입력 후 tab을 누르면 매개변수와 반환값을 포함한 주석이 자동으로 생성됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1372&quot; data-origin-height=&quot;300&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wwUPi/btsL2lwFUyI/PHFP5R24dI6k0VywI8pKJ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wwUPi/btsL2lwFUyI/PHFP5R24dI6k0VywI8pKJ0/img.png&quot; data-alt=&quot;확장 프로그램 autoDocstring&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wwUPi/btsL2lwFUyI/PHFP5R24dI6k0VywI8pKJ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwwUPi%2FbtsL2lwFUyI%2FPHFP5R24dI6k0VywI8pKJ0%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; alt=&quot;확장 프로그램 autoDocstring&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;109&quot; data-origin-width=&quot;1372&quot; data-origin-height=&quot;300&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;확장 프로그램 autoDocstring&lt;/figcaption&gt;
&lt;/figure&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;Django&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1278&quot; data-origin-height=&quot;322&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tHugQ/btsL3lW1AhY/bsgab9rmQcWOA9M4iQ1km1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tHugQ/btsL3lW1AhY/bsgab9rmQcWOA9M4iQ1km1/img.png&quot; data-alt=&quot;확장 프로그램 Django&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tHugQ/btsL3lW1AhY/bsgab9rmQcWOA9M4iQ1km1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtHugQ%2FbtsL3lW1AhY%2Fbsgab9rmQcWOA9M4iQ1km1%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; alt=&quot;확장 프로그램 Django&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;126&quot; data-origin-width=&quot;1278&quot; data-origin-height=&quot;322&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;확장 프로그램 Django&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;Django는 파이썬의 웹 프레임워크입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Django 개발을 진행할 때 생산성을 높이고, 템플릿 언어 및 파일 구조를 효과적으로 관리할 수 있도록 지원합니다.&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;Python Extension Pack&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1112&quot; data-origin-height=&quot;316&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CwUHn/btsL1A18Y3b/8wRcwMJFEvHWeYOMqImhE1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CwUHn/btsL1A18Y3b/8wRcwMJFEvHWeYOMqImhE1/img.png&quot; data-alt=&quot;Python 확장 프로그램 모음&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CwUHn/btsL1A18Y3b/8wRcwMJFEvHWeYOMqImhE1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCwUHn%2FbtsL1A18Y3b%2F8wRcwMJFEvHWeYOMqImhE1%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; alt=&quot;Python 확장 프로그램 모음&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;142&quot; data-origin-width=&quot;1112&quot; data-origin-height=&quot;316&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Python 확장 프로그램 모음&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Python Extension Pack은 파이썬 개발을 위한 다양한 확장 프로그램을 모아놓은 확장 팩입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위에서 설명한 Python, Python Indent, autoDocstring, Django 확장 프로그램이 포함되어 있으며, 그 외에도 파이썬에 필요한 확장 프로그램들이 포함되어 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일부 프로그램은 deprecated 되어있는 경우도 있기 때문에 확장 프로그램 팩 목록을 확인해보고 필요한 것만 설치하셔도 됩니다.&lt;/p&gt;</description>
      <category>Study/python</category>
      <category>python</category>
      <category>vscode</category>
      <author>priming</author>
      <guid isPermaLink="true">https://priming.tistory.com/192</guid>
      <comments>https://priming.tistory.com/192#entry192comment</comments>
      <pubDate>Sun, 26 Jan 2025 22:12:36 +0900</pubDate>
    </item>
    <item>
      <title>[MySQL] IF 함수 사용법 및 예제 정리</title>
      <link>https://priming.tistory.com/191</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;IF 함수란?&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;IF 함수는 주어진 조건의 결과가 True면 참일때 설정한 값을, False일때는 False일때 설정한 값을 반환하는 역할을 수행합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://dev.mysql.com/doc/refman/8.4/en/if.html&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;MySQL IF 함수 공식문서 바로가기&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1737795226557&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;MySQL :: MySQL 8.4 Reference Manual :: 15.6.5.2 IF Statement&quot; data-og-description=&quot;IF search_condition THEN statement_list [ELSEIF search_condition THEN statement_list] ... [ELSE statement_list] END IF The IF statement for stored programs implements a basic conditional construct. Note There is also an IF() function, which differs from th&quot; data-og-host=&quot;dev.mysql.com&quot; data-og-source-url=&quot;https://dev.mysql.com/doc/refman/8.4/en/if.html&quot; data-og-url=&quot;https://dev.mysql.com/doc/refman/8.4/en/if.html&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://dev.mysql.com/doc/refman/8.4/en/if.html&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://dev.mysql.com/doc/refman/8.4/en/if.html&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&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 :: MySQL 8.4 Reference Manual :: 15.6.5.2 IF Statement&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;IF search_condition THEN statement_list [ELSEIF search_condition THEN statement_list] ... [ELSE statement_list] END IF The IF statement for stored programs implements a basic conditional construct. Note There is also an IF() function, which differs from th&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;dev.mysql.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;h2 data-ke-size=&quot;size26&quot;&gt;IF 함수 기본 사용 예제&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;IF 함수 기본 구조&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;IF 함수의 기본 구조는 다음과 같습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1737795303597&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;IF(condition, value_if_true, value_if_false)&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;condition: 참과 거짓을 판단할 조건식입니다.&lt;/li&gt;
&lt;li&gt;value_if_true: 조건이 참일 때 반환할 값입니다.&lt;/li&gt;
&lt;li&gt;value_if_false: 조건이 거짓일 때 반환할 값입니다.&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;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음은 테이블 없이 IF 함수를 테스트해볼 수 있는 예제입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1737795407051&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT IF(15 &amp;gt;= 10, 'High', 'Low') AS Result;&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;위 쿼리는 숫자가 10 이상일때 참이면 High, 거짓이면 Low를 반환하는 쿼리입니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;403&quot; data-origin-height=&quot;136&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kX9TK/btsL2bOivyB/JlwSRZvdKawCpJpJT0FkS0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kX9TK/btsL2bOivyB/JlwSRZvdKawCpJpJT0FkS0/img.png&quot; data-alt=&quot;IF 기본 예제 실행 결과&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kX9TK/btsL2bOivyB/JlwSRZvdKawCpJpJT0FkS0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkX9TK%2FbtsL2bOivyB%2FJlwSRZvdKawCpJpJT0FkS0%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; alt=&quot;IF 기본 예제 실행 결과&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;135&quot; data-origin-width=&quot;403&quot; data-origin-height=&quot;136&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;IF 기본 예제 실행 결과&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&lt;!-- 중간-디스플레이-수평-1 --&gt; &lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block;&quot; data-ad-client=&quot;ca-pub-3244792068052716&quot; data-ad-slot=&quot;1629193049&quot; data-ad-format=&quot;auto&quot; data-full-width-responsive=&quot;true&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/div&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;h2 data-ke-size=&quot;size26&quot;&gt;IF 함수 응용 예제&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;NULL 체크하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;IF 함수로 NULL 여부를 체크하는 방법입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 쿼리의 결과는 모두 동일합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1737796485308&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# if 함수만 사용
select 
    name,
    if(population is null, 'n', 'y')
from world.city_population;

# if + isnull 
select 
    name,
    if(isnull(population), 'n', 'y')
from world.city_population;&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;IFNULL 함수도 존재하지만, IFNULL 함수는 제시된 값이 null일 때 대체할 값을 반환하는 함수라서 목적이 조금 다릅니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 예제는 값이 null일때 반환할 값, null이 아닐 때 반환할 값을 지정하는 예제입니다.&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;IF 조건 여러개 사용하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;IF 함수 내부에 조건을 여러개 사용할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CASE WHEN을 사용하여도 되지만, IF 함수로 다중 조건을 사용하는 방법에 대해 설명드리겠습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1737796226499&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT 
    customer_name, 
    total_spent, 
    IF(total_spent &amp;gt;= 1000000, 'VIP', IF(total_spent &amp;gt;= 500000, '골드', '일반')) AS customer_grade
FROM customers;&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;위 쿼리는 누적 구매 금액(total_spent)이 100만원 이상이면 VIP, 50만원 이상이면 골드, 그외에는 일반을 반환하는 예제입니다.&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;</description>
      <category>Study/DB</category>
      <category>IF함수</category>
      <category>MySQL</category>
      <author>priming</author>
      <guid isPermaLink="true">https://priming.tistory.com/191</guid>
      <comments>https://priming.tistory.com/191#entry191comment</comments>
      <pubDate>Sat, 25 Jan 2025 18:17:10 +0900</pubDate>
    </item>
    <item>
      <title>[Python] 설치 없이 웹에서 코드를 실행할 수 있는 컴파일러 사이트 3가지 소개</title>
      <link>https://priming.tistory.com/190</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;파이썬 웹 컴파일러란?&lt;/h2&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;개발도구(IDE)와 비교했을 때 기능 제한이 있지만, 간단하고 빠르게 실행하기엔 적절한 선택이 될 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;파이썬 온라인 컴파일러 3가지 소개&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1. Replit&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Replit은 브라우저 기반으로 통합 환경 개발을 제공하는 툴입니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;파이썬 외에도 다양한 언어를 사용할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://replit.com/&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;Replit 바로가기&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1737793570224&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;Replit &amp;ndash;&amp;nbsp;Build apps and sites with AI&quot; data-og-description=&quot;Replit is an AI-powered platform for building professional web apps and websites.&quot; data-og-host=&quot;replit.com&quot; data-og-source-url=&quot;https://replit.com/&quot; data-og-url=&quot;https://www.replit.com/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/dMnmZL/hyX7S9tglN/0WSuoA9guefE9Ue5YjbOOk/img.png?width=1200&amp;amp;height=650&amp;amp;face=0_0_1200_650,https://scrap.kakaocdn.net/dn/bHtdNG/hyX4lFt0me/ZF2jATXk9Yjebdqf75M1KK/img.png?width=1920&amp;amp;height=1473&amp;amp;face=0_0_1920_1473,https://scrap.kakaocdn.net/dn/pjeho/hyX7PrmwD2/kSbKihCkFOKEncu0I5cuF0/img.png?width=1920&amp;amp;height=1473&amp;amp;face=0_0_1920_1473&quot;&gt;&lt;a href=&quot;https://replit.com/&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://replit.com/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/dMnmZL/hyX7S9tglN/0WSuoA9guefE9Ue5YjbOOk/img.png?width=1200&amp;amp;height=650&amp;amp;face=0_0_1200_650,https://scrap.kakaocdn.net/dn/bHtdNG/hyX4lFt0me/ZF2jATXk9Yjebdqf75M1KK/img.png?width=1920&amp;amp;height=1473&amp;amp;face=0_0_1920_1473,https://scrap.kakaocdn.net/dn/pjeho/hyX7PrmwD2/kSbKihCkFOKEncu0I5cuF0/img.png?width=1920&amp;amp;height=1473&amp;amp;face=0_0_1920_1473');&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;Replit &amp;ndash;&amp;nbsp;Build apps and sites with AI&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Replit is an AI-powered platform for building professional web apps and websites.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;replit.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;h4 data-ke-size=&quot;size20&quot;&gt;Replit 파이썬 사용법&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Replit으로 파이썬을 사용하는 방법은 Create a new Repl 페이지에서 Choose a Template 탭으로 들어가서 파이썬 템플릿을 설정한 후 Create Repl 버튼을 누르면 파이썬을 쓸 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1945&quot; data-origin-height=&quot;518&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bAlYXB/btsL1AAOJuK/7Gx2R6n6velRLCM7ubbTw0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bAlYXB/btsL1AAOJuK/7Gx2R6n6velRLCM7ubbTw0/img.png&quot; data-alt=&quot;Replit 파이썬 사용 방법&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bAlYXB/btsL1AAOJuK/7Gx2R6n6velRLCM7ubbTw0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbAlYXB%2FbtsL1AAOJuK%2F7Gx2R6n6velRLCM7ubbTw0%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; alt=&quot;Replit 파이썬 사용 방법&quot; loading=&quot;lazy&quot; width=&quot;800&quot; height=&quot;213&quot; data-origin-width=&quot;1945&quot; data-origin-height=&quot;518&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Replit 파이썬 사용 방법&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&lt;!-- 중간-디스플레이-수평-1 --&gt; &lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block;&quot; data-ad-client=&quot;ca-pub-3244792068052716&quot; data-ad-slot=&quot;1629193049&quot; data-ad-format=&quot;auto&quot; data-full-width-responsive=&quot;true&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/div&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;h3 data-ke-size=&quot;size23&quot;&gt;2. Google Colab&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Google Colab은 Jupyter Notebook 환경을 클라우드로 실행할 수 있게 해 주는 도구입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://colab.research.google.com/&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;Google Colab 바로가기&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1737793887465&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;Google Colab&quot; data-og-description=&quot;&quot; data-og-host=&quot;colab.research.google.com&quot; data-og-source-url=&quot;https://colab.research.google.com/&quot; data-og-url=&quot;https://colab.research.google.com/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cLMUx2/hyX7Sn5M7l/XOVxnpb6F6o3AjsXtv03hk/img.png?width=260&amp;amp;height=260&amp;amp;face=0_0_260_260&quot;&gt;&lt;a href=&quot;https://colab.research.google.com/&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://colab.research.google.com/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cLMUx2/hyX7Sn5M7l/XOVxnpb6F6o3AjsXtv03hk/img.png?width=260&amp;amp;height=260&amp;amp;face=0_0_260_260');&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;Google Colab&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;colab.research.google.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;h4 data-ke-size=&quot;size20&quot;&gt;Google Colab 파이썬 사용법&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;페이지를 접속하면 나오는 팝업에서 +새 노트 버튼을 클릭하거나 팝업을 닫으면 나오는 Colab 시작 페이지에서 +코드 버튼을 눌러서 코드를 작성할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;879&quot; data-origin-height=&quot;668&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FsFkd/btsL1gJSkAd/UWW9bCcqiY421GghTDxZs0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FsFkd/btsL1gJSkAd/UWW9bCcqiY421GghTDxZs0/img.png&quot; data-alt=&quot;Google Colab 접속 시 노출되는 팝업&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FsFkd/btsL1gJSkAd/UWW9bCcqiY421GghTDxZs0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFsFkd%2FbtsL1gJSkAd%2FUWW9bCcqiY421GghTDxZs0%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; alt=&quot;Google Colab 접속 시 노출되는 팝업&quot; loading=&quot;lazy&quot; width=&quot;800&quot; height=&quot;608&quot; data-origin-width=&quot;879&quot; data-origin-height=&quot;668&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Google Colab 접속 시 노출되는 팝업&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;코드는 아래와 같이 작성하면 됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;457&quot; data-origin-height=&quot;292&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/p3qAF/btsL1gJSngx/GbsTRxlMZOTNxZE5a4Osj0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/p3qAF/btsL1gJSngx/GbsTRxlMZOTNxZE5a4Osj0/img.png&quot; data-alt=&quot;Google Colab으로 파이썬 코드 작성 및 실행 결과&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/p3qAF/btsL1gJSngx/GbsTRxlMZOTNxZE5a4Osj0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fp3qAF%2FbtsL1gJSngx%2FGbsTRxlMZOTNxZE5a4Osj0%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; alt=&quot;Google Colab으로 파이썬 코드 작성 및 실행 결과&quot; loading=&quot;lazy&quot; width=&quot;450&quot; height=&quot;288&quot; data-origin-width=&quot;457&quot; data-origin-height=&quot;292&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Google Colab으로 파이썬 코드 작성 및 실행 결과&lt;/figcaption&gt;
&lt;/figure&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. myCompiler&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;myComplier는 코드 작성 영역과 실행 결과 영역으로 이루어진 간단한 컴파일러 사이트입니다.&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://www.mycompiler.io/ko/new/python&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;myComplier 바로가기&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1737794239443&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;새 Python 프로그램 만들기 - 마이컴파일러 - myCompiler&quot; data-og-description=&quot;실행 코드 코드 저장 기존 코드를 유지하시겠습니까? 에디터에 코드가 있는 동안 언어를 전환하려고 합니다. 이를 유지하려면 &amp;ldquo;기존 코드 유지&amp;rdquo;를 선택합니다. 예제로 바꾸려면 &amp;ldquo;예제로 바&quot; data-og-host=&quot;www.mycompiler.io&quot; data-og-source-url=&quot;https://www.mycompiler.io/ko/new/python&quot; data-og-url=&quot;https://www.mycompiler.io/ko/new/python&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bR9i7U/hyX73JVd4s/8kuFA5gSJqPwIYt80xzeJ0/img.png?width=256&amp;amp;height=256&amp;amp;face=0_0_256_256,https://scrap.kakaocdn.net/dn/dEwfQO/hyX4twLz54/TH8EQJeJURiaeig1fAMbu1/img.png?width=256&amp;amp;height=256&amp;amp;face=0_0_256_256&quot;&gt;&lt;a href=&quot;https://www.mycompiler.io/ko/new/python&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.mycompiler.io/ko/new/python&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bR9i7U/hyX73JVd4s/8kuFA5gSJqPwIYt80xzeJ0/img.png?width=256&amp;amp;height=256&amp;amp;face=0_0_256_256,https://scrap.kakaocdn.net/dn/dEwfQO/hyX4twLz54/TH8EQJeJURiaeig1fAMbu1/img.png?width=256&amp;amp;height=256&amp;amp;face=0_0_256_256');&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;새 Python 프로그램 만들기 - 마이컴파일러 - myCompiler&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;실행 코드 코드 저장 기존 코드를 유지하시겠습니까? 에디터에 코드가 있는 동안 언어를 전환하려고 합니다. 이를 유지하려면 &amp;ldquo;기존 코드 유지&amp;rdquo;를 선택합니다. 예제로 바꾸려면 &amp;ldquo;예제로 바&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.mycompiler.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;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;myCompiler 파이썬 사용법&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1650&quot; data-origin-height=&quot;304&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pQWF2/btsL2IkyhvW/BZLkl5aUknhxznrB62UayK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pQWF2/btsL2IkyhvW/BZLkl5aUknhxznrB62UayK/img.png&quot; data-alt=&quot;myComplier 파이썬 실행 결과&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pQWF2/btsL2IkyhvW/BZLkl5aUknhxznrB62UayK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpQWF2%2FbtsL2IkyhvW%2FBZLkl5aUknhxznrB62UayK%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; alt=&quot;myComplier 파이썬 실행 결과&quot; loading=&quot;lazy&quot; width=&quot;800&quot; height=&quot;147&quot; data-origin-width=&quot;1650&quot; data-origin-height=&quot;304&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;myComplier 파이썬 실행 결과&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>Study/python</category>
      <category>replit</category>
      <category>파이썬</category>
      <category>파이썬 웹 컴파일러</category>
      <author>priming</author>
      <guid isPermaLink="true">https://priming.tistory.com/190</guid>
      <comments>https://priming.tistory.com/190#entry190comment</comments>
      <pubDate>Sat, 25 Jan 2025 17:42:35 +0900</pubDate>
    </item>
    <item>
      <title>[Java] Maven과 Gradle이란? 개념과 차이 정리</title>
      <link>https://priming.tistory.com/189</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;빌드 도구란?&lt;/h2&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;br /&gt;Java 생태계에서는 대표적으로 Maven과 Gradle이 빌드 도구로 널리 사용됩니다.&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;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;컴파일: 소스 코드를 바이트코드(.class 파일)로 변환합니다.&lt;/li&gt;
&lt;li&gt;의존성 관리: 프로젝트에서 사용하는 외부 라이브러리를 자동으로 다운로드하고 관리합니다.&lt;/li&gt;
&lt;li&gt;테스트 실행: 단위 테스트 및 통합 테스트를 자동화합니다.&lt;/li&gt;
&lt;li&gt;패키징: JAR, WAR 등으로 애플리케이션을 패키징합니다.&lt;/li&gt;
&lt;li&gt;배포: 패키징된 애플리케이션을 서버나 클라우드 환경에 배포합니.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Maven이란?&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Maven은 Apache Software Foundation에서 개발한 Java 기반 빌드 도구입니다.&lt;br /&gt;프로젝트의 빌드 및 의존성 관리 등을 단순화하고 표준화하기 위해 설계되었습니다.&lt;br /&gt;Maven은 XML 기반 설정 파일(pom.xml)을 사용하여 프로젝트 구조와 빌드 프로세스를 정의합니다.&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;Maven의 특징&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;XML 기반 설정: 프로젝트의 모든 설정과 의존성을 pom.xml 파일에 기술하는 방식입니다.&lt;/li&gt;
&lt;li&gt;라이프사이클 관리: 빌드, 테스트, 패키징, 배포 등의 과정을 간단히 실행할 수 있습니다.&lt;/li&gt;
&lt;li&gt;플러그인 중심: Maven 플러그인을 사용해 기능 확장이 가능합니다.&lt;/li&gt;
&lt;li&gt;중앙 저장소 지원: Maven Central Repository를 통해 외부 라이브러리를 쉽게 관리할 수 있습니다.&lt;/li&gt;
&lt;/ol&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;div&gt;&lt;!-- 중간-디스플레이-수평-1 --&gt; &lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block;&quot; data-ad-client=&quot;ca-pub-3244792068052716&quot; data-ad-slot=&quot;1629193049&quot; data-ad-format=&quot;auto&quot; data-full-width-responsive=&quot;true&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/div&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;h2 data-ke-size=&quot;size26&quot;&gt;Gradle이란?&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Gradle은 Groovy 또는 Kotlin DSL을 기반으로 하는 빌드 도구로, 높은 유연성과 빠른 빌드 속도를 자랑합니다.&lt;br /&gt;대규모 프로젝트와 멀티 모듈 프로젝트를 관리하기 위해 설계되었으며, Java, Kotlin, Scala 등 다양한 언어를 지원합니다.&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;Gradle의 주요 특징&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;DSL 기반 설정: Groovy 또는 Kotlin을 사용해 간결하고 가독성 높은 설정 파일을 작성할 수 있습니다.&lt;/li&gt;
&lt;li&gt;Incremental Build: 변경된 부분만 다시 빌드하여 빌드 속도를 개선하였습니다.&lt;/li&gt;
&lt;li&gt;유연한 플러그인 시스템: 커스터마이징 가능한 플러그인 생태계를 제공합니다.&lt;/li&gt;
&lt;li&gt;다양한 언어 지원: Java뿐 아니라 Kotlin, Scala, Groovy 프로젝트에도 사용 가능합니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Maven과 Gradle 차이점&lt;/h2&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;Maven은 XML 기반 설정 파일인 pom.xml에 작성합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1737792471982&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;dependency&amp;gt;
    &amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;
    &amp;lt;artifactId&amp;gt;spring-boot-starter&amp;lt;/artifactId&amp;gt;
    &amp;lt;version&amp;gt;3.4.2&amp;lt;/version&amp;gt;
&amp;lt;/dependency&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;Gradle은 Groovy 또는 Kotiln DSL을 사용하여 설정 파일을 작성합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1737792495035&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;dependencies {
    implementation 'org.springframework.boot:spring-boot-starter:3.4.2'
}&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;2. 빌드 속도&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Maven은 모든 작업에 대해 빌드를 진행하기 때문에 대규모 프로젝트에서 시간이 많이 걸릴 수도 있습니다.&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;&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;Maven은 표준화된 프로젝트 구조화 빌드 라이프사이클을 제공합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이로 인해 간단하게 설정할 수 있지만, 유연하게 변경하는 데에는 한계가 있습니다.&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. 의존성 관리&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Maven은 기본적으로 Maven Central Repository를 사용합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Gradle은 Maven 저장소 외에도 다양한 리포지토리를 지원합니다.&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;</description>
      <category>Study/java</category>
      <category>gradle</category>
      <category>maven</category>
      <author>priming</author>
      <guid isPermaLink="true">https://priming.tistory.com/189</guid>
      <comments>https://priming.tistory.com/189#entry189comment</comments>
      <pubDate>Sat, 25 Jan 2025 17:11:25 +0900</pubDate>
    </item>
    <item>
      <title>[Spring] MVC 패턴 정의 및 Spring Boot MVC 구조 예제</title>
      <link>https://priming.tistory.com/188</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MVC 패턴에 대한 설명과 Spring Boot에서 MVC 프로젝트를 생성하는 예제를 소개드리겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;MVC 패턴이란?&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MVC 패턴이란 애플리케이션의 구성요소를 모델-뷰-컨트롤러로 나누어 개발하는 방식입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://ko.wikipedia.org/wiki/%EB%AA%A8%EB%8D%B8-%EB%B7%B0-%EC%BB%A8%ED%8A%B8%EB%A1%A4%EB%9F%AC&quot; rel=&quot;noopener&quot;&gt;MVC 정의 바로가기&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Model&lt;/b&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;데이터베이스와 통신하거나 데이터를 가공해 Controller나 View에 전달합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;View&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;사용자 인터페이스(UI)를 담당합니다.&lt;/li&gt;
&lt;li&gt;사용자에게 데이터를 보여주거나 입력을 받을 수 있는 화면 요소로 구성되어있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Controller&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Model과 View를 연결하는 중개자 역할입니다.&lt;/li&gt;
&lt;li&gt;사용자 요청을 받아 Model에서 데이터를 가져오고 View로 전달합니.&lt;/li&gt;
&lt;/ul&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;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;MVC 패턴의 장단점은?&lt;/h3&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;Model, View, Controller가 각각 고유한 역할을 담당하므로 코드가 구조화되고 모듈화됩니다.&lt;/li&gt;
&lt;li&gt;View와 Model이 분리되어 있어 동일한 Model 데이터를 다양한 View에서 재사용 가능합니다.&lt;/li&gt;
&lt;li&gt;비즈니스 로직(Model)과 컨트롤러(Controller)가 분리되어 있어 각각 독립적으로 테스트할 수 있습니다.&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;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Controller가 요청을 중계하는 역할을 하다 보니, 모든 로직이 Controller에 집중되면 코드가 비대해지고 유지보수가 어려워질 수 있습니다.&lt;/li&gt;
&lt;li&gt;요청이 Controller &amp;rarr; Service &amp;rarr; Repository &amp;rarr; Database로 이어지며 복잡한 데이터를 처리할 경우, 데이터의 흐름을 파악하기 어렵거나 디버깅이 힘들 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;스프링 부트 MVC 폴더, 패키지 구조 예제&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;프로젝트 MVC 구조 예제&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기본적으로 다음과 같은 구조로 구성되는 경우가 많습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1737782037444&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;src
 ├── main
 │   ├── java
 │   │   └── com.example.demo
 │   │       ├── controller
 │   │       ├── service
 │   │       ├── repository
 │   │       └── model
 │   ├── resources
 │   │   ├── static
 │   │   ├── templates
 │   │   └── application.properties
 └── test&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;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;div&gt;&lt;!-- 중간-디스플레이-수평-1 --&gt; &lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block;&quot; data-ad-client=&quot;ca-pub-3244792068052716&quot; data-ad-slot=&quot;1629193049&quot; data-ad-format=&quot;auto&quot; data-full-width-responsive=&quot;true&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/div&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;1. Controller&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용자의 요청을 처리하는 클래스가 위치합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;HTTP 요청을 받고, 서비스 레이어를 호출해 처리 후 데이터를 반환하거나 View에 전달하는 역할을 수행합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1737782157635&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@RestController
@RequestMapping(&quot;/api&quot;)
public class UserController {

    // ...
    // service 의존성 추가
    // ...

    @GetMapping(&quot;/users&quot;)
    public List&amp;lt;User&amp;gt; getAllUsers() {
        return userService.getAllUsers();
    }
}&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;2. Service&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;Controller에서 받은 요청을 처리하거나, Repository를 호출하여 데이터를 가공하는 역할을 수행합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1737782246574&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@Service
public class UserService {

    // ...
    // repository 의존성 추가
    // ...
    
    public List&amp;lt;User&amp;gt; getAllUsers() {
        return userRepository.findAll();
    }
}&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;3. Repository&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터베이스와의 상호작용을 담당합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;JPA나 MyBatis등이 활용됩니다.&lt;/p&gt;
&lt;pre id=&quot;code_1737782292993&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@Repository
public interface UserRepository extends JpaRepository&amp;lt;User, Long&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;p data-ke-size=&quot;size16&quot;&gt;4. Model&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터를 표현하는 클래스들이 위치합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;엔티티 클래스나 DTO같은 전송 객체가 포함됩니다.&lt;/p&gt;
&lt;pre id=&quot;code_1737782326355&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@Entity
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;
    private String email;
}&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;5. Resources&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;static: 정적 리소스(css, js, 이미지 등)&lt;/li&gt;
&lt;li&gt;templates: Thymeleaf, JSP와 같은 서버 렌더링용 파일&lt;/li&gt;
&lt;li&gt;application.properties: 애플리케이션 설정 파일(application.yml로도 사용 가능)&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;&amp;nbsp;&lt;/p&gt;</description>
      <category>Study/spring</category>
      <category>mvc 구조</category>
      <category>MVC 패턴</category>
      <category>Spring boot</category>
      <author>priming</author>
      <guid isPermaLink="true">https://priming.tistory.com/188</guid>
      <comments>https://priming.tistory.com/188#entry188comment</comments>
      <pubDate>Sat, 25 Jan 2025 14:22:52 +0900</pubDate>
    </item>
    <item>
      <title>[Windows] Intellij Ultimate 버전에서 args 입력 방법</title>
      <link>https://priming.tistory.com/187</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;intellij ultimate 버전에서 argument 설정하는 방법입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;예제 코드&lt;/h2&gt;
&lt;pre id=&quot;code_1736608090007&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.Arrays;

public class ArgsTest {

    public static void main(String[] args) {
        String inputArgs = Arrays.toString(args);// 배열을 문자열로 변환합니다.
        System.out.println(&quot;args = &quot; + inputArgs);
    }
}&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;args 값을 입력받아 출력하는 코드입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Intellij Argument 설정 방법&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Edit Run Configuration 창으로 이동합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;374&quot; data-origin-height=&quot;241&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Y6Ydl/btsLL51hApX/WKuEgAYaL3lwxYYF1wrfnk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Y6Ydl/btsLL51hApX/WKuEgAYaL3lwxYYF1wrfnk/img.png&quot; data-alt=&quot;Modify Run Configuration 위치&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Y6Ydl/btsLL51hApX/WKuEgAYaL3lwxYYF1wrfnk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FY6Ydl%2FbtsLL51hApX%2FWKuEgAYaL3lwxYYF1wrfnk%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;350&quot; height=&quot;226&quot; data-origin-width=&quot;374&quot; data-origin-height=&quot;241&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Modify Run Configuration 위치&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코드 왼쪽 재생버튼을 우클릭하면 Run, Debug 등 다양한 실행 타입이 나오는데, 맨 아래에 Modify Run 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;Edit Run Configuration 창을 띄우면 다음과 같은 입력창이 보입니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;630&quot; data-origin-height=&quot;604&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cmFNP2/btsLKD5HCXm/AJRIoHP24WZQ1adWX59j1k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cmFNP2/btsLKD5HCXm/AJRIoHP24WZQ1adWX59j1k/img.png&quot; data-alt=&quot;Edit Run Configuration 창&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cmFNP2/btsLKD5HCXm/AJRIoHP24WZQ1adWX59j1k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcmFNP2%2FbtsLKD5HCXm%2FAJRIoHP24WZQ1adWX59j1k%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; alt=&quot;Edit Run Configuration 창&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;575&quot; data-origin-width=&quot;630&quot; data-origin-height=&quot;604&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Edit Run Configuration 창&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;중간 위치에 있는 Program arguments 부분에 매개변수를 입력하면 됩니다.&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;111&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Sz7cN/btsLLrwXEj1/qAsIuTGKGhWH0v25ndnQE1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Sz7cN/btsLLrwXEj1/qAsIuTGKGhWH0v25ndnQE1/img.png&quot; data-alt=&quot;매개변수 입력&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Sz7cN/btsLLrwXEj1/qAsIuTGKGhWH0v25ndnQE1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSz7cN%2FbtsLLrwXEj1%2FqAsIuTGKGhWH0v25ndnQE1%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; alt=&quot;매개변수 입력&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;111&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;111&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;매개변수 입력&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;&quot;매개변수 입력&quot;이라는 문자열을 입력했을 때 다음과 같이 출력됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;188&quot; data-origin-height=&quot;33&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DbdGt/btsLJLKgpHd/e8iDTyu3NRkJ9d4sDmZbtk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DbdGt/btsLJLKgpHd/e8iDTyu3NRkJ9d4sDmZbtk/img.png&quot; data-alt=&quot;매개변수 입력 결과&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DbdGt/btsLJLKgpHd/e8iDTyu3NRkJ9d4sDmZbtk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDbdGt%2FbtsLJLKgpHd%2Fe8iDTyu3NRkJ9d4sDmZbtk%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; alt=&quot;매개변수 입력 결과&quot; loading=&quot;lazy&quot; width=&quot;188&quot; height=&quot;33&quot; data-origin-width=&quot;188&quot; data-origin-height=&quot;33&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;매개변수 입력 결과&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;공백이 있는 경우 나눠서 들어오는것을 알 수 있습니다.&lt;/p&gt;</description>
      <category>Study/java</category>
      <category>Intellij</category>
      <author>priming</author>
      <guid isPermaLink="true">https://priming.tistory.com/187</guid>
      <comments>https://priming.tistory.com/187#entry187comment</comments>
      <pubDate>Sun, 12 Jan 2025 00:13:42 +0900</pubDate>
    </item>
    <item>
      <title>[Mac] DBeaver SQL 포멧 변경 방법</title>
      <link>https://priming.tistory.com/186</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DBeaver에서 SQL 포맷 적용하는 방법입니다.&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;그럴 때 툴에서 제공하는 SQL 포맷을 사용하면 가독성이 좋아집니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;DBeaver SQL 포맷 변경 메뉴 위치&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;편집 -&amp;gt; Format SQL을 클릭하면 쿼리에 포맷이 적용됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;732&quot; data-origin-height=&quot;1214&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FW4VF/btsLLSntw2A/DPLis7CdPvvbKD0Qyw53Ok/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FW4VF/btsLLSntw2A/DPLis7CdPvvbKD0Qyw53Ok/img.png&quot; data-alt=&quot;DBeaver Format SQL 위치&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FW4VF/btsLLSntw2A/DPLis7CdPvvbKD0Qyw53Ok/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFW4VF%2FbtsLLSntw2A%2FDPLis7CdPvvbKD0Qyw53Ok%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; alt=&quot;DBeaver Format SQL 위치&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;829&quot; data-origin-width=&quot;732&quot; data-origin-height=&quot;1214&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;DBeaver Format SQL 위치&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;맥북 기준 단축키는 control + shift + F 입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;DBeaver 쿼리 포맷 적용 결과&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;652&quot; data-origin-height=&quot;342&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pkvJ2/btsLL8RaexV/9H7oimut1G3DuCkmjVUm3K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pkvJ2/btsLL8RaexV/9H7oimut1G3DuCkmjVUm3K/img.png&quot; data-alt=&quot;DBeaver 쿼리 포맷 적용 결과&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pkvJ2/btsLL8RaexV/9H7oimut1G3DuCkmjVUm3K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpkvJ2%2FbtsLL8RaexV%2F9H7oimut1G3DuCkmjVUm3K%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; alt=&quot;DBeaver 쿼리 포맷 적용 결과&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;262&quot; data-origin-width=&quot;652&quot; data-origin-height=&quot;342&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;DBeaver 쿼리 포맷 적용 결과&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Format SQL 적용 결과 한줄 쿼리가 줄바꿈이 되어 가독성이 좋아졌습니다.&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;</description>
      <category>Study/Environment</category>
      <category>DBeaver</category>
      <author>priming</author>
      <guid isPermaLink="true">https://priming.tistory.com/186</guid>
      <comments>https://priming.tistory.com/186#entry186comment</comments>
      <pubDate>Sat, 11 Jan 2025 23:38:24 +0900</pubDate>
    </item>
    <item>
      <title>[MySQL] Group By 최신값, 최근값 데이터 가져오기 예제</title>
      <link>https://priming.tistory.com/185</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;예제 테이블&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예제에 사용할 테이블은 mysql 샘플 데이터베이스의 sakila 데이터베이스의 rental 테이블입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://priming.tistory.com/61&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;샘플 데이터베이스 다운로드 방법 바로가기&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1736603945020&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] 샘플 데이터베이스 다운로드 방법&quot; data-og-description=&quot;SQL을 학습하기 위해서는 데이터가 필요합니다.테스트 데이터를 직접 만들어도 되지만, 샘플 데이터도 학습용으로 사용하기 좋습니다.MySQL에 샘플 데이터를 SQL 파일로 받는 방법과 MySQL Installer를&quot; data-og-host=&quot;priming.tistory.com&quot; data-og-source-url=&quot;https://priming.tistory.com/61&quot; data-og-url=&quot;https://priming.tistory.com/61&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/eaFfnT/hyXWvof2SD/UNgFvXnZtOX4OVhNwmvSO0/img.png?width=800&amp;amp;height=203&amp;amp;face=0_0_800_203,https://scrap.kakaocdn.net/dn/bzVuqq/hyXWA4fc7q/HbRdek31ESdEx8fjTxJ8vK/img.png?width=800&amp;amp;height=203&amp;amp;face=0_0_800_203,https://scrap.kakaocdn.net/dn/qx05d/hyX0nCcjXr/wM9fillbtHQrjmDAyR9NZ0/img.png?width=632&amp;amp;height=350&amp;amp;face=0_0_632_350&quot;&gt;&lt;a href=&quot;https://priming.tistory.com/61&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://priming.tistory.com/61&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/eaFfnT/hyXWvof2SD/UNgFvXnZtOX4OVhNwmvSO0/img.png?width=800&amp;amp;height=203&amp;amp;face=0_0_800_203,https://scrap.kakaocdn.net/dn/bzVuqq/hyXWA4fc7q/HbRdek31ESdEx8fjTxJ8vK/img.png?width=800&amp;amp;height=203&amp;amp;face=0_0_800_203,https://scrap.kakaocdn.net/dn/qx05d/hyX0nCcjXr/wM9fillbtHQrjmDAyR9NZ0/img.png?width=632&amp;amp;height=350&amp;amp;face=0_0_632_350');&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] 샘플 데이터베이스 다운로드 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;SQL을 학습하기 위해서는 데이터가 필요합니다.테스트 데이터를 직접 만들어도 되지만, 샘플 데이터도 학습용으로 사용하기 좋습니다.MySQL에 샘플 데이터를 SQL 파일로 받는 방법과 MySQL Installer를&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;priming.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;
&lt;p data-ke-size=&quot;size16&quot;&gt;예제로 사용할 테이블의 DDL 구문입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1736603999773&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# rental 테이블
CREATE TABLE `rental` (
  `rental_id` int NOT NULL AUTO_INCREMENT,
  `rental_date` datetime NOT NULL,
  `inventory_id` mediumint unsigned NOT NULL,
  `customer_id` smallint unsigned NOT NULL,
  `return_date` datetime DEFAULT NULL,
  `staff_id` tinyint unsigned NOT NULL,
  `last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`rental_id`),
  UNIQUE KEY `rental_date` (`rental_date`,`inventory_id`,`customer_id`),
  KEY `idx_fk_inventory_id` (`inventory_id`),
  KEY `idx_fk_customer_id` (`customer_id`),
  KEY `idx_fk_staff_id` (`staff_id`),
  CONSTRAINT `fk_rental_customer` FOREIGN KEY (`customer_id`) REFERENCES `customer` (`customer_id`) ON DELETE RESTRICT ON UPDATE CASCADE,
  CONSTRAINT `fk_rental_inventory` FOREIGN KEY (`inventory_id`) REFERENCES `inventory` (`inventory_id`) ON DELETE RESTRICT ON UPDATE CASCADE,
  CONSTRAINT `fk_rental_staff` FOREIGN KEY (`staff_id`) REFERENCES `staff` (`staff_id`) ON DELETE RESTRICT ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=16050 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

# inventory 테이블
CREATE TABLE `inventory` (
  `inventory_id` mediumint unsigned NOT NULL AUTO_INCREMENT,
  `film_id` smallint unsigned NOT NULL,
  `store_id` tinyint unsigned NOT NULL,
  `last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`inventory_id`),
  KEY `idx_fk_film_id` (`film_id`),
  KEY `idx_store_id_film_id` (`store_id`,`film_id`),
  CONSTRAINT `fk_inventory_film` FOREIGN KEY (`film_id`) REFERENCES `film` (`film_id`) ON DELETE RESTRICT ON UPDATE CASCADE,
  CONSTRAINT `fk_inventory_store` FOREIGN KEY (`store_id`) REFERENCES `store` (`store_id`) ON DELETE RESTRICT ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=4582 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;가장 최근 데이터 1건 가져오기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그룹 함수를 사용하여 rental 테이블에서 가장 최근에 rental 된 데이터 1건을 조회하는 쿼리입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1736604326044&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 그룹 함수를 사용하여 가장 최근 데이터 1건 조회
select *
from sakila.rental
where rental_date = (select max(rental_date) from sakila.rental)
limit 1;&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;rental_date가 가장 큰 데이터와 일치하는 데이터를 조회하는 쿼리입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;날짜가 중복되는 경우, 조회 개수를 제한하기 위해 limit을 사용하였습니다.&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;order by와 limit을 사용해도 조회가 가능합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1736604209389&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# order by와 limit을 사용하여 가장 최근 데이터 1건 조회
select *
from sakila.rental
order by rental_date desc
limit 1;&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;order by는 중복된 데이터가 있는 경우, 어떻게 정렬할 지 처리하려면 order by 컬럼을 여러개 사용하는 것이 좋습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(예를 들어, rental_date에 중복 데이터가 있는 경우 마지막 업데이트 시간의 최신순으로 정렬하려면 order by rental_date desc, last_update desc로 사용)&lt;/p&gt;
&lt;pre id=&quot;code_1736604867716&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select *
from sakila.rental
order by rental_date desc, last_update desc
limit 1;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Group By 그룹별 최신값 가져오기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Group by로 그룹화된 데이터의 최신값을 조회하는 쿼리입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예제 쿼리는 inventory_id 별 가장 최근에 렌탈된 날짜를 가져오는 쿼리입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1736604834369&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# inventory_id 별 rental_date 최신 날짜 조회
select inventory_id, max(rental_date)
from sakila.rental
group by inventory_id;&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;h2 data-ke-size=&quot;size26&quot;&gt;Group By 없으면 0 표시&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;group by 결과 집계된 데이터가 없으면 0으로 표시하는 예제입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예제는 한번도 렌탈된 적이 없는 inventory는 렌탈 횟수를 0으로 표시하는 쿼리입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1736605251981&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 한번도 렌탈된 적이 없는 inventory는 렌탈 횟수 0으로 표시
select inventory.inventory_id, ifnull(rental_count, 0) as rental_count
from sakila.inventory as inventory
left join (
select inventory_id, count(1) as rental_count
from sakila.rental
group by inventory_id) as rental_inventory on rental_inventory.inventory_id = inventory.inventory_id;&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;left join으로 inventory_id 별 카운트를 집계한 쿼리 결과를 조인한 후 카운트를 조회합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ifnull을 사용한 이유는 조인 테이블과 매칭되는 컬럼이 없는 경우 null로 표시되는데, null로 표시되는 데이터를 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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;읽으면 좋은 글&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://priming.tistory.com/65&quot; rel=&quot;noopener&quot;&gt;[MySQL] GROUP BY HAVING 사용법 및 예제&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1736605392448&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] GROUP BY HAVING 사용법 및 예제&quot; data-og-description=&quot;HAVING 절은 GROUP BY에 의해 생성된 그룹 데이터를 대상으로 조건을 적용할 수 있습니다.&amp;nbsp;사용법기본 구조는 다음과 같습니다.SELECT [컬럼명]FROM [테이블명]WHERE [조건]GROUP BY [컬럼명]HAVING [조건]&amp;nbsp;WHER&quot; data-og-host=&quot;priming.tistory.com&quot; data-og-source-url=&quot;https://priming.tistory.com/65&quot; data-og-url=&quot;https://priming.tistory.com/65&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/5cdbO/hyX0nhTpQP/Xz9K8lkgDitNsqVkibkfkK/img.png?width=331&amp;amp;height=210&amp;amp;face=0_0_331_210,https://scrap.kakaocdn.net/dn/I8OHk/hyXWCVinxk/OV0wz9M8Y3vABKDhRyOjJ0/img.png?width=331&amp;amp;height=210&amp;amp;face=0_0_331_210,https://scrap.kakaocdn.net/dn/cgBGpI/hyXWyejaGs/NfY2o2qzSclRUT2nE4TZ51/img.png?width=331&amp;amp;height=210&amp;amp;face=0_0_331_210&quot;&gt;&lt;a href=&quot;https://priming.tistory.com/65&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://priming.tistory.com/65&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/5cdbO/hyX0nhTpQP/Xz9K8lkgDitNsqVkibkfkK/img.png?width=331&amp;amp;height=210&amp;amp;face=0_0_331_210,https://scrap.kakaocdn.net/dn/I8OHk/hyXWCVinxk/OV0wz9M8Y3vABKDhRyOjJ0/img.png?width=331&amp;amp;height=210&amp;amp;face=0_0_331_210,https://scrap.kakaocdn.net/dn/cgBGpI/hyXWyejaGs/NfY2o2qzSclRUT2nE4TZ51/img.png?width=331&amp;amp;height=210&amp;amp;face=0_0_331_210');&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] GROUP BY HAVING 사용법 및 예제&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;HAVING 절은 GROUP BY에 의해 생성된 그룹 데이터를 대상으로 조건을 적용할 수 있습니다.&amp;nbsp;사용법기본 구조는 다음과 같습니다.SELECT [컬럼명]FROM [테이블명]WHERE [조건]GROUP BY [컬럼명]HAVING [조건]&amp;nbsp;WHER&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;priming.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>
      <category>Study/DB</category>
      <category>GROUP BY</category>
      <category>MySQL</category>
      <author>priming</author>
      <guid isPermaLink="true">https://priming.tistory.com/185</guid>
      <comments>https://priming.tistory.com/185#entry185comment</comments>
      <pubDate>Sat, 11 Jan 2025 23:22:13 +0900</pubDate>
    </item>
    <item>
      <title>[Mac] HomeBrew PostgreSQL 설치, DBeaver 설정 방법</title>
      <link>https://priming.tistory.com/184</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;맥북에서 Homebrew를 사용하여 PostgreSQL을 설치하는 방법과 DBeaver에 연결하는 방법입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;M3로 진행하였습니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Homebrew PostgreSQL 설치 명령어&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;homebrew로 PostgreSQL을 설치하는 명령어입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1731804585706&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;brew install postgresql&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;pre id=&quot;code_1731804858208&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;postgres --version&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;688&quot; data-origin-height=&quot;64&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bRdViT/btsLeQZkL9N/qo7lRr1fN81RBT9eZ37A50/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bRdViT/btsLeQZkL9N/qo7lRr1fN81RBT9eZ37A50/img.png&quot; data-alt=&quot;PostgreSQL 버전 확인 명령어 실행 결과&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bRdViT/btsLeQZkL9N/qo7lRr1fN81RBT9eZ37A50/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbRdViT%2FbtsLeQZkL9N%2Fqo7lRr1fN81RBT9eZ37A50%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; alt=&quot;PostgreSQL 버전 확인 명령어 실행 결과&quot; loading=&quot;lazy&quot; width=&quot;650&quot; height=&quot;60&quot; data-origin-width=&quot;688&quot; data-origin-height=&quot;64&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;PostgreSQL 버전 확인 명령어 실행 결과&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;PostgreSQL 실행 방법&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설치한 PostgreSQL 서버를 실행하는 방법입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1731805092642&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;brew services start postgresql&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;PostgreSQL 사용자 생성&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Postgres에서 사용할 사용자를 생성하는 방법입니다.&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;먼저 postgres 콘솔에 접속합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1731805228554&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;psql postgres&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;현재 존재하는 role을 확인합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1731805307048&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select rolname from pg_roles;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;584&quot; data-origin-height=&quot;462&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lRPKB/btsLfVSRfv3/6Kc0m0dkS1CXj0M0QmSaPk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lRPKB/btsLfVSRfv3/6Kc0m0dkS1CXj0M0QmSaPk/img.png&quot; data-alt=&quot;PostgreSQL role 확인 쿼리 실행 결과&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lRPKB/btsLfVSRfv3/6Kc0m0dkS1CXj0M0QmSaPk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlRPKB%2FbtsLfVSRfv3%2F6Kc0m0dkS1CXj0M0QmSaPk%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; alt=&quot;PostgreSQL role 확인 쿼리 실행 결과&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;396&quot; data-origin-width=&quot;584&quot; data-origin-height=&quot;462&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;PostgreSQL role 확인 쿼리 실행 결과&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;콘솔에서 쿼리를 실행하면 서버에 존재하는 role을 확인할 수 있습니다.&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;div&gt;&lt;!-- 중간-디스플레이-수평-1 --&gt; &lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block;&quot; data-ad-client=&quot;ca-pub-3244792068052716&quot; data-ad-slot=&quot;1629193049&quot; data-ad-format=&quot;auto&quot; data-full-width-responsive=&quot;true&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/div&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;h2 data-ke-size=&quot;size26&quot;&gt;DBeaver에서 Postgresql 설정&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DBeaver 툴에서 PostgreSQL 서버 연결 설정 방법입니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;384&quot; data-origin-height=&quot;370&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xASpw/btsKKFq6Y9Q/a4Na0LEhSyf2Mri20NB5i1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xASpw/btsKKFq6Y9Q/a4Na0LEhSyf2Mri20NB5i1/img.png&quot; data-alt=&quot;Dbeaver PostgreSQL 커넥션 설정 버튼 위치&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xASpw/btsKKFq6Y9Q/a4Na0LEhSyf2Mri20NB5i1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxASpw%2FbtsKKFq6Y9Q%2Fa4Na0LEhSyf2Mri20NB5i1%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; alt=&quot;Dbeaver PostgreSQL 커넥션 설정 버튼 위치&quot; loading=&quot;lazy&quot; width=&quot;350&quot; height=&quot;337&quot; data-origin-width=&quot;384&quot; data-origin-height=&quot;370&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Dbeaver PostgreSQL 커넥션 설정 버튼 위치&lt;/figcaption&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1812&quot; data-origin-height=&quot;1348&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cPgLLv/btsKL7NDAqe/dgKXTRa1CuiRjJ5XMvIKuk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cPgLLv/btsKL7NDAqe/dgKXTRa1CuiRjJ5XMvIKuk/img.png&quot; data-alt=&quot;로컬에 설치된 PostgreSQL 커넥션 설정&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cPgLLv/btsKL7NDAqe/dgKXTRa1CuiRjJ5XMvIKuk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcPgLLv%2FbtsKL7NDAqe%2FdgKXTRa1CuiRjJ5XMvIKuk%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; alt=&quot;로컬에 설치된 PostgreSQL 커넥션 설정&quot; loading=&quot;lazy&quot; width=&quot;800&quot; height=&quot;595&quot; data-origin-width=&quot;1812&quot; data-origin-height=&quot;1348&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;로컬에 설치된 PostgreSQL 커넥션 설정&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;로컬 환경에서 설치한 PostgreSQL 서버의 주소는 localhost:5432입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 외부 PostgreSQL을 사용하신다면 해당 DB의 접속 정보를 입력하면 됩니다.&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;PostgreSQL 연결 설정을 처음 했다면 드라이버를 설치해야 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;왼쪽 아래 테스트 커넥션(Test Connection...) 버튼을 누르면 확인할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1342&quot; data-origin-height=&quot;1286&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cdJTRM/btsKLskjEE0/CIl3RQZ1bW0BEWkv6oKe1K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cdJTRM/btsKLskjEE0/CIl3RQZ1bW0BEWkv6oKe1K/img.png&quot; data-alt=&quot;Dbeaver에 PostgreSQL 드라이버 설치&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cdJTRM/btsKLskjEE0/CIl3RQZ1bW0BEWkv6oKe1K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcdJTRM%2FbtsKLskjEE0%2FCIl3RQZ1bW0BEWkv6oKe1K%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; alt=&quot;Dbeaver에 PostgreSQL 드라이버 설치&quot; loading=&quot;lazy&quot; width=&quot;800&quot; height=&quot;767&quot; data-origin-width=&quot;1342&quot; data-origin-height=&quot;1286&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Dbeaver에 PostgreSQL 드라이버 설치&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;드라이버를 설치하고나서 입력한 연결 정보가 맞다면 테스트가 성공합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;828&quot; data-origin-height=&quot;470&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/RvVJH/btsKMEdcGv1/TNXSgm9EFrefGtAyzluX50/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/RvVJH/btsKMEdcGv1/TNXSgm9EFrefGtAyzluX50/img.png&quot; data-alt=&quot;PostgreSQL Connection 테스트 성공&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/RvVJH/btsKMEdcGv1/TNXSgm9EFrefGtAyzluX50/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRvVJH%2FbtsKMEdcGv1%2FTNXSgm9EFrefGtAyzluX50%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; alt=&quot;PostgreSQL Connection 테스트 성공&quot; loading=&quot;lazy&quot; width=&quot;800&quot; height=&quot;454&quot; data-origin-width=&quot;828&quot; data-origin-height=&quot;470&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;PostgreSQL Connection 테스트 성공&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;&amp;nbsp;&lt;/p&gt;</description>
      <category>Study/Environment</category>
      <category>DBeaver</category>
      <category>postgres</category>
      <category>PostgreSQL</category>
      <author>priming</author>
      <guid isPermaLink="true">https://priming.tistory.com/184</guid>
      <comments>https://priming.tistory.com/184#entry184comment</comments>
      <pubDate>Wed, 11 Dec 2024 19:56:52 +0900</pubDate>
    </item>
    <item>
      <title>[Java] Spring Boot jar 실행 옵션 정리(profile, port, 외부 properties)</title>
      <link>https://priming.tistory.com/183</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;많이 사용되는 실행 옵션&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Spring Boot 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;&lt;b&gt;java -jar&lt;/b&gt; : 기본적인 jar 파일 실행 명령어입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1731501632447&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;java -jar &amp;lt;jar 파일 이름&amp;gt;.jar&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;--server.port=8081&lt;/b&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt; : 기본 포트 대신 다른 포트로 애플리케이션을 실행합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1731501645635&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;java -jar &amp;lt;jar 파일 이름&amp;gt;.jar --server.port=8081&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;--spring.profiles.active=prod&lt;/b&gt; : 특정 프로파일을 활성화합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1731501665400&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;java -jar &amp;lt;jar 파일 이름&amp;gt;.jar --spring.profiles.active=prod&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;-Dspring.profiles.active=prod&lt;/b&gt; : -D 옵션을 사용해 프로파일을 설정할 수도 있습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1731501673301&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;java -jar &amp;lt;jar 파일 이름&amp;gt;.jar -Dspring.profiles.active=prod&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-D 옵션이 붙은 경우 JVM 시스템 프로퍼티로 설정됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시스템 프로퍼티는 애플리케이션 실행 시 JVM에 전달되며, 코드내에서 System.getProperties(&quot;propertyName&quot;)으로 접근 가능합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-D 옵션 없이 사용하면 스프링 내부에서만 인식됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;외부 properties 읽기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스프링 부트에서는 외부 properties 파일을 가져와서 사용할 수 있습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1731501929463&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;java -jar &amp;lt;jar 파일 이름&amp;gt;.jar --spring.config.location=file:/path/to/application.properties&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;pre id=&quot;code_1731501959212&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;java -jar &amp;lt;jar 파일 이름&amp;gt;.jar --spring.config.location=file:/path/to/application.properties,file:/path/to/another-config.properties&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;</description>
      <category>Study/spring</category>
      <category>오블완</category>
      <category>티스토리챌린지</category>
      <author>priming</author>
      <guid isPermaLink="true">https://priming.tistory.com/183</guid>
      <comments>https://priming.tistory.com/183#entry183comment</comments>
      <pubDate>Wed, 13 Nov 2024 21:48:37 +0900</pubDate>
    </item>
    <item>
      <title>[Windows][Java] VSCode Spring Boot 프로젝트 생성, 실행 방법</title>
      <link>https://priming.tistory.com/182</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;VSCode Spring Boot 프로젝트 생성&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1. Extension 설치&lt;b&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;VSCode에서 스프링 부트 프로젝트를 생성하려면 Extension을 설치해야합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1088&quot; data-origin-height=&quot;345&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bULEe7/btsKFInfUqo/oxufnSgVzWVcKtsSe6pvvk/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bULEe7/btsKFInfUqo/oxufnSgVzWVcKtsSe6pvvk/img.webp&quot; data-alt=&quot;VSCode Spring boot Extension&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bULEe7/btsKFInfUqo/oxufnSgVzWVcKtsSe6pvvk/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbULEe7%2FbtsKFInfUqo%2FoxufnSgVzWVcKtsSe6pvvk%2Fimg.webp&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; alt=&quot;VSCode Spring boot Extension&quot; loading=&quot;lazy&quot; width=&quot;1088&quot; height=&quot;345&quot; data-origin-width=&quot;1088&quot; data-origin-height=&quot;345&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;VSCode Spring boot Extension&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Spring Boot Extension Pack을 설치하면 Spring Boot Tools와 Spring Initializer Java Support, Spring Boot Dashboard까지 모두 설치됩니다.&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;2. Spring Boot 프로젝트 생성&lt;b&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Ctrl + Shift + P를 누르거나 상단바 View -&amp;gt; Command Palette를 선택합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;616&quot; data-origin-height=&quot;185&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c99F8L/btsKEY5nSVY/qsSsxLSk5pmBfEWaDPNsdK/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c99F8L/btsKEY5nSVY/qsSsxLSk5pmBfEWaDPNsdK/img.webp&quot; data-alt=&quot;Command Palette에서 Spring initializer 검색&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c99F8L/btsKEY5nSVY/qsSsxLSk5pmBfEWaDPNsdK/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc99F8L%2FbtsKEY5nSVY%2FqsSsxLSk5pmBfEWaDPNsdK%2Fimg.webp&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; alt=&quot;Command Palette에서 Spring initializer 검색&quot; loading=&quot;lazy&quot; width=&quot;616&quot; height=&quot;185&quot; data-origin-width=&quot;616&quot; data-origin-height=&quot;185&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Command Palette에서 Spring initializer 검색&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Spring Initializer를 검색하면 Create a Maven Project, Create a Gradle Project가 나오는데, 원하는걸로 진행하면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서는 Maven으로 진행하겠습니다.&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;br /&gt;&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;637&quot; data-origin-height=&quot;217&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cbP0hF/btsKGMvpJNb/u3SKvOlayhLTBp1X1bXJM0/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cbP0hF/btsKGMvpJNb/u3SKvOlayhLTBp1X1bXJM0/img.webp&quot; data-alt=&quot;스프링 부트 버전 선택&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cbP0hF/btsKGMvpJNb/u3SKvOlayhLTBp1X1bXJM0/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcbP0hF%2FbtsKGMvpJNb%2Fu3SKvOlayhLTBp1X1bXJM0%2Fimg.webp&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; alt=&quot;스프링 부트 버전 선택&quot; loading=&quot;lazy&quot; width=&quot;637&quot; height=&quot;217&quot; data-origin-width=&quot;637&quot; data-origin-height=&quot;217&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;스프링 부트 버전 선택&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;&lt;b&gt;2. 언어 선택&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;630&quot; data-origin-height=&quot;152&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/9Xm7u/btsKG9jAnHS/p94zVfPySPdUVndQRvUvU1/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/9Xm7u/btsKG9jAnHS/p94zVfPySPdUVndQRvUvU1/img.webp&quot; data-alt=&quot;스프링 부트에서 사용할 언어 선택&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/9Xm7u/btsKG9jAnHS/p94zVfPySPdUVndQRvUvU1/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F9Xm7u%2FbtsKG9jAnHS%2Fp94zVfPySPdUVndQRvUvU1%2Fimg.webp&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; alt=&quot;스프링 부트에서 사용할 언어 선택&quot; loading=&quot;lazy&quot; width=&quot;630&quot; height=&quot;152&quot; data-origin-width=&quot;630&quot; data-origin-height=&quot;152&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;스프링 부트에서 사용할 언어 선택&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Java, Kotlin, Groovy 중 원하는 언어를 선택하면 됩니다.&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. 패키지 Group 설정&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;620&quot; data-origin-height=&quot;102&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bdDcF0/btsKGLjhHuw/0bNtJ12qGBiasHEnSM1kIK/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bdDcF0/btsKGLjhHuw/0bNtJ12qGBiasHEnSM1kIK/img.webp&quot; data-alt=&quot;패키지 Group 설정&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bdDcF0/btsKGLjhHuw/0bNtJ12qGBiasHEnSM1kIK/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbdDcF0%2FbtsKGLjhHuw%2F0bNtJ12qGBiasHEnSM1kIK%2Fimg.webp&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; alt=&quot;패키지 Group 설정&quot; loading=&quot;lazy&quot; width=&quot;620&quot; height=&quot;102&quot; data-origin-width=&quot;620&quot; data-origin-height=&quot;102&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;패키지 Group 설정&lt;/figcaption&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;&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;div&gt;&lt;!-- 중간-디스플레이-수평-1 --&gt; &lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block;&quot; data-ad-client=&quot;ca-pub-3244792068052716&quot; data-ad-slot=&quot;1629193049&quot; data-ad-format=&quot;auto&quot; data-full-width-responsive=&quot;true&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/div&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;4. Artifact Id 설정&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;622&quot; data-origin-height=&quot;100&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/RRebJ/btsKFJNgpnV/gKbwcb6IoNek74v8fte7xk/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/RRebJ/btsKFJNgpnV/gKbwcb6IoNek74v8fte7xk/img.webp&quot; data-alt=&quot;프로젝트에서 사용할 Artifact Id 설정&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/RRebJ/btsKFJNgpnV/gKbwcb6IoNek74v8fte7xk/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRRebJ%2FbtsKFJNgpnV%2FgKbwcb6IoNek74v8fte7xk%2Fimg.webp&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; alt=&quot;프로젝트에서 사용할 Artifact Id 설정&quot; loading=&quot;lazy&quot; width=&quot;622&quot; height=&quot;100&quot; data-origin-width=&quot;622&quot; data-origin-height=&quot;100&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;프로젝트에서 사용할 Artifact Id 설정&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Artifact Id를 설정합니다.&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;5. 빌드 파일 형식 설정&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;619&quot; data-origin-height=&quot;127&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bFEdsA/btsKGq7vXYS/VzD9pFvFfJkEcofxQztq81/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bFEdsA/btsKGq7vXYS/VzD9pFvFfJkEcofxQztq81/img.webp&quot; data-alt=&quot;프로젝트 패키징 파일 형식 설정&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bFEdsA/btsKGq7vXYS/VzD9pFvFfJkEcofxQztq81/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbFEdsA%2FbtsKGq7vXYS%2FVzD9pFvFfJkEcofxQztq81%2Fimg.webp&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; alt=&quot;프로젝트 패키징 파일 형식 설정&quot; loading=&quot;lazy&quot; width=&quot;619&quot; height=&quot;127&quot; data-origin-width=&quot;619&quot; data-origin-height=&quot;127&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;프로젝트 패키징 파일 형식 설정&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로젝트 패키징을 Jar로 할지 War로 할지 선택합니다.&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;6. 자바 버전 선택&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;618&quot; data-origin-height=&quot;145&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b1si1o/btsKFFcYF18/OTX5FHiPioVKoBmYq8KHF0/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b1si1o/btsKFFcYF18/OTX5FHiPioVKoBmYq8KHF0/img.webp&quot; data-alt=&quot;프로젝트에서 사용할 자바 버전 선택&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b1si1o/btsKFFcYF18/OTX5FHiPioVKoBmYq8KHF0/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb1si1o%2FbtsKFFcYF18%2FOTX5FHiPioVKoBmYq8KHF0%2Fimg.webp&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; alt=&quot;프로젝트에서 사용할 자바 버전 선택&quot; loading=&quot;lazy&quot; width=&quot;618&quot; height=&quot;145&quot; data-origin-width=&quot;618&quot; data-origin-height=&quot;145&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;프로젝트에서 사용할 자바 버전 선택&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Spring Boot 3버전이기 때문에 최소 17버전 이상의 자바를 사용해야 합니다.&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;7. 의존성 선택&amp;nbsp;&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;626&quot; data-origin-height=&quot;614&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ICMNI/btsKFIHAVh2/sWboSFtTVZCwToC78dcYa1/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ICMNI/btsKFIHAVh2/sWboSFtTVZCwToC78dcYa1/img.webp&quot; data-alt=&quot;프로젝트에서 사용할 의존성 선택&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ICMNI/btsKFIHAVh2/sWboSFtTVZCwToC78dcYa1/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FICMNI%2FbtsKFIHAVh2%2FsWboSFtTVZCwToC78dcYa1%2Fimg.webp&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; alt=&quot;프로젝트에서 사용할 의존성 선택&quot; loading=&quot;lazy&quot; width=&quot;626&quot; height=&quot;614&quot; data-origin-width=&quot;626&quot; data-origin-height=&quot;614&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;프로젝트에서 사용할 의존성 선택&lt;/figcaption&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;여기까지 하면 모든 단계가 끝납니다.&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;8. 파일 저장&lt;/b&gt;&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;500&quot; data-origin-height=&quot;292&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/biTHBB/btsKGIUnMVG/s7rBnqxp0f5uFkCDmBkMGK/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/biTHBB/btsKGIUnMVG/s7rBnqxp0f5uFkCDmBkMGK/img.webp&quot; data-alt=&quot;파일 탐색기&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/biTHBB/btsKGIUnMVG/s7rBnqxp0f5uFkCDmBkMGK/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbiTHBB%2FbtsKGIUnMVG%2Fs7rBnqxp0f5uFkCDmBkMGK%2Fimg.webp&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;500&quot; height=&quot;292&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;292&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;파일 탐색기&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원하는 폴더를 선택하거나 우측 하단에 generate into this folder 버튼을 누릅니다.&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;9. 생성 완료&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;226&quot; data-origin-height=&quot;220&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cOMU7I/btsKFq1mkfG/TrnxKfzMiDCnTyb5WFtZC0/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cOMU7I/btsKFq1mkfG/TrnxKfzMiDCnTyb5WFtZC0/img.webp&quot; data-alt=&quot;스프링 부트 프로젝트 생성 완료&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cOMU7I/btsKFq1mkfG/TrnxKfzMiDCnTyb5WFtZC0/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcOMU7I%2FbtsKFq1mkfG%2FTrnxKfzMiDCnTyb5WFtZC0%2Fimg.webp&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;226&quot; height=&quot;220&quot; data-origin-width=&quot;226&quot; data-origin-height=&quot;220&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;스프링 부트 프로젝트 생성 완료&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;스프링 부트 프로젝트 실행하기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;VSCode에서 만든 스프링 부트 프로젝트를 실행하는 방법입니다.&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;550&quot; data-origin-height=&quot;394&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/AVcYr/btsKFHhx04o/OArYKOpNblXes8CaiePC2K/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/AVcYr/btsKFHhx04o/OArYKOpNblXes8CaiePC2K/img.webp&quot; data-alt=&quot;VSCode 사이드바 스프링부트 아이콘 클릭&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/AVcYr/btsKFHhx04o/OArYKOpNblXes8CaiePC2K/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAVcYr%2FbtsKFHhx04o%2FOArYKOpNblXes8CaiePC2K%2Fimg.webp&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; alt=&quot;VSCode 사이드바 스프링부트 아이콘 클릭&quot; loading=&quot;lazy&quot; width=&quot;550&quot; height=&quot;394&quot; data-origin-width=&quot;550&quot; data-origin-height=&quot;394&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;VSCode 사이드바 스프링부트 아이콘 클릭&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;APPS 메뉴에 아까 생성한 스프링부트 프로젝트가 있습니다.&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;168&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/RWLfj/btsKHsQMhbG/vEUd0x6ygmKoqnI2QwqIE1/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/RWLfj/btsKHsQMhbG/vEUd0x6ygmKoqnI2QwqIE1/img.webp&quot; data-alt=&quot;스프링부트 실행 완료&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/RWLfj/btsKHsQMhbG/vEUd0x6ygmKoqnI2QwqIE1/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRWLfj%2FbtsKHsQMhbG%2FvEUd0x6ygmKoqnI2QwqIE1%2Fimg.webp&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; alt=&quot;스프링부트 실행 완료&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;168&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;168&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;스프링부트 실행 완료&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Study/spring</category>
      <category>오블완</category>
      <category>티스토리챌린지</category>
      <author>priming</author>
      <guid isPermaLink="true">https://priming.tistory.com/182</guid>
      <comments>https://priming.tistory.com/182#entry182comment</comments>
      <pubDate>Tue, 12 Nov 2024 21:12:00 +0900</pubDate>
    </item>
    <item>
      <title>[Python] BeautifulSoup와 Selenium의 차이는?</title>
      <link>https://priming.tistory.com/181</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;BeautifulSoup란?&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;BeautifulSoup는 파이썬에서 HTML과 XML 파일을 손쉽게 파싱(구문 분석)할 수 있게 도와주는 라이브러리입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;웹 페이지에서 원하는 데이터를 추출할 때 주로 사용되며, HTML 문서를 트리 형태로 구조화해 특정 요소를 쉽게 찾고 조작할 수 있습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;특징&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;간단한 문법: HTML 파일을 트리 구조로 만들어 태그와 속성을 사용해 특정 요소를 직관적으로 찾을 수 있습니다.&lt;/li&gt;
&lt;li&gt;다양한 파서 지원: 기본적으로 Python 표준 라이브러리의 HTML 파서를 사용하며, html.parser 외에도 lxml과 html5lib 등 다양한 파서를 사용할 수 있어 유연합니다.&lt;/li&gt;
&lt;li&gt;유효하지 않은 HTML도 파싱 가능: HTML 코드가 깨져 있거나 잘못된 경우에도 이를 교정하며 파싱할 수 있어 다양한 웹 페이지에서 사용하기에 적합합니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://beautiful-soup-4.readthedocs.io/en/latest/#&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;BeautifulSoup 공식 문서 바로가기&lt;/a&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;h2 data-ke-size=&quot;size26&quot;&gt;Selenium이란?&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Selenium&lt;/b&gt;은 웹 브라우저를 자동화하는 도구로, 다양한 프로그래밍 언어(Python, Java, C#, 등)를 지원하여 웹 테스트와 스크래핑 작업을 수행할 수 있게 해줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Selenium은 브라우저 자체를 직접 제어하여 버튼 클릭, 텍스트 입력, 스크롤 등 사람처럼 웹 페이지와 상호작용할 수 있도록 돕습니다.&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;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;동적 콘텐츠 지원: JavaScript로 생성된 동적 콘텐츠에 접근할 수 있습니다. BeautifulSoup과 달리 웹 페이지가 로딩된 후의 HTML 구조를 처리하기 때문에 SPA(Single Page Application)와 같은 현대적인 웹 페이지의 데이터를 수집하는 데 적합합니다.&lt;/li&gt;
&lt;li&gt;다양한 브라우저 지원: Chrome, Firefox, Safari, Edge 등의 주요 브라우저를 지원하며, 각 브라우저에 맞는 WebDriver를 사용해 제어할 수 있습니다.&lt;/li&gt;
&lt;li&gt;브라우저 상호작용: 링크 클릭, 양식 제출, 키 입력, 스크롤 등의 다양한 상호작용이 가능해 실제 사용자처럼 웹 페이지를 탐색하거나 테스트할 수 있습니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://selenium-python.readthedocs.io/&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;Python Selenium 문서 바로가기&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;BeautifulSoup와&amp;nbsp;Selenium의&amp;nbsp;차이는?&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;BeautifulSoup와 Selenium은 웹 스크래핑에 자주 사용되는 파이썬 라이브러리들이지만, 용도와 특성이 다릅니다.&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;BeautifulSoup: HTML이나 XML 파일을 구문 분석하여 원하는 데이터 요소를 추출하는 데 사용됩니다. 일반적으로 이미 다운로드한 정적 웹 페이지 데이터를 파싱하기 위해 많이 사용됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Selenium: 웹 브라우저를 자동화하여 동적 콘텐츠를 처리할 수 있는 도구입니다. JavaScript로 생성된 콘텐츠와 같이 페이지를 직접 로드하고 상호작용이 필요한 경우 유용합니다.&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;HTML 처리 방식&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;BeautifulSoup: HTML 문서를 트리 형태로 만들어 태그나 속성에 따라 특정 요소를 찾고, 구조화된 데이터를 쉽게 탐색할 수 있습니다. 정적인 HTML에 적합합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Selenium: 실제 웹 브라우저(예: Chrome, Firefox)를 사용해 페이지를 로드하므로, JavaScript로 생성된 동적 요소도 접근할 수 있습니다.&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;BeautifulSoup: 다운로드한 HTML 파일만 파싱하므로 상대적으로 속도가 빠릅니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Selenium: 브라우저를 직접 실행하고 페이지가 완전히 로드될 때까지 기다려야 하기 때문에 BeautifulSoup보다 느립니다.&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;</description>
      <category>Study/python</category>
      <category>오블완</category>
      <category>티스토리챌린지</category>
      <author>priming</author>
      <guid isPermaLink="true">https://priming.tistory.com/181</guid>
      <comments>https://priming.tistory.com/181#entry181comment</comments>
      <pubDate>Mon, 11 Nov 2024 21:45:21 +0900</pubDate>
    </item>
    <item>
      <title>[Java] 자바의 가변 인자(Varargs)와 @SafeVarargs</title>
      <link>https://priming.tistory.com/180</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;가변인자란?&lt;/h2&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;h3 data-ke-size=&quot;size23&quot;&gt;가변인자 예제&lt;/h3&gt;
&lt;pre id=&quot;code_1731235969927&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) {
    // 가변 인자를 사용하여 3개의 정수를 전달합니다.
    System.out.println(&quot;sum(1, 2, 3) = &quot; + sum(1, 2, 3));

    // 가변 인자를 사용하여 4개의 정수를 전달합니다.
    System.out.println(&quot;sum(1, 2, 3, 4) = &quot; + sum(1, 2, 3, 4));

    // 가변 인자를 사용하여 5개의 정수를 전달합니다.
    System.out.println(&quot;sum(1, 2, 3, 4, 5) = &quot; + sum(1, 2, 3, 4, 5));
}

// 가변 인자를 사용하여 정수들의 합을 계산합니다.
public static int sum(int... numbers) {
    int sum = 0;
    for (int number : numbers) {
        sum += number;
    }
    return sum;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;205&quot; data-origin-height=&quot;73&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/k4S8Q/btsKDC7LUC6/onDKsUaRYaukq0Pb9Iyr61/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/k4S8Q/btsKDC7LUC6/onDKsUaRYaukq0Pb9Iyr61/img.webp&quot; data-alt=&quot;자바 가변인자 적용 예제&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/k4S8Q/btsKDC7LUC6/onDKsUaRYaukq0Pb9Iyr61/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fk4S8Q%2FbtsKDC7LUC6%2FonDKsUaRYaukq0Pb9Iyr61%2Fimg.webp&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; alt=&quot;자바 가변인자 적용 예제&quot; loading=&quot;lazy&quot; width=&quot;205&quot; height=&quot;73&quot; data-origin-width=&quot;205&quot; data-origin-height=&quot;73&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;자바 가변인자 적용 예제&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위의 코드에서 메서드는 0개 이상의 int 값을 파라미터로 받을 수 있으며, 이는 내부적으로 배열로 처리됩니다.&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;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음과 같은 경우에 가변인자의 타입 안전성에 문제가 생깁니다.&lt;/p&gt;
&lt;pre id=&quot;code_1731236681465&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;public static &amp;lt;T&amp;gt; T[] unsafe(T... elements) {
    return elements;
}

public static &amp;lt;T&amp;gt; T[] broken(T seed) {
    T[] plant = unsafe(seed, seed, seed);
    return plant;
}

public static void plant() {
    String[] plants = broken(&quot;seed&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;&lt;b&gt;1. unsafe 메서드&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;unsafe 메서드는 제네릭 가변인자 배열을 반환하고 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가변인자 메서드에서는 타입 안전성이 보장되지 않을 수 있기 때문에, 배열을 그대로 반환하는 것은 매우 위험합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가변인자 배열은 내부적으로 Object[] 배열로 변환되므로, 호출 시 타입 안정성이 깨질 가능성이 높습니다.&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. broken 메서드&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;broken 메서드는 unsafe 메서드를 호출하여 배열을 반환합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;unsafe(seed, seed, seed)를 통해 생성된 배열은 실제로 Object[] 타입입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;따라서 T[]로 반환한다고 해도 컴파일러는 Object[]를 T[]로 인식하지 못해 타입 안정성을 보장하지 못합니다.&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. plant 메서드&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;plant 메서드는 broken 메서드를 호출하면서 String 타입의 배열을 기대하지만, 실제로는 Object[] 배열을 반환받기 때문에 ClassCastException이 발생합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1731236808714&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Exception in thread &quot;main&quot; java.lang.ClassCastException: class [Ljava.lang.Object; cannot be cast to class [Ljava.lang.String; ([Ljava.lang.Object; and [Ljava.lang.String; are in module java.base of loader 'bootstrap')&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;@SafeVarargs란?&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;@SafeVarargs는 자바에서 가변인자를 안전하게 사용할 수 있도록 돕는 어노테이션입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주로 제네릭 가변인자 메서드에서 경고를 억제하기 위해 사용되며, 7 버전에서 도입되었습니다.&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;가변인자 메서드는 배열을 사용하기 때문에, 제네릭 가변인자는 타입 소거(Type Erasure) 과정에서 타입 안전성이 완벽하게 보장되지 않아 컴파일러가 경고를 발생시킬 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이러한 경고를 억제하는 것이 @SafeVarargs의 역할입니다.&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;@SafeVarargs 사용 시 주의사항&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;@SafeVarargs는 타입 안전한 가변인자 메서드에만 적용해야 합니다.&lt;/li&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;@SafeVarargs는 컴파일러 경고를 억제해주지만, 내부적으로 타입 안전성을 보장하지 못할 경우 런타임에 예외가 발생할 수 있으므로 주의가 필요합니다.&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;h2 data-ke-size=&quot;size26&quot;&gt;참고&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.baeldung.com/java-safevarargs&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.baeldung.com/java-safevarargs&lt;/a&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;</description>
      <category>Study/java</category>
      <category>오블완</category>
      <category>티스토리챌린지</category>
      <author>priming</author>
      <guid isPermaLink="true">https://priming.tistory.com/180</guid>
      <comments>https://priming.tistory.com/180#entry180comment</comments>
      <pubDate>Sun, 10 Nov 2024 20:10:36 +0900</pubDate>
    </item>
    <item>
      <title>[Java] URLEncoder, URLDecoder 사용 방법 정리</title>
      <link>https://priming.tistory.com/179</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;URLEncoder, URLDecoder 사용 방법과 encode 메소드 사용 시 deprecated가 발생했을 때 처리 방법에 대해 정리해보았습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;URLEncoder 사용 방법&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;URLEncoder 클래스는 URL 내에 특수 문자를 포함할 때 발생하는 문제를 해결하기 위해 사용하는 Java의 유틸리티 클래스입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;URL은 특정 문자 세트를 따르기 때문에 한글이나 특수문자가 포함될 경우 제대로 전송되지 않거나, 서버에서 오류가 발생할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이를 방지하기 위해 특수문자를 안전한 URL 형식으로 인코딩해주는 역할을 합니다.&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;/h3&gt;
&lt;pre id=&quot;code_1731158058588&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;

public class URLExample {
    public static void main(String[] args) {
        try {
            String encodedURL = URLEncoder.encode(&quot;특수 문자 예: &amp;amp; % # !&quot;, StandardCharsets.UTF_8.toString());
            System.out.println(&quot;인코딩된 URL: &quot; + encodedURL);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;571&quot; data-origin-height=&quot;26&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d89j9e/btsKCmklbqO/FE7grfKgi5d8jZByWBKZ5k/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d89j9e/btsKCmklbqO/FE7grfKgi5d8jZByWBKZ5k/img.webp&quot; data-alt=&quot;URLEncoder로 URL 인코딩 결과&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d89j9e/btsKCmklbqO/FE7grfKgi5d8jZByWBKZ5k/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd89j9e%2FbtsKCmklbqO%2FFE7grfKgi5d8jZByWBKZ5k%2Fimg.webp&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; alt=&quot;URLEncoder로 URL 인코딩 결과&quot; loading=&quot;lazy&quot; width=&quot;571&quot; height=&quot;26&quot; data-origin-width=&quot;571&quot; data-origin-height=&quot;26&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;URLEncoder로 URL 인코딩 결과&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 코드는 문자열 내 특수문자를 UTF-8 형식으로 인코딩하여 안전한 URL을 생성합니다.&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;div&gt;&lt;!-- 중간-디스플레이-수평-1 --&gt; &lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block;&quot; data-ad-client=&quot;ca-pub-3244792068052716&quot; data-ad-slot=&quot;1629193049&quot; data-ad-format=&quot;auto&quot; data-full-width-responsive=&quot;true&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/div&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;h2 data-ke-size=&quot;size26&quot;&gt;URLDecoder 사용 방법&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;URLDecoder 클래스는 인코딩된 URL을 다시 읽을 수 있는 문자열로 복원하기 위한 Java 클래스입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;URL 내의 특수문자가 인코딩되어 전달된 경우, 이를 디코딩하여 원래의 형태로 변환할 수 있습니다.&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;/h3&gt;
&lt;pre id=&quot;code_1731158239474&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.net.URLDecoder;
import java.nio.charset.StandardCharsets;

public class URLExample {
    public static void main(String[] args) {
        try {
            String encodedURL = &quot;%ED%8A%B9%EC%88%98+%EB%AC%B8%EC%9E%90+%EC%98%88%3A+%26+%25+%23+%21&quot;;
            String decodedURL = URLDecoder.decode(encodedURL, StandardCharsets.UTF_8.toString());
            System.out.println(&quot;디코딩된 URL: &quot; + decodedURL);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;238&quot; data-origin-height=&quot;33&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oBowb/btsKEdMXIZt/cDXOeYemuwKW9jcmJKLJL0/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oBowb/btsKEdMXIZt/cDXOeYemuwKW9jcmJKLJL0/img.webp&quot; data-alt=&quot;URLDecoder로 URL 디코딩 결과&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oBowb/btsKEdMXIZt/cDXOeYemuwKW9jcmJKLJL0/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoBowb%2FbtsKEdMXIZt%2FcDXOeYemuwKW9jcmJKLJL0%2Fimg.webp&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;238&quot; height=&quot;33&quot; data-origin-width=&quot;238&quot; data-origin-height=&quot;33&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;URLDecoder로 URL 디코딩 결과&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 예제는 UTF-8로 인코딩된 URL을 URLDecoder.decode를 통해 특수문자를 원래 상태로 복원하는 방식입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;urlencoder.encode deprecated 해결 방법&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Java 최신 버전에서는 일부 URLEncoder.encode 메서드가 Deprecated 처리되어 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음과 같이 사용하면 됩니다.&lt;/p&gt;
&lt;pre id=&quot;code_1731158441422&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;try {
    // deprecated
    String deprecatedEncodedURL = URLEncoder.encode(&quot;특수 문자 예: &amp;amp; % # !&quot;);
    System.out.println(&quot;인코딩된 URL(deprecated): &quot; + deprecatedEncodedURL);

    // not deprecated
    String encodedURL = URLEncoder.encode(&quot;특수 문자 예: &amp;amp; % # !&quot;, StandardCharsets.UTF_8.toString());
    System.out.println(&quot;인코딩된 URL: &quot; + encodedURL);
} catch (Exception e) {
    e.printStackTrace();
}&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;encode 메소드 사용 시 Charsets를 함께 사용하면 됩니다.&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;</description>
      <category>Study/java</category>
      <category>urldecoder</category>
      <category>URLEncoder</category>
      <category>오블완</category>
      <category>티스토리챌린지</category>
      <author>priming</author>
      <guid isPermaLink="true">https://priming.tistory.com/179</guid>
      <comments>https://priming.tistory.com/179#entry179comment</comments>
      <pubDate>Sat, 9 Nov 2024 22:22:11 +0900</pubDate>
    </item>
    <item>
      <title>[Java] 자바 int, char, string 배열을 문자열로 합치기</title>
      <link>https://priming.tistory.com/178</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;int 배열을 문자열로 합치기&amp;nbsp;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;StringBuilder 사용&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;StringBuilder를 사용해서 배열의 요소를 한 문자열로 합치는 방법입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1731066588261&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;int[] intArray = {1, 2, 3, 4, 5};

public static String combineIntArrayToString(int[] intArray) {
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i &amp;lt; intArray.length; i++) {
        sb.append(intArray[i]);
    }
    return sb.toString();
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Arrays 사용&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Arrays와 Collectors를 사용해서 배열의 요소를 한 문자열로 합치는 방법입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1731066796339&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;int[] intArray = {1, 2, 3, 4, 5};
String collectIntArray = Arrays.stream(intArray)
                                       .mapToObj(String::valueOf)
                                       .collect(Collectors.joining());&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;h2 data-ke-size=&quot;size26&quot;&gt;char 배열을 문자열로 합치기&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;String 생성자 사용&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;String 생성자를 사용해서 char 배열의 요소를 한 문자열로 합치는 방법입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1731067036088&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;char[] charArray = {'a', 'b', 'c', 'd', 'e'};
String collectCharArrayConstruct = new String(charArray);&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;h3 data-ke-size=&quot;size23&quot;&gt;StringBuilder 사용&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;StringBuilder를 사용해서 배열의 요소를 한 문자열로 합치는 방법입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1731066885374&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;char[] charArray = {'a', 'b', 'c', 'd', 'e'};

public static String combineCharArrayToString(char[] charArray) {
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i &amp;lt; charArray.length; i++) {
        sb.append(charArray[i]);
    }
    return sb.toString();
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;String.valueOf 사용&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;String.valueOf 메소드를 사용해서 char 배열의 요소를 한 문자열로 합치는 방법입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1731066980845&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;char[] charArray = {'a', 'b', 'c', 'd', 'e'};
String collectionCharArray = String.valueOf(charArray);&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&lt;!-- 중간-디스플레이-수평-1 --&gt; &lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block;&quot; data-ad-client=&quot;ca-pub-3244792068052716&quot; data-ad-slot=&quot;1629193049&quot; data-ad-format=&quot;auto&quot; data-full-width-responsive=&quot;true&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/div&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;h2 data-ke-size=&quot;size26&quot;&gt;String 배열을 문자열로 합치기&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;String.join 사용&lt;/h3&gt;
&lt;pre id=&quot;code_1731067172378&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;String[] stringArray = {&quot;a&quot;, &quot;b&quot;, &quot;c&quot;, &quot;d&quot;, &quot;e&quot;};
String collectStringArrayFromStringJoin = String.join(&quot;&quot;, stringArray);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;StringBuilder 사용&lt;/h3&gt;
&lt;pre id=&quot;code_1731067120241&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;String[] stringArray = {&quot;a&quot;, &quot;b&quot;, &quot;c&quot;, &quot;d&quot;, &quot;e&quot;};

public static String combineStringArrayToString(String[] stringArray) {
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i &amp;lt; stringArray.length; i++) {
        sb.append(stringArray[i]);
    }
    return sb.toString();
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Arrays 사용&lt;/h3&gt;
&lt;pre id=&quot;code_1731067227633&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;String[] stringArray = {&quot;a&quot;, &quot;b&quot;, &quot;c&quot;, &quot;d&quot;, &quot;e&quot;};
String collectStringArrayFromStream = Arrays.stream(stringArray)
                                                .collect(Collectors.joining());&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;</description>
      <category>Study/java</category>
      <category>오블완</category>
      <category>티스토리챌린지</category>
      <author>priming</author>
      <guid isPermaLink="true">https://priming.tistory.com/178</guid>
      <comments>https://priming.tistory.com/178#entry178comment</comments>
      <pubDate>Fri, 8 Nov 2024 21:00:24 +0900</pubDate>
    </item>
    <item>
      <title>[Java] 파일명 정규식 체크 방법 및 특수문자 포함 여부 확인 방법</title>
      <link>https://priming.tistory.com/177</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;파일명 정규식 체크 방법&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;보통 파일명은 xxx.jpg 혹은 xxx.txt 등 파일명과 파일 확장자가 반점을 기준으로 구분되어있는 형태입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파일명을 체크하는 정규식은 다음과 같습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1730977420961&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;^[^.]+\\.[a-zA-Z0-9]+$&lt;/code&gt;&lt;/pre&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&gt;^[^.]+: 파일명의 시작을 의미하며, 처음에 .이 나오지 않도록 설정합니다. 따라서 .로 시작하는 숨김 파일 등은 걸러집니다.&lt;/li&gt;
&lt;li&gt;\\.: 파일명과 확장자 사이에 정확히 하나의 .이 있어야 함을 나타냅니다.&lt;/li&gt;
&lt;li&gt;[a-zA-Z0-9]+$: 확장자 부분으로, 영문자와 숫자 조합으로 구성된 문자열이어야 하며, 파일명 끝에서 끝나야 함을 의미합니다.&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;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 정규식으로 파일명 여부를 체크하는 예제입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1730977610326&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;String fileName1 = &quot;image.jpg&quot;;
String fileName2 = &quot;image.png&quot;;
String fileName3 = &quot;video.mp4&quot;;
String fileName4 = &quot;text.txt&quot;;
String fileName5 = &quot;file&quot;;

String checkFileNameRegex = &quot;^[^.]+\\.[a-zA-Z0-9]+$&quot;;

System.out.println(fileName1 + &quot; : &quot; + fileName1.matches(checkFileNameRegex));
System.out.println(fileName2 + &quot; : &quot; + fileName2.matches(checkFileNameRegex));
System.out.println(fileName3 + &quot; : &quot; + fileName3.matches(checkFileNameRegex));
System.out.println(fileName4 + &quot; : &quot; + fileName4.matches(checkFileNameRegex));
System.out.println(fileName5 + &quot; : &quot; + fileName5.matches(checkFileNameRegex));&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;155&quot; data-origin-height=&quot;126&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bWqXBX/btsKAivbwLq/REq8mk3p7xpeC5iB4BFrAk/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bWqXBX/btsKAivbwLq/REq8mk3p7xpeC5iB4BFrAk/img.webp&quot; data-alt=&quot;정규식 파일명 여부 체크 결과&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bWqXBX/btsKAivbwLq/REq8mk3p7xpeC5iB4BFrAk/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbWqXBX%2FbtsKAivbwLq%2FREq8mk3p7xpeC5iB4BFrAk%2Fimg.webp&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; alt=&quot;정규식 파일명 여부 체크 결과&quot; loading=&quot;lazy&quot; width=&quot;155&quot; height=&quot;126&quot; data-origin-width=&quot;155&quot; data-origin-height=&quot;126&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;정규식 파일명 여부 체크 결과&lt;/figcaption&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;&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;div&gt;&lt;!-- 중간-디스플레이-수평-1 --&gt; &lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block;&quot; data-ad-client=&quot;ca-pub-3244792068052716&quot; data-ad-slot=&quot;1629193049&quot; data-ad-format=&quot;auto&quot; data-full-width-responsive=&quot;true&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/div&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;h2 data-ke-size=&quot;size26&quot;&gt;첨부 파일에 특수문자 포함 여부 체크 방법&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첨부 파일명에 특수문자가 있는지 여부를 체크하는 정규식입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1730977754244&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;^[a-zA-Z0-9]+\\.[a-zA-Z0-9]+$&lt;/code&gt;&lt;/pre&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&gt;^[a-zA-Z0-9]+: 파일명의 시작이며, 영문자와 숫자만 허용합니다. 특수문자가 포함되지 않도록 설정되어있습니다.&lt;/li&gt;
&lt;li&gt;\\.: 파일명과 확장자 사이에 정확히 하나의 .이 있어야 합니다.&lt;/li&gt;
&lt;li&gt;[a-zA-Z0-9]+$: 확장자 부분으로, 영문자와 숫자 조합으로 구성된 문자열이어야 하며, 파일명 끝에서 끝나야 합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;예제&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파일명에 특수문자가 있으면 false를 반환하는 예제입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1730977902988&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;String fileName1 = &quot;image$.jpg&quot;;
String fileName2 = &quot;im!age.png&quot;;
String fileName3 = &quot;video.mp4&quot;;
String fileName4 = &quot;text.txt&quot;;
String fileName5 = &quot;file.exe&quot;;

String notIncludeSpecialLetter = &quot;^[a-zA-Z0-9]+\\.[a-zA-Z0-9]+$&quot;;

System.out.println(fileName1 + &quot; : &quot; + fileName1.matches(notIncludeSpecialLetter));
System.out.println(fileName2 + &quot; : &quot; + fileName2.matches(notIncludeSpecialLetter));
System.out.println(fileName3 + &quot; : &quot; + fileName3.matches(notIncludeSpecialLetter));
System.out.println(fileName4 + &quot; : &quot; + fileName4.matches(notIncludeSpecialLetter));
System.out.println(fileName5 + &quot; : &quot; + fileName5.matches(notIncludeSpecialLetter));&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-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;164&quot; data-origin-height=&quot;124&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bLYdv6/btsKAI7ZUh0/U2D5yetzhKSQspPhYu1E71/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bLYdv6/btsKAI7ZUh0/U2D5yetzhKSQspPhYu1E71/img.webp&quot; data-alt=&quot;파일명 특수문자 포함 여부 체크&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bLYdv6/btsKAI7ZUh0/U2D5yetzhKSQspPhYu1E71/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbLYdv6%2FbtsKAI7ZUh0%2FU2D5yetzhKSQspPhYu1E71%2Fimg.webp&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; alt=&quot;파일명 특수문자 포함 여부 체크&quot; loading=&quot;lazy&quot; width=&quot;164&quot; height=&quot;124&quot; data-origin-width=&quot;164&quot; data-origin-height=&quot;124&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;파일명 특수문자 포함 여부 체크&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파일명에 특수문자가 포함되어있을 때 false를 반환합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;특정 파일 확장자만 허용하는 정규식&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;txt, jpg, png 등 특정 파일 확장자만 허용하는 정규식입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1730978006915&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# txt, jpg, png만 허용
^[a-zA-Z0-9-_]+\\.(txt|jpg|png)$&lt;/code&gt;&lt;/pre&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&gt;^[a-zA-Z0-9-_]+: 파일명의 시작을 나타내며, 영문 대소문자, 숫자, 하이픈(-), 언더스코어(_)로 이루어진 하나 이상의 문자여야 합니다.&lt;/li&gt;
&lt;li&gt;\\.: 파일명과 확장자 사이에 반드시 하나의 .이 있어야 합니다.&lt;/li&gt;
&lt;li&gt;(txt|jpg|png)$: 확장자로 .txt, .jpg, .png 중 하나만 허용하며, 문자열의 끝에서 종료됩니다.&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;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;예제&lt;/h3&gt;
&lt;pre id=&quot;code_1730978151691&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;String fileName1 = &quot;image.jpg&quot;;
String fileName2 = &quot;image.png&quot;;
String fileName3 = &quot;video.mp4&quot;;
String fileName4 = &quot;text.txt&quot;;
String fileName5 = &quot;image.gif&quot;;

String onlyJpgPngTxtRegex = &quot;^[a-zA-Z0-9-_]+\\.(txt|jpg|png)$&quot;;
System.out.println(fileName1 + &quot; : &quot; + fileName1.matches(onlyJpgPngTxtRegex));
System.out.println(fileName2 + &quot; : &quot; + fileName2.matches(onlyJpgPngTxtRegex));
System.out.println(fileName3 + &quot; : &quot; + fileName3.matches(onlyJpgPngTxtRegex));
System.out.println(fileName4 + &quot; : &quot; + fileName4.matches(onlyJpgPngTxtRegex));
System.out.println(fileName5 + &quot; : &quot; + fileName5.matches(onlyJpgPngTxtRegex));&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;147&quot; data-origin-height=&quot;111&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bIk46s/btsKzkna5yc/fmA7HktxSHEv9KLlRjmm4k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bIk46s/btsKzkna5yc/fmA7HktxSHEv9KLlRjmm4k/img.png&quot; data-alt=&quot;특정 확장자만 허용하는 정규식&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bIk46s/btsKzkna5yc/fmA7HktxSHEv9KLlRjmm4k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbIk46s%2FbtsKzkna5yc%2FfmA7HktxSHEv9KLlRjmm4k%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; alt=&quot;특정 확장자만 허용하는 정규식&quot; loading=&quot;lazy&quot; width=&quot;147&quot; height=&quot;111&quot; data-origin-width=&quot;147&quot; data-origin-height=&quot;111&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;특정 확장자만 허용하는 정규식&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 코드에서는 \\.(txt|jpg|png)$ 부분이 추가되어 특정 확장자만 허용하도록 설정했습니다.&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;</description>
      <category>Study/java</category>
      <category>java</category>
      <category>오블완</category>
      <category>정규식</category>
      <category>티스토리챌린지</category>
      <author>priming</author>
      <guid isPermaLink="true">https://priming.tistory.com/177</guid>
      <comments>https://priming.tistory.com/177#entry177comment</comments>
      <pubDate>Thu, 7 Nov 2024 20:17:58 +0900</pubDate>
    </item>
    <item>
      <title>[Java] 자바의 클래스, 메소드, 패키지 명명 규칙(Naming Convention) 정리</title>
      <link>https://priming.tistory.com/176</link>
      <description>&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;h2 data-ke-size=&quot;size26&quot;&gt;클래스&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;클래스 이름은 명사여야 하며, 각 단어의 첫 글자는 대문자로 시작해야 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex. Customer, AccountManager&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;메소드&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;메소드명은 동사로 시작해야 하며, 첫 글자는 소문자로, 이후 단어의 첫 글자는 대문자로 하는 카멜 표기법을 사용합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex. getName, printRecentReport&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;변수 이름&lt;/h2&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;ex. isAvailable, totalCount&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;상수&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;상수 이름은 모두 대문자로 작성하고 단어 간에는 언더바(_)를 사용하여 구분합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex. MAX_VALUE&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;패키지 이름&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;패키지 이름은 모두 소문자로 작성하며, 도메인 이름의 역순으로 작성합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex. 도메인이 dev.company.com 일 때, 패키지 명은 com.company.dev&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;인터페이스 이름&lt;/h2&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;ex. Runnable, Serializable&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;열거형(Enum)&lt;/h2&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;ex. 열거형 클래스 이름: Color, 열거형 상수: RED, GREEN, BLUE&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;제너릭 타입 변수&lt;/h2&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;E: 요소(Element)&lt;/li&gt;
&lt;li&gt;K: 키(Key)&lt;/li&gt;
&lt;li&gt;N: 숫자(Number)&lt;/li&gt;
&lt;li&gt;T: 타입(Type)&lt;/li&gt;
&lt;li&gt;V: 값(Value)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Study/java</category>
      <category>자바 네이밍 규칙</category>
      <category>자바 컨벤션 규칙</category>
      <author>priming</author>
      <guid isPermaLink="true">https://priming.tistory.com/176</guid>
      <comments>https://priming.tistory.com/176#entry176comment</comments>
      <pubDate>Sat, 24 Aug 2024 23:52:57 +0900</pubDate>
    </item>
    <item>
      <title>[Java] Character isDigit() 함수 숫자 체크 사용법</title>
      <link>https://priming.tistory.com/175</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;isDigit란?&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Character 클래스의 isDigit 메소드는 주어진 문자가 숫자인지 판별하는 메소드입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 메소드는 특정 문자가 숫자인지 확인하고 그 결과를 boolean 값으로 반환합니다.&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://docs.oracle.com/javase/8/docs/api/java/lang/Character.html#isDigit-char-&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;Java Character isDigit 공식문서 바로가기&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1724508868603&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;Character (Java Platform SE 8 )&quot; data-og-description=&quot;Returns the int value that the specified character (Unicode code point) represents. For example, the character '\u216C' (the Roman numeral fifty) will return an int with a value of 50. The letters A-Z in their uppercase ('\u0041' through '\u005A'), lowerca&quot; data-og-host=&quot;docs.oracle.com&quot; data-og-source-url=&quot;https://docs.oracle.com/javase/8/docs/api/java/lang/Character.html#isDigit-char-&quot; data-og-url=&quot;https://docs.oracle.com/javase/8/docs/api/java/lang/Character.html#isDigit-char-&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://docs.oracle.com/javase/8/docs/api/java/lang/Character.html#isDigit-char-&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://docs.oracle.com/javase/8/docs/api/java/lang/Character.html#isDigit-char-&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&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;Character (Java Platform SE 8 )&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Returns the int value that the specified character (Unicode code point) represents. For example, the character '\u216C' (the Roman numeral fifty) will return an int with a value of 50. The letters A-Z in their uppercase ('\u0041' through '\u005A'), lowerca&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;docs.oracle.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;h2 data-ke-size=&quot;size26&quot;&gt;isDigit 메소드 사용 예제&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;isDigit 사용 예제 코드입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1724508969922&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;char c1 = '5';
char c2 = 'a';
char c3 = '9';

System.out.println(&quot;c1 = &quot; + Character.isDigit(c1)); // true

System.out.println(&quot;c2 = &quot; + Character.isDigit(c2)); // false

System.out.println(&quot;c3 = &quot; + Character.isDigit(c3)); // true

System.out.println(&quot;' ' = &quot; + Character.isDigit(' ')); // false&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;163&quot; data-origin-height=&quot;97&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/SLxS0/btsJd5YK7lT/fszfKFk0Erjmh1kHwkUPek/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/SLxS0/btsJd5YK7lT/fszfKFk0Erjmh1kHwkUPek/img.webp&quot; data-alt=&quot;isDigit 사용 결과&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/SLxS0/btsJd5YK7lT/fszfKFk0Erjmh1kHwkUPek/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSLxS0%2FbtsJd5YK7lT%2FfszfKFk0Erjmh1kHwkUPek%2Fimg.webp&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; alt=&quot;isDigit 사용 결과&quot; loading=&quot;lazy&quot; width=&quot;163&quot; height=&quot;97&quot; data-origin-width=&quot;163&quot; data-origin-height=&quot;97&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;isDigit 사용 결과&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주어진 문자가 숫자인지 아닌지 판별하여 true나 false를 반환합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Study/java</category>
      <category>character</category>
      <category>isdigit</category>
      <category>java</category>
      <author>priming</author>
      <guid isPermaLink="true">https://priming.tistory.com/175</guid>
      <comments>https://priming.tistory.com/175#entry175comment</comments>
      <pubDate>Sat, 24 Aug 2024 23:29:12 +0900</pubDate>
    </item>
    <item>
      <title>[MySQL] DBeaver 로컬 데이터베이스 연결 및 생성 방법</title>
      <link>https://priming.tistory.com/174</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DBeaver는 데이터베이스를 관리하는 데 많이 사용되는 툴 중 하나입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DBeaver로 MySQL 서버를 연결하고 데이터베이스를 생성하는 방법에 대해 설명드리겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;DBeaver 로컬 MySQL 서버 연결 방법&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;윈도우 환경에서 DBeaver에 연결하는 방법입니다.&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;DBeaver를 사용하는데 있어서 OS에 따른 차이는 크게 없지만, 맥북 환경에서 연결을 진행한 과정을 보고싶으면 다음 글을 참고하시면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://priming.tistory.com/127&quot; rel=&quot;noopener&quot;&gt;[Mac] brew로 DBeaver Community 설치, MySQL DB 연결 방법&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1724466163991&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;[Mac] brew로 DBeaver Community 설치, MySQL DB 연결 방법&quot; data-og-description=&quot;맥북으로 DBeaver Community 프로그램을 설치하는 방법입니다.&amp;nbsp;DBeaver 설치 진행DBeaver 공식 홈페이지에서 설치를 위한 brew 명령어를 확인할 수 있습니다.DBeaver 공식 홈페이지 바로가기dmg 파일을 다운&quot; data-og-host=&quot;priming.tistory.com&quot; data-og-source-url=&quot;https://priming.tistory.com/127&quot; data-og-url=&quot;https://priming.tistory.com/127&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/Dc07U/hyWV0AGz5V/eBBEluMr9qPHtA3m85n1d0/img.png?width=800&amp;amp;height=350&amp;amp;face=0_0_800_350,https://scrap.kakaocdn.net/dn/cgo7fl/hyWSaya6AV/xXIujrYgjpGSy0kqxgpSW1/img.png?width=800&amp;amp;height=350&amp;amp;face=0_0_800_350&quot;&gt;&lt;a href=&quot;https://priming.tistory.com/127&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://priming.tistory.com/127&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/Dc07U/hyWV0AGz5V/eBBEluMr9qPHtA3m85n1d0/img.png?width=800&amp;amp;height=350&amp;amp;face=0_0_800_350,https://scrap.kakaocdn.net/dn/cgo7fl/hyWSaya6AV/xXIujrYgjpGSy0kqxgpSW1/img.png?width=800&amp;amp;height=350&amp;amp;face=0_0_800_350');&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;[Mac] brew로 DBeaver Community 설치, MySQL DB 연결 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;맥북으로 DBeaver Community 프로그램을 설치하는 방법입니다.&amp;nbsp;DBeaver 설치 진행DBeaver 공식 홈페이지에서 설치를 위한 brew 명령어를 확인할 수 있습니다.DBeaver 공식 홈페이지 바로가기dmg 파일을 다운&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;priming.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;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;윈도우 MySQL 서버 연결 진행 과정&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Connection to a database 창을 들어갑니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;단축키는 Ctrl + Shift + N입니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;920&quot; data-origin-height=&quot;533&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Dgi8A/btsJfleLqC6/TJarqWxnG00wlbkqTZUg11/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Dgi8A/btsJfleLqC6/TJarqWxnG00wlbkqTZUg11/img.webp&quot; data-alt=&quot;connection to a database 창&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Dgi8A/btsJfleLqC6/TJarqWxnG00wlbkqTZUg11/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDgi8A%2FbtsJfleLqC6%2FTJarqWxnG00wlbkqTZUg11%2Fimg.webp&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; alt=&quot;connection to a database 창&quot; loading=&quot;lazy&quot; width=&quot;800&quot; height=&quot;463&quot; data-origin-width=&quot;920&quot; data-origin-height=&quot;533&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;connection to a database 창&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 창에서 MySQL을 선택하고 다음을 클릭합니다.&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;915&quot; data-origin-height=&quot;616&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tLs1G/btsJdzTo3y6/AJt73HAmKUAH6uaEsyvKY1/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tLs1G/btsJdzTo3y6/AJt73HAmKUAH6uaEsyvKY1/img.webp&quot; data-alt=&quot;MySQL 서버 연결 정보 입력&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tLs1G/btsJdzTo3y6/AJt73HAmKUAH6uaEsyvKY1/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtLs1G%2FbtsJdzTo3y6%2FAJt73HAmKUAH6uaEsyvKY1%2Fimg.webp&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; alt=&quot;MySQL 서버 연결 정보 입력&quot; loading=&quot;lazy&quot; width=&quot;800&quot; height=&quot;539&quot; data-origin-width=&quot;915&quot; data-origin-height=&quot;616&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;MySQL 서버 연결 정보 입력&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;연결할 MySQL 서버 접속 정보를 입력합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;입력이 끝나면 왼쪽 하단에 Test connection 버튼으로 입력값이 유효한지 검사합니다.&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;497&quot; data-origin-height=&quot;464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Zerxn/btsJdoK2lyR/qL4aa9nK3VfSdtERs7kXHk/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Zerxn/btsJdoK2lyR/qL4aa9nK3VfSdtERs7kXHk/img.webp&quot; data-alt=&quot;MySQL 드라이버 설치&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Zerxn/btsJdoK2lyR/qL4aa9nK3VfSdtERs7kXHk/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZerxn%2FbtsJdoK2lyR%2FqL4aa9nK3VfSdtERs7kXHk%2Fimg.webp&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; alt=&quot;MySQL 드라이버 설치&quot; loading=&quot;lazy&quot; width=&quot;450&quot; height=&quot;420&quot; data-origin-width=&quot;497&quot; data-origin-height=&quot;464&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;MySQL 드라이버 설치&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MySQL 드라이버를 설치하라는 창이 나오면 아래 다운로드 버튼으로 다운받아주면 됩니다.&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;드라이버가 다운로드 되면 Test Connection 결과가 나옵니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;407&quot; data-origin-height=&quot;195&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ta6mm/btsJfivyNB2/j3wj8AkR8BdWW5qXgcss2k/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ta6mm/btsJfivyNB2/j3wj8AkR8BdWW5qXgcss2k/img.webp&quot; data-alt=&quot;Test Connection 성공&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ta6mm/btsJfivyNB2/j3wj8AkR8BdWW5qXgcss2k/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fta6mm%2FbtsJfivyNB2%2Fj3wj8AkR8BdWW5qXgcss2k%2Fimg.webp&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; alt=&quot;Test Connection 성공&quot; loading=&quot;lazy&quot; width=&quot;407&quot; height=&quot;195&quot; data-origin-width=&quot;407&quot; data-origin-height=&quot;195&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Test Connection 성공&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;public key retrieval is not allowed 오류 메시지가 발생하면 Driver Setting 탭에서 allowPublicKeyRetrieval = true, useSSL = false로 설정하면 됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;929&quot; data-origin-height=&quot;538&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b4fnNI/btsJen5qthK/KPfbHXt9YZ2F7zSUqT0Gz0/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b4fnNI/btsJen5qthK/KPfbHXt9YZ2F7zSUqT0Gz0/img.webp&quot; data-alt=&quot;public key retrieval is not allowed 오류 해결 방법&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b4fnNI/btsJen5qthK/KPfbHXt9YZ2F7zSUqT0Gz0/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb4fnNI%2FbtsJen5qthK%2FKPfbHXt9YZ2F7zSUqT0Gz0%2Fimg.webp&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; alt=&quot;public key retrieval is not allowed 오류 해결 방법&quot; loading=&quot;lazy&quot; width=&quot;800&quot; height=&quot;463&quot; data-origin-width=&quot;929&quot; data-origin-height=&quot;538&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;public key retrieval is not allowed 오류 해결 방법&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&lt;!-- 중간-디스플레이-수평-1 --&gt; &lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block;&quot; data-ad-client=&quot;ca-pub-3244792068052716&quot; data-ad-slot=&quot;1629193049&quot; data-ad-format=&quot;auto&quot; data-full-width-responsive=&quot;true&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/div&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;h2 data-ke-size=&quot;size26&quot;&gt;DBeaver 로컬 DB 생성 방법&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DBeaver로 MySQL 서버에 데이터베이스를 생성하는 방법은 간단합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;395&quot; data-origin-height=&quot;287&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bV71ti/btsJfGbR6ml/B8BFLkmeY0bKywZ5XplxBK/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bV71ti/btsJfGbR6ml/B8BFLkmeY0bKywZ5XplxBK/img.webp&quot; data-alt=&quot;DBeaver로 데이터베이스 생성 방법&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bV71ti/btsJfGbR6ml/B8BFLkmeY0bKywZ5XplxBK/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbV71ti%2FbtsJfGbR6ml%2FB8BFLkmeY0bKywZ5XplxBK%2Fimg.webp&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; alt=&quot;DBeaver로 데이터베이스 생성&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;291&quot; data-origin-width=&quot;395&quot; data-origin-height=&quot;287&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;DBeaver로 데이터베이스 생성 방법&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Alt + INSERT 버튼이나 Database 텍스트에 우클릭을 하면 데이터베이스를 생성할 수 있는 메뉴가 나옵니다.&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;301&quot; data-origin-height=&quot;182&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/shdCt/btsJeTJP19h/aHv9RPXMPWHVoclxZoxYuk/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/shdCt/btsJeTJP19h/aHv9RPXMPWHVoclxZoxYuk/img.webp&quot; data-alt=&quot;데이터베이스 생성하기&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/shdCt/btsJeTJP19h/aHv9RPXMPWHVoclxZoxYuk/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FshdCt%2FbtsJeTJP19h%2FaHv9RPXMPWHVoclxZoxYuk%2Fimg.webp&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; alt=&quot;데이터베이스 생성하기&quot; loading=&quot;lazy&quot; width=&quot;301&quot; height=&quot;182&quot; data-origin-width=&quot;301&quot; data-origin-height=&quot;182&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;데이터베이스 생성하기&lt;/figcaption&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;Charset이나 Collation도 원하는 것을 선택하시면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;로컬에서 공부용으로 사용하는 경우에는 기본적으로 설정된 Charset과 Collation을 사용하셔도 무방합니다.&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;222&quot; data-origin-height=&quot;308&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/PQL7G/btsJdP2MEO2/TFkVZbBHkyDSnEIeikD9uK/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/PQL7G/btsJdP2MEO2/TFkVZbBHkyDSnEIeikD9uK/img.webp&quot; data-alt=&quot;데이터베이스 생성 완료&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/PQL7G/btsJdP2MEO2/TFkVZbBHkyDSnEIeikD9uK/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPQL7G%2FbtsJdP2MEO2%2FTFkVZbBHkyDSnEIeikD9uK%2Fimg.webp&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; alt=&quot;데이터베이스 생성 완료&quot; loading=&quot;lazy&quot; width=&quot;222&quot; height=&quot;308&quot; data-origin-width=&quot;222&quot; data-origin-height=&quot;308&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;데이터베이스 생성 완료&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터베이스 생성이 완료되었습니다.&lt;/p&gt;</description>
      <category>Study/DB</category>
      <category>DBeaver</category>
      <category>MySQL</category>
      <author>priming</author>
      <guid isPermaLink="true">https://priming.tistory.com/174</guid>
      <comments>https://priming.tistory.com/174#entry174comment</comments>
      <pubDate>Sat, 24 Aug 2024 11:46:56 +0900</pubDate>
    </item>
    <item>
      <title>[Git] git remote add origin 명령어 의미와 git remote 명령어 사용법</title>
      <link>https://priming.tistory.com/173</link>
      <description>&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;h2 data-ke-size=&quot;size26&quot;&gt;git remote란?&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;git remote 명령어는 원격 저장소를 관리하는 명령어입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원격 저장소는 Github, Gitlab, Bitbucket과 같은 플랫폼에서 호스팅된 저장소를 의미합니다.&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://git-scm.com/docs/git-remote&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;git remote 명령어 공식문서 바로가기&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1724463082546&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;Git - git-remote Documentation&quot; data-og-description=&quot;With no arguments, shows a list of existing remotes. Several subcommands are available to perform operations on the remotes. add Add a remote named for the repository at . The command git fetch can then be used to create and update remote-tracking branches&quot; data-og-host=&quot;git-scm.com&quot; data-og-source-url=&quot;https://git-scm.com/docs/git-remote&quot; data-og-url=&quot;https://git-scm.com/docs/git-remote&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://git-scm.com/docs/git-remote&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://git-scm.com/docs/git-remote&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&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;Git - git-remote Documentation&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;With no arguments, shows a list of existing remotes. Several subcommands are available to perform operations on the remotes. add Add a remote named for the repository at . The command git fetch can then be used to create and update remote-tracking branches&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;git-scm.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;주요 git remote 명령어는 다음과 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;git remote -v&lt;/h2&gt;
&lt;pre id=&quot;code_1724463584069&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;git remote -v&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;510&quot; data-origin-height=&quot;77&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tXdus/btsJdoRMqbA/dSVx8Fq0zRynRYcAWfsKy0/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tXdus/btsJdoRMqbA/dSVx8Fq0zRynRYcAWfsKy0/img.webp&quot; data-alt=&quot;git remove -v 명령어 사용 결과&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tXdus/btsJdoRMqbA/dSVx8Fq0zRynRYcAWfsKy0/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtXdus%2FbtsJdoRMqbA%2FdSVx8Fq0zRynRYcAWfsKy0%2Fimg.webp&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; alt=&quot;git remove -v 명령어 사용 결과&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;75&quot; data-origin-width=&quot;510&quot; data-origin-height=&quot;77&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;git remove -v 명령어 사용 결과&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;git remote -v 명령어는 현재 로컬 저장소에 설정되어있는 원격 저장소 목록과 URL을 확인할 수 있는 명령어입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-v 옵션을 주게 되면 fetch와 push에 사용되는 URL이 함께 표시됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;git remote add&amp;nbsp;&lt;/h2&gt;
&lt;pre id=&quot;code_1724463793677&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;git remote add &amp;lt;name&amp;gt; &amp;lt;url&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;520&quot; data-origin-height=&quot;144&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c5Mif5/btsJeOIuds7/BNkEuWFlNmXtQXoePaQKS0/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c5Mif5/btsJeOIuds7/BNkEuWFlNmXtQXoePaQKS0/img.webp&quot; data-alt=&quot;git remote add 명령어 사용 결과&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c5Mif5/btsJeOIuds7/BNkEuWFlNmXtQXoePaQKS0/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc5Mif5%2FbtsJeOIuds7%2FBNkEuWFlNmXtQXoePaQKS0%2Fimg.webp&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; alt=&quot;git remote add 명령어 사용 결과&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;138&quot; data-origin-width=&quot;520&quot; data-origin-height=&quot;144&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;git remote add 명령어 사용 결과&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;git remote add 명령어는 새로운 원격 저장소를 추가할 때 사용합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;많이 사용되는 git remote add origin 명령어는 새로운 원격 저장소의 이름을 origin으로 한다는 의미입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;origin 말고도 origin2 같이 다른 이름을 사용해도 됩니다.&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;div&gt;&lt;!-- 중간-디스플레이-수평-1 --&gt; &lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block;&quot; data-ad-client=&quot;ca-pub-3244792068052716&quot; data-ad-slot=&quot;1629193049&quot; data-ad-format=&quot;auto&quot; data-full-width-responsive=&quot;true&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/div&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;h2 data-ke-size=&quot;size26&quot;&gt;git remote remove&lt;/h2&gt;
&lt;pre id=&quot;code_1724464259097&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;git remote remove &amp;lt;name&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;522&quot; data-origin-height=&quot;110&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/diAg7n/btsJfcoMYTz/K6uws3fExUKi2cjtCoeKu1/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/diAg7n/btsJfcoMYTz/K6uws3fExUKi2cjtCoeKu1/img.webp&quot; data-alt=&quot;git remote remove 명령어 사용 결과&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/diAg7n/btsJfcoMYTz/K6uws3fExUKi2cjtCoeKu1/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdiAg7n%2FbtsJfcoMYTz%2FK6uws3fExUKi2cjtCoeKu1%2Fimg.webp&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; alt=&quot;git remote remove 명령어 사용 결과&quot; loading=&quot;lazy&quot; width=&quot;522&quot; height=&quot;110&quot; data-origin-width=&quot;522&quot; data-origin-height=&quot;110&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;git remote remove 명령어 사용 결과&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;git remote remove 명령어는 기존에 설정된 원격 저장소를 제거할 때 사용합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;git remote rename&lt;/h2&gt;
&lt;pre id=&quot;code_1724464292898&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;git remote rename &amp;lt;old name&amp;gt; &amp;lt;new name&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;513&quot; data-origin-height=&quot;141&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dnGhmI/btsJdxnJiYr/UCitLZWYs4qDhA1pOmFyC0/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dnGhmI/btsJdxnJiYr/UCitLZWYs4qDhA1pOmFyC0/img.webp&quot; data-alt=&quot;git remote rename 명령어 사용 결과&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dnGhmI/btsJdxnJiYr/UCitLZWYs4qDhA1pOmFyC0/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdnGhmI%2FbtsJdxnJiYr%2FUCitLZWYs4qDhA1pOmFyC0%2Fimg.webp&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; alt=&quot;git remote rename 명령어 사용 결과&quot; loading=&quot;lazy&quot; width=&quot;513&quot; height=&quot;141&quot; data-origin-width=&quot;513&quot; data-origin-height=&quot;141&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;git remote rename 명령어 사용 결과&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;git remote rename 명령어는 원격 저장소의 이름을 변경할 때 사용합니다.&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;h2 data-ke-size=&quot;size26&quot;&gt;git remote show&lt;/h2&gt;
&lt;pre id=&quot;code_1724464315223&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;git remote show &amp;lt;name&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;505&quot; data-origin-height=&quot;177&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mtlhE/btsJemZ4fCO/ka7fcHupB8oZU4i9in4ydk/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mtlhE/btsJemZ4fCO/ka7fcHupB8oZU4i9in4ydk/img.webp&quot; data-alt=&quot;git remote show 명령어 사용 결과&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mtlhE/btsJemZ4fCO/ka7fcHupB8oZU4i9in4ydk/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmtlhE%2FbtsJemZ4fCO%2Fka7fcHupB8oZU4i9in4ydk%2Fimg.webp&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; alt=&quot;git remote show 명령어 사용 결과&quot; loading=&quot;lazy&quot; width=&quot;505&quot; height=&quot;177&quot; data-origin-width=&quot;505&quot; data-origin-height=&quot;177&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;git remote show 명령어 사용 결과&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;git remote show 명령어는 특정 원격 저장소에 대한 정보를 확인할 때 사용됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 원격 저장소에 대한 fetch, push url 및 브랜치 등의 정보가 표시됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;git remote set-url&lt;/h2&gt;
&lt;pre id=&quot;code_1724464344366&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;git remote set-url &amp;lt;name&amp;gt; &amp;lt;new url&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;592&quot; data-origin-height=&quot;142&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/TJek6/btsJfkz9LPK/bLOeIEnDrULDPZJl34cjr0/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/TJek6/btsJfkz9LPK/bLOeIEnDrULDPZJl34cjr0/img.webp&quot; data-alt=&quot;git remote set-url 명령어 사용 결과&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/TJek6/btsJfkz9LPK/bLOeIEnDrULDPZJl34cjr0/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTJek6%2FbtsJfkz9LPK%2FbLOeIEnDrULDPZJl34cjr0%2Fimg.webp&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; alt=&quot;git remote set-url 명령어 사용 결과&quot; loading=&quot;lazy&quot; width=&quot;592&quot; height=&quot;142&quot; data-origin-width=&quot;592&quot; data-origin-height=&quot;142&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;git remote set-url 명령어 사용 결과&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;git remote set-url 명령어는 기존 원격 저장소의 URL을 변경할 때 사용됩니다.&lt;/p&gt;</description>
      <category>Study/git</category>
      <category>GIT</category>
      <category>git remote</category>
      <category>git remote add origin</category>
      <author>priming</author>
      <guid isPermaLink="true">https://priming.tistory.com/173</guid>
      <comments>https://priming.tistory.com/173#entry173comment</comments>
      <pubDate>Sat, 24 Aug 2024 11:05:56 +0900</pubDate>
    </item>
    <item>
      <title>[Java] StringBuilder 초기화 사용법, 공백 추가 방법 정리</title>
      <link>https://priming.tistory.com/172</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자바 StringBuilder 객체를 초기화하는 방법과 StringBuilder에 공백을 추가하는 방법입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;StringBuilder 초기화 방법&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;StringBuilder를 초기화하는 여러가지 방법입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1723876829276&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// StringBuilder 초기화
StringBuilder sb = new StringBuilder();

sb.append(&quot;Before Clear&quot;);
System.out.println(&quot;sb = &quot; + sb);

// 새 객체를 선언하여 초기화
sb = new StringBuilder();
System.out.println(&quot;sb = &quot; + sb);

sb.append(&quot;Before Set Length&quot;);
System.out.println(&quot;sb = &quot; + sb);

// 길이 재할당하여 초기화
sb.setLength(0);
System.out.println(&quot;sb = &quot; + sb);

// deleteAt으로 초기화
sb.append(&quot;Before DeleteAt&quot;);
System.out.println(&quot;sb = &quot; + sb);
sb.delete(0, sb.length());&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;첫번째 방법은 new StringBuilder()로 새로운 객체를 생성해서 변수에 할당하는 방법입니다.&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;세번째는 StringBuilder에 deleteAt 메소드를 사용해서 데이터를 전부 삭제하는 방법입니다.&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;div&gt;&lt;!-- 중간-디스플레이-수평-1 --&gt; &lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block;&quot; data-ad-client=&quot;ca-pub-3244792068052716&quot; data-ad-slot=&quot;1629193049&quot; data-ad-format=&quot;auto&quot; data-full-width-responsive=&quot;true&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/div&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;h2 data-ke-size=&quot;size26&quot;&gt;StringBuilder 공백 추가 방법&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;StringBuilder에 공백을 추가하는 여러가지 방법입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1723877249403&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;StringBuilder sb = new StringBuilder();
sb.append(&quot;Hello&quot;);
sb.append(&quot; &quot;); // 문자열 공백(String)
sb.append(&quot;World&quot;);
sb.append(' '); // 문자 공백(char)
sb.append(&quot;!!&quot;);
sb.append('\u0020');
sb.append(&quot;!!&quot;); // 유니코드 공백 문자
System.out.println(&quot;sb = &quot; + sb); // sb = Hello World !! !!&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;셋 다 공백을 추가하기 때문에 결과는 같습니다.&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;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://priming.tistory.com/168&quot; rel=&quot;noopener&quot;&gt;[Java] StringBuilder 문자열 찾기, 특정 문자 제거 사용 방법&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1723877377539&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] StringBuilder 문자열 찾기, 특정 문자 제거 사용 방법&quot; data-og-description=&quot;자바의 StringBuilder를 사용할 때 특정 문자열을 찾거나 제거하는 방법입니다.&amp;nbsp;StringBuilder 문자열 찾기StringBuilder 객체 안에 있는 문자열의 위치를 찾는 예제 코드입니다.StringBuilder sb = new StringBuilder&quot; data-og-host=&quot;priming.tistory.com&quot; data-og-source-url=&quot;https://priming.tistory.com/168&quot; data-og-url=&quot;https://priming.tistory.com/168&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/b2AlNY/hyWOnkbaES/xnThxjgKi12aLcyUKW9KJ0/img.jpg?width=363&amp;amp;height=49&amp;amp;face=0_0_363_49,https://scrap.kakaocdn.net/dn/GOpWX/hyWOphZoVX/HkmMdV9FBqtmFJkl6Uf8x0/img.jpg?width=363&amp;amp;height=49&amp;amp;face=0_0_363_49&quot;&gt;&lt;a href=&quot;https://priming.tistory.com/168&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://priming.tistory.com/168&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/b2AlNY/hyWOnkbaES/xnThxjgKi12aLcyUKW9KJ0/img.jpg?width=363&amp;amp;height=49&amp;amp;face=0_0_363_49,https://scrap.kakaocdn.net/dn/GOpWX/hyWOphZoVX/HkmMdV9FBqtmFJkl6Uf8x0/img.jpg?width=363&amp;amp;height=49&amp;amp;face=0_0_363_49');&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] StringBuilder 문자열 찾기, 특정 문자 제거 사용 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;자바의 StringBuilder를 사용할 때 특정 문자열을 찾거나 제거하는 방법입니다.&amp;nbsp;StringBuilder 문자열 찾기StringBuilder 객체 안에 있는 문자열의 위치를 찾는 예제 코드입니다.StringBuilder sb = new StringBuilder&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;priming.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>
      <category>Study/java</category>
      <category>java</category>
      <category>StringBuilder</category>
      <author>priming</author>
      <guid isPermaLink="true">https://priming.tistory.com/172</guid>
      <comments>https://priming.tistory.com/172#entry172comment</comments>
      <pubDate>Sat, 17 Aug 2024 15:49:57 +0900</pubDate>
    </item>
    <item>
      <title>[Java] Arrays.copyOf 깊은 복사 및 copyOfRange 사용법</title>
      <link>https://priming.tistory.com/171</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Arrays.copyOf란?&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Arrays.copyOf는 배열을 복사하는 데 사용되는 메소드입니다.&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;기본값은 정수형은 0, 실수형은 0.0, 문자형은 공백, 객체형은 null로 들어갑니다.&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://docs.oracle.com/javase/8/docs/api/java/util/Arrays.html#copyOf-T:A-int-&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;Java 8 Arrays.copyOf 공식 문서 바로가기&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1723811201419&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;Arrays (Java Platform SE 8 )&quot; data-og-description=&quot;parallelPrefix public static&amp;nbsp; &amp;nbsp;void&amp;nbsp;parallelPrefix(T[]&amp;nbsp;array, BinaryOperator &amp;nbsp;op) Cumulates, in parallel, each element of the given array in place, using the supplied function. For example if the array initially holds [2, 1, 0, 3] and the operation pe&quot; data-og-host=&quot;docs.oracle.com&quot; data-og-source-url=&quot;https://docs.oracle.com/javase/8/docs/api/java/util/Arrays.html#copyOf-T:A-int-&quot; data-og-url=&quot;https://docs.oracle.com/javase/8/docs/api/java/util/Arrays.html#copyOf-T:A-int-&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://docs.oracle.com/javase/8/docs/api/java/util/Arrays.html#copyOf-T:A-int-&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://docs.oracle.com/javase/8/docs/api/java/util/Arrays.html#copyOf-T:A-int-&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&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;Arrays (Java Platform SE 8 )&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;parallelPrefix public static&amp;nbsp; &amp;nbsp;void&amp;nbsp;parallelPrefix(T[]&amp;nbsp;array, BinaryOperator &amp;nbsp;op) Cumulates, in parallel, each element of the given array in place, using the supplied function. For example if the array initially holds [2, 1, 0, 3] and the operation pe&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;docs.oracle.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;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Arrays.copyOf 깊은 복사 사용 방법&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일반적으로 배열을 복사하면 주소 값만 복사되기 때문에 원본이나 수정본을 수정하면 원본과 수정본 둘다 값이 변경됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Arrays.copyOf 메소드를 사용하면 깊은 복사가 가능합니다.&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;다음은 Arrays.copyOf로 String 배열을 복사하는 예제 코드입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1723812140539&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;String[] original = {&quot;apple&quot;, &quot;banana&quot;};
String[] copy = Arrays.copyOf(original, original.length);
copy[0] = &quot;cherry&quot;;
System.out.println(&quot;original = &quot; + Arrays.toString(original));
System.out.println(&quot;copy = &quot; + Arrays.toString(copy));&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;309&quot; data-origin-height=&quot;70&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bt4Z0M/btsI7rsE1gf/Llm7xZhyOa8Gj8OUzFEKaK/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bt4Z0M/btsI7rsE1gf/Llm7xZhyOa8Gj8OUzFEKaK/img.webp&quot; data-alt=&quot;Arrays.copyOf 사용 결과&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bt4Z0M/btsI7rsE1gf/Llm7xZhyOa8Gj8OUzFEKaK/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbt4Z0M%2FbtsI7rsE1gf%2FLlm7xZhyOa8Gj8OUzFEKaK%2Fimg.webp&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; alt=&quot;Arrays.copyOf 사용 결과&quot; loading=&quot;lazy&quot; width=&quot;309&quot; height=&quot;70&quot; data-origin-width=&quot;309&quot; data-origin-height=&quot;70&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Arrays.copyOf 사용 결과&lt;/figcaption&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&lt;!-- 중간-디스플레이-수평-1 --&gt; &lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block;&quot; data-ad-client=&quot;ca-pub-3244792068052716&quot; data-ad-slot=&quot;1629193049&quot; data-ad-format=&quot;auto&quot; data-full-width-responsive=&quot;true&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/div&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;h2 data-ke-size=&quot;size26&quot;&gt;Arrays.copyOfRange 사용법&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;copyOfRange는 배열을 복사할 때 범위를 지정해서 복사할 수 있습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1723812630444&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;int[] original = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int[] copy = Arrays.copyOfRange(original, 2, 5);
System.out.println(&quot;original = &quot; + Arrays.toString(original));
System.out.println(&quot;copy = &quot; + Arrays.toString(copy));&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;540&quot; data-origin-height=&quot;75&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Lh6PA/btsI7eUI92m/zEDtN2p3KgWXdpQmxX6NNk/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Lh6PA/btsI7eUI92m/zEDtN2p3KgWXdpQmxX6NNk/img.webp&quot; data-alt=&quot;Arrays.copyOfRange 사용 결과&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Lh6PA/btsI7eUI92m/zEDtN2p3KgWXdpQmxX6NNk/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLh6PA%2FbtsI7eUI92m%2FzEDtN2p3KgWXdpQmxX6NNk%2Fimg.webp&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; alt=&quot;Arrays.copyOfRange 사용 결과&quot; loading=&quot;lazy&quot; width=&quot;540&quot; height=&quot;75&quot; data-origin-width=&quot;540&quot; data-origin-height=&quot;75&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Arrays.copyOfRange 사용 결과&lt;/figcaption&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;&amp;nbsp;&lt;/p&gt;</description>
      <category>Study/java</category>
      <category>Arrays</category>
      <category>copyof</category>
      <category>copyOfRange</category>
      <category>java</category>
      <author>priming</author>
      <guid isPermaLink="true">https://priming.tistory.com/171</guid>
      <comments>https://priming.tistory.com/171#entry171comment</comments>
      <pubDate>Fri, 16 Aug 2024 21:53:01 +0900</pubDate>
    </item>
    <item>
      <title>[MySQL] SELECT LIKE 절 사용 방법 정리</title>
      <link>https://priming.tistory.com/170</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MySQL의 LIKE 절을 사용하는 방법입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;LIKE란?&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MySQL에서 LIKE 연산자는 문자열 패턴을 검색할 때 사용하는 연산자입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주로 WHERE 절과 함께 사용되며, 특정 패턴과 일치하는 데이터를 조회하는 데 사용됩니다.&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;LIKE 연산자는 와일드카드(%, _)와 함께 사용되며, 이 와일드카드는 특정 패턴을 표현하는 데 사용됩니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;%: 0개 이상의 임의의 문자열을 의미합니다. 예를 들어, LIKE 'A%'는 'A'로 시작하는 모든 문자열을 찾습니다.&lt;/li&gt;
&lt;li&gt;_: 정확히 하나의 임의의 문자를 의미합니다. 예를 들어, LIKE 'A_'는 'A' 다음에 정확히 한 글자가 오는 문자열을 찾습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;LIKE, NOT LIKE 기본 사용법&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;LIKE는 특정 패턴과 일치하는 데이터를 찾을 수 있고, NOT LIKE는 특정 패턴과 일치하지 않는 데이터를 찾을 수 있습니다.&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;LIKE&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음은 LIKE 절 예시 쿼리입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1723778378999&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# A로 시작하는 도시명
select *
from city
where Name like 'A%';

# A로 끝나는 도시명
select *
from city
where Name like '%A';

# A를 포함하는 도시명
select *
from city
where Name like '%A%';&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;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;div&gt;&lt;!-- 중간-디스플레이-수평-1 --&gt; &lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block;&quot; data-ad-client=&quot;ca-pub-3244792068052716&quot; data-ad-slot=&quot;1629193049&quot; data-ad-format=&quot;auto&quot; data-full-width-responsive=&quot;true&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/div&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;h3 data-ke-size=&quot;size23&quot;&gt;NOT LIKE&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;NOT LIKE를 사용하면 특정 문자로 시작하지 않거나, 끝나지 않거나, 포함하지 않는 데이터를 찾게 됩니다.&lt;/p&gt;
&lt;pre id=&quot;code_1723778493508&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# A로 시작하지 않는 도시명
select *
from city
where Name not like 'A%';

# A로 끝나지 않는 도시명
select *
from city
where Name not like '%A';

# A를 포함하지 않는 도시명
select *
from city
where Name not like '%A%';&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;h2 data-ke-size=&quot;size26&quot;&gt;LIKE, NOT LIKE 여러개 사용법&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;LIKE 절을 여러개 사용하는 방법은 다양합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;간단하게는 OR이나 AND 연산자로 묶는 방법이 있고, REGEXP 함수를 사용하는 방법이 있습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;OR, AND&lt;/h3&gt;
&lt;pre id=&quot;code_1723778655239&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# A로 시작하고 A로 끝나는 데이터(AND)
select *
from city
where Name like 'A%'
and NAme like '%A';

# A로 시작하거나 B로 시작하는 데이터(OR)
select *
from city
where Name like 'A%'
or Name like 'B%';&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;h3 data-ke-size=&quot;size23&quot;&gt;REGEXP 함수&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;REGEXP 함수를 사용한 예제 쿼리입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1723778912687&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# REGEXP 함수
select *
from city
where Name regexp('A|B|C');&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;pre id=&quot;code_1723779024047&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select *
from city
where Name like '%A%'
or Name like '%B%'
or Name like '%C%';&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;REGEXP는 정규식을 사용하여 데이터를 찾는 함수로, 정규식을 사용하여 LIKE 뿐만 아니라 다양한 조건으로 데이터를 찾을 수 있습니다.&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;div&gt;&lt;!-- 중간-디스플레이-수평-2 --&gt; &lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block;&quot; data-ad-client=&quot;ca-pub-3244792068052716&quot; data-ad-slot=&quot;2486912905&quot; data-ad-format=&quot;auto&quot; data-full-width-responsive=&quot;true&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/div&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;h2 data-ke-size=&quot;size26&quot;&gt;LIKE 특수문자 적용하기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;LIKE 절에는 일부 특수문자(언더바_, 퍼센트%)를 그대로 사용할 수 없습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 이스케이프 처리를 해야 합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1723779288555&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# %를 포함한 데이터 찾기
select *
from tb_1
where name like '%\%%' escape '\\';&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;%나 _(underscore) 문자는 like절에서 특수한 기능으로 사용되는 문자라서 그냥 사용하면 안됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 escape 절을 추가해서 사용해야 합니다.&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;escape 절은 escape 절 뒤에 오는 문자의 바로 뒤에 오는 문자는 문자로 처리해달라는 의미입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위의 예제 쿼리를 보면 escape '\\'로 사용하고 있는데, 이는 역슬래시 역시 특수한 문자여서 한개만 사용하면 오류가 발생하기 때문에 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;&amp;nbsp;&lt;/p&gt;</description>
      <category>Study/DB</category>
      <category>Like</category>
      <category>MySQL</category>
      <category>select</category>
      <author>priming</author>
      <guid isPermaLink="true">https://priming.tistory.com/170</guid>
      <comments>https://priming.tistory.com/170#entry170comment</comments>
      <pubDate>Fri, 16 Aug 2024 12:41:11 +0900</pubDate>
    </item>
    <item>
      <title>[Java] Spring @RequestParam 배열, 리스트 값 받기</title>
      <link>https://priming.tistory.com/169</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Spring의 @RequestParam으로 배열이나 리스트 값 받는 방법입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;@RequestParam 배열 받기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;RequestParam을 사용해서 배열을 받는 예제입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1723770915257&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@GetMapping(&quot;/request-param&quot;)
public String getRequestParamArray(@RequestParam String[] values) {
    return Arrays.toString(values);
}&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;배열 변수에 @RequestParam을 추가하면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;요청할 때는 다음과 같이 요청합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1723770979247&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;GET http://localhost:8080/request-param?values=123&amp;amp;values=456&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;@RequestParam 리스트 받기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;리스트를 받을 때도 동일합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1723771107976&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@GetMapping(&quot;/request-param/list&quot;)
public String getRequestParamList(@RequestParam List&amp;lt;String&amp;gt; values) {
    return values.toString();
}&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;pre id=&quot;code_1723771087874&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;GET http://localhost:8080/request-param/list?values=123&amp;amp;values=456&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Study/spring</category>
      <category>RequestParam</category>
      <category>Spring</category>
      <author>priming</author>
      <guid isPermaLink="true">https://priming.tistory.com/169</guid>
      <comments>https://priming.tistory.com/169#entry169comment</comments>
      <pubDate>Fri, 16 Aug 2024 10:18:59 +0900</pubDate>
    </item>
    <item>
      <title>[Java] StringBuilder 문자열 찾기, 특정 문자 제거 사용 방법</title>
      <link>https://priming.tistory.com/168</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자바의 StringBuilder를 사용할 때 특정 문자열을 찾거나 제거하는 방법입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;StringBuilder 문자열 찾기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;StringBuilder 객체 안에 있는 문자열의 위치를 찾는 예제 코드입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1723723608197&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;StringBuilder sb = new StringBuilder(&quot;Hello, World!&quot;);

// 특정 문자 'W'의 인덱스를 찾기
int index = sb.indexOf(&quot;W&quot;);

if (index != -1) {
    System.out.println(&quot;Character 'W' found at index: &quot; + index);
} else {
    System.out.println(&quot;Character 'W' not found&quot;);
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;363&quot; data-origin-height=&quot;49&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b46XzR/btsI4OCA3mT/U9oe2H9U3gYKkkKkpeqK4k/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b46XzR/btsI4OCA3mT/U9oe2H9U3gYKkkKkpeqK4k/img.webp&quot; data-alt=&quot;StringBuilder 객체 문자열 찾기 결과&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b46XzR/btsI4OCA3mT/U9oe2H9U3gYKkkKkpeqK4k/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb46XzR%2FbtsI4OCA3mT%2FU9oe2H9U3gYKkkKkpeqK4k%2Fimg.webp&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; alt=&quot;StringBuilder 객체 문자열 찾기 결과&quot; loading=&quot;lazy&quot; width=&quot;363&quot; height=&quot;49&quot; data-origin-width=&quot;363&quot; data-origin-height=&quot;49&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;StringBuilder 객체 문자열 찾기 결과&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;StringBuilder의 indexOf 메소드를 사용하여 특정 문자열의 위치를 확인하는 코드입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예제 코드를 실행하면 &quot;W&quot; 문자열의 위치 7을 확인할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;StringBuilder 특정 문자 제거&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;StringBuilder 객체에서 특정한 문자를 제거하는 방법입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1723723894012&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;StringBuilder sb = new StringBuilder(&quot;Hello, World!&quot;);

// 문자 'o'를 제거하기 (첫 번째 'o'만 제거)
int index = sb.indexOf(&quot;o&quot;);
if (index != -1) {
    sb.deleteCharAt(index);
}

System.out.println(&quot;After removing 'o': &quot; + sb.toString());&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;376&quot; data-origin-height=&quot;55&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qzmGm/btsI5ccbppt/bIja9NDbbJVQQaBsA7BTlK/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qzmGm/btsI5ccbppt/bIja9NDbbJVQQaBsA7BTlK/img.webp&quot; data-alt=&quot;StringBuilder 특정 문자 제거 결과&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qzmGm/btsI5ccbppt/bIja9NDbbJVQQaBsA7BTlK/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqzmGm%2FbtsI5ccbppt%2FbIja9NDbbJVQQaBsA7BTlK%2Fimg.webp&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; alt=&quot;StringBuilder 특정 문자 제거 결과&quot; loading=&quot;lazy&quot; width=&quot;376&quot; height=&quot;55&quot; data-origin-width=&quot;376&quot; data-origin-height=&quot;55&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;StringBuilder 특정 문자 제거 결과&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;StringBuilder 안에 포함된 특정 문자을 제거하려면 indexOf를 통해 제거하려는 문자의 위치를 파악한 후 deleteCharAt 메소드를 통해 제거를 진행합니다.&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;div&gt;&lt;!-- 중간-디스플레이-수평-1 --&gt; &lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block;&quot; data-ad-client=&quot;ca-pub-3244792068052716&quot; data-ad-slot=&quot;1629193049&quot; data-ad-format=&quot;auto&quot; data-full-width-responsive=&quot;true&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/div&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;pre id=&quot;code_1723724070261&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;StringBuilder sb = new StringBuilder(&quot;Hello, World!&quot;);

// 특정 문자열 &quot;World&quot; 제거하기
int start = sb.indexOf(&quot;World&quot;);
if (start != -1) {
    // &quot;World&quot;의 시작 위치부터 &quot;World&quot; 길이만큼 삭제
    sb.delete(start, start + &quot;World&quot;.length());
}

System.out.println(&quot;After removing 'World': &quot; + sb.toString());&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;373&quot; data-origin-height=&quot;52&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/brn1R7/btsI497ybzq/0TAIt9GZLQ4yPvOTMc3OsK/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/brn1R7/btsI497ybzq/0TAIt9GZLQ4yPvOTMc3OsK/img.webp&quot; data-alt=&quot;StringBuilder 특정 문자열 제거 결과&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/brn1R7/btsI497ybzq/0TAIt9GZLQ4yPvOTMc3OsK/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbrn1R7%2FbtsI497ybzq%2F0TAIt9GZLQ4yPvOTMc3OsK%2Fimg.webp&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; alt=&quot;StringBuilder 특정 문자열 제거 결과&quot; loading=&quot;lazy&quot; width=&quot;373&quot; height=&quot;52&quot; data-origin-width=&quot;373&quot; data-origin-height=&quot;52&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;StringBuilder 특정 문자열 제거 결과&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;StringBuilder 마지막 문자 제거&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;StringBuilder에서 마지막 위치에 있는 문자를 제거하는 방법입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1723724398042&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;StringBuilder sb = new StringBuilder(&quot;Hello, World!&quot;);

// 마지막 문자 제거
if (sb.length() &amp;gt; 0) {
    sb.deleteCharAt(sb.length() - 1);
}

System.out.println(&quot;After removing the last character: &quot; + sb.toString());&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;535&quot; data-origin-height=&quot;46&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JvLMm/btsI3YZZguS/uQMV46f79kKROq3f21kpE0/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JvLMm/btsI3YZZguS/uQMV46f79kKROq3f21kpE0/img.webp&quot; data-alt=&quot;StringBuilder 마지막 문자 제거 결과&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JvLMm/btsI3YZZguS/uQMV46f79kKROq3f21kpE0/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJvLMm%2FbtsI3YZZguS%2FuQMV46f79kKROq3f21kpE0%2Fimg.webp&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; alt=&quot;StringBuilder 마지막 문자 제거 결과&quot; loading=&quot;lazy&quot; width=&quot;535&quot; height=&quot;46&quot; data-origin-width=&quot;535&quot; data-origin-height=&quot;46&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;StringBuilder 마지막 문자 제거 결과&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;StringBuilder에 있는 마지막 문자를 제거하려면 deleteCharAt 메소드를 적절하게 사용하면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;StringBuilder에 length 메소드를 사용해서 길이를 구한 후 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;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;읽으면 좋은 글&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://priming.tistory.com/10&quot; rel=&quot;noopener&quot;&gt;[Java] String - indexOf, lastIndexOf : 문자열 위치 찾기&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1723724522390&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] String - indexOf, lastIndexOf : 문자열 위치 찾기&quot; data-og-description=&quot;String indexOf란?indexOf 메서드는 문자열에서 특정 문자가 처음으로 나타나는 위치를 반환하며, 시작 위치를 지정할 수 있습니다.&amp;nbsp;indexOf 메서드&amp;nbsp;indexOf(int ch): 문자열에서 지정된 문자가 처음으로 나&quot; data-og-host=&quot;priming.tistory.com&quot; data-og-source-url=&quot;https://priming.tistory.com/10&quot; data-og-url=&quot;https://priming.tistory.com/10&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bW3769/hyWOduMqTG/8uR8Hv4qZayYtkNyokYevK/img.png?width=427&amp;amp;height=90&amp;amp;face=0_0_427_90,https://scrap.kakaocdn.net/dn/v6T95/hyWOj9Bzz2/EjKtr8erIY9sIfHoCpHBUk/img.png?width=427&amp;amp;height=90&amp;amp;face=0_0_427_90&quot;&gt;&lt;a href=&quot;https://priming.tistory.com/10&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://priming.tistory.com/10&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bW3769/hyWOduMqTG/8uR8Hv4qZayYtkNyokYevK/img.png?width=427&amp;amp;height=90&amp;amp;face=0_0_427_90,https://scrap.kakaocdn.net/dn/v6T95/hyWOj9Bzz2/EjKtr8erIY9sIfHoCpHBUk/img.png?width=427&amp;amp;height=90&amp;amp;face=0_0_427_90');&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 - indexOf, lastIndexOf : 문자열 위치 찾기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;String indexOf란?indexOf 메서드는 문자열에서 특정 문자가 처음으로 나타나는 위치를 반환하며, 시작 위치를 지정할 수 있습니다.&amp;nbsp;indexOf 메서드&amp;nbsp;indexOf(int ch): 문자열에서 지정된 문자가 처음으로 나&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;priming.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>
      <category>Study/java</category>
      <category>java</category>
      <category>StringBuilder</category>
      <author>priming</author>
      <guid isPermaLink="true">https://priming.tistory.com/168</guid>
      <comments>https://priming.tistory.com/168#entry168comment</comments>
      <pubDate>Thu, 15 Aug 2024 21:22:50 +0900</pubDate>
    </item>
    <item>
      <title>[Java] StringBuilder StringBuffer 차이점 및 속도 비교</title>
      <link>https://priming.tistory.com/167</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자바의 StringBuilder와 StringBuffer의 의미와 차이점, 속도를 비교해보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;StringBuilder란?&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;StringBuilder는 자바에서 문자열을 다루기 위해 제공하는 클래스 중 하나로, 가변적인 문자열을 생성하고 조작할 수 있도록 해줍니다.&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 객체는 불변(immutable)이기 때문에, 문자열을 수정할 때마다 새로운 문자열 객체를 생성해야 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;반면, StringBuilder는 내부 버퍼를 이용하여 기존의 문자열에 추가, 삽입, 삭제 등의 연산을 효율적으로 수행할 수 있습니다.&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://docs.oracle.com/javase/8/docs/api/java/lang/StringBuilder.html&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;Java StringBuilder 공식문서 바로가기&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1723553224145&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;StringBuilder (Java Platform SE 8 )&quot; data-og-description=&quot;Inserts the string into this character sequence. The characters of the String argument are inserted, in order, into this sequence at the indicated offset, moving up any characters originally above that position and increasing the length of this sequence by&quot; data-og-host=&quot;docs.oracle.com&quot; data-og-source-url=&quot;https://docs.oracle.com/javase/8/docs/api/java/lang/StringBuilder.html&quot; data-og-url=&quot;https://docs.oracle.com/javase/8/docs/api/java/lang/StringBuilder.html&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://docs.oracle.com/javase/8/docs/api/java/lang/StringBuilder.html&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://docs.oracle.com/javase/8/docs/api/java/lang/StringBuilder.html&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&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;StringBuilder (Java Platform SE 8 )&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Inserts the string into this character sequence. The characters of the String argument are inserted, in order, into this sequence at the indicated offset, moving up any characters originally above that position and increasing the length of this sequence by&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;docs.oracle.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;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;StringBuffer란?&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;StringBuffer는 자바에서 가변적인 문자열을 처리하기 위해 사용되는 클래스입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 클래스는 문자열을 수정할 수 있는 다양한 메서드를 제공하며, 특히 여러 스레드가 동시에 문자열을 수정할 때 안전하게 사용할 수 있도록 동기화(synchronization) 기능을 지원합니다.&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;a href=&quot;https://docs.oracle.com/javase/8/docs/api/java/lang/StringBuffer.html&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;Java StringBuffer 공식문서 바로가기&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1723553226452&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;StringBuffer (Java Platform SE 8 )&quot; data-og-description=&quot;Inserts the string into this character sequence. The characters of the String argument are inserted, in order, into this sequence at the indicated offset, moving up any characters originally above that position and increasing the length of this sequence by&quot; data-og-host=&quot;docs.oracle.com&quot; data-og-source-url=&quot;https://docs.oracle.com/javase/8/docs/api/java/lang/StringBuffer.html&quot; data-og-url=&quot;https://docs.oracle.com/javase/8/docs/api/java/lang/StringBuffer.html&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://docs.oracle.com/javase/8/docs/api/java/lang/StringBuffer.html&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://docs.oracle.com/javase/8/docs/api/java/lang/StringBuffer.html&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&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;StringBuffer (Java Platform SE 8 )&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Inserts the string into this character sequence. The characters of the String argument are inserted, in order, into this sequence at the indicated offset, moving up any characters originally above that position and increasing the length of this sequence by&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;docs.oracle.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;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;StringBuilder와 StringBuffer의 차이&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;StringBuilder와 StringBuffer의 주요 차이는 동기화 여부에 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;StringBuffer는 동기화되어 있어 멀티스레드 환경에서 안전하게 사용할 수 있지만, 그로 인해 성능이 다소 느릴 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;반면에 StringBuilder는 동기화되지 않아서 멀티스레드 환경에서는 안전하지 않지만, 단일 스레드 환경에서는 더 빠르게 동작합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;따라서, 멀티스레드 환경에서 동시 수정이 필요하다면 StringBuffer를, 단일 스레드 환경이나 동기화가 필요 없는 경우라면 StringBuilder를 사용하는 것이 좋습니다.&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;div&gt;&lt;!-- 중간-디스플레이-수평-1 --&gt; &lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block;&quot; data-ad-client=&quot;ca-pub-3244792068052716&quot; data-ad-slot=&quot;1629193049&quot; data-ad-format=&quot;auto&quot; data-full-width-responsive=&quot;true&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/div&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;h2 data-ke-size=&quot;size26&quot;&gt;StringBuilder StringBuffer 속도 비교&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예제를 통해 StringBuilder와 StringBuffer의 속도를 비교해보겠습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1723553391381&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) {
    // 반복 횟수
    int iterations = 100000;

    // StringBuffer 시간 측정
    long startTime = System.nanoTime();
    StringBuffer stringBuffer = new StringBuffer();
    for (int i = 0; i &amp;lt; iterations; i++) {
        stringBuffer.append(&quot;a&quot;);
    }
    long endTime = System.nanoTime();
    long stringBufferTime = endTime - startTime;

    // StringBuilder 시간 측정
    startTime = System.nanoTime();
    StringBuilder stringBuilder = new StringBuilder();
    for (int i = 0; i &amp;lt; iterations; i++) {
        stringBuilder.append(&quot;a&quot;);
    }
    endTime = System.nanoTime();
    long stringBuilderTime = endTime - startTime;

    // 결과 출력
    System.out.println(&quot;StringBuffer time: &quot; + stringBufferTime + &quot; ns&quot;);
    System.out.println(&quot;StringBuilder time: &quot; + stringBuilderTime + &quot; ns&quot;);
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;240&quot; data-origin-height=&quot;53&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cng95g/btsI3NDcR0s/Az7Pf0DDcsQFmuAQLkKwV1/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cng95g/btsI3NDcR0s/Az7Pf0DDcsQFmuAQLkKwV1/img.webp&quot; data-alt=&quot;StringBuilder StringBuffer 속도 비교&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cng95g/btsI3NDcR0s/Az7Pf0DDcsQFmuAQLkKwV1/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcng95g%2FbtsI3NDcR0s%2FAz7Pf0DDcsQFmuAQLkKwV1%2Fimg.webp&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; alt=&quot;StringBuilder StringBuffer 속도 비교&quot; loading=&quot;lazy&quot; width=&quot;240&quot; height=&quot;53&quot; data-origin-width=&quot;240&quot; data-origin-height=&quot;53&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;StringBuilder StringBuffer 속도 비교&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;문자열 추가 작업을 10만번 진행했을 때 StringBuilder와 StringBuffer의 속도 차이를 확인하는 코드입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코드 실행 결과, StringBuilder가 더 빠름을 알 수 있습니다.&lt;/p&gt;</description>
      <category>Study/java</category>
      <category>java</category>
      <category>StringBuffer</category>
      <category>StringBuilder</category>
      <author>priming</author>
      <guid isPermaLink="true">https://priming.tistory.com/167</guid>
      <comments>https://priming.tistory.com/167#entry167comment</comments>
      <pubDate>Tue, 13 Aug 2024 21:52:54 +0900</pubDate>
    </item>
    <item>
      <title>[MySQL] json array 조회 및 json_extract 함수 사용 방법</title>
      <link>https://priming.tistory.com/166</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MySQL에서 json 배열이나 리스트를 조회하는 json_arrayagg 함수와 json 객체에서 데이터를 추출하는 json_extract 함수 사용법입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;JSON_ARRAYAGG란?&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;json_arrayagg 함수는 그룹화된 데이터를 json 배열로 집계하는 함수입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터가 없으면 null을 반환합니다.&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://dev.mysql.com/doc/refman/8.4/en/aggregate-functions.html#function_json-arrayagg&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;MySQL JSON_ARRAYAGG 공식문서 바로가기&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1722674611154&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;MySQL :: MySQL 8.4 Reference Manual :: 14.19.1 Aggregate Function Descriptions&quot; data-og-description=&quot;MySQL 8.4 Reference Manual &amp;nbsp;/&amp;nbsp; ... &amp;nbsp;/&amp;nbsp; Functions and Operators &amp;nbsp;/&amp;nbsp; Aggregate Functions &amp;nbsp;/&amp;nbsp; Aggregate Function Descriptions 14.19.1&amp;nbsp;Aggregate Function Descriptions This section describes aggregate functions that operate on sets of values. They are &quot; data-og-host=&quot;dev.mysql.com&quot; data-og-source-url=&quot;https://dev.mysql.com/doc/refman/8.4/en/aggregate-functions.html#function_json-arrayagg&quot; data-og-url=&quot;https://dev.mysql.com/doc/refman/8.4/en/aggregate-functions.html#function_json-arrayagg&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://dev.mysql.com/doc/refman/8.4/en/aggregate-functions.html#function_json-arrayagg&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://dev.mysql.com/doc/refman/8.4/en/aggregate-functions.html#function_json-arrayagg&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&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 :: MySQL 8.4 Reference Manual :: 14.19.1 Aggregate Function Descriptions&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;MySQL 8.4 Reference Manual &amp;nbsp;/&amp;nbsp; ... &amp;nbsp;/&amp;nbsp; Functions and Operators &amp;nbsp;/&amp;nbsp; Aggregate Functions &amp;nbsp;/&amp;nbsp; Aggregate Function Descriptions 14.19.1&amp;nbsp;Aggregate Function Descriptions This section describes aggregate functions that operate on sets of values. They are&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;dev.mysql.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;h2 data-ke-size=&quot;size26&quot;&gt;JSON_ARRAYAGG 사용 방법 및 예제&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;json_arrayagg 함수의 사용 방법은 다음과 같습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1722674968087&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;json_arrayagg(컬럼이나 표현식)&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;json_array를 사용한 예제 쿼리입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1722674945328&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select CountryCode, json_arrayagg(Name) as 'cities'
from world.city
group by CountryCode;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;427&quot; data-origin-height=&quot;199&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cz3X8c/btsIUVUOGDM/eebOjDqAHut5b2fkXiah5K/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cz3X8c/btsIUVUOGDM/eebOjDqAHut5b2fkXiah5K/img.webp&quot; data-alt=&quot;json_array 예제 쿼리 실행 결과&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cz3X8c/btsIUVUOGDM/eebOjDqAHut5b2fkXiah5K/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcz3X8c%2FbtsIUVUOGDM%2FeebOjDqAHut5b2fkXiah5K%2Fimg.webp&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; alt=&quot;json_array 예제 쿼리 실행 결과&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;186&quot; data-origin-width=&quot;427&quot; data-origin-height=&quot;199&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;json_array 예제 쿼리 실행 결과&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예제 쿼리는 국가 코드를 기준으로 그룹화하고, 도시의 이름을 json 배열로 집계하는 쿼리입니다.&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;div&gt;&lt;!-- 중간-디스플레이-수평-1 --&gt; &lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block;&quot; data-ad-client=&quot;ca-pub-3244792068052716&quot; data-ad-slot=&quot;1629193049&quot; data-ad-format=&quot;auto&quot; data-full-width-responsive=&quot;true&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/div&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;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;JSON_EXTRACT란?&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;json_extract 함수는 json 데이터에서 일치하는 데이터를 가져오는 함수입니다.&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;json_arrayagg 함수와의 차이점은 json_arrayagg 함수는 그룹 함수고 json_extract는 일반 함수입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 json_arrayagg는 그룹화된 데이터를 json 배열로 만들어주고, json_extract는 json 데이터에서 특정 데이터를 추출하는 함수입니다.&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://dev.mysql.com/doc/refman/8.4/en/json-search-functions.html#function_json-extract&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;MySQL JSON_EXTRACT 공식문서 바로가기&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1722675111674&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;MySQL :: MySQL 8.4 Reference Manual :: 14.17.3 Functions That Search JSON Values&quot; data-og-description=&quot;14.17.3&amp;nbsp;Functions That Search JSON Values The functions in this section perform search or comparison operations on JSON values to extract data from them, report whether data exists at a location within them, or report the path to data within them. The MEM&quot; data-og-host=&quot;dev.mysql.com&quot; data-og-source-url=&quot;https://dev.mysql.com/doc/refman/8.4/en/json-search-functions.html#function_json-extract&quot; data-og-url=&quot;https://dev.mysql.com/doc/refman/8.4/en/json-search-functions.html#function_json-extract&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://dev.mysql.com/doc/refman/8.4/en/json-search-functions.html#function_json-extract&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://dev.mysql.com/doc/refman/8.4/en/json-search-functions.html#function_json-extract&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&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 :: MySQL 8.4 Reference Manual :: 14.17.3 Functions That Search JSON Values&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;14.17.3&amp;nbsp;Functions That Search JSON Values The functions in this section perform search or comparison operations on JSON values to extract data from them, report whether data exists at a location within them, or report the path to data within them. The MEM&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;dev.mysql.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;h2 data-ke-size=&quot;size26&quot;&gt;JSON_EXTRACT 사용 방법 및 예제&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;json_extract 함수의 사용 방법은 다음과 같습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1722675835576&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;JSON_EXTRACT(json 데이터, 경로1, 경로2..)&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;json_extract를 사용한 예제 쿼리입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1722675915862&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select json_extract('[&quot;Kabul&quot;, &quot;Qandahar&quot;, &quot;Herat&quot;, &quot;Mazar-e-Sharif&quot;, [&quot;The Valley&quot;, &quot;South Hill&quot;]]', '$[1]', '$[4][0]');&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;927&quot; data-origin-height=&quot;136&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/C1do9/btsIVbb43xh/MmRrFD6AxMoOIDlKyn9oPk/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/C1do9/btsIVbb43xh/MmRrFD6AxMoOIDlKyn9oPk/img.webp&quot; data-alt=&quot;json_extract 예제 쿼리 실행 결과&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/C1do9/btsIVbb43xh/MmRrFD6AxMoOIDlKyn9oPk/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FC1do9%2FbtsIVbb43xh%2FMmRrFD6AxMoOIDlKyn9oPk%2Fimg.webp&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; alt=&quot;json_extract 예제 쿼리 실행 결과&quot; loading=&quot;lazy&quot; width=&quot;850&quot; height=&quot;125&quot; data-origin-width=&quot;927&quot; data-origin-height=&quot;136&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;json_extract 예제 쿼리 실행 결과&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;json 배열 데이터의 경우, $[1]처럼 인덱스를 사용해서 데이터를 추출할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;json 객체 데이터는 다음과 같이 사용하면 됩니다.&lt;/p&gt;
&lt;pre id=&quot;code_1722676396646&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select json_extract('{&quot;Herat&quot;: 186800, &quot;Kabul&quot;: 1780000, &quot;Qandahar&quot;: 237500, &quot;Mazar-e-Sharif&quot;: 127800}', '$.Herat');&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;878&quot; data-origin-height=&quot;153&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/o6f4D/btsITBJQh5J/D210SM2bi4vO2LxkNVM8dK/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/o6f4D/btsITBJQh5J/D210SM2bi4vO2LxkNVM8dK/img.webp&quot; data-alt=&quot;json_extract json 객체 사용 결과&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/o6f4D/btsITBJQh5J/D210SM2bi4vO2LxkNVM8dK/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fo6f4D%2FbtsITBJQh5J%2FD210SM2bi4vO2LxkNVM8dK%2Fimg.webp&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; alt=&quot;json_extract json 객체 사용 결과&quot; loading=&quot;lazy&quot; width=&quot;878&quot; height=&quot;153&quot; data-origin-width=&quot;878&quot; data-origin-height=&quot;153&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;json_extract json 객체 사용 결과&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;json 객체를 사용하는 경우, $.key 형식으로 사용하면 값을 추출할 수 있습니다.&lt;/p&gt;</description>
      <category>Study/DB</category>
      <category>json_arrayagg</category>
      <category>JSON_EXTRACT</category>
      <category>MySQL</category>
      <author>priming</author>
      <guid isPermaLink="true">https://priming.tistory.com/166</guid>
      <comments>https://priming.tistory.com/166#entry166comment</comments>
      <pubDate>Sat, 3 Aug 2024 18:15:03 +0900</pubDate>
    </item>
    <item>
      <title>[Java] Spring @PathVariable null 값 유효성 검사 방법</title>
      <link>https://priming.tistory.com/165</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Spring 컨트롤러에서 @PathVariable로 null 값을 받는 경우 처리하는 방법입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Spring Boot 3 버전(3.2.4)에서 진행하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;@PathVariable 값이 null로 들어오는 경우&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;@PathVariable에 null이 들어오면 다음과 같은 응답값을 확인할 수 있습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1722660986212&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class PathVariableController {

    // 테스트용 컨트롤러
    @GetMapping(&quot;/path/{value}&quot;)
    public String getPathVariableIsNull(@PathVariable(name = &quot;value&quot;) String value) {
        return value;
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;749&quot; data-origin-height=&quot;446&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dFQMIh/btsISXsXyuK/stA5J8Ez2avpHMki5Wgtd1/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dFQMIh/btsISXsXyuK/stA5J8Ez2avpHMki5Wgtd1/img.webp&quot; data-alt=&quot;@PathVariable에 값이 없을 때&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dFQMIh/btsISXsXyuK/stA5J8Ez2avpHMki5Wgtd1/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdFQMIh%2FbtsISXsXyuK%2FstA5J8Ez2avpHMki5Wgtd1%2Fimg.webp&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; alt=&quot;@PathVariable에 값이 없을 때&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;417&quot; data-origin-width=&quot;749&quot; data-origin-height=&quot;446&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;@PathVariable에 값이 없을 때&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;@PathVariable 값이 없으면 404 Not Found 응답을 반환합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;@PathVariable(required = false) 사용 방법&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;@PathVariable 값이 없어도 괜찮을 때, required 옵션을 사용해서 null 값을 받을 수 있었습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1722661198751&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// required=false 확인용 API 추가
@GetMapping(&quot;/path/required-false/{value}&quot;)
public String getPathVariableRequiredFalse(@PathVariable(name = &quot;value&quot;, required = false) String value) {
    return value;
}&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;예전 버전에서는 required=false를 쓰면 적용이 되었던것 같은데, 지금 버전에서는 동작하지 않습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(참고: &lt;a href=&quot;https://howtodoinjava.com/spring-mvc/optional-pathvariable/#2-1-using-pathvariablerequired-false-spring-4-3-3&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://howtodoinjava.com/spring-mvc/optional-pathvariable/#2-1-using-pathvariablerequired-false-spring-4-3-3&lt;/a&gt;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스프링부트 2.7.18 버전에서도 required=false가 동작하지 않습니다.&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;pre id=&quot;code_1722662184023&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 최신 버전
@GetMapping(value = {&quot;/path/required-false&quot;, &quot;/path/required-false/{value}&quot;})
public String getPathVariableRequiredFalse(@PathVariable(name = &quot;value&quot;, required = false) String value) {
    return value == null ? &quot;Value is null&quot; : value;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;458&quot; data-origin-height=&quot;297&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bitXJp/btsIUmyyYhd/sCfQWPpe3Yb0qXqNJO6HbK/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bitXJp/btsIUmyyYhd/sCfQWPpe3Yb0qXqNJO6HbK/img.webp&quot; data-alt=&quot;@PathVariable(required=false) 적용&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bitXJp/btsIUmyyYhd/sCfQWPpe3Yb0qXqNJO6HbK/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbitXJp%2FbtsIUmyyYhd%2FsCfQWPpe3Yb0qXqNJO6HbK%2Fimg.webp&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; alt=&quot;@PathVariable(required=false) 적용&quot; loading=&quot;lazy&quot; width=&quot;450&quot; height=&quot;292&quot; data-origin-width=&quot;458&quot; data-origin-height=&quot;297&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;@PathVariable(required=false) 적용&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;@PathVariable이 있는 경로와 없는 경로 둘다 매핑해야 합니다.&lt;/p&gt;</description>
      <category>Study/spring</category>
      <category>PathVariable</category>
      <category>Spring boot</category>
      <author>priming</author>
      <guid isPermaLink="true">https://priming.tistory.com/165</guid>
      <comments>https://priming.tistory.com/165#entry165comment</comments>
      <pubDate>Sat, 3 Aug 2024 14:49:14 +0900</pubDate>
    </item>
    <item>
      <title>[Windows/Mac] DBeaver 다크 모드 테마 변경 방법</title>
      <link>https://priming.tistory.com/164</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DBeaver 프로그램에서 테마를 변경하는 방법입니다.&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;h2 data-ke-size=&quot;size26&quot;&gt;DBeaver 테마 변경 방법&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 윈도우 -&amp;gt; 설정을 선택합니다.&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;667&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qzhh8/btsIPYdL9sQ/GgLkPNoas3hDQYQcmybmg0/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qzhh8/btsIPYdL9sQ/GgLkPNoas3hDQYQcmybmg0/img.webp&quot; data-alt=&quot;설정 메뉴 선택&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qzhh8/btsIPYdL9sQ/GgLkPNoas3hDQYQcmybmg0/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fqzhh8%2FbtsIPYdL9sQ%2FGgLkPNoas3hDQYQcmybmg0%2Fimg.webp&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; alt=&quot;설정 메뉴 선택&quot; loading=&quot;lazy&quot; width=&quot;850&quot; height=&quot;443&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;667&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;설정 메뉴 선택&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. User Interface -&amp;gt; 모양 메뉴를 선택합니다.&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;1022&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/5Vc1k/btsIQFdy4fm/bbNXGpIKh6mJeaJH1rvHG0/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/5Vc1k/btsIQFdy4fm/bbNXGpIKh6mJeaJH1rvHG0/img.webp&quot; data-alt=&quot;모양 메뉴 선택&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/5Vc1k/btsIQFdy4fm/bbNXGpIKh6mJeaJH1rvHG0/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F5Vc1k%2FbtsIQFdy4fm%2FbbNXGpIKh6mJeaJH1rvHG0%2Fimg.webp&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; alt=&quot;모양 메뉴 선택&quot; loading=&quot;lazy&quot; width=&quot;850&quot; height=&quot;679&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1022&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;모양 메뉴 선택&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. Dark 테마로 변경후 적용버튼 또는 apply and close 버튼을 누릅니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1238&quot; data-origin-height=&quot;196&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cjVNDh/btsIOIwgPsX/ZJZ3gmb8zM8fkLUkqNxRy1/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cjVNDh/btsIOIwgPsX/ZJZ3gmb8zM8fkLUkqNxRy1/img.webp&quot; data-alt=&quot;다크 테마로 변경&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cjVNDh/btsIOIwgPsX/ZJZ3gmb8zM8fkLUkqNxRy1/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcjVNDh%2FbtsIOIwgPsX%2FZJZ3gmb8zM8fkLUkqNxRy1%2Fimg.webp&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; alt=&quot;다크 테마로 변경&quot; loading=&quot;lazy&quot; width=&quot;1238&quot; height=&quot;196&quot; data-origin-width=&quot;1238&quot; data-origin-height=&quot;196&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;다크 테마로 변경&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;4. DBeaver를 다시 시작합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1214&quot; data-origin-height=&quot;244&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cjnu59/btsIQob2nLn/YQEQGLtM4pv9rirC5TRifK/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cjnu59/btsIQob2nLn/YQEQGLtM4pv9rirC5TRifK/img.webp&quot; data-alt=&quot;다시 시작&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cjnu59/btsIQob2nLn/YQEQGLtM4pv9rirC5TRifK/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcjnu59%2FbtsIQob2nLn%2FYQEQGLtM4pv9rirC5TRifK%2Fimg.webp&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;1214&quot; height=&quot;244&quot; data-origin-width=&quot;1214&quot; data-origin-height=&quot;244&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;다시 시작&lt;/figcaption&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;5. 다크테마 적용이 완료되었습니다.&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;396&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cj3G6V/btsIOkiag7d/jQhbjpYEhqIiIvfTzeTtKK/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cj3G6V/btsIOkiag7d/jQhbjpYEhqIiIvfTzeTtKK/img.webp&quot; data-alt=&quot;다크 테마 적용 완료&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cj3G6V/btsIOkiag7d/jQhbjpYEhqIiIvfTzeTtKK/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcj3G6V%2FbtsIOkiag7d%2FjQhbjpYEhqIiIvfTzeTtKK%2Fimg.webp&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; alt=&quot;다크 테마 적용 완료&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;396&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;396&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;다크 테마 적용 완료&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>Study/Environment</category>
      <category>DBeaver</category>
      <author>priming</author>
      <guid isPermaLink="true">https://priming.tistory.com/164</guid>
      <comments>https://priming.tistory.com/164#entry164comment</comments>
      <pubDate>Sat, 27 Jul 2024 12:15:57 +0900</pubDate>
    </item>
    <item>
      <title>[Git] Spring Tool Suite(STS) 4 git clone import 사용법</title>
      <link>https://priming.tistory.com/163</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Spring Tool Suite에서 github 프로젝트를 가져오는 방법입니다.&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;STS가 아닌 다른 개발도구를 사용하고 계신다면 아래 글을 참조하시면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://priming.tistory.com/158&quot; rel=&quot;noopener&quot;&gt;[Git] Intellij git clone 사용법 바로가기&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://priming.tistory.com/159&quot; rel=&quot;noopener&quot;&gt;[Git] VSCode git repository clone 사용법 바로가기&lt;/a&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;h2 data-ke-size=&quot;size26&quot;&gt;Git 프로젝트 clone 방법&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;clone 메뉴로 이동&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. File &amp;gt; Import&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;360&quot; data-origin-height=&quot;552&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dysxoI/btsIQva5rio/pLm8DSe43syf2eTjBcF0f0/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dysxoI/btsIQva5rio/pLm8DSe43syf2eTjBcF0f0/img.webp&quot; data-alt=&quot;Import 메뉴&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dysxoI/btsIQva5rio/pLm8DSe43syf2eTjBcF0f0/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdysxoI%2FbtsIQva5rio%2FpLm8DSe43syf2eTjBcF0f0%2Fimg.webp&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; alt=&quot;Import 메뉴&quot; loading=&quot;lazy&quot; width=&quot;350&quot; height=&quot;537&quot; data-origin-width=&quot;360&quot; data-origin-height=&quot;552&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Import 메뉴&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;&lt;b&gt;2. Git &amp;gt; Projects from Git&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;498&quot; data-origin-height=&quot;534&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bYT3Tc/btsIOHRCAmb/y8Qf2yw9k6ZF6hGBPXz6pk/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bYT3Tc/btsIOHRCAmb/y8Qf2yw9k6ZF6hGBPXz6pk/img.webp&quot; data-alt=&quot;Projects from Git 메뉴&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bYT3Tc/btsIOHRCAmb/y8Qf2yw9k6ZF6hGBPXz6pk/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbYT3Tc%2FbtsIOHRCAmb%2Fy8Qf2yw9k6ZF6hGBPXz6pk%2Fimg.webp&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; alt=&quot;Projects from Git 메뉴&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;536&quot; data-origin-width=&quot;498&quot; data-origin-height=&quot;534&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Projects from Git 메뉴&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;&lt;b&gt;3. Clone URI&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;503&quot; data-origin-height=&quot;532&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/J9xKN/btsIOBqrrzr/SbUg99YDrF7KgdHCCg634k/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/J9xKN/btsIOBqrrzr/SbUg99YDrF7KgdHCCg634k/img.webp&quot; data-alt=&quot;Clone URI 메뉴&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/J9xKN/btsIOBqrrzr/SbUg99YDrF7KgdHCCg634k/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJ9xKN%2FbtsIOBqrrzr%2FSbUg99YDrF7KgdHCCg634k%2Fimg.webp&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; alt=&quot;Clone URI 메뉴&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;529&quot; data-origin-width=&quot;503&quot; data-origin-height=&quot;532&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Clone URI 메뉴&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;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&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;깃허브나 깃랩의 리포지토리의 주소를 입력하면 Host와 Repository path, Protocol은 자동으로 채워집니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;531&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cj2zTf/btsIOCbMV2m/Jp6dwjoGxBknKLdRWQ4GjK/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cj2zTf/btsIOCbMV2m/Jp6dwjoGxBknKLdRWQ4GjK/img.webp&quot; data-alt=&quot;원격 리포지토리 주소 입력&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cj2zTf/btsIOCbMV2m/Jp6dwjoGxBknKLdRWQ4GjK/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcj2zTf%2FbtsIOCbMV2m%2FJp6dwjoGxBknKLdRWQ4GjK%2Fimg.webp&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; alt=&quot;원격 리포지토리 주소 입력&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;531&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;531&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;원격 리포지토리 주소 입력&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;깃허브 리포지토리라서 Authentication에는 깃허브 계정 정보를 입력하면 됩니다.&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;500&quot; data-origin-height=&quot;530&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Y26yi/btsIQy6IUlc/SXl0YF9kFwRTy0MmM2A8T0/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Y26yi/btsIQy6IUlc/SXl0YF9kFwRTy0MmM2A8T0/img.webp&quot; data-alt=&quot;ssh 방식 사용&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Y26yi/btsIQy6IUlc/SXl0YF9kFwRTy0MmM2A8T0/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FY26yi%2FbtsIQy6IUlc%2FSXl0YF9kFwRTy0MmM2A8T0%2Fimg.webp&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; alt=&quot;ssh 방식 사용&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;530&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;530&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;ssh 방식 사용&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;테스트에 사용한 리포지토리가 private 리포지토리라서 그런지 몰라도 계정 정보가 맞는데 인증이 계속 실패해서 HTTPS가 아닌 SSH 주소를 사용했습니다.&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;h3 data-ke-size=&quot;size23&quot;&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;예시 이미지에는 main 브랜치밖에 없지만, 브랜치가 많이 있다면 원하는 브랜치를 선택해서 clone 할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;503&quot; data-origin-height=&quot;534&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DwiVq/btsIQKFRUFw/BynSUpccrdma0CMKUbiKMK/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DwiVq/btsIQKFRUFw/BynSUpccrdma0CMKUbiKMK/img.webp&quot; data-alt=&quot;브랜치 선택&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DwiVq/btsIQKFRUFw/BynSUpccrdma0CMKUbiKMK/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDwiVq%2FbtsIQKFRUFw%2FBynSUpccrdma0CMKUbiKMK%2Fimg.webp&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; alt=&quot;브랜치 선택&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;531&quot; data-origin-width=&quot;503&quot; data-origin-height=&quot;534&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;브랜치 선택&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;프로젝트 경로, Initial Branch, Remote name을 설정합니다.&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;496&quot; data-origin-height=&quot;530&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/clPWJg/btsIReUgozk/kH3vBWglx0PDxSI3QEmCMk/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/clPWJg/btsIReUgozk/kH3vBWglx0PDxSI3QEmCMk/img.webp&quot; data-alt=&quot;선택한 브랜치와 remote name 확인&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/clPWJg/btsIReUgozk/kH3vBWglx0PDxSI3QEmCMk/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FclPWJg%2FbtsIReUgozk%2FkH3vBWglx0PDxSI3QEmCMk%2Fimg.webp&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; alt=&quot;선택한 브랜치와 remote name 확인&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;534&quot; data-origin-width=&quot;496&quot; data-origin-height=&quot;530&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;선택한 브랜치와 remote name 확인&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;remote name은 원격 저장소의 이름입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기본으로 origin으로 설정되어있고, 원하는 이름으로 변경하셔도 됩니다.&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;import 마법사 선택&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로젝트 import 마법사를 어떤 것을 쓸건지 선택합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;532&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cUEsto/btsIPXsolXn/lQ9abmeHuoQHa2mJwRYAd1/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cUEsto/btsIPXsolXn/lQ9abmeHuoQHa2mJwRYAd1/img.webp&quot; data-alt=&quot;프로젝트 import 마법사 선택&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cUEsto/btsIPXsolXn/lQ9abmeHuoQHa2mJwRYAd1/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcUEsto%2FbtsIPXsolXn%2FlQ9abmeHuoQHa2mJwRYAd1%2Fimg.webp&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; alt=&quot;프로젝트 import 마법사 선택&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;532&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;532&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;프로젝트 import 마법사 선택&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;세번째에 Import as general project를 선택합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;499&quot; data-origin-height=&quot;531&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/m8b3r/btsIQffhJrZ/XyhFJZexNt3qMTIGM9nVKk/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/m8b3r/btsIQffhJrZ/XyhFJZexNt3qMTIGM9nVKk/img.webp&quot; data-alt=&quot;Import as general project 선택&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/m8b3r/btsIQffhJrZ/XyhFJZexNt3qMTIGM9nVKk/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fm8b3r%2FbtsIQffhJrZ%2FXyhFJZexNt3qMTIGM9nVKk%2Fimg.webp&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; alt=&quot;Import as general project 선택&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;532&quot; data-origin-width=&quot;499&quot; data-origin-height=&quot;531&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Import as general project 선택&lt;/figcaption&gt;
&lt;/figure&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;프로젝트 폴더명 설정&lt;/h3&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;501&quot; data-origin-height=&quot;533&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bxcCKS/btsIOS6x4Lc/114PnOHSKBKf5RSy8fpJbk/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bxcCKS/btsIOS6x4Lc/114PnOHSKBKf5RSy8fpJbk/img.webp&quot; data-alt=&quot;프로젝트 폴더명 설정&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bxcCKS/btsIOS6x4Lc/114PnOHSKBKf5RSy8fpJbk/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbxcCKS%2FbtsIOS6x4Lc%2F114PnOHSKBKf5RSy8fpJbk%2Fimg.webp&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; alt=&quot;프로젝트 폴더명 설정&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;532&quot; data-origin-width=&quot;501&quot; data-origin-height=&quot;533&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;프로젝트 폴더명 설정&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Finish를 누릅니다.&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;git clone이 완료되었습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;265&quot; data-origin-height=&quot;93&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bqrV9j/btsIQdV4Vx1/BqgUdXNNG43DEgkHpzVSJ0/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bqrV9j/btsIQdV4Vx1/BqgUdXNNG43DEgkHpzVSJ0/img.webp&quot; data-alt=&quot;프로젝트 clone 완료&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bqrV9j/btsIQdV4Vx1/BqgUdXNNG43DEgkHpzVSJ0/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbqrV9j%2FbtsIQdV4Vx1%2FBqgUdXNNG43DEgkHpzVSJ0%2Fimg.webp&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; alt=&quot;프로젝트 clone 완료&quot; loading=&quot;lazy&quot; width=&quot;250&quot; height=&quot;88&quot; data-origin-width=&quot;265&quot; data-origin-height=&quot;93&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;프로젝트 clone 완료&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;&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;h2 data-ke-size=&quot;size26&quot;&gt;읽으면 좋은 글&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://priming.tistory.com/160&quot; rel=&quot;noopener&quot;&gt;[Git] git clone 명령어 사용법&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1722048720818&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;[Git] git clone 명령어 사용법&quot; data-og-description=&quot;git clone이란?git clone 명령어는 Git 저장소(repository)를 복제(clone)하는 데 사용되는 명령어입니다.원격 저장소(remote repository)에 있는 프로젝트를 로컬 컴퓨터에 그대로 복사하여 가져오는 기능을 수&quot; data-og-host=&quot;priming.tistory.com&quot; data-og-source-url=&quot;https://priming.tistory.com/160&quot; data-og-url=&quot;https://priming.tistory.com/160&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/UO59U/hyWCJBixoI/60KeibF7YRWJasRRkms2s1/img.jpg?width=453&amp;amp;height=122&amp;amp;face=0_0_453_122,https://scrap.kakaocdn.net/dn/pcD3w/hyWGPmj8P4/usgHQEYK1tpyQ73iQlLam0/img.jpg?width=453&amp;amp;height=122&amp;amp;face=0_0_453_122&quot;&gt;&lt;a href=&quot;https://priming.tistory.com/160&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://priming.tistory.com/160&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/UO59U/hyWCJBixoI/60KeibF7YRWJasRRkms2s1/img.jpg?width=453&amp;amp;height=122&amp;amp;face=0_0_453_122,https://scrap.kakaocdn.net/dn/pcD3w/hyWGPmj8P4/usgHQEYK1tpyQ73iQlLam0/img.jpg?width=453&amp;amp;height=122&amp;amp;face=0_0_453_122');&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;[Git] git clone 명령어 사용법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;git clone이란?git clone 명령어는 Git 저장소(repository)를 복제(clone)하는 데 사용되는 명령어입니다.원격 저장소(remote repository)에 있는 프로젝트를 로컬 컴퓨터에 그대로 복사하여 가져오는 기능을 수&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;priming.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>
      <category>Study/git</category>
      <category>git clone</category>
      <category>sts</category>
      <author>priming</author>
      <guid isPermaLink="true">https://priming.tistory.com/163</guid>
      <comments>https://priming.tistory.com/163#entry163comment</comments>
      <pubDate>Sat, 27 Jul 2024 11:41:19 +0900</pubDate>
    </item>
    <item>
      <title>[Java] 정규식으로 숫자 포함 여부 체크 방법</title>
      <link>https://priming.tistory.com/162</link>
      <description>&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;h2 data-ke-size=&quot;size26&quot;&gt;정규식 숫자 포함 여부 체크 방법&lt;/h2&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;\d: 숫자(digit)를 의미하는 정규식 패턴입니다. [0-9]와 동일한 의미를 갖습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;\d+: 하나 이상의 숫자를 의미합니다.&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_1721350880637&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;String containNumberRegex = &quot;.*\\d.*&quot;;
String containNumberString = &quot;aaaaaa123aaaaaa&quot;;
String notContainNumberString = &quot;aaaaaaaaaaaa&quot;;

System.out.println(&quot;containNumberString.matches(containNumberRegex) = &quot; + containNumberString.matches(containNumberRegex));
System.out.println(&quot;notContainNumberString.matches(containNumberRegex) = &quot; + notContainNumberString.matches(containNumberRegex));&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;426&quot; data-origin-height=&quot;50&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dIp5Kk/btsIF1A5j9c/W2VvkrSGysFyZsCS6cKTP1/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dIp5Kk/btsIF1A5j9c/W2VvkrSGysFyZsCS6cKTP1/img.webp&quot; data-alt=&quot;정규식 숫자 포함 여부 체크 결과&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dIp5Kk/btsIF1A5j9c/W2VvkrSGysFyZsCS6cKTP1/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdIp5Kk%2FbtsIF1A5j9c%2FW2VvkrSGysFyZsCS6cKTP1%2Fimg.webp&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; alt=&quot;정규식 숫자 포함 여부 체크 결과&quot; loading=&quot;lazy&quot; width=&quot;426&quot; height=&quot;50&quot; data-origin-width=&quot;426&quot; data-origin-height=&quot;50&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;정규식 숫자 포함 여부 체크 결과&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Java String 클래스의 matches 메소드를 사용해서 문자열에 숫자가 포함되어있는지 체크하는 예제입니다.&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;div&gt;
&lt;script src=&quot;https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-3244792068052716&quot;&gt;&lt;/script&gt;
&lt;!-- 중간-디스플레이-수평-1 --&gt; &lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block;&quot; data-ad-client=&quot;ca-pub-3244792068052716&quot; data-ad-slot=&quot;1629193049&quot; data-ad-format=&quot;auto&quot; data-full-width-responsive=&quot;true&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/div&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;h2 data-ke-size=&quot;size26&quot;&gt;각 정규식의 의미&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;숫자 포함 여부 체크에 사용된 정규식 .*\d.*의 의미는 다음과 같습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&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;임의의 문자란 줄바꿈 문자를 제외한 모든 문자를 의미합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;*은 바로 앞의 문자가 0회 이상 반복됨을 의미합니다.&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;&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;뒤쪽에 있는 .*의 의미는 문자열의 끝까지 임의의 문자가 0회 이상 반복된다는 의미입니다.&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;\d&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;\d는 0부터 9까지의 숫자 하나를 의미합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자바에서 \d를 사용하려면 이스케이프 처리를 해야합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 예제 코드에서는 \\d를 사용하였습니다.&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;.*\d.*의 의미&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위에서 설명한 내용을 종합하면 다음과 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 문자열의 시작부터 임의의 문자가 0개 이상 올 수 있고&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. 문자열의 끝까지 임의의 문자가 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;그래서 종합하면, .*\d.*의 의미는 주어진 문자열에서 숫자가 하나라도 포함되어있는지를 확인하는 정규식입니다.&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;h2 data-ke-size=&quot;size26&quot;&gt;읽으면 좋은 글&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://priming.tistory.com/9&quot; rel=&quot;noopener&quot;&gt;[Java] String - matches : 정규식 일치 여부&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1721351437760&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] String - matches : 정규식 일치 여부&quot; data-og-description=&quot;Java String 클래스의 matches 메소드는 문자열이 정규 표현식과 일치하는지 여부를 판별합니다.주로 텍스트 검색, 데이터 추출과 같은 다양한 상황에서 사용됩니다.matches메소드는 정규식을 사용하&quot; data-og-host=&quot;priming.tistory.com&quot; data-og-source-url=&quot;https://priming.tistory.com/9&quot; data-og-url=&quot;https://priming.tistory.com/9&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bF8gUL/hyWzzMhlc3/FenX7bjMGNm6mG4F7siC50/img.png?width=338&amp;amp;height=52&amp;amp;face=0_0_338_52,https://scrap.kakaocdn.net/dn/cziHfg/hyWzwBY4sM/d4LXh9zuCk1TgS2fjNSazK/img.png?width=338&amp;amp;height=52&amp;amp;face=0_0_338_52&quot;&gt;&lt;a href=&quot;https://priming.tistory.com/9&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://priming.tistory.com/9&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bF8gUL/hyWzzMhlc3/FenX7bjMGNm6mG4F7siC50/img.png?width=338&amp;amp;height=52&amp;amp;face=0_0_338_52,https://scrap.kakaocdn.net/dn/cziHfg/hyWzwBY4sM/d4LXh9zuCk1TgS2fjNSazK/img.png?width=338&amp;amp;height=52&amp;amp;face=0_0_338_52');&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;Java String 클래스의 matches 메소드는 문자열이 정규 표현식과 일치하는지 여부를 판별합니다.주로 텍스트 검색, 데이터 추출과 같은 다양한 상황에서 사용됩니다.matches메소드는 정규식을 사용하&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;priming.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;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Study/java</category>
      <category>자바</category>
      <category>정규식</category>
      <author>priming</author>
      <guid isPermaLink="true">https://priming.tistory.com/162</guid>
      <comments>https://priming.tistory.com/162#entry162comment</comments>
      <pubDate>Fri, 19 Jul 2024 10:11:25 +0900</pubDate>
    </item>
    <item>
      <title>[Java] 정규식으로 괄호 안이나 특정 문자 사이 내용 추출, 제거 방법</title>
      <link>https://priming.tistory.com/161</link>
      <description>&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;h2 data-ke-size=&quot;size26&quot;&gt;괄호 제거 정규식&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;단순하게 괄호만 제거하는 방식으로 괄호 속에 있는 내용을 추출하는 방법입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1721045158981&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 괄호 제거
String s1 = &quot;(123234324345)&quot;;
String replace1 = s1.replaceAll(&quot;[()]&quot;, &quot;&quot;);
System.out.println(&quot;replace1 = &quot; + replace1);

// 중괄호 제거
String s2 = &quot;{123234324345}&quot;;
String replace2 = s2.replaceAll(&quot;[{}]&quot;, &quot;&quot;);
System.out.println(&quot;replace2 = &quot; + replace2);

// 대괄호 제거
String s3 = &quot;[123234324345]&quot;;
String replace3 = s3.replaceAll(&quot;[\\[\\]]&quot;, &quot;&quot;);
System.out.println(&quot;replace3 = &quot; + replace3);&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;180&quot; data-origin-height=&quot;80&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EJTjE/btsIAyfv5Yd/FAj9VY4iGEYgytIv9FpLB0/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EJTjE/btsIAyfv5Yd/FAj9VY4iGEYgytIv9FpLB0/img.webp&quot; data-alt=&quot;괄호 제거 정규식 사용 결과&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EJTjE/btsIAyfv5Yd/FAj9VY4iGEYgytIv9FpLB0/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEJTjE%2FbtsIAyfv5Yd%2FFAj9VY4iGEYgytIv9FpLB0%2Fimg.webp&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; alt=&quot;괄호 제거 정규식 사용 결과&quot; loading=&quot;lazy&quot; width=&quot;180&quot; height=&quot;80&quot; data-origin-width=&quot;180&quot; data-origin-height=&quot;80&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;괄호 제거 정규식 사용 결과&lt;/figcaption&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;
&lt;script src=&quot;https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-3244792068052716&quot;&gt;&lt;/script&gt;
&lt;!-- 중간-디스플레이-수평-1 --&gt; &lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block;&quot; data-ad-client=&quot;ca-pub-3244792068052716&quot; data-ad-slot=&quot;1629193049&quot; data-ad-format=&quot;auto&quot; data-full-width-responsive=&quot;true&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/div&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;h2 data-ke-size=&quot;size26&quot;&gt;특정 문자 사이 추출 정규식&amp;nbsp;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문자열에서 특정 문자 사이에 있는 내용을 추출하는 방법입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1721047272794&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;String s = &quot;131a4234534a5467&quot;;
String extractBetweenA = s.replaceAll(&quot;.*?a(.*?)a.*&quot;, &quot;$1&quot;);
System.out.println(&quot;extractBetweenA = &quot; + extractBetweenA);&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;189&quot; data-origin-height=&quot;29&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c8ijN1/btsIASEGbxJ/ogcy9auPGZoiGvY16lGgbK/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c8ijN1/btsIASEGbxJ/ogcy9auPGZoiGvY16lGgbK/img.webp&quot; data-alt=&quot;특정 문자 사이 내용 추출 결과&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c8ijN1/btsIASEGbxJ/ogcy9auPGZoiGvY16lGgbK/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc8ijN1%2FbtsIASEGbxJ%2Fogcy9auPGZoiGvY16lGgbK%2Fimg.webp&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; alt=&quot;특정 문자 사이 내용 추출 결과&quot; loading=&quot;lazy&quot; width=&quot;189&quot; height=&quot;29&quot; data-origin-width=&quot;189&quot; data-origin-height=&quot;29&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;특정 문자 사이 내용 추출 결과&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예제는 소문자 A 사이에 있는 문자열을 추출하는 정규식입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;replaceAll 메소드 두번째 매개변수로 사용된 $1는 첫 번째 캡처 그룹을 의미하며, &quot;a&quot; 사이에 있는 문자열만을 남기고 나머지 부분을 제거하게됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;괄호 안 문자 제거 정규식&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정규식을 사용하여 괄호 안에 있는 문자열을 제거하는 방법입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1721047691801&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;String s = &quot;1231(23423)4324&quot;;
String removeBetweenBrace = s.replaceAll(&quot;\\(.*?\\)&quot;, &quot;&quot;);
System.out.println(&quot;removeBetweenBrace = &quot; + removeBetweenBrace);

String removeStringInBrace = s.replaceAll(&quot;\\((.*?)\\)&quot;, &quot;()&quot;);
System.out.println(&quot;removeStringInBrace = &quot; + removeStringInBrace);&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;241&quot; data-origin-height=&quot;48&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b5ytYj/btsIzSZNK65/gFt32AR4FZlsZXhVWIbkcK/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b5ytYj/btsIzSZNK65/gFt32AR4FZlsZXhVWIbkcK/img.webp&quot; data-alt=&quot;괄호 안 문자열 제거 결과&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b5ytYj/btsIzSZNK65/gFt32AR4FZlsZXhVWIbkcK/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb5ytYj%2FbtsIzSZNK65%2FgFt32AR4FZlsZXhVWIbkcK%2Fimg.webp&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; alt=&quot;괄호 안 문자열 제거 결과&quot; loading=&quot;lazy&quot; width=&quot;241&quot; height=&quot;48&quot; data-origin-width=&quot;241&quot; data-origin-height=&quot;48&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;괄호 안 문자열 제거 결과&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;괄호도 같이 제거하는 정규식은 단순하지만, 괄호를 제거하지 않는 방식은 조금 다릅니다.&lt;/p&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;li&gt;&quot;()&quot;는 괄호 안의 내용을 빈 문자열로 대체합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;읽으면 좋은 글&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://priming.tistory.com/17&quot; rel=&quot;noopener&quot;&gt;[Java] String - replace, replaceAll : 다른 문자열로 대체&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1721047962136&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] String - replace, replaceAll : 다른 문자열로 대체&quot; data-og-description=&quot;replace와 replaceAll은 문자열의 일부를 다른 문자열로 대체해주는 메소드입니다.&amp;nbsp;replace(char oldChar, char newChar)문자열에서 특정 문자를 찾아서 새로운 문자열로 바꿔주는 메소드입니다.&amp;nbsp;String s = &amp;quot;abc &quot; data-og-host=&quot;priming.tistory.com&quot; data-og-source-url=&quot;https://priming.tistory.com/17&quot; data-og-url=&quot;https://priming.tistory.com/17&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/CWUQD/hyWzucD4Te/19BcQHpBXYfGdDKmQ8Kl01/img.png?width=251&amp;amp;height=93&amp;amp;face=0_0_251_93,https://scrap.kakaocdn.net/dn/baVDzO/hyWCz4qPAC/5bDHYjdW25KAv4mDHkQMGk/img.png?width=251&amp;amp;height=93&amp;amp;face=0_0_251_93&quot;&gt;&lt;a href=&quot;https://priming.tistory.com/17&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://priming.tistory.com/17&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/CWUQD/hyWzucD4Te/19BcQHpBXYfGdDKmQ8Kl01/img.png?width=251&amp;amp;height=93&amp;amp;face=0_0_251_93,https://scrap.kakaocdn.net/dn/baVDzO/hyWCz4qPAC/5bDHYjdW25KAv4mDHkQMGk/img.png?width=251&amp;amp;height=93&amp;amp;face=0_0_251_93');&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 - replace, replaceAll : 다른 문자열로 대체&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;replace와 replaceAll은 문자열의 일부를 다른 문자열로 대체해주는 메소드입니다.&amp;nbsp;replace(char oldChar, char newChar)문자열에서 특정 문자를 찾아서 새로운 문자열로 바꿔주는 메소드입니다.&amp;nbsp;String s = &quot;abc&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;priming.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>
      <category>Study/java</category>
      <category>정규식</category>
      <author>priming</author>
      <guid isPermaLink="true">https://priming.tistory.com/161</guid>
      <comments>https://priming.tistory.com/161#entry161comment</comments>
      <pubDate>Mon, 15 Jul 2024 21:50:40 +0900</pubDate>
    </item>
    <item>
      <title>[Git] git clone 명령어 사용법</title>
      <link>https://priming.tistory.com/160</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;git clone이란?&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;git clone 명령어는 Git 저장소(repository)를 복제(clone)하는 데 사용되는 명령어입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원격 저장소(remote repository)에 있는 프로젝트를 로컬 컴퓨터에 그대로 복사하여 가져오는 기능을 수행하며, 주로 프로젝트의 소스 코드를 처음으로 받아올 때 사용됩니다.&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;h2 data-ke-size=&quot;size26&quot;&gt;git clone 명령어 사용법&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;git clone 명령어의 사용법은 매우 간단합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 명령어는 윈도우, Mac, Linux 운영체제 모두에서 사용 가능합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기본적인 사용법은 다음과 같습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1720189417777&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;git clone &amp;lt;리포지토리 주소&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;453&quot; data-origin-height=&quot;122&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Gym0K/btsIqNXnZyR/Z9e9iR97xJKC0ZuhkmKHL0/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Gym0K/btsIqNXnZyR/Z9e9iR97xJKC0ZuhkmKHL0/img.webp&quot; data-alt=&quot;git clone 명령어 실행&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Gym0K/btsIqNXnZyR/Z9e9iR97xJKC0ZuhkmKHL0/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGym0K%2FbtsIqNXnZyR%2FZ9e9iR97xJKC0ZuhkmKHL0%2Fimg.webp&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; alt=&quot;git clone 명령어 실행&quot; loading=&quot;lazy&quot; width=&quot;453&quot; height=&quot;122&quot; data-origin-width=&quot;453&quot; data-origin-height=&quot;122&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;git clone 명령어 실행&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;git clone 명령어를 실행하면 실행한 경로에 리포지토리 이름으로 폴더가 생성됩니다.&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_1720190185252&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;git clone &amp;lt;리포지토리 주소&amp;gt; &amp;lt;경로&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;470&quot; data-origin-height=&quot;117&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bXvHuM/btsIpt6ZuLu/UDobHm06Ed0uYCsHxrFzhK/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bXvHuM/btsIpt6ZuLu/UDobHm06Ed0uYCsHxrFzhK/img.webp&quot; data-alt=&quot;git clone 실행 시 폴더명 변경&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bXvHuM/btsIpt6ZuLu/UDobHm06Ed0uYCsHxrFzhK/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbXvHuM%2FbtsIpt6ZuLu%2FUDobHm06Ed0uYCsHxrFzhK%2Fimg.webp&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; alt=&quot;git clone 실행 시 폴더명 변경&quot; loading=&quot;lazy&quot; width=&quot;470&quot; height=&quot;117&quot; data-origin-width=&quot;470&quot; data-origin-height=&quot;117&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;git clone 실행 시 폴더명 변경&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예시처럼 경로를 ./TEST로 입력하면 현재 경로에 TEST라는 폴더 내부에 리포지토리 코드를 복사합니다.&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;div&gt;
&lt;script src=&quot;https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-3244792068052716&quot;&gt;&lt;/script&gt;
&lt;!-- 중간-디스플레이-수평-1 --&gt; &lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block;&quot; data-ad-client=&quot;ca-pub-3244792068052716&quot; data-ad-slot=&quot;1629193049&quot; data-ad-format=&quot;auto&quot; data-full-width-responsive=&quot;true&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/div&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;h2 data-ke-size=&quot;size26&quot;&gt;git clone 명령어 옵션&amp;nbsp;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;--depth&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 옵션은 저장소의 히스토리를 얕게(clone shallowly) 복제합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;쉽게 말하면, 지정한 수의 최근 커밋만 복제합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1720190536086&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;git clone --depth 1 https://github.com/username/repository.git&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;&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;--branch&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특정 브랜치를 복제합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1720190558133&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;git clone --branch branch_name https://github.com/username/repository.git&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 명령어는 branch_name이라는 브랜치만 복제합니다.&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;h2 data-ke-size=&quot;size26&quot;&gt;git clone 명령어 실행 결과&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;git clone 명령어를 실행하면 다음과 같은 일이 발생합니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;원격 저장소의 모든 파일과 디렉토리가 로컬 디렉토리에 복사됩니다.&lt;/li&gt;
&lt;li&gt;저장소의 전체 히스토리가 로컬로 복제됩니다.&lt;/li&gt;
&lt;li&gt;로컬 저장소의 origin 원격 설정이 복제된 원격 저장소로 설정됩니다.&lt;/li&gt;
&lt;li&gt;기본적으로 복제된 저장소는 현재 브랜치를 master 또는 main 브랜치로 체크아웃(Checkout)합니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;읽으면 좋은 글&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://priming.tistory.com/158&quot; rel=&quot;noopener&quot;&gt;[Git] Intellij에서 github gitlab 프로젝트 가져오기(clone)&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1720189465517&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;[Git] Intellij에서 github gitlab 프로젝트 가져오기(clone)&quot; data-og-description=&quot;인텔리제이에서 깃허브와 깃랩 리포지토리 프로젝트 코드를 가져오는 방법입니다.SSH 방식이 아닌 Https 방식으로 진행합니다.사용한 인텔리제이는 Ultimate 버전이고, 윈도우에서 진행하였습니다.&quot; data-og-host=&quot;priming.tistory.com&quot; data-og-source-url=&quot;https://priming.tistory.com/158&quot; data-og-url=&quot;https://priming.tistory.com/158&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/eXNGx/hyWvKeZfTI/mXuqoDMXoVX9oXcePJVfL1/img.jpg?width=800&amp;amp;height=279&amp;amp;face=0_0_800_279,https://scrap.kakaocdn.net/dn/ihZHq/hyWvQzv4RZ/zi6aYneKKjSTo0bHDPJWt0/img.jpg?width=800&amp;amp;height=279&amp;amp;face=0_0_800_279&quot;&gt;&lt;a href=&quot;https://priming.tistory.com/158&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://priming.tistory.com/158&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/eXNGx/hyWvKeZfTI/mXuqoDMXoVX9oXcePJVfL1/img.jpg?width=800&amp;amp;height=279&amp;amp;face=0_0_800_279,https://scrap.kakaocdn.net/dn/ihZHq/hyWvQzv4RZ/zi6aYneKKjSTo0bHDPJWt0/img.jpg?width=800&amp;amp;height=279&amp;amp;face=0_0_800_279');&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;[Git] Intellij에서 github gitlab 프로젝트 가져오기(clone)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;인텔리제이에서 깃허브와 깃랩 리포지토리 프로젝트 코드를 가져오는 방법입니다.SSH 방식이 아닌 Https 방식으로 진행합니다.사용한 인텔리제이는 Ultimate 버전이고, 윈도우에서 진행하였습니다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;priming.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;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://priming.tistory.com/159&quot; rel=&quot;noopener&quot;&gt;[Git] VSCode git repository 연결 방법(clone), 확장 프로그램 추천&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1720189372616&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;[Git] VSCode git repository 연결 방법(clone), 확장 프로그램 추천&quot; data-og-description=&quot;VSCode(Visual Studio Code)에서 git repository clone을 사용하는 방법과 VSCode에서 설치하기 좋은 git 관련 확장 프로그램(extensions)에 대한 설명입니다.&amp;nbsp;VSCode에서 github repository 연동1. Ctrl + Shift + P를 누르거나&quot; data-og-host=&quot;priming.tistory.com&quot; data-og-source-url=&quot;https://priming.tistory.com/159&quot; data-og-url=&quot;https://priming.tistory.com/159&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/vV4L4/hyWvVngfow/DQSCktEq5itBFhdFtvqMJ1/img.jpg?width=448&amp;amp;height=89&amp;amp;face=0_0_448_89,https://scrap.kakaocdn.net/dn/bZIgze/hyWvOaDbar/WU9hMZlZOv882ffKZn0urk/img.jpg?width=448&amp;amp;height=89&amp;amp;face=0_0_448_89&quot;&gt;&lt;a href=&quot;https://priming.tistory.com/159&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://priming.tistory.com/159&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/vV4L4/hyWvVngfow/DQSCktEq5itBFhdFtvqMJ1/img.jpg?width=448&amp;amp;height=89&amp;amp;face=0_0_448_89,https://scrap.kakaocdn.net/dn/bZIgze/hyWvOaDbar/WU9hMZlZOv882ffKZn0urk/img.jpg?width=448&amp;amp;height=89&amp;amp;face=0_0_448_89');&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;[Git] VSCode git repository 연결 방법(clone), 확장 프로그램 추천&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;VSCode(Visual Studio Code)에서 git repository clone을 사용하는 방법과 VSCode에서 설치하기 좋은 git 관련 확장 프로그램(extensions)에 대한 설명입니다.&amp;nbsp;VSCode에서 github repository 연동1. Ctrl + Shift + P를 누르거나&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;priming.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>
      <category>Study/git</category>
      <category>GIT</category>
      <category>git clone</category>
      <category>git clone 명령어</category>
      <category>git clone이란</category>
      <author>priming</author>
      <guid isPermaLink="true">https://priming.tistory.com/160</guid>
      <comments>https://priming.tistory.com/160#entry160comment</comments>
      <pubDate>Fri, 5 Jul 2024 23:44:38 +0900</pubDate>
    </item>
    <item>
      <title>[Git] VSCode git repository 연결 방법(clone), 확장 프로그램 추천</title>
      <link>https://priming.tistory.com/159</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;VSCode(Visual Studio Code)에서 github repository clone을 사용하는 방법과 VSCode에서 설치하기 좋은 git 관련 확장 프로그램(extensions)에 대한 설명입니다.&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;VSCode가 아닌 다른 개발 도구를 사용중이시면 아래 글을 참조하시면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://priming.tistory.com/158&quot; rel=&quot;noopener&quot;&gt;[Git] Intellij git clone 사용법 바로가기&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://priming.tistory.com/163&quot; rel=&quot;noopener&quot;&gt;[Git] Spring Tool Suite(STS) 4 clone 사용법 바로가기&lt;/a&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;h2 data-ke-size=&quot;size26&quot;&gt;VSCode에서 github repository 연동&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. Ctrl + Shift + P를 누르거나 상단 메뉴에서 Help &amp;gt; Show All Commands로 들어갑니다.&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;448&quot; data-origin-height=&quot;89&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bvxPLt/btsIpixMTFf/wBcIm5Iptw8MZwr1sk4kj1/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bvxPLt/btsIpixMTFf/wBcIm5Iptw8MZwr1sk4kj1/img.webp&quot; data-alt=&quot;Show All Commands 메뉴 선택&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bvxPLt/btsIpixMTFf/wBcIm5Iptw8MZwr1sk4kj1/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbvxPLt%2FbtsIpixMTFf%2FwBcIm5Iptw8MZwr1sk4kj1%2Fimg.webp&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; alt=&quot;Show All Commands 메뉴 선택&quot; loading=&quot;lazy&quot; width=&quot;448&quot; height=&quot;89&quot; data-origin-width=&quot;448&quot; data-origin-height=&quot;89&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Show All Commands 메뉴 선택&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2. git clone을 검색합니다.&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;666&quot; data-origin-height=&quot;75&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rUjIx/btsIpYFmHxr/3Wx5o8HgOUo0xtKLKPv5xk/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rUjIx/btsIpYFmHxr/3Wx5o8HgOUo0xtKLKPv5xk/img.webp&quot; data-alt=&quot;git clone 검색&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rUjIx/btsIpYFmHxr/3Wx5o8HgOUo0xtKLKPv5xk/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrUjIx%2FbtsIpYFmHxr%2F3Wx5o8HgOUo0xtKLKPv5xk%2Fimg.webp&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; alt=&quot;git clone 검색&quot; loading=&quot;lazy&quot; width=&quot;666&quot; height=&quot;75&quot; data-origin-width=&quot;666&quot; data-origin-height=&quot;75&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;git clone 검색&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3. 리포지토리 URL 입력 창이 나오면 clone 하고싶은 리포지토리 URL을 입력합니다.&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;617&quot; data-origin-height=&quot;102&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dCoABA/btsIpJIunaD/5IY3xDanpD1MHMBF7J82U1/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dCoABA/btsIpJIunaD/5IY3xDanpD1MHMBF7J82U1/img.webp&quot; data-alt=&quot;리포지토리 URL 입력&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dCoABA/btsIpJIunaD/5IY3xDanpD1MHMBF7J82U1/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdCoABA%2FbtsIpJIunaD%2F5IY3xDanpD1MHMBF7J82U1%2Fimg.webp&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; alt=&quot;리포지토리 URL 입력&quot; loading=&quot;lazy&quot; width=&quot;617&quot; height=&quot;102&quot; data-origin-width=&quot;617&quot; data-origin-height=&quot;102&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;리포지토리 URL 입력&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;4. 프로젝트를 clone할 경로를 선택합니다.&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;617&quot; data-origin-height=&quot;467&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dWGcHw/btsIptFUD1V/trkbRwCgcomXg5dGHaZTik/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dWGcHw/btsIptFUD1V/trkbRwCgcomXg5dGHaZTik/img.webp&quot; data-alt=&quot;프로젝트 clone 경로 선택&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dWGcHw/btsIptFUD1V/trkbRwCgcomXg5dGHaZTik/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdWGcHw%2FbtsIptFUD1V%2FtrkbRwCgcomXg5dGHaZTik%2Fimg.webp&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; alt=&quot;프로젝트 clone 경로 선택&quot; loading=&quot;lazy&quot; width=&quot;617&quot; height=&quot;467&quot; data-origin-width=&quot;617&quot; data-origin-height=&quot;467&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;프로젝트 clone 경로 선택&lt;/figcaption&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;예를 들어 A 폴더를 선택하면 A 폴더 밑에 리포지토리 이름으로 된 폴더가 생성됩니다.&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;5. git 리포지토리 clone이 완료되었습니다.&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;543&quot; data-origin-height=&quot;118&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/2pLFQ/btsIqNwkj7O/aMkVcgtiNwdmsqrExliNz0/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/2pLFQ/btsIqNwkj7O/aMkVcgtiNwdmsqrExliNz0/img.webp&quot; data-alt=&quot;clone 완료&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/2pLFQ/btsIqNwkj7O/aMkVcgtiNwdmsqrExliNz0/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2pLFQ%2FbtsIqNwkj7O%2FaMkVcgtiNwdmsqrExliNz0%2Fimg.webp&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; alt=&quot;clone 완료&quot; loading=&quot;lazy&quot; width=&quot;543&quot; height=&quot;118&quot; data-origin-width=&quot;543&quot; data-origin-height=&quot;118&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;clone 완료&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;
&lt;script src=&quot;https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-3244792068052716&quot;&gt;&lt;/script&gt;
&lt;!-- 중간-디스플레이-수평-1 --&gt; &lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block;&quot; data-ad-client=&quot;ca-pub-3244792068052716&quot; data-ad-slot=&quot;1629193049&quot; data-ad-format=&quot;auto&quot; data-full-width-responsive=&quot;true&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/div&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;h2 data-ke-size=&quot;size26&quot;&gt;VSCode git 확장 프로그램(extensions) 추천&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;GitLens&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;624&quot; data-origin-height=&quot;163&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IlDx1/btsIoLAqBep/f3bjF5IiZuDQxA3qtdkbmK/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IlDx1/btsIoLAqBep/f3bjF5IiZuDQxA3qtdkbmK/img.webp&quot; data-alt=&quot;확장 프로그램 GitLens&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IlDx1/btsIoLAqBep/f3bjF5IiZuDQxA3qtdkbmK/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIlDx1%2FbtsIoLAqBep%2Ff3bjF5IiZuDQxA3qtdkbmK%2Fimg.webp&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; alt=&quot;확장 프로그램 GitLens&quot; loading=&quot;lazy&quot; width=&quot;624&quot; height=&quot;163&quot; data-origin-width=&quot;624&quot; data-origin-height=&quot;163&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;확장 프로그램 GitLens&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GitLens는 코드를 수정한 사람이 누구인지, 언제 수정되었는지 표시하거나 파일의 변동 내역, 브랜치 정보 등 git의 여러 기능들을 시각적으로 보기 좋게 GUI를 제공하는 확장 프로그램입니다.&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.gitkraken.com/gitlens&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;GitLens 공식 사이트 바로가기&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1720188618184&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;GitLens | Free Git Extension for Visual Studio Code&quot; data-og-description=&quot;Millions of devs and teams choose GitLens to tap into the full power of Git in VS Code. Install it for free and start a Pro trial to unlock additional GitLens+ features on private repos.&quot; data-og-host=&quot;www.gitkraken.com&quot; data-og-source-url=&quot;https://www.gitkraken.com/gitlens&quot; data-og-url=&quot;https://www.gitkraken.com/gitlens&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bkl6CE/hyWvP1FcPq/7NZSsSCQTUcc5EKZP8TSKk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/chF3fw/hyWvMDSnAD/ZwsjRZccUfCUSSUnzNOwd0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/boTorw/hyWvJf6xoU/Lab1yCRzb0LG63kbc95qu1/img.png?width=1024&amp;amp;height=577&amp;amp;face=0_0_1024_577&quot;&gt;&lt;a href=&quot;https://www.gitkraken.com/gitlens&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.gitkraken.com/gitlens&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bkl6CE/hyWvP1FcPq/7NZSsSCQTUcc5EKZP8TSKk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/chF3fw/hyWvMDSnAD/ZwsjRZccUfCUSSUnzNOwd0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/boTorw/hyWvJf6xoU/Lab1yCRzb0LG63kbc95qu1/img.png?width=1024&amp;amp;height=577&amp;amp;face=0_0_1024_577');&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;GitLens | Free Git Extension for Visual Studio Code&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Millions of devs and teams choose GitLens to tap into the full power of Git in VS Code. Install it for free and start a Pro trial to unlock additional GitLens+ features on private repos.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.gitkraken.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;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Git Graph&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;651&quot; data-origin-height=&quot;155&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/coMKuo/btsIrdO2NtD/G3h5DZEIW8gK4oXKYgGrek/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/coMKuo/btsIrdO2NtD/G3h5DZEIW8gK4oXKYgGrek/img.webp&quot; data-alt=&quot;확장 프로그램 Git Graph&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/coMKuo/btsIrdO2NtD/G3h5DZEIW8gK4oXKYgGrek/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcoMKuo%2FbtsIrdO2NtD%2FG3h5DZEIW8gK4oXKYgGrek%2Fimg.webp&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;651&quot; height=&quot;155&quot; data-origin-width=&quot;651&quot; data-origin-height=&quot;155&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;확장 프로그램 Git Graph&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Git Graph는 리포지토리의 커밋 내역을 그래프로 보고, 관리할 수 있도록 해주는 확장 프로그램입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/mhutchie/vscode-git-graph&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;Git Graph 공식 사이트 바로가기&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1720188666574&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 - mhutchie/vscode-git-graph: View a Git Graph of your repository in Visual Studio Code, and easily perform Git actions fr&quot; data-og-description=&quot;View a Git Graph of your repository in Visual Studio Code, and easily perform Git actions from the graph. - mhutchie/vscode-git-graph&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/mhutchie/vscode-git-graph&quot; data-og-url=&quot;https://github.com/mhutchie/vscode-git-graph&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/c7hGbG/hyWvMDSoy2/hMwWfDCtzCIwR7jHT75WGK/img.png?width=1200&amp;amp;height=600&amp;amp;face=976_148_1056_236&quot;&gt;&lt;a href=&quot;https://github.com/mhutchie/vscode-git-graph&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/mhutchie/vscode-git-graph&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/c7hGbG/hyWvMDSoy2/hMwWfDCtzCIwR7jHT75WGK/img.png?width=1200&amp;amp;height=600&amp;amp;face=976_148_1056_236');&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 - mhutchie/vscode-git-graph: View a Git Graph of your repository in Visual Studio Code, and easily perform Git actions fr&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;View a Git Graph of your repository in Visual Studio Code, and easily perform Git actions from the graph. - mhutchie/vscode-git-graph&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;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Git History&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;562&quot; data-origin-height=&quot;157&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dFjE8i/btsIo6Ebhm4/k73Y8AFaxUPN6KkQRhidf1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dFjE8i/btsIo6Ebhm4/k73Y8AFaxUPN6KkQRhidf1/img.png&quot; data-alt=&quot;확장 프로그램 Git History&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dFjE8i/btsIo6Ebhm4/k73Y8AFaxUPN6KkQRhidf1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdFjE8i%2FbtsIo6Ebhm4%2Fk73Y8AFaxUPN6KkQRhidf1%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; alt=&quot;확장 프로그램 Git History&quot; loading=&quot;lazy&quot; width=&quot;562&quot; height=&quot;157&quot; data-origin-width=&quot;562&quot; data-origin-height=&quot;157&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;확장 프로그램 Git History&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Git History는 git log 검색, 커밋 비교 및 관리 기능을 제공하는 확장 프로그램입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/DonJayamanne/gitHistoryVSCode/blob/main/README.md&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;Git History 공식 사이트 바로가기&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1720188519882&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;gitHistoryVSCode/README.md at main &amp;middot; DonJayamanne/gitHistoryVSCode&quot; data-og-description=&quot;Git History for Visual Studio Code. Contribute to DonJayamanne/gitHistoryVSCode development by creating an account on GitHub.&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/DonJayamanne/gitHistoryVSCode/blob/main/README.md&quot; data-og-url=&quot;https://github.com/DonJayamanne/gitHistoryVSCode/blob/main/README.md&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://github.com/DonJayamanne/gitHistoryVSCode/blob/main/README.md&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/DonJayamanne/gitHistoryVSCode/blob/main/README.md&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&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;gitHistoryVSCode/README.md at main &amp;middot; DonJayamanne/gitHistoryVSCode&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Git History for Visual Studio Code. Contribute to DonJayamanne/gitHistoryVSCode development by creating an account on GitHub.&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;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;h2 data-ke-size=&quot;size26&quot;&gt;읽으면 좋은 글&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://priming.tistory.com/160&quot; rel=&quot;noopener&quot;&gt;[Git] git clone 명령어 사용법&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1722048676109&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;[Git] git clone 명령어 사용법&quot; data-og-description=&quot;git clone이란?git clone 명령어는 Git 저장소(repository)를 복제(clone)하는 데 사용되는 명령어입니다.원격 저장소(remote repository)에 있는 프로젝트를 로컬 컴퓨터에 그대로 복사하여 가져오는 기능을 수&quot; data-og-host=&quot;priming.tistory.com&quot; data-og-source-url=&quot;https://priming.tistory.com/160&quot; data-og-url=&quot;https://priming.tistory.com/160&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/UO59U/hyWCJBixoI/60KeibF7YRWJasRRkms2s1/img.jpg?width=453&amp;amp;height=122&amp;amp;face=0_0_453_122,https://scrap.kakaocdn.net/dn/pcD3w/hyWGPmj8P4/usgHQEYK1tpyQ73iQlLam0/img.jpg?width=453&amp;amp;height=122&amp;amp;face=0_0_453_122&quot;&gt;&lt;a href=&quot;https://priming.tistory.com/160&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://priming.tistory.com/160&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/UO59U/hyWCJBixoI/60KeibF7YRWJasRRkms2s1/img.jpg?width=453&amp;amp;height=122&amp;amp;face=0_0_453_122,https://scrap.kakaocdn.net/dn/pcD3w/hyWGPmj8P4/usgHQEYK1tpyQ73iQlLam0/img.jpg?width=453&amp;amp;height=122&amp;amp;face=0_0_453_122');&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;[Git] git clone 명령어 사용법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;git clone이란?git clone 명령어는 Git 저장소(repository)를 복제(clone)하는 데 사용되는 명령어입니다.원격 저장소(remote repository)에 있는 프로젝트를 로컬 컴퓨터에 그대로 복사하여 가져오는 기능을 수&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;priming.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>
      <category>Study/git</category>
      <author>priming</author>
      <guid isPermaLink="true">https://priming.tistory.com/159</guid>
      <comments>https://priming.tistory.com/159#entry159comment</comments>
      <pubDate>Fri, 5 Jul 2024 23:12:25 +0900</pubDate>
    </item>
    <item>
      <title>[Git] Intellij에서 github gitlab 프로젝트 가져오기(clone)</title>
      <link>https://priming.tistory.com/158</link>
      <description>&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;SSH 방식이 아닌 Https 방식으로 진행합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용한 인텔리제이는 Ultimate 버전이고, 윈도우에서 진행하였습니다.&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;Intellij가 아닌 다른 개발 도구를 사용하고 계신다면 아래 글을 참조하시면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://priming.tistory.com/159&quot; rel=&quot;noopener&quot;&gt;VSCode git repository clone 사용법 바로가기&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://priming.tistory.com/163&quot; rel=&quot;noopener&quot;&gt;Spring Tool Suite(STS) clone 사용법 바로가기&lt;/a&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;h2 data-ke-size=&quot;size26&quot;&gt;Intellij에서 github 프로젝트 가져오기&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;github 리포지토리 준비&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;테스트에 사용할 github 리포지토리입니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1207&quot; data-origin-height=&quot;421&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/reUZt/btsIoBLoDpN/CvmjF3pHygDRwJx7CQkzMK/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/reUZt/btsIoBLoDpN/CvmjF3pHygDRwJx7CQkzMK/img.webp&quot; data-alt=&quot;가져올 github repository&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/reUZt/btsIoBLoDpN/CvmjF3pHygDRwJx7CQkzMK/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FreUZt%2FbtsIoBLoDpN%2FCvmjF3pHygDRwJx7CQkzMK%2Fimg.webp&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; alt=&quot;가져올 github repository&quot; loading=&quot;lazy&quot; width=&quot;1207&quot; height=&quot;421&quot; data-origin-width=&quot;1207&quot; data-origin-height=&quot;421&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;가져올 github repository&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;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Github 계정 인증, 등록하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인텔리제이에 Github 계정을 인증하고 등록하는 방법입니다.&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. 상단 메뉴 VCS &amp;gt; Get from Version Control 메뉴를 클릭합니다.&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;251&quot; data-origin-height=&quot;454&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ZsmB2/btsIo8BXWDw/pBQhHuuWESAe1d91ATWTE0/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ZsmB2/btsIo8BXWDw/pBQhHuuWESAe1d91ATWTE0/img.webp&quot; data-alt=&quot;Get from Version Control 메뉴&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ZsmB2/btsIo8BXWDw/pBQhHuuWESAe1d91ATWTE0/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZsmB2%2FbtsIo8BXWDw%2FpBQhHuuWESAe1d91ATWTE0%2Fimg.webp&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; alt=&quot;Get from Version Control 메뉴&quot; loading=&quot;lazy&quot; width=&quot;251&quot; height=&quot;454&quot; data-origin-width=&quot;251&quot; data-origin-height=&quot;454&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Get from Version Control 메뉴&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2. Get from Version Control 창에서 LOG IN VIA GITHUB 버튼을 클릭합니다.&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;794&quot; data-origin-height=&quot;596&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bzot4l/btsIoKO2W6d/aVuYKxqBpLJIWxseYUBCDK/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bzot4l/btsIoKO2W6d/aVuYKxqBpLJIWxseYUBCDK/img.webp&quot; data-alt=&quot;LOG IN VIA GITHUB 버튼 위치&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bzot4l/btsIoKO2W6d/aVuYKxqBpLJIWxseYUBCDK/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbzot4l%2FbtsIoKO2W6d%2FaVuYKxqBpLJIWxseYUBCDK%2Fimg.webp&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; alt=&quot;LOG IN VIA GITHUB 버튼 위치&quot; loading=&quot;lazy&quot; width=&quot;794&quot; height=&quot;596&quot; data-origin-width=&quot;794&quot; data-origin-height=&quot;596&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;LOG IN VIA GITHUB 버튼 위치&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3. 버튼을 클릭하면 Jetbrains 페이지로 이동합니다. 아래에 Authorize in Github 버튼을 클릭합니다.&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;770&quot; data-origin-height=&quot;243&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Esb3p/btsIoXUW9dj/WWjayzGzKCtAlmcgPktd30/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Esb3p/btsIoXUW9dj/WWjayzGzKCtAlmcgPktd30/img.webp&quot; data-alt=&quot;JetBrains IDE에 Github 계정 인증&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Esb3p/btsIoXUW9dj/WWjayzGzKCtAlmcgPktd30/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEsb3p%2FbtsIoXUW9dj%2FWWjayzGzKCtAlmcgPktd30%2Fimg.webp&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; alt=&quot;JetBrains IDE에 Github 계정 인증&quot; loading=&quot;lazy&quot; width=&quot;770&quot; height=&quot;243&quot; data-origin-width=&quot;770&quot; data-origin-height=&quot;243&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;JetBrains IDE에 Github 계정 인증&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;4. Github 계정으로 로그인합니다.&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;321&quot; data-origin-height=&quot;641&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bGjcWW/btsIpaT5XXE/sUfRnEikdGJKHDA83MIbVK/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bGjcWW/btsIpaT5XXE/sUfRnEikdGJKHDA83MIbVK/img.webp&quot; data-alt=&quot;github 계정 로그인&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bGjcWW/btsIpaT5XXE/sUfRnEikdGJKHDA83MIbVK/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbGjcWW%2FbtsIpaT5XXE%2FsUfRnEikdGJKHDA83MIbVK%2Fimg.webp&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; alt=&quot;github 계정 로그인&quot; loading=&quot;lazy&quot; width=&quot;321&quot; height=&quot;641&quot; data-origin-width=&quot;321&quot; data-origin-height=&quot;641&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;github 계정 로그인&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;&lt;b&gt;5. Github 계정으로 로그인하고 잠시 기다리면 인증이 완료됩니다.&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;643&quot; data-origin-height=&quot;174&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bCYSqA/btsIp9fwfKc/9KZH2kTBThEwD70WhZGEfk/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bCYSqA/btsIp9fwfKc/9KZH2kTBThEwD70WhZGEfk/img.webp&quot; data-alt=&quot;Github 계정 인증 완료&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bCYSqA/btsIp9fwfKc/9KZH2kTBThEwD70WhZGEfk/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbCYSqA%2FbtsIp9fwfKc%2F9KZH2kTBThEwD70WhZGEfk%2Fimg.webp&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; alt=&quot;Github 계정 인증 완료&quot; loading=&quot;lazy&quot; width=&quot;643&quot; height=&quot;174&quot; data-origin-width=&quot;643&quot; data-origin-height=&quot;174&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Github 계정 인증 완료&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;&lt;b&gt;6. Intellij에 Github 계정이 추가되었습니다.&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;794&quot; data-origin-height=&quot;592&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bztIVg/btsIrbKsWee/4eu4qUxlRlLJU4oRmhUY11/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bztIVg/btsIrbKsWee/4eu4qUxlRlLJU4oRmhUY11/img.webp&quot; data-alt=&quot;인텔리제이에 추가된 깃허브 계정&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bztIVg/btsIrbKsWee/4eu4qUxlRlLJU4oRmhUY11/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbztIVg%2FbtsIrbKsWee%2F4eu4qUxlRlLJU4oRmhUY11%2Fimg.webp&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; alt=&quot;인텔리제이에 추가된 깃허브 계정&quot; loading=&quot;lazy&quot; width=&quot;794&quot; height=&quot;592&quot; data-origin-width=&quot;794&quot; data-origin-height=&quot;592&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;인텔리제이에 추가된 깃허브 계정&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;Unable to load repositories 라고 나오긴 하는데 프로젝트를 clone하는데 영향을 주지는 않습니다.&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;div&gt;
&lt;script src=&quot;https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-3244792068052716&quot;&gt;&lt;/script&gt;
&lt;!-- 중간-디스플레이-수평-1 --&gt; &lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block;&quot; data-ad-client=&quot;ca-pub-3244792068052716&quot; data-ad-slot=&quot;1629193049&quot; data-ad-format=&quot;auto&quot; data-full-width-responsive=&quot;true&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/div&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;h3 data-ke-size=&quot;size23&quot;&gt;github repository clone 받기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인텔리제이에서 Github 리포지토리를 clone 받는 방법입니다.&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. github 프로젝트 주소를 복사합니다.&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;874&quot; data-origin-height=&quot;436&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/P6940/btsIoyOE2kC/h5dKAVXxRMJYHYOHJwdOy0/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/P6940/btsIoyOE2kC/h5dKAVXxRMJYHYOHJwdOy0/img.webp&quot; data-alt=&quot;github 리포지토리 주소(https)&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/P6940/btsIoyOE2kC/h5dKAVXxRMJYHYOHJwdOy0/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FP6940%2FbtsIoyOE2kC%2Fh5dKAVXxRMJYHYOHJwdOy0%2Fimg.webp&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; alt=&quot;github 리포지토리 주소(https)&quot; loading=&quot;lazy&quot; width=&quot;874&quot; height=&quot;436&quot; data-origin-width=&quot;874&quot; data-origin-height=&quot;436&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;github 리포지토리 주소(https)&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2. Get from Version Control에서 Repository URL에 복사한 주소를 붙여넣고 아래에 CLONE 버튼을 누릅니다.&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;794&quot; data-origin-height=&quot;593&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LsCu8/btsIpXGn6cw/UhEdULqdjxkFP8a3GE05WK/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LsCu8/btsIpXGn6cw/UhEdULqdjxkFP8a3GE05WK/img.webp&quot; data-alt=&quot;복사한 리포지토리 주소 붙여넣기 후 clone&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LsCu8/btsIpXGn6cw/UhEdULqdjxkFP8a3GE05WK/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLsCu8%2FbtsIpXGn6cw%2FUhEdULqdjxkFP8a3GE05WK%2Fimg.webp&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;794&quot; height=&quot;593&quot; data-origin-width=&quot;794&quot; data-origin-height=&quot;593&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;복사한 리포지토리 주소 붙여넣기 후 clone&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3. repository clone이 완료되었습니다.&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;986&quot; data-origin-height=&quot;278&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bFLh6C/btsIrax1ZUr/bzyT0VoF3DcfVFu6I8Qcz0/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bFLh6C/btsIrax1ZUr/bzyT0VoF3DcfVFu6I8Qcz0/img.webp&quot; data-alt=&quot;Intellij에서 Github 프로젝트 clone 완료&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bFLh6C/btsIrax1ZUr/bzyT0VoF3DcfVFu6I8Qcz0/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbFLh6C%2FbtsIrax1ZUr%2FbzyT0VoF3DcfVFu6I8Qcz0%2Fimg.webp&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; alt=&quot;Intellij에서 Github 프로젝트 clone 완료&quot; loading=&quot;lazy&quot; width=&quot;986&quot; height=&quot;278&quot; data-origin-width=&quot;986&quot; data-origin-height=&quot;278&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Intellij에서 Github 프로젝트 clone 완료&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;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Intellij에서 gitlab 프로젝트 가져오기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Gitlab 리포지토리를 clone 하는 방법입니다.&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;Gitlab 리포지토리 준비&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;테스트에 사용할 Gitlab 리포지토리입니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;932&quot; data-origin-height=&quot;732&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mrJ7s/btsIpH4UgrZ/K9bXx8FZCkwqyBg9K4S55k/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mrJ7s/btsIpH4UgrZ/K9bXx8FZCkwqyBg9K4S55k/img.webp&quot; data-alt=&quot;테스트용 Gitllab 프로젝트 생성&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mrJ7s/btsIpH4UgrZ/K9bXx8FZCkwqyBg9K4S55k/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmrJ7s%2FbtsIpH4UgrZ%2FK9bXx8FZCkwqyBg9K4S55k%2Fimg.webp&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; alt=&quot;테스트용 Gitllab 프로젝트 생성&quot; loading=&quot;lazy&quot; width=&quot;932&quot; height=&quot;732&quot; data-origin-width=&quot;932&quot; data-origin-height=&quot;732&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;테스트용 Gitllab 프로젝트 생성&lt;/figcaption&gt;
&lt;/figure&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;Gltlab 프로젝트 clone 받기&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;&lt;b&gt;1. Gitlab 프로젝트 주소를 복사합니다(Https).&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;942&quot; data-origin-height=&quot;598&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bR0399/btsIo8PwVMY/UX2HmTkA9m4MjX8zgtBLdk/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bR0399/btsIo8PwVMY/UX2HmTkA9m4MjX8zgtBLdk/img.webp&quot; data-alt=&quot;Gitlab 프로젝트의 Code 버튼 클릭&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bR0399/btsIo8PwVMY/UX2HmTkA9m4MjX8zgtBLdk/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbR0399%2FbtsIo8PwVMY%2FUX2HmTkA9m4MjX8zgtBLdk%2Fimg.webp&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; alt=&quot;Gitlab 프로젝트의 Code 버튼 클릭&quot; loading=&quot;lazy&quot; width=&quot;942&quot; height=&quot;598&quot; data-origin-width=&quot;942&quot; data-origin-height=&quot;598&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Gitlab 프로젝트의 Code 버튼 클릭&lt;/figcaption&gt;
&lt;/figure&gt;
&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;&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. 복사한 gitlab 주소를 붙여넣습니다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;github처럼 repository의 주소를 붙여넣으면 됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;795&quot; data-origin-height=&quot;594&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xelcN/btsIpIitFOt/9aIKd88oj8dKo34eVQZrO1/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xelcN/btsIpIitFOt/9aIKd88oj8dKo34eVQZrO1/img.webp&quot; data-alt=&quot;gitlab 프로젝트 경로 붙여넣기&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xelcN/btsIpIitFOt/9aIKd88oj8dKo34eVQZrO1/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxelcN%2FbtsIpIitFOt%2F9aIKd88oj8dKo34eVQZrO1%2Fimg.webp&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; alt=&quot;gitlab 프로젝트 경로 붙여넣기&quot; loading=&quot;lazy&quot; width=&quot;795&quot; height=&quot;594&quot; data-origin-width=&quot;795&quot; data-origin-height=&quot;594&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;gitlab 프로젝트 경로 붙여넣기&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이전에 github 프로젝트와 같은 폴더명으로 생성이 되는걸 방지하기 위해 뒤에 -gitlab을 붙였습니다.&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;3. gitlab 계정 인증을 진행합니다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;gitlab 계정으로 로그인합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;319&quot; data-origin-height=&quot;238&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b4hW58/btsIqwIkA0A/iaXEY1QMT50vstqJk1Omek/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b4hW58/btsIqwIkA0A/iaXEY1QMT50vstqJk1Omek/img.webp&quot; data-alt=&quot;gitlab 계정 로그인&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b4hW58/btsIqwIkA0A/iaXEY1QMT50vstqJk1Omek/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb4hW58%2FbtsIqwIkA0A%2FiaXEY1QMT50vstqJk1Omek%2Fimg.webp&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; alt=&quot;gitlab 계정 로그인&quot; loading=&quot;lazy&quot; width=&quot;319&quot; height=&quot;238&quot; data-origin-width=&quot;319&quot; data-origin-height=&quot;238&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;gitlab 계정 로그인&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;⚠️gitlab 계정이 소셜 계정이라서(ex. 구글 계정) 비밀번호가 없는 경우&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;965&quot; data-origin-height=&quot;440&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/04q6y/btsIpXl5lj4/KAqkW3j1CtpuhQRlozYY1k/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/04q6y/btsIpXl5lj4/KAqkW3j1CtpuhQRlozYY1k/img.webp&quot; data-alt=&quot;gitlab 계정 비밀번호 설정&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/04q6y/btsIpXl5lj4/KAqkW3j1CtpuhQRlozYY1k/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F04q6y%2FbtsIpXl5lj4%2FKAqkW3j1CtpuhQRlozYY1k%2Fimg.webp&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; alt=&quot;gitlab 계정 비밀번호 설정&quot; loading=&quot;lazy&quot; width=&quot;965&quot; height=&quot;440&quot; data-origin-width=&quot;965&quot; data-origin-height=&quot;440&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;gitlab 계정 비밀번호 설정&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;profile 페이지의 password 메뉴에서 비밀번호를 설정하면 됩니다.&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. gitlab 프로젝트 clone이 완료되었습니다.&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;988&quot; data-origin-height=&quot;264&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bshLby/btsIradJjww/GOrhwIDfMadYiSDtKwe4rK/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bshLby/btsIradJjww/GOrhwIDfMadYiSDtKwe4rK/img.webp&quot; data-alt=&quot;gitlab 프로젝트 clone 완료&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bshLby/btsIradJjww/GOrhwIDfMadYiSDtKwe4rK/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbshLby%2FbtsIradJjww%2FGOrhwIDfMadYiSDtKwe4rK%2Fimg.webp&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; alt=&quot;gitlab 프로젝트 clone 완료&quot; loading=&quot;lazy&quot; width=&quot;988&quot; height=&quot;264&quot; data-origin-width=&quot;988&quot; data-origin-height=&quot;264&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;gitlab 프로젝트 clone 완료&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;git clone 오류 발생하는 경우&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Unable to create destination directory&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;377&quot; data-origin-height=&quot;100&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c8hy85/btsIpAyarn3/1GDd7oKBPt4vOnW7R1q0Uk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c8hy85/btsIpAyarn3/1GDd7oKBPt4vOnW7R1q0Uk/img.png&quot; data-alt=&quot;Unable to create destination directory&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c8hy85/btsIpAyarn3/1GDd7oKBPt4vOnW7R1q0Uk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc8hy85%2FbtsIpAyarn3%2F1GDd7oKBPt4vOnW7R1q0Uk%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; alt=&quot;Unable to create destination directory&quot; loading=&quot;lazy&quot; width=&quot;377&quot; height=&quot;100&quot; data-origin-width=&quot;377&quot; data-origin-height=&quot;100&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Unable to create destination directory&lt;/figcaption&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;저는 경로가 존재하지 않아서 이 오류가 발생했고, 정상경로로 변경하니 해결되었습니다.&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;h2 data-ke-size=&quot;size26&quot;&gt;읽으면 좋은 글&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://priming.tistory.com/160&quot; rel=&quot;noopener&quot;&gt;[Git] git clone 명령어 사용법&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1722048624217&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;[Git] git clone 명령어 사용법&quot; data-og-description=&quot;git clone이란?git clone 명령어는 Git 저장소(repository)를 복제(clone)하는 데 사용되는 명령어입니다.원격 저장소(remote repository)에 있는 프로젝트를 로컬 컴퓨터에 그대로 복사하여 가져오는 기능을 수&quot; data-og-host=&quot;priming.tistory.com&quot; data-og-source-url=&quot;https://priming.tistory.com/160&quot; data-og-url=&quot;https://priming.tistory.com/160&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/UO59U/hyWCJBixoI/60KeibF7YRWJasRRkms2s1/img.jpg?width=453&amp;amp;height=122&amp;amp;face=0_0_453_122,https://scrap.kakaocdn.net/dn/pcD3w/hyWGPmj8P4/usgHQEYK1tpyQ73iQlLam0/img.jpg?width=453&amp;amp;height=122&amp;amp;face=0_0_453_122&quot;&gt;&lt;a href=&quot;https://priming.tistory.com/160&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://priming.tistory.com/160&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/UO59U/hyWCJBixoI/60KeibF7YRWJasRRkms2s1/img.jpg?width=453&amp;amp;height=122&amp;amp;face=0_0_453_122,https://scrap.kakaocdn.net/dn/pcD3w/hyWGPmj8P4/usgHQEYK1tpyQ73iQlLam0/img.jpg?width=453&amp;amp;height=122&amp;amp;face=0_0_453_122');&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;[Git] git clone 명령어 사용법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;git clone이란?git clone 명령어는 Git 저장소(repository)를 복제(clone)하는 데 사용되는 명령어입니다.원격 저장소(remote repository)에 있는 프로젝트를 로컬 컴퓨터에 그대로 복사하여 가져오는 기능을 수&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;priming.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>
      <category>Study/git</category>
      <category>GIT</category>
      <category>git clone</category>
      <category>Intellij</category>
      <author>priming</author>
      <guid isPermaLink="true">https://priming.tistory.com/158</guid>
      <comments>https://priming.tistory.com/158#entry158comment</comments>
      <pubDate>Fri, 5 Jul 2024 22:07:24 +0900</pubDate>
    </item>
    <item>
      <title>[MySQL] CONCAT 함수 사용 방법 정리</title>
      <link>https://priming.tistory.com/157</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;CONCAT이란?&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;concat 함수는 여러 개의 문자열을 하나로 결합할 때 사용합니다.&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://dev.mysql.com/doc/refman/8.4/en/string-functions.html#function_concat&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;MySQL CONCAT 함수 공식문서 바로가기&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1719832588930&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;MySQL :: MySQL 8.4 Reference Manual :: 14.8 String Functions and Operators&quot; data-og-description=&quot;14.8&amp;nbsp;String Functions and Operators Table&amp;nbsp;14.12&amp;nbsp;String Functions and Operators Name Description ASCII() Return numeric value of left-most character BIN() Return a string containing binary representation of a number BIT_LENGTH() Return length of argument&quot; data-og-host=&quot;dev.mysql.com&quot; data-og-source-url=&quot;https://dev.mysql.com/doc/refman/8.4/en/string-functions.html#function_concat&quot; data-og-url=&quot;https://dev.mysql.com/doc/refman/8.4/en/string-functions.html#function_concat&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://dev.mysql.com/doc/refman/8.4/en/string-functions.html#function_concat&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://dev.mysql.com/doc/refman/8.4/en/string-functions.html#function_concat&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&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 :: MySQL 8.4 Reference Manual :: 14.8 String Functions and Operators&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;14.8&amp;nbsp;String Functions and Operators Table&amp;nbsp;14.12&amp;nbsp;String Functions and Operators Name Description ASCII() Return numeric value of left-most character BIN() Return a string containing binary representation of a number BIT_LENGTH() Return length of argument&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;dev.mysql.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;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;CONCAT 함수 기본 사용법&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;합치고자 하는 문자열을 모두 인수로 넣어주면 됩니다.&lt;/p&gt;
&lt;pre id=&quot;code_1719740488850&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT CONCAT(&amp;lt;컬럼이나 텍스트&amp;gt;..)
FROM &amp;lt;테이블&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1719832710094&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 예시 쿼리
select Name, concat(CountryCode, ' - ', District)
from world.city;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;416&quot; data-origin-height=&quot;164&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cdc4px/btsIhVXpwWf/boVKjGq8HrEnn9amufkHBk/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cdc4px/btsIhVXpwWf/boVKjGq8HrEnn9amufkHBk/img.webp&quot; data-alt=&quot;CONCAT 함수 기본 사용&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cdc4px/btsIhVXpwWf/boVKjGq8HrEnn9amufkHBk/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcdc4px%2FbtsIhVXpwWf%2FboVKjGq8HrEnn9amufkHBk%2Fimg.webp&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; alt=&quot;CONCAT 함수 기본 사용&quot; loading=&quot;lazy&quot; width=&quot;416&quot; height=&quot;164&quot; data-origin-width=&quot;416&quot; data-origin-height=&quot;164&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;CONCAT 함수 기본 사용&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;concat 함수를 사용하면 concat 함수에 적용되어있는 컬럼이나 텍스트를 모두 합쳐진 결과가 나옵니다.&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;h2 data-ke-size=&quot;size26&quot;&gt;예제&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;like 절과 concat 함께 사용&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;WHERE 절에서 LIKE 조건으로 사용할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;LIKE 절과 CONCAT 함수를 사용하면 유연한 검색 조건을 만들 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1719832759558&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 예시 쿼리
select *
from world.city
where Name like concat('%', 'Kor', '%');&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;447&quot; data-origin-height=&quot;186&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cP80sL/btsIhSzHm3B/LQ4KlEnWCl6ZPmEm6woR10/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cP80sL/btsIhSzHm3B/LQ4KlEnWCl6ZPmEm6woR10/img.webp&quot; data-alt=&quot;WHERE LIKE 조건에 CONCAT 함수 사용&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cP80sL/btsIhSzHm3B/LQ4KlEnWCl6ZPmEm6woR10/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcP80sL%2FbtsIhSzHm3B%2FLQ4KlEnWCl6ZPmEm6woR10%2Fimg.webp&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; alt=&quot;WHERE LIKE 조건에 CONCAT 함수 사용&quot; loading=&quot;lazy&quot; width=&quot;447&quot; height=&quot;186&quot; data-origin-width=&quot;447&quot; data-origin-height=&quot;186&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;WHERE LIKE 조건에 CONCAT 함수 사용&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;like concat('%', 'Kor', '%')은 like '%kor%' 랑 동일한 의미입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문자열을 그대로 사용해도 되고, concat 함수로 문자열을 합쳐서 사용해도 됩니다.&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;/h3&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;pre id=&quot;code_1719832774709&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 예시 쿼리
select concat('\'', '작은따움표', '\''), concat('\\' , '슬래시' , '\\');&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;545&quot; data-origin-height=&quot;138&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/PpUoG/btsIi91xgeS/wvDk8WOZJv7tL07ItrnNm1/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/PpUoG/btsIi91xgeS/wvDk8WOZJv7tL07ItrnNm1/img.webp&quot; data-alt=&quot;특수문자 이스케이프 처리&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/PpUoG/btsIi91xgeS/wvDk8WOZJv7tL07ItrnNm1/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPpUoG%2FbtsIi91xgeS%2FwvDk8WOZJv7tL07ItrnNm1%2Fimg.webp&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; alt=&quot;특수문자 이스케이프 처리&quot; loading=&quot;lazy&quot; width=&quot;545&quot; height=&quot;138&quot; data-origin-width=&quot;545&quot; data-origin-height=&quot;138&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;특수문자 이스케이프 처리&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;GROUP_CONCAT 함수와의 차이&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GROUP_CONCAT은 그룹화된 데이터를 결합하는데 사용되고, CONCAT은 여러개의 문자열을 하나로 결합할 때 사용됩니다.&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;h2 data-ke-size=&quot;size26&quot;&gt;읽으면 좋은 글&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://priming.tistory.com/156&quot; rel=&quot;noopener&quot;&gt;2024.06.30 - [Study/DB] - [MySQL] GROUP_CONCAT 함수 사용 방법, 예제&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1719832798802&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] GROUP_CONCAT 함수 사용 방법, 예제&quot; data-og-description=&quot;GROUP_CONCAT이란?MySQL의 group_concat 함수는 그룹화된 데이터를 하나로 합쳐서 조회할 수 있는 그룹 함수입니다.MySQL GROUP_CONCAT 공식 문서 바로가기&amp;nbsp;MySQL :: MySQL 8.4 Reference Manual :: 14.19.1 Aggregate Function De&quot; data-og-host=&quot;priming.tistory.com&quot; data-og-source-url=&quot;https://priming.tistory.com/156&quot; data-og-url=&quot;https://priming.tistory.com/156&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/yHPb4/hyWvIm5Vp9/NKQBySImcpxdtPzDXdhAY1/img.png?width=679&amp;amp;height=176&amp;amp;face=0_0_679_176,https://scrap.kakaocdn.net/dn/rNELy/hyWrNDAWBm/X8Al61TkTamDkdk6I6z1V0/img.png?width=679&amp;amp;height=176&amp;amp;face=0_0_679_176&quot;&gt;&lt;a href=&quot;https://priming.tistory.com/156&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://priming.tistory.com/156&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/yHPb4/hyWvIm5Vp9/NKQBySImcpxdtPzDXdhAY1/img.png?width=679&amp;amp;height=176&amp;amp;face=0_0_679_176,https://scrap.kakaocdn.net/dn/rNELy/hyWrNDAWBm/X8Al61TkTamDkdk6I6z1V0/img.png?width=679&amp;amp;height=176&amp;amp;face=0_0_679_176');&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] GROUP_CONCAT 함수 사용 방법, 예제&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;GROUP_CONCAT이란?MySQL의 group_concat 함수는 그룹화된 데이터를 하나로 합쳐서 조회할 수 있는 그룹 함수입니다.MySQL GROUP_CONCAT 공식 문서 바로가기&amp;nbsp;MySQL :: MySQL 8.4 Reference Manual :: 14.19.1 Aggregate Function De&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;priming.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>
      <category>Study/DB</category>
      <category>concat</category>
      <category>MySQL</category>
      <author>priming</author>
      <guid isPermaLink="true">https://priming.tistory.com/157</guid>
      <comments>https://priming.tistory.com/157#entry157comment</comments>
      <pubDate>Sun, 30 Jun 2024 18:57:33 +0900</pubDate>
    </item>
    <item>
      <title>[MySQL] GROUP_CONCAT 함수 사용 방법, 예제</title>
      <link>https://priming.tistory.com/156</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;GROUP_CONCAT이란?&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MySQL의 group_concat 함수는 그룹화된 데이터를 하나로 합쳐서 조회할 수 있는 그룹 함수입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://dev.mysql.com/doc/refman/8.4/en/aggregate-functions.html#function_group-concat&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;MySQL GROUP_CONCAT 공식 문서 바로가기&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1719832043803&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;MySQL :: MySQL 8.4 Reference Manual :: 14.19.1 Aggregate Function Descriptions&quot; data-og-description=&quot;MySQL 8.4 Reference Manual &amp;nbsp;/&amp;nbsp; ... &amp;nbsp;/&amp;nbsp; Functions and Operators &amp;nbsp;/&amp;nbsp; Aggregate Functions &amp;nbsp;/&amp;nbsp; Aggregate Function Descriptions 14.19.1&amp;nbsp;Aggregate Function Descriptions This section describes aggregate functions that operate on sets of values. They are &quot; data-og-host=&quot;dev.mysql.com&quot; data-og-source-url=&quot;https://dev.mysql.com/doc/refman/8.4/en/aggregate-functions.html#function_group-concat&quot; data-og-url=&quot;https://dev.mysql.com/doc/refman/8.4/en/aggregate-functions.html#function_group-concat&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://dev.mysql.com/doc/refman/8.4/en/aggregate-functions.html#function_group-concat&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://dev.mysql.com/doc/refman/8.4/en/aggregate-functions.html#function_group-concat&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&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 :: MySQL 8.4 Reference Manual :: 14.19.1 Aggregate Function Descriptions&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;MySQL 8.4 Reference Manual &amp;nbsp;/&amp;nbsp; ... &amp;nbsp;/&amp;nbsp; Functions and Operators &amp;nbsp;/&amp;nbsp; Aggregate Functions &amp;nbsp;/&amp;nbsp; Aggregate Function Descriptions 14.19.1&amp;nbsp;Aggregate Function Descriptions This section describes aggregate functions that operate on sets of values. They are&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;dev.mysql.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;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;GROUP_CONCAT 기본 사용법&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음과 같이 사용할 수 있습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1719738377876&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT &amp;lt;그룹화할 컬럼&amp;gt;, GROUP_CONCAT(&amp;lt;합쳐서 보여줄 컬럼&amp;gt;)
FROM &amp;lt;테이블명&amp;gt;
GROUP BY &amp;lt;그룹화할 컬럼&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;679&quot; data-origin-height=&quot;176&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WTyRi/btsIhNjRXMn/6aPJ4KMJBX1spEYqa02Rq0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WTyRi/btsIhNjRXMn/6aPJ4KMJBX1spEYqa02Rq0/img.png&quot; data-alt=&quot;GROUP_CONCAT 함수 예제&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WTyRi/btsIhNjRXMn/6aPJ4KMJBX1spEYqa02Rq0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWTyRi%2FbtsIhNjRXMn%2F6aPJ4KMJBX1spEYqa02Rq0%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; alt=&quot;GROUP_CONCAT 함수 예제&quot; loading=&quot;lazy&quot; width=&quot;679&quot; height=&quot;176&quot; data-origin-width=&quot;679&quot; data-origin-height=&quot;176&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;GROUP_CONCAT 함수 예제&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예제의 쿼리는 도시 테이블 데이터를 나라별로 그룹화하여 나라별로 어떤 도시가 있는지 GROUP_CONCAT을 사용해서 표현한 쿼리입니다.&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;GROUP_CONCAT을 사용하면 지정한 컬럼의 데이터를 쉼표로 합쳐서 보여줍니다.&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;h2 data-ke-size=&quot;size26&quot;&gt;GROUP_CONCAT 예제&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;여러 컬럼 사용&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GROUP_CONCAT에는 컬럼 여러개를 사용할 수 있습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1719739268466&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT &amp;lt;그룹화할 컬럼&amp;gt;, GROUP_CONCAT(&amp;lt;컬럼1&amp;gt;, &amp;lt;컬럼2&amp;gt; ...)
FROM &amp;lt;테이블명&amp;gt;
GROUP BY &amp;lt;그룹화할 컬럼&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;447&quot; data-origin-height=&quot;187&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kVeYw/btsIhiYN1kG/kSmbVqQ6kXd5BWvKKt4uc0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kVeYw/btsIhiYN1kG/kSmbVqQ6kXd5BWvKKt4uc0/img.png&quot; data-alt=&quot;여러 컬럼 적용&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kVeYw/btsIhiYN1kG/kSmbVqQ6kXd5BWvKKt4uc0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkVeYw%2FbtsIhiYN1kG%2FkSmbVqQ6kXd5BWvKKt4uc0%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; alt=&quot;여러 컬럼 적용&quot; loading=&quot;lazy&quot; width=&quot;447&quot; height=&quot;187&quot; data-origin-width=&quot;447&quot; data-origin-height=&quot;187&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;여러 컬럼 적용&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GROUP_CONCAT에 여러 컬럼을 적용하면 컬럼 값이 모두 붙어서 나옵니다.&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;div&gt;
&lt;script src=&quot;https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-3244792068052716&quot;&gt;&lt;/script&gt;
&lt;!-- 중간-디스플레이-수평-1 --&gt; &lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block;&quot; data-ad-client=&quot;ca-pub-3244792068052716&quot; data-ad-slot=&quot;1629193049&quot; data-ad-format=&quot;auto&quot; data-full-width-responsive=&quot;true&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/div&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;h3 data-ke-size=&quot;size23&quot;&gt;구분자 변경&amp;nbsp;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;쉼표 말고 다른 구분자를 사용하고 싶을 때는 다음과 같이 사용합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1719739000160&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT &amp;lt;그룹화할 컬럼&amp;gt;, GROUP_CONCAT(&amp;lt;합쳐서 보여줄 컬럼&amp;gt; separator '&amp;lt;구분자&amp;gt;')
FROM &amp;lt;테이블명&amp;gt;
GROUP BY &amp;lt;그룹화할 컬럼&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;461&quot; data-origin-height=&quot;184&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dKs4ld/btsIiTQZ6Cz/AX27giEZhRVikxz6OoZmEK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dKs4ld/btsIiTQZ6Cz/AX27giEZhRVikxz6OoZmEK/img.png&quot; data-alt=&quot;쉼표 말고 다른 구분자 적용&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dKs4ld/btsIiTQZ6Cz/AX27giEZhRVikxz6OoZmEK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdKs4ld%2FbtsIiTQZ6Cz%2FAX27giEZhRVikxz6OoZmEK%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; alt=&quot;쉼표 말고 다른 구분자 적용&quot; loading=&quot;lazy&quot; width=&quot;461&quot; height=&quot;184&quot; data-origin-width=&quot;461&quot; data-origin-height=&quot;184&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;쉼표 말고 다른 구분자 적용&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;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;조건 적용&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GROUP_CONCAT 결과에 조건을 적용하고싶으면 IF 문같은 조건문을 사용하면 됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;612&quot; data-origin-height=&quot;195&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/KR6OW/btsIhVor4iF/aUuuYzIPck5MfdZYI4nSr0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/KR6OW/btsIhVor4iF/aUuuYzIPck5MfdZYI4nSr0/img.png&quot; data-alt=&quot;GROUP_CONCAT에 조건문 적용&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/KR6OW/btsIhVor4iF/aUuuYzIPck5MfdZYI4nSr0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKR6OW%2FbtsIhVor4iF%2FaUuuYzIPck5MfdZYI4nSr0%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; alt=&quot;GROUP_CONCAT에 조건문 적용&quot; loading=&quot;lazy&quot; width=&quot;612&quot; height=&quot;195&quot; data-origin-width=&quot;612&quot; data-origin-height=&quot;195&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;GROUP_CONCAT에 조건문 적용&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예제의 쿼리는 인구가 100만을 넘는 도시만 보여주는 쿼리입니다.&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;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GROUP_CONCAT은 해당 그룹에 어떤 데이터가 있는지 그대로 보여줍니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;679&quot; data-origin-height=&quot;177&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/18gYn/btsIhLNbCh1/PK041GI3xkI3zvznKgM5iK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/18gYn/btsIhLNbCh1/PK041GI3xkI3zvznKgM5iK/img.png&quot; data-alt=&quot;GROUP_CONCAT distinct 추가 전&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/18gYn/btsIhLNbCh1/PK041GI3xkI3zvznKgM5iK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F18gYn%2FbtsIhLNbCh1%2FPK041GI3xkI3zvznKgM5iK%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; alt=&quot;GROUP_CONCAT distinct 추가 전&quot; loading=&quot;lazy&quot; width=&quot;679&quot; height=&quot;177&quot; data-origin-width=&quot;679&quot; data-origin-height=&quot;177&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;GROUP_CONCAT distinct 추가 전&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 중복 제거를 하고싶다면 distinct를 추가하면 됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;408&quot; data-origin-height=&quot;194&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mlugc/btsIiVH2Eba/nSTLA6lcC1K8V0ALuQYevK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mlugc/btsIiVH2Eba/nSTLA6lcC1K8V0ALuQYevK/img.png&quot; data-alt=&quot;distinct 추가 결과&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mlugc/btsIiVH2Eba/nSTLA6lcC1K8V0ALuQYevK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fmlugc%2FbtsIiVH2Eba%2FnSTLA6lcC1K8V0ALuQYevK%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; alt=&quot;distinct 추가 결과&quot; loading=&quot;lazy&quot; width=&quot;408&quot; height=&quot;194&quot; data-origin-width=&quot;408&quot; data-origin-height=&quot;194&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;distinct 추가 결과&lt;/figcaption&gt;
&lt;/figure&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;정렬 sort&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;group_concat의 데이터를 정렬하고 싶을 때는 다음과 같이 사용합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1719738909163&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT &amp;lt;그룹화할 컬럼&amp;gt;, GROUP_CONCAT(&amp;lt;합쳐서 보여줄 컬럼&amp;gt; order by &amp;lt;정렬 기준 컬럼&amp;gt;)
FROM &amp;lt;테이블명&amp;gt;
GROUP BY &amp;lt;그룹화할 컬럼&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;447&quot; data-origin-height=&quot;180&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LJ58q/btsIhWt7JXA/uPlkHYpAK88Yro65kFT7uK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LJ58q/btsIhWt7JXA/uPlkHYpAK88Yro65kFT7uK/img.png&quot; data-alt=&quot;GROUP_CONCAT 정렬 적용&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LJ58q/btsIhWt7JXA/uPlkHYpAK88Yro65kFT7uK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLJ58q%2FbtsIhWt7JXA%2FuPlkHYpAK88Yro65kFT7uK%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; alt=&quot;GROUP_CONCAT 정렬 적용&quot; loading=&quot;lazy&quot; width=&quot;447&quot; height=&quot;180&quot; data-origin-width=&quot;447&quot; data-origin-height=&quot;180&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;GROUP_CONCAT 정렬 적용&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;&amp;nbsp;&lt;/p&gt;</description>
      <category>Study/DB</category>
      <category>GROUP_CONCAT</category>
      <category>MySQL</category>
      <category>select</category>
      <author>priming</author>
      <guid isPermaLink="true">https://priming.tistory.com/156</guid>
      <comments>https://priming.tistory.com/156#entry156comment</comments>
      <pubDate>Sun, 30 Jun 2024 18:22:44 +0900</pubDate>
    </item>
    <item>
      <title>[Mac] MySQL Workbench 다운로드 및 설치 방법</title>
      <link>https://priming.tistory.com/155</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;맥북 환경에 MySQL Workbench 설치하는 방법입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;설치 파일 다운로드&lt;/h2&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://dev.mysql.com/downloads/workbench/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://dev.mysql.com/downloads/workbench/&lt;/a&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;1840&quot; data-origin-height=&quot;1258&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cuwQwR/btsIg0RcbeZ/syG2lngloL07w8fVtXurf0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cuwQwR/btsIg0RcbeZ/syG2lngloL07w8fVtXurf0/img.png&quot; data-alt=&quot;Mac용 MySQL Workbench 설치 파일 다운로드&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cuwQwR/btsIg0RcbeZ/syG2lngloL07w8fVtXurf0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcuwQwR%2FbtsIg0RcbeZ%2FsyG2lngloL07w8fVtXurf0%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; alt=&quot;Mac용 MySQL Workbench 설치 파일 다운로드&quot; loading=&quot;lazy&quot; width=&quot;1840&quot; height=&quot;1258&quot; data-origin-width=&quot;1840&quot; data-origin-height=&quot;1258&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Mac용 MySQL Workbench 설치 파일 다운로드&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;저는 64bit라서 64bit 전용 파일을 다운받겠습니다.&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;64비트인지 확인하려면 터미널에서 다음 명령어를 입력하면 확인할 수 있습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1719569123608&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;uname -a&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-origin-width=&quot;1538&quot; data-origin-height=&quot;1082&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nsPzc/btsIhuEeNZ2/dt9y254cuFbzNVQrRKR4A1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nsPzc/btsIhuEeNZ2/dt9y254cuFbzNVQrRKR4A1/img.png&quot; data-alt=&quot;MySQL Workbench 다운로드 전 로그인 여부&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nsPzc/btsIhuEeNZ2/dt9y254cuFbzNVQrRKR4A1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnsPzc%2FbtsIhuEeNZ2%2Fdt9y254cuFbzNVQrRKR4A1%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; alt=&quot;MySQL Workbench 다운로드 전 로그인 여부&quot; loading=&quot;lazy&quot; width=&quot;644&quot; height=&quot;453&quot; data-origin-width=&quot;1538&quot; data-origin-height=&quot;1082&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;MySQL Workbench 다운로드 전 로그인 여부&lt;/figcaption&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;로그인 없이 하려면 아래에 No thanks, just start my download. 를 누르면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;MySQL Workbench 설치&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다운받은 dmg 파일을 실행합니다,&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1014&quot; data-origin-height=&quot;854&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qtqcO/btsIfZFmq6J/Nk41D0kYQeBarpKxPC8L1k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qtqcO/btsIfZFmq6J/Nk41D0kYQeBarpKxPC8L1k/img.png&quot; data-alt=&quot;dmg 파일 실행&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qtqcO/btsIfZFmq6J/Nk41D0kYQeBarpKxPC8L1k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqtqcO%2FbtsIfZFmq6J%2FNk41D0kYQeBarpKxPC8L1k%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; alt=&quot;dmg 파일 실행&quot; loading=&quot;lazy&quot; width=&quot;648&quot; height=&quot;546&quot; data-origin-width=&quot;1014&quot; data-origin-height=&quot;854&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;dmg 파일 실행&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;MySQL Workbench 아이콘을 끌어다가 Applications에 놓거나 응용 프로그램 폴더에 넣으면 됩니다.&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;div&gt;
&lt;script src=&quot;https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-3244792068052716&quot;&gt;&lt;/script&gt;
&lt;!-- 중간-디스플레이-수평-1 --&gt; &lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block;&quot; data-ad-client=&quot;ca-pub-3244792068052716&quot; data-ad-slot=&quot;1629193049&quot; data-ad-format=&quot;auto&quot; data-full-width-responsive=&quot;true&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/div&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;h2 data-ke-size=&quot;size26&quot;&gt;MySQL Workbench 실행&amp;nbsp;&lt;/h2&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;540&quot; data-origin-height=&quot;602&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/doLLn1/btsIf3gLPGd/1k9dzzUKo3lkWz94Drd1A1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/doLLn1/btsIf3gLPGd/1k9dzzUKo3lkWz94Drd1A1/img.png&quot; data-alt=&quot;MySQL Workbench 설치 완료&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/doLLn1/btsIf3gLPGd/1k9dzzUKo3lkWz94Drd1A1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdoLLn1%2FbtsIf3gLPGd%2F1k9dzzUKo3lkWz94Drd1A1%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; alt=&quot;MySQL Workbench 설치 완료&quot; loading=&quot;lazy&quot; width=&quot;396&quot; height=&quot;441&quot; data-origin-width=&quot;540&quot; data-origin-height=&quot;602&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;MySQL Workbench 설치 완료&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;더블클릭하면 아래 경고창이 나올 수 있는데, 열기를 누르면 됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;498&quot; data-origin-height=&quot;508&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xMMrw/btsIg5dMWdV/1vIReuE1XUdYxexkwChN0K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xMMrw/btsIg5dMWdV/1vIReuE1XUdYxexkwChN0K/img.png&quot; data-alt=&quot;실행 전 경고창&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xMMrw/btsIg5dMWdV/1vIReuE1XUdYxexkwChN0K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxMMrw%2FbtsIg5dMWdV%2F1vIReuE1XUdYxexkwChN0K%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; alt=&quot;실행 전 경고창&quot; loading=&quot;lazy&quot; width=&quot;373&quot; height=&quot;380&quot; data-origin-width=&quot;498&quot; data-origin-height=&quot;508&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;실행 전 경고창&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;열기를 누르면 MySQL Workbench 실행이 완료됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2022&quot; data-origin-height=&quot;1424&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lECqa/btsIhuK1Zhj/Q2QbspkE6DHNMYCzvkSsp1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lECqa/btsIhuK1Zhj/Q2QbspkE6DHNMYCzvkSsp1/img.png&quot; data-alt=&quot;MySQL Workbench 실행 완료&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lECqa/btsIhuK1Zhj/Q2QbspkE6DHNMYCzvkSsp1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlECqa%2FbtsIhuK1Zhj%2FQ2QbspkE6DHNMYCzvkSsp1%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; alt=&quot;MySQL Workbench 실행 완료&quot; loading=&quot;lazy&quot; width=&quot;667&quot; height=&quot;470&quot; data-origin-width=&quot;2022&quot; data-origin-height=&quot;1424&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;MySQL Workbench 실행 완료&lt;/figcaption&gt;
&lt;/figure&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;데이터베이스 연결 방법&amp;nbsp;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MySQL Connections 글자 옆에 있는 + 버튼을 누르면 DB 연결 설정 페이지가 나옵니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;528&quot; data-origin-height=&quot;106&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bpY8Ry/btsIhuEgQLu/UZzEVq1ShuQr2Cp0Pa5Mek/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bpY8Ry/btsIhuEgQLu/UZzEVq1ShuQr2Cp0Pa5Mek/img.png&quot; data-alt=&quot;DB 커넥션 추가 버튼 위치&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bpY8Ry/btsIhuEgQLu/UZzEVq1ShuQr2Cp0Pa5Mek/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbpY8Ry%2FbtsIhuEgQLu%2FUZzEVq1ShuQr2Cp0Pa5Mek%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;443&quot; height=&quot;89&quot; data-origin-width=&quot;528&quot; data-origin-height=&quot;106&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;DB 커넥션 추가 버튼 위치&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;커넥션 설정 페이지에서 데이터베이스 연결 정보를 입력하면 됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1578&quot; data-origin-height=&quot;978&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dnOzBp/btsIglOYOHj/mMvwH8iZ9trZfAskBStnL1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dnOzBp/btsIglOYOHj/mMvwH8iZ9trZfAskBStnL1/img.png&quot; data-alt=&quot;데이터베이스 연결 정보 입력&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dnOzBp/btsIglOYOHj/mMvwH8iZ9trZfAskBStnL1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdnOzBp%2FbtsIglOYOHj%2FmMvwH8iZ9trZfAskBStnL1%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; alt=&quot;데이터베이스 연결 정보 입력&quot; loading=&quot;lazy&quot; width=&quot;786&quot; height=&quot;487&quot; data-origin-width=&quot;1578&quot; data-origin-height=&quot;978&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;데이터베이스 연결 정보 입력&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Hostname, Port, Username, Password 등 연결에 필요한 정보를 입력하면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;비밀번호는 Store in Keychain 버튼을 누르면 입력할 수 있는 창이 나옵니다.&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;입력이 완료되면 Test Connection 버튼으로 입력한 정보로 연결을 시도했을 때 잘 되는지 확인합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;770&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/l3FSq/btsIgYzbytL/87wGQwD2iB00uPDqoOYQzK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/l3FSq/btsIgYzbytL/87wGQwD2iB00uPDqoOYQzK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/l3FSq/btsIgYzbytL/87wGQwD2iB00uPDqoOYQzK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fl3FSq%2FbtsIgYzbytL%2F87wGQwD2iB00uPDqoOYQzK%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;375&quot; height=&quot;578&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;770&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-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;494&quot; data-origin-height=&quot;732&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/boCIIF/btsIgYTsXJF/XEn7688z4u4jzylP6rNxH1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/boCIIF/btsIgYTsXJF/XEn7688z4u4jzylP6rNxH1/img.png&quot; data-alt=&quot;연결 성공&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/boCIIF/btsIgYTsXJF/XEn7688z4u4jzylP6rNxH1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FboCIIF%2FbtsIgYTsXJF%2FXEn7688z4u4jzylP6rNxH1%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;400&quot; height=&quot;593&quot; data-origin-width=&quot;494&quot; data-origin-height=&quot;732&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;연결 성공&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;Test Connection을 통과하면 OK를 눌러서 연결 정보를 저장합니다.&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;578&quot; data-origin-height=&quot;334&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c0aWOs/btsIgYFTwPS/qbgtf2tV4lwFyabs1rjqk1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c0aWOs/btsIgYFTwPS/qbgtf2tV4lwFyabs1rjqk1/img.png&quot; data-alt=&quot;저장된 데이터베이스 연결&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c0aWOs/btsIgYFTwPS/qbgtf2tV4lwFyabs1rjqk1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc0aWOs%2FbtsIgYFTwPS%2Fqbgtf2tV4lwFyabs1rjqk1%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; alt=&quot;저장된 데이터베이스 연결&quot; loading=&quot;lazy&quot; width=&quot;382&quot; height=&quot;221&quot; data-origin-width=&quot;578&quot; data-origin-height=&quot;334&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;저장된 데이터베이스 연결&lt;/figcaption&gt;
&lt;/figure&gt;
&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;1016&quot; data-origin-height=&quot;612&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vWYsw/btsIgD27jrD/s0xEhIOInfk7odfvUeP0OK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vWYsw/btsIgD27jrD/s0xEhIOInfk7odfvUeP0OK/img.png&quot; data-alt=&quot;DB 접속 시 경고&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vWYsw/btsIgD27jrD/s0xEhIOInfk7odfvUeP0OK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvWYsw%2FbtsIgD27jrD%2Fs0xEhIOInfk7odfvUeP0OK%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;652&quot; height=&quot;393&quot; data-origin-width=&quot;1016&quot; data-origin-height=&quot;612&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;DB 접속 시 경고&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;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;MySQL Workbench 데이터베이스 접속 시 튕김 현상&lt;/h2&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;1984&quot; data-origin-height=&quot;602&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/n2ebX/btsIhhSAjjb/sFY2K7rWeIYsE2qEtKVtG0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/n2ebX/btsIhhSAjjb/sFY2K7rWeIYsE2qEtKVtG0/img.png&quot; data-alt=&quot;DB 접속 시 튕김&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/n2ebX/btsIhhSAjjb/sFY2K7rWeIYsE2qEtKVtG0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fn2ebX%2FbtsIhhSAjjb%2FsFY2K7rWeIYsE2qEtKVtG0%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;755&quot; height=&quot;229&quot; data-origin-width=&quot;1984&quot; data-origin-height=&quot;602&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;DB 접속 시 튕김&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;8.0.36, 8.0.34, 8.0.33, 8.0.32, 8.0.31버전을 확인했을 때 모두 DB 접속 시도했을 때 튕겼습니다.&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;</description>
      <category>Study/Environment</category>
      <category>MAC</category>
      <category>MySQL</category>
      <category>MySQL Workbench</category>
      <author>priming</author>
      <guid isPermaLink="true">https://priming.tistory.com/155</guid>
      <comments>https://priming.tistory.com/155#entry155comment</comments>
      <pubDate>Sun, 30 Jun 2024 17:57:11 +0900</pubDate>
    </item>
    <item>
      <title>[Mac] Python 3 다운로드 및 설치(Homebrew 사용)</title>
      <link>https://priming.tistory.com/154</link>
      <description>&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;h2 data-ke-size=&quot;size26&quot;&gt;Python 다운로드&lt;/h2&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;564&quot; data-origin-height=&quot;60&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/AHXd1/btsIhaGwxJL/cmskCdqCtnf7W3zjRiMHTk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/AHXd1/btsIhaGwxJL/cmskCdqCtnf7W3zjRiMHTk/img.png&quot; data-alt=&quot;맥북에 기본으로 설치된 파이썬&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/AHXd1/btsIhaGwxJL/cmskCdqCtnf7W3zjRiMHTk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAHXd1%2FbtsIhaGwxJL%2FcmskCdqCtnf7W3zjRiMHTk%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; alt=&quot;맥북에 기본으로 설치된 파이썬&quot; loading=&quot;lazy&quot; width=&quot;564&quot; height=&quot;60&quot; data-origin-width=&quot;564&quot; data-origin-height=&quot;60&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;맥북에 기본으로 설치된 파이썬&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;제 컴퓨터에는 3.9.6버전이 설치되어있습니다.&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;h3 data-ke-size=&quot;size23&quot;&gt;Homebrew로 Python 설치&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Homebrew로 파이썬을 설치하는 명령어입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1719645008201&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;brew install python&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;890&quot; data-origin-height=&quot;176&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/t1css/btsIhjwrIs4/AKjwRMQs7MKCGxeBdYjSt0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/t1css/btsIhjwrIs4/AKjwRMQs7MKCGxeBdYjSt0/img.png&quot; data-alt=&quot;Homebrew로 파이썬 설치&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/t1css/btsIhjwrIs4/AKjwRMQs7MKCGxeBdYjSt0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Ft1css%2FbtsIhjwrIs4%2FAKjwRMQs7MKCGxeBdYjSt0%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; alt=&quot;Homebrew로 파이썬 설치&quot; loading=&quot;lazy&quot; width=&quot;698&quot; height=&quot;138&quot; data-origin-width=&quot;890&quot; data-origin-height=&quot;176&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Homebrew로 파이썬 설치&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;brew 명령어로 간단하게 설치할 수 있습니다.&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://www.python.org/downloads/macos/&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;MAC 파이썬 설치 파일 다운로드 사이트 바로가기&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1719834582350&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;Python Releases for macOS&quot; data-og-description=&quot;The official home of the Python Programming Language&quot; data-og-host=&quot;www.python.org&quot; data-og-source-url=&quot;https://www.python.org/downloads/macos/&quot; data-og-url=&quot;https://www.python.org/downloads/macos/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/dml4bQ/hyWvXq2HTa/IYzADf1MpZcfaFhdfuHeE1/img.png?width=200&amp;amp;height=200&amp;amp;face=0_0_200_200&quot;&gt;&lt;a href=&quot;https://www.python.org/downloads/macos/&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.python.org/downloads/macos/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/dml4bQ/hyWvXq2HTa/IYzADf1MpZcfaFhdfuHeE1/img.png?width=200&amp;amp;height=200&amp;amp;face=0_0_200_200');&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;Python Releases for macOS&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;The official home of the Python Programming Language&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.python.org&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;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;파이썬 설치 확인&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파이썬 버전 확인 명령어입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1719646031055&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;python3 -V
python --version&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;572&quot; data-origin-height=&quot;59&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ccAf4B/btsIih5Bpsu/WquXLqltm0dPDTqqdFVjr1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ccAf4B/btsIih5Bpsu/WquXLqltm0dPDTqqdFVjr1/img.png&quot; data-alt=&quot;파이썬 버전 확인&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ccAf4B/btsIih5Bpsu/WquXLqltm0dPDTqqdFVjr1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FccAf4B%2FbtsIih5Bpsu%2FWquXLqltm0dPDTqqdFVjr1%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; alt=&quot;파이썬 버전 확인&quot; loading=&quot;lazy&quot; width=&quot;572&quot; height=&quot;59&quot; data-origin-width=&quot;572&quot; data-origin-height=&quot;59&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;파이썬 버전 확인&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존에는 3.9.6 버전이었는데 3.12.4 버전으로 변경되었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;python3 명령어를 python으로 사용&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설치된 파이썬이 3버전이어서 python3으로 명령어를 실행해야 하는데, 파이썬을 사용할 때마다 3을 붙여서 사용하려면 조금 번거롭습니다.&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;python3 말고 python으로도 사용할 수 있게 하는 방법입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1719646830974&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# .zshrc 문서 열기
vi ~/.zshrc

# 하단에 아래 내용 추가 
alias python=&quot;python3&quot;

# 저장
esc + :wq

# 적용
source ~/.zshrc&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;806&quot; data-origin-height=&quot;182&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b65KR1/btsIhdwlvfT/hSo9xjpTKwBkAuz6lpOj60/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b65KR1/btsIhdwlvfT/hSo9xjpTKwBkAuz6lpOj60/img.png&quot; data-alt=&quot;zshrc에 파이썬 3 명령어 변환 내용 추가&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b65KR1/btsIhdwlvfT/hSo9xjpTKwBkAuz6lpOj60/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb65KR1%2FbtsIhdwlvfT%2FhSo9xjpTKwBkAuz6lpOj60%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; alt=&quot;zshrc에 파이썬 3 명령어 변환 내용 추가&quot; loading=&quot;lazy&quot; width=&quot;647&quot; height=&quot;146&quot; data-origin-width=&quot;806&quot; data-origin-height=&quot;182&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;zshrc에 파이썬 3 명령어 변환 내용 추가&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;변경 내용 적용 후에 버전을 다시 확인해보면 python 명령어도 사용할 수 있는 걸 확인할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;636&quot; data-origin-height=&quot;139&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bHnkyS/btsIihR4msC/Cp4DFites8AMiZneUODBI1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bHnkyS/btsIihR4msC/Cp4DFites8AMiZneUODBI1/img.png&quot; data-alt=&quot;변경 내용 적용 후 파이썬 버전 확인&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bHnkyS/btsIihR4msC/Cp4DFites8AMiZneUODBI1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbHnkyS%2FbtsIihR4msC%2FCp4DFites8AMiZneUODBI1%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; alt=&quot;변경 내용 적용 후 파이썬 버전 확인&quot; loading=&quot;lazy&quot; width=&quot;636&quot; height=&quot;139&quot; data-origin-width=&quot;636&quot; data-origin-height=&quot;139&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;변경 내용 적용 후 파이썬 버전 확인&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>Study/Environment</category>
      <category>MAC</category>
      <category>Python3</category>
      <author>priming</author>
      <guid isPermaLink="true">https://priming.tistory.com/154</guid>
      <comments>https://priming.tistory.com/154#entry154comment</comments>
      <pubDate>Sat, 29 Jun 2024 16:49:35 +0900</pubDate>
    </item>
    <item>
      <title>[Windows] MySQL Workbench 데이터베이스 연결 방법</title>
      <link>https://priming.tistory.com/153</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MySQL Workbench를 사용해서 데이터베이스를 연결하는 방법입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일반적으로 연결하는 방법과 SSH로 연결하는 방법을 설명드리겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;기본 연결 방법&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;255&quot; data-origin-height=&quot;157&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbCn7Q/btsIbxN5AZH/ocQ88QZjR9svbC3vspWAh1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbCn7Q/btsIbxN5AZH/ocQ88QZjR9svbC3vspWAh1/img.png&quot; data-alt=&quot;Connection 추가 버튼&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbCn7Q/btsIbxN5AZH/ocQ88QZjR9svbC3vspWAh1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbbCn7Q%2FbtsIbxN5AZH%2FocQ88QZjR9svbC3vspWAh1%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; alt=&quot;Connection 추가 버튼&quot; loading=&quot;lazy&quot; width=&quot;255&quot; height=&quot;157&quot; data-origin-width=&quot;255&quot; data-origin-height=&quot;157&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Connection 추가 버튼&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MySQL Connections 옆에 있는 + 버튼을 클릭합니다.&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;778&quot; data-origin-height=&quot;481&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bvrHYY/btsH9WarBS8/E2dXs3ke0NxJlegjcSnpGK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bvrHYY/btsH9WarBS8/E2dXs3ke0NxJlegjcSnpGK/img.png&quot; data-alt=&quot;데이터베이스 연결 설정 창&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bvrHYY/btsH9WarBS8/E2dXs3ke0NxJlegjcSnpGK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbvrHYY%2FbtsH9WarBS8%2FE2dXs3ke0NxJlegjcSnpGK%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; alt=&quot;데이터베이스 연결 설정 창&quot; loading=&quot;lazy&quot; width=&quot;778&quot; height=&quot;481&quot; data-origin-width=&quot;778&quot; data-origin-height=&quot;481&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;데이터베이스 연결 설정 창&lt;/figcaption&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;Connection Name: 연결 이름입니다. 다른 데이터베이스와 구분할 수 있는 이름을 적으면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Connection Method: 연결 유형입니다. 기본 연결에서는 Standard(TCP/IP)를 그대로 사용하시면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Hostname: 데이터베이스의 주소입니다. IP 혹은 데이터베이스 주소를 입력하면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Port: 데이터베이스의 포트입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Username: 데이터베이스에 연결할 계정입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Password: 데이터베이스에 연결할 계정의 비밀번호입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Default Schema: 연결할 데이터베이스 이름입니다. 입력하면 입력한 데이터베이스가 기본 데이터베이스가 됩니다. 입력하지 않아도 됩니다.&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;비밀번호는 Password 옆에 있는 Store in Vault 버튼을 누르면 비밀번호를 입력할 수 있는 창이 나옵니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;773&quot; data-origin-height=&quot;484&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cxUmWa/btsH91o48Ei/l1KorNugNj5YbOo18Trg6k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cxUmWa/btsH91o48Ei/l1KorNugNj5YbOo18Trg6k/img.png&quot; data-alt=&quot;데이터베이스 계정 비밀번호 입력&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cxUmWa/btsH91o48Ei/l1KorNugNj5YbOo18Trg6k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcxUmWa%2FbtsH91o48Ei%2Fl1KorNugNj5YbOo18Trg6k%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; alt=&quot;데이터베이스 계정 비밀번호 입력&quot; loading=&quot;lazy&quot; width=&quot;773&quot; height=&quot;484&quot; data-origin-width=&quot;773&quot; data-origin-height=&quot;484&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;데이터베이스 계정 비밀번호 입력&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;입력을 하고 아래에 Test Connection을 눌러서 연결이 잘되는지 확인합니다.&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;776&quot; data-origin-height=&quot;482&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/8Yo7E/btsIa55AKyy/nPRIvJtXi9FYQJ3GOEQL41/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/8Yo7E/btsIa55AKyy/nPRIvJtXi9FYQJ3GOEQL41/img.png&quot; data-alt=&quot;Test Connection 성공&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/8Yo7E/btsIa55AKyy/nPRIvJtXi9FYQJ3GOEQL41/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F8Yo7E%2FbtsIa55AKyy%2FnPRIvJtXi9FYQJ3GOEQL41%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; alt=&quot;Test Connection 성공&quot; loading=&quot;lazy&quot; width=&quot;776&quot; height=&quot;482&quot; data-origin-width=&quot;776&quot; data-origin-height=&quot;482&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Test Connection 성공&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Test Connection 버튼을 눌렀을 때 Success라고 나오면 성공입니다.&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;div&gt;
&lt;script src=&quot;https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-3244792068052716&quot;&gt;&lt;/script&gt;
&lt;!-- 중간-디스플레이-수평-1 --&gt; &lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block;&quot; data-ad-client=&quot;ca-pub-3244792068052716&quot; data-ad-slot=&quot;1629193049&quot; data-ad-format=&quot;auto&quot; data-full-width-responsive=&quot;true&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/div&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;h2 data-ke-size=&quot;size26&quot;&gt;SSH 연결 방법&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SSH를 통해 데이터베이스를 연결하는 방법입니다.&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;연결 설정 창에서 SSH 연결 설정으로 바꿔야 합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;773&quot; data-origin-height=&quot;483&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/k9jgA/btsIbvpcqC8/KdpWgjWaNgTwah2GUUKNNk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/k9jgA/btsIbvpcqC8/KdpWgjWaNgTwah2GUUKNNk/img.png&quot; data-alt=&quot;SSH 연결 설정 창&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/k9jgA/btsIbvpcqC8/KdpWgjWaNgTwah2GUUKNNk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fk9jgA%2FbtsIbvpcqC8%2FKdpWgjWaNgTwah2GUUKNNk%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; alt=&quot;SSH 연결 설정 창&quot; loading=&quot;lazy&quot; width=&quot;773&quot; height=&quot;483&quot; data-origin-width=&quot;773&quot; data-origin-height=&quot;483&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;SSH 연결 설정 창&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;Connection Method를 Standard TCP/IP over SSH로 변경하면 됩니다.&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;SSH Hostname: 연결할 SSH 서버의 주소입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SSH Username: SSH 서버에 접속할 수 있는 계정입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SSH Password: SSH 서버에 접속할 수 있는 계정의 비밀번호입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SSH Key File: SSH 서버에 접속할 수 있는 키 파일입니다. ppk나 pem 파일을 사용합니다.&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;/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;연결 정보를 입력한 후 Test Connection으로 접속 테스트를 했을 때 Success라고 나오면 연결 성공입니다.&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;h2 data-ke-size=&quot;size26&quot;&gt;읽으면 좋은 글&amp;nbsp;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://priming.tistory.com/61&quot; rel=&quot;noopener&quot;&gt;[MySQL] 샘플 데이터베이스 다운로드 방법&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1719834733381&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] 샘플 데이터베이스 다운로드 방법&quot; data-og-description=&quot;SQL을 학습하기 위해서는 데이터가 필요합니다.테스트 데이터를 직접 만들어도 되지만, 샘플 데이터도 학습용으로 사용하기 좋습니다.MySQL에 샘플 데이터를 SQL 파일로 받는 방법과 MySQL Installer를&quot; data-og-host=&quot;priming.tistory.com&quot; data-og-source-url=&quot;https://priming.tistory.com/61&quot; data-og-url=&quot;https://priming.tistory.com/61&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bnFt41/hyWrTqi58D/b34rYVi3IWNRkJ7tyLj4u0/img.png?width=800&amp;amp;height=203&amp;amp;face=0_0_800_203,https://scrap.kakaocdn.net/dn/h7TRj/hyWvP0P9ER/EfDzABwtzOv3s5XEWX0KdK/img.png?width=800&amp;amp;height=203&amp;amp;face=0_0_800_203,https://scrap.kakaocdn.net/dn/oCiIL/hyWvWMqAYz/ZlSfhvcmJnnF5McsoXpKWK/img.png?width=930&amp;amp;height=431&amp;amp;face=0_0_930_431&quot;&gt;&lt;a href=&quot;https://priming.tistory.com/61&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://priming.tistory.com/61&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bnFt41/hyWrTqi58D/b34rYVi3IWNRkJ7tyLj4u0/img.png?width=800&amp;amp;height=203&amp;amp;face=0_0_800_203,https://scrap.kakaocdn.net/dn/h7TRj/hyWvP0P9ER/EfDzABwtzOv3s5XEWX0KdK/img.png?width=800&amp;amp;height=203&amp;amp;face=0_0_800_203,https://scrap.kakaocdn.net/dn/oCiIL/hyWvWMqAYz/ZlSfhvcmJnnF5McsoXpKWK/img.png?width=930&amp;amp;height=431&amp;amp;face=0_0_930_431');&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] 샘플 데이터베이스 다운로드 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;SQL을 학습하기 위해서는 데이터가 필요합니다.테스트 데이터를 직접 만들어도 되지만, 샘플 데이터도 학습용으로 사용하기 좋습니다.MySQL에 샘플 데이터를 SQL 파일로 받는 방법과 MySQL Installer를&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;priming.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>
      <category>Study/Environment</category>
      <category>MySQL Workbench</category>
      <author>priming</author>
      <guid isPermaLink="true">https://priming.tistory.com/153</guid>
      <comments>https://priming.tistory.com/153#entry153comment</comments>
      <pubDate>Mon, 24 Jun 2024 21:36:49 +0900</pubDate>
    </item>
    <item>
      <title>[Windows] MySQL Workbench DDL 쿼리 추출 방법</title>
      <link>https://priming.tistory.com/152</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MySQL Workbench에서 create table 같은 DDL 구문을 추출하는 방법입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;DDL 추출 방법&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. DDL 쿼리를 추출할 테이블을 선택합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;231&quot; data-origin-height=&quot;97&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cp6UWR/btsH9Y7a1D5/JStfuukHzDX5eerpH7d1vK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cp6UWR/btsH9Y7a1D5/JStfuukHzDX5eerpH7d1vK/img.png&quot; data-alt=&quot;쿼리를 추출할 테이블 선택&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cp6UWR/btsH9Y7a1D5/JStfuukHzDX5eerpH7d1vK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcp6UWR%2FbtsH9Y7a1D5%2FJStfuukHzDX5eerpH7d1vK%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; alt=&quot;쿼리를 추출할 테이블 선택&quot; loading=&quot;lazy&quot; width=&quot;231&quot; height=&quot;97&quot; data-origin-width=&quot;231&quot; data-origin-height=&quot;97&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;쿼리를 추출할 테이블 선택&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;2. 테이블 우클릭 -&amp;gt; Table Inspector를 선택합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;302&quot; data-origin-height=&quot;143&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d6xWw0/btsIa37Mhg4/d4anumhvrEu5Y3njoRynEK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d6xWw0/btsIa37Mhg4/d4anumhvrEu5Y3njoRynEK/img.png&quot; data-alt=&quot;Table Inspector 선택&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d6xWw0/btsIa37Mhg4/d4anumhvrEu5Y3njoRynEK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd6xWw0%2FbtsIa37Mhg4%2Fd4anumhvrEu5Y3njoRynEK%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; alt=&quot;Table Inspector 선택&quot; loading=&quot;lazy&quot; width=&quot;302&quot; height=&quot;143&quot; data-origin-width=&quot;302&quot; data-origin-height=&quot;143&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Table Inspector 선택&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;3. DDL 탭에서 DDL 쿼리를 확인할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;732&quot; data-origin-height=&quot;296&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d5KGKP/btsH9IjdmU3/17kC4kbWHQLaj4tzyK5VvK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d5KGKP/btsH9IjdmU3/17kC4kbWHQLaj4tzyK5VvK/img.png&quot; data-alt=&quot;DDL 탭에서 create table 쿼리 확인&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d5KGKP/btsH9IjdmU3/17kC4kbWHQLaj4tzyK5VvK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd5KGKP%2FbtsH9IjdmU3%2F17kC4kbWHQLaj4tzyK5VvK%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; alt=&quot;DDL 탭에서 create table 쿼리 확인&quot; loading=&quot;lazy&quot; width=&quot;732&quot; height=&quot;296&quot; data-origin-width=&quot;732&quot; data-origin-height=&quot;296&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;DDL 탭에서 create table 쿼리 확인&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Study/Environment</category>
      <category>MySQL Workbench</category>
      <author>priming</author>
      <guid isPermaLink="true">https://priming.tistory.com/152</guid>
      <comments>https://priming.tistory.com/152#entry152comment</comments>
      <pubDate>Mon, 24 Jun 2024 20:50:41 +0900</pubDate>
    </item>
    <item>
      <title>[Java] Spring Boot 3 버전 2.7 버전으로 낮추기</title>
      <link>https://priming.tistory.com/151</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재는 스프링부트 2.7버전이 공식적으로 지원이 종료되어 start.spring.io(Spring initializr)를 통해 이전 버전의 프로젝트를 생성할 수 없습니다.&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.x 버전의 스프링 부트 프로젝트를 2.x 버전으로 다운그레이드하는 방법에 대해 설명드리겠습니다(Maven, Gradle).&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;h2 data-ke-size=&quot;size26&quot;&gt;프로젝트 생성&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우선 스프링부트 3버전 프로젝트를 생성합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;791&quot; data-origin-height=&quot;782&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eQ1LTm/btsH9JutATK/m2ITxCt8thusjevOb1YIBk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eQ1LTm/btsH9JutATK/m2ITxCt8thusjevOb1YIBk/img.png&quot; data-alt=&quot;스프링부트 3버전 프로젝트 생성&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eQ1LTm/btsH9JutATK/m2ITxCt8thusjevOb1YIBk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeQ1LTm%2FbtsH9JutATK%2Fm2ITxCt8thusjevOb1YIBk%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; alt=&quot;스프링부트 3버전 프로젝트 생성&quot; loading=&quot;lazy&quot; width=&quot;791&quot; height=&quot;782&quot; data-origin-width=&quot;791&quot; data-origin-height=&quot;782&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;스프링부트 3버전 프로젝트 생성&lt;/figcaption&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;3버전이기 때문에 자바 버전은 17버전 이상이어야 합니다.&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;792&quot; data-origin-height=&quot;780&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zC25n/btsIaQ0RcIO/0izD01EWjj2ul6YXU7mnB0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zC25n/btsIaQ0RcIO/0izD01EWjj2ul6YXU7mnB0/img.png&quot; data-alt=&quot;3.3.1버전 선택&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zC25n/btsIaQ0RcIO/0izD01EWjj2ul6YXU7mnB0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzC25n%2FbtsIaQ0RcIO%2F0izD01EWjj2ul6YXU7mnB0%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; alt=&quot;3.3.1버전 선택&quot; loading=&quot;lazy&quot; width=&quot;792&quot; height=&quot;780&quot; data-origin-width=&quot;792&quot; data-origin-height=&quot;780&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;3.3.1버전 선택&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스프링 부트 버전은 3.3.1 버전을 선택하겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다운그레이드 할 예정이라 버전은 어떤것을 해도 상관은 없습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;웹 서버 실행을 위해 spring-web 의존성을 추가했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Finish를 눌러 프로젝트 생성을 진행합니다.&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;972&quot; data-origin-height=&quot;208&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cY1nHD/btsH93lXt3n/KpzL2GhzkBpvQ1w5aihMY1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cY1nHD/btsH93lXt3n/KpzL2GhzkBpvQ1w5aihMY1/img.png&quot; data-alt=&quot;프로젝트 정상 실행&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cY1nHD/btsH93lXt3n/KpzL2GhzkBpvQ1w5aihMY1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcY1nHD%2FbtsH93lXt3n%2FKpzL2GhzkBpvQ1w5aihMY1%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; alt=&quot;프로젝트 정상 실행&quot; loading=&quot;lazy&quot; width=&quot;972&quot; height=&quot;208&quot; data-origin-width=&quot;972&quot; data-origin-height=&quot;208&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;프로젝트 정상 실행&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;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;
&lt;script src=&quot;https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-3244792068052716&quot;&gt;&lt;/script&gt;
&lt;!-- 중간-디스플레이-수평-1 --&gt; &lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block;&quot; data-ad-client=&quot;ca-pub-3244792068052716&quot; data-ad-slot=&quot;1629193049&quot; data-ad-format=&quot;auto&quot; data-full-width-responsive=&quot;true&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/div&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;h2 data-ke-size=&quot;size26&quot;&gt;2버전 다운그레이드를 위한 수정 사항&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;pom.xml, build.gradle 수정&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;pom.xml&lt;/p&gt;
&lt;pre id=&quot;code_1719151127743&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;!-- 변경 전 --&amp;gt;
&amp;lt;parent&amp;gt;
	&amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;
	&amp;lt;artifactId&amp;gt;spring-boot-starter-parent&amp;lt;/artifactId&amp;gt;
	&amp;lt;version&amp;gt;3.3.1&amp;lt;/version&amp;gt;
	&amp;lt;relativePath /&amp;gt;
&amp;lt;/parent&amp;gt;

&amp;lt;!-- 변경 후 --&amp;gt;
&amp;lt;parent&amp;gt;
	&amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;
	&amp;lt;artifactId&amp;gt;spring-boot-starter-parent&amp;lt;/artifactId&amp;gt;
	&amp;lt;version&amp;gt;2.7.18&amp;lt;/version&amp;gt;
	&amp;lt;relativePath /&amp;gt;
&amp;lt;/parent&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;build.gradle&lt;/p&gt;
&lt;pre id=&quot;code_1719151384224&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 변경 전
plugins {
    id 'java'
    id 'org.springframework.boot' version '3.3.1'
    id 'io.spring.dependency-management' version '1.1.5'
}

// 변경 후
plugins {
    id 'java'
    id 'org.springframework.boot' version '2.7.18'
    id 'io.spring.dependency-management' version '1.1.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;스프링 부트 버전을 3.3.1에서 2.7.18 버전으로 수정합니다.&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;java 버전도 스프링부트 3버전에서 사용했던 17버전을 그대로 사용해도됩니다.&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;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스프링 부트 3버전에서는 javax 패키지가 아니라 jakarta 패키지를 사용하기 때문에 jakarta 패키지를 사용하는 코드를 모두 수정해야합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;412&quot; data-origin-height=&quot;139&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/MC7B4/btsH9EUohfG/HcEknSHQKRC7kcBKhuKrCk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/MC7B4/btsH9EUohfG/HcEknSHQKRC7kcBKhuKrCk/img.png&quot; data-alt=&quot;스프링부트 2버전에서는 jakarta 패키지를 사용하지 않음&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/MC7B4/btsH9EUohfG/HcEknSHQKRC7kcBKhuKrCk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMC7B4%2FbtsH9EUohfG%2FHcEknSHQKRC7kcBKhuKrCk%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; alt=&quot;스프링부트 2버전에서는 jakarta 패키지를 사용하지 않음&quot; loading=&quot;lazy&quot; width=&quot;412&quot; height=&quot;139&quot; data-origin-width=&quot;412&quot; data-origin-height=&quot;139&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;스프링부트 2버전에서는 jakarta 패키지를 사용하지 않음&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1719152777755&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 수정 전(예시)
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Pattern;

// 수정 후(예시)
import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;&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;validation 말고도 jakarta를 사용하는 코드가 있다면 javax로 변경하면 됩니다.&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;</description>
      <category>Study/spring</category>
      <category>Spring boot 2</category>
      <category>spring boot 3</category>
      <author>priming</author>
      <guid isPermaLink="true">https://priming.tistory.com/151</guid>
      <comments>https://priming.tistory.com/151#entry151comment</comments>
      <pubDate>Sun, 23 Jun 2024 23:32:17 +0900</pubDate>
    </item>
  </channel>
</rss>