ArrayList vs LinkedList
·
Programming/Java
모두 Java에서 제공하는 List 인터페이스를 구현한 Collection 구현체이다. 하지만 인터페이스만 같을 뿐 내부적으로 동작하는 방식은 다르다. ArrayList- 내부적으로 데이터를 관리.- 데이터 추가/ 삭제를 위해 임시 배열을 생성해 데이터를 복사- 인덱스 기반 자료구조이기 때문에 검색에 유리- 대량의 자료를 추가/삭제 하는 경우 그만큼 데이터의 복사-> 성능 저하 LinkedList- 데이터를 저장하는 각 노드는 이전 노드와 다음 노드 상태만 알고 있다. - 추가/ 삭제 시 불필요한 데이터 복사가 없어 데이터 추가/ 삭제에 유리- 검색 시, 인덱스가 없기 때문에 처음부터 노드 순회-> 성능 저하데이터 검색, 삽입, 삭제 시 성능 비교검색- ArrayList: O(1). 인덱스 기반 자료구조..
Collections.sort()
·
Programming/Java
오름차순/ 내림차순/ 대소문자 구분 없이 정렬import java.util.ArrayList;import java.util.Arrays;import java.util.Collections;public class SortArrayList {public static void main(String[] args) {// ArrayList 준비ArrayList list = new ArrayList(Arrays.asList("C", "A", "B", "a"));System.out.println("원본 : " + list); // [C, A, B, a]// 오름차순으로 정렬Collections.sort(list);System.out.println("오름차순 : " + list); // [A, B, C, a]// 내림..
Wildcard <?>
·
Programming/Java
와일드카드란?The wildcard ? in Java is a special kind of type argument[1] that controls the type safety of the use of generic (parameterized) types. It can be used in variable declarations and instantiations as well as in method definitions, but not in the definition of a generic type.[  public static void peekBox(Box box){ System.out.println(box); }// 제네릭 메소드 정의public static void peekBox(Box box){ Sy..
Generic Method (Basic)
·
Programming/Java
제네릭 메소드class BoxFactory{ public static Box makeBox(T o){ Box box= new Box(); box.set(o); return box; } }클래스 전부가 아닌 메소드 하나에 대해 제네릭으로 정의 제네릭 메소드와 제네릭 클래스의 차이- 제네릭 메소드의 T 결정: 호출 시점- 제네릭 클래스의 T 결정: 인스턴스 생성 시점 오토 박싱: 기본 자료형이 인자로 들어와도 오토 박싱을 통해 객체 타입으로 변환
Generic Class (Basic)
·
Programming/Java
제네릭이란?데이터 타입을 컴파일 시 결정 제네릭 클래스- 인스턴스 생성 시 자료형 결정- compiler가 알 수 있게, T로 구분! 제네릭 이전의 코드프로그래머의 실수 발견1. 컴파일 오류2. 예외 발생 제네릭 이전의 코드는 프로그래머의 실수를 컴파일 오류, 예외로 발견하기 어렵다.  제네릭 클래스class Box { private T ob; public void set(T o){ ob= o; } public T get(){ return ob; }} 제네릭의 구성1. Type Parameter(타입 매개변수): Box에서 T2. Type Argument(타입 인자): Box에서 Apple3. Parameterized Type(매개변수화 타입)Box  프로그래머의 실수가..
Collection
·
Programming/Java
Collection- 사전적 의미: 요소를 수집해서 저장하는 것- Java에서는 Collection이란 데이터의 집합, 그룹을 의미 Collection Framework데이터를 저장하는 자료구조와 데이터를 처리하는 알고리즘을 구조화하여 클래스로 구현해놓은 것Keyword- 자료구조- 알고리즘 - 구조화- 클래스 구현주요 인터페이스 간 상속 관계주의Map은 Collection와 독립적이다
원시(Primitive) 타입과 참조(Reference) 타입
·
Programming/Java
primitive type- 실제 데이터 값을 저장하는 타입- 스택에 값 존재 reference type- 인스턴스 번지 값(주소 값)을 저장하는 타입- 스택에 번지 값 존재- 힙에 실제 값(인스턴스) 존재 reference 타입을 사용하는 이유는?1. null을 담을 수 있는가?- primitive type: X- reference type: O 2. 제네릭 타입을 사용할 수 있는가?- primitive type: X- reference type: O primitve 타입을 사용하는 이유는? 1. 접근 속도primitive type: 스택에 메모리 존재reference type: 참조 값은 스택, 실제 값은 힙에 존재. 실제 값 필요할 때마다 언박싱 과정 필요. 2. 차지하는 메모리 양primitive..
Entity, DTO, VO 차이
·
Programming/Spring
Entity 실제 DB table과 1:1 mapping 되는 Class - Domain Logic만 가지며 Presentation Logic을 가지고 있어서는 안된다. - Spring 3 Tier인 Persistence, Buseniss, Presentation Tier 중 Persistence Tier에서 사용 - Setter 지양. 객체의 일관성. 변경되게 되면 다른 Class에 영향(실제 테이블과 매핑되기 때문) DTO(Data Transfer Object) 계층 간 데이터 교환을 위한 객체 - getter, setter 메소드만 갖는다. 다른 로직은 없다. - DB의 데이터가 Presentation Logic Tier로 넘어올때는 DTO로 변환되어 오고가는 것 - View와 통신하며 자주 변경 ..
REST API
·
Programming/Spring
REST API란? REST(Representational State Transfer) API 약자로 자원을 이름으로 구분하여 해당 자원의 상태를 주고받는 모든 것을 의미한다. 즉 REST란? 1. HTTP URI를 통해 자원(Resource)을 명시하고, 2. HTTP Method(POST, GET, PUT, DELETE)를 통해 3. 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미한다. REST 구성 요소 1. 자원(Resource) : HTTP URI 2. 자원에 대한 행위(Verb): HTTP Method 3. 자원에 대한 행위의 내용(Representations): HTTP Message Pay Load RESTful이란? RESTful이란 REST의 원리를 따르는 시스템을 의..
Spring Security: Authentication
·
Programming/Spring
Authentication - 세션 영역 안에는 시큐리티 세션 영역이 존재핸다. - 시큐리티 세션에 들어 갈 수 있는 객체 타입은 Authentication이다. - 시큐리티 세션에 Authentication 객체가 들어갔다? = 로그인이 됐다! - Authentication 객체 안에는 2가지 타입만 들어갈 수 있다(UserDetails, OAuth2User) - Authentication가 필요할 때마다 컨트롤에서 DI 할 수 있다. AuthenticationPrincipal이 될 수 있는 2가지 타입 1. UserDetails: 일반 로그인 2. OAuth2User: OAuth 로그인 단점: 컨트롤에서 AuthenticationPrincipal 꺼낼 때 타입을 구분해줘야 한다. 해결: UserDet..