2025/04 11

1. 웹 애플리케이션 이해

웹 어플리케이션(Web Application): 인터넷이나 인트라넷을 통해 웹 브라우저에서 이용할 수 있는 응용 프로그램 1. 개요- 과거 초기의 웹 어플리케이션은 클라이언트 - 서버 컴퓨팅 환경에서의 각 응용 소프트웨어마다 UI를 가지고 있었음- 사용자 PC마다 따로 설치했어야 함- 현재는 HTTP 라는 통일된 프로토콜을 사용하지만, 과거에는 회사마다 독자적인 통신 프로토콜을 사용- HTTP 프로토콜의 정립으로 인해 웹 어플리케이션을 제공하는 기업의 유지 비용이 줄어듦 웹 서버(Web Server)- HTTP 기반 동작- 정적 리소스(정적 HTML, CSS, JS, 이미지, 영상) 제공 웹 어플리케이션 서버(Web Application Server)- HTTP 기반 동작- 웹 서버 기능 포함(정적 리소..

SPRING 2025.04.29

19. HashMap

Hash1. 해시 함수(Hash Function): 데이터의 효율적 관리를 목적으로 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수- 해시함수의 해시값이 최대한 균등하게 나오게 하는 게 중요 2. 해싱(Hashing): 키와 값으로 매핑하는 과정- 키(Key) : 매핑 전 원래 데이터의 값- 해시 값(Hash Value) : 매핑 후 데이터의 값 3. 해시 충돌(Collision): 해시 함수가 서로 다른 두 개의 키에 동일한 해시 값을 내는 것- 해시 함수는 해시 값의 개수보다 대개 많은 키 값을 해시값으로 변환하기 때문에 발생- 충돌을 최소화할 수 있는 해시함수를 사용해야 함1) 해결 방법Open Addressing(개방 주소법)특정 버킷에서 충돌이 발생하면, 비어있는 버킷을 찾아 항목을..

JAVA 2025.04.29

18. Collection Framework(List, Map, Set...)

상속 구조- 초록색 : 인터페이스- 파란색 : 클래스- 빨간 실선 : 상속- 보라색 점선 : 구현- 컬렉션 프레임워크는 추상화된 여러 인터페이스를 각각의 클래스에서 구현하는 방식으로 이루어져있음- 위 상속 구조도 말고도 Arrays가 있음 자료구조를 구현한 대표적인 컬렉션1. List: 배열과 유사한 구조로 객체를 저장하게 되면 각각의 주소에 인덱스가 부여되고, 그 인덱스로 겸색, 삭제 기능을 제공- 순서를 가지고, 같은 객체 중복 저장 가능- ArrayList, LinkedList, Vector- 차이)ArrayList & Vector : 동적 크기를 가지는 배열의 형태LinkedList : 연결 리스트의 형태ArrayList : 동기화 되어있지 않아 멀티 스레드 환경에서 명시적인 동기화가 필요Vect..

JAVA 2025.04.29

17. Reflection(Annotation)

Reflection: 구체적인 클래스 타입을 알지 못해도 그 클래스의 메소드, 타입, 변수들에 접근할 수 있도록 해주는 자바 API- JVM은 클래스 정보를 클래스 로더를 통해 읽어와서 해당 정보를 JVM 메모리에 저장- 힙 영역에 로드된 Class 타입의 객체를 통해, 원하는 클래스의 인스턴스를 생성할 수 있도록 지원- 컴파일된 자바 코드에서 역으로 클래스를 불러서 메소드 및 변수를 구해오는 방법- 동적 로딩하여 사용할 때 많이 사용되고 디 컴파일할 때에도 자주 사용되는 기법- Reflection 기능을 지원하지 않는 언어들 : C, C++, Pascal- 장단점)장점런타임 시점에서 클래스의 인스턴스를 생성하고, 접근 제어자와 관계 없이 필드와 메서드에 접근하여 필요한 작업을 수행할 수 있는 유연성을..

JAVA 2025.04.29

16. Generic

Generic: 모든 종류의 타입을 다룰 수 있도록, 클래스나 메소드를 일반화된 타입 매개 변수를 이용하여 선언하는 기법- C++의 템플릿과 유사 cf) 템플릿(Template): 메소드나 클래스 코드를 찍어내듯이 일반화시키는 도구 사용법- 컬렉션 클래스에서 타입 매개 변수로 사용하는 문자는 다른 변수와 혼동을 피하기 위해 일반적으로 하나의 대문자를 사용- 관례적으로 타입 매개 변수에 많이 사용하는 문자이며, 반드시 일치할 필요는 없음타입설명TypeElementKeyValueNumber1. generic 선언1) 클래스 및 인터페이스 선언public class ClassName { ... }public Interface InterfaceName { ... }2) 제네릭 타입 두개public class..

JAVA 2025.04.29

15. Default Method & 추상 클래스 & 인터페이스

Default Method1. 개요- 배포된 인터페이스에서 수정이 어려운 단점을 극복하게 됨- Java 9) private Method를 선언해 외부에서 접근 불가능한 mehtod 또한 선언할 수 있게 됨- EX)interface Foo { String getName(); // 추상 메서드, 구현하는 클래스에서 무조건 구현해줘야 하는 메서드.}---public class Bar implements Foo { private String name; public Bar(String name) { // 생성자 this.name = name; } @Override public String getName() { // 추상 메서드 구현 return this.name; }}---public cl..

JAVA 2025.04.29

14. Lambda & Functional Interface

람다식 (Lambda Expression): 함수를 하나의 식으로 표현한 것- 함수를 람다식으로 표현하면 메소드의 이름이 필요없기 때문에 람다식은 익명함수의 한 종류라고 볼 수 있음- 기존 함수와는 다르게 메소드 명이 필요하지 않으며, 괄호()와 화살표 ->를 이용해 함수를 선언함- 불필요한 코드를 줄이고, 가독성을 높이기 위해 등장- 함수형 인터페이스의 인스턴스를 생성하여 함수를 변수처럼 선언하는 람다식에서는 메소드의 이름이 불필요하다고 여겨져 사용하지 않음-> 컴파일러가 문맥을 살펴 타입을 추론함 1. 람다식 특징람다식 내에서 사용되는 지역변수는 final이 붙지 않아도 상수로 간주람다식으로 선언된 변수명은 다른 변수명과 중복될 수 없음2. 람다식의 장점코드를 간결하게 만들 수 있음식에 개발자의 의도..

JAVA 2025.04.17

13. 자바 8의 특징

1. 람다 표현식(Lambda Expression): 메서드로 전달될 수 있는 익명 함수를 단순한 문법으로 표기한 것 2. 함수형 인터페이스(Functional Interface): 추상 메서드가 오직 하나인 인터페이스-> 단일 추상 메서드를 가지는 인터페이스- 여러 개의 Default 메소드와 Static 메소드가 있어도 함수형 인터페이스로 취급@FunctionalInterfacepublic interface Math { public int Callc(int first, int secont);}public class Main { public static void main(String[] args) { Math plusLambda = ((first, secont) -> first ..

JAVA 2025.04.17

12. 비동기처리 문법 비교

동기 & 비동기- 동기(sync): A라는 작업이 끝나는 동시에 B라는 작업을 시작 - 비동기(async): A라는 작업의 완료 여부와 상관없이 B라는 작업을 시작함비동기 방식은 작업들이 서로의 작업 시작 및 종료 시간에 영향을 받지 않고, 별도의 작업 시작 / 종료 시간을 가짐모든 비동기 방식은 멀티 스레드에서 작동작업의 순서를 보장할 수 없게 됨자바에서 비동기를 처리하는 방법1. Callback: 다른 주체에게 맡긴 작업이 끝나면 다른 주체 쪽에서 본 주체가 전해준 콜백 함수를 실행하는 방법- 애플리케이션이 스레드에게 작업 처리를 요청한 후, 스레드가 작업을 완료하면 특정 메소드를 자동 실행하는 기법 cf) 블로킹 방식 vs 콜백 방식▶ 블로킹 방식: 작업 처리를 요청한 후, 작업이 완료될 때까지 블..

JAVA 2025.04.17

11. Error & Exception 2

Throwable- 예외와 관련된 최상위 클래스- 대부분 직접적으로 이 클래스를 사용하기보다는 이를 상속받은 Exception이나 Error가 주로 사용됨- Error는 예외 처리의 대상으로 보지 않기에 제외하면 나머지 Exception 클래스와 그 하위 클래스가 주요 처리 대상임- 예외가 연결될 때(Chained Exception) 연결된 예외의 정보들을 기록하기도 함- 이 Throwable 객체가 지닌 정보와 할 수 있는 행위는 getMessage(), printStackTrace()라는 메소드로 구현getMessage() : 발생한 예외에 대한 구체적인 메시지를 반환하므로 간단히 예외에 관한 내용을 확인할 때 사용printStackTrace() : 예외에 대한 자세한 디버깅을 위해 주로 사용되는 메..

JAVA 2025.04.17