<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>99_.log</title>
        <link>https://velog.io/</link>
        <description>부족과 결핍의 전환</description>
        <lastBuildDate>Wed, 23 Oct 2024 14:07:59 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>99_.log</title>
            <url>https://velog.velcdn.com/images/99_/profile/036d2878-4f68-4c69-919f-0693b242e8e2/social_profile.jpeg</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. 99_.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/99_" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[데이터 베이스]]></title>
            <link>https://velog.io/@99_/%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B2%A0%EC%9D%B4%EC%8A%A4</link>
            <guid>https://velog.io/@99_/%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B2%A0%EC%9D%B4%EC%8A%A4</guid>
            <pubDate>Wed, 23 Oct 2024 14:07:59 GMT</pubDate>
            <description><![CDATA[<p>데이터란 컴퓨터 안에 기록되어 있는 숫자를 의미하며, 이러한 <strong>데이터의 집합을 데이터 베이스</strong>라고 합니다.
데이터베이스는 저장장치 내에 정리되어 저장된 <strong>데이터의 집합</strong>이고, 이를 효<strong>율적으로 관리하는 소프트웨어를 데이터베이스 관리 시스템</strong> 약자로 <strong>DBMS</strong>라고 부릅니다.</p>
<h4 id="관계형-데이터-베이스">관계형 데이터 베이스</h4>
<p>&#39;괸계 대수&#39;라는 것에 착안하여 고안한 데이터 베이스 입니다. 관계 대수는 행과 열을 가지는 <strong>표 형태의 데이터 베이스</strong>를 가리킵니다.</p>
<ul>
<li><strong>DBMS</strong> : 데이터베이스를 관리하는 소프트웨어 입니다.</li>
<li><strong>RDBMS</strong> : 데이터베이스를 관계형 모델로 관리하는 소프트웨어 입니다.</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[제네릭의 타입 매개변수와 타입인자.]]></title>
            <link>https://velog.io/@99_/%EC%A0%9C%EB%84%A4%EB%A6%AD%EC%9D%98-%ED%83%80%EC%9E%85-%EB%A7%A4%EA%B0%9C%EB%B3%80%EC%88%98%EC%99%80-%ED%83%80%EC%9E%85%EC%9D%B8%EC%9E%90</link>
            <guid>https://velog.io/@99_/%EC%A0%9C%EB%84%A4%EB%A6%AD%EC%9D%98-%ED%83%80%EC%9E%85-%EB%A7%A4%EA%B0%9C%EB%B3%80%EC%88%98%EC%99%80-%ED%83%80%EC%9E%85%EC%9D%B8%EC%9E%90</guid>
            <pubDate>Thu, 17 Oct 2024 02:34:45 GMT</pubDate>
            <description><![CDATA[<p>제네릭의 클래스를 정의할 때 내부에서 사용할 타입을 미리 결정하는 것이 아니라, 해달 클래스를 실제 사용하는 생성 시점에 내부에서 사용할 타입을 결정하는 것이다. 차이가 있다면 메서드의 매개변수는 사용할 값에 대한 결정르 나중으로 미루는 것이고, <strong>제네릭의 타입 매개변수는 사용할 타입에 대한 결정을 나중으로 미루는 것이다.</strong></p>
<ul>
<li>메서드는 매개변수에 인자를 전달해서 사용할 값을 결정한다.</li>
<li>제네릭 클래스는 타입 매개변수에 타입 인자를 전달해서 사용할 타입을 결정한다.</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[URL : path]]></title>
            <link>https://velog.io/@99_/URL-path</link>
            <guid>https://velog.io/@99_/URL-path</guid>
            <pubDate>Tue, 15 Oct 2024 00:50:00 GMT</pubDate>
            <description><![CDATA[<p>Path</p>
<ul>
<li>scheme://[userinfo@]host[:port][/path][?query][#fragment]</li>
</ul>
<pre><code>- scheme

    - 주로 프로토콜 사용
    - 프로토콜 : 어떤 방식으로 자원에 접근할 것인가 하는 약속 규칙
    - http는 80 포트, https는 443 포트를 주로 사용, 포트는 생략 가능
    - https는 http에 보안 추가 (HTTP Secure)


- userinfo

    - URL에 사용자 정보를 포함해서 인증
    - 거의 사용하지 않음


- host

    - 호스트명
    - 도메인명 또는 IP 주소를 직접 사용가능


- PORT

    - 접속 포트
    - 일반적으로 생략, 생략시 http는 80,https는 443


- path

    - 리소스 경로(path), 계층적 구조로 되어있다.


- query

    - key=value형태
    - ?로 시작, &amp;로 추가 가능 ?keyA=valueA&amp;keyB=value=B
    - query parameter,query string 등으로 불림, 웹서버에 제공하는 파라미터 문자 형태


- fragment

    - fragment
       - html 내부 북마크 등에 사용
    - 서버에 전송하는 정보 아님</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[TCP/UDP]]></title>
            <link>https://velog.io/@99_/TCPUDP</link>
            <guid>https://velog.io/@99_/TCPUDP</guid>
            <pubDate>Mon, 14 Oct 2024 23:15:43 GMT</pubDate>
            <description><![CDATA[<h3 id="tcp-특징">TCP 특징</h3>
<p>전송제어 프로토콜</p>
<ul>
<li><p>연결지향 - TCP 3way handshake(가상 연결)
  SYN: 접속 요청
  ACK: 요청 수락
  참고 : 3.ACK와 함께 데이터 전송 가능</p>
</li>
<li><p>데이터 전달 보증</p>
</li>
<li><p>순서보장</p>
</li>
<li><p>신뢰할 수 있는 프로토콜</p>
</li>
<li><p>현재는 대부분 TCP 사용</p>
</li>
</ul>
<h3 id="udp-특징">UDP 특징</h3>
<ul>
<li>하얀 도화지에 비유(기능이 거의 없음)</li>
<li>연결지향 - TCP 3way handshake(가상 연결) X</li>
<li>데이터 전달 보증 X</li>
<li>순서 보장 X</li>
<li>데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠름</li>
<li>IP와 거의 같다. +PORT+체크섬 정도만 추가</li>
<li>애플리케이션에서 추가 작업 필요</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[IP(인터넷 포로토콜)]]></title>
            <link>https://velog.io/@99_/IP%EC%9D%B8%ED%84%B0%EB%84%B7-%ED%8F%AC%EB%A1%9C%ED%86%A0%EC%BD%9C</link>
            <guid>https://velog.io/@99_/IP%EC%9D%B8%ED%84%B0%EB%84%B7-%ED%8F%AC%EB%A1%9C%ED%86%A0%EC%BD%9C</guid>
            <pubDate>Mon, 14 Oct 2024 22:54:53 GMT</pubDate>
            <description><![CDATA[<p>인터넷 프로토콜 역할</p>
<ul>
<li>지정한 IP(IP Adress)에 데이터 전달</li>
<li>패킷(Packet)이라는 통신 단위로 데이터 전달 </li>
</ul>
<p>IP 프로토콜의 한계</p>
<ul>
<li><p>비연결성</p>
<p>  패킷을 받을 대상이 업서간 서비스 불능 상태여도 패킷 전송</p>
</li>
<li><p>비신뢰성</p>
<p>  중간에 패킷이 사라지면? -&gt; 패킷이 소실되도 모른다.
  패킷이 순서대로 안오면? -&gt; 패킷이 중간에 다른 노드를 타서 전달 순서에 문제가 발생한다.</p>
</li>
<li><p>프로그램 구분</p>
<p>  같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이면?</p>
</li>
</ul>
<p>IP프로토콜 만으로는 이러한 문제들을 해결할 수 없다.
그렇기 때문에 TCP프로토콜이 필요하다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[I'm Tae gu(99)]]></title>
            <link>https://velog.io/@99_/Im-Tae-gu99</link>
            <guid>https://velog.io/@99_/Im-Tae-gu99</guid>
            <pubDate>Sun, 13 Oct 2024 11:58:51 GMT</pubDate>
            <description><![CDATA[<p>I&#39;m Tae gu. I&#39;m a back-end developer. I was a music producer. I realized I wasn&#39;t really into music itself but I loved to make good products. So I decided to stop making music and threw my mixer away. I started my own business, It didn&#39;t work out well but I will keep moving on. I think it&#39;s my mission to help people because good products remain. That it.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[예외 계층]]></title>
            <link>https://velog.io/@99_/%EC%98%88%EC%99%B8-%EA%B3%84%EC%B8%B5</link>
            <guid>https://velog.io/@99_/%EC%98%88%EC%99%B8-%EA%B3%84%EC%B8%B5</guid>
            <pubDate>Mon, 07 Oct 2024 08:44:37 GMT</pubDate>
            <description><![CDATA[<p>자바는 프로그램 실행 중에 발생할 수 있는 예상치 못한 상황, 즉 예외를 처리하기 위한 메커니즘을 제공한다. 이는 프로그램의 안정성과 신회성을 높이는 데 중요한 역할을 한다.</p>
<p>자바의 예외처리는 다음 키워드를 사용한다.
<strong>try,catch,finally,throw,throws</strong></p>
<p>예외를 다루기 위한 예외처리용 객체들을 제공한다.</p>
<ul>
<li><p><strong>Object</strong> : 자바에서 기본형을 제외한 모든 것은 객체다. 예외도 객체이다. 모든 객체의 최상위 부모는 Object이므로 예외의 최상위 부모도 Object이다.</p>
</li>
<li><p><strong>Throwable</strong> : 최상위 예외이다. 하위에 Exception과 Error가 있다.</p>
</li>
<li><p><strong>Error</strong> : 메모리 부족이나 심각한 시스템 오류와 같이 애플리케이션에서 복구가 불가능한 시스템 예외이다. 애플리케이션 개발자는 이 예외를 잡으려고 해서는 안된다.</p>
</li>
<li><p><strong>Exception</strong> : 체크 예외</p>
</li>
</ul>
<pre><code>- 애플리케이션 로직에서 사용할 수 있는 실질적인 최상위 예외이다.
- EXception과 그 하위 예외는 모두 컴파일러가 체크하는 체크 예외이다. 단 RuntimeException은 예외로한다.</code></pre><ul>
<li><strong>RuntimeExceoption</strong> : 언체크예외, 런타임 예외</li>
</ul>
<pre><code>- RuntimeException과 그 자식 예외는 모두 언체크 예외이다.
- RuntimeException의 이름을 따라서 RuntimeException과 그 하위 언체크 예외를 런타임 예외라고 많이 부른다. 여기서도 앞으로는 런타임 예외로 종종 부르겠다.</code></pre><ul>
<li><p><strong>체크 예외 vs 언체크 예외</strong>(런타임 예외)
체크 예외는 발생한 예외를 개발자가 명시적으로 처리해야 한다. 그렇지 않으면 컴파일 오류가 발생한다. 언체크 예외는 개발자가 발생한 예외를 명시적으러 처리하지 않아도 된다.</p>
</li>
<li><p><strong>주의</strong>
상속 관계에서 부모 타입은 자식을 담을 수 있다. 이 개념이 예외 처리에도 적용되는데, 상위 예외를 catch로 잡으면 그 하위 예외까지 함께 잡는다. 따라서 애플리케이션 로직에서는 Throwable에외를 잡으면 안되는데, 앞서 이야기한 잡으면 안되는 Error 예외도 함께 잡을 수 있기 때문이다.애플리케이션 로직은 이런 이유로 Exception부터 필요한 예외로 생각하고 잡으면 된다.</p>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[StringBuilder vs StringBuffer]]></title>
            <link>https://velog.io/@99_/StringBuilder-vs-StringBuffer</link>
            <guid>https://velog.io/@99_/StringBuilder-vs-StringBuffer</guid>
            <pubDate>Sat, 05 Oct 2024 11:32:45 GMT</pubDate>
            <description><![CDATA[<p>StringBuilder와 똑같은 기능을 수행하는 StringBuffer 클래스도 있다.
StringBuffer는 내부에 동기화가 되어 있어서, 멀티 스레드 상황에 안전하지만 동기화 오버헤드로 인해 성능이 느리다.
StringBuilder는 멀티 쓰레드에 상황에 안전하지 않지만 동기화 오버헤드가 없으므로 속도가 빠르다. </p>
]]></description>
        </item>
        <item>
            <title><![CDATA[String Class Method]]></title>
            <link>https://velog.io/@99_/String-Class-Method</link>
            <guid>https://velog.io/@99_/String-Class-Method</guid>
            <pubDate>Sat, 05 Oct 2024 10:21:16 GMT</pubDate>
            <description><![CDATA[<h4 id="string-클래스는-문자열을-편리하게-다루기-위한-다양한-메서드를-제공한다">String 클래스는 문자열을 편리하게 다루기 위한 다양한 메서드를 제공한다.</h4>
<p><strong>문자열 정보 조회</strong></p>
<ul>
<li>length() : 문자열의 길이를 반환한다.</li>
<li>isEmpty() : 문자열이 비어 있는지 확인한다. (길이가 0)</li>
<li>isBlank() : 문자열이 비어 있는지 확인한다. (길이가 0이거나 공백만 있는경우),java 11</li>
<li>charAt(int index) : 지정된 인덱스에 있는 문자를 반환한다.</li>
</ul>
<p><strong>문자열 비교</strong></p>
<ul>
<li>equals(Object anObject) : 두 문자열이 동일한지 비교한다.</li>
<li>equalsIgnoreCase(String anotherString) : 두 문자열을 대소문자 구분 없이 비교한다.</li>
<li>compareTo(String anotherString) : 두 문자열을 사전 순으로 비교한다.</li>
<li>compareToIgnoreCase(String str) : 두 문자열을 대소문자 구분 없이 사전 적으로 비교한다.</li>
<li>startsWith(String prefix) : 문자열이 특정 접두사로 시작하는지 확인한다.</li>
<li>endsWith(String suffix) : 문자열이 특정 접미사로 끝나는지 확인한다.</li>
</ul>
<p><strong>문자열 검색</strong></p>
<ul>
<li>containes(CharSequence s) : 문자열이 특정 문자열을 포함하고 있는지 확인한다.
ㄹ</li>
<li>indexOf(String ch) / indexOf(String ch, int fromIndex) : 문자열이 처음 등장하는 위치를 반환한다.</li>
<li>lastIndexOf(String ch) : 문자열이 마지막으로 등장하는 위치를 반환한다.</li>
</ul>
<p><strong>문자열 조작 및 변환</strong></p>
<ul>
<li>subString(int beginIndex) / subString(int beginIndex, int endIndex) : 문자열의 부분 문자열을 반환한다.</li>
<li>concat(String str) : 문자열의 끝에 다른 문자열을 붙인다.</li>
<li>replace (CharSequence target, CharSequence replacement) : 특정 문자열을 새 문자열로 대체한다.</li>
<li>replaceFirst(STring regex,STring replacement) : 문자열에서 정규 표현식과 일치하는 척 번째 부분을 새 문자열로 대체 한다.
ㄹ</li>
<li>trim() : 문자열 양쪽 끝의 공백을 제거한다. 단순 whitespace만 제거할 수 있다.</li>
<li>strip() : Whitespace와 유니코드 공백을 포함해서 제거 한다. 자바 11</li>
</ul>
<p><strong>문자열 분할 및 조합</strong></p>
<ul>
<li>split(String regex) : 문자열을 정규 표현식을 기준으로 분할 한다.</li>
<li>join(CharSequence delimiter, CharSequence... elements) : 주어진 구분자로 여러 문자열을 결합한다.</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[사이드 이펙트]]></title>
            <link>https://velog.io/@99_/%EC%82%AC%EC%9D%B4%EB%93%9C-%EC%9D%B4%ED%8E%99%ED%8A%B8</link>
            <guid>https://velog.io/@99_/%EC%82%AC%EC%9D%B4%EB%93%9C-%EC%9D%B4%ED%8E%99%ED%8A%B8</guid>
            <pubDate>Fri, 04 Oct 2024 00:46:57 GMT</pubDate>
            <description><![CDATA[<p>사이드 이펙트는 프로그래밍에서 어떤 계산이 주된 작업 외에 추가적인 부수 효과를 일으키는 것을 말한다.</p>
<p>주된 <strong>작업 외에 추가적인 부수 효과를 일으키는 것을 사이드 이펙트라 한다.</strong> 프로그래밍에서 사이드 이펙트는 보통 부정적인 의미로 사용되는데, 사이드 이펙트는 프로그램의 특정 부분에서 발생한 변경이 의도치 않게 다른 부분에 영향을 미치는 경우에 발생한다. 이로 인해 디버깅이 어려워지고 코드의 안정성이 저하될 수 있다.</p>
<p><strong>불변이라는 단순한 제약을 사용해서 사이드 이펙트라는 큰 문제를 막을 수 있다.</strong></p>
<ul>
<li>객체의 공유 참조는 막을 수 없다. 그래서 객체의 값을 변경하면서 다른 곳에서 참조하는 변수의 값도 함께 변경되는 사이드 이펙트가 발생한다. 사이트 이펙트가 발생하면 안되는 상황이라면 불변 객체를 만들어서 사용하면 된다. 불변 객체는 값을 변경할 수 없기 때문에 사이드 이펙트가 원천 차단된다.</li>
<li>불변 객체는 값을 변경할 수 없다 따라서 불변 객체의 값을 변경하고 싶다면 변경하고 싶은 값으로 새로운 불변 객체를 생성해야 한다. 이렇게 하면 기존 변수들이 참조하는 값에는 영향을 주지 않는다.</li>
</ul>
<p>김영한님의 강의를 참조했습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[컴파일 오류vs런타임 오류]]></title>
            <link>https://velog.io/@99_/%EC%BB%B4%ED%8C%8C%EC%9D%BC-%EC%98%A4%EB%A5%98vs%EB%9F%B0%ED%83%80%EC%9E%84-%EC%98%A4%EB%A5%98</link>
            <guid>https://velog.io/@99_/%EC%BB%B4%ED%8C%8C%EC%9D%BC-%EC%98%A4%EB%A5%98vs%EB%9F%B0%ED%83%80%EC%9E%84-%EC%98%A4%EB%A5%98</guid>
            <pubDate>Wed, 02 Oct 2024 00:50:07 GMT</pubDate>
            <description><![CDATA[<p>컴파일 오류는 변수명 오타, 잘못된 클래스 이름 사용등 자바 프로그램을 실행하기 전에 발생하는 오류이다. 이런 오류는 IDE에서 즉시 확인할 수 있기 때문에 안전하고 좋은 오류이다.</p>
<p>반면에 런타임 오류는 이름 그대로 프로그램이 실행되고 있는 시점에 발생하는 오류이다. 런타임 오류는 매우 안좋은 오류이다. 왜냐하면 보통 고객이 해당 프로그램을 실행하는 도중에 발생하기 때문이다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Overloading,Overriding]]></title>
            <link>https://velog.io/@99_/OverloadingOverriding</link>
            <guid>https://velog.io/@99_/OverloadingOverriding</guid>
            <pubDate>Mon, 30 Sep 2024 05:28:17 GMT</pubDate>
            <description><![CDATA[<ul>
<li><p><strong>Method Overloading</strong> : 메서드 이름이 같고 매개변수가 다른 메서드를 여러개 정의하는 것을 메서드 오버로딩이라 한다. 오버로딩은 번역하면 과적인데, 과하게 물건을 담았다는 뜻이다. 따라서 같은 이름의 메서드를 여러개 정의했다고 이해하면 된다.</p>
</li>
<li><p><strong>Merhod overring</strong> : 메서드 오버라이딩은 하위클래스에서 상위클래스의 메서드를 재정의하는 과정을 의미한다. 따라서 상속 관계에서 사용한다. 부모의 기능을 자식이 다시 정의하는 것이다. 오버라이딩을 단순히 해석하면 무언가를 넘어서 타는 것을 말한다. 자식의 새로운ㅂ 기능이 부모의 기존 기능을 넘어 타서 기존 기능을 새로운 기능으로 덮어버린다고 이해하면 된다. 오버라이딩을 우리말로 번역하면 무언가를 다시 정의한다고 해서 재정의라 한다. 상속 관계에서는 기존 기능을 다시 정의한다고 이해하면 된다. 실무에서는 메서드 이보라이딩, 매서드 재정의 둘다 사용한다.</p>
</li>
</ul>
<h3 id="메서드-오버라이딩-조건">메서드 오버라이딩 조건</h3>
<ul>
<li><p>메서드 이름 : 메서드 이름이 같아야 한다.</p>
</li>
<li><p>메서드 매개변수(파라미터) : 매개변수(파라미터) 타입, 순서, 개수가 같아야 한다.</p>
</li>
<li><p>반환타입 : 반환타입이 같아야 한다. 단 반환 타입이 하위 클래스 타입일 수 있다.</p>
</li>
<li><p>접근 제어자 : 오버라이딩 메서드의 접근 제어자는 상위 클래스의 메서드보다 더 제한적이어서는 안된다. 예를 들어, 상위클래스의 메서드가 protected로 선언되어 있으면 하위 클래스에서 이를 public protected로 오버라이드 할 수 있지만, private 또는 defaulte로 오버라이드 할 수 없다.</p>
</li>
<li><p>예외 : 오버라이딩 메서드는 상위 클래스의 메서드보다 더 많은 체크 예외를 throws로 선언할 수 없다. 하지만 더 적거나 같은 수의 예외, 또는 하위 타입의 예외는 선언할 수 있다. 예외를 학습해야 이해할 수 있다. 예외는 뒤에서 다룬다.</p>
</li>
<li><p>static, final, private 키워드가 붙은 매서드는 오버라이딩 될 수 없다.</p>
<ul>
<li>static은 클래스 레벨에서 작동하므로 인스턴스 레벨에서 사용하는 오버라이딩이 의미가 없다. 쉽게 이야기해서 그냥 클래스 이름을 통해 필요한 곳에 직접 접근하면 된다. </li>
<li>final메서드는 재정의를 금지한다.</li>
<li>private 메서드는 해당 클래스에서만 접근 가능하기 때문에 하위 클래스에서 보이지 않는다. 따라서 오버라이딩 할 수 없다.</li>
</ul>
</li>
<li><p>생성자 오버라이딩 : 생성자는 오버라이딩 할 수 없다.</p>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[상속과 메모리 구조]]></title>
            <link>https://velog.io/@99_/%EC%83%81%EC%86%8D%EA%B3%BC-%EB%A9%94%EB%AA%A8%EB%A6%AC-%EA%B5%AC%EC%A1%B0</link>
            <guid>https://velog.io/@99_/%EC%83%81%EC%86%8D%EA%B3%BC-%EB%A9%94%EB%AA%A8%EB%A6%AC-%EA%B5%AC%EC%A1%B0</guid>
            <pubDate>Mon, 30 Sep 2024 04:45:34 GMT</pubDate>
            <description><![CDATA[<ul>
<li>상속 관계의 객체를 생성하면 그 내부에는 부모와 자식이 모두 생성된다.</li>
<li>상속 관계의 객체를 호출할 때, 대상 타입을 정해야 한다. 이때 호출자의 타입을 통해 대상 타입을 찾는다.</li>
<li>현재 타입에서 기능을 찾디 못하면 상위 부모타입으로 기능을 찾아서 실행한다. 기능을 찾지 못하면 컴파일 오류가 발생한다.</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[Equations and Identities/Inverse]]></title>
            <link>https://velog.io/@99_/Equations-and-IdentitiesInverse</link>
            <guid>https://velog.io/@99_/Equations-and-IdentitiesInverse</guid>
            <pubDate>Thu, 26 Sep 2024 13:10:15 GMT</pubDate>
            <description><![CDATA[<h3 id="variavles-and-constants">Variavles and Constants</h3>
<ul>
<li>Constants(상수) : 계산 중 변하지 않는 값</li>
<li>Variavles(변수) : 함수의 입출력과 같이 상황에 따라 달라질 수 있는 값
  variable은 상황에 따라 달라질 수 있으므로 x,y,z와 같은 문자로 값을 표현</li>
<li>Coefficients(계수) : 변수에 곱해지는 상수</li>
</ul>
<h3 id="equations">Equations</h3>
<p>두 값(LHS,RHS)이 등호를 통해 서로 같음을 나타내는 식</p>
<h3 id="solutions-of-equations">Solutions of Equations</h3>
<ul>
<li>방정식을 만족시키는 변수들의 값 또는 조건을 찾는 과정을 &#39;방정식을 푼다&#39; 라고 표현함</li>
<li>방정식을 만족시키는 변수들의 갑 또는 조건을 찾는 과정을 방정식의 solution(해)라고 부름</li>
<li>모든 solution들을 모든 집합을 solution set(해집합)이라고 부름</li>
</ul>
<h3 id="basic-rules-for-solving-equations">Basic Rules for solving Equations</h3>
<ul>
<li>LHS와 RHS에 같은 값을 더해도 =관계는 변하지 않음</li>
<li>LHS와 RHS에 0이 아닌 같은 값을 곱해도 =관계는 변하지 않음</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[Algebraic Properties]]></title>
            <link>https://velog.io/@99_/Algebraic-Properties</link>
            <guid>https://velog.io/@99_/Algebraic-Properties</guid>
            <pubDate>Thu, 26 Sep 2024 11:34:52 GMT</pubDate>
            <description><![CDATA[<h2 id="identities-and-inverses">Identities and Inverses</h2>
<ul>
<li>Identities(항등원) : 어떤값(a)와 연산(O)이 있을 때, 이 값에 연산을 진행한 결과가 원래의 값과 동일하게 만드는 값</li>
<li>Inverses(역원) : 어떤 값(a)과 연산(O)    이 있을 때, 이 값에 연산을 진행한 결과 identity가 되게 만드는 값</li>
</ul>
<p>Additive</p>
<ul>
<li><p>Additive Identities(덧셈에 대한 항등원)
  a + e = a -&gt; (a + e) - a = a - a // 각각 a를 -해준다.
-&gt; (e + a) - a = 0 // commutativity
-&gt; e + (a - a) = 0 // associativity
-&gt; e = 0
<strong>덧셈에 대한 항등원은 0 이다.</strong></p>
<br>
- Additive Inverses(덧셈에 대한 역원)
 a + x = e -> a + x = 0 // additive identity
 -> (a + x) - a = 0 - a
 -> (x + a) - a = -a // commutatitvity
    -> x + (a - a) = -a // associativity
 -> x = -a
 **덧셈에 대한 역원은 -a이다.**

<p>Inverse는 존재하지 않을 수도 있다.</p>
<p>정리</p>
</li>
<li><p><em>Addition*</em><br>Identity : 0 ,    Inverse : -a</p>
</li>
<li><p><em>Multiplication*</em> 
Identity : 1     ,Inverse : 1/a</p>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[JVM 이란?]]></title>
            <link>https://velog.io/@99_/JVM-%EC%9D%B4%EB%9E%80</link>
            <guid>https://velog.io/@99_/JVM-%EC%9D%B4%EB%9E%80</guid>
            <pubDate>Thu, 26 Sep 2024 00:03:10 GMT</pubDate>
            <description><![CDATA[<h2 id="jvm">JVM</h2>
<p><strong>Java virtual machine</strong> 을 줄인 말로 &#39;<strong>자바를 실행하기 위한 가상 기계</strong>&#39; 라고 할 수 있다. 자바로 작성된 애플리케이션은 모두 이 가상 컴퓨터에서만 실행되기 때문에 자바 애플리케이션이 실행되기 위해서는 반드시 JVM이 필요하다.
Java 애플리케이션은 JVM하고만 상호작용을 하기 때문에 OS와 하드웨어에 독립적이라 다른 OS에서도 프로그램의 변경없이 실행이 가능한 것이다. 
단, JVM은 OS에 종송적이기 때문에 해당 OS에서 실행가능한 JVM이 필요하다.</p>
<p><img src="https://velog.velcdn.com/images/99_/post/3b7d3dbb-d2be-43f1-b3a6-215955270490/image.png" alt=""></p>
<p><strong>Class Loader</strong>
JVM내로 클래스파일을 로드하고, 링크를 통해 배치하는 작업을 수행하는 모듈 Runtime시에 동적으로 클래스를 로드한다. jar파일 내 저장된 클래스들을 JVM위에 탑재하고 사용하지 않는 클래스들은 메모리에서 삭제한다. 클래스를 처음으로 참조할 때, 해달 클래스를 로드하고 링크한다.</p>
<p><strong>Execution Engine</strong>
클래스를 실행시키는 역할이다. 클래스 로더가 JVM내의 런타임 데이터 영역에 바이트 코드를 배치시키고, 이것은 실행엔진에 의해 실행된다. 자바 바이트코드는 기계가 바로 수행할 수 있는 언어보다는 비교적 인간이 보기 편한 형태로 기술된 것이다. 그래서 실행엔진은 이와 같은 바이트코드를 실제로 JVM내부에서 기계가 실행할 수 있는 형태로 변경한다.</p>
<ul>
<li>InterPreter(인터프리터)
  실행 엔진은 자바 바이트 코드를 명령어 단위로 읽어서 실행한다. 하지만 이 방식은 인터프리터 언어의 단점을 그대로 갖고 있다. 한줄 씩 수행하기 때문에 느리다는 것이다.</li>
<li>JIT(Just - In -time)
인터프리터 방식의 단점을 보완하기 위해 도입되 JIT 컴파일러이다. 인터프리터 방식으로 실행하다가 적절한 시점에 바이트 코드 전체를 컴파일 하여 네이티브 코드로 변경하고, 이후에는 해당 더 이상 인터프리팅 하지 않고 네이티브 코드로 직접 실행하는 방식이다.</li>
</ul>
<p><strong>Garbage collector</strong>
GC를 수행하는 모듈이 있다.</p>
<p><strong>Runtime Data Area</strong>
프로그램을 수행하기 위해 OS에서 할당받은 메모리 공간</p>
<p>출처
<a href="https://asfirstalways.tistory.com/158">https://asfirstalways.tistory.com/158</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Apache , Tomcat]]></title>
            <link>https://velog.io/@99_/Apache-Tomcat</link>
            <guid>https://velog.io/@99_/Apache-Tomcat</guid>
            <pubDate>Wed, 25 Sep 2024 23:48:52 GMT</pubDate>
            <description><![CDATA[<h3 id="apache">Apache</h3>
<p>Apache란 Apache재단에서 관리하는 Http 웹 서버입니다. 오픈소스이기 때문에 누구든지 수정, 재배포가 가능합니다.</p>
<h3 id="웹-서버">웹 서버</h3>
<p>클라이언트가 GET,POST 등의 메소드를 이용해 전송한 요청을 받아 HTML이나 오브젝트를 HTTP 프로토콜을 이용해 전송하는 프로그램입니다. 웹 서버는 웹 페이지, 이미지 등의 정적인 컨텐츠만 제공할 수 잇습니다.</p>
<h3 id="tomcat">Tomcat</h3>
<p>Tomcat이란 아파치 재단에서 만든 오픈소스 WAS(Web Application Server) 입니다. Tomcat은 Java Servlet과 JSP가 실행할 수 있는 환경을 제공하여 동적인 페이지를 생성합니다. 그리고 DB 연결 및 데이터 조작, 다른 응용프로그램들과 상호 작용이 가능합니다.</p>
<h3 id="wasweb-application-server">WAS(Web Application Server)</h3>
<p>웹 서버와 웹 컨테이너의 결합으로 이루어진 소프트웨어입니다. 웹 서버를 포함하고 있기 때문에 웹 서버처럼 사용할 수도 있습니다. DB와 연결되어 트랜잭션 처리를 하거나 다른 시스템과 연동 기능 또한 포함하고 있습니다. 웹 서버와 달리 요청에 대해 동적인 페이지를 만들어 유연하게 응답할 수 있습니다.</p>
<p>출처 <a href="https://kchanguk.tistory.com/2">https://kchanguk.tistory.com/2</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[종단 시스템, 프로토콜, 패킷]]></title>
            <link>https://velog.io/@99_/%EC%A2%85%EB%8B%A8-%EC%8B%9C%EC%8A%A4%ED%85%9C-%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C-%ED%8C%A8%ED%82%B7</link>
            <guid>https://velog.io/@99_/%EC%A2%85%EB%8B%A8-%EC%8B%9C%EC%8A%A4%ED%85%9C-%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C-%ED%8C%A8%ED%82%B7</guid>
            <pubDate>Wed, 18 Sep 2024 05:33:28 GMT</pubDate>
            <description><![CDATA[<h3 id="종단-시스템"><strong>종단 시스템</strong></h3>
<p>인터넷에 연결되는 컴퓨터와 그밨의 장치를 컴퓨터 네트워크 용어로는 종단 시스템이라고 부른다. 인터넷의 가장 자리를 차지하고 있기때문에 종단 시스템이라고 한다.
종단 시스템은 웹 브라우저 프로그램, 웹 서버 프로그램, 전자메일 클라이언트 프로그램 또는 전자메일 서버 프로그램 같은 애플리케이션을 수행하므로 호스트(host)라고도 부른다.</p>
<h3 id="호스트"><strong>호스트</strong></h3>
<p>호스트는 <strong>클라이언트</strong>와 <strong>서버</strong>로 구분된다. 비공식적으로 클라이언트는 데스크톱, 이동pc 스마트폰 등을 의미한다. 그리고 서버는 웹 페이지를 저장하고 분배하고 비디오를 스트림하며 전자메일을 릴레이하는 더 강력한 기능을 가진 컴퓨터다.</p>
<h3 id="프로토콜"><strong>프로토콜</strong></h3>
<p>둘 이상의 통신 개체 간에 교환되는 메시지 포맷과 순서뿐만 아니라, 메시지의 송수신과 다른 이벤트에 따른 행동들을 정의한다.</p>
<h3 id="패킷-교환"><strong>패킷 교환</strong></h3>
<p>네트워크 애플리케이션에서 종단 시스템들은 서로 메시지를 교환한다. 메세지에는 애플리케이션 설계자가 원하는 무엇인가가 포함될 수 있다.
출발지 종단 시스템에서 목적지 종단 시스템으로 보내기 위해 송신시스템은 긴 메세지를 <strong>패킷(packet)</strong>이라고 하는 작은 데이터 덩어리로 분할 한다. 송신측과 수신 측 사이에서 각 패킷은 패킷 스위치를 거치게 된다. 개부분의 패킷 스위치는 저장-후-전달 전송 방식을 이용한다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[객체 지향 설계의 5가지 원칙 - SOILD]]></title>
            <link>https://velog.io/@99_/%EA%B0%9D%EC%B2%B4-%EC%A7%80%ED%96%A5-%EC%84%A4%EA%B3%84%EC%9D%98-5%EA%B0%80%EC%A7%80-%EC%9B%90%EC%B9%99-SOILD</link>
            <guid>https://velog.io/@99_/%EA%B0%9D%EC%B2%B4-%EC%A7%80%ED%96%A5-%EC%84%A4%EA%B3%84%EC%9D%98-5%EA%B0%80%EC%A7%80-%EC%9B%90%EC%B9%99-SOILD</guid>
            <pubDate>Fri, 13 Sep 2024 02:50:30 GMT</pubDate>
            <description><![CDATA[<ul>
<li>SRP(Single Responsiblity Princeple) : 단일책임 원칙</li>
<li>OCP(Open Closed Priciple) : 개방 폐쇄 원칙</li>
<li>LSP(Listov Sergregation Priciple) : 리스코프 치환 원칙</li>
<li>ISP(Interface Segregatiom Principle): 인터페이스 분리 원칙</li>
<li>DIP(Dependency Inversion Principle) : 의존 역전 원칙</li>
</ul>
<ol>
<li><p>SRP : 단일 책임 원칙(Single Responsibility Principle)</p>
<p> &quot;한 클래스는 하나의 책임만 가져야 한다.&quot;</p>
<p> 중요한 기준은 &#39;변경&#39;이다. 변경이 있을 때 파급효과가 적으면 단일 책임 원칙을 잘 따른 것이라 말할 수있다.
 SRP 원칙을 적용하면 다른 클래스들이 서로 영향을 미치는 연쇄작용을 줄일 수 있다. 즉, 응집도는 높이고
 결합도는 낮출 수있다. 책임을 적절하게 분배함으로써 코드의 가독성 향상, 유지보수 용이라는 이점을 가질 수. 
 있다.</p>
</li>
<li><p>OCP : 개방 폐쇄 원칙(Open Closed Pricple)</p>
<p> &quot;소프트웨어 요소는 확장에는 열려있으나 변경에는 닫혀 있어야 한다.&quot;</p>
<p> 이는 요구사항의 변경이나 추가사항이 발생하더라고, 기존 구성요소 수정이 일어나지 말아야하며 쉽게 확장이 가능    하여 재사용할 수 있어야 한다는 뜻이다. OCP를 가능케 하는 중요한 메커니즘은 추상화와 다형성이라고 설명한다.
 OCP는 객체 지향의 장점을 극대화하는 아주 중요한 원리이다.</p>
</li>
<li><p>LSP : 리스코프 치환 원칙</p>
<p> &quot;서브타입은 언제나 자신의 기반 타입으로 교체할 수 있어야 한다.&quot;</p>
<p> 프로그램의 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다.
 이는 다형성에서 하위 클래스는 인터페이스 규약을 . 다지켜야 한다는 것을 말하며, 다형성을 지원하기 위한
 원칙이다. 인터페이스를 구현한 구현체는 믿고 사용하려면 . 이 원칙이 필요하다.
 상속을 잘 활용하고 있다면, 이미 LSP는 잘 구현하고 있는 것이다.</p>
</li>
<li><p>ISP : 인터페이스 분리 원칙</p>
<p> &quot;클라이언트는 자신이 사용하지 않는 메소드에 의존 고나계를 맺으면 안 된다.&quot;</p>
<p> 이는 자신이 사용하지 않는 인터페이스는 구현하지 말아야 한다는 원칙이다.
 다시말해, 특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 낫다는 뜻으로,
 하나의 인터페이스를 상속 받기 보다는 인터페이스를 구체적이고 작은 단위들로 분리시켜
 꼭 필요한 인터페이스만 상속하자는 의미이다.</p>
<p> SRP가 클래스의 단일책임을 강조했다면 ISP는 인터터페이스의 단일 책임을 강조한다.</p>
</li>
<li><p>DIP : 의존관계 역전 원칙(Dependency Inversion Priceiple)</p>
<p> &quot;추상화된 것은 구체적인 것에 의존하면 안된다. 구체적인 것이 추상화된 것에 의존해야 한다.&quot;</p>
<p> 구현 클래스에 의존하지 말고 , 인터페이스에 의존하라는 뜻이다.
 인터페이스를 적극적으로 활용하라는 의미이다.
 상의클래스일 수록, 인터페이스일 수록, 추상 클래스일 수록 변하지 않을 가능성이 크다.
 하위 클래스나 구체 클래스가 아닌 . 더추상적인 것에 의존하라는 것이 의존 역전 원칙이다.</p>
</li>
</ol>
]]></description>
        </item>
        <item>
            <title><![CDATA[HTTP]]></title>
            <link>https://velog.io/@99_/HTTP</link>
            <guid>https://velog.io/@99_/HTTP</guid>
            <pubDate>Thu, 12 Sep 2024 01:21:05 GMT</pubDate>
            <description><![CDATA[<p><strong>HTTP</strong>는 HyperText Transfer Protocol의 줄임말로, 하이퍼텍스트 전달 프로토콜이다.
HTTP는 서버와 클라이언트 사이에 요청과 응답을 주고 받는 프로토콜로 우리가 흔히 웹브라우저 주소창에 입력하는 웹주소인URL을 통해 요청과 응답이 이루어진다.
HTTP는 이러한 하이퍼텍스트 방식의 정보를 교환하기 위한 하나의 규칙이다.</p>
<ul>
<li><strong>하이퍼텍스트</strong> : 참조를 통해 한 문서에서 다른 문서로 즉시 접근할 수 있는 텍스트를 의미한다.</li>
</ul>
<p><strong>HTTP Method란 ?</strong> 클라이언트 - 서버 구조에서 요청(Request)와 응답(Response)가 이루어지는 방식을 의미한다.</p>
<p><strong>HTTP Method종류</strong></p>
<ul>
<li>GET : 리소스를 조회</li>
<li>POST : 데이터 추가, 둥록</li>
<li>PUT : 리소스 대체, 수정/ 해당 리소스가 없으면 새롭게 생성</li>
<li>DELETE : 리소스 삭제</li>
<li>PATCH : 리소스 부분 변경(수정)</li>
<li>HEAD : GET과 동일하나, HTTP메세지의 body부분을 제외하고 조회</li>
<li>OPTION : 서버와 브라우저가 통신하기 위한 통신 옵션을 확인하기 위함</li>
<li>CONNECT : 대상 자원으로 식별되는 서버에 대한 연결 요청</li>
</ul>
<p><strong>GET</strong></p>
<ul>
<li>리소스를 조회하는 메서드입니다.</li>
<li>GET 요청은 멱등성 이라는 개념을 지니고 있어, 여러 번 조회 요청을 하여도 리소스는 변하지 않습니다.</li>
<li>GET 요청에서 서버에 데이터를 전달하는 경우, 쿼리스트링을 통해서 전달합니다.</li>
</ul>
<p><strong>POST</strong></p>
<ul>
<li>주로 새로운 리소스를 생성하는데 사용합니다.</li>
<li>성공적으로 creation을 완료하면 201HTTP응답을 반환합니다.</li>
<li>데이터를 메세지 바디에 쿼리 파라미터 형식으로 전달합니다.</li>
</ul>
<p><strong>PUT</strong></p>
<ul>
<li>PUT과 같이 리소스를 수정하는 역할을 하지만, 리소스를 부분 변경한다는 점에서 차이가 있습니다.</li>
<li>기존 데이터 A,B가 존재할 때 B = C로 대체후 PATCH요청을 하면 데이터가 A,C로 변경됩니다.</li>
<li>PATCH 메서드를 지원하지 않는 서버도 있는데, 그럴 경우 POST를 사용합니다.</li>
<li>멱등성을 지니지 않습니다.</li>
</ul>
<p><strong>DELETE</strong></p>
<ul>
<li>리소스를 제거하는 역할입니다.</li>
<li>멱등성을 지닙니다.</li>
</ul>
<p><em><strong>멱등성</strong> : 수학에서 사용하는 용어에서 유래한 것으로 연산을 여러번 적용하더라도 결과가 달라지지 않는 성질을 뜻합니다.</em></p>
]]></description>
        </item>
    </channel>
</rss>