본문 바로가기

자바기초

(45)
디버깅 // 이클립스 1. 디버그 모드로 전환 (서버 시작도 디버그 모드로 해야함!) 2. 확인하고 싶은 곳에 breaking point를 설정 (더블클릭 / Ctrl+Shift+B) 3. 사이트에 접속 후, 중단점을 건 기능을 하는 페이지에 접근 >> 웹에선 무한로딩 / 이클립스에선 디버깅이 진행 4. 아래 사진에서 2의 Step Over(F6)로 한줄 한줄씩 넘어가면서 확인 가능. 만약 중단점을 무시하고 진행하길 원한다면 1을 클릭하여 활성화 해놓기. // 웹 1. F12 누르고 소스를 볼 때 .do로 나와서 이렇게 하얀 화면만 나오면 F5 2. 원하는 곳을 클릭하고 3. 해당 기능이 실행되도록 함. 나는 현재 '목록 뿌리는 것'을 확인할 것이기에 새로고침을 했는데, 만약 작동점의 조작이 필요한 기능이라면 ..
Thread Process 실행중인 프로그램 OS로부터 메모리를 할당 받음. Thread 실제 프로그램이 수행되는 작업의 최소 단위 하나의 프로세스는 하나 이상의 Thread를 가지게 됨. Multi-thread 프로그래밍 동시에 여러 개의 Thread가 수행되는 프로그래밍 Thread는 각각의 작업공간(context)를 가짐. 공유 자원이 있는 경우 race condition이 발생. critical section에 대한 동기화(synchronization)의 구현이 필요. 더보기 Runnable ---------- sleep(시간), wait(), join() ----------> Not Runnable - sleep(시간) : 시간 지나면 - wait() : notify() - join() : other thr..
JDBC / MySQL Driver JDBC (Java Database Connectivity) 자바에서 데이터베이스에 접속할 수 있도록 하는 자바 API. 데이터베이스에서 자료를 쿼리하거나 업데이트하는 방법을 제공. 참고 : https://opentutorials.org/module/3569/21222 MySQL Driver https://dev.mysql.com/downloads/connector/j/ ============================================ JPA Oracle Driver => Oracle 또는 => JDBC => MSQSL Driver => MSSQL MyBatis MySQL Driver => MySQL Spring Boot FR 컨트롤러 => 서비스 => DAO
인터페이스 : 어떤 오브젝트에 대한 설명서 요소 - 추상 메서드 - 상수 - 디폴트 메서드 : 기본 구현을 가지는 메서드. 구현하는 클래스에서 재정의 가능 (java 8) - 정적 메서드 : 인스턴스 생성과 상관없이 인터페이스 타입으로 호출하는 메서드 - private 메서드 : 인터페이스 내에서 사용하기 위해 구현한 메서드. 구현하는 클래스에서 재정의&사용 불가능. (java 9) 인터페이스에서 선언한 변수는 컴파일 과정에서 상수로 변환됨.(final) 인터페이스에서 선언한 메서드는 컴파일 과정에서 추상 메서드로 변환됨. 타입 상속과 형 변환 Calc calc = new CompleteCalc(); 인터페이스를 구현한 클래스는 인터페이스 타입으로 변수를 선언하여 인스턴스를 생성할 수 있음. 인터페이스는 구현 코드..
추상 클래스 응용 - 템플릿 메서드 템플릿 메서드 템플릿 : 틀, 견본 템플릿 메서드 : 추상 메서드나 구현된 메서드를 활용하여 전체의 흐름(시나리오(logic))를 정의해놓은 메서드 final로 선언하여 재정의 할 수 없게 함. (하위 클래스에서 재정의 불가능) final 예약어 final 변수 : 값이 변경될 수 없는 상수 오직 한 번만 값을 할당할 수 있음. final 메서드 : 하위 클래스에서 재정의 (overriding) 할 수 없음 final 클래스 : 더 이상 상속되지 않음
추상 클래스 추상 메서드를 포함한 클래스 추상 메서드 : 구현 코드 없이 선언부만 있는 메서드 abstract 예약어 사용 추상 클래스는 new (인스턴스화) 할 수 없음 메서드와 클래스에 abstract 키워드 사용 추상 메서드가 포함된 클래스는 추상 클래스로 선언 모든 메서드가 구현되었다고 해도 클래스에 abstract 키워드를 사용하면 추상 클래스 (추상 메서드가 존재하면 해당 클래스는 반드시 추상 클래스.) 추상 클래스는 주로 상속의 상위 클래스로 사용됨 추상 클래스 : 하위 클래스가 구현해야 하는 메서드 구현된 메서드 : 하위 클래스가 공통으로 사용하는 기능의 메서드 하위 클래스에 따라 재정의 할 수 있음
다운 캐스팅과 instanceof 다운 캐스팅 묵시적으로 상위 클래스 형 변환된 인스턴스가 원래 자료형(하위 클래스)으로 변환되어야 할 때, 다운 캐스팅이라 함. 하위 클래스로의 형 변환은 명시적으로 되어야 함. Ex. Class VIPCustomer extends Customer{} 일 때. Customer vc = new VIPCustomer(); //묵시적 VIPCustomer vCustomer = (VIPCustomer)vc; //명시적 instanceof 반환형 : boolean 다운 캐스팅을 할 때 안정적으로 하기 위해선 이를 사용하도록.
다형성 다형성(polymorphism) 하나의 코드가 여러 자료형으로 구현되어 실행되는 것. 같은 코드에서 여러 실행 결과가 나옴. 정보은닉, 상속과 더불어 객체지향 프로그래밍의 가장 큰 특징 중 하나. 객체지향 프로그래밍의 유연성, 재활용성, 유지보수성에 기본이 되는 특징임. 장점 다양한 여러 클래스를 하나의 자료형(상위 클래스)으로 선언하거나 형변환하여 각 클래스가 동일한 메서드를 오버라이딩 한 경우, 하나의 코드가 다양한 구현을 실행할 수 있음. 유사한 클래스가 추가되는 경우 유지보수에 용이하고, 각 자료형마다 다른 메서드를 호출하지 않으므로 코드에서 많은 if문이 사라짐.