반응형
해시테이블(HashTable) vs 해시맵(HashMap)
동기화
- HashTable
- 스레드 안전하며, 모든 메서드가 동기화 되어있음
- 멀티프로세스 환경에서 안전하게 사용이 가능
- HashMap
- 스레드 안전하지 않으며, 멀티프로세스 환경에서 별도의 동기화 작업이 필요
Null
- HashTable: null을 허용하지 않음
- HashMap: key와 value에 null 허용
성능
- HashTable은 모든 메서드가 동기화 되어 있어 상대적으로 HashMap의 속도가 빠름
상속
- HashTable: Dictionary
- HashMap: AbstractMap
초기화
- HashTable: 11개의 버킷으로 초기화, 버킷 수가 2배 증가
- HashMap: 16개의 버킷으로 초기화, 버킷 수가 2배 증가
자바의 메모리 영역
메서드 영역
- 클래스 수준의 정보가 저장되는 영역
- 클래스 메타데이터, 상수 풀, 메서드 코드 등이 포함
- JVM의 모든 스레드에서 공유
힙 영역
- 동적으로 할당되는 객체와 배열이 저장되는 영역
- 객체의 인스턴스 변수, 배열의 요소 등이 포함
- 가비지 컬렉션의 대상이 되는 영역
- JVM의 모든 스레드에서 공유
스택 영역
- 메서드 호출 시 생성되는 지역변수, 매개변수가 저장되는 영역
- 메서드 호출 시 스택 프레임 생성, 종료 시 제거
- 각 스레드마다 자신의 스택 영역을 가짐
레지스터
- CPU 내부에 존재하는 고속 메모리 영역
- 자주 사용되는 데이터와 주소를 임시로 저장하여 빠른 처리가 가능
- 자바 프로그램에서 접근할 수 없는 영역
PC 레지스터
- 현재 실행중인 JVM 명령의 주소를 저장하는 영역
- 각 스레드마다 자신의 PC 레지스터를 가짐
데이터베이스 인덱스 역할 및 장단점
역할
- 데이터베이스 특정 열에 대한 빠른 검색을 가능하게 해 줌
- 인덱스는 해당 열과 해당 값이 저장된 행의 위치 정보를 가지고 있음
- 테이블 전체를 스캔하는 대신 인덱스를 참조하여 원하는 데이터를 빠르게 찾을 수 있음
장점
- 검색 속도 향상
- 쿼리 최적화: 쿼리 최적화 과정에서 인덱스를 사용해서 쿼리 플랜을 세울 수 있음
- 정렬 기능: 정렬된 데이터를 빠르게 사용
단점
- insert/update/delete 성능 저하: 인덱스가 있는 경우 데이터의 변경이 이루어지면 인덱스도 함께 업데이트가 되어야 함
- 추가 저장 공간 필요: 별도의 저장 공간이 필요하므로 디스크 공간 사용량 증가
- 과도한 인덱스 사용 주의: 오히려 성능이 저하될 수 있음
Synchronized vs Volatile
Synchronized
- 한 번에 하나의 스레드만 임계 구역에 접근할 수 있도록 보장
- 동기화된 메서드나 블록에 대해 스레드가 락을 얻어야 접근 가능
- 데이터의 일관성과 상호 배제를 보장
Volatile
- 변수의 값이 캐시에 저장되지 않고 항상 메인 메모리에서 읽고 쓰도록 함
- 여러 스레드가 이 변수를 읽고 쓸 때 항상 최신 값을 보장
- 원자성을 보장하지 않음
HTTP vs HTTPS
보안
- HTTP: 데이터가 암호화되지 않은 일반 텍스트 전송으로 도청이나 변조가 가능
- HTTPS: SSL/TSL 암호화 프로토콜을 사용하여 데이터 암호화를 통해 보안 강화
포트
- HTTP: 80, HTTPS: 443
SSL/TSL 인증서
- HTTPS는 웹 서버에 SSL/TLS 인증서가 설치되어 있어야 함
성능
- HTTPS는 암호화 과정으로 인해 상대적으로 저하
용도
- HTTP: 일반적인 웹 페이지 전송
- HTTPS: 금융 거래, 로그인, 개인정보 전송 등 보안이 중요한 경우
RESTful vs SOAP
RESTful
- HTTP 프로토콜을 사용하여 CRUD 작업을 수행
- JSON이나 XML을 데이터 형식으로 사용
- 경량화된 구조로 성능이 좋고, 웹 서비스와의 통합이 용이
- 상태 비저장 상태를 따르며, 클라이언트-서버 구조를 유지
SOAP
- XML 기반의 메시지 프로토콜을 사용
- 데이터의 신뢰성과 보안을 위해 WS-Security 표준을 따름
- REST보다 무겁고, 설정과 사용이 복잡할 수 있음
- 상태 정보를 유지할 수 있으며, 트랜잭션과 같은 복잡한 작업을 지원
반응형
'IT' 카테고리의 다른 글
[백엔드 면접] GPT4o 기반 CS 기술 면접 (0) | 2024.07.04 |
---|---|
[Python] 파이썬 문법 정리[4탄] (코딩 테스트 대비) (0) | 2024.06.26 |
[Python] 파이썬 문법 정리[3탄] (자료형, 문자열과 리스트, Tuple, Dictionary, Set) (0) | 2024.05.22 |
[Python] 파이썬 문법 정리[2탄] (함수, 반환문, 지역변수, 전역변수, 람다) (0) | 2024.05.08 |
[Python] 파이썬 문법 정리[1탄](변수, 리스트, for, while, if-elif-else) (0) | 2024.05.08 |