본문 바로가기

분류 전체보기

(276)
OS Basic 이번 블로그에서는 운영체제를 전체적으로 실습과 함께 알아보고자 한다. 운영체제의 종류 운영체제의 종류는 위와같이 정말 다양하다. 보통은 임베디드, 서버, 모바일, 데스크탑이 주된 사용 고객이고 각 기계마다 다양한 OS를 사용하고 있다. 예를 들어, 안드로이드 운영체제는 안드로이드만의 운영체제를 사용하는데 이는 리눅스 커널을 기반으로 사용하고 리눅스는 유닉스와 유사한 운영체제이다. 따라서, 안드로이드는 리눅스의 많은 특성을 상속받아 사용한다고 위의 표를 보며 해석할 수 있다. 커널 : 운영체제의 핵심 구성요소로, 자원, 프로세스, 파일 시스템, 장치 드라이브, 시스템 콜 등의 관리 및 역할을 수행한다. 위에서도 대표적인 운영체제인 Windows, Unix, Linux에 대해 자세히 알아보려고 한다. Win..
Effective JAVA - Item22 : 인터페이스는 타입을 정의하는 용도로만 사용하라 주제 인터페이스는 타입을 정의하는 용도로만 사용해야하고 상수 공개용 수단으로 사용하지 말자. 인터페이스의 주된 역할은 해당 인터페이스를 구현한 클래스를 사용자들이 사용시 그 클래스의 용도를 알려주는 역할을 한다. 하지만, 이 역할만을 수행해야하며, 상수 인터페이스 안티패턴과 같이 static final로만 가득찬 인터페이스를 제공하여 해당 수를 사용하는 방식으로 인터페이스를 구현해서는 안된다. 예를 통해 문제점을 보여주고자한다. 아래의 코드에서 보면 Number 인터페이스를 Test 클래스가 구현했다. public interface Number { static final int one = 1; } public class Test implements Number{ } 기본적으로 클래스 내부에서 사용하는 상..
Effective JAVA - Item21 : 인터페이스는 구현하는 쪽을 생각해서 설계하라. 이 파트는 인터페이스 디폴트 메서드에 대해서 주로 다루고 있다. 내용을 요약하자면 디폴트 메서드를 통해 인터페이스에 새로운 메서드를 추가하는 일이 가능해졌지만 문제가 많으니 항상 인터페이스를 구현할때는 신중하게 할 것을 강조한다. 인터페이스의 가장 큰 단점 자바는 기본적으로 릴리스가 존재한다. 릴리스를 개시하면 사용자들은 그 릴리스를 사용하게 된다. 인터페이스는 자바 8 이전까지 메서드 추가/삭제가 어려웠다. 디폴트 메서드가 부재하던 시절에 새로운 메서드를 추가하거나 삭제한다면 이 인터페이스를 구현한 모든 클래스가 해당 메서드를 삭제 또는 재정의해야했기 때문이다. 하지만 디폴트 메서드가 추가되면서 구현체들은 해당 메서드를 재정의해야함이 강제되지 않기때문에 이런 문제가 줄어드나 싶었다. 그렇지는 않은듯 싶..
Effective JAVA - Item20 : 추상 클래스보단 인터페이스를 우선시하라. 기본적으로 인터페이스와 추상 클래스의 장단점에 대해서 짚고 넘어가보고자 한다. 장단점은 아래와 같다. 추상 클래스 vs 인터페이스 인터페이스 장점 1. 다중 상속 지원 : 여러 인터페이스를 구현할 수 있으므로 다중 상속을 지원한다. 2. 유연한 설계 : 인터페이스는 클래스와 상관없이 다른 클래스가 동일한 인터페이스를 구현하므로 클래스간 교체가 유연하다. 3. 표준화 : 인터페이스를 사용하여 다른 클래스 간에 표준 메서드 시그니처를 정의할 수 있으므로 코드의 일관성과 유지보수성을 높인다. 4. 믹스인에 안성 맞춤 : 믹스인은 해당 클래스가 특정 행위를 한다고 알려주는 방법으로 예시로는 Comparable이 있다. 단점 1. 구현 코드 부재 : 인터페이스는 메서드 시그니처만을 정의하고, 구체적인 구현 코드는..
Jar 파일 만들고 사용해보자 이번 블로그에서는 자바를 활용해 Jar 파일을 만들고 사용해보는 방법에 대해서 정리해보고자 한다. 1. .java 파일 생성 예시로 두개의 클래스를 작성했다. 간단하게 계산기 클래스와 인사해주는 클래스이다. 두 클래스는 TestJar라는 같은 패키지에 위치해 있다. package TestJar; public class Calculator { public static int plus(int a, int b){ return a+b; } public static int minus(int a, int b){ return a-b; } } package TestJar; public class SayHello { public void sayHello(){ System.out.println("Hello"); } } 2..
DNS Overview & Purchasing Domain 1. What is the DNS? Mostly, most website you visited, you don't know what is the IP address of it. Just go to website and use it, that's it. However, Inside of that, All of website has their own IP Address and connect each other with it. Therefore, Let's say you don't know google's IP address, how can you visit google? Because we have DNS Server which is changing domain name(www.google.com) to I..
HTTP 상태 코드 정리 이번 블로그에서는 웹 접속 등에서 나타나는 다양한 HTTP 상태 코드에 대해서 정리해보려고 한다. 앞자리의 의미 1로 시작하는 코드 : 현재까지 서버에 요청이 잘 전달되었으며, 클라이언트는 하던 작업을 계속 수행해도 됨을 의미 (정보) 2로 시작하는 코드 : 서버에 요청이 잘 전달된 후, 그에 대한 응답 (성공) 3으로 시작하는 코드 : 요청 완료를 위해 추가적인 작업이 필요함을 의미하는 코드 (리다이렉션) 4로 시작하는 코드 : 요청의 문법이 잘못되었거나 요청을 처리할 수 없음을 의미하는 코드 (클라이언트 오류) 5로 시작하는 코드 : 요청에는 문제가 없으나 서버측에서 문제가 존재하는 경우 (서버 오류) 대표 Status 200 OK - 요청이 성공적으로 되었고 정보는 요청에 따른 응답으로 반환됩니다...
Port & Port Forwarding Port 기본적으로 포트란 여러가지 요청의 종류를 구별해주는 장치라고 볼 수 있다. 한 예로, 내가 만약 내 컴퓨터로 웹사이트를 하나 띄웠다고 해보자 이 웹사이트는 여러가지 기능을 한다. 하지만 결국 이 사이트를 띄운 컴퓨터도 하나의 LAN선으로 이루어져있다. 따라서, 이 하나의 LAN선에 여러가지 종류의 요청이 왔을 때, 어떤 요청인지 쉽게 구별이 가능해야 하는 것이다. 종류는 아래와 같고 번호에 따라 역할이 조금 다르다. 0~1023번 : 잘 알려진 포트 1024~49151번 : 등록된 포트 49152~65535번 동적 포트 또한, 잘 알려진 포트는 말그대로 잘 알려진 포트이다. 따라서, 잘 알려진 포트 내부 번호마다 역할이 존재한다. 아래는 각 포트별 요청 종류를 의미한다. 20 : FTP 데이터 ..