Thread 기본 개념에 대해서 알아보자우리는 우리도 모르게 thread를 사용해왔다. 자바의 main 스레드를 실행시켜서 작업을 처리해왔다. 이런 스레드를 좀더 잘 이해하고 잘 사용하면 성능 향상을 만들어 낼수 있지만 공부해야할 것이 많은 그리고 작업을 만들때 고민해야하는 것이 많지만 확실히 도움이 될꺼라고 생각해서 공부하려 한다! 시리즈 식으로 정리하며 공부해보려고 한다.1. 프로세스와 스레드Process프로세스는 메모리에서 실행중인 프로그램의 인스턴스를 뜻한다. 프로그램이 실행되면 운영체제가 메모리를 할당해서 프로세스를 생성하고 이를 통해서 프로그램이 독립적인 환경에서 실행된다.독립성 : 각 프로세스는 독립적인 메모리 공간을 가지며 다른 프로세스가 접근할 수 없다.자원 할당 : 운영체제는 프로세스..
자바 예외 총정리예외란?사용자의 잘못된 조작 혹은 개발자의 로직 실수로 인해서 발생하는 프로그램 오류를 말한다. 예외처리 코드를 통해서 프로그램을 종료하지 않고 다시 정살 실행 상태가 유지 되도록 할 수 있다.예외 vs 에러에러(error)란 자바 프로그램 밖에서 발생한 오류를 뜻한다. 컴퓨터가 고장이 난다거나. OS에서 비정상적인 상황이 발생해서 JVM이 실행될 수 없는 경우등으로 복구가 불가능 하다.error : 프로세스에 영향을 줌exception : 스레드에만 영향을 줌예외 처리 방법예외 복구 : 상황 파악 후 문제 해결해서 정상 상태로 돌려놓는 방법예외 회피 : throws를 통해서 직접 처리 안하고 호출한 쪽으로 던져 회피예외 전환 : 회피와 비슷하지만 그냥 던지지 않고 적합한 의미를 가진 예..
모든 것이 안될 때 날 구원해준 한글 깨짐 해결을 해보자File Encodings, Edit Custom VmOptions, build.gradle에 encoding 관련 설정 추가, application.properties 추가, Run/Debug Configurations설정 다는 다 안됐다. 근데 이제 내가 설명할 방법으로 됐다. Window에서 설정을 했다.주의 설정이 끝나면 컴퓨터를 껏다 켜야함 Gradle 한글 설정Window + R 로 실행 열고 control 입력시계 및 국가국가 또는 지역관리자 옵션시스템 로캘 변경Beta 에 체크 이제 gradle 콘솔창에서도 한글이 잘 보이는걸 볼 수 있다.
Package-privaet 접근 제한자 자바에서 대부분의 클래스는 외부에서 사용하기 위해서 만드는 경우가 많다. 클래스를 설계할 때 외부 클래스에서 접근할 수 있는 멤버와 접근할 수 없는 멤버를 구분해서 필드, 생성자, 메서드를 설계하는 것이 바람직하다. 이때 누군가는 호출을 어디까지 허용할 건지 만드는 것이 접근 제한자이다. 접근 제한자의 종류와 적용할 대상은 다음 표와 같다. 접근 제한 적용 대상 접근할 수 없는 클래스 public 클래스, 필드, 생성자, 메소드 없음 protected 필드, 생성자, 메소드 자식 클래스가 아닌 다른 패키지에 소속된 클래스 default 클래스, 필드, 생성자, 메소드 다른 패키지에 소속된 클래스 private 필드, 생성자, 메소드 모든 외부 클래스 이젠 클래스,..
abstract는 추상이라는 개념이다. 객체를 직접 생성할 수 있는 클래스를 실체 클래스라고 한다면 이 추상 클래스는 클래스들의 공통적인 특성을 추출해서 선언한 클래스이다. 예를 들어서 생물의 특징을 적는 class들이 있다고하자. Bird, Insect, Fish등이 있을 때 이들의 공통되는 필드와 메소드를 모아둔 것이 추상 클래스이다. 여기서는 Animal.class라고 하자 이때 Animal 클래스를 Bird, Insect, Fish들이 상속하게 된다. Animal animal = new Animal(); 추상 클래스인 Animal은 다음과 같이 new연산자를 사용해서 인스턴스를 생성할 수 없다. 실체 클래스들의 공통된 필드와 메소드의 이름을 통일할 목적으로 사용 실체 클래스를 작성할 때 시간을 절..
Overloading이란 같은이름의 맴버들을 작성하는 걸 뜻한다. 매개변수등이 달라져도 같은 동작을 하는 맴버들을 만들기 위해서 사용한다. 메소드 오버로딩 생성자 오버로딩 2가지가 있다. Overriding은 부모 클래스의 메소드가 자식 클래스에 맞지 않아서 재정의 하는 것을 의미한다. 메소드 Overriding이 있다. 부모의 메소드와 동일한 이름, 변수리스트, 리턴타입을 가져야 한다. 접근 제한을 더 강하게 오버라이딩할 수 있다. 새로운 예외를 할 수 없다. 생성자 오버로딩 다양한 데이터를 사용해서 객체(class)를 생성하려면 생성자도 다양화 될 필요가 있다. 이때 Overloading을 사용하면 편리해진다. public class Person { private String name; private..