전체 글

공부하면서 정리하는 블로그입니다. 틀린 내용이나 피드백 적극 환영합니다^^
남궁성님의 Java의 정석(3rd Edition)을 보고 정리한 글입니다. 자바에서 제공하는 java.net 패키지를 사용하면 네트워크 애플리케이션의 데이터 통신 부분을 쉽게 작성할 수 있다. java.net 패키지를 알아보기 전에 네트워크 모델과 IP 주소에 대해 알아보자. 1. 네트워크 모델 / IP 주소 a. 클라이언트(Client)/서버(Server) 서버는 서비스를 제공하는 컴퓨터 클라이언트는 서비스를 사용하는 컴퓨터 안정적인 서비스의 제공이 가능하다. 공유 데이터의 관리와 보안이 용이하다. 서버구축비용과 관리비용이 든다. b. P2P 모델(peer-to-peer model) 별도의 서버없이 각 클라이언트가 서버역할을 동시에 수행하는 모델 서버구축 및 운용비용을 절감할 수 있다. 자원의 활용을 ..
남궁성님의 Java의 정석(3rd Edition)을 보고 정리한 글입니다. 1. 람다식(Lambda Expression)이란? java 8부터 람다식을 등장으로 Java는 객체지향 언어의 특징과 함수형 언어 특징을 함께 갖추게 되었다. 함수(메서드)를 간단한 식(Expression)으로 표현하는 방법 익명함수(anonymous function)이라고도 한다. 2. 람다식 사용 방법 (매개변수 선언) -> { // 문장들 } // 메서드 이름과 반환타입을 제거하고 '->'를 블록앞에 추가한다. (int a, int b) -> { return a > b ? a: b; } // 반환값이 있는 경우, 식이나 값만 적고 return문 생략 가능 (끝에 ';' 안 붙임) (int a, int b) -> a > b ..
남궁성님의 Java의 정석(3rd Edition)을 보고 정리한 글입니다. 쓰레드를 구현 방법을 알아보기에 앞서 프로세스, 쓰레드가 무엇인지 알아보자. 1. 프로그램 / 프로세스 / 쓰레드 a. 프로그램(Program) HDD, SSD와 같은 디스크에 저장된 실행 가능한 파일이다. b. 프로세스(Process) 현재 실행 중인 프로그램이다. 운영체제에 의해 메모리 공간을 할당받아 실행 중인 것 프로세스는 프로그램에 사용되는 데이터와 메모리 등의 자원 그리고 쓰레드 구성된다. c. 쓰레드(Thread) 프로세스 내에서 실제로 작업을 수행하는 주체 모든 프로세스는 하나 이상의 쓰레드가 존재하여 작업을 수행한다. 둘 이상의 쓰레드를 가진 프로세스를 멀티쓰레드 프로세스라고 한다. 프로세스의 메모리 한계에 따라 ..
남궁성님의 Java의 정석(3rd Edition)을 보고 정리한 글입니다. 컬렉션 프레임웍의 핵심 인터페이스 핵심 인터페이스로는 List, Set, Map이 있다. List, Set은 공통된 부분이 많아 공통 부분을 인터페이스(Collection)으로 정의했다. Map은 List, Set과 달리 key-value 구조이기 때문에 별도의 인터페이스로 정의했다. List 순서를 유지하고, 데이터 중복을 허용한다. 구현클래스: ArrayList, Vector, LinkedList, Stack 등 Set 순서를 유지하지 않고, 데이터 중복을 허용하지 않는다. 순서를 유지하고 싶으면 LikedHashSet 사용 구현클래스: HashSet, TreeSet 등 Map Key, Value 구조의 데이터 집합 순서는 유..
· Java/기타
.java(소스 파일) 개발자가 작성한 소스코드 파일이다. .class(바이트 코드 파일) .java 파일을 자바 컴파일를 통해 바이트 코드로 변환한 파일이다. .jar .class 파일을 압축한 파일로 압축을 풀면 .class 파일 상태가 된다. jar파일 자체가 실행 가능한 애플리케이션이며, jar 파일 형식으로 쉽게 배포할 수 있다. 빌드를 진행해보겠다. 빌드 1. 아래의 .java 파일을 빌드를 진행한다. 2. 빌드를 진행하면 jar 파일이 생성된다. 3. jar 파일을 압축을 풀면 패키지와 동일한 디렉토리에 .class 파일로 압축을 풀게된다.
남궁성님의 Java의 정석(3rd Edition)을 보고 정리한 글입니다. 1. 에러의 종류 에러의 종류에는 논리적 에러,컴파일 에러, 런타입 에러가 있다. a. 논리적 에러 개발자 실수(논리적 오류)로 인해 실행은 되지만, 의도와 다르게 동작하는 것 b. 컴파일 에러 컴파일 시점에 발생하는 에러 ex) 문법을 잘못 작성해서 발생하는 에러 ex) 타입체크 에러 c. 런타임 에러 실행 시 발생하는 에러 런타임 시 발생할 수 있는 오류에는 2가지가 있다. 에러(error) 프로그램 코드에 의해서 수습될 수 없는 심각한 오류로 시스템이 종료되어야 할 수준 ex) StackOverflowError: 재귀가 지속되어 호출 깊이가 깊어져 발생하는 오류 ex) OutOfMemoryError: JVM 메모리 부족으로 ..
남궁성님의 Java의 정석(3rd Edition)을 보고 정리한 글입니다. 내부 클래스(inner class)? 두 클래스간의 긴밀한 관계를 가지며, 두 클래스의 멤버들 간에 서로 쉽게 접근할 수 있다. 내부 클래스의 종류에는 인스턴스 클래스, static 클래스, Local 클래스, 익명 클래스가 있다. 내부 클래스도 클래스이므로 abstract나 final과 같은 제어자를 사용할 수 있다. 내부 클래스도 멤버변수처럼 접근제어자도 사용할 수 있다. a. 인스턴스(instance) 클래스? 외부 클래스의 멤버변수 선언 위치에 선언 인스턴스 멤버처럼 사용 주로 외부 클래스의 인스턴스 멤버들과 관련된 작업 접근제어자도 인스턴스 멤버처럼 동일하게 적용된다. class Cart { // 장바구니 클래스 Arra..
남궁성님의 Java의 정석(3rd Edition)을 보고 정리한 글입니다. 추상클래스와 인터페이스를 알아보기 전에 객체지향의 핵심 원리인 다형성에 대해서 정리해보자. 1. 다형성(polymorphism)이란? 부모 타입의 참조변수로 자식타입의 객체를 다룰 수 있는 것 자식타입의 참조변수로는 부모타입의 인스턴스를 참조할 수 없다. 다형성을 사용하면 유지보수에 큰 이점을 가져올 수 있으면 객체지향의 핵심 원리이다. public class Main { public static void main(String[] args) { Parent parent = new Child(); // => 다형성 Child child = new Parent(); // 에러. 자식은 부모의 모든 멤버를 가지지만, 부모는 자식의 멤버..
남궁성님의 Java의 정석(3rd Edition)을 보고 정리한 글입니다. 1. 제어자 클래스, 변수, 메서드의 선언부에 사용되며, 부가적인 의미를 부여한다. 하나의 대상에 여러 개의 제어자를 조합해서 사용할 수 있다.(접근제어자는 하나만 사용 가능) 접근제어자와 그 외 제어자로 나눌 수 있다. 2. 접근제어자 public: 접근제한이 없음. protected: 같은 패키지 내에서, 다른 패키지의 자식클래스에서 접근 가능 default: 같은 패키지 내에서 접근 가능 private: 같은 클래스 내에서 접근 가능 접근 제어자를 사용하는 이유는 외부로부터 데이터를 보호하며, 외부에는 불필요한, 내부적으로만 사용되는 부분을 감추기 위해 사용한다. ⇒ 캡슐화 3. 그 외 제어자(static, final, ab..
남궁성님의 Java의 정석(3rd Edition)을 보고 정리한 글입니다. 1. package란? 서로 관련된 클래스들끼리 그룹 단위를 package로 묶어서 효율적으로 관리 클래스의 이름이 동일해도 서로 다른 package이면 다른 클래스로 인식 package는 물리적으로 하나의 디렉토리이며, package에 다른 package를 포함시킬 수 있다. 2. package 네이밍 규칙 pacakge 명은 소문자로 사용하는 것이 원칙 java로 시작하는 패키지 금지(자바 표준 api에서만사용) 자바 예약어 금지 패키지는 .(dot)로 구분 한다. package 상위패키지명.하위패키지명 package org.example.pck; 3. import문 다른 패키지의 클래스를 사용할 경우 패키지명과 클래스를 모두..
kmindev
평생쓰는 IT 개발 노트