CS (24) 썸네일형 리스트형 JDBC 알아보기 JDBC 알아보기 JDBC란? JDBC를 알아보기 전 JDBC가 왜 생겼는지에 대해서 먼저 이야기를 해보자면 과거 애플리케이션 서버와 DB를 연결하기 위해서 가각의 DB마다 사용법이 달랐다. 이런 문제로 개발자들이 DB마다 공부를 커넥션 연결 및 SQL 전달 응답을 학습해야 했지만 이런 문제를 해결하기 위해 JDBC(Java Database Connectivity)가 만들어 졌다. JDBC는 자바에서 DB에 접속할 수 이도록 하는 자바 API이며, JDBC는 DB에서 자료를 쿼리하거나 업데이트하는 방법을 제공한다. 대표적인 인터페이스 java.sql.Connection - 연결 java.sql.Statement - SQL을 담은 내용 java.sql.ResultSet - SQL 요청 응답 Java는 표준.. Spring MVC과 관심사 분리 Spring MVC와 관심사 분리 Spring 처리과정 순서도 요청 -> ThreadPool -> Connector(Http Processor) -> Engine -> Host -> Context -> Servlet -> Controller -> Method Http Processor에서 Request와 Response를 생성 후 다음 단계로 계속 전달해준다. Dispatcher Servlet과 MVC Model, View, Controller 3가지로 구성된다. 1 request가 오면 Dispatcher Servlet에서 입력 및 변환을 진행 후 모델을 생성한다. (결과를 저장) 2. Dispatcher Servlet에서 Handler Mapping으로 전달하여 XML 파일에서 핸들러 매핑 항목을 가.. Java Class Loader 알아보기 Class Loader 알아보기 Class Loader란? Java Virtual Machine (JVM)에서 클래스 파일을 로드하는 역할을 담당하는 구성 요소이다. Class Loader 로딩 Class Loader는 클래스 파일을 찾아 JVM으로 로드하는 역할을 합니다. 클래스 로딩은 필요한 클래스 파일을 찾고 메모리로 읽어오는 과정입니다. 이 과정에서 클래스 파일의 유효성을 검사하고, 필요한 경우 해당 클래스 파일을 컴파일합니다. 부트스트랩 클래스 로더 - JAVA_HOME\lid에 있는 코어 자바 API 제동 (최상위 우선순위를 가짐) 확장(Extension) 클래스 로더: 부트스트랩 로더의 하위 클래스로, JVM의 확장 클래스들을 로드한다. JVM 실행 시점에 로드되며, JVM 내부의 ext 디.. h2 DB에서 mysql로 변경하기 h2 DB에서 mysql로 변경하기 h2 DB를 기본적으로 사용하다가 RDS를 사용하기 위해서 mysql로 변경해야 하는 일이 생겨 변경 도중 오류가 발생하고 이를 해결하는 내용이다. 기존 yml 코드 spring: h2: console: enabled: true path: /h2-console datasource: driver-class-name: org.h2.Driver url: jdbc:h2:mem:testdb username: sa password: 아주 문제없이 잘 작동되는 코드 변경 후 yml 코드 spring: jpa: generate-ddl: true hibernate: ddl-auto: create datasource: driver-class-name: com.mysql.cj.jdbc.D.. JVM Multi Thread JVM Multi Thread Multi Thread Was(Web Application Server)에서는 많은 수의 동시 사용자를 처리하기 위해 수십 ~ 수백 개의 Thread를 사용한다. 두 개 이상의 Thread가 같은 자원을 이용할 때 필연적으로 Thread 간에 경합이 발생하고 경우에 따라서는 Dead Lock이 발생할 수도 있다. Thread 경합 때문에 다양한 문제가 발생할 수 있으며, 이런 문제를 분석하기 위해서는 Thread Dump를 이용하기도 한다. Thread 동기화 여러 Thread가 공유 자원을 사용할 때 정합성을 보장하려면 동기화 장치로 한 번에 하나의 Thread만 공유 자원에 접근할 수 있게 해야 한다. Java에서는 Monitor를 이용해 Thread를 동기화한다. Ja.. 인덱스(index) 알아보기 인덱스(index) 인덱스(index)란? 인덱스는 추가적인 쓰기 작업과 저장 공간을 활용하여 데이터베이스 테이블의 검색 속도를 향상하기 위한 자료구조이다. 컬럼에 인덱스를 생성하면, 해당 컬럼의 데이터들을 정렬하여 별도의 메모리 공간에 데이터의 물리적 주소와 함께 저장한다. B-Tree 모든 리프 노드들이 같은 레벨을 가질 수 있도록 자동으로 균형을 맞추는 트리이다. 최상위 노드를 루트 노드라고 한다. 중간에 위치한 노드들을 브랜치 노드라고 한다. 맨 말단에 위치한 노드를 리프 노드라고 한다. 직접 B-Tree 만들어보는 사이트 https://www.cs.usfca.edu/~galles/visualization/BTree.html B+Tree B+tree는 B-tree의 확장 개념이다. 브랜치 노드에 .. Memory(RAM) 알아보기 Memory(RAM) 알아보기 Memory란? Memory는 전자회로에서 데이터나 상태, 명령어 등을 기록하는 장치, RAM(Random Access Memory) 메모리 계층 레지스터 : CPU 안에 있는 작은 메모리로 속도가 가장 빠르지만 용량은 가장 적다. 캐시 : L1, L2 캐시를 말하며 속도가 빠르고 기억 용량이 작다. 주기억장치 : RAM을 말하고 속도가 보통에 기억 용량도 보통이다. 보조기억장치 : HDD, SDD를 말하며 속도가 낮고, 기억 용량이 많다. 계층이 올라갈수록 가격이 비싸지며 용량은 작아지지만 속도는 빨라지는 특징을 가지고 있다. Cache Memory란? 캐시는 데이터를 미리 복사해 놓는 임시 저장소이자 속도가 빠른 장치와 느린 장치에서 속도 차이에 따른 병목 현상을 줄이기.. 팩토리 패턴 정리 팩토리 패턴 정리 팩토리 패턴이란? 팩토리 패턴은 객체를 사용하는 코드에서 객체 생성 부분을 떼어내 추상화한 패턴이자 상속 관계에 있는 두 클래스에서 상위 클래스가 중요한 뼈대를 결정하고, 하위 클래스에게 객체 생성에 관한 구채적인 내용을 결정하는 패턴이다. 즉 객체를 생성하는 인터페이스를 정의 함으로써, 어떤 인스턴스를 생성할지는 하위 클래스에서 결정하는 패턴이다. 상위 클래스와 하위 클래스가 분리되기 때문에 느슨한 결합을 가지며 상위 클래스에서는 인스턴스 생성 방식에 대해 전혀 알 필요가 없기 때문에 더 많은 유연성을 갖게 된다.(상위는 추상 클래스로 시작 하위는 상위 클래스를 확장하는 구상 클래스) 객체 생성 로직이 따로 분리되어 있기 때문에 코드를 수정할 때 다른 부분에 영향을 주지 않아 유지 보.. 이전 1 2 3 다음 목록 더보기