반응형

분류 전체보기 271

생성자

생성자 인스턴스 초기화 메소드이다. 생성자는 객체가 생성될 떄 자동으로 호출(new 명령어를 만났을 때)되며 객체를 초기화한다. 클래스명과 같은 함수명이며, 리턴 타입이 없고 인스턴스 변수의 초기화 담당이다. 생성자는 기본적으로 생성되지만 여러개의 생성자를 만들시 매개변수갯수와 타입이 달라야한다. 만약 생성자를 직접 만들게 되면 기본적으로 생성되는 생성자를 같이 구현해줘야 사용이 가능하다. class Car { String color; String gearType; int door; Car(){} Car(String c,String g, int d){ color =c; gearType = g; door = d; } } class CarTest{ public static void main(String[] ..

Language/Java 2021.11.27

JpaReporitory vs EntityManager

JpaRepository란? Spring Framework에서 제공하는 JpaRepository를 제공해준다. JpaRepository는 인터페이스이다. JpaRepository는 자동으로 클래스를 만들고 Bean을 생성해준다. CRUD처리를 위한 공통 인터페이스 제공 @Repository public interface MemberRepository extends JpaRepository { } 안에는 엔티티 클래스 이름과 ID 필드 타입이 지정된다. 주의할 점은 "기본형의 경우, 래퍼 클래스를 지정한다는 점이다. 위에 코드에 보면 기본형 int가 래퍼 클래스를 지정하여 Integer로 해준걸 확인 할수가 있다. 또 하나 주의해야 할 것은 어노테이션이다. 클래스의 선언 앞에 @Repository라는 어노..

Spring 2021.11.23

엔티티 설계 주의점

연관관계 매핑 분석 1:N, N:1 양방향 관계에서는 외래키가 있는엔티티를 주인으로 정하는것이 좋다. 연관관계의 주인쪽의 값을 세팅해야 값이 변경된다. 1:N에서 일 부분에 있는 mappedBy는 단순히 읽기만 하는 역할(단순 조회용)이며, 연관관계의 주인쪽에 세팅을 해야 값이 변경된다. 외래키가 가까운 곳에 있는 것을 연관관계의 주인으로 정하는 것이 좋다. N:N 돤계에서는 @ManyToMany 사용은 권장되지 않고 1:N + N:1로 풀어내는 것을 권장한다. 엔티티 설계시 주의점 Entity에서는 가급적 Setter를 사용하지 말자. 변경포인트가 많아서 유지보수가 어렵다. 모든 연관관계는 지연로딩으로(lazy loading) 설정한다. 즉시로딩(Eager)은 예측이 어렵고, 어떤 SQL이 실행될지 추..

Spring 2021.11.21

[DataBase] 인덱스와 넌인덱스 특징 & 차이

클러스터 인덱스 클러스터 인덱스를 구성하려면 행 데이트를 해당 열로 정렬한 후에 루트 페이지를 만들게 된다. 즉 데이터페이지는 리프노드와 같은 것을 확인 할 수있다 인덱스를 생성할 때는 데이터 페이지 전체를 다시 정렬한다. 대용량의 데이터를 강제로 다시 클러스터 인덱스를 생성하는 건 조심 인덱스 자체가 데이터 페이지이다. 인덱스 자체에 데이터가 포함 비클러스형 인덱스 보다 검색 속도는 더 빠르다. 하지만 데이터의 입력/수정/삭제는 느리다. 테이블에 한 개만 생성할 수 있다. 넌 클러스터 인덱스 넌 클러스트형 인덱스는 데이터 페이지를 건들지 않고, 별도의 장소에 인덱스 페이지를 생성한다. 우선 인덱스 페이지의 리프 페이지에 인덱스로 구성한 열을 정렬하고 데이터 위치 포인트를 생성한다. 데이터의 위치 포인트..

DB 2021.11.21

JSP와 Thymeleaf

JSP(Java Scerver Pages) JSP는 Java Scerver Pages의 약자이며 HTML 코드에서 JAVA코드를 넣어 동적웹페이지를 생성하는 웹어플리케이션 도구이다. JSP가 실행되면 자바 서브릿(Servlet)으로 변환되며 웹 어플리케이션 서버에서 동작되면서 필요한 기능을 수행한다. 그렇게 생성된 데이터를 웹페이지와 함께 클라이언트로 응답한다. Thymeleaf(타임리프) Thymeleaf는 템플릿 엔진 동작원리로 되어있다. MVC패턴 중 View 역할을 담당하고 있다. 표현식 변수 : ${...} 선택 변수 : *{...} 메시지 : #{...} Link URL : @{...} Thymeleaf와 jsp의 차이점 Thymeleaf는 HTML, XML, JavaScript, Css 및 ..

Language/html 2021.11.20

Java String Pool

String String을 만드는데 2가지 방법이 있다. String a = "aa"; String b = "aa"; String c = new String("aa"); String d = new STring("aa"); 첫번째 방법으로는 가장 많이 알고있는 String 변수를 만들어서 사용하는것이다. 두번째 방법으로는 new 연산자를 사용하여 만드는 방법이다. String은 불변성(Immutable)이라는 성질을 가지고 있으며 같은 값의 문자열에 대해서는 단 하나의 문자열 객체만을 생성하도록 설계 되어있다. String은 Heap 메모리에 저장된다. Java String Pool new 연산자로 String 객체를 생성하지 않는 것이 좋다라는 말을 볼 수 있다. Heap 영역 내 "String Cons..

Language/Java 2021.11.20

Nginx 와 Apache

Apache Apache 나오기전 유닉스 기반으로 만들어진 웹 서버 NCSA HTTPD을 사용했다. 하지만 버그가 너무 많아서 개발자들이 사용하기에는 불편했고 이를 해결하기 위하여 몇몇 개발자들이 나서서 만든것이 Apache이다. Client에서 요청을 받으면 MPM (Multi Processing Module: 다중처리모듈)이라는 방식으로 처리를 하는데 대표적으로는 Prefork와 Worker 방식이 있다. MPM 방식 처리( Multi Processing Module : 다중처리모듈) Prefork MPM (다중 프로세스) 1. 하나의 자식 프로세스가 하나나의 스레드를 갖는 구조로, 자식 프로세스는 최대 1024개까지 가능하다 2. 스레드간 메모리 공유를 하지 않는다 ( 독립적이지만 메모리를 많이 사..

Web 2021.11.13

그래프(Graph) 과 DFS, BFS 구현

그래프란? 그래프는 노드와 그 노드를 연결하는 간선을 하나로 모아 놓은 것 그래프에는 방향성이 있을수도 있고 없을수도 있다. 트리는 그래프의 한 종류이다. 모든 그래프가 트리는 아니다. 트리는 사이클이 없는 하나의 연결 그래프 그래프 종류 무방향 그래프 방향 그래프 완전 그래프 그래프에서 사용하는 용어 정점(vertice) : 노드(node)라고도 하며 정점에는 데이터가 저장된다. (0, 1, 2, 3) 간선(edge): 링크(arcs)라고도 하며 노드간의 관계를 나타낸다.. 인접 정점(adjacent vertex) : 간선에 의해 연결된 정점으로 위에서 (정점0과 정점1은 인접 정점) 단순 경로(simple-path): 경로 중 반복되는 정점이 없는것, 같은 간선을 자나가지 않는 경로 차수(degree..

RDBMS와 NoSQL의 차이점

DataBase란? 구조화된 정보 또는 데이터의 체계적인 집합을 의미 데이터를 저장하고 관리하는 곳 DBMS 사용자와 DB 사이에서 사용자의 요구에 따라 정보를 생성해주고 DB를 관리해주는 SW SQL Structured Query Language의 약자로써, 관계형 데이터베이스 관리 시스템에 저장된 데이터를 관리하기 위해 설계된 프로그래밍 언어 스키마란? 데이터베이스를 구성하는 개체(Entity), 속성(Attribute), 관계(Relationship) 및 제약 조건 등에 관해 전반적으로 정의한 메타데이터의 집합 RDBMS DBMS는 사용자와 데이터베이스 사이에서 사용자의 요구에 따라 정보를 생성해주고 데이터베이스를 관리해주는 소프트웨어이다. 또한 기존의 RDBMS에서의 저장 방식은 SQL에 의해 저..

DB 2021.11.13

인코딩 디코딩

인코딩(Encoding) 컴퓨터는 0과 1로 기계만 읽을수 있게 되어있다. 사람이 읽을수 있도록 숫자을 문자로 변환하거나 문자를 숫자로 변환 하여 컴퓨터가 읽을수 있도록 해주어야한다. 사람이 인지하지 못하고 컴퓨터가 이해할 수 있도록 바꿔주는 것을 의미한다. 각각 컴퓨터가 이해할 수 있는 언어로 바꿔주기 때문에 어떤 것을 중심으로 인코딩을 해야하는 지 명확하게 이해한 후 인코딩을 진행해야 한다. 디코딩(Decoding) 디코딩은 인코딩의 반대로서 사람이 이해 할 수 있도록 바꿔주는 것을 의미한다 바이트형식을 문자로 변환이다 총정리 인코딩 / 디코딩은 정보의 형태나 형식을 변환하는 처리에 대해 표준화하고 보안, 처리 속도 향상, 저장 공간 절약 등으로 목적으로 사용한다 한글을 2바이트 코드로 표현. 최상위..

Web 2021.11.09
반응형