<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>zzolmyeon_1330.log</title>
        <link>https://velog.io/</link>
        <description></description>
        <lastBuildDate>Tue, 20 May 2025 01:37:34 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <copyright>Copyright (C) 2019. zzolmyeon_1330.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/zzolmyeon_1330" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[MobaXterm]]></title>
            <link>https://velog.io/@zzolmyeon_1330/MobaXterm</link>
            <guid>https://velog.io/@zzolmyeon_1330/MobaXterm</guid>
            <pubDate>Tue, 20 May 2025 01:37:34 GMT</pubDate>
            <description><![CDATA[<blockquote>
<h3 id="mobaxterm란">MobaXterm란?</h3>
<p>MobaXterm(모바엑스텀)은 Windows 환경에서 다양한 원격 접속 및 네트워크 관리 작업을 한번에 처리할 수 있도록 도와주는 올인원 네트워크 툴박스이다.</p>
</blockquote>
<p>Linux 환경에서 SSH 접속을 위해 PuTTY 혹은 XShell을 설치하거나 FTP &amp; SFTP 접속을 위해 FileZilla등을 설치하는 등 여러 가지 원격 접속용 프로그램을 설치하는 번거로움이 있다.
하지만 MobaXterm을 사용하면 Linux 환경의 SSH 접속, FTP, SFTP 등을 이 프로그램 하나로 해결할 수 있다.</p>
<hr>
<h2 id="mobaxterm-의-기능">MobaXterm 의 기능</h2>
<ul>
<li>SSH, Telnet, FTP, SFTP 등 다양한 원격 접속 지원 </li>
<li>SFTP 브라우저 자동 연동 : SSH 접속 시 파일 전송 및 편집이 쉬움</li>
<li>서버/세션 즐겨찾기 및 자동 로그인 기능</li>
<li>X 서버 내장 : 리눅스 GUI 프로그램을 Windows에서 바로 실행 가능</li>
<li>보안키(.key, .pem 등) 직접 사용 가능(PuTTY처럼 변환 필요 없음)</li>
</ul>
<hr>
<blockquote>
<h3 id="주요-프로토콜-정리">주요 프로토콜 정리</h3>
</blockquote>
<h4 id="telnet">Telnet</h4>
<p>원격지에 있는 서버를 접속하여 자료를 교환할 수 있는 프로토콜이다.</p>
<h4 id="ssh-secure-shell">SSH (Secure SHELL)</h4>
<p>Telnet과 같은 기존 원격 통신 프로토콜의 보안 문제를 해결하기 위해 개발된 프로토콜이다.</p>
<h4 id="ftp-file-transfer-protocol">FTP (File Transfer Protocol)</h4>
<p>파일 전송을 위한 프로토콜이다. Linux(원격 서버)에서 내 PC로 양 방향으로 파일을 전송한다.</p>
<h4 id="sftp-ssh-file-transfer-protocol">SFTP (SSH File Transfer Protocol)</h4>
<p>SSH를 이용해 FTP의 보안 문제를 보완한 프로토콜이다. FTP와 달리 PC와 서버 간 데이터 전송을 암호화하여 안전한 호스팅 서비스를 제공한다.</p>
<table>
<thead>
<tr>
<th align="center">프로토콜</th>
<th align="center">기본 포트</th>
<th align="center">암호화</th>
<th align="center">주요 용도</th>
<th align="center">보안성</th>
</tr>
</thead>
<tbody><tr>
<td align="center">Telnet</td>
<td align="center">23</td>
<td align="center">없음</td>
<td align="center">원격 접속</td>
<td align="center">매우 낮음</td>
</tr>
<tr>
<td align="center">SSH</td>
<td align="center">22</td>
<td align="center">있음</td>
<td align="center">원격 접속 및 명령 실행</td>
<td align="center">높음</td>
</tr>
<tr>
<td align="center">FTP</td>
<td align="center">21</td>
<td align="center">없음</td>
<td align="center">파일 전송</td>
<td align="center">낮음</td>
</tr>
<tr>
<td align="center">SFTP</td>
<td align="center">22</td>
<td align="center">있음</td>
<td align="center">안전한 파일 전송</td>
<td align="center">높음</td>
</tr>
</tbody></table>
<p>❗보안을 위해 SSH와 SFTP가 Telnet 과 FTP를 대체하는 추세
❗중요한 정보를 다루는 경우 암호화 제공 프로토콜이 필수</p>
<hr>
<h3 id="환경-개요-및-핵심-개념">환경 개요 및 핵심 개념</h3>
<p>MobaXterm -&gt; Windows에서 SSH 원격 접속, GUI + 터미널 통합 환경 제공
Tomcat -&gt; Java 기반의 WAS (웹 애플리케이션 서버), .war 파일 배포용
WAR 파일 -&gt; Web Application Archive. JSP, 클래스, 설정 등을 포함하는 배포용 묶음 파일
classPath -&gt; Java 실행 시 로딩되는 .jar, .class 들의 경로 지정</p>
<h4 id="root-계정-전환">root 계정 전환</h4>
<ul>
<li>su - (명령어)
패스워드 입력</li>
</ul>
<h4 id="서버-경로">서버 경로</h4>
<ul>
<li>/home/tomcat/apache-tomcat-9.0.68/</li>
</ul>
<h4 id="로그-경로">로그 경로</h4>
<ul>
<li>/home/tomcat/apache-tomcat-9.0.68/logs/</li>
</ul>
<h4 id="로그-보는-명령어">로그 보는 명령어</h4>
<p>tail -f (로그파일명) ex) tail -f catalina.out</p>
<blockquote>
<h3 id="자주-사용하는-명령어">자주 사용하는 명령어</h3>
</blockquote>
<h4 id="목록보기">목록보기</h4>
<p>ls -al
ls -altr(최신순)</p>
<h4 id="파일-복사">파일 복사</h4>
<p>cp (파일명) (복사할경로)
ex) cp ./test.txt/home/test/test.txt</p>
<h4 id="파일-이동">파일 이동</h4>
<p>mv (파일명) (이동할경로)
ex) mv ./test.txt/home/test/</p>
<h4 id="소유권-변경">소유권 변경</h4>
<p>chown (소유자):(그룹) &lt;파일명&gt;
ex) chown boot:boot test.txt
ex) chown -R boot:boot/home/test/ --&gt; 디렉토리 및 하위 파일 전체 적용</p>
<h4 id="권한-변경">권한 변경</h4>
<p>chmod (권한) &lt;파일명&gt;
ex) chmod 755 test.txt --&gt; 읽기(r) 쓰기(w) 실행(x)</p>
<h2 id="빌드배포-순서-흐름-정리">빌드/배포 순서 흐름 정리</h2>
<h3 id="1-서버-접속">1. 서버 접속</h3>
<p><a href="https://mobaxterm.mobatek.net/download-home-edition.html">https://mobaxterm.mobatek.net/download-home-edition.html</a> 
해당 링크로 접속 후 Portable edition 다운로드</p>
<h3 id="2-mobaxterm-실행">2. MobaXterm 실행</h3>
<h4 id="2-1-session-버튼-클릭---sftp클릭-후-remote-host-username-port22-입력-후-ok-버튼-클릭">2-1. Session 버튼 클릭 -&gt; SFTP클릭 후 Remote host, UserName, Port(22) 입력 후 Ok 버튼 클릭</h4>
<p><img src="https://velog.velcdn.com/images/zzolmyeon_1330/post/4a69bfae-f8f8-48f1-8a08-c20b552dccc0/image.png" alt="mobaxterm-sftp"></p>
<h4 id="2-2-session-버튼-클릭---ssh-클릭-후-remote-host-username-port공란-입력-후-ok-버튼-클릭">2-2. Session 버튼 클릭 -&gt; SSH 클릭 후 Remote host, UserName, Port(공란) 입력 후 Ok 버튼 클릭</h4>
<p><img src="https://velog.velcdn.com/images/zzolmyeon_1330/post/f0c8c561-4444-4add-b716-d3a3bf819994/image.png" alt="mobaxterm-ssh"></p>
<h4 id="2-3-로그인-성공">2-3. 로그인 성공</h4>
<p><img src="https://velog.velcdn.com/images/zzolmyeon_1330/post/70cd77ea-f02e-496e-9ead-295b50c676ed/image.png" alt="mobaxterm-loginsuccess"></p>
<h3 id="3-root-계정으로-전환">3. root 계정으로 전환</h3>
<p>서버 보안 정책에 따라 기본 접속 계정은 일반 사용자이며, 최고 권한이 필요한 작업은 root 전환 필요</p>
<h4 id="3-1-ll-명령어로-war파일-존재하는지-확인">3-1. ll 명령어로 war파일 존재하는지 확인</h4>
<p><img src="https://velog.velcdn.com/images/zzolmyeon_1330/post/e621765f-4574-4859-b404-8322c6f230ca/image.png" alt="mobaxterm-searchingwar"></p>
<h4 id="3-2-su---명령어-입력하고-비밀번호-입력하여-root계정으로-전환">3-2. su - 명령어 입력하고 비밀번호 입력하여 root계정으로 전환</h4>
<p>프롬프트가 root@로 바뀌면 성공</p>
<h3 id="4-tomcat-경로로-이동">4. Tomcat 경로로 이동</h3>
<h4 id="4-1-hometomcat-경로로-이동">4-1. /home/tomcat 경로로 이동</h4>
<h4 id="4-2-bin으로-이동하여-서버-shutdown">4-2. bin으로 이동하여 서버 shutdown</h4>
<h3 id="5-기존-war-파일-백업-및-삭제">5. 기존 WAR 파일 백업 및 삭제</h3>
<h4 id="5-1-hometomcatapache-tomcat-9068webapps-경로로-이동">5-1. /home/tomcat/apache-tomcat-9.0.68/webapps 경로로 이동</h4>
<h4 id="5-2-war-백업">5-2. WAR 백업</h4>
<p>명령어 cp ROOT.war ROOT.war_20250514</p>
<h4 id="5-3-기존-배포-제거">5-3. 기존 배포 제거</h4>
<p>명령어 rm -rf ROOT ROOT.war</p>
<h4 id="5-4-root-폴더-삭제">5-4. ROOT 폴더 삭제</h4>
<p>ROOT 폴더는 Tomcat이 자동 압축 해제해서 생긴 디렉토리이므로 반드시 같이 삭제해야 함.
<img src="https://velog.velcdn.com/images/zzolmyeon_1330/post/f5c3be2b-52d0-469d-8e7d-cb4955f47f14/image.png" alt="mobaxterm-warbackupanddelete"></p>
<h3 id="6-새로운-war-파일-업로드">6. 새로운 WAR 파일 업로드</h3>
<h4 id="6-1-home사용자명-경로로-이동">6-1. /home/[사용자명] 경로로 이동</h4>
<h4 id="6-2-업로드한-새-파일을-tomcat-배포-디렉토리로-이동">6-2. 업로드한 새 파일을 Tomcat 배포 디렉토리로 이동</h4>
<p>명령어 mv ROOT.war /home/tomcat/apache-tomcat-9.0.68/webapps/</p>
<h4 id="6-3-이후-tomcat이-자동으로-압축을-해제하고-배포함">6-3. 이후 Tomcat이 자동으로 압축을 해제하고 배포함</h4>
<p><img src="https://velog.velcdn.com/images/zzolmyeon_1330/post/f1b5ec1c-3f1e-4a06-a330-1e6f75a1c305/image.png" alt="mobaxterm-warupload"></p>
<h3 id="7-소유권-변경">7. 소유권 변경</h3>
<h4 id="7-1-파일-소유자를-root로-설정">7-1. 파일 소유자를 root로 설정</h4>
<p>명령어 chown root:root ROOT.war
❗파일 권한과 소유자는 보안 및 배포에 영향을 미치므로 주의 필요</p>
<h3 id="8-tomcat-서버-재기동">8. Tomcat 서버 재기동</h3>
<h4 id="8-1-hometomcatapache-tomcat-9068bin-경로로-이동">8-1. /home/tomcat/apache-tomcat-9.0.68/bin 경로로 이동</h4>
<h4 id="8-2-서버-기동-스크립트-실행">8-2. 서버 기동 스크립트 실행</h4>
<p>명령어 ./startup.sh Tomcat</p>
<h4 id="8-3-실행-시-출력되는-경로catalina_home-등-확인">8-3. 실행 시 출력되는 경로(catalina_home 등) 확인</h4>
<h4 id="8-4-에러-없이-tomcat-started가-출력되면-정상-기동됨">8-4. 에러 없이 &quot;Tomcat started.&quot;가 출력되면 정상 기동됨</h4>
<h3 id="9-로그-디렉토리로-이동-및-확인">9. 로그 디렉토리로 이동 및 확인</h3>
<h4 id="9-1-hometomcatapache-tomcat-9068logs-경로로-이동">9-1. /home/tomcat/apache-tomcat-9.0.68/logs 경로로 이동</h4>
<h4 id="9-2-로그-파일-목록-확인이전의-모든-로그를-확인할-경우">9-2. 로그 파일 목록 확인(이전의 모든 로그를 확인할 경우)</h4>
<p>명령어 ls</p>
<h4 id="9-3-실시간-로그-확인할-경우">9-3. 실시간 로그 확인할 경우</h4>
<p>명령어 tail -f catalina.out</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Git] 깃(Git)과 깃허브(Github)의 차이점]]></title>
            <link>https://velog.io/@zzolmyeon_1330/Git-%EA%B9%83Git%EA%B3%BC-%EA%B9%83%ED%97%88%EB%B8%8CGithub%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%A0%90</link>
            <guid>https://velog.io/@zzolmyeon_1330/Git-%EA%B9%83Git%EA%B3%BC-%EA%B9%83%ED%97%88%EB%B8%8CGithub%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%A0%90</guid>
            <pubDate>Tue, 10 Sep 2024 00:12:48 GMT</pubDate>
            <description><![CDATA[<h2 id="🔧-버전-관리">🔧 버전 관리</h2>
<p><img src="https://velog.velcdn.com/images/zzolmyeon_1330/post/2f71bb3b-f854-4200-8041-e03114f00f61/image.JPG" alt=""></p>
<p>발표나 프로젝트를 준비하면서 작업물을 여러번 수정한 경험이 다들 한번씩은 있을 것이다. 
여기서 작업물 파일들을 복사, 저장 등을 한 행위를 버전 관리라 할 수 있다.
하지만 작업을 하다보면 동시에 두명 이상이 같은 버전을 수정하거나, 수정한 버전들이 많아 어떤 버전인지 헷갈리는 일들이 일어날 수 있다. - <strong>매우 비효율적!!</strong>
<strong>따라서</strong> 좀 더 효율적으로 버전을 관리하기 위해 <strong>버전 관리 도구</strong>를 사용한다. ex) 깃(Git)</p>
<hr>
<h3 id="📍-깃git">📍 깃(Git)</h3>
<p>깃(Git)은 분산 버전 관리 프로그램으로, 본인의 코드와 수정내역을 기록하고 관리하도록 돕는다.
로컬에서 프로젝트의 기록을 스스로 관리할 수 있게 해준다. 깃은 로컬과 리모트 저장소의 개념을 사용하여 개발자가 자신의 컴퓨터에서 작업을 하고 변경 사항을 중앙 서버에 업로드할 수 있게 한다.</p>
<h3 id="📍-깃허브github">📍 깃허브(Github)</h3>
<p>깃허브(Github)는 깃을 기반으로 하는 웹 기반 호스팅 서비스이다. 깃허브는 소스코드를 저장하는 리모트 저장소 역할을 하며 버그 추적, 기능 요청, 작업 관리, 위키 등의 기능을 제공한다. 클라우드 서버에 소스를 올리기 때문에 한 프로젝트에 여러 명의 사람이 참여하여 버전 제어 및 공동 작업이 가능하다.</p>
<h3 id="🔎-주요-차이점">🔎 주요 차이점</h3>
<p>쉽게 말해서 &#39;깃(Git)&#39;은 소프트웨어이고, &#39;깃허브(Github)&#39;는 서비스이다.
<strong>Git</strong> - <strong>버전 관리 프로그램</strong>
<strong>Github</strong> - Git을 기반으로 하는 버전관리, 소스코드 공유, 분산 버전 제어 등이 가능한 <strong>원격 저장소</strong></p>
<hr>
<h4 id="참고자료">참고자료</h4>
<ul>
<li><a href="https://cocoon1787.tistory.com/723">[Git] 깃(Git)과 깃허브(Github) 차이</a></li>
<li><a href="https://f-lab.kr/insight/git-vs-github">깃(Git)과 깃허브(GitHub)의 차이점 및 협업에서의 활용 방법</a></li>
<li><a href="https://hstory0208.tistory.com/entry/Git%EA%B9%83%EA%B3%BC-Github%EA%B9%83%ED%97%88%EB%B8%8C%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%A0%90%EC%97%90-%EB%8C%80%ED%95%B4-%EC%95%8C%EC%95%84%EB%B3%B4%EC%9E%90">Git(깃)과 Github(깃허브)의 차이점에 대해 알아보자.</a></li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Java] Java 출력문 ( println, print, printf )]]></title>
            <link>https://velog.io/@zzolmyeon_1330/Java-%EC%B6%9C%EB%A0%A5%EB%AC%B8-println-print-printf</link>
            <guid>https://velog.io/@zzolmyeon_1330/Java-%EC%B6%9C%EB%A0%A5%EB%AC%B8-println-print-printf</guid>
            <pubDate>Thu, 25 Jul 2024 07:37:04 GMT</pubDate>
            <description><![CDATA[<h3 id="출력">출력</h3>
<h3 id="1-println">1. println()</h3>
<p><strong>println()</strong>의 경우 <strong>괄호()안의 값을 그대로 출력</strong>하고 마지막에 <strong>줄바꿈</strong>을 넣어주는 메서드이다.</p>
<h4 id="✍-입력">✍ 입력</h4>
<pre><code class="language-java">public class Printlf {

    public static void main(String[] args) {
        String str = &quot;금쪽이&quot;;                      // String형 변수
        int age = 27;                              // int형 변수                            

        System.out.println(2024);                  // 숫자 출력
        System.out.println(str);                  // String형 변수 출력        
        System.out.println(age);                  // int형 변수 출력
        System.out.println(&quot;잠깐만요, 하얀 거짓말&quot;); // 문자열 출력
        System.out.println(age + &quot;살 &quot; + str);      // 문자열 + 변수 출력
    }

}</code></pre>
<h4 id="💻-출력">💻 출력</h4>
<pre><code>2024
금쪽이
27
잠깐만요, 하얀 거짓말
27살 금쪽이
</code></pre><ul>
<li>변수와 문자열을 함께 출력하고 싶다면 + 로 이어주면 된다. </li>
</ul>
<p>🍯<strong>팁</strong> : Eclipse 에서는 &#39;sysout&#39; 입력 후 ctrl + space 자동완성 키를 눌러주면 &quot;System.out.println()&quot;이 자동으로 입력이 된다.</p>
<hr>
<h3 id="2-print">2. print()</h3>
<p><strong>print()</strong>의 경우 println()와 비슷하다. <strong>괄호()안의 값을 그대로 출력</strong>하고 마지막에 <strong>줄바꿈</strong>만 없는 메서드이다.</p>
<h4 id="✍-입력-1">✍ 입력</h4>
<pre><code class="language-java">public class Printlf {

    public static void main(String[] args) {
        String str = &quot;금쪽이&quot;;                            
        int age = 27;                                                

        System.out.print(2024);                
        System.out.print(str);                    
        System.out.print(age);                    
        System.out.print(&quot;잠깐만요, 하얀 거짓말&quot;);    
        System.out.print(age + &quot;살 &quot; + str);</code></pre>
<h4 id="💻-출력-1">💻 출력</h4>
<pre><code>2024금쪽이27잠깐만요, 하얀 거짓말27살 금쪽이</code></pre><ul>
<li>줄바꿈이 필요하다면 &quot;\n&quot; 을 입력하면 된다.</li>
</ul>
<hr>
<h3 id="3-printf">3. printf()</h3>
<p>printf()는 서식문자열을 출력할 때 사용한다.</p>
<h4 id="💢여기서-잠깐-서식문자란">💢여기서 잠깐! 서식문자란?</h4>
<p>일반 문자가 아닌 서식에 사용되는 문자를 말한다.</p>
<table>
<thead>
<tr>
<th align="center">지시자</th>
<th align="left">설명</th>
</tr>
</thead>
<tbody><tr>
<td align="center">%c</td>
<td align="left">문자(character) 형식으로 출력</td>
</tr>
<tr>
<td align="center">%s</td>
<td align="left">문자열(String) 형식으로 출력</td>
</tr>
<tr>
<td align="center">%3s</td>
<td align="left">문자열을 3자리로 맞춰서 출력</td>
</tr>
<tr>
<td align="center"></td>
<td align="left">(자릿수가 맞지 않으면, 앞에 공백 출력)</td>
</tr>
<tr>
<td align="center">%b</td>
<td align="left">boolean 형식으로 출력</td>
</tr>
<tr>
<td align="center">%d</td>
<td align="left">10진수 형식으로 출력</td>
</tr>
<tr>
<td align="center">%3d</td>
<td align="left">숫자를 3자리로 맞춰서 출력</td>
</tr>
<tr>
<td align="center"></td>
<td align="left">(자릿수가 맞지 않으면, 앞에 공백출력)</td>
</tr>
<tr>
<td align="center">%03d</td>
<td align="left">자릿수가 맞지 않으면 0을 출력</td>
</tr>
<tr>
<td align="center">%o</td>
<td align="left">8진수 형식으로 출력</td>
</tr>
<tr>
<td align="center">%x</td>
<td align="left">16진수 형식으로 출력</td>
</tr>
<tr>
<td align="center">%f</td>
<td align="left">float형 소수</td>
</tr>
<tr>
<td align="center">%e</td>
<td align="left">지수표현식의 형식을 출력</td>
</tr>
<tr>
<td align="center">%n</td>
<td align="left">줄바꿈</td>
</tr>
</tbody></table>
<h4 id="✍-입력-2">✍ 입력</h4>
<pre><code class="language-java">public class Printf {

    public static void main(String[] args) {
        System.out.printf(&quot;%d&quot;, 27);        // 27

        System.out.printf(&quot;%n&quot;);

        System.out.printf(&quot;%2d&quot;, 9);        //  9

        System.out.printf(&quot;%n&quot;);

        System.out.printf(&quot;%04d&quot;, 331);        //  0331

        System.out.printf(&quot;%n&quot;);

        System.out.printf(&quot;%s&quot;,&quot;금쪽이&quot;);    // 금쪽이

        System.out.printf(&quot;%n&quot;);

        System.out.printf(&quot;%3s&quot;, 32);        // 32

        System.out.printf(&quot;%n&quot;);

        System.out.printf(&quot;%o%n&quot;, 10);         // 12

        System.out.printf(&quot;%n&quot;);

        System.out.printf(&quot;%x&quot;, 10);         // a

        System.out.printf(&quot;%n&quot;);

        String name = &quot;금쪽이&quot;;
        int age = 27;

        System.out.printf(&quot;저는 %s살 %s입니다&quot;, age, name);
        // 저는 27살 금쪽이입니다
    }

}</code></pre>
<h4 id="💻-출력-2">💻 출력</h4>
<pre><code>27
 9
0331
금쪽이
 32
12

a
저는 27살 금쪽이입니다</code></pre><ul>
<li>지시자의 개수와 출력하려는 값을 일치 시켜야한다.</li>
<li>출력하려는 값은 &quot;,&quot;로 구분한다.</li>
<li>출력하려는 값은 지시자의 순서와 동일해야 한다.</li>
</ul>
<hr>
<p>참고자료
+<a href="https://velog.io/@green9930/print-vs.-println-vs.-printf">print() vs. println() vs. printf()</a>
+<a href="https://keep-cool.tistory.com/15">자바의 출력문(println, printf)</a>
+<a href="https://excited-hyun.tistory.com/169">출력문(println, print, printf) 및 자료형</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[LTS(Long Term Support)]]></title>
            <link>https://velog.io/@zzolmyeon_1330/LTSLong-Term-Support</link>
            <guid>https://velog.io/@zzolmyeon_1330/LTSLong-Term-Support</guid>
            <pubDate>Wed, 24 Jul 2024 07:28:44 GMT</pubDate>
            <description><![CDATA[<blockquote>
<h2 id="💻ltslong-term-support"><strong>💻LTS(Long Term Support)</strong></h2>
<p>장기 지원 버전, LTS(Long Term Support)는 일반적인 경우보다 장기간에 걸쳐 지원하도록 특별히 고안된 소프트웨어의 버전 또는 에디션이다. 
-위키백과</p>
</blockquote>
<ul>
<li>일반 버전과 달리 안정성에 중점을 둔 버전으로, Java의 LTS 버전의 경우 최대 6년간 지원된다.</li>
</ul>
<hr>
<h3 id="lts의-특징">LTS의 특징</h3>
<ul>
<li><strong>신뢰성</strong>
소프트웨어 배포의 위험부담, 비용 및 급작스러운 중단을 줄여 소프트웨어의 신뢰도를 향상시킨다.</li>
<li><strong>안정성</strong>
기업에서는 LTS 버전을 채택함으로써 사용하는 소프트웨어의 버전 업그레이드에 대한 부담을 줄이고 안정성을 높일 수 있다.</li>
</ul>
<h3 id="lts가-왜-필요할까">LTS가 왜 필요할까?</h3>
<p>LTS 버전의 경우 기능 업데이트는 최소한으로 이루어지거나 아예 없는 반면 보안 업데이트의 지원기간이 일반 버전보다 훨씬 길다. 그렇기 때문에 서버 등 <strong>최신 기능보다 안정성이 더 중요한 곳에서</strong> 많이 쓰인다. 
또한 기업이나 기관 등에서 <strong>기능 업데이트로 인해 이용중인 다른 소프트웨어가 영향을 받는 것을 피하기 위해</strong> 이용하기도 한다.</p>
<h4 id="참고----java-release-버전">[참고] -  Java Release 버전</h4>
<p><img src="https://velog.velcdn.com/images/zzolmyeon_1330/post/93beefb8-3ae4-4a1b-9180-a5e5f7fa95c8/image.JPG" alt="Java Release"></p>
<ul>
<li><h5 id="tmi--현재-내가-공부하고-있는-17-lts-버전은-2029년-9월에-지원이-종료될-예정이다😊">TMI : 현재 내가 공부하고 있는 17 LTS 버전은 2029년 9월에 지원이 종료될 예정이다.😊</h5>
</li>
</ul>
<hr>
<h4 id="참고자료">참고자료</h4>
<ul>
<li><a href="https://velog.io/@sseob/LTS-Long-Term-Support">LTS (Long Term Support)</a></li>
<li><a href="https://www.java.com/releases/">Java Releases</a></li>
<li><a href="https://letitkang.tistory.com/279">[일반] LTS (Long Term Support)</a></li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Java] 가비지 컬렉터, 가비지 컬렉션(Garbage Collection)]]></title>
            <link>https://velog.io/@zzolmyeon_1330/%EA%B0%80%EB%B9%84%EC%A7%80-%EC%BB%AC%EB%A0%89%ED%84%B0-%EA%B0%80%EB%B9%84%EC%A7%80-%EC%BB%AC%EB%A0%89%EC%85%98Garbage-Collection</link>
            <guid>https://velog.io/@zzolmyeon_1330/%EA%B0%80%EB%B9%84%EC%A7%80-%EC%BB%AC%EB%A0%89%ED%84%B0-%EA%B0%80%EB%B9%84%EC%A7%80-%EC%BB%AC%EB%A0%89%EC%85%98Garbage-Collection</guid>
            <pubDate>Tue, 23 Jul 2024 08:48:35 GMT</pubDate>
            <description><![CDATA[<blockquote>
<h3 id="garbage-collection"><strong>Garbage Collection</strong></h3>
<p>Garbage Collection, GC는 <strong>메모리 관리 기법</strong> 중 하나로, 프로그램이 동적으로 할당했던 메모리 영역 중에서 필요없게 된 영역을 자동으로 찾아내어 해제하는 기능이다. 영어 그대로 가비지 컬렉션 이라고 부른다.
-위키백과</p>
</blockquote>
<hr>
<h3 id="🗑-가비지-컬렉터garbage-collector"><strong>🗑 가비지 컬렉터(Garbage Collector)</strong></h3>
<p>프로그램을 개발하다 보면 유효하지 않은 메모리인 가비지(Garbage)가 발생하게 된다. 옛날의 언어들은 동적인 메모리 할당 기능이 아예 존재하지 않거나 프로그래머가 할당한 뒤 수동으로 해제를 해주어야 하는 방식이었다. 예를 들어 C 언어를 사용할때는 free()라는 함수를 통해 직접 메모리를 해제해야 한다. 하지만 Java 등을 이용해 개발을 한다면 이러한 번거로움을 덜 수 있다. JVM(Java Virtual Machine)의 가비지 컬렉터가 불필요한 메모리를 알아서 정리해주기 때문이다. 대신에 Java에서는 명시적으로 불필요한 데이터를 표현하기 위해 일반적으로 null을 선언해준다.</p>
<hr>
<p>여기서 잠깐!</p>
<h4 id="가비지-컬렉션과-가비지-컬렉터의-차이는"><strong>가비지 컬렉션과 가비지 컬렉터의 차이는?</strong></h4>
<ul>
<li>가비지 컬렉션 : 메모리 관리 기술 중 하나로, 가비지 컬렉터에 의해 수행되는 프로세스를 의미한다.</li>
<li>가비지 컬렉터 : 메모리 관리를 담당하는 시스템 또는 프로그램의 구성 요소. 메모리에서 더이상 사용되지 않은 객체를 찾아 제거하여 메모리를 회수하는 역할을 수행한다.</li>
<li><em>🚀한줄요약 : 가비지 컬렉션은 프로세스 그 자체를 의미하고 가비지 컬렉터는 실제 역할을 수행하는 주체를 뜻한다.*</em></li>
</ul>
<hr>
<h3 id="가비지-컬렉터의-원리"><strong>가비지 컬렉터의 원리</strong></h3>
<p>가비지 컬렉터가 하는 일은 다음과 같다.</p>
<ol>
<li>메모리 할당</li>
<li>사용 중인 메모리 인식</li>
<li>사용하지 않는 메모리 인식</li>
</ol>
<p>가비지 컬렉터에 대해 알기 전 우선 메모리에 대한 이해가 어느정도 필요하다. 프로그램을 실행할 때 메모리를 관리하는 OS에 프로그램 실행에 필요한 메모리를 요청하게 된다. 이때 메모리를 어디에 저장할지 그 주소를 할당하는데 이 주소를 offset 주소라고 부른다.
이 할당된 메모리들은 프로그램이 돌아가면 필연적으로 &quot;가비지&quot;가 발생하게 된다. 기존에 차지하고 있던 메모리를 새롭게 선언하거나 형변환이 되면서 주소를 잃어버리게 되고 다시 찾을 수 없게 되며 정리되지 않은 메모리가 생겨버리기 때문이다.
따라서 가비지 컬렉터는 &quot;가비지&quot;를 다른 용도로 사용할 수 있도록 메모리 해제를 시킨다.
Java 기준으로 JVM은 메모리를 부여받고 프로그램을 실행하다가 메모리가 부족해지는 순간이 오면 추가적으로 메모리를 더 요청하는데, 이때 가비지 컬렉터가 실행된다.</p>
<h4 id="참고---자바의-메모리-구조"><strong>[참고 - 자바의 메모리 구조]</strong></h4>
<p><img src="https://velog.velcdn.com/images/zzolmyeon_1330/post/be9491a6-8758-42b2-b112-4d8e412c3cce/image.jpg" alt="">
<a href="https://www.betsol.com/blog/java-memory-management-for-java-virtual-machine-jvm/">자바의 메모리 구조</a></p>
<h3 id="힙-영역heap-memory"><strong>힙 영역(Heap Memory)</strong></h3>
<p>힙 영역은 모든 자바 클래스의 인스턴스(instance)와 배열(array)이 할당되는 곳으로, 런타임(run time) 데이터를 저장하는 영역이다. 힙 영역은 JVM이 시작될 때 생성되어 애플리케이션이 실행되는 동안 크기가 커졌다 작아졌다 한다. 프로그래머가 메모리 관리를 주도적으로 수행할 수 있는 유연성을 제공한다.
이 말은 즉 힙 영역은 메모리 블록을 계속해서 할당하거나 해제할 수 있기 때문에 메모리 누수(Memory Leak)가 발생하기 쉽다는 말과도 같다. 메모리 누수란, 할당된 메모리를 해제하지 않은 채로 메모리를 계속 점유하고 있는 것을 말한다. 이는 시스템의 성능에 영향을 미치며, 심각한 경우는 시스템 충돌을 일으킬 수 있다. 따라서 프로그래머는 힙 영역을 사용할 때 주의를 기울여야 한다.</p>
<hr>
<h4 id="stop-the-world">Stop the world</h4>
<p>GC를 실행하기 위해 JVM이 애플리케이션 실행을 멈추는 것을 말한다. Stop the world가 발생하면 GC를 실행하는 스레드를 제외한 나머지 스레드는 모두 작업을 멈춘다.</p>
<hr>
<h3 id="가비지-컬렉터의-한계"><strong>가비지 컬렉터의 한계</strong></h3>
<ul>
<li>어떤 방식의 가비지 컬렉션을 사용하여도 실행 시간 작업을 하는 이상 성능 하락을 피할 수는 없다.</li>
<li>가비지 컬렉터가 존재하더라도 더 이상 접근이 불가능한 객체만 회수하기 때문에 메모리 누수는 발생 할 수 있다.</li>
</ul>
<hr>
<p><strong>참고자료</strong></p>
<ul>
<li><a href="https://blog.metafor.kr/163">가비지 컬렉션, 컬렉터(Garbage Collection)란?</a></li>
<li><a href="https://shinjekim.github.io/java/2020/01/06/%EC%9E%90%EB%B0%94%EC%9D%98-%EB%A9%94%EB%AA%A8%EB%A6%AC-%EA%B5%AC%EC%A1%B0/">자바의 메모리 구조</a></li>
<li><a href="https://www.betsol.com/blog/java-memory-management-for-java-virtual-machine-jvm/">Java Memory Management for Java Virtual Machine (JVM)</a></li>
<li><a href="https://beststar-1.tistory.com/15">가비지 컬렉터(Garbage Collector) - 가비지 개념과 가비지 컬렉션 프로세스</a></li>
<li><a href="https://mangkyu.tistory.com/118">Garbage Collection(가비지 컬렉션)의 개념 및 동작 원리(1/2)</a></li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Tool] Eclipse랑 친해지기]]></title>
            <link>https://velog.io/@zzolmyeon_1330/Eclipse%EB%9E%91-%EC%B9%9C%ED%95%B4%EC%A7%80%EA%B8%B0</link>
            <guid>https://velog.io/@zzolmyeon_1330/Eclipse%EB%9E%91-%EC%B9%9C%ED%95%B4%EC%A7%80%EA%B8%B0</guid>
            <pubDate>Tue, 23 Jul 2024 05:26:19 GMT</pubDate>
            <description><![CDATA[<h3 id="우리-eclipse를-소개합니다">우리 Eclipse를 소개합니다.</h3>
<blockquote>
<p><strong>Eclipse(이클립스)</strong>
Eclipse(이클립스)는 자바를 비롯한 다양한 언어를 지원하는 프로그래밍 통합 개발 환경(IDE, Integrated Development Environment)이자 <strong>프로그래밍 도구</strong>이다. 자바로 작성되어 있고, 자유 소프트웨어이지만 막강한 기능을 자랑한다. 현재 가장 대중적으로 사용하고 있다.
-위키백과</p>
</blockquote>
<hr>
<ul>
<li>한글 환경세팅
Window &gt; Preferences &gt; enc 검색 &gt; General - Content Types - Text &gt; UTF-8 모두 적용</li>
</ul>
<hr>
<p><strong>장점</strong></p>
<ul>
<li>*<em>자유 소프트웨어 *</em>
누구나 접근 가능한 무료 소프트웨어이다.</li>
<li><strong>풍부한 기능을 가진 IDE</strong>
지능형 코드 완성, 구문 강조 표시 및 오류 감지 기능을 갖춘 코드 편집기가 포함되어 있어 효율적으로 코드를 작성할 수 있다.</li>
<li>*<em>프로젝트 관리 용이 *</em>
여러 프로젝트를 동시에 관리할 수 있다.</li>
<li><strong>플랫폼 독립성</strong>
플랫폼과 별개로 설계되어 개발자가 다양한 운영 체제에서 원활하게 작업이 가능하다.</li>
</ul>
<p><strong>단점</strong></p>
<ul>
<li><strong>자바 기반</strong>
자바로 작성되어 있어 JVM 바탕에서 실행되므로 다른 IDE 툴들에 비교해서 속도가 느리다.</li>
<li><strong>리소스 집약적</strong>
대규모 프로젝트에서 작업할 때 상당한 시스템 리소스를 소비할 수 있어 이러한 특성은 컴퓨터 성능에 영향을 미쳐 컴파일 및 실행 시간이 느려질 수 있다.</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Java] Java랑 친해지기]]></title>
            <link>https://velog.io/@zzolmyeon_1330/Java%EB%9E%91-%EC%B9%9C%ED%95%B4%EC%A7%80%EA%B8%B0</link>
            <guid>https://velog.io/@zzolmyeon_1330/Java%EB%9E%91-%EC%B9%9C%ED%95%B4%EC%A7%80%EA%B8%B0</guid>
            <pubDate>Mon, 22 Jul 2024 07:52:18 GMT</pubDate>
            <description><![CDATA[<h3 id="💻-프로그래밍-언어란">💻 프로그래밍 언어란?</h3>
<ul>
<li>어떤 문제를 해결하기 위해 <em>인간과 컴퓨터</em> 사이에서 의사소통을 가능케 하는 인공적인 언어이다.</li>
<li>이 언어를 통해 사용자는 컴퓨터에게 일련의 일을 시키는 명령어들의 집합체인 <em>프로그램</em>을 작성할 수 있다.</li>
<li>Java로 예를 들면 &quot;Java라는 언어로 컴퓨터에게 일을 시킨다&quot; 라고 보면 된다.</li>
</ul>
<hr>
<blockquote>
<h3 id="java">Java</h3>
<p>썬 마이크로시스템즈에서 1995년에 발표한 객체 지향적 프로그래밍 언어. 현재 웹 애플리케이션 분야에 가장 많이 사용하는 언어 중 하나이고, 안드로이드를 비롯한 모바일 기기용 소프트웨어 개발에도 널리 사용되고 있다.
-위키백과</p>
</blockquote>
<hr>
<h3 id="우리-java를-소개합니다">우리 Java를 소개합니다.</h3>
<ul>
<li>운영체제(OS)에 독립적이다.
JVM이 설치된 환경이라면 어디서든지 실행이 가능하다.</li>
<li>객체지향 언어이다.
상속, 캡슐화, 다형성, 추상화
코드의 재사용♻ 및 유지보수🛠에 용이하다.</li>
<li>자동 메모리 관리
Garbage Collector가 자동으로 메모리를 관리해준다.</li>
<li>네트워크, 분산처리, 멀티스레드
시스템과 관계없이 네트워크, 분산처리, 멀티스레드 구현을 위한 손쉬운 API를 제공한다.</li>
</ul>
<hr>
<h4 id="java-가상-머신jvm-java-virtual-machine">Java 가상 머신(JVM, Java Virtual Machine)</h4>
<ul>
<li>컴파일된 자바 바이트코드를 실행시켜 주는 소프트웨어. 운영체제로부터 독립적이다.
자바 프로그램은 JVM이 설치된 환경이라면 운영체제나 하드웨어에 종속되지 않고 실행이 가능하다.</li>
</ul>
<hr>
<h4 id="컴파일compile">컴파일(Compile)</h4>
<ul>
<li>고급언어(인간이 이해할 수 있는 언어로 작성된 소스코드)를 기계어(CPU가 이해할 수 있는 언어)로 번역(변환)하는 작업을 말하고, 이것을 처리하는 프로그램을 컴파일러(Compiler)라고 한다.
<a href="https://terms.naver.com/entry.naver?docId=796623&amp;cid=42347&amp;categoryId=42347">정보통신용어사전</a></li>
</ul>
<hr>
<h3 id="끝">끝</h3>
<p><img src="https://velog.velcdn.com/images/zzolmyeon_1330/post/c0e31de6-0340-4106-bc1b-44d5feeb68b2/image.jpg" alt="야나두"></p>
<p>나도 자바랑 친해질 수 있다~ 이말이야</p>
]]></description>
        </item>
    </channel>
</rss>