<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>공부하는 오리</title>
    <link>https://azamman.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Thu, 21 May 2026 00:20:37 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>아잠만_</managingEditor>
    <image>
      <title>공부하는 오리</title>
      <url>https://tistory1.daumcdn.net/tistory/5971112/attach/7212bcd2abd84e749b7c0add5bf7f462</url>
      <link>https://azamman.tistory.com</link>
    </image>
    <item>
      <title>리눅스</title>
      <link>https://azamman.tistory.com/457</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;리눅스란?&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;리눅스(Linux)는 컴퓨터 운영 체제 중 하나로, 개발자 리누스 토발즈(Linus Torvalds)에 의해 개발.&lt;/li&gt;
&lt;li&gt;유닉스(Unix)와 호환되는 운영 체제로서, 안정성과 보안성이 높음.&lt;/li&gt;
&lt;li&gt;다양한 하드웨어 플랫폼에서 동작하며, 서버, 데스크톱, 임베디드 시스템 등 다양한 용도로 활용.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;오픈 소스&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;소스 코드가 공개되어 있어 누구나 자유롭게 사용하고 수정 가능.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;안정성&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;리눅스는 안정성이 높고 시스템이 멈추는 현상이 적음.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;보안성&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;리눅스는 보안이 강화된 운영 체제로 알려져 있음.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;다양한 용도&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;서버 운영체제로 널리 사용되지만, 데스크톱 환경부터 모바일 기기, 임베디드 시스템까지 다양한 용도로 활용.&lt;/li&gt;
&lt;/ul&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://coffeebaralog.tistory.com/13&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;게시글&lt;/a&gt;에서 참조하면 된다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;VirtualBox를 &lt;a href=&quot;https://www.virtualbox.org/wiki/Downloads&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;설치&lt;/a&gt;를 먼저 하도록한다. 설치 시에 자신의 운영체제에 맞게 설치하면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설치가 완료되면 새로만들기 버튼을 통해 가상머신을 생성한다&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1570&quot; data-origin-height=&quot;942&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dkMxQ4/btsKvKldXGf/1LMb5NyjTXf6awBNJwVVlk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dkMxQ4/btsKvKldXGf/1LMb5NyjTXf6awBNJwVVlk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dkMxQ4/btsKvKldXGf/1LMb5NyjTXf6awBNJwVVlk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdkMxQ4%2FbtsKvKldXGf%2F1LMb5NyjTXf6awBNJwVVlk%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;628&quot; height=&quot;942&quot; data-origin-width=&quot;1570&quot; data-origin-height=&quot;942&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설치 후 저장소&amp;gt; 컨트롤러의 광학 드라이브를 변경 후 설치하면된다&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1466&quot; data-origin-height=&quot;880&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/baYnFy/btsKvFdpL12/DA3GcOCbzOb5Dmw1YKs6hK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/baYnFy/btsKvFdpL12/DA3GcOCbzOb5Dmw1YKs6hK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/baYnFy/btsKvFdpL12/DA3GcOCbzOb5Dmw1YKs6hK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbaYnFy%2FbtsKvFdpL12%2FDA3GcOCbzOb5Dmw1YKs6hK%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;601&quot; height=&quot;361&quot; data-origin-width=&quot;1466&quot; data-origin-height=&quot;880&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 드라이브는 &lt;a href=&quot;https://ubuntu.com/download/server&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;사이트&lt;/a&gt;에서 받을 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;완료되면 시작을 눌러 해당 가상머신을 실행시켜주면 되는데&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2880&quot; data-origin-height=&quot;1631&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/XipRv/btsKvnYe9gz/t1fFW9LKoz0n44k9mKskxk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/XipRv/btsKvnYe9gz/t1fFW9LKoz0n44k9mKskxk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/XipRv/btsKvnYe9gz/t1fFW9LKoz0n44k9mKskxk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXipRv%2FbtsKvnYe9gz%2Ft1fFW9LKoz0n44k9mKskxk%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;628&quot; height=&quot;356&quot; data-origin-width=&quot;2880&quot; data-origin-height=&quot;1631&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설치부터 시작하면 된다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2471&quot; data-origin-height=&quot;1612&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bqR8tM/btsKwu9OtJ3/7vazT9CucJEqk8zydBl3Tk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bqR8tM/btsKwu9OtJ3/7vazT9CucJEqk8zydBl3Tk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bqR8tM/btsKwu9OtJ3/7vazT9CucJEqk8zydBl3Tk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbqR8tM%2FbtsKwu9OtJ3%2F7vazT9CucJEqk8zydBl3Tk%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;649&quot; height=&quot;1612&quot; data-origin-width=&quot;2471&quot; data-origin-height=&quot;1612&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설치가 완료되면 언어 설정이 뜨는데 쭉 넘어가다가 아래 설정을 변경하고 쭉 넘어가면된다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1252&quot; data-origin-height=&quot;790&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/u6T1a/btsKxspTIcb/uctrK5ZiL2DhU5THsdqyw1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/u6T1a/btsKxspTIcb/uctrK5ZiL2DhU5THsdqyw1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/u6T1a/btsKxspTIcb/uctrK5ZiL2DhU5THsdqyw1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fu6T1a%2FbtsKxspTIcb%2FuctrK5ZiL2DhU5THsdqyw1%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;647&quot; height=&quot;408&quot; data-origin-width=&quot;1252&quot; data-origin-height=&quot;790&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용자 마음대로 입력하면되는데 나는 편의상&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;user와 비밀번호 1234를 입력하였다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1001&quot; data-origin-height=&quot;565&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/w2gwr/btsKwB8R7uz/POhv665x7TmAVvwvnXMWP1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/w2gwr/btsKwB8R7uz/POhv665x7TmAVvwvnXMWP1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/w2gwr/btsKwB8R7uz/POhv665x7TmAVvwvnXMWP1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fw2gwr%2FbtsKwB8R7uz%2FPOhv665x7TmAVvwvnXMWP1%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;654&quot; height=&quot;369&quot; data-origin-width=&quot;1001&quot; data-origin-height=&quot;565&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;OpenSSH 선택후 넘어가기&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;SSH는 네트워크상의 다른 컴퓨터에 로그인하여 명령을 실행하고 정보를 보고 받을수 있도록 해 주는 통신 프로토콜&lt;br /&gt;SSH를 통해 원격으로 접속하거나 할 수 있다.&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2471&quot; data-origin-height=&quot;1632&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cC9Q2k/btsKvBPBAu2/DDvR60qPrtkpLnzU51dok1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cC9Q2k/btsKvBPBAu2/DDvR60qPrtkpLnzU51dok1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cC9Q2k/btsKvBPBAu2/DDvR60qPrtkpLnzU51dok1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcC9Q2k%2FbtsKvBPBAu2%2FDDvR60qPrtkpLnzU51dok1%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;646&quot; height=&quot;1632&quot; data-origin-width=&quot;2471&quot; data-origin-height=&quot;1632&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설치가 완료되면 본격적으로 리눅스를 사용할 준비가 완료 된 것이다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;putty도 &lt;a href=&quot;https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;설치해주자&lt;/a&gt;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;사용해보기&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1356&quot; data-origin-height=&quot;767&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bqfu0n/btsKvHoFI7i/NuOnsWyDL41Ajl2jYuP2eK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bqfu0n/btsKvHoFI7i/NuOnsWyDL41Ajl2jYuP2eK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bqfu0n/btsKvHoFI7i/NuOnsWyDL41Ajl2jYuP2eK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbqfu0n%2FbtsKvHoFI7i%2FNuOnsWyDL41Ajl2jYuP2eK%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;612&quot; height=&quot;767&quot; data-origin-width=&quot;1356&quot; data-origin-height=&quot;767&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아까 전에 입력한 아이디와 비밀번호를 입력하면 로그인이 완료된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;apt 파일들을 다운받을 수 있는 서버의 리스트를 업데이트 해주는 과정이며 비밀번호를 입력하면 업데이트가 완료된다.&lt;/p&gt;
&lt;pre id=&quot;code_1730772512460&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo apt-get update&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;687&quot; data-origin-height=&quot;77&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NCETM/btsKwjVgPm2/GBj59skw3gB5rnvhAH3kM0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NCETM/btsKwjVgPm2/GBj59skw3gB5rnvhAH3kM0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NCETM/btsKwjVgPm2/GBj59skw3gB5rnvhAH3kM0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNCETM%2FbtsKwjVgPm2%2FGBj59skw3gB5rnvhAH3kM0%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;464&quot; height=&quot;52&quot; data-origin-width=&quot;687&quot; data-origin-height=&quot;77&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;SSH설치 확인하기&lt;/h4&gt;
&lt;pre id=&quot;code_1730772475530&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo systemctl status ssh&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1513&quot; data-origin-height=&quot;264&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dJ1Vm0/btsKvLdqAq1/NCXWXjSdkVM3yuFOLAfrx0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dJ1Vm0/btsKvLdqAq1/NCXWXjSdkVM3yuFOLAfrx0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dJ1Vm0/btsKvLdqAq1/NCXWXjSdkVM3yuFOLAfrx0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdJ1Vm0%2FbtsKvLdqAq1%2FNCXWXjSdkVM3yuFOLAfrx0%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;763&quot; height=&quot;133&quot; data-origin-width=&quot;1513&quot; data-origin-height=&quot;264&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;IP 찾기&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;cmd창에선 ipconfig 형태이지만 리눅스에선 ifconfig형태로 검색할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;근데 실패가 뜨는 걸 확인할 수 있는데 그거에 관한 기능이 설치되지 않았기 때문이다. 그러므로 먼저 설치부터 해보겠다.&lt;/p&gt;
&lt;pre id=&quot;code_1730772710161&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo apt-get install net-tools&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1813&quot; data-origin-height=&quot;1027&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bRHNJb/btsKwCzWxTt/L1rYoQVNzaEK5L6KrV9rsk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bRHNJb/btsKwCzWxTt/L1rYoQVNzaEK5L6KrV9rsk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bRHNJb/btsKwCzWxTt/L1rYoQVNzaEK5L6KrV9rsk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbRHNJb%2FbtsKwCzWxTt%2FL1rYoQVNzaEK5L6KrV9rsk%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;699&quot; height=&quot;1027&quot; data-origin-width=&quot;1813&quot; data-origin-height=&quot;1027&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설치 완료 후 ifconfig를 하면 정상적으로 확인할 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1324&quot; data-origin-height=&quot;601&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bhILYA/btsKvWMHBjm/J9vwGK6LC3KOLSqVykkfU1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bhILYA/btsKvWMHBjm/J9vwGK6LC3KOLSqVykkfU1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bhILYA/btsKvWMHBjm/J9vwGK6LC3KOLSqVykkfU1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbhILYA%2FbtsKvWMHBjm%2FJ9vwGK6LC3KOLSqVykkfU1%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;710&quot; height=&quot;601&quot; data-origin-width=&quot;1324&quot; data-origin-height=&quot;601&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;포트포워딩 하기&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설정&amp;gt;네트워크&amp;gt;고급&amp;gt;포트포워딩&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1300&quot; data-origin-height=&quot;876&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/o2Qru/btsKxiVi3aM/RDb2IslXJ6FKe6b9JPvfeK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/o2Qru/btsKxiVi3aM/RDb2IslXJ6FKe6b9JPvfeK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/o2Qru/btsKxiVi3aM/RDb2IslXJ6FKe6b9JPvfeK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fo2Qru%2FbtsKxiVi3aM%2FRDb2IslXJ6FKe6b9JPvfeK%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;599&quot; height=&quot;404&quot; data-origin-width=&quot;1300&quot; data-origin-height=&quot;876&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1249&quot; data-origin-height=&quot;645&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Laant/btsKvDta5iS/fM5KA6qcVV36QUz397EPc0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Laant/btsKvDta5iS/fM5KA6qcVV36QUz397EPc0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Laant/btsKvDta5iS/fM5KA6qcVV36QUz397EPc0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLaant%2FbtsKvDta5iS%2FfM5KA6qcVV36QUz397EPc0%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;593&quot; height=&quot;306&quot; data-origin-width=&quot;1249&quot; data-origin-height=&quot;645&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;확인을 누르면 이제 원격으로 접속이 가능해진다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;puTTy를 통해 확인해보자.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;puTTy&lt;/h3&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;SSH 및 Telnet을 지원하여 원격 서버에 안전하게 접속할 수 있는 클라이언트 소프트웨어&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;894&quot; data-origin-height=&quot;831&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kX45S/btsKu966KnB/h4Mj5ZOvNg6KOBHSkVxlo1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kX45S/btsKu966KnB/h4Mj5ZOvNg6KOBHSkVxlo1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kX45S/btsKu966KnB/h4Mj5ZOvNg6KOBHSkVxlo1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkX45S%2FbtsKu966KnB%2Fh4Mj5ZOvNg6KOBHSkVxlo1%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;481&quot; height=&quot;447&quot; data-origin-width=&quot;894&quot; data-origin-height=&quot;831&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1310&quot; data-origin-height=&quot;809&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bOEfnb/btsKvMcpn4J/uvQhG9OzROeOjORqUyM74k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bOEfnb/btsKvMcpn4J/uvQhG9OzROeOjORqUyM74k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bOEfnb/btsKvMcpn4J/uvQhG9OzROeOjORqUyM74k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbOEfnb%2FbtsKvMcpn4J%2FuvQhG9OzROeOjORqUyM74k%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;568&quot; height=&quot;809&quot; data-origin-width=&quot;1310&quot; data-origin-height=&quot;809&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Open을 누르면 이 창이 뜨게 되고 Accept를 누르면 기존 리눅스와 동일하게 사용되는 걸 확인 할 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1306&quot; data-origin-height=&quot;765&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IHbOe/btsKwkfws4s/75kvprUlR50owMZ088kYS0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IHbOe/btsKwkfws4s/75kvprUlR50owMZ088kYS0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IHbOe/btsKwkfws4s/75kvprUlR50owMZ088kYS0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIHbOe%2FbtsKwkfws4s%2F75kvprUlR50owMZ088kYS0%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;624&quot; height=&quot;366&quot; data-origin-width=&quot;1306&quot; data-origin-height=&quot;765&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;FileZilla&lt;/h3&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;사용자가 FTP 또는 SFTP를 통해 파일을 전송하고 관리할 수 있는 클라이언트 소프트웨어&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파일 업로드는 FileZilla를 통해 가능 하다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파일 &amp;gt; 사이트 관리자&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;612&quot; data-origin-height=&quot;399&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bntjDq/btsKv7ggkCk/qapcJ736aDHl137gTkFZI0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bntjDq/btsKv7ggkCk/qapcJ736aDHl137gTkFZI0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bntjDq/btsKv7ggkCk/qapcJ736aDHl137gTkFZI0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbntjDq%2FbtsKv7ggkCk%2FqapcJ736aDHl137gTkFZI0%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;612&quot; height=&quot;399&quot; data-origin-width=&quot;612&quot; data-origin-height=&quot;399&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2880&quot; data-origin-height=&quot;1700&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/PqM0d/btsKvHvtp3R/Od3JqgpJQwPUKswlly9FA1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/PqM0d/btsKvHvtp3R/Od3JqgpJQwPUKswlly9FA1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/PqM0d/btsKvHvtp3R/Od3JqgpJQwPUKswlly9FA1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPqM0d%2FbtsKvHvtp3R%2FOd3JqgpJQwPUKswlly9FA1%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;605&quot; height=&quot;357&quot; data-origin-width=&quot;2880&quot; data-origin-height=&quot;1700&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;드래그나 업로드를 통해 파일을 올릴 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;올린 파일은 puTTy로 돌아가 ls이라는 명령어를 통해 조회할 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;407&quot; data-origin-height=&quot;67&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NNlTK/btsKv7UWvbK/w1Nn1bkI53PJ9EKjTUO3z0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NNlTK/btsKv7UWvbK/w1Nn1bkI53PJ9EKjTUO3z0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NNlTK/btsKv7UWvbK/w1Nn1bkI53PJ9EKjTUO3z0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNNlTK%2FbtsKv7UWvbK%2Fw1Nn1bkI53PJ9EKjTUO3z0%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;267&quot; height=&quot;44&quot; data-origin-width=&quot;407&quot; data-origin-height=&quot;67&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;파일 권한을 조회해보기&lt;/h4&gt;
&lt;pre id=&quot;code_1730773648118&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ls -al&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1094&quot; data-origin-height=&quot;328&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lHlsR/btsKwsEnFMp/vTqIlVG753xD3hbfzXf1X0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lHlsR/btsKwsEnFMp/vTqIlVG753xD3hbfzXf1X0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lHlsR/btsKwsEnFMp/vTqIlVG753xD3hbfzXf1X0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlHlsR%2FbtsKwsEnFMp%2FvTqIlVG753xD3hbfzXf1X0%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;727&quot; height=&quot;328&quot; data-origin-width=&quot;1094&quot; data-origin-height=&quot;328&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;권한 변경&lt;/h4&gt;
&lt;pre id=&quot;code_1730773807114&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;chmod [옵션] [권한] [파일 이름]&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이름은 전부 입력할 필요없이 앞 글자치고 tab버튼을 누른다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;742&quot; data-origin-height=&quot;32&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/brBX6P/btsKw4W9ced/TEkfqRGvgozrRB871xNwzK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/brBX6P/btsKw4W9ced/TEkfqRGvgozrRB871xNwzK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/brBX6P/btsKw4W9ced/TEkfqRGvgozrRB871xNwzK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbrBX6P%2FbtsKw4W9ced%2FTEkfqRGvgozrRB871xNwzK%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;603&quot; height=&quot;26&quot; data-origin-width=&quot;742&quot; data-origin-height=&quot;32&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1093&quot; data-origin-height=&quot;326&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bZhNsg/btsKvCug4R9/pgBkvXCiLW8sb26KSAatU1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bZhNsg/btsKvCug4R9/pgBkvXCiLW8sb26KSAatU1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bZhNsg/btsKvCug4R9/pgBkvXCiLW8sb26KSAatU1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbZhNsg%2FbtsKvCug4R9%2FpgBkvXCiLW8sb26KSAatU1%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;696&quot; height=&quot;208&quot; data-origin-width=&quot;1093&quot; data-origin-height=&quot;326&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Tomcat 실행해보기&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;tomcat서버 알집 폴더를 fileZilla를 통해 옮긴다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 실행하기 위해서는 알집을 풀어야한다 unzip이라는 명령어를 통해 알집푸는 것이 되는데 그 기능을 먼저 설치해야한다.&lt;/p&gt;
&lt;pre id=&quot;code_1730774033628&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo apt-get install unzip&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1730774051058&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;unzip [옵션] [파일명]&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약에 폴더에 풀고 싶은 경우에는 -d라는 옵션을 추가해주면 된다&lt;/p&gt;
&lt;pre id=&quot;code_1730774558190&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;unzip -d [파일명]&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;삭제&lt;/h4&gt;
&lt;pre id=&quot;code_1730774132184&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;rm [파일명]&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;폴더까지 삭제하기&lt;/h4&gt;
&lt;pre id=&quot;code_1730774256963&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;rm -rf&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-r밑에 있는 파일까지 전부 삭제&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;f는 물어보지 않기&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;파일 경로로 이동&lt;/h4&gt;
&lt;pre id=&quot;code_1730774645046&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;cd [디렉토리]&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1200&quot; data-origin-height=&quot;121&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kFr8U/btsKv71Hydo/qIkCtDkzar1FFckzh7mZ31/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kFr8U/btsKv71Hydo/qIkCtDkzar1FFckzh7mZ31/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kFr8U/btsKv71Hydo/qIkCtDkzar1FFckzh7mZ31/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkFr8U%2FbtsKv71Hydo%2FqIkCtDkzar1FFckzh7mZ31%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;623&quot; height=&quot;63&quot; data-origin-width=&quot;1200&quot; data-origin-height=&quot;121&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;logs : 로그를 담고 있는 폴더&lt;br /&gt;webapps : 프로젝트를 올리는 실제 경로&lt;br /&gt;bin : tomcat 실행하거나 종료하는 명령어 담긴 폴더&lt;br /&gt;conf : 포트같은 설정을 담고있는 폴더&lt;/blockquote&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;리눅스 편집 nano&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파일 편집기(메모장과 유사)&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설치가 안되어있다면&lt;/p&gt;
&lt;pre id=&quot;code_1730774873282&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo apt-get install nano&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1730774908256&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;nano [파일명]&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;conf폴더에서 nano server.xml를 입력하면 아래에 대한 정보가 출력된다&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2880&quot; data-origin-height=&quot;1701&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bAJqtf/btsKvXLEwrR/Q3CG9Un0fHUqzjVD2HDKTK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bAJqtf/btsKvXLEwrR/Q3CG9Un0fHUqzjVD2HDKTK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bAJqtf/btsKvXLEwrR/Q3CG9Un0fHUqzjVD2HDKTK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbAJqtf%2FbtsKvXLEwrR%2FQ3CG9Un0fHUqzjVD2HDKTK%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;714&quot; height=&quot;422&quot; data-origin-width=&quot;2880&quot; data-origin-height=&quot;1701&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1132&quot; data-origin-height=&quot;639&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bmfRIK/btsKwQrhIuK/Hhzyg28fEjmJi6GdigASKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bmfRIK/btsKwQrhIuK/Hhzyg28fEjmJi6GdigASKK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bmfRIK/btsKwQrhIuK/Hhzyg28fEjmJi6GdigASKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbmfRIK%2FbtsKwQrhIuK%2FHhzyg28fEjmJi6GdigASKK%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;514&quot; height=&quot;290&quot; data-origin-width=&quot;1132&quot; data-origin-height=&quot;639&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 정보를 저장하고 ctrl + s로 저장하고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ctrl + x로 나간다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;fileZilla에서도 수정할 수도 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;786&quot; data-origin-height=&quot;712&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bg6dp2/btsKvhqlDzc/bhz7uaKEvHVKI5qi3doDL0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bg6dp2/btsKvhqlDzc/bhz7uaKEvHVKI5qi3doDL0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bg6dp2/btsKvhqlDzc/bhz7uaKEvHVKI5qi3doDL0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbg6dp2%2FbtsKvhqlDzc%2Fbhz7uaKEvHVKI5qi3doDL0%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;493&quot; height=&quot;712&quot; data-origin-width=&quot;786&quot; data-origin-height=&quot;712&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;변경하고 저장 완료를 하면 해당 알림이 떠서 정보를 업데이트 할 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;570&quot; data-origin-height=&quot;398&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cFMbxY/btsKwMvEsNe/KUk8UDxQdhb5XIc7dex1V0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cFMbxY/btsKwMvEsNe/KUk8UDxQdhb5XIc7dex1V0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cFMbxY/btsKwMvEsNe/KUk8UDxQdhb5XIc7dex1V0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcFMbxY%2FbtsKwMvEsNe%2FKUk8UDxQdhb5XIc7dex1V0%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;450&quot; height=&quot;314&quot; data-origin-width=&quot;570&quot; data-origin-height=&quot;398&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Tomcat 실행&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;tomcat을 실행하기 위해서는 java가 필요하다&lt;/p&gt;
&lt;pre id=&quot;code_1730775683490&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;javac -version&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 명령어를 통해 자바 설치가 되었는지 확인하고 설치가 되어있지 않다면 아래의 명령어를 통해 설치해주도록 하자!&lt;/p&gt;
&lt;pre id=&quot;code_1730775777549&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo apt-get install openjdk-8-jdk&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설치가 완료되면 확인이 가능하다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;861&quot; data-origin-height=&quot;59&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zx5yg/btsKxiOwT6R/jNvfpWf6fFcIEwxFILjkpK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zx5yg/btsKxiOwT6R/jNvfpWf6fFcIEwxFILjkpK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zx5yg/btsKxiOwT6R/jNvfpWf6fFcIEwxFILjkpK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fzx5yg%2FbtsKxiOwT6R%2FjNvfpWf6fFcIEwxFILjkpK%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;553&quot; height=&quot;38&quot; data-origin-width=&quot;861&quot; data-origin-height=&quot;59&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 본격적으로 tomcat을 실행해보자 실행은 bin폴더에서 해야된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;상위 디렉터리로 가서 bin폴더로 이동한다&lt;/p&gt;
&lt;pre id=&quot;code_1730775956041&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;cd ../bin&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;779&quot; data-origin-height=&quot;27&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cdgejz/btsKw0tPNMJ/MsSDn1ctnShra5SolA5qTK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cdgejz/btsKw0tPNMJ/MsSDn1ctnShra5SolA5qTK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cdgejz/btsKw0tPNMJ/MsSDn1ctnShra5SolA5qTK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcdgejz%2FbtsKw0tPNMJ%2FMsSDn1ctnShra5SolA5qTK%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;577&quot; height=&quot;20&quot; data-origin-width=&quot;779&quot; data-origin-height=&quot;27&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;bat는 윈도우 실행파일이며&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;sh는 리눅스 실행파일이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실행은 해당 명령어를 통해 실행한다.&lt;/p&gt;
&lt;pre id=&quot;code_1730776111441&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;./startup.sh&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;814&quot; data-origin-height=&quot;60&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c2sqVZ/btsKvfeW9XN/LyUO6C71MF7iBwLk1LdxGK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c2sqVZ/btsKvfeW9XN/LyUO6C71MF7iBwLk1LdxGK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c2sqVZ/btsKvfeW9XN/LyUO6C71MF7iBwLk1LdxGK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc2sqVZ%2FbtsKvfeW9XN%2FLyUO6C71MF7iBwLk1LdxGK%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;556&quot; height=&quot;60&quot; data-origin-width=&quot;814&quot; data-origin-height=&quot;60&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1730776065746&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;chmod 755 startup.sh&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;881&quot; data-origin-height=&quot;123&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bMwUsb/btsKwv12rop/YNIKAwso1sKNPs7IinXC2k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bMwUsb/btsKwv12rop/YNIKAwso1sKNPs7IinXC2k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bMwUsb/btsKwv12rop/YNIKAwso1sKNPs7IinXC2k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbMwUsb%2FbtsKwv12rop%2FYNIKAwso1sKNPs7IinXC2k%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;659&quot; height=&quot;92&quot; data-origin-width=&quot;881&quot; data-origin-height=&quot;123&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;catalina.sh도 또한 권한을 변경해야된다&lt;/p&gt;
&lt;pre id=&quot;code_1730776162673&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;chmod +x catalina.sh&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;+x는 755와 동일한 옵션&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1303&quot; data-origin-height=&quot;270&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dNgjgi/btsKw0tP8Cd/RPKOaRZm1JCYCUHUvPakbk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dNgjgi/btsKw0tP8Cd/RPKOaRZm1JCYCUHUvPakbk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dNgjgi/btsKw0tP8Cd/RPKOaRZm1JCYCUHUvPakbk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdNgjgi%2FbtsKw0tP8Cd%2FRPKOaRZm1JCYCUHUvPakbk%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;710&quot; height=&quot;147&quot; data-origin-width=&quot;1303&quot; data-origin-height=&quot;270&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정상적으로 실행 된 모습을 확인할 수 있는데 인터넷에서 접속이 되었는지 확인해보기 위해 포트포워딩을 해야한다&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1459&quot; data-origin-height=&quot;881&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/k07Iq/btsKwzpH14q/7k7UhOKlOuskm5RrGtI2i0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/k07Iq/btsKwzpH14q/7k7UhOKlOuskm5RrGtI2i0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/k07Iq/btsKwzpH14q/7k7UhOKlOuskm5RrGtI2i0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fk07Iq%2FbtsKwzpH14q%2F7k7UhOKlOuskm5RrGtI2i0%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;563&quot; height=&quot;340&quot; data-origin-width=&quot;1459&quot; data-origin-height=&quot;881&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 포트포워딩이 완료되면 localhost를 통해 확인할 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;992&quot; data-origin-height=&quot;732&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cV36wW/btsKxiAZK6F/Gt2jr2PRifmfebFbPiZQVk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cV36wW/btsKxiAZK6F/Gt2jr2PRifmfebFbPiZQVk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cV36wW/btsKxiAZK6F/Gt2jr2PRifmfebFbPiZQVk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcV36wW%2FbtsKxiAZK6F%2FGt2jr2PRifmfebFbPiZQVk%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;688&quot; height=&quot;732&quot; data-origin-width=&quot;992&quot; data-origin-height=&quot;732&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;톰캣 설정을 끄기 위해서는 shutdown.sh를 실행시켜줘야되는데 권한 설정도 해주도록하자.&lt;/p&gt;
&lt;pre id=&quot;code_1730776511126&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;chmod +x shutdown.sh&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1730776659396&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;./shutdown.sh

sh shutdown.sh&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;프로세스를 보는 명령어 ps&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;649&quot; data-origin-height=&quot;115&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ecl5sC/btsKxrxOZom/5Zer0RZmkrqbEazlsQwkm0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ecl5sC/btsKxrxOZom/5Zer0RZmkrqbEazlsQwkm0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ecl5sC/btsKxrxOZom/5Zer0RZmkrqbEazlsQwkm0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fecl5sC%2FbtsKxrxOZom%2F5Zer0RZmkrqbEazlsQwkm0%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;576&quot; height=&quot;102&quot; data-origin-width=&quot;649&quot; data-origin-height=&quot;115&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 명령어를 통해 실행이 되고 있는지 확인할 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1730776883365&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ps -ef | grep tomcat&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;669&quot; data-origin-height=&quot;99&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/csLmOj/btsKxiA0yvl/QkOFnd8bgfWknhcqQRhH9K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/csLmOj/btsKxiA0yvl/QkOFnd8bgfWknhcqQRhH9K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/csLmOj/btsKxiA0yvl/QkOFnd8bgfWknhcqQRhH9K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcsLmOj%2FbtsKxiA0yvl%2FQkOFnd8bgfWknhcqQRhH9K%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;737&quot; height=&quot;109&quot; data-origin-width=&quot;669&quot; data-origin-height=&quot;99&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;강제 종료는 위에 해당하는 3452를 kill을 통해 사용한다&lt;/p&gt;
&lt;pre id=&quot;code_1730777069098&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;kill -9 [번호]&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;815&quot; data-origin-height=&quot;63&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IYQFU/btsKxhB7oGg/pWtWOazC2i8LRN3wz4qIw0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IYQFU/btsKxhB7oGg/pWtWOazC2i8LRN3wz4qIw0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IYQFU/btsKxhB7oGg/pWtWOazC2i8LRN3wz4qIw0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIYQFU%2FbtsKxhB7oGg%2FpWtWOazC2i8LRN3wz4qIw0%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;621&quot; height=&quot;48&quot; data-origin-width=&quot;815&quot; data-origin-height=&quot;63&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;프로젝트 리눅스 서버에 업로드&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 프로젝트 파일을 export하여 war파일로 저장한다&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;war파일은 컴파일된 클래스파일이 들어가는 것 (배포용 zip파일)&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;410&quot; data-origin-height=&quot;335&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cemeTk/btsKw2d8UVe/Zv72V3M9kbCTQPCqnY0RKk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cemeTk/btsKw2d8UVe/Zv72V3M9kbCTQPCqnY0RKk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cemeTk/btsKw2d8UVe/Zv72V3M9kbCTQPCqnY0RKk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcemeTk%2FbtsKw2d8UVe%2FZv72V3M9kbCTQPCqnY0RKk%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;379&quot; height=&quot;310&quot; data-origin-width=&quot;410&quot; data-origin-height=&quot;335&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 war파일에서 자바파일은 src폴더가 아닌 WEB-INF&amp;gt;classes에 포함되어있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 war를 webapps에 옮기면 해당 이름과 같은 폴더도 생성이 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;localhost 실행하고 싶으면 ROOT라고 이름을 변경하면된다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;로그 확인&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1861&quot; data-origin-height=&quot;114&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/SoDI4/btsKvn5b4eE/zjlOU20eB0bOnLRrawVMD0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/SoDI4/btsKvn5b4eE/zjlOU20eB0bOnLRrawVMD0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/SoDI4/btsKvn5b4eE/zjlOU20eB0bOnLRrawVMD0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSoDI4%2FbtsKvn5b4eE%2FzjlOU20eB0bOnLRrawVMD0%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;714&quot; height=&quot;114&quot; data-origin-width=&quot;1861&quot; data-origin-height=&quot;114&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1730778337579&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;tail -f catalina.out&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실시간 변경되는 로그를 확인할 수 있다.&lt;/p&gt;</description>
      <category>CS</category>
      <author>아잠만_</author>
      <guid isPermaLink="true">https://azamman.tistory.com/457</guid>
      <comments>https://azamman.tistory.com/457#entry457comment</comments>
      <pubDate>Tue, 5 Nov 2024 10:37:45 +0900</pubDate>
    </item>
    <item>
      <title>개인 프로젝트 - 2. 프로젝트 설정, mysql 연결</title>
      <link>https://azamman.tistory.com/456</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;이전 게시글에서는 dynamic 프로젝트로 생성해 spring프로젝트로 생성하긴 하였지만 편의성을 위해 mvc spring설정으로 다시 생성해줬다. 그래서 거기에 대한 기본설정에 있는 pom.xml을 사용하고 추가적으로 필요한 설정을 추가해나가겠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설정한 pom.xml파일은 아래의 형태이다.&lt;/p&gt;
&lt;pre id=&quot;code_1730462631913&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;
&amp;lt;project xmlns=&quot;http://maven.apache.org/POM/4.0.0&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
	xsi:schemaLocation=&quot;http://maven.apache.org/POM/4.0.0 https://maven.apache.org/maven-v4_0_0.xsd&quot;&amp;gt;
	&amp;lt;modelVersion&amp;gt;4.0.0&amp;lt;/modelVersion&amp;gt;
	&amp;lt;groupId&amp;gt;com.coin&amp;lt;/groupId&amp;gt;
	&amp;lt;artifactId&amp;gt;mabi&amp;lt;/artifactId&amp;gt;
	&amp;lt;name&amp;gt;macoin&amp;lt;/name&amp;gt;
	&amp;lt;packaging&amp;gt;war&amp;lt;/packaging&amp;gt;
	&amp;lt;version&amp;gt;1.0.0-BUILD-SNAPSHOT&amp;lt;/version&amp;gt;
	&amp;lt;properties&amp;gt;
		&amp;lt;java-version&amp;gt;1.8&amp;lt;/java-version&amp;gt;
		&amp;lt;org.springframework-version&amp;gt;5.2.5.RELEASE&amp;lt;/org.springframework-version&amp;gt;
		&amp;lt;org.aspectj-version&amp;gt;1.6.10&amp;lt;/org.aspectj-version&amp;gt;
		&amp;lt;org.slf4j-version&amp;gt;1.6.6&amp;lt;/org.slf4j-version&amp;gt;
	&amp;lt;/properties&amp;gt;
	
	&amp;lt;!-- 의존성 추가 --&amp;gt;
	&amp;lt;dependencies&amp;gt;
		&amp;lt;!-- Spring Context
			Bean의 확장버전으로 Spring이 bean을 다루기 쉽도록 기능 추가
			root-context(공통 DB와관련된 Repository, Service 등이 있음)
			Servlet-context(개별 주로 Controller)
			을 통해 설정하게 됨
		--&amp;gt;
		&amp;lt;dependency&amp;gt;
			&amp;lt;groupId&amp;gt;org.springframework&amp;lt;/groupId&amp;gt;
			&amp;lt;artifactId&amp;gt;spring-context&amp;lt;/artifactId&amp;gt;
			&amp;lt;version&amp;gt;${org.springframework-version}&amp;lt;/version&amp;gt;
			&amp;lt;exclusions&amp;gt;
				&amp;lt;!-- Exclude Commons Logging in favor of SLF4j --&amp;gt;
				&amp;lt;exclusion&amp;gt;
					&amp;lt;groupId&amp;gt;commons-logging&amp;lt;/groupId&amp;gt;
					&amp;lt;artifactId&amp;gt;commons-logging&amp;lt;/artifactId&amp;gt;
				 &amp;lt;/exclusion&amp;gt;
			&amp;lt;/exclusions&amp;gt;
		&amp;lt;/dependency&amp;gt;
		
		&amp;lt;!-- Spring web MVC
			MVC 디자인 패턴을 사용할 수 있도록 함
			request요청을 보내면
			DispatchServlet이 가로챔 (web.xml 파일에서 설정 가능)
			Handler Mapping에게 들어온 요청에 대한 Controller를 찾게 요청
			해당 url을 포함한 Controller로 가게됨 (db 등 요청처리)
			완료하게 되면 View에 보이게됨
		--&amp;gt;
		&amp;lt;dependency&amp;gt;
			&amp;lt;groupId&amp;gt;org.springframework&amp;lt;/groupId&amp;gt;
			&amp;lt;artifactId&amp;gt;spring-webmvc&amp;lt;/artifactId&amp;gt;
			&amp;lt;version&amp;gt;${org.springframework-version}&amp;lt;/version&amp;gt;
		&amp;lt;/dependency&amp;gt;
				
		&amp;lt;!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc --&amp;gt;
		&amp;lt;!-- 스프링에서 JDBC(Java Database Connectivity)를 사용하도록 해주는 라이브러리 --&amp;gt;
		&amp;lt;dependency&amp;gt;
		    &amp;lt;groupId&amp;gt;org.springframework&amp;lt;/groupId&amp;gt;
		    &amp;lt;artifactId&amp;gt;spring-jdbc&amp;lt;/artifactId&amp;gt;
		    &amp;lt;version&amp;gt;${org.springframework-version}&amp;lt;/version&amp;gt;
		&amp;lt;/dependency&amp;gt;
		
		&amp;lt;!-- spring test
			스프링과 MyBitis가 정상적으로 연동되었는지 확인하기 위해 필요한 라이브러리
		 --&amp;gt;
		&amp;lt;dependency&amp;gt;
			&amp;lt;groupId&amp;gt;org.springframework&amp;lt;/groupId&amp;gt;
			&amp;lt;artifactId&amp;gt;spring-test&amp;lt;/artifactId&amp;gt;
			&amp;lt;version&amp;gt;${org.springframework-version}&amp;lt;/version&amp;gt;
		&amp;lt;/dependency&amp;gt;
		
		&amp;lt;!-- aop설정 --&amp;gt;
		&amp;lt;dependency&amp;gt;
		    &amp;lt;groupId&amp;gt;org.springframework&amp;lt;/groupId&amp;gt;
		    &amp;lt;artifactId&amp;gt;spring-aspects&amp;lt;/artifactId&amp;gt;
		    &amp;lt;version&amp;gt;5.2.5.RELEASE&amp;lt;/version&amp;gt;
		&amp;lt;/dependency&amp;gt;
		
		&amp;lt;dependency&amp;gt;
		    &amp;lt;groupId&amp;gt;org.springframework&amp;lt;/groupId&amp;gt;
		    &amp;lt;artifactId&amp;gt;spring-aop&amp;lt;/artifactId&amp;gt;
		    &amp;lt;version&amp;gt;5.2.5.RELEASE&amp;lt;/version&amp;gt;
		&amp;lt;/dependency&amp;gt;
		
		&amp;lt;dependency&amp;gt;
		    &amp;lt;groupId&amp;gt;org.springframework&amp;lt;/groupId&amp;gt;
		    &amp;lt;artifactId&amp;gt;spring-tx&amp;lt;/artifactId&amp;gt;
		    &amp;lt;version&amp;gt;5.2.5.RELEASE&amp;lt;/version&amp;gt;
		&amp;lt;/dependency&amp;gt;
		
		&amp;lt;dependency&amp;gt;
			&amp;lt;groupId&amp;gt;org.aspectj&amp;lt;/groupId&amp;gt;
			&amp;lt;artifactId&amp;gt;aspectjrt&amp;lt;/artifactId&amp;gt;
			&amp;lt;version&amp;gt;${org.aspectj-version}&amp;lt;/version&amp;gt;
		&amp;lt;/dependency&amp;gt;	
		
		&amp;lt;!-- Logging 
			slf4j는 로깅 인터페이스 역할로 로깅 추상화 계층 역할
		--&amp;gt;
		&amp;lt;dependency&amp;gt;
			&amp;lt;groupId&amp;gt;org.slf4j&amp;lt;/groupId&amp;gt;
			&amp;lt;artifactId&amp;gt;slf4j-api&amp;lt;/artifactId&amp;gt;
			&amp;lt;version&amp;gt;${org.slf4j-version}&amp;lt;/version&amp;gt;
		&amp;lt;/dependency&amp;gt;
		&amp;lt;dependency&amp;gt;
			&amp;lt;groupId&amp;gt;org.slf4j&amp;lt;/groupId&amp;gt;
			&amp;lt;artifactId&amp;gt;jcl-over-slf4j&amp;lt;/artifactId&amp;gt;
			&amp;lt;version&amp;gt;${org.slf4j-version}&amp;lt;/version&amp;gt;
			&amp;lt;scope&amp;gt;runtime&amp;lt;/scope&amp;gt;
		&amp;lt;/dependency&amp;gt;
		&amp;lt;dependency&amp;gt;
			&amp;lt;groupId&amp;gt;org.slf4j&amp;lt;/groupId&amp;gt;
			&amp;lt;artifactId&amp;gt;slf4j-log4j12&amp;lt;/artifactId&amp;gt;
			&amp;lt;version&amp;gt;${org.slf4j-version}&amp;lt;/version&amp;gt;
			&amp;lt;scope&amp;gt;runtime&amp;lt;/scope&amp;gt;
		&amp;lt;/dependency&amp;gt;
		
		&amp;lt;!-- log4j 로깅 처리--&amp;gt;
		&amp;lt;dependency&amp;gt;
			&amp;lt;groupId&amp;gt;log4j&amp;lt;/groupId&amp;gt;
			&amp;lt;artifactId&amp;gt;log4j&amp;lt;/artifactId&amp;gt;
			&amp;lt;version&amp;gt;1.2.15&amp;lt;/version&amp;gt;
			&amp;lt;exclusions&amp;gt;
				&amp;lt;exclusion&amp;gt;
					&amp;lt;groupId&amp;gt;javax.mail&amp;lt;/groupId&amp;gt;
					&amp;lt;artifactId&amp;gt;mail&amp;lt;/artifactId&amp;gt;
				&amp;lt;/exclusion&amp;gt;
				&amp;lt;exclusion&amp;gt;
					&amp;lt;groupId&amp;gt;javax.jms&amp;lt;/groupId&amp;gt;
					&amp;lt;artifactId&amp;gt;jms&amp;lt;/artifactId&amp;gt;
				&amp;lt;/exclusion&amp;gt;
				&amp;lt;exclusion&amp;gt;
					&amp;lt;groupId&amp;gt;com.sun.jdmk&amp;lt;/groupId&amp;gt;
					&amp;lt;artifactId&amp;gt;jmxtools&amp;lt;/artifactId&amp;gt;
				&amp;lt;/exclusion&amp;gt;
				&amp;lt;exclusion&amp;gt;
					&amp;lt;groupId&amp;gt;com.sun.jmx&amp;lt;/groupId&amp;gt;
					&amp;lt;artifactId&amp;gt;jmxri&amp;lt;/artifactId&amp;gt;
				&amp;lt;/exclusion&amp;gt;
			&amp;lt;/exclusions&amp;gt;
			&amp;lt;scope&amp;gt;runtime&amp;lt;/scope&amp;gt;
		&amp;lt;/dependency&amp;gt;

		&amp;lt;!-- @Inject 
			@Autowired와 유사한 자동 의존성 주입 어노테이션
		--&amp;gt;
		&amp;lt;dependency&amp;gt;
			&amp;lt;groupId&amp;gt;javax.inject&amp;lt;/groupId&amp;gt;
			&amp;lt;artifactId&amp;gt;javax.inject&amp;lt;/artifactId&amp;gt;
			&amp;lt;version&amp;gt;1&amp;lt;/version&amp;gt;
		&amp;lt;/dependency&amp;gt;
				
		&amp;lt;!-- Servlet --&amp;gt;
		&amp;lt;dependency&amp;gt;
			&amp;lt;groupId&amp;gt;javax.servlet&amp;lt;/groupId&amp;gt;
			&amp;lt;artifactId&amp;gt;servlet-api&amp;lt;/artifactId&amp;gt;
			&amp;lt;version&amp;gt;2.5&amp;lt;/version&amp;gt;
			&amp;lt;scope&amp;gt;provided&amp;lt;/scope&amp;gt;
		&amp;lt;/dependency&amp;gt;
		&amp;lt;dependency&amp;gt;
			&amp;lt;groupId&amp;gt;javax.servlet.jsp&amp;lt;/groupId&amp;gt;
			&amp;lt;artifactId&amp;gt;jsp-api&amp;lt;/artifactId&amp;gt;
			&amp;lt;version&amp;gt;2.1&amp;lt;/version&amp;gt;
			&amp;lt;scope&amp;gt;provided&amp;lt;/scope&amp;gt;
		&amp;lt;/dependency&amp;gt;
		&amp;lt;!-- JSP에서 처리하는 jstl에 대한 라이브러리 --&amp;gt;
		&amp;lt;dependency&amp;gt;
			&amp;lt;groupId&amp;gt;javax.servlet&amp;lt;/groupId&amp;gt;
			&amp;lt;artifactId&amp;gt;jstl&amp;lt;/artifactId&amp;gt;
			&amp;lt;version&amp;gt;1.2&amp;lt;/version&amp;gt;
		&amp;lt;/dependency&amp;gt;
	
		&amp;lt;!-- Test 
		자바를 위한 테스팅 프레임워크
		@Test를 붙여 사용 하며
		assertEquals() 메서드는 Junit 프레임워크에서 제공하는 메서드로,
		 두 값이 동일한지를 비교 올바르게 동작하지 않는다면 AssertionError를 throw
		--&amp;gt;
		&amp;lt;dependency&amp;gt;
			&amp;lt;groupId&amp;gt;junit&amp;lt;/groupId&amp;gt;
			&amp;lt;artifactId&amp;gt;junit&amp;lt;/artifactId&amp;gt;
			&amp;lt;version&amp;gt;4.12&amp;lt;/version&amp;gt;
			&amp;lt;scope&amp;gt;test&amp;lt;/scope&amp;gt;
		&amp;lt;/dependency&amp;gt;        
		
		
		&amp;lt;!-- https://mvnrepository.com/artifact/org.projectlombok/lombok --&amp;gt;
		&amp;lt;!-- lombok
			자바빈 클래스(VO)의 getter/setter 메소드, toString 자동 처리
		 --&amp;gt;
		&amp;lt;dependency&amp;gt;
		    &amp;lt;groupId&amp;gt;org.projectlombok&amp;lt;/groupId&amp;gt;
		    &amp;lt;artifactId&amp;gt;lombok&amp;lt;/artifactId&amp;gt;
		    &amp;lt;version&amp;gt;1.18.24&amp;lt;/version&amp;gt;
		    &amp;lt;scope&amp;gt;provided&amp;lt;/scope&amp;gt;
		&amp;lt;/dependency&amp;gt;
		
		&amp;lt;!-- https://mvnrepository.com/artifact/org.mybatis/mybatis --&amp;gt;
		&amp;lt;!-- XML로 쿼리를 작성하게 해주는 라이브러리 --&amp;gt;
		&amp;lt;dependency&amp;gt;
		    &amp;lt;groupId&amp;gt;org.mybatis&amp;lt;/groupId&amp;gt;
		    &amp;lt;artifactId&amp;gt;mybatis&amp;lt;/artifactId&amp;gt;
		    &amp;lt;version&amp;gt;3.5.10&amp;lt;/version&amp;gt;
		&amp;lt;/dependency&amp;gt;
		
		&amp;lt;!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring --&amp;gt;
		&amp;lt;!-- 스프링과 mybatis를 연동하게 해주는 라이브러리 --&amp;gt;
		&amp;lt;dependency&amp;gt;
		    &amp;lt;groupId&amp;gt;org.mybatis&amp;lt;/groupId&amp;gt;
		    &amp;lt;artifactId&amp;gt;mybatis-spring&amp;lt;/artifactId&amp;gt;
		    &amp;lt;version&amp;gt;2.0.4&amp;lt;/version&amp;gt;
		&amp;lt;/dependency&amp;gt;
		
		&amp;lt;!-- https://mvnrepository.com/artifact/org.apache.commons/commons-dbcp2 --&amp;gt;
		&amp;lt;!-- dbcp : database connection pool =&amp;gt; 커넥션객체를 미리 만들어놓고 쓰고/반납
			1. WAS가 실행되면서 미리 일정량의 DB Connection 객체를 생성하고 Pool 이라는 공간에 저장해 둔다.
			2. HTTP 요청에 따라 필요할 때 Pool에서 Connection 객체를 가져다 쓰고 반환한다.
		 --&amp;gt;
		&amp;lt;dependency&amp;gt;
		    &amp;lt;groupId&amp;gt;org.apache.commons&amp;lt;/groupId&amp;gt;
		    &amp;lt;artifactId&amp;gt;commons-dbcp2&amp;lt;/artifactId&amp;gt;
		    &amp;lt;version&amp;gt;2.7.0&amp;lt;/version&amp;gt;
		&amp;lt;/dependency&amp;gt;
		
		&amp;lt;!-- MySQL --&amp;gt;
		&amp;lt;!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --&amp;gt;
		&amp;lt;dependency&amp;gt;
		    &amp;lt;groupId&amp;gt;mysql&amp;lt;/groupId&amp;gt;
		    &amp;lt;artifactId&amp;gt;mysql-connector-java&amp;lt;/artifactId&amp;gt;
		    &amp;lt;version&amp;gt;8.0.33&amp;lt;/version&amp;gt;
		&amp;lt;/dependency&amp;gt;

		
		&amp;lt;!-- tiles 시작 --&amp;gt;
		&amp;lt;!-- https://mvnrepository.com/artifact/org.apache.tiles/tiles-extras --&amp;gt;
		&amp;lt;dependency&amp;gt;
		    &amp;lt;groupId&amp;gt;org.apache.tiles&amp;lt;/groupId&amp;gt;
		    &amp;lt;artifactId&amp;gt;tiles-extras&amp;lt;/artifactId&amp;gt;
		    &amp;lt;version&amp;gt;3.0.8&amp;lt;/version&amp;gt;
		&amp;lt;/dependency&amp;gt;
		
		&amp;lt;!-- https://mvnrepository.com/artifact/org.apache.tiles/tiles-servlet --&amp;gt;
		&amp;lt;dependency&amp;gt;
		    &amp;lt;groupId&amp;gt;org.apache.tiles&amp;lt;/groupId&amp;gt;
		    &amp;lt;artifactId&amp;gt;tiles-servlet&amp;lt;/artifactId&amp;gt;
		    &amp;lt;version&amp;gt;3.0.8&amp;lt;/version&amp;gt;
		&amp;lt;/dependency&amp;gt;
		
		&amp;lt;!-- https://mvnrepository.com/artifact/org.apache.tiles/tiles-jsp --&amp;gt;
		&amp;lt;dependency&amp;gt;
		    &amp;lt;groupId&amp;gt;org.apache.tiles&amp;lt;/groupId&amp;gt;
		    &amp;lt;artifactId&amp;gt;tiles-jsp&amp;lt;/artifactId&amp;gt;
		    &amp;lt;version&amp;gt;3.0.8&amp;lt;/version&amp;gt;
		&amp;lt;/dependency&amp;gt;
		&amp;lt;!-- tiles 끝 --&amp;gt;
		
		&amp;lt;!-- https://mvnrepository.com/artifact/com.googlecode.json-simple/json-simple --&amp;gt;
		&amp;lt;dependency&amp;gt;
		    &amp;lt;groupId&amp;gt;com.googlecode.json-simple&amp;lt;/groupId&amp;gt;
		    &amp;lt;artifactId&amp;gt;json-simple&amp;lt;/artifactId&amp;gt;
		    &amp;lt;version&amp;gt;1.1.1&amp;lt;/version&amp;gt;
		&amp;lt;/dependency&amp;gt;
		
		&amp;lt;!-- json 데이터 바인딩을 위한 의존 라이브러리 --&amp;gt;
		&amp;lt;!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind --&amp;gt;
		&amp;lt;dependency&amp;gt;
		    &amp;lt;groupId&amp;gt;com.fasterxml.jackson.core&amp;lt;/groupId&amp;gt;
		    &amp;lt;artifactId&amp;gt;jackson-databind&amp;lt;/artifactId&amp;gt;
		    &amp;lt;version&amp;gt;2.13.3&amp;lt;/version&amp;gt;
		&amp;lt;/dependency&amp;gt;
		
	&amp;lt;/dependencies&amp;gt;
	&amp;lt;!-- 의존성 끝 --&amp;gt;
	
    &amp;lt;build&amp;gt;
        &amp;lt;plugins&amp;gt;
            &amp;lt;plugin&amp;gt;
                &amp;lt;artifactId&amp;gt;maven-eclipse-plugin&amp;lt;/artifactId&amp;gt;
                &amp;lt;version&amp;gt;2.9&amp;lt;/version&amp;gt;
                &amp;lt;configuration&amp;gt;
                    &amp;lt;additionalProjectnatures&amp;gt;
                        &amp;lt;projectnature&amp;gt;org.springframework.ide.eclipse.core.springnature&amp;lt;/projectnature&amp;gt;
                    &amp;lt;/additionalProjectnatures&amp;gt;
                    &amp;lt;additionalBuildcommands&amp;gt;
                        &amp;lt;buildcommand&amp;gt;org.springframework.ide.eclipse.core.springbuilder&amp;lt;/buildcommand&amp;gt;
                    &amp;lt;/additionalBuildcommands&amp;gt;
                    &amp;lt;downloadSources&amp;gt;true&amp;lt;/downloadSources&amp;gt;
                    &amp;lt;downloadJavadocs&amp;gt;true&amp;lt;/downloadJavadocs&amp;gt;
                &amp;lt;/configuration&amp;gt;
            &amp;lt;/plugin&amp;gt;
            &amp;lt;plugin&amp;gt;
                &amp;lt;groupId&amp;gt;org.apache.maven.plugins&amp;lt;/groupId&amp;gt;
                &amp;lt;artifactId&amp;gt;maven-compiler-plugin&amp;lt;/artifactId&amp;gt;
                &amp;lt;version&amp;gt;2.5.1&amp;lt;/version&amp;gt;
                &amp;lt;configuration&amp;gt;
                    &amp;lt;source&amp;gt;1.6&amp;lt;/source&amp;gt;
                    &amp;lt;target&amp;gt;1.6&amp;lt;/target&amp;gt;
                    &amp;lt;compilerArgument&amp;gt;-Xlint:all&amp;lt;/compilerArgument&amp;gt;
                    &amp;lt;showWarnings&amp;gt;true&amp;lt;/showWarnings&amp;gt;
                    &amp;lt;showDeprecation&amp;gt;true&amp;lt;/showDeprecation&amp;gt;
                &amp;lt;/configuration&amp;gt;
            &amp;lt;/plugin&amp;gt;
            &amp;lt;plugin&amp;gt;
                &amp;lt;groupId&amp;gt;org.codehaus.mojo&amp;lt;/groupId&amp;gt;
                &amp;lt;artifactId&amp;gt;exec-maven-plugin&amp;lt;/artifactId&amp;gt;
                &amp;lt;version&amp;gt;1.2.1&amp;lt;/version&amp;gt;
                &amp;lt;configuration&amp;gt;
                    &amp;lt;mainClass&amp;gt;org.test.int1.Main&amp;lt;/mainClass&amp;gt;
                &amp;lt;/configuration&amp;gt;
            &amp;lt;/plugin&amp;gt;
        &amp;lt;/plugins&amp;gt;
    &amp;lt;/build&amp;gt;
&amp;lt;/project&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원래 db를 기존엔 oracle을 사용했지만 mysql를 다뤄보고자한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음에 mysql 버전을 낮게 사용했다가 내가 다운 받은 mysql이 8.0.4버전이기 때문에 높은 버전으로 변경했다.&lt;/p&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과 연동하기 위해서 root-context를 설정해줘야한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래는 mysql연동과 mybatis의 설정을 한 값이다.&lt;/p&gt;
&lt;pre id=&quot;code_1730463925005&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;beans xmlns=&quot;http://www.springframework.org/schema/beans&quot; 
		xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; 
		xmlns:aop=&quot;http://www.springframework.org/schema/aop&quot; 
		xmlns:context=&quot;http://www.springframework.org/schema/context&quot; 
		xmlns:jdbc=&quot;http://www.springframework.org/schema/jdbc&quot; 
		xmlns:mybatis-spring=&quot;http://mybatis.org/schema/mybatis-spring&quot; 
		xsi:schemaLocation=&quot;http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-4.3.xsd 
							http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring-1.2.xsd 
							http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
							http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd 
							http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd&quot;&amp;gt;
							
	&amp;lt;!--  Root Context: defines shared resources visible to all other web components  --&amp;gt;
	&amp;lt;bean id=&quot;dataSource&quot; class=&quot;org.springframework.jdbc.datasource.DriverManagerDataSource&quot; lazy-init=&quot;false&quot;&amp;gt;
		&amp;lt;property name=&quot;driverClassName&quot; value=&quot;com.mysql.jdbc.Driver&quot;/&amp;gt;
		&amp;lt;property name=&quot;url&quot; value=&quot;jdbc:mysql://localhost:3306/mabi&quot;/&amp;gt; &amp;lt;!-- 뒤에는 데이터베이스 --&amp;gt;
		&amp;lt;property name=&quot;username&quot; value=&quot;mabi&quot;/&amp;gt;
		&amp;lt;property name=&quot;password&quot; value=&quot;java&quot;/&amp;gt;
	&amp;lt;/bean&amp;gt;
	
	&amp;lt;!-- mybatis와 데이터 베이스 연결 --&amp;gt;
	&amp;lt;bean id=&quot;sqlSessionFactory&quot; class=&quot;org.mybatis.spring.SqlSessionFactoryBean&quot;&amp;gt;
    	&amp;lt;property name=&quot;dataSource&quot; ref=&quot;dataSource&quot; /&amp;gt;
		&amp;lt;property name=&quot;mapperLocations&quot; value=&quot;classpath:/sqlmap/**/*_SQL.xml&quot; /&amp;gt;
		&amp;lt;property name=&quot;configLocation&quot; value=&quot;/WEB-INF/mybatisAlias/mybatisAlias.xml&quot; /&amp;gt;
    &amp;lt;/bean&amp;gt;
    
    &amp;lt;!-- 데이터베이스에 개별적으로 쿼리를 실행시키는 객체 
		이 객체를 통해 query를 실행함
	--&amp;gt;
	&amp;lt;bean id=&quot;sqlSessionTemplate&quot; class=&quot;org.mybatis.spring.SqlSessionTemplate&quot;&amp;gt;
		&amp;lt;constructor-arg index=&quot;0&quot; ref=&quot;sqlSessionFactory&quot; /&amp;gt;
	&amp;lt;/bean&amp;gt;
	
	&amp;lt;!-- Mapper 인터페이스 설정
		개발자가 직접 DAO를 설정하지 않아도 
		자동으로 Mapper 인터페이스를 활용하는 객체를 생성하게 됨
	 --&amp;gt;
	 &amp;lt;bean class=&quot;org.mybatis.spring.mapper.MapperScannerConfigurer&quot;&amp;gt;
	 	&amp;lt;property name=&quot;basePackage&quot; value=&quot;com.coin.mabi.mapper.**&quot;/&amp;gt;
	 &amp;lt;/bean&amp;gt;

&amp;lt;/beans&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;junit을 통해 실행해보았다.&lt;/p&gt;
&lt;pre id=&quot;code_1730463970816&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package com.coin.mabi;

import java.sql.Connection;
import javax.inject.Inject;
import javax.sql.DataSource; 
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; 

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={&quot;file:src/main/webapp/WEB-INF/spring/**/*.xml&quot;})


public class DataSourceTest {     

	@Inject    
	private DataSource ds;        

	@Test    
	public void testConnection() throws Exception {         
		try (Connection con = ds.getConnection()) {
			System.out.println(con);        
		} catch (Exception e) {            
			e.printStackTrace();        
		}    
	} 
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1435&quot; data-origin-height=&quot;799&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lik5H/btsKtfzojDB/L8kkebtkepNJ37aBEhmUe0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lik5H/btsKtfzojDB/L8kkebtkepNJ37aBEhmUe0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lik5H/btsKtfzojDB/L8kkebtkepNJ37aBEhmUe0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Flik5H%2FbtsKtfzojDB%2FL8kkebtkepNJ37aBEhmUe0%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;664&quot; height=&quot;370&quot; data-origin-width=&quot;1435&quot; data-origin-height=&quot;799&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 제대로 연결되었다는 콘솔을 확인할 수 있었다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2130&quot; data-origin-height=&quot;163&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nIcWX/btsKuFJSqAx/t9KXtLOTz9CcHKeXdIIVRk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nIcWX/btsKuFJSqAx/t9KXtLOTz9CcHKeXdIIVRk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nIcWX/btsKuFJSqAx/t9KXtLOTz9CcHKeXdIIVRk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnIcWX%2FbtsKuFJSqAx%2Ft9KXtLOTz9CcHKeXdIIVRk%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;638&quot; height=&quot;163&quot; data-origin-width=&quot;2130&quot; data-origin-height=&quot;163&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 alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1072&quot; data-origin-height=&quot;248&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/brXqQ8/btsKs2NEY4X/R1kzE1ZjDfweSRDebAdkK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/brXqQ8/btsKs2NEY4X/R1kzE1ZjDfweSRDebAdkK1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/brXqQ8/btsKs2NEY4X/R1kzE1ZjDfweSRDebAdkK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbrXqQ8%2FbtsKs2NEY4X%2FR1kzE1ZjDfweSRDebAdkK1%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;640&quot; height=&quot;148&quot; data-origin-width=&quot;1072&quot; data-origin-height=&quot;248&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런창으로 가게 된다. 이렇게 ?로 되어있는건 인코딩 설정을 안해줘서 일어나는 현상인데&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;web.xml에서 filter로 환경설정이 필요하다&lt;/p&gt;
&lt;pre id=&quot;code_1730464927541&quot; class=&quot;xml&quot; style=&quot;background-color: #f8f8f8; color: #383a42;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;java&quot;&gt;&lt;code&gt;&amp;lt;!-- 한글 처리 --&amp;gt;
	&amp;lt;filter&amp;gt;
		&amp;lt;filter-name&amp;gt;encodingFilter&amp;lt;/filter-name&amp;gt;
		&amp;lt;filter-class&amp;gt;
			org.springframework.web.filter.CharacterEncodingFilter
		&amp;lt;/filter-class&amp;gt;
		&amp;lt;init-param&amp;gt;
			&amp;lt;param-name&amp;gt;encoding&amp;lt;/param-name&amp;gt;
			&amp;lt;param-value&amp;gt;UTF-8&amp;lt;/param-value&amp;gt;
		&amp;lt;/init-param&amp;gt;
		&amp;lt;init-param&amp;gt;
			&amp;lt;param-name&amp;gt;forceEncoding&amp;lt;/param-name&amp;gt;
			&amp;lt;param-value&amp;gt;true&amp;lt;/param-value&amp;gt;
		&amp;lt;/init-param&amp;gt;
	&amp;lt;/filter&amp;gt;
	&amp;lt;filter-mapping&amp;gt;
		&amp;lt;filter-name&amp;gt;encodingFilter&amp;lt;/filter-name&amp;gt;
		&amp;lt;url-pattern&amp;gt;/*&amp;lt;/url-pattern&amp;gt;
	&amp;lt;/filter-mapping&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이것을 web.xml에 추가하면 정상적으로 한글이 출력되는 걸 확인할 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1266&quot; data-origin-height=&quot;245&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Evzr7/btsKtnjGbmP/KPQWd75ySJYkwEG2jkvRv1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Evzr7/btsKtnjGbmP/KPQWd75ySJYkwEG2jkvRv1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Evzr7/btsKtnjGbmP/KPQWd75ySJYkwEG2jkvRv1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEvzr7%2FbtsKtnjGbmP%2FKPQWd75ySJYkwEG2jkvRv1%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;617&quot; height=&quot;245&quot; data-origin-width=&quot;1266&quot; data-origin-height=&quot;245&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 설정까지 완료한다면 기본 설정은 완료가 되었다고 볼 수 있다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사실 이것 설정 외에도 tile나 security, 트랜잭션 등 여러 설정이 있긴하지만&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그건은 개발하면서 이후에 필요하면 설정해볼까 한다.&lt;/p&gt;</description>
      <category>Project</category>
      <author>아잠만_</author>
      <guid isPermaLink="true">https://azamman.tistory.com/456</guid>
      <comments>https://azamman.tistory.com/456#entry456comment</comments>
      <pubDate>Fri, 1 Nov 2024 21:27:48 +0900</pubDate>
    </item>
    <item>
      <title>개인 프로젝트 - 1. 프로젝트 생성</title>
      <link>https://azamman.tistory.com/455</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;이번에는 내가 사용해보고 싶은 페이지를 만들고 싶어 개인 프로젝트를 시작하게 되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러면서 좀 더 꼼꼼히 그 과정을 기록해보고자 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이전엔 수업을 따라 설정을 진행하였다면 이번엔 직접 설정해보면서 이 설정이 어떤식으로 사용되는지 공부해볼 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스프링 프로젝트를 MVC패턴으로 만드는 방법은 2가지가 있다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;Dynamic Web Project에서 Spring 구조 파일을 직접 만드는 방법&lt;/li&gt;
&lt;li&gt;STS에서 제공하는 Spring Legacy Project의 Spring MVC Project를 사용하는 방법&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각 프로젝트의 차이점은 다른 &lt;a href=&quot;https://velog.io/@matcha_/Spring-%EC%8A%A4%ED%94%84%EB%A7%81Spring-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%EC%83%9D%EC%84%B1%ED%95%98%EA%B8%B0&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;블로그 내용&lt;/a&gt;에서 확인할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2번째 방법은 이미 수업 시에 사용해봤기 때문에 한번 1번 방법으로 만들어보게 되었다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1015&quot; data-origin-height=&quot;972&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bjRyIp/btsKthjheXT/VjjoAUbUUFU79r5A9BNOyK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bjRyIp/btsKthjheXT/VjjoAUbUUFU79r5A9BNOyK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bjRyIp/btsKthjheXT/VjjoAUbUUFU79r5A9BNOyK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbjRyIp%2FbtsKthjheXT%2FVjjoAUbUUFU79r5A9BNOyK%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;251&quot; height=&quot;240&quot; data-origin-width=&quot;1015&quot; data-origin-height=&quot;972&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1014&quot; data-origin-height=&quot;1349&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bwTbss/btsKsA4I2uC/FqBcpya6Xyy8T6Axop5fD0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bwTbss/btsKsA4I2uC/FqBcpya6Xyy8T6Axop5fD0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bwTbss/btsKsA4I2uC/FqBcpya6Xyy8T6Axop5fD0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbwTbss%2FbtsKsA4I2uC%2FFqBcpya6Xyy8T6Axop5fD0%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;378&quot; height=&quot;503&quot; data-origin-width=&quot;1014&quot; data-origin-height=&quot;1349&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1001&quot; data-origin-height=&quot;1350&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/u6jHm/btsKuS9SngE/zU5LjOxJSq2SkZzFKBzDa0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/u6jHm/btsKuS9SngE/zU5LjOxJSq2SkZzFKBzDa0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/u6jHm/btsKuS9SngE/zU5LjOxJSq2SkZzFKBzDa0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fu6jHm%2FbtsKuS9SngE%2FzU5LjOxJSq2SkZzFKBzDa0%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;367&quot; height=&quot;495&quot; data-origin-width=&quot;1001&quot; data-origin-height=&quot;1350&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;next를 쭉 넘겨서 web.xml도 추가하였다. 완료를 누르면 프로젝트가 잘 생성된 것을 확인할 수 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 spring 프레임워크를 사용하기 위해서 maven설정이 필요한데&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때 pom.xml에 스프링 프레임워크 의존성을 추가할 필요가 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1376&quot; data-origin-height=&quot;1368&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/brRx1C/btsKuw67hDo/ExaX9PDzPxwKd6Qk7lBb60/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/brRx1C/btsKuw67hDo/ExaX9PDzPxwKd6Qk7lBb60/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/brRx1C/btsKuw67hDo/ExaX9PDzPxwKd6Qk7lBb60/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbrRx1C%2FbtsKuw67hDo%2FExaX9PDzPxwKd6Qk7lBb60%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;417&quot; height=&quot;415&quot; data-origin-width=&quot;1376&quot; data-origin-height=&quot;1368&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1015&quot; data-origin-height=&quot;835&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cmJmJK/btsKtCT1vJm/9mPSgx1n3EkOkPQXILOLl0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cmJmJK/btsKtCT1vJm/9mPSgx1n3EkOkPQXILOLl0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cmJmJK/btsKtCT1vJm/9mPSgx1n3EkOkPQXILOLl0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcmJmJK%2FbtsKtCT1vJm%2F9mPSgx1n3EkOkPQXILOLl0%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;304&quot; height=&quot;835&quot; data-origin-width=&quot;1015&quot; data-origin-height=&quot;835&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 group id는 기본적으로 프로젝트 명과 동일하다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만들어진 pom.xml에 의존성을 추가해줘야되는데 의존성은 꼭 &amp;lt;dependencies&amp;gt; 태그로 감싸줘야한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 추가에야되는 라이브러리는 &lt;a href=&quot;https://mvnrepository.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Maven Repository&lt;/a&gt;에서 검색해서 받아볼 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;spring 프로젝트로 생성하기 위해선 spring web과 spring web mvc를 의존성에 추가해야된다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그렇게 설정한 pom.xml 설정 파일이다.&lt;/p&gt;
&lt;pre id=&quot;code_1730457261140&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;project xmlns=&quot;http://maven.apache.org/POM/4.0.0&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:schemaLocation=&quot;http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd&quot;&amp;gt;
  &amp;lt;modelVersion&amp;gt;4.0.0&amp;lt;/modelVersion&amp;gt;
  &amp;lt;groupId&amp;gt;mabimy&amp;lt;/groupId&amp;gt;
  &amp;lt;artifactId&amp;gt;mabimy&amp;lt;/artifactId&amp;gt;
  &amp;lt;version&amp;gt;0.0.1-SNAPSHOT&amp;lt;/version&amp;gt;
  &amp;lt;packaging&amp;gt;war&amp;lt;/packaging&amp;gt;
  &amp;lt;build&amp;gt;
    &amp;lt;sourceDirectory&amp;gt;src&amp;lt;/sourceDirectory&amp;gt;
    &amp;lt;plugins&amp;gt;
      &amp;lt;plugin&amp;gt;
        &amp;lt;artifactId&amp;gt;maven-compiler-plugin&amp;lt;/artifactId&amp;gt;
        &amp;lt;version&amp;gt;3.8.1&amp;lt;/version&amp;gt;
        &amp;lt;configuration&amp;gt;
          &amp;lt;source&amp;gt;1.8&amp;lt;/source&amp;gt;
          &amp;lt;target&amp;gt;1.8&amp;lt;/target&amp;gt;
        &amp;lt;/configuration&amp;gt;
      &amp;lt;/plugin&amp;gt;
      &amp;lt;plugin&amp;gt;
        &amp;lt;artifactId&amp;gt;maven-war-plugin&amp;lt;/artifactId&amp;gt;
        &amp;lt;version&amp;gt;3.2.3&amp;lt;/version&amp;gt;
        &amp;lt;configuration&amp;gt;
          &amp;lt;warSourceDirectory&amp;gt;WebContent&amp;lt;/warSourceDirectory&amp;gt;
        &amp;lt;/configuration&amp;gt;
      &amp;lt;/plugin&amp;gt;
    &amp;lt;/plugins&amp;gt;
  &amp;lt;/build&amp;gt;
  
  
  &amp;lt;!-- 의존성 추가 --&amp;gt;
  &amp;lt;dependencies&amp;gt;
  	&amp;lt;!-- Spring Web 
	  	multipartFile 업로드, 서블릿 리스너 등 웹관련 기능 제공
  	--&amp;gt;
  	&amp;lt;!-- https://mvnrepository.com/artifact/org.springframework/spring-web --&amp;gt;
	&amp;lt;dependency&amp;gt;
	    &amp;lt;groupId&amp;gt;org.springframework&amp;lt;/groupId&amp;gt;
	    &amp;lt;artifactId&amp;gt;spring-web&amp;lt;/artifactId&amp;gt;
	    &amp;lt;version&amp;gt;5.3.19&amp;lt;/version&amp;gt;
	&amp;lt;/dependency&amp;gt;
	
	  &amp;lt;!-- Spring Web MVC 
		  Web-Servlet 모듈이라고 함
		  Spring MVC, REST서비스 구현 포함
	  --&amp;gt;
	  &amp;lt;!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc --&amp;gt;
	&amp;lt;dependency&amp;gt;
	    &amp;lt;groupId&amp;gt;org.springframework&amp;lt;/groupId&amp;gt;
	    &amp;lt;artifactId&amp;gt;spring-webmvc&amp;lt;/artifactId&amp;gt;
	    &amp;lt;version&amp;gt;5.3.19&amp;lt;/version&amp;gt;
	&amp;lt;/dependency&amp;gt;
	
  &amp;lt;/dependencies&amp;gt;
  &amp;lt;!-- 의존성 추가 끝 --&amp;gt;

&amp;lt;/project&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;REST란?&lt;/blockquote&gt;
&lt;ol style=&quot;list-style-type: decimal; color: #333333; text-align: left;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;list-style-type: unset; color: #000000;&quot;&gt;&lt;span&gt;HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고,&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;list-style-type: unset; color: #000000;&quot;&gt;HTTP Method(POST, GET, PUT, DELETE, PATCH 등)를 통해&lt;/li&gt;
&lt;li style=&quot;list-style-type: unset; color: #000000;&quot;&gt;해당 자원(URI)에 대한 CRUD Operation을 적용하는 것을 의미합니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 pom.xml설정을 완료했으니 프로젝트를 업데이트 해주면된다&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1394&quot; data-origin-height=&quot;1254&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ueIWl/btsKuTucj6i/k1IoJJSZEl59xm4y92K5r0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ueIWl/btsKuTucj6i/k1IoJJSZEl59xm4y92K5r0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ueIWl/btsKuTucj6i/k1IoJJSZEl59xm4y92K5r0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FueIWl%2FbtsKuTucj6i%2Fk1IoJJSZEl59xm4y92K5r0%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;373&quot; height=&quot;1254&quot; data-origin-width=&quot;1394&quot; data-origin-height=&quot;1254&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;업데이트가 완료됐으면 프로젝트 폴더가 J라고 써진 형식이 S로 변경된 걸 확인할 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;68&quot; data-origin-height=&quot;34&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/A9lQh/btsKsVugMZr/5H0ENwH3DCY24JsnWKn0hk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/A9lQh/btsKsVugMZr/5H0ENwH3DCY24JsnWKn0hk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/A9lQh/btsKsVugMZr/5H0ENwH3DCY24JsnWKn0hk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FA9lQh%2FbtsKsVugMZr%2F5H0ENwH3DCY24JsnWKn0hk%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;44&quot; height=&quot;22&quot; data-origin-width=&quot;68&quot; data-origin-height=&quot;34&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 잘 변경된 걸 확인할 수 있었다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음엔 프로젝트를 수행하기 위해 필요한 추가 라이브러리를 설치와 그것에 사용용도에 대해 작성해보도록 하겠다.&lt;/p&gt;</description>
      <category>Project</category>
      <author>아잠만_</author>
      <guid isPermaLink="true">https://azamman.tistory.com/455</guid>
      <comments>https://azamman.tistory.com/455#entry455comment</comments>
      <pubDate>Fri, 1 Nov 2024 19:35:30 +0900</pubDate>
    </item>
    <item>
      <title>정리 - SPRING</title>
      <link>https://azamman.tistory.com/454</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;SPRING&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;/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;의존성 주입(DI; Dependency Injection)&lt;/h3&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;직접 의존하는 객체를 생성하거나 검색해서 가져올 필요없어서 결합도가 낮아지는 장점이 존재&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;제어의 역전(IoC; Inversion of Control)&lt;/h3&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;스프링에서는 인스턴스의 생성부터 소멸까지 개발자가 아닌 컨테이너에서 대신 관리&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;ORM(Object Relational Mapping)&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;관계형 데이터베이스(RDBMS)를 OOP언어로 변환해주는 기술&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;JPA&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ORM을 위해 자바에서 제공하는 API&lt;/li&gt;
&lt;li&gt;자바 객체와 DB테이블을 매핑하는데 구현체로는 하이버네이트가 있음&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;ORM, JPA, Hibernate 장단점&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;비즈니스, 객체 중심&lt;/li&gt;
&lt;li&gt;메소드 호출하면 다 나오기 때문에 생산성 향상과 유지보수 비용이 낮아짐&lt;/li&gt;
&lt;li&gt;DB에 의존하지 않음&lt;/li&gt;
&lt;li&gt;성능이 조금 떨어짐&lt;/li&gt;
&lt;li&gt;복잡한 쿼리는 메소드로 처리하기 힘들다&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>CS</category>
      <author>아잠만_</author>
      <guid isPermaLink="true">https://azamman.tistory.com/454</guid>
      <comments>https://azamman.tistory.com/454#entry454comment</comments>
      <pubDate>Wed, 30 Oct 2024 21:12:20 +0900</pubDate>
    </item>
    <item>
      <title>정리 - JAVA</title>
      <link>https://azamman.tistory.com/453</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;자바 애플리케이션 실행 과정&lt;/h2&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;Class Loader가 바이트 코드를 런타임 데이터 영역에 로드&lt;/li&gt;
&lt;li&gt;로딩된 바이트 코드가 실행 엔진에 의해 실행&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;자바 메모리 구조&lt;/h2&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;공통&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Method Area
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;클래스 별로 전역변수, 정적 변수, 메소드 정보들이 저장&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Heap Area
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;런타임중에 생성되는 객체들이 동적으로 할당&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;스레드 별&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;JVM Stack Area
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;호출된 메소드의 매개변수, 지역변수, 리턴정보들이 저장&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;PC Register
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;현재 수행중인 JVM 명령어&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Native Method Stack
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;자바 외의 언어인 C나 C++같은 것들을 수행하기 위한 영역&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;가비지 컬렉션&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;JVM에서 메모리 관리해주는 모듈&lt;/li&gt;
&lt;li&gt;잠깐 멈춘 다음에 참조되지 않는 객체를 삭제 &amp;gt; Mark and Sweep&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;객체지향 프로그래밍&lt;/h2&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;4가지 특징
&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;상속성&lt;/li&gt;
&lt;li&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;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;추상클래스 vs 인터페이스&lt;/h2&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 83px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 22px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 22px;&quot;&gt;추상클래스&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 22px;&quot;&gt;인터페이스&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 22px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 22px;&quot;&gt;abstract로 지시자로 정의&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 22px;&quot;&gt;interface 지시자로 정의&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 22px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 22px;&quot;&gt;추상메소드가 &lt;b&gt;하나 이상 포함&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 22px;&quot;&gt;&lt;b&gt;모든 메소드&lt;/b&gt;가 추상 메소드&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;상속을 위함&lt;br /&gt;&lt;u&gt;부모의 메소드를 재사용+확장하기 위해 사용&lt;/u&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;보장을 위함&lt;br /&gt;&lt;u&gt;모두 같은 동작을 할 수 있다라는 것을 보장&lt;/u&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>CS</category>
      <author>아잠만_</author>
      <guid isPermaLink="true">https://azamman.tistory.com/453</guid>
      <comments>https://azamman.tistory.com/453#entry453comment</comments>
      <pubDate>Wed, 30 Oct 2024 20:59:56 +0900</pubDate>
    </item>
    <item>
      <title>정리 - 데이터 베이스</title>
      <link>https://azamman.tistory.com/452</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;데이터베이스와 DBMS&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;DBMS&lt;/h3&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;MySQL, Oracle&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터 베이스 VS 파일 시스템&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;엔티티와 스키마&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;트랜잭션과 ACID&lt;/h2&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;A : 원자성
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;모두 되거나 되지 않는것&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;C : 일관성
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;일관적인 DB상태를 유지&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;I : 격리성
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;다른 트랜잭션의 작업이 끼어들지 못함&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;D : 지속성
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;성공적으로 수행된 트랜잭션 영원히 반영되는 것&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;RDBMS와 SQL&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;효율적 쿠&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터베이스 설계&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;파티셔닝&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;테이블을 컬럼 단위로 나누어 관리하는 기법&lt;/li&gt;
&lt;li&gt;update나 insert같은 작업이 분산되어 성능이 향상&lt;/li&gt;
&lt;li&gt;테이블 간 join 비용이 증가&lt;/li&gt;
&lt;li&gt;index를 별도로 파티셔닝 할 수 없다는 단점을 가지고있음&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;샤딩&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;테이블을 row단위로 분산하여 저장하는 방법&lt;/li&gt;
&lt;li&gt;규칙이 필요(key를 통한 규칙)&lt;/li&gt;
&lt;li&gt;Hash Sharding
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;기본키의 id % 4 와 같은 규칙으로 나눠서 넣을 때&lt;/li&gt;
&lt;li&gt;데이터가 많아지면 확장이 불가능하다&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Dynamic Sharding
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;번호의 크기마다 나눠 하나씩 추가한다&lt;/li&gt;
&lt;li&gt;데이터가 많아지면 확장이 간편하다&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;NoSQL&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Not Only SQL의 약자로, SQL을 보완한다는 의미&lt;/li&gt;
&lt;li&gt;스키마가 없어서 데이터를 조회하고 삽입하는 속도가 빠름&lt;/li&gt;
&lt;li&gt;대량의 분산 데이터를 저장하는데 특화되어 있습니다.&lt;/li&gt;
&lt;li&gt;RDBMS와 큰 차이는 스키마의 차이이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;번호&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;이름&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;1&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;홍길동&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;해당 위 테이블은 이미 정해진 스키마(구조)가 있기 때문에 추가 불가능하지만 NoSQL은&lt;br /&gt;{번호 : 1, 이름 : 홍길동, 나이 : 20}형식으로 자유롭게 추가가 가능하다&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>CS</category>
      <author>아잠만_</author>
      <guid isPermaLink="true">https://azamman.tistory.com/452</guid>
      <comments>https://azamman.tistory.com/452#entry452comment</comments>
      <pubDate>Wed, 30 Oct 2024 15:35:28 +0900</pubDate>
    </item>
    <item>
      <title>정리 - 네트워크</title>
      <link>https://azamman.tistory.com/451</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;네트워크 계층 구조 (OSI 7계층)&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;네트워킹에 대한 표준을 7계층으로 나눈 것&lt;/li&gt;
&lt;li&gt;통신이 일어나는 과정을 단계별로 파악하기 위함&lt;/li&gt;
&lt;li&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;/ul&gt;
&lt;/li&gt;
&lt;li&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;/ul&gt;
&lt;/li&gt;
&lt;li&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;/ul&gt;
&lt;/li&gt;
&lt;li&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;/ul&gt;
&lt;/li&gt;
&lt;li&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;/ul&gt;
&lt;/li&gt;
&lt;li&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;/ul&gt;
&lt;/li&gt;
&lt;li&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;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;프로토콜&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;물리계층과 데이터링크 계층(이더넷과 네트워크 장비)&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;네트워크 계층 (IP)&lt;/h3&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;데이터 흐름에 관여하지 않기 때문에 패킷이 제대로 갔는지 보장하지 않는다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&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;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;전송 계층(TCP와 UDP)&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;TCP&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;신뢰성이 높은 프로토콜&lt;/li&gt;
&lt;li&gt;연결을하여 3 way handshaking, 4 way handshaking으로 이루어짐&lt;/li&gt;
&lt;li&gt;보내는 걸 파악하고 있으니 데이터의 흐름을 제어 가능하다&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;UDP&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;비연결성이므로 빠른 프로토콜&lt;/li&gt;
&lt;li&gt;패킷 관리가 필요함&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;DNS&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;도메인 주소를&amp;nbsp; IP주소로 변환해주는 시스템&lt;/li&gt;
&lt;li&gt;URL을 입력하면 ISP가 관리하는 DNS해석기에서 요청을 라우팅 시킴&lt;/li&gt;
&lt;li&gt;DNS해석기가 루트 서버에 top-level의 서버 주소를 요청&lt;/li&gt;
&lt;li&gt;top-level &amp;gt; second-level &amp;gt; sub DNS server&lt;/li&gt;
&lt;li&gt;최종적으로 IP주소를 얻게됨&lt;/li&gt;
&lt;li&gt;naver.com &amp;gt; com에서 naver를 찾음&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;로드밸런서&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;서버의 부하를 분산시켜주는 시스템&lt;/li&gt;
&lt;li&gt;L4(전송계층까지만 열어보고 분산), L7(전체를 열어보고 분산)&lt;/li&gt;
&lt;li&gt;DDos같은 비정상적인 트래픽도 필터링할 수 있음&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;응용 계층(HTTP와 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;프록시와 안정적인 트래픽&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 가용성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 고가용성&lt;/p&gt;</description>
      <category>CS</category>
      <author>아잠만_</author>
      <guid isPermaLink="true">https://azamman.tistory.com/451</guid>
      <comments>https://azamman.tistory.com/451#entry451comment</comments>
      <pubDate>Wed, 30 Oct 2024 15:33:55 +0900</pubDate>
    </item>
    <item>
      <title>정리 - 자료 구조</title>
      <link>https://azamman.tistory.com/450</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;자료 구조는 코드의 성능과 밀접&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코드 성능을 어떻게 수치화 할 것인지&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시간 복잡도와 공간 복잡도를 고려해야함&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;해시 테이블&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;트리&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 계층형 데이터&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래프&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;정렬 알고리즘&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;힙&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;최대값 혹인 최소값을 빠르게 찾기 위한 이진트리&lt;/li&gt;
&lt;li&gt;최소 힙인 경우에는 부모는 자식보다 작고, 최대 힙인 경우에는 부모는 자식보다 크다&lt;/li&gt;
&lt;li&gt;높이 만큼의 시간 복잡도 O(logN)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;이진탐색 트리&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;왼쪽자식은 부모보다 작고, 오른쪽 자식은 부모보다 큰 이진 트리&lt;/li&gt;
&lt;li&gt;한쪽으로 편형될 수 있음 (N)&lt;/li&gt;
&lt;li&gt;시간 복잡도는 O(logN ~ N)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;자가 균형 트리&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;편향되지 않게 삽입, 삭제를 개선한 이진 탐색 트리&lt;/li&gt;
&lt;li&gt;이진 탐색 트리는 시간 복잡도가 트리의 높이에 따라 결정되므로 편향될 경우 효율이 떨어짐&lt;/li&gt;
&lt;li&gt;그래서 편향되지 않게 삽입과 삭제를 개선한 이진 탐색 트리를 자가균형 트리라고 함&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;해시&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;해시에 매핑하여 데이터를 저장하는 자료구조&lt;/li&gt;
&lt;li&gt;key는 해시 함수를 통해 hash로 변경된 다음에 value와 매핑되어서 bucket에 저장되게 됨&lt;/li&gt;
&lt;li&gt;시간복잡도는 삽입, 삭제, 조회가 모두 O(1)의 시간복잡도를 가짐&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;해시 충돌 회피 방법&lt;/h4&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;Open Addressing
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;다른 해시 값에 저장&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Chaining
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;해쉬 테이블이 원소 하나를 담는게 아니라 Linked List를 담음&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;</description>
      <category>CS</category>
      <author>아잠만_</author>
      <guid isPermaLink="true">https://azamman.tistory.com/450</guid>
      <comments>https://azamman.tistory.com/450#entry450comment</comments>
      <pubDate>Wed, 30 Oct 2024 15:30:14 +0900</pubDate>
    </item>
    <item>
      <title>정리 - 운영체제</title>
      <link>https://azamman.tistory.com/449</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;운영체제란&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;시스템의 자원과 동작을 관리하는 소프트웨어&lt;/li&gt;
&lt;li&gt;프로세스, 저장장치, 네트워킹, 사용자, 하드웨어를 관리&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;메모리&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;메모리 구조: code, data, heap, stack&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&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;/ul&gt;
&lt;/li&gt;
&lt;li&gt;데이터 영역
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;전역 변수&lt;/li&gt;
&lt;li&gt;정적 변수&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;힙 영역
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;사용자의 동적 할당(데이터가 동적 할당)&lt;/li&gt;
&lt;li&gt;런타임에 크기가 결정됨&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&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;매개변수&lt;/li&gt;
&lt;li&gt;컴파일 타임에 크기가 결정&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;커널&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 인간의 심장과 같음&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;시스템 콜&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 커널로부터 핵심적인 기능을 제공받는지&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;프로세스 및 스레드 관리&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;프로세스&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;실행중인 프로그램&lt;/li&gt;
&lt;li&gt;각각의 독립된 메모리 영역(code, data, stack, heap)을 할당 받는다&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;스레드&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;프로세스 안 실행 단위&lt;/li&gt;
&lt;li&gt;프로세스 안에 스레드 여러 개가 존재하여 code와 data, heap은 공유하지만 stack은 스레드마다 각각 따로 할당한다&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;자원할당 및 관리&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;CPU관리 : CPU 스케줄링&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;준비 큐 있는 프로세스에 대해 CPU 할당하는 방법&lt;/li&gt;
&lt;li&gt;스케줄링 알고리즘
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;선점형 스케줄링&lt;/li&gt;
&lt;li&gt;비선점형 스케줄링&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;메모리관리 : 가상 메모리&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;모든 프로세스에게 메모리를 할당하기에는 메모리의 크기가 한계가 있어서 사용하는 방법&lt;/li&gt;
&lt;li&gt;사용하는 부분만 메모리에 올리고, 나머지는 디스크에 보관하는 기법&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;데드락&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;프로세스가 자원을 얻지 못해 다음 작업 못하는 상태&lt;/li&gt;
&lt;li&gt;발생 조건이 4가지가 동시에 발생되어야 발생
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;상호 배제(Mutual exclusion)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;자원은 한번에 한 프로세스만이 사용&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;점유 대기(Hold and wait)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;최소한 하나의 자원을 점유하고 있으면서 다른 프로세스에 할당되어 사용하고 있는 자원을 추가로 점유하기 위해서는 대기하는 프로세스가 있어야한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;비선점(No preemption)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;다른 프로세스에 할당된 자원은 사용이 끝날 떄까지 강제로 뺏앗을 수 없어야 한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;순환 대기(Circular wait)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;프로세스의 집합에서 순서대로 자원이 대기하며 원 처럼 순환하여 자원을 요구한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;파일/디렉터리 관리&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 파일 시스템&lt;/p&gt;</description>
      <category>CS</category>
      <author>아잠만_</author>
      <guid isPermaLink="true">https://azamman.tistory.com/449</guid>
      <comments>https://azamman.tistory.com/449#entry449comment</comments>
      <pubDate>Wed, 30 Oct 2024 15:29:02 +0900</pubDate>
    </item>
    <item>
      <title>정리 - 컴퓨터 구조</title>
      <link>https://azamman.tistory.com/448</link>
      <description>&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;- 0과 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;- 인코딩과 관련&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;명령어&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 어떻게 소스 코드가 컴파일러 되서 명령어를 실행하는지&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 인터프리터인 경우에는 소스코드가 어떻게 읽어 들어 명령어를 실행하는지&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;컴퓨터의 핵심 부품&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CPU&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 인간의 두뇌와 같음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 명령어를 어떻게 빠르게 처리하는지&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;메모리&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 종류와 성능&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 보조하는 캐시 메모리&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 실행되는 프로그램을 저장&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 휘발성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;보조기억장치&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 보관할 프로그램을 저장&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 비휘발성&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;</description>
      <category>CS</category>
      <author>아잠만_</author>
      <guid isPermaLink="true">https://azamman.tistory.com/448</guid>
      <comments>https://azamman.tistory.com/448#entry448comment</comments>
      <pubDate>Wed, 30 Oct 2024 15:26:38 +0900</pubDate>
    </item>
  </channel>
</rss>