<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>우젼 개발 공부</title>
    <link>https://justnothinginhere.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Thu, 9 Apr 2026 00:07:13 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>우젼</managingEditor>
    <image>
      <title>우젼 개발 공부</title>
      <url>https://tistory1.daumcdn.net/tistory/5471632/attach/2cea8240ec494bb7b741ac1e95c9437d</url>
      <link>https://justnothinginhere.tistory.com</link>
    </image>
    <item>
      <title>floor(), ceil(), round()</title>
      <link>https://justnothinginhere.tistory.com/238</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;자바스크립트를 공부하면서 자주 사용된다고 느껴졌지만 확실하게 무슨 기능인지 숙지하지 못했던 기능중 하나 입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;거두절미 하고 결론만 말씀드리자면 아래와 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;Math.floor() : 소수점 아래의 수를 버린다.&lt;br /&gt;Math.ceil() : 소수점 아래의 수를 올림한다.&lt;br /&gt;Math.round() : 소수를 반올림한다.&lt;/blockquote&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 class=&quot;codepen&quot; style=&quot;height: 300px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;&quot; data-height=&quot;300&quot; data-default-tab=&quot;result&quot; data-slug-hash=&quot;PodmMWd&quot; data-user=&quot;MeowMeowPuppy&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;See the Pen &lt;a href=&quot;https://codepen.io/MeowMeowPuppy/pen/PodmMWd&quot;&gt; Untitled&lt;/a&gt; by MeowMeowPuppy (&lt;a href=&quot;https://codepen.io/MeowMeowPuppy&quot;&gt;@MeowMeowPuppy&lt;/a&gt;) on &lt;a href=&quot;https://codepen.io&quot;&gt;CodePen&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;script src=&quot;https://cpwebassets.codepen.io/assets/embed/ei.js&quot;&gt;&lt;/script&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이를 사용해서 몇개의 예제를 확인해보는 코드펜입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저는 난수를 생성할때 주로 사용했던 것 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코딩에서 매우 기본적인 코드임에도 불구하고, 기본이 부족했었던것같습니다.&lt;/p&gt;</description>
      <category>jsp/java script</category>
      <author>우젼</author>
      <guid isPermaLink="true">https://justnothinginhere.tistory.com/238</guid>
      <comments>https://justnothinginhere.tistory.com/238#entry238comment</comments>
      <pubDate>Sat, 4 Mar 2023 13:58:33 +0900</pubDate>
    </item>
    <item>
      <title>Vue.js 독학하기 시작</title>
      <link>https://justnothinginhere.tistory.com/237</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;Vue.js를 급하게 공부해야할 일이 생겨서 공부를 시작했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Vue.js를 사용하기 위해서 CDN 방식을 사용할 수도 있지만, npm을 사용하여 vue cli를 설치했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 스프링 부트와 vue.js를 함께 사용하는 환경에 대해 공부를 해야했던 것이어서 node.js를 한번도 사용해본적이 없고 관련해서는 아는게 없었는데 vue.js를 npm을 이용하여 설치하기 위해서는 node.js를 반드시 먼저 설치해주어야 한다고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;node.js를 설치하는 과정에서 npm이 함께 설치되어 이를 사용하는 것이라고 카덥니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하여, vue.js 를 설치해서 오늘부터 vue.js 속성 공부를 시작합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;vue-cli를 사용해서 프로젝트를 만들고 실행하는 것은 구글링을 통해 습득했고,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실제 vue.js에서 사용되는 코드에 대해서는 인프런 강의를 통해 공부해보기로 했습니다.&lt;/p&gt;</description>
      <category>Vue.js</category>
      <author>우젼</author>
      <guid isPermaLink="true">https://justnothinginhere.tistory.com/237</guid>
      <comments>https://justnothinginhere.tistory.com/237#entry237comment</comments>
      <pubDate>Sun, 26 Feb 2023 00:17:33 +0900</pubDate>
    </item>
    <item>
      <title>스프링 부트 3.n버전부터는 JAVA 17부터</title>
      <link>https://justnothinginhere.tistory.com/236</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;제목과 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스프링 부트 3.0버전 이상은 JAVA 17 이상으로 지원하기 때문에 JDK 1.8을 사용하는 사용자 분들은 에러가 발생할 수 밖에 없습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;제가 그랬기 때문에 다음에 이러한 실수를 하지 않기 위해서 메모합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다른 초보 개발자분들께서는 저처럼&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Installed JREs, Compiler에서 모두 jdk 1.8버전으로 제대로 설정해두었는데 왜자꾸 생성되는 프로젝트에서는 자바 버전이 자꾸만 17로 바뀌는지 몰라 고생하는일 겪지 않았으면 좋겠습니다.&lt;/p&gt;</description>
      <category>Spring framwork</category>
      <author>우젼</author>
      <guid isPermaLink="true">https://justnothinginhere.tistory.com/236</guid>
      <comments>https://justnothinginhere.tistory.com/236#entry236comment</comments>
      <pubDate>Sat, 25 Feb 2023 21:11:40 +0900</pubDate>
    </item>
    <item>
      <title>Comparator&amp;lt;T&amp;gt; Interface 란?</title>
      <link>https://justnothinginhere.tistory.com/235</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;지난번에는 Comparable&amp;lt;T&amp;gt;에 대해 알아보았습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 과정에서 Integer.compare() 메서드를 사용했었는데요, 이 부분에 대해 의문이 생길 수 있다 생각이 되었고, 저 또한 그러한 이유에서 공부했었기 때문에 정리해봅니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 compare() 메서드는 매개변수로 들어오는 두 요소를 비교해주는 기능을 제공합니다. Comparable&amp;lt;T&amp;gt;에서 사용한 compareTo() 메서드와 이름이 비슷하여 했갈릴 수 있습니다. 하지만 compare()는 두개의 요소를 비교하는데 사용되고 compareTo() 메서드는 받은 인자와 자신을 비교하는데 사용됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 compare() 메서드를 사용하기 위해 사용되는 것이 Comparator&amp;lt;T&amp;gt; 인터페이스 입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;비교하고자 하는 객체의 클래스를 T로 지정하고 어떻게 비교할 것인지를 직접 구현하는 것으로 compare() 메서드를 사용할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 여기서 Comparator&amp;lt;T&amp;gt; 인터페이스를 Implements한 클래스를 객체화 하면 Collectios.sort() 에도 사용이 가능합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원래 Collections.sort() 메서드는 Comparable&amp;lt;T&amp;gt;를 implements하여 구현해주었던 compareTo() 메서드를 기준으로 정렬이 되지만 이때에는 Comparator&amp;lt;T&amp;gt;에서 compare() 메서드를 기준으로 정렬하게 됩니다.&lt;/p&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_1676049857136&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;public class Main {
	public static void main(String[] args){
		ArrayList&amp;lt;Test&amp;gt; list = new ArrayList&amp;lt;&amp;gt;();
		Test test1 = new Test(1);
		Test test2 = new Test(2);
		Test test3 = new Test(3);
		Test test4 = new Test(4);
		TestComparator com = new TestComparator();
		list.add(test4); list.add(test2); list.add(test3); list.add(test1);
		Collections.sort(list);
		System.out.println(&quot;Collections.sort()만 사용&quot;);
		for(Test t: list) {
			System.out.println(t.a);
		}
		Collections.sort(list, com);
		System.out.println(&quot;\nComparator&amp;lt;T&amp;gt; 인터페이스와 함께 사용&quot;);
		for(Test t: list) {
			System.out.println(t.a);
		}
	}
}

class Test implements Comparable&amp;lt;Test&amp;gt;{
	int a;
	public Test(int a) {
		this.a = a;
	}
	@Override
	public int compareTo(Test o) {
		return this.a-o.a;
	}
}


class TestComparator implements Comparator&amp;lt;Test&amp;gt;{
	@Override
	public int compare(Test o1, Test o2) {
		return o2.a - o1.a;
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결과는 아래와 같습니다&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;497&quot; data-origin-height=&quot;330&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b4k1MD/btrYSqGFqnS/18fkzl4MC0v3FKd4nTdg5K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b4k1MD/btrYSqGFqnS/18fkzl4MC0v3FKd4nTdg5K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b4k1MD/btrYSqGFqnS/18fkzl4MC0v3FKd4nTdg5K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb4k1MD%2FbtrYSqGFqnS%2F18fkzl4MC0v3FKd4nTdg5K%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;497&quot; height=&quot;330&quot; data-origin-width=&quot;497&quot; data-origin-height=&quot;330&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Collections.sort()만 사용했을 때에는 Comparable&amp;lt;T&amp;gt;에서 구현했던 대로 오름차순으로 정렬이 되는것을 확인할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 Comparator&amp;lt;T&amp;gt; 인터페이스를 사용한 클래스 TestComparator 객체를 함께 사용함으로 compare에서 구현해줬듯이 내림차순으로 정렬이 되는것을 확인할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;쉽게 했갈릴 수 있겠다 라고 생각을 했던 부분은 Comparator&amp;lt;T&amp;gt; 인터페이스를 사용할때에 비교하고자 하는 클래스를 T에 넣고 해당 클래스인 객체만 비교할 수 있다는 것이었습니다. 이 부분만 했갈리지 않게 주의한다면 Comparable&amp;lt;T&amp;gt;과 Comparator&amp;lt;T&amp;gt; 인터페이스를 활용하는데에 큰 문제는 없을것이라 생각 됩니다.&lt;/p&gt;</description>
      <category>Java/java</category>
      <author>우젼</author>
      <guid isPermaLink="true">https://justnothinginhere.tistory.com/235</guid>
      <comments>https://justnothinginhere.tistory.com/235#entry235comment</comments>
      <pubDate>Sat, 11 Feb 2023 02:35:26 +0900</pubDate>
    </item>
    <item>
      <title>Comparable&amp;lt;T&amp;gt; Interface란?</title>
      <link>https://justnothinginhere.tistory.com/234</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;저는 백준 11650, 11651번 문제를 해결하기 위해 이것저것 찾아보다가 발견하게 되었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;보통 이 문제의 해결 과정을 찾아보면 2차원 배열을 사용하여 정렬하는 방법을 알려주긴 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Q. Comparable&amp;lt;T&amp;gt;란?&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;A. Collections의 sort() 메서드를 위해 사용되는 인터페이스입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉, Comparable&amp;lt;T&amp;gt;를 implements 하는 것으로 Collections.sort()의 정렬 기준을 재정립 할 수도 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일반적으로 컴퓨터에서 데이터의 비교는 비교연산자를 통해 손쉽게 가능합니다.&amp;nbsp; 때문에 sort() 메서드는 이러한 과정을 통해 컬렉션의 내부 요소를 비교하고 정렬합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 만약 비교하고자 하는 대상이 기본 자료형이 아는 객체일 경우에는 애로사항이 발생하게 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예시로 x좌료와 y좌표라는 값을 가지는 Point라는 클래스가 존재할때에 이를 예시로 들어보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;x좌표를 기준으로 정렬할 것인지 또는 y좌표를 기준으로 정렬할 것인지 컴퓨터는 알 수 없습니다. 이를 사용자가 지정해주지 않았기 때문입니다. 그렇기 때문에 우리는 Comparable&amp;lt;T&amp;gt; 인터페이스를 사용하여 이를 명시해주어야합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용방법은 Comparable&amp;lt;&amp;gt; 인터페이스를 implements한 후, compareTo() 메서드를 Override하여 compareTo() 메서드를 구현하는 것으로 Collections.sort()의 정렬 기준을 만들어 줄 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CompareTo()메서드에서 반환값에 따라 정렬되는 순서가 다릅니다. 이때에 리턴값이 양수라면 오름차순, 음수라면 내림차순으로 정렬이됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;글로만 설명하는 것으로는 설명이 어렵기도 하고 이해도 어려울 수 있으니 실제 코드를 보면 이해가 쉬울것이라 생각합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1675943655082&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        StringBuilder sb = new StringBuilder();
        int n = Integer.parseInt(br.readLine());
        ArrayList&amp;lt;Point&amp;gt; points = new ArrayList&amp;lt;&amp;gt;();
        for (int i = 0; i &amp;lt; n; i++) {
            String[] line = br.readLine().split(&quot; &quot;);
            int x = Integer.parseInt(line[0]);
            int y = Integer.parseInt(line[1]);
            points.add(new Point(x, y));
        }
        
        Collections.sort(points);
        for (int i = 0; i &amp;lt; n; i++) {
            Point p = points.get(i);
            sb.append(p.x).append(&quot; &quot;).append(p.y).append(&quot;\n&quot;);
        }
        bw.write(sb.toString());
        bw.flush();
        bw.close();
    }
}

class Point implements Comparable&amp;lt;Point&amp;gt; {
    int x;
    int y;

    public Point(int x, int y) {
        this.x = x;
        this.y = y;
    }

    @Override
    public int compareTo(Point o) {
        if (this.y == o.y) {
            return Integer.compare(this.x, o.x);
        }
        return Integer.compare(this.y, o.y);
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Point라는 클래스에 Comparable&amp;lt;T&amp;gt; 인터페이스를 implements하여 Collections.sort() 메서드를 사용할때 어떻게 정렬하게 될것인지를 직접 구현해주었고, 이를 통해 구분되게 하였습니다.&lt;/p&gt;</description>
      <category>Java</category>
      <author>우젼</author>
      <guid isPermaLink="true">https://justnothinginhere.tistory.com/234</guid>
      <comments>https://justnothinginhere.tistory.com/234#entry234comment</comments>
      <pubDate>Sat, 11 Feb 2023 01:26:03 +0900</pubDate>
    </item>
    <item>
      <title>StringBuilder의 사용방법</title>
      <link>https://justnothinginhere.tistory.com/233</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;백준 2751번 문제를 풀다가 시간 초과로 문제를 풀지못했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 제가 알고 있는 방법으로는 도저히 이 문제를 해결할 방법을 찾지 못해서 결국 검색을 해봤습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결과적으로 이 문제를 풀기위한 키포인트는 두가지가 있었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Arrays.sort()가 아닌 Collections.sort() 사용하기.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;StringBuilder를 사용하기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Arrays.sort()와 Collections.sort()의 작동 원리가 서로 다르고 결과적으로 Collections.sort()가 더 빠르다고합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 StringBuilder는 처음 사용해보는 클래스여서 이번에 공부하게 되었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원래 String 클래스로 만든 문자열은 변경이 불가합니다. 그리고 이를 연산하는 과정도 메모리를 많이 사용하게 되어 성능의 저하를 유발하기도 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이러한 String의 문제점을 해결하기 위해 StringBuilder를 사용할 수가 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;StringBuilder는 변경이 가능한 문자열을 생성하는 것으로 String에 비해 메모리를 적게 할당하기 때문에 이를 사용하여 성능 향상을 기대할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;StringBuilder에서 사용할 수 있는 메서드는 아래와 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 158px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; text-align: center; height: 20px;&quot;&gt;append(arg)&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center; height: 20px;&quot;&gt;arg를 문자열에 더합니다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; text-align: center; height: 20px;&quot;&gt;insert(int offset, arg)&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center; height: 20px;&quot;&gt;offset의 위치에 arg를 더합니다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; text-align: center; height: 20px;&quot;&gt;replace(int start, int end, Strng str)&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center; height: 20px;&quot;&gt;start와 end 사이의 문자열을 str로 대체합니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; text-align: center; height: 20px;&quot;&gt;setCharAt(int index, Char arg)&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center; height: 20px;&quot;&gt;index의 위치한 문자열을 char형 arg로 대체합니다&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; text-align: center; height: 20px;&quot;&gt;delete(int start, int end)&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center; height: 20px;&quot;&gt;start에서 end 까지의 위치한 문자열을 삭제합니다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 31px;&quot;&gt;
&lt;td style=&quot;width: 50%; text-align: center; height: 31px;&quot;&gt;deleteCharat(int index)&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center; height: 31px;&quot;&gt;index에 위치한 문자열을 삭제합니다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; text-align: center; height: 17px;&quot;&gt;reverse()&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center; height: 17px;&quot;&gt;문자열의 순서를 반대로 합니다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 10px;&quot;&gt;
&lt;td style=&quot;width: 50%; text-align: center; height: 10px;&quot;&gt;toString()&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center; height: 10px;&quot;&gt;String 자료형을 반환합니다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;setLength(int arg)&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;문자열의 길이를 arg로 만듭니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 replace()를 사용할때 start와 end를 같게하면 해당 위치에 값을 끼워넣을 수도있습니다. insert()와 같은 기능으로도 사용할 수 있습니다. 하지만 그럴거면 차라리 insert()를 사용합시다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 setLength()는 문자열의 길이가 arg보다 짧다면 arg만큼 문자열의 공백으로 채워줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;반대로 문자열의 길이가 arg보다 길다면 나머지는 잘라버립니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Q.그래서 이번 글의 핵심은 뭔데?&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;01. StringBuilder를 사용하면 문자열의 연산으로 인해 메모리가 낭비되고 성능이 저하되는 것을 최소한으로 할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;02. Arrays.sort()와 Collections.sort()는 서로 연산과정이 다르고 덕분에 Collections.sort()가 속도 측면에서 더 빠르다&lt;/p&gt;</description>
      <category>Java/java</category>
      <author>우젼</author>
      <guid isPermaLink="true">https://justnothinginhere.tistory.com/233</guid>
      <comments>https://justnothinginhere.tistory.com/233#entry233comment</comments>
      <pubDate>Wed, 8 Feb 2023 01:32:31 +0900</pubDate>
    </item>
    <item>
      <title>StringTokenizer VS split() 둘을 비교해보자</title>
      <link>https://justnothinginhere.tistory.com/232</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #666666;&quot;&gt;※ 지식이 많이 부족하여 이론적인 부분이 이해도 어렵고 설명도 주관적인게 많습니다. 틀린부분은 지적해주시면 감사하겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;백준 골드를 목표로 공부하면서 1152번 문제에서 막혀서 잠깐 구글링했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이정도 수준에서 못풀어서 검색하는 스스로가 안타까울뿐입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원래 저는 split하기전에 문자열의 첫번째 글자와 마지막 글자가 공백인지 확인하고 이를 지우고 그 다음에 split으로 나눠주는 방법으로 문제를 해결하고자 했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 자꾸만 에러가 발생하여 문제를 해결하지 못했고...결국엔 구글링의 힘을 빌어 해결했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 얻은 해답이 바로 StringTokenizer 입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;StringTokenizer은 문자열을 토큰화 하는 클래스 입니다. 조금더 쉽게 말하면 문자열을 어떠한 기준에 따라 나누는 기능을 제공합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;split()에서는 String[]을 반환하지만 StringTokenizer는 나눈 문자들을 각각의 토큰으로 저장하게 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;StringTokenizer의 생성 예시는 아래와 같습니다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;StringTokenizer st = new StringTokenizer(문자열)&lt;br /&gt;StringTokenizer st = new StringTokenizer(문자열, 구분자)&lt;br /&gt;StringTokenizer st = new StringTokenizer(문자열, 구분자, boolean)&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;StringTokenizer st = new StringTokenizer(문자열)&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;++ 이때에 구분자는 하나 이상이 될 수 있습니다. 구분자에 &quot;-+&quot; 를 입력한다면 -와 +를 기준으로 문자열을 나눕니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;boolean은 구분자도 토큰에 포함할지를 결정합니다. true라면 구분자도 토큰에 포함시킵니다. 디폴트는 false입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;StringTokenizer에서 사용할 수 있는 메서드로는 hasMoreTokens(), nextToken(),countToken() 등이 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;hasMoreToken()&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;토큰이 더 남아있는지에 따라 true/false 반환&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;nextToken()&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;nextToken(String delim)&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;delim을 기준으로 토큰을 반환&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;countToken()&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;토큰의 갯수 반환&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Q.그래서 split과 StringTokenizer의 차이는 뭐냐?&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;split은 String 클래스에서 사용할 수 있는 하나의 메서드, StringTokenizer는 클래스라는 차이점이 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;split은 빈 문자열도 인식해서 String[]을 반환하고, StringTokenizer는 빈 문자열은 토큰을 반환하지 않습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Q.그래서 왜 split()이 아니라 StringTokenizer를 사용하냐?&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일단, StringTokenizer가 더 빠릅니다. 이것만으로도 StringTokenizer를 사용하는 이유로는 충분하다 생각됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 StringTokenizer는 특정 인덱스의 값을 가져오는 방법이 없고 반복문과 nextToken() 메서드를 사용하여 하나씩 확인해야한다는 번거로움이 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;많은 블로그를 보면서 이 둘의 차이를 비교해봤는데 일반적으로 StringTokenizer가 빠르지만 데이터가 많다면 큰 차이를 기대하기는 어렵다는 의견이 많았습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;++plus&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;hasMoreTokens()와 hasMoreElements()가 있고 nextToken()과 nextElement()가 있어 각각의 차이가 무엇인지 궁금하여 찾아봤습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결국 얻은 답은 같다는 건데 이름에서 좀더 직관적인 hasMoreTokens()와 nextToken()을 사용하는것이 가독성이 좋은 코드가 될것같다 생각합니다.&lt;/p&gt;</description>
      <category>Java/java</category>
      <author>우젼</author>
      <guid isPermaLink="true">https://justnothinginhere.tistory.com/232</guid>
      <comments>https://justnothinginhere.tistory.com/232#entry232comment</comments>
      <pubDate>Tue, 7 Feb 2023 13:19:39 +0900</pubDate>
    </item>
    <item>
      <title>세션, 쿠키, 캐시에 대해 알아보자</title>
      <link>https://justnothinginhere.tistory.com/231</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;부트캠프를 들으면서도 가장 이해가 안가고 했갈렸던 부분을 꼽으라면 세션, 쿠키, 캐시였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사실 지금도 이게 했갈리고 말로 설명하라면 못하겠어서 정리하고자 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;언뜻보면 조금씩은 다 비슷한 기능을 하는것같기도한 이것들에 대해 특징만 짚고 넘어가보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;01. 세션?&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;서로 다른 브라우저를 사용하면 서로 다른 세션을 사용할 수 있습니다 ex)익스플로러, 크롬, 파이어폭스를 같이 사용하면 서로 다른 세션을 사용하게 됩니다&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;02.쿠키?&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;세션에 비해 속도가 빠릅니다&lt;/li&gt;
&lt;li&gt;쿠키의 만료일을 지정하여 일정 기간동안만 사용할 수 있습니다 +이를 응용한것으로 자동 로그인, 팝업 안보기 등이 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;03. 캐시?&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;사용자의 pc에 저장하여 사용하기 때문에 속도가 빠릅니다.&lt;/li&gt;
&lt;li&gt;이미지, js, 오디오, 동영상 등을 캐시를 사용하여 보다 빠른 속도를 제공해줄 수 있습니다.&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;Q? 세션, 쿠키는 사용자의 정보를 서버가 갖느냐 사용자가 갖느냐로 나눌 수 있겠다만은, 캐시도 그런 역할을 해줄 수 있는것인가? 에 대해서는 잘 모르겠습니다 제가 생각하기에는 캐시는 용도가 사뭇 다르기 때문에 이건 안될거라고 생각합니다만 정확히는 잘 모르겠습니다. 선배 개발자분에게 물어봐야겠습니다.&lt;/p&gt;</description>
      <category>CS</category>
      <author>우젼</author>
      <guid isPermaLink="true">https://justnothinginhere.tistory.com/231</guid>
      <comments>https://justnothinginhere.tistory.com/231#entry231comment</comments>
      <pubDate>Wed, 1 Feb 2023 15:09:53 +0900</pubDate>
    </item>
    <item>
      <title>리눅스 명령어에 대해 알아보자 - 3</title>
      <link>https://justnothinginhere.tistory.com/230</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;이번에는 제가 모르는 명령어였던것들에 대해 알아보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;01. ps&lt;/h4&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;ps : 현재 실행되고 있는 프로세스들의 정보를 출력합니다.&lt;br /&gt;주로 사용되는 옵션은 아래의 옵션들입니다.&lt;br /&gt;-e : 모든 프로세스를 봅니다&lt;br /&gt;-f : 프로세의 상태정보를 전부봅니다.&lt;br /&gt;-u : 특정 사용자가 사용중인 프로세를 출력합니다.&lt;br /&gt;-p : 특정 pid번호인 프로세스의 정보를 출력합니다.&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지난 면접에서 리눅스에서 프로세스 상태를 알 수 있는 명령어에 대해 물어봤는데 몰라서 모른다고 밖에 못했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;허허헣 이제라도 알았으니 기억해두겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;헌데 아직 리눅스 환경 개발 경험이 없어 ps의 사용 빈도나 중요도에 대해서는 잘 모르겠네요&lt;/p&gt;</description>
      <category>Linux</category>
      <author>우젼</author>
      <guid isPermaLink="true">https://justnothinginhere.tistory.com/230</guid>
      <comments>https://justnothinginhere.tistory.com/230#entry230comment</comments>
      <pubDate>Wed, 1 Feb 2023 14:37:33 +0900</pubDate>
    </item>
    <item>
      <title>리눅스 명령어에 대해 알아보자 - 2</title>
      <link>https://justnothinginhere.tistory.com/229</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;지난번까지 리눅스 명령어에 대해 알아봤습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번에도 리눅스 명령어에 대해 알아보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번에 알아볼 명령어를 알기 전에 리눅스에서 파일의 권한에 대해 보는 법을 먼저 보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;권한에는 아래의 세가지가 있습니다&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;r : read 읽기&lt;/li&gt;
&lt;li&gt;w : write 쓰기&lt;/li&gt;
&lt;li&gt;x : excute 실행하기&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 권한은 파일의 소유자인 user, 소유자가 소속된 group, 그리고 그외의 others로 나뉩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;user, group, others는 각각 rws에 권한을 부여받을 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이를 숫자로 표현하기도 하는데 각각&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;r : 4&lt;/li&gt;
&lt;li&gt;w : 2&lt;/li&gt;
&lt;li&gt;x : 1&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;으로 표현합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;751 의 권한이 부여되어 있는 파일이라면 user는 읽고,쓰고,실행이 가능하며 group은 읽고,실행이 가능하고 others는 실행만 가능한 권한 상태라고 할 수 있겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;01. chmod&lt;/h4&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;chmod : 파일의 권한을 설정합니다&lt;br /&gt;&lt;br /&gt;사용예시&lt;br /&gt;chmod 옵션 권한 목적파일&lt;br /&gt;&lt;br /&gt;dir 디렉토리에 모든 사용자가 읽고쓰고실행하는게 가능해집니다.&lt;br /&gt;chmod 777 dir&lt;br /&gt;&lt;br /&gt;exam.txt파일에 user는 rwx, group과 others는 rx만 가지게됩니다.&lt;br /&gt;chmod 755 exam.txt&lt;br /&gt;&lt;br /&gt;++ 디렉토리의 경우 하위 파일의 권한도 변경해주고 싶을경우 -R 옵션을 통해 하위 파일의 권한도 한번에 변경할 수 있습니다.&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;02.chown&lt;/h4&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;chown : 파일의 소유자와 소유그룹을 설정합니다&lt;br /&gt;&lt;br /&gt;사용예시&lt;br /&gt;chown 옵션 소유주:소유그룹 목적파일&lt;br /&gt;&lt;br /&gt;exam.txt의 소유자는 user1, 소유그룹은 group1이 됩니다.&lt;br /&gt;chown user1:group1 exam.txt&lt;br /&gt;&lt;br /&gt;exam.txt의 소유자를 user1로 변경합니다&lt;br /&gt;chown user1 exam.txt&lt;br /&gt;&lt;br /&gt;exam.txt의 소유자, 소유 그룹을 user로 변경합니다&lt;br /&gt;chown user: exam.txt&lt;br /&gt;&lt;br /&gt;dir1 디렉토리의 소유그룹을 group으로 변경합니다.&lt;br /&gt;chown :group dir1&lt;br /&gt;&lt;br /&gt;++ 디렉토리의 경우 하위 파일에도 동일하게 적용하고 싶다면 -R 옵션을 사용하여 일괄적용할 수 있습니다.&lt;/blockquote&gt;</description>
      <category>Linux</category>
      <author>우젼</author>
      <guid isPermaLink="true">https://justnothinginhere.tistory.com/229</guid>
      <comments>https://justnothinginhere.tistory.com/229#entry229comment</comments>
      <pubDate>Wed, 1 Feb 2023 14:20:32 +0900</pubDate>
    </item>
  </channel>
</rss>